ITERATIVE ANWEISUNGEN II: while-SCHLEIFENIn höheren Programmiersprachen werden Sprünge (und Fallunterscheidungen)durch Schleifen ersetzt. Im Folgenden führen wirsolch ein höhere Programmiersprache für das <strong>Turingmaschinen</strong>konzeptein (die sog. Turingoperatoren), die auf while-Schleifenbasiert.Iteration von f nach einem Test t : D → {0, 1}:Iter t (f)(s) = f ns (s),wobei n s das kleinste n mit t(f n (s)) = 1 ist, falls solch ein nexistiert, und Iter t (f)(s)↑ andernfalls.Wir erinnern hierzu zunächst an das Schleifenkonzept.D.h. f wird so oft ausgeführt, bis t erstmals positiv ist. Dabeiwird vor jeder Ausführung von f getestet, ob t gilt; ist t bereitszu Beginn positiv, wird also f nie ausgeführt (while-Schleife):Iter t (f)(s)ˆ= while t(s) = 0 do s := f(s)ITERATIVE ANWEISUNGEN I: for -SCHLEIFENTURINGOPERATOREN (TOs)n-fache Iteration Iter(f, n) = f n einer Operation f : D → D:Iter(f, 0)(s) = f 0 (s) = sIter(f, n + 1)(s) = f n+1 (s) = f(f n (s)) = f(Iter(f, n)(s)),D.h. es wird zu Beginn bereits festgelegt, wie oft f ausgeführtwird (klassische for -Schleife):Iter(f, n)(s)ˆ= for i = 1 to n do s := f(s)Auf Schleifen basierende <strong>Turingmaschinen</strong>-Programme definieren wir mit Hilfesog. Turingoperatoren.Solch ein Operator ist eine partielle TM-Speichertransformation basierendauf Verkettung und Iteration der elementaren TM-Operationen (Druck- undBewegungsbefehle), wobei die elementaren TM-Tests (Steht a auf dem Arbeitsfeld?)als Stoppkriterien bei den Iterationen dienen.Da die Speicherstruktur einer TM nur von deren Bandalphabet Γ abhängt,sprechen wir von Turingoperatoren P über Γ. Jeder solcher Operator P isteine partielle FunktionP : TB Γ → TB Γ ,wobei TB Γ = BI Γ × Z die Menge der Turingbänder über dem Bandalphabet Γsei.
Die Turingoperatoren (TO) P über Γ sind induktiv wie folgtdefiniert.1. R, L, S und alle a ∈ Γ sind Turingoperatoren (über Γ), wobeiR(f, z) = (f, z + 1) & L(f, z) = (f, z − 1) & S(f, z) = (f, z)a(f, z) = (f (a,z) , z) (wobei f (a,z) (z) = a und f (a,z) (z ′ ) = f(z ′ ) für z ′ ≠ z)Die Turingoperatoren dieser Gruppe sind also gerade die elementarenTM-Operationen.2. Sind P 1 und P 2 TOs, so auch P 1P 2, wobeiP 1P 2(f, z) = P 2(P 1(f, z))Verkettung (= Hintereinanderausführung) von P 1 und P 2Sprechweise: ”erst P 1, dann P 2“3. Ist P ein TO und a ∈ Γ, so ist auch [P ] a ein TO, wobei[P ] a(f, z) = Iter a? (P )(f, z).Iteration von P nach a? (wobei a?(f, z) = 1 ⇔ f(z) = a)Sprechweise: ”iteriere P so lange, bis a erstmals auf dem Arbeitsfeldsteht“Kopieroperator: K := R1R bb R0L 1 0R[1R bb 0L 1 0R] bLiegt das AF direkt vor einer endlichen Folge von Unärzahlen, so wird dieerste dieser Zahlen an das rechte Bandende kopiert und das AF wird hinterdie kopierte Zahl verlegt. Der Bandteil links der ursprünglichen Position <strong>des</strong>Arbeitsfel<strong>des</strong> wird dabei nicht verändert.K(. . . v b n 1 b n 2 b . . . n k b . . . ) = . . . v b n 1 b n 2 b . . . n k b n 1 b . . .Löschoperator: E := R[bR] bLiegt das AF direkt vor einer Unärzahl, so wird diese gelöscht und das AF wirdhinter die gelöschte Zahl verlegt. Der Rest <strong>des</strong> Ban<strong>des</strong> wird nicht verändert.E(. . . v b n b w . . . ) = . . . v b b n+1 b w . . .Durch das Löschen entsteht eine Lücke im relevanten Bandteil. Liegt diesezwischen den letzten beiden Unärzahlen auf dem Band, so kann man die Lückemit Hilfe <strong>des</strong> folgenden Transportoperators schließen.Transportoperator: T := R1L 0 RR0R 1 bR[1L 0 R0R 1 bR] b L 0 L bT (. . . v m b k+1 b n b . . . ) = . . . v m b n b . . .BEISPIELE von TOs über dem Bandalphabet Γ = {b, 0, 1}VON EINEM TO P BERECHNETE (PARTIELLE) FUNKTIONRechts- und Linksoperatoren (a ∈ Γ):R a := [R] a und L a := [L] aVerlege das AF so lange nach rechts (links), bis es erstmals den Buchstabena enthält! (Steht a bereits auf dem AF, so wird das AF nicht verlegt!)Bandendeoperatoren:R bb := R b R[R b R] b L und L bb := L b L[L b L] b RVerlege das AF so lange nach rechts (links), bis erstmals das AF und seinrechtes (linkes) Nachbarfeld beide leer sind!Stellt man sicher, dass im relevanten Bandteil niemals zwei Blanks direkt nebeneinanderstehen, so wird das AF an das rechte (linke) Ende <strong>des</strong> relevantenBandteils verlegt.Die von einem TO P über Γ beschriebene Speichertransformation kann manals Rechnung auffassen. Fügt man den üblichen Ein- und Ausgabemechanismusvon <strong>Turingmaschinen</strong> hinzu, so erhält man die von P berechnete Funktion(en).Seien Σ, T ⊆ Γ − {b} und m ≥ 0. Die von dem TO P über Γ berechnetepartielle Funktionϕ P,Σ,T,m : (Σ ∗ ) m → T ∗ist durchϕ P,Σ,T,m ( ⃗w) = out(P (in( ⃗w))gegeben, wobei in und out wie die Ein- und Ausgabefunktion einer TuringmaschineM = (Σ, m, T, Γ, Z, z 0, δ) über dem Bandalphabet Γ zur Berechnungvon Funktionen vom Typ (Σ ∗ ) m → T ∗ definiert sind (wobei bei der Ausgabe(von in) bzw. bei der Eingabe (von out) der Zustand unterdrückt wird).