Skip to main content

One post tagged with "automata theory"

View All Tags

· 6 min read
info

Oft wird der Nachweis, dass das Halteproblem nicht entscheidbar ist, in der Fachliteratur (Schöning [📖Sch08, p. 119 f.], Asteroth und Baier [📖BA02, p. 106 f.], Sipser [📖Sip12, p. 216 f.]) mithilfe einer Turingmaschine und einem Widerspruchsbeweis gezeigt, in etwa:

Angenommen,

K={wΣw=T,T stoppt bei Eingabe w}K' = \{w \in \Sigma^* | w = \langle T \rangle, \text{$T$ stoppt bei Eingabe $w$}\}

ist entscheidbar.

Sei TT' ist die Turingmaschine, die KK' entscheidet.
Sei w=Tw = \langle T \rangle die Codierung3 einer Turingmaschine, die wie folgt arbeitet:

  • TT simuliert das Verhalten von TT' bei der Eingabe ww:
    • TT stoppt, wenn TT' die Eingabe ww verwirft (wKw \notin K')
    • TT stoppt nicht, wenn TT' die Eingabe ww akzeptiert (wKw \in K')

Damit folgt: TT stoppt bei Eingabe ww \Leftrightarrow TT' verwirft ww \Leftrightarrow wKw \notin K' \Leftrightarrow TT stoppt nicht

Widerspruch!

Bei Vossen und Witt wird der Beweis anhand unentscheidbarer Mengen gezeigt - hierzu wird in dem Abschnitt über Berechenbarkeit die Abzählbarkeit von Turingmaschinen und analog dazu die Standardnummerierung von P\mathcal{P}1 als theoretischer Unterbau festgelegt, um darauf aufbauend den Nachweis der Semi-Entscheidbarkeit und Unentscheidbarkeit zu führen. Im Folgenden findet sich die Beweisführung nach Vossen und Witt [📖VW16, p. 360 ff.] mit ergänzenden Kommentaren.

Die Standardnummerierung ist festgelegt als:

