Entscheidbarkeit

💡
Turingmaschine hält immer, wenn sie ein Wort akzeptiert (wenn mit dem Wort ein Endzustand erreicht wird)

wL(M)\small w \in \mathcal L(M) \RarrAnhalten

Entscheidbarkeit

Entscheidbarkeit = Frage ob Problem / Sprache rekursiv ist

Rekursive Sprachen

Wenn \exists deterministische Turingmaschine, die diese Sprache akzeptiert -

und bei anderen Sprachen auch immer hält.

entscheidbare bzw. rekursiv entscheidbare Probleme / Sprachen

Die Turingmaschineentscheidetdie Sprache.

Wenn\exists deterministische Turingmaschine, die uns bei Problemen "ja" oder "nein" antworten kann. Sie hält immer, wir schauen nur ob ein Endzustand erreicht wurde oder nicht.

Rekursiv-aufzählbare Sprache

wL(M)(M,w)Lu\small w \in L(M) \Longleftrightarrow(M, w) \in L_{u}

Wenn \exists deterministische Turingmaschine, die diese Sprache akzeptiert -

und bei anderen Sprachen möglicherweise nicht hält.

recursively-enumerable, semi-decidable, turing-recognizable

Nicht-rekursiv-aufzählbare Sprachen

Wir wollen beweisen, dass es Sprachen gibt die nicht rekursiv aufzählbar sind.

Codierung von Turingmaschinen (Voraussetzung für Beweis)

Man kann eine Turingmaschine zu einem String umwandeln:

M=({q1,q2,,qr},{0,1},{0,1,B,X4,,Xs},δ,q1,B,{q2}) M=\left(\left\{q_{1}, q_{2}, \ldots, q_{r}\right\},\{0,1\},\left\{0,1, B, X_{4}, \ldots, X_{s}\right\}, \delta, q_{1}, B,\left\{q_{2}\right\}\right) 

Einzelne Abbildungen der Übergangsfunktion:

δ(qi,Xj)=(qk,Xl,Dm)0i10j10k10l10m \delta\left(q_{i}, X_{j}\right)=\left(q_{k}, X_{l}, D_{m}\right) \longmapsto 0^{i} 10^{j} 10^{k} 10^{l} 10^{m} (Es werden nur 0er potenziert)

Man setzt bestimmte Anzahl an Nullern um den Index für i,j,k,l,m\small i, j,k,l,m zu definieren und trennt die Nuller mit einsen.

Dann trennt man alle diese Strings mit "11" und listet dadurch alle möglichen Abbildungen auf.

Beweis

  1. Eine Sprache LP(Σ)L \in \mathcal{P}\left(\Sigma^{*}\right) über Σ={0,1}\Sigma=\{0,1\} ist genau dann rekursiv-aufzählbar wenn es eine deterministische Turingmaschine gibt die immer nur diese akzeptiert und keine andere.

    P(Σ)\mathcal{P}\left(\Sigma^{*}\right) ist überabzählbar

  1. MΣM \in \Sigma^{*} : Jede Turingmaschine MM kann selbst mit Σ\Sigma codiert werden.

    Σ\Sigma^{*} ist abzählbar


Daraus folgt: Es gibt also überabzählbar viele Sprachen, von denen jedoch nur abzählbar viele von einer Turingmaschine akzeptiert werden.

Sätze

Church-Turing-These

Es gibt keine anderen Modelle die mehr formale Sprachen als Turingmaschinen akzeptieren können. (Bisher nicht widerlegt)

Quasi: Turingmaschinen können alles berechnen was berechenbar ist.


WennLLrekursiv ist, ist auchLˉ\bar Lrekursiv

Man antwortet mit der Negation von der ursprünglichen Antwort.

Wenn sowohlLLals auchLˉ\bar Lrekursiv-aufzählbar sind, sind sie beide dadurch rekursiv

Die "ja" antwort des Komplements, ist die "nein" Antwort der ursprünglichen Sprache.

Es kann nur eines gelten:

  1. LL und Lˉ\bar L sind beide rekursiv
  1. LL und Lˉ\bar L sind beide nicht-rekursiv-aufzählbar (außerhalb der Menge der rekusiv-aufzählbaren Sprachen)
  1. Eines der beiden ist rekursiv-aufzählbar (aber nicht rekursiv) und das andere nicht-rekursiv-aufzählbar

