{[ promptMessage ]}

Bookmark it

{[ promptMessage ]}

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

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

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

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

View Full Document
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!
This is the end of the preview. Sign up to access the rest of the document.

{[ snackBarMessage ]}