(N0,P,φ)(\mathbb{N}_0, \mathcal{P}, \varphi)
  • N0\mathbb{N}_0: Die Menge aller Turingmaschinen (ein iN0i \in \mathbb{N}_0 repräsentiert die Gödelnummer einer Turingmaschine), wobei T\mathcal{T} die Menge aller normierten Turingmaschinen ist. Die Abbildung h:N0Th: \mathbb{N}_0 \rightarrow \mathcal{T} ist definiert durch h(i)={T,falls p(τ(T))=iTω,sonsth(i) = \begin{cases} T, & \text{falls } p(\tau(T)) = i\\ T_{\omega}, & \text{sonst} \end{cases} bildet also auf eine natürliche Zahl eine Turingmaschine ab.
  • P\mathcal{P}: Die Menge aller berechenbaren Funktionen.
  • φ:N0P\varphi: \mathbb{N}_0 \rightarrow \mathcal{P} ist eine Abzählung aller berechenbaren Funktionen. φ\varphi ist festgelegt durch φ(i)=ffh(i)=f\varphi(i) = f \Leftrightarrow f_{h(i)} = f Die berechenbare Funktion φ(i)\varphi(i) wird also durch die ii-te Turingmaschine berechnet.

Die Standardnummerierung ist im Folgenden die Grundlage für die Formulierung von Entscheidbarkeitsproblemen bei Mengen.

Das spezielle Halteproblem

Zunächst wird das spezielle Halteproblem (auch Selbstanwendbarkeitsproblem) betrachtet.
Vossen und Witt definieren es über folgende Menge:

K={iiDef(φi)}K = \{i \mid i \in \text{Def}(\varphi_i)\}

KK enthält alle Nummern von Turingmaschinen, die, angewendet auf sich selbst, anhalten:

  • ii ist die Codierung einer Turingmaschine.
  • φi\varphi_i ist die berechenbare Funktion, die von der Turingmaschine p(τ(T))=ip(\tau(T)) = i berechnet wird.
  • Def(φi)\text{Def}(\varphi_i) ist der Definitionsbereich der Funktion φi\varphi_i, also alle erlaubten Eingaben.
  • iDef(φi)i \in \text{Def}(\varphi_i) bedeutet: Die Codierung ii der Turingmaschine p(τ(T))=ip(\tau(T)) = i, die φi\varphi_i berechnet, ist eine erlaubte Eingabe.

Vossen und Witt definieren KK als die "Menge aller Turingmaschinen, die, [...] anhalten."
Das bedeutet, dass von einer entscheidbaren Menge ausgegangen wird:
Es wird angenommen, dass sowohl KK als auch K\overline{K} semi-entscheidbar sind und die charakteristische Funktion χK\chi_K von KK berechenbar ist.

Mit Satz 10.7 formulieren Vossen und Witt den Kern des Selbstanwendbarkeitsproblems, nämlich, dass KK zwar semi-entscheidbar, aber nicht entscheidbar ist:

  • KK ist rekursiv aufzählbar
  • KK ist nicht entscheidbar

Damit wird behauptet:

  • KK ist semi-entscheidbar, da rekursiv-aufzählbar.
    Wenn KK semi-entscheidbar ist, ist auch die semi-charakteristische Funktion von KK, χK\chi'_K, berechenbar.
    Wenn KK semi-entscheidbar und damit rekursiv aufzählbar ist, dann gilt äquivalent dazu: KK ist der Definitionsbereich einer berechenbaren Funktion g:N0N0g: \mathbb{N}_{0} \rightarrow \mathbb{N}_0 (s. Folgerung 10.2 [📖VW16, p. 356]). Es reicht also aus, eine solche Funktion anzugeben, um die Semi-Entscheidbarkeit und damit auch die rekursive Aufzählbarkeit nachzuweisen.
  • Wenn KK entscheidbar ist, dann ist auch die charakteristische Funktion χK\chi_K berechenbar: χK\chi_K gibt 11 aus, wenn die Turingmaschine TT angewendet auf i=p(τ(T))i = p(\tau(T)) anhält (also wenn φi(i)\varphi_i(i) berechnet wird); und ansonsten ist χK(i)=0\chi_K(i) = 0, wenn TT nicht anhält2.

Beweisführung

Der Beweis wird wie folgt geführt:

a) Vossen und Witt definieren die Funktion f:N0N0f: \mathbb{N}_0 \rightarrow \mathbb{N}_0 durch

f(i)=uφ(i,i)f(i) = u_{\varphi}(i, i)

Bei uφu_{\varphi} handelt es sich um die universelle Funktion von (N0,P,φ)(\mathbb{N}_0, \mathcal{P}, \varphi):

uφ:N0×N0N0definiert durchuφ(i,x)=φi(x)u_{\varphi} : \mathbb{N}_0 \times \mathbb{N}_0 \rightarrow \mathbb{N}_0 \quad \text{definiert durch} \quad u_{\varphi} (i, x) = \varphi_i(x)

uφ(i,j)u_{\varphi}(i, j) berechnet die ii-te berechenbare Funktion für die Eingabe jj.

Mit ff als berechenbare Funktion kann gezeigt werden:

iKiDef(φi)(Definition K)(i,i)Def(uφ)(Definition uφ)iDef(f)(Definition f)\begin{align} i \in K &\Leftrightarrow i \in \text{Def}(\varphi_i) \quad \text{(Definition $K$)}\\ &\Leftrightarrow (i, i) \in \text{Def}(u_{\varphi}) \quad \text{(Definition $u_{\varphi}$)}\\ &\Leftrightarrow i \in \text{Def}(f) \quad \text{(Definition $f$)} \end{align}

womit K=Def(f)K = \text{Def}(f) ist und damit KK rekursiv-aufzählbar und semi-entscheidbar ist.

b) Angenommen, KK ist entscheidbar. Dann ist χK\chi_K berechenbar.
Vossen und Witt definieren eine berechenbare (Hilfs-)Funktion

g:N0N0g: \mathbb{N}_0 \rightarrow \mathbb{N}_0

durch