Halteproblem

💡
Wir nehmen zur Vereinfachung an, dass MM nur hält wenn es einen Endzustand erreicht - also wenn wL(M)\small w \in L(M) .

(Es könnte sonst auch halten ohne in einen Endzustand zu kommen)

Das Halteproblem

Lu={(M,w)M akzeptiert w}L_{u}=\{(M, w) \mid M \text { akzeptiert } w\}

Das Halteproblem ist eine Sprache, bestehend aus (M,w)\small (M, w) Tupeln bei denen gilt, dass MM das Wort ww akzeptiert, also wL(M)\small w \in L(M) .

Das Halteproblem ist rekursiv-aufzählbar aber nicht rekursiv .

LuL_uist rekursiv-aufzählbar

Es gibt universelle Turingmaschinen die mit Code und Input ein Verhalten simulieren können.

Universelle Turingmaschine UU nimmt Maschinencode MM und ww und hält genau dann, wenn es MM tun würde.

U akzeptiert (M,w)M akzeptiert w(M,w)Lu \small U \text { akzeptiert }(M, w) \Longleftrightarrow M \text { akzeptiert } w \Longleftrightarrow(M, w) \in L_{u} 

(M,w)L(U)wL(M)(M,w)Lu \small (M, w) \in L(U)\Longleftrightarrow w \in L(M) \Longleftrightarrow(M, w) \in L_{u} 

LuL_uist nicht rekursiv

Indirekter Beweis

Angenommen \exists Maschine HH die immer hält und dadurch ist LuL_u rekursiv:

H(M,w)={ ja M ha¨lt bei w nein M ha¨lt nicht bei w \small H(M, w)= \begin{cases}\text { ja } & M \text { hält bei } w \\ \text { nein } & M \text { hält nicht bei } w\end{cases} 

Ja und Nein beziehen sich darauf, ob(M,w)Lu(M, w)\in L_uund obHHeinen Endzustand erreicht, aberHHhält immer.

Dann \exists Maschine DD die das Gegenteil von dem macht was MM machen würde:

D(M,w)={ halten wenn H nein ausgibt nicht halten wenn H ja ausgibt  \small D(M,w) = \begin{cases}\text { halten} & \text { wenn } H \text { nein ausgibt} \\ \text { nicht halten} & \text { wenn } H \text { ja ausgibt } \end{cases} 

Man könnte jedes beliebige Wort ww nutzen - aber wir wollen, dass DD nur eine Eingabe hat - den Code der Maschine: D(Mcode)=D(M,Mcode)\small D(M_{\text{code}}) = D(M, M_{\text{code}})

D(Mcode)={ haltenM ha¨lt nicht bei Mcode laut H nicht halten M ha¨lt bei Mcode laut H \small D(M_{\text{code}}) = \begin{cases}\text { halten} & M \text { hält nicht bei } M_{\text{code}} \text { laut } H\\ \text { nicht halten } & M \text { hält bei } M_{\text{code}} \text { laut } H\end{cases} 

Wir setzen DcodeD_{\text{code}} als Argument für DD ein:

D(Dcode)={ haltenD ha¨lt nicht bei Dcode laut H nicht halten D ha¨lt bei Dcode laut H \small D(D_{\text{code}}) = \begin{cases}\text { halten} & D \text { hält nicht bei } D_{\text{code}} \text { laut } H\\ \text { nicht halten } & D \text { hält bei } D_{\text{code}} \text { laut } H\end{cases} 


Paradoxon: Dadurch verhält sich DD immer gegensätzlich zu dem wie es der Haltealgorithmus HH vorausgesagt hat.

Lu\overline{L_{u}}ist nicht rekursiv-aufzählbar

Lu={(M,w)M akzeptiert w nicht} \overline{L_{u}}=\{(M, w) \mid M \text { akzeptiert } w \text { nicht}\} 

Angenommen Lu\overline{L_{u}} wäre auch rekursiv aufzählbar, dann wären sie dadurch gemeinsam rekursiv.

Berechenbarkeit

💡
Vorsicht: berechenbar nicht mit entscheidbar (rekursiv) verwechseln

Partiell berechenbar

Wenn für f:ΣΣf: \Sigma^{*} \longmapsto \Sigma^{*} eine Turingmaschine MfM_f existiert, sodass xΣ\forall x \in \Sigma^*

  1. Wenn f(x)f(x) definiert ist, dann hält MfM_f

    wenn es mit xx startet und schreibt f(x)f(x) auf das Band.

  1. Wenn f(x)f(x) nicht definiert ist, dann hält MfM_f nicht

    wenn es mit xx startet.

Total berechenbar

Wenn für alle xΣx\in \Sigma^*f(x)f(x) definiert ist und ff partiell berechenbar ist.

Reduktion von Sprachen

ReduktionABA \leq B

AΣA \sube \Sigma^* lässt sich auf BΓB \sube \Gamma^* reduzieren wenn es eine total berechenbare Funktion

f:ΣΓf: \Sigma^{*} \longmapsto \Gamma^{*} gibt, sodass wΣ:f(w)BwA\forall w \in \Sigma^* : ~ f(w)\in B \Rarr w\in A

Reduktion nutzen für Beweise

Angenommen ABA \leq B :

  • AA nicht rekursiv \RarrBB nicht rekursiv
  • AA nicht rekursiv-aufzählbar \RarrBB nicht-rekursiv-aufzählbar
  • BB rekursiv \RarrAA rekursiv
  • BB rekursiv-aufzählbar \RarrAA rekursiv-aufzählbar

Beispiel

Le={McodeL(Mcode)={}} \small L_{e}=\{M_{\text{code}} \mid L(M_{\text{code}})=\{\} ~\}  Sprache aus allen Codes die nur empty akzeptieren

Lne={McodeL(Mcode){}} \small L_{ne}=\{M_{\text{code}} \mid L(M_{\text{code}})\neq \{\} ~\}  Sprache aus allen Codes die nicht empty akzeptieren

LneL_{ne}ist rekursiv-aufzählbar

MM (nicht-deterministisch) nützt die universelle Maschine UU mit den Eingaben: MiM_i und ein random Wort ww .

Die universelle Maschine simuliert MiM_i mit der Eingabe ww .

Wenn UU akzeptiert L(Mi){}\Rarr L(M_i) \neq \{\}

LneL_{ne}ist nicht rekursiv

LuLneL_u \leq L_{ne}

Wir reduzieren das Halteproblem auf das Nonempty-Problem:

  1. Angenommen H:L(H)=Lu\exists H: L(H) = L_u

    Wenn (M,w)(M, w) von HH akzeptiert wird, dann bedeutet das, dass MM mit ww hält.

  1. Daraus folgt M:(M,w)L(H)L(M){} \exists M': (M',w) \in L(H) \Leftrightarrow L\left(M^{\prime}\right) \neq\{\} 

    Wenn MM' das wort ww akzeptiert, dann kann die Sprache L(M)L(M') nicht {}\{\} sein.

Dadurch, dass wir wissen dass HH existiert, daber nicht rekursiv ist, folgt daraus, dass LneL_{ne} auch nicht rekursiv ist.

Eigenschaft

Eigenschaft

Eine Eigenschaft ist eine Teilmenge PP von allen rekursiv-aufzählbaren Sprachen (über ein Alphabet).

Eine Teilmenge aller möglichen rek-aufzählbaren Sprachen über das Alphabet.

  • Beispiele

    Die folgenden Eigenschaften treffen auf die rekursiv-aufzählbare Sprache L={a,b}L=\{a, b\}^* zu ( LL ist ein Element dieser Eigenschaften - also LP\small L \in P )

    P={LL=L}\small P_{}=\left\{L \mid L=L^{*}\right\}(da der Sternoperator idempotent ist)

    P={LL ist rekursiv-aufza¨hlbar } \small P_{}=\{L \mid L \text { ist rekursiv-aufzählbar }\} 

    P={LL ist rekursiv } \small P_{}=\{L \mid L \text { ist rekursiv }\} 

    Aber nicht die Eigenschaften (keine möglichen Teilmengen)

    P={LL ist endlich } \small P_{}=\{L \mid L \text { ist endlich }\} 

    P={{ε}}\small P_{}=\{\{\varepsilon\}\}

    P={}\small P_{}=\{\}

Triviale Eigenschaften

P={}\small P_{}=\{\}

ist von keiner rekursiv-aufzählbaren Sprache die Teilmenge

Die EigenschaftP={}\small P_{}=\{\}(keine Sprache) ist nicht dasselbe wie die EigenschaftP={{}}\small P=\{\{\}\}(diese trifft zb auf die Leer-Sprache zu)

P={LL ist rekursiv-aufza¨hlbar }\small P_{}=\{L \mid L \text { ist rekursiv-aufzählbar }\}

ist von jeder rekursiv-aufzählbaren Sprache die Teilmenge

Satz von Rice

Sagt ob eine Eigenschaft (Sprachenmenge) rekursiv ist.

Wie kann eine Menge an Sprachen rekursiv sein?

PP ist rekursiv wenn es für LPL_P eine deterministische Turingmaschine gibt:

LP=L_P = Die Menge aller Maschinen-Codes, die eine Sprache aus Menge PP akzeptieren.

LP={McodeL(Mcode)P} L_{P}=\left\{M_{\text{code}} \mid L\left(M_{\text{code}}\right) \in P\right\} 

Satz von Rice

Eigenschaft nicht trivial \Rarr Eigenschaft nicht rekursiv

  • Beispiele

    1)P={LL7}P=\{L \mid ~~|L| \geq 7\}

    Sprache mit 7 oder mehr Elementen

    Maschine die nur Sprachen mit mehr als 7 Wörtern akzeptiert

    Beweis: (für nicht Trivialität)

    \exists rekursiv-aufzählbare Sprache mit dieser Teilmenge L1={a,a2,a3,,a7} L_{1}=\left\{a, a^{2}, a^{3}, \ldots, a^{7}\right\} 

    \exists rekursiv-aufzählbare Sprache ohne dieser Teilmenge: L2={}L_{2}=\{\}

    2)P={LL ist eine regula¨re Sprache} \small P_{}=\{L \mid L \text { ist eine reguläre Sprache}\} 

    Maschine die nur reguläre Sprache akzeptiert

    Beweis:

    \exists rekursiv-aufzählbare Sprache mit dieser Teilmenge L1={a,b}L_{1}=\left\{a, b\right\}^*

    \exists rekursiv-aufzählbare Sprache ohne dieser Teilmenge LuL_{u}

