{[ promptMessage ]}

Bookmark it

{[ promptMessage ]}

decid-1 - Some notes on Decidability and Semi-Decidability...

Info iconThis preview shows pages 1–3. Sign up to view the full content.

View Full Document Right Arrow Icon
Some notes on Decidability and Semi-Decidability 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 semi-acceptor . 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 semi-acceptor 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 semi-acceptor for L iff L = L ( M ). 1
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
Here is the interesting thing about semi-acceptors. 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!
Background image of page 2
Image of page 3
This is the end of the preview. Sign up to access the rest of the document.

{[ snackBarMessage ]}