g(x)={uφ(x,x)+1,falls χK(x)=10,falls χK(x)=0g(x) = \begin{cases} u_{\varphi}(x, x) + 1, & \text{falls }\chi_K(x) = 1\\ 0, & \text{falls }\chi_K(x) = 0 \end{cases}

gg ist total berechenbar: Wenn χK(x)=1\chi_K(x) = 1, dann ist xDef(φx)x \in \text{Def}(\varphi_x), und damit ist uφ(x,x)+1=φx(x)+1u_\varphi(x, x) + 1 = \varphi_x(x) + 1.

Da gg total berechenbar ist (gRPg \in \mathcal{R} \subset \mathcal{P}), muss es ein pN0p \in \mathbb{N}_0 geben mit g=φpg = \varphi_p. Es folgt

g(x)=φp(x)xN0g(x) = \varphi_p(x) \quad \forall x \in \mathbb{N}_0

Für g(p)g(p) werden nun zwei Fälle untersucht:

  • Fall 1: g(p)=0g(p) = 0

    g(p)=0χK(p)=0(Entscheidbarkeit K)pKpDef(φp)(g=φp)pDef(g)g(p)=(Widerspruch zu g total berechenbar)\begin{align} g(p) = 0 &\Leftrightarrow \chi_K(p) = 0 \quad \text{(Entscheidbarkeit $K$)}\\ & \Leftrightarrow p \notin K \\ & \Leftrightarrow p \notin \text{Def}(\varphi_p) \quad \text{($g = \varphi_p$)}\\ & \Leftrightarrow p \notin \text{Def}(g) \\ & \Leftrightarrow g(p) = \bot \quad \text{(Widerspruch zu $g$ total berechenbar)} \end{align}

    womit insgesamt die widersprüchliche Aussage folgt:

    g(p)=0g(p)=g(p) = 0 \Leftrightarrow g(p) = \bot
  • Fall 2: g(p)=uφ(p,p)+1g(p) = u_{\varphi}(p,p) + 1

    g(p)=uφ(p,p)+1(Definition g)=φp(p)+1(uφ(p,p)=φp(p))=g(p)+1(φp=g)\begin{align} g(p) &= u_{\varphi}(p, p) + 1 \quad \text{(Definition $g$)}\\ &= \varphi_p(p) + 1 \quad \text{($u_{\varphi}(p, p) = \varphi_p(p)$)}\\ &= g(p) + 1 \quad \text{($\varphi_p = g$)} \end{align}

    womit insgesamt die widersprüchliche Aussage folgt:

    g(p)=g(p)+1g(p) = g(p) + 1

Insgesamt wird durch den Beweis gezeigt: Die Anwendung von gg auf pp - also von gg auf sich selbst (wegen g=φp=fh(p),φp(p)=uφ(p,p)g = \varphi_p = f_{h(p)}, \varphi_p(p) = u_{\varphi}(p, p)) - führt in jedem Fall zu einem Widerspruch.
Damit ist gezeigt, dass χK\chi_K nicht berechenbar und folglich KK nicht entscheidbar ist.

info

Mit dem Wissen um die Unentscheidbarkeit und der Semi-Entscheidbarkeit von KK ist es nun möglich, eine Funktion ff anzugeben, mit der sich KK auf HH reduzieren lässt, so dass KfHK \leq_f H. Da KK unentscheidbar ist, ist auch HH unentscheidbar. Es muss gezeigt werden, dass auch HH semi-entscheidbar ist, da dies nicht allein aus der Reduktion von KK auf HH folgt (vgl. Satz 10.5 [📖VW16, p. 358] sowie Folgerung 10.3 [📖VW16, p. 359]). Der Beweis erfolgt analog zum Nachweis der rekursiven Aufzählbarkeit von KK mit Satz 10.8 [📖VW16, p. 363].


  1. Anstatt Gödelnummer wird im Folgenden auch einfach der Begriff Codierung verwendet, wobei streng genommen τ(T)\tau(T) die Codierung einer normierten Turingmaschine ist, bevor ihr eine Gödelnummer zugewiesen wird
  2. P\mathcal{P} bezeichnet die Menge der partiell-rekursiven Funktionen. Es gilt PRRP\mathcal{PR} \subset \mathcal{R} \subset \mathcal{P}, mit PR\mathcal{PR} als die Menge der primitiv-rekursiven Funktionen, die eine echte Teilmenge der total berechenbaren Funktionen R\mathcal{R} sind
  3. der Widerspruch liest sich hier bereits heraus.