Some notes
on Decidability and SemiDecidability
Informal Definition 1.
An
idealized computer
is like a real modern computer except that it has
an unlimited amount of memory.
Informal Definition 2.
Let Σ be a finite alphabet. An
algorithm on
Σ is a computer program,
M
, (written in your favorite language) which runs on an idealized computer and does the following:
(a)
M
takes as input a string
w
on Σ.
(b) Given any input string
w
,
M
does one of the following three things:
(i)
M
eventually
halts
, declares that “
w
is accepted,” and outputs some string
u
on Σ; or
(ii)
M
eventually
halts
and declares that “
w
is rejected”; or
(ii)
M
never halts
, i.e.
M
enters an “infinite loop.”
Note that in (i) and (ii) above there is no restriction on the amount of time it takes before
M
halts.
Remark 0.1.
At first we will be interested only in whether
M
accepts the string
w
. For these
considerations, the output string
u
is irrelevant and will be ignored. We will be interested in
u
for
other reasons later. Notice that there are two ways for
M
to not accept
w
. Given the input
w
,
M
might halt and explicitly reject
w
; or
M
might fail to accept
w
because it never halts.
The two informal definitions above are designed to give you an intuitive feel for what is going on.
Later we will replace the informal notion “
M
is an algorithm on Σ” with the completely formal
notion “
M
is a
Turing Machine
on Σ.” Turing Machines are just one way of making the notion of
an algorithm precise. In the definitions and theorems below, I will use the word “algorithm.” If
this word is replaced by the words “Turing Machine,” then the definitions and theorems will be
perfectly mathematically rigorous.
Let
M
be an algorithm on Σ. There is an obvious way to associate with
M
a certain
language
,
L
(
M
).
L
(
M
) =
{
w
∈
Σ
*
:
M
accepts
w
}
.
Notice that the relationship between
M
and
L
(
M
) here is a bit weaker than it was in the situation
where
M
was a dfa. Since our
M
here might sometimes not halt, instead of calling
M
an
acceptor
we will call it a
semiacceptor
. The following definition makes this precise.
Definition 0.2.
Let
L
be a language on Σ and let
M
be an algorithm on Σ. We say that
M
is a
semiacceptor
for
L
iff given any string
w
∈
Σ
*
as input
M
does the following:
•
If
w
∈
L
then
M
eventually halts and accepts
w
.
•
If
w /
∈
L
then either
–
M
eventually halts and rejects
w
, or
–
M
never halts.
NOTICE:
M
is a semiacceptor for
L
iff
L
=
L
(
M
).
1
This preview has intentionally blurred sections. Sign up to view the full version.
View Full Document
Here is the interesting thing about semiacceptors.
Suppose you input the string
w
to
M
and
you have been waiting for a very long time for
M
to halt and so far it has not. What can you
conclude? The answer is: nothing. It may be that you have waited a very long time because
M
is
never going to halt. In this case
w /
∈
L
(
M
). Or it may be that in the next minute
M
is going to
halt and accept
w
. In this case
w
∈
L
(
M
). There is no way for you to tell whether your waiting
will ever pay off!
This is the end of the preview.
Sign up
to
access the rest of the document.
 Spring '07
 Staff
 Formal language, Turing Machines, σ.

Click to edit the document details