Fällen wo Anwendung von Satz von Rice ungültig ist

Satz ausgenommen: Es handelt sich nicht um eine Bedingung der akzeptierten Sprache der Turingmaschine sondern um eine Bedingung der Turingmaschine selbst.

  • Beispiele

    1)P={MiMi hat7 Zusta¨nde} \small P=\{M_i \mid M_i ~\text{hat} \geq 7 \text{ Zustände} \} 

    Bezieht sich auf Maschine und nicht Sprache

    2)P={MiMiakzeptiert rekursiv aufza¨hlbare Sprache} \small P=\{M_i \mid M_i ~\text{akzeptiert rekursiv aufzählbare Sprache} \} 

    Ist für jede rekursiv-aufzählbare Sprache erfüllt.

Beispiel: Nicht-rekursive Probleme

Postsches Korrespondenz ProblemPCP\small \text{PCP}: Rekursiv-aufzählbar, nicht rekursiv

Gegeben

AA- Alphabet

kNk\in \N

(x1,y1),(x2,y2),,(xk,yk) \left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right), \ldots,\left(x_{k}, y_{k}\right) - Folge von Wortpaaren

wobei xi,yiA+x_{i}, y_{i} \in A^{+} für 1ik1 \leq i \leq k

Frage

\exists Folge von Indizes i1,i2,,inki_{1}, i_{2}, \ldots, i_{n \leq k} für die Paare, sodass gillt:

xi1xi2xin=yi1yi2yin x_{i_{1}} x_{i_{2}} \ldots x_{i_{n}}=y_{i_{1}} y_{i_{2}} \ldots y_{i_{n}} 

10. Hilbertsches Problem: nicht rekursiv

Gegeben

nNn \in \mathbb{N}

Polynom p(x1,,xn)p\left(x_{1}, \ldots, x_{n}\right)

Frage

Besitzt pp ganzzahlige Nullstellen?