Mehrband-Turingmaschinen Definition wie bei 1-Band-TM, nur mehrere Bänder. Dann natürlich pro Band ein Schreib-/Lesekopf. Übergangsfunktion von Z k nach Z k {L, R, N} k. Satz: Zu jeder Mehrband-Turingmaschine M gibt es eine 1-Band-TM M 0 mit T (M) =T (M 0 ) bzw. bei Funktionenberechnung so, dass M und M 0 dieselbe Funktion berechnen. Einheit 6 Folie 6.1
Beweis des Satzes M sei k-band-tm mit Arbeitsalphabet. Idee: Spuren (auf 1 Band) ersetzen Bänder der Mehrband-TM Problem: Viele Köpfe müssen durch einen Kopf simuliert werden! Lösung: Simuliere z.b. zwei Bänder durch zwei Spuren eines Bandes. Dabei ersetzen wir das Bandalphabet durch 0 0 mit 0 = [{ˆ 2 }. Das Hütchen in ˆ markiert eine virtuelle Kopfposition. Nun muss man allerdings für jeden Schritt der ursprünglichen TM einmal das gesamte Band durchgehen. Machen Sie sich klar, warum das im allgemeinen tatsächlich notwendig ist! Einheit 6 Folie 6.2
Beweis des Satzes (Details) Das neue Bandalphabet 0 0 ist geeignet, um auf einem Band den Inhalt zweier Bänder (jeweils mit Alphabet )undfür beide Schreib-/Leseköpfe die Kopfpositionen darzustellen. Die Simulation eines Schrittes der 2-Band-TM verläuft dann etwa folgendermaßen: Einmal wird das gesamte Band (z.b. von links nach rechts) gelesen. Dabei werden alle Informationen gesammelt, die notwendig sind, um festzustellen, welcher Übergang durchzuführen ist. Nun wird das gesamte Band noch einmal (diesmal von rechts nach links) gelesen, wobei die zum durchgeführten Übergang gehörenden Änderungen ausgeführt werden. Weitere Details werden an der Tafel vorgeführt und diskutiert. Einheit 6 Folie 6.3
Notation für spezielle Turingmaschinen Sei M eine 1-Band-TM. M(i, k) bezeichnet die k-band-maschine, die wie M arbeitet, wobei Band i als Arbeitsband benutzt wird (übrige Bänder ungenutzt). Technisch bedeutet das, dass der Übergang (von M) (z, a) =(z 0, b, y) in M(i, k) zu folgendem Übergang wird: (z, c 1,...,c i 1, a, c i+1,...,c k )= (z 0, c 1,...,c i 1, b, c i+1,...,c k, N,...,N, y, N,...,N) (Wo genau steht hier das y in der Liste von N s?) Wenn der Wert von k uninteressant ist, schreiben wir M(i). Einheit 6 Folie 6.4
Weitere Schreibweisen Band := Band+1 oder Band := Band 1 Band i := Band i + 1 oder Band i := Band i 1 Sei M eine Maschine, die die Inkrement-Funktion berechnet, M 0 entsprechend für die Dekrement-Funktion. Dann sind M(i) und M 0 (i) die Maschinen für Band i := Band i ± 1. Band i := 0 Wir beginnen mit einer Maschine M für Band := 0-dasisteinfach. Dann ist M(i) die gesuchte Maschine! Band i := Band j Auch das ist eine kleine Programmierübung. Voraussetzung ist hier allerdings, dass die Bänder diszipliniert verwendet werden. (Z.B. Kopf immer wieder zum Anfang) Einheit 6 Folie 6.5
Hintereinanderausführung Flussdiagrammnotation: start! M 1! M 2! stop Programmiersprachen-Notation: Bedeutung: M 1 ; M 2 Die Maschinen M i seien als 7-Tupel (Z i,, Dabei sei o.b.d.a. Z 1 \ Z 2 = ;. i, i, z i,, E i ) gegeben. Als M 1 ; M 2 bezeichnen wir dann die folgende Maschine M: M =(Z 1 [ Z 2,, 1 [ 2,,z 1,, E 2 ) mit = 1 [ 2 [{(z, a, z 2, a, N) z 2 E 1, a 2 1 } Einheit 6 Folie 6.6
Anwendung/Variation z.b. Erzeugen der Konstante 5 auf Band 3 und 6 auf Band 5: M sei die Maschine Band := Band+1. Definiere ˆM so: ˆM: start! M! M! M! M! M! stop Damit: Band 3 := 0; ˆM(3); Band 5 := 0; ˆM(5); M(5) Notation für Aufspaltung: Die folgende Notation benutzen wir, um mit Turingmaschinen ein Analogon zur IF-THEN-ELSE-Konstruktion der Programmiersprachen zu erhalten: z e1 M 1! stop start! M 0 z e2 M 2! stop Einheit 6 Folie 6.7
Nulltest Wir wollen eine Turingmaschine entwerfen, die abfragt, ob Band i den Wert 0 hat: (z, a) =(nein, a, N) für alle a 2 \{0} (z, 0) =(z 1, 0, R) (z 1, a) =(nein, a, N) für alle a 2 \{0} (z 1, ) =(ja,, L) Diese Maschine heiße Band = 0? Wir schreiben Band i = 0? statt Band = 0?(i) Einheit 6 Folie 6.8
While-Schleife als Turingmaschine Benutze die Nulltest-Maschine für die Ablaufkontrolle: Ja start Band i = 0? stop Nein M Diese Konstruktion entspricht while Band i 6= 0doM. Einheit 6 Folie 6.9