Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
aa:intro:computability_theory [2016/07/22 12:27]
malex
aa:intro:computability_theory [2016/08/01 16:36] (current)
malex [1.4.6. Proposition]
Line 326: Line 326:
  
 ==== 1.4.1 Remark ==== ==== 1.4.1 Remark ====
-//We note that $math[R] and $math[RE] are not the only sets of functions which are used in Computability Theory. It has been shown that there are //"​degrees"//​ of unsolvability,​ of //"​higher level"//​ than $math[R] and $math[RE]. These degrees are intuitively obtained as follows: We assume we live in a world where $math[f_h] is decidable (recursive). Now, as before, we ask which problems are recursive and which are recursively-enumerable. It turns out that, also in this ideal case, there still exist recursive and recursively-enumerable problems, as well as some which are neither. This could be imagined as //"​undecidability level 1"//. Now, we take some problem which is in $math[RE] on level 1, and repeat the same assumption: it is decidable. Again, under this assumption, we find problems in $math[R], $math[RE] and outside the two, which form up //"​undecidability level 2"//. This process can be repeated// ad infi nitum.+//We note that $math[R] and $math[RE] are not the only sets of functions which are used in Computability Theory. It has been shown that there are //"​degrees"//​ of unsolvability,​ of //"​higher level"//​ than $math[R] and $math[RE]. These degrees are intuitively obtained as follows: We assume we live  
 +in a world where $math[f_h] is decidable (recursive). Now, as before, we ask which problems are recursive and which are recursively-enumerable. It turns out that, also in this ideal case, there still exist recursive and recursively-enumerable problems, as well as some which are neither. This could be imagined as //"​undecidability level 1"//. Now, we take some problem which is in $math[RE] on level 1, and repeat the same assumption: it is decidable. Again, under this assumption, we find problems in $math[R], $math[RE] and outside the two, which form up //"​undecidability level 2"//. This process can be repeated// ad infi nitum.
  
 Returning to our simpler classi cation,​ we must observe an interesting feature of recursively-enumerable functions, which is also the reason they are called this way. Returning to our simpler classi cation,​ we must observe an interesting feature of recursively-enumerable functions, which is also the reason they are called this way.
Line 370: Line 371:
 $math[\mathbf{while} \mbox{ } w \notin A_f \mbox{ } \mathbf{do}] $math[\mathbf{while} \mbox{ } w \notin A_f \mbox{ } \mathbf{do}]
  
-$math[\quad ​w=GEN();]+$math[\quad ​v=GEN();]
  
-$math[\quad A_f = A_f \cup \{ \};]+$math[\quad A_f = A_f \cup \{ \};]
  
 $math[\mathbf{end}] $math[\mathbf{end}]
Line 393: Line 394:
 The technique we use to show $math[f_{all} \notin R] is called a //​reduction//​ (from $math[f_h]). It proceeds as follows. We assume $math[f_{all} \in R]. Starting from the $math[TM \mbox{ } M_{all}] which decides $math[f_{all}] we built a $math[TM] which decides $math[f_h]. Thus, if $math[f_{all}] is decidable then $math[f_h] is decidable, which leads to contradiction. The technique we use to show $math[f_{all} \notin R] is called a //​reduction//​ (from $math[f_h]). It proceeds as follows. We assume $math[f_{all} \in R]. Starting from the $math[TM \mbox{ } M_{all}] which decides $math[f_{all}] we built a $math[TM] which decides $math[f_h]. Thus, if $math[f_{all}] is decidable then $math[f_h] is decidable, which leads to contradiction.
  
-First, for each fixed $math[TM \mbox{ } M] and fi xed input $math[w \in \Sigma^*],​ we build the $math[TM \mbox{ } \Pi_{M,​w}(\omega) = ]//"​Replace $math[\omega] by $math[w] and then simulate $math[M(w)]"//​. It is easy to see that $math[(\forall \omega \in \Sigma^* : \Pi_{M,​w}(\omega) \mbox{ halts})] iff $math[M(w)] halts. Now, we build the $math[TM \mbox{ } M_h] which decides $math[f_h]. The input of $math[M_h] is $math[enc(M)\_w]. We construct $math[\Pi_{M,​w}] and run $math[M_{all}(enc(\Pi_{M,​w}))]. By assumption $math[M_{all}] must always halt. If the output is $math[1], then $math[\Pi_{M,​w}(\omega)] halts for all inputs, hence $math[M(w)] halts. We output $math[1]. If the output is $math[0], then $math[\Pi_{M,​w}(\omega)] does not halt for all inputs, hence $math[M(w)] does not halt. We output $math[0].+First, for each fixed $math[TM \mbox{ } M] and fi xed input $math[w \in \Sigma^*],​ we build the $math[TM \mbox{ } \Pi_{M,​w}(\omega) = ]//"​Replace $math[\omega] by $math[w] and then simulate $math[M(w)]"//​. It is easy to see that $math[(\forall \omega \in \Sigma^* : \Pi_{M,​w}(\omega) \mbox{ halts})] iff $math[M(w) 
 +] halts. Now, we build the $math[TM \mbox{ } M_h] which decides $math[f_h]. The input of $math[M_h] is $math[enc(M)\_w]. We construct $math[\Pi_{M,​w}] and run $math[M_{all}(enc(\Pi_{M,​w}))]. By assumption $math[M_{all}] must always halt. If the output is $math[1], then $math[\Pi_{M,​w}(\omega)] halts for all inputs, hence $math[M(w)] halts. We output $math[1]. If the output is $math[0], then $math[\Pi_{M,​w}(\omega)] does not halt for all inputs, hence $math[M(w)] does not halt. We output $math[0].
  
 We have built a reduction from $math[f_{all}] to $math[f_h]: Using the $math[TM] which decides $math[f_{all}] we have constructed a machine which decides $math[f_h]. Since $math[f_h] is not recursive, we obtain a contradiction. We have built a reduction from $math[f_{all}] to $math[f_h]: Using the $math[TM] which decides $math[f_{all}] we have constructed a machine which decides $math[f_h]. Since $math[f_h] is not recursive, we obtain a contradiction.
Line 473: Line 475:
 //Let $math[\mathcal{C} \subseteq RE]. Given a Turing Machine $math[M], we ask:// "The problem accepted by $math[M] is in $math[\mathcal{C}]?"​. //Answering this question is not in $math[R].// //Let $math[\mathcal{C} \subseteq RE]. Given a Turing Machine $math[M], we ask:// "The problem accepted by $math[M] is in $math[\mathcal{C}]?"​. //Answering this question is not in $math[R].//
  
-//Proof:// We consider that the trivial problem $math[f(n) = 0] is not in $math[\mathcal{C}]. Since $math[\mathcal{C}] is non-empty, suppose $math[f^* \in \mathcal{C}],​ and since $math[f^*] is recursively-enumerable,​ let $math[M] be the Turing Machine which accepts $math[f^*].+//Proof:// We consider that the trivial problem $math[f(n) = 0] is not in $math[\mathcal{C}]. Since $math[\mathcal{C}] is non-empty, suppose $math[f^* \in \mathcal{C}],​ and since $math[f^*] is recursively-enumerable,​ let $math[M^*] be the Turing Machine which accepts $math[f^*].
  
 We apply a reduction from a variant of $math[f_{111}],​ namely $math[f_x]. $math[f_x] asks if a Turing Machine halts for input $math[x]. We assume we can decide the membership $math[f \in \mathcal{C}] by some Turing Machine. Based on the latter, we construct a Turing Machine which decides $math[f_x] (i.e. solves the halting problem for a particular input). Let $math[M_x] be the Turing Machine which //accepts// $math[fx]. We apply a reduction from a variant of $math[f_{111}],​ namely $math[f_x]. $math[f_x] asks if a Turing Machine halts for input $math[x]. We assume we can decide the membership $math[f \in \mathcal{C}] by some Turing Machine. Based on the latter, we construct a Turing Machine which decides $math[f_x] (i.e. solves the halting problem for a particular input). Let $math[M_x] be the Turing Machine which //accepts// $math[fx].