EINFÜHRUNG IN DIE THEORETISCHE INFORMATIK Prof. Dr. Klaus Ambos-Spies Sommersemester 2017 3. TURINGMASCHINEN Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 1 / 46 – Bild entfernt – Alan Mathison Turing (1912 - 1954) Britischer Logiker, Mathematiker und Computerpionier http://www.mathcomp.leeds.ac.uk/turing2012/ Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 2 / 46 Formalisierung von Algorithmen Wegen der beobachteten Zusammenhänge zwischen Berechnungs-, Entscheidungs- und Aufzählungsverfahren genügt es Berechnungsverfahren bzw. den Begriff der Berechenbarkeit zu formalisieren. Weiter genügt es Verfahren zur Berechnung von Funktionen über den natürlichen Zahlen zu betrachten. Wir werden 3 unterschiedliche Ansätze vorstellen: Turingmaschinen Registermaschinen Rekursive Funktionen Wir werden zeigen, dass diese Ansätze zu demselben formalen Berechenbarkeitsbegriff führen (Äquivalenzsatz). Man geht davon aus, dass diese formalen Ansätze den intuitiven Berechenbarkeitsbegriff adäquat (d.h. korrekt und vollständig) wiedergeben: CHURCH-TURING-THESE: Eine Funktion ist genau dann (im intuitiven Sinne) berechenbar, wenn sie von einer Turingmaschine berechnet wird. Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 3 / 46 Unterscheidungsmerkmale der Ansätze (1) Bei den ersten beiden Ansätzen wird der Begriff des Berechnungsverfahrens formalisiert, indem (mathematische) Maschinen und deren Arbeitsweise formal mathematisch definiert werden, wobei diese Maschinen so gewählt sind, dass sie (vermutlich) jedes Berechnungsverfahren über Wörtern bzw. Zahlen simulieren können: TURINGMASCHINEN: Diese Maschinen operieren auf Wörtern (d.h. benutzen Zahldarstellungen). Grundoperationen sind elementare Zeichenmanipulationen (Lesen, Streichen, Hinzufügen, Ersetzen einzelner Buchstaben). REGISTERMASCHINEN: Es wird von der Zahldarstellung abstrahiert. Grundoperationen sind elementare Zähloperationen (Inkrementieren, Dekrementieren, Nulltest). (Diese Ansätze sind also imperativ, wobei der zweite Ansatz die Idee des Datentyps einbezieht.) Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 4 / 46 Unterscheidungsmerkmale der Ansätze (2) Bei dem dritten Ansatz wird der Begriff der berechenbaren Funktion (über den natürlichen Zahlen) direkt (also nicht über den Begriff des Berechnungsverfahren - d.h. maschinenunabhängig) formalisiert: REKURSIVE FUNKTIONEN: Ausgehend von elementaren berechenbaren Funktionen erzeugt man komplexere berechenbare Funktionen mit Hilfe von effektiven Operationen, die berechenbare Funktionen in berechenbare Funktionen überführen (z.B. Einsetzung, Rekursion). (Dieser Ansatz führte in der Informatik zur funktionalen Programmierung.) Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 5 / 46 Formalisierung von Algorithmen: Mathematische Maschinen Algorithmen sind Vorschriften, die die Lösung eines (mathematischen) Problems so exakt beschreiben und in elementare Teilschritte zerlegen, dass die Ausführung rein schematisch erfolgen kann und keinerlei Kreativität erfordert. Im Prinzip kann also der Algorithmus von einer Maschine ausgeführt werden. Eine Turingmaschine ist solch eine ’mathematische’ (d.h. formal spezifizierte aber nicht notwendigerweise physikalisch realisierte) Maschine, die der Arbeitsweise eines Mathematikers nachempfunden ist und die von diesem bei der Problemlösung verwendeten elementaren Einzelschritte in geeignet standardisierter Form durchführen kann. Bevor wir die Turingmaschinen beschreiben, betrachten wir zunächst die grundlegenden Funktionseinheiten jeder mathematischen Maschine und zeigen dann, wie diese bei einer Turingmaschine konzipiert sind. Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 6 / 46 Funktionseinheiten mathematischer Maschinen Mathematische Maschine = Basismaschine + Programm Basismaschine (hardware): Speicherstruktur Endlicher Satz von Speicheroperationen I I Speichertransformationen = Aktualisierung des Speicherinhalts (z.B. Schreiben in den Speicher) Speichertests = Überprüfen des Speicherinhalts (z.B. Lesen aus dem Speicher) Ein-/Ausgabemechanismus Programm = Ablaufsteuerung (software): Festlegung der auszuführenden Folge von Operationen Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 7 / 46 3.1 TURINGMASCHINEN: Idee, formale Definition, Beispiele Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 8 / 46 Komponenten einer Turingmaschine: Speicherstruktur Nach beiden Seiten hin unendliches, in Felder aufgeteiltes Band. Jedes Feld ist mit einem Buchstaben aus dem Bandalphabet Γ beschrieben. (Leere Felder sind mit dem Blank b (Leerzeichen) beschriftet.) Der Zugriff auf die Daten erfolgt mit einem Lese/Schreibkopf, I I der auf einem Feld (dem Arbeitsfeld) sitzt und dessen Inschrift lesen und/oder überschreiben kann. Danach kann der Kopf um ein Feld (nach links oder rechts) verlegt werden. In einem Rechenschritt wird entsprechend 1 die Inschrift des Arbeitsfeldes gelesen 2 die Inschrift des Arbeitsfeldes überschrieben (eventuell mit der alten Inschrift) 3 das Arbeitsfeld (um ein Feld nach links oder rechts) verlegt (oder beibehalten) Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 9 / 46 Komponenten einer Turingmaschine: Ein- und Ausgabe Ein- und Ausgabe sind Wörter über festgelegtem Eingabe- bzw. Ausgabealphabet. (Diese Alphabete sind Teil des Bandalphabets.) EINGABE: Die Eingabe wird rechts des Arbeitsfeldes auf das ansonsten leere Band geschrieben. Dabei werden mehrere Eingaben durch einzelne Blanks getrennt. NB: Da die Turingmaschine auf Wörtern operiert, müssen Zahleingaben durch ihre Darstellungen ersetzt werden. Wir benutzen hierbei für die Zahl n die Unärdarstellung n = 0n+1 . AUSGABE: Die Ausgabe wird dem Band rechts des Arbeitsfeldes entnommen. Genauer: Die Ausgabe ist das längste Wort über dem Ausgabealphabet, das direkt rechts des Arbeitsfeldes steht. Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 10 / 46 Komponenten einer Turingmaschine: Steuerung (Programm) Die Maschine befindet sich zu jedem Zeitpunkt in einem von endlich vielen möglichen (Programm-)Zuständen. Zu Beginn der Rechnung ist die Maschine in einem ausgezeichneten Startzustand. Die Rechenschritte der Maschine werden durch eine endliche Folge von Instruktionen, dem Programm, festgelegt. Eine Instruktion ist dabei eine bedingte Anweisung der folgenden Form: “Falls die Maschine im Zustand z ist und der Buchstabe a auf dem Arbeitsfeld steht, so überdrucke das Arbeitsfeld mit dem Buchstaben a0 , bewege den LS-Kopf nach links (oder rechts oder lasse ihn stehen) und gehe in den neuen Zustand z 0 ”. Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 11 / 46 Komponenten einer Turingmaschine: Steuerung (Programm) - Forts. Zu jeder Bedingung (= Paar aus Zustand und Inschrift des Arbeitsfeldes) gibt es höchstens eine zutreffende Instruktion (→ Determinismus). Das Programm lässt sich daher auch als eine partielle Funktion δ : Z × Γ → Γ × Bew ×Z darstellen (wobei: Z Menge der Zustände, Γ Bandalphabet, Bew Menge der Bewegungen). Lässt sich keine Instruktion anwenden, ist die Rechnung beendet und die Maschine stoppt. Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 12 / 46 Komponenten einer Turingmaschine: Schematische Darstellung Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 13 / 46 Formale Definition einer Turingmaschine Eine Turingmaschine (TM) M zur Berechnung einer Funktion f : (Σ∗ )m → T∗ ist gegeben durch M = (Σ, m, T, Γ, Z , z0 , δ) wobei: Σ ist das Eingabealphabet und T ist das Ausgabealphabet, m ist die Stelligkeit der zu berechnenden Funktion, Γ ist ein Alphabet mit Σ ∪ T ⊂ Γ und b ∈ Γ − (Σ ∪ T), genannt das Bandalphabet, wobei b das Leerzeichen (Blank) ist, Z ist eine endliche Menge, genannt die Zustandsmenge, z0 ist ein Element aus Z , genannt der Startzustand, δ ist eine partielle Funktion δ : Z × Γ → Γ × Bew ×Z , genannt das Programm oder die Übergangsfunktion, wobei Bew = {L, S, R} = {−1, 0, +1} die Menge der Bewegungen ist. Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 14 / 46 Beispiel 1: Eine TM M zur Berechnung der Addition (1) Eine Turingmaschine M zur Berechnung der 2-st. Addition arbeitet wie folgt: EINGABE: Die Eingaben m und n sind zu Beginn der Rechnung in der Unärdarstellung auf das Band geschrieben: . . . b b b 0m+1 b 0n+1 b b . . . (Hierbei ist das Blank auf dem Arbeitsfeld unterstrichen.) BANDALPHABET: Das Bandalphabet besteht nur aus der 0 und dem Blank b: Γ = {0, b}. (Ein- und Ausgabealphabet ist das unäre Alphabet {0}.) RECHNUNG: Die Maschine verlegt zunächst (Feld für Feld) den LS-Kopf auf das Blank zwischen den beiden Eingaben, überschreibt dieses durch eine 0, läuft (Feld für Feld) vor den verschmolzenen Null-Block 0m+1 00n+1 = 0m+n+3 zurück, ersetzt die ersten beiden Nullen durch Blanks, lässt den LS-Kopf vor dem verbleibenden Nullblock 0m+n+1 stehen und stoppt. Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 15 / 46 Beispiel 1: Eine TM M zur Berechnung der Addition (2) ZUSTÄNDE: Die Phasen der Rechnung werden durch folgende Zustände beschrieben: z0 z→ z← z1 z2 zstop Startzustand: Gehe nach rechts auf erste Null von 0m+1 Durchlaufe 0m+1 bis zum Blank dahinter und ersetze dieses durch 0 Laufe auf die erste Null von 0m+n+3 zurück Ersetze die erste Null durch Blank und gehe auf die zweite Null Ersetze die zweite Null durch Blank Stoppe Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 16 / 46 Beispiel 1: Eine TM M zur Berechnung der Addition (3) PROGRAMM: Die Programmfunktion δ von M lässt sich durch folgende Tabelle beschreiben: Z z0 z→ z→ z← z← z1 z2 × Γ → b 0 b 0 b 0 0 Γ × Bew × Z b 0 0 0 b b b R R L L R R S z→ z→ z← z← z1 z2 zstop FORMALE DEFINITION VON M: M = ({0}, 2, {0}, {0, b}, Z , z0 , δ), wobei Z = {z0 , z→ , z← , z1 , z2 , zstop } und δ durch obige Tabelle definiert ist. Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 17 / 46 Beispiel 2: TM zur Berechnung von f (n) = 2n (1) Folgende Turingmaschine M = ({0}, 1, {0}, {0, b}, Z , z0 , δ) berechnet die Funktion f (n) = 2n (bzgl. der Unärdarstellung n = 0n+1 ): Idee (und Zustände von M): Mit Hilfe eines iterativen Verfahrens wird der Ausgabeblock A (=02n+1 ) rechts hinter dem Eingabeblock E (getrennt durch ein Blank) erzeugt, wobei E gleichzeitig von links nach rechts abgebaut wird. Für jede gelöschte Null in E werden dabei zwei neue Nullen rechts an A angehängt, sodass am Ende noch die erste 0 von A gelöscht werden muss. Im Einzelnen geht man wie folgt vor: (Beginnend im Zustand z0 :) Zunächst wird auf die erste 0 von E gegangen (zbegincopy ), diese gelöscht und auf das Blank rechts hinter E gegangen (z→ ), dann weiter hinter den aktuellen A-Block und zunächst eine 0 angefügt (z→→ ) und dann eine weitere 0 (z00 ). Es wird dann ans rechte Ende von E zurückgelaufen (z← ) und geprüft, ob E schon leer ist (zfertig ? ). Ist dies nicht der Fall, wird an den linken Anfang von E gegangen (z←← ) und der Kopierzyklus iteriert (zbegincopy ). Andernfalls (zfertig ! ) wird die erste 0 von A noch gestrichen (zstreiche0 ) und gestoppt (zstop ). Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 18 / 46 Beispiel 2: TM zur Berechnung von f (n) = 2n (2) Programm δ von M: Z z0 zbegincopy z→ z→ z→→ z→→ z00 z← z← zfertig ? z←← z←← zfertig ? zfertig ! zstreiche0 Theoretische Informatik (SoSe 2017) × Γ b 0 0 b 0 b b 0 b 0 0 b b b 0 → Γ × Bew b b 0 b 0 0 0 0 b 0 0 b b b b 3. Turingmaschinen R R R R R R L L L L L R R R S × Z zbegincopy z→ z→ z→→ z→→ z00 z← z← zfertig ? z←← z←← zbegincopy zfertig ! zstreiche0 zstop 19 / 46 3.2 TURINGMASCHINEN: Formale Beschreibung der Arbeitsweise und der berechneten Funktion (Semantik) Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 20 / 46 Formale Beschreibung der Arbeitsweise von TMs Nachdem wir Turingmaschinen M = (Σ, m, T , Γ, Z , z0 , δ) formal spezifiziert haben, werden wir nun auch deren Arbeitsweise formal beschreiben und so die von M berechnete Funktion formal definieren. Hierzu gehen wir wie folgt vor: 1 In Konfigurationen fassen wir die Situationen zusammen, in denen sich M aktuell befinden kann (d.h. aktuelle Speicherbelegung und Programmzustand). 2 Danach beschreiben wir Ein- und Ausgabemechanismus. 3 Den Programmablauf beschreiben wir durch die Angabe der 1-Schritt-Funktion, die die einzelnen Rechenschritte von M beschreibt, d.h. einer Konfiguration von M die in einem Schritt erreichte Nachfolgekonfiguration zuordnet. 4 Hieraus lässt sich dann induktiv die gesamte Rechnung von M beschreiben und hiermit die berechnete (partielle) Funktion. Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 21 / 46 (1) M-Konfigurationen: Idee Eine M-Konfiguration besteht aus (1) Bandinschrift (2) Position des Arbeitsfeldes (3) (Programm-)Zustand (1) + (2) fassen wir als M-Band zusammen. NB. Eine M-Konfiguration ist eine “Momentaufnahme” von M, gibt also eine vollständige Beschreibung von M zu einem gegebenen Zeitpunkt. Insbesondere lässt sich aus der Konfiguration der nächste Rechenschritt von M ablesen. Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 22 / 46 (1) M-Konfigurationen: M-Bänder Wir nummerieren (adressieren) die Felder des Bandes mit Hilfe der ganzen Zahlen. Eine mögliche M-Bandinschrift ist dann eine Funktion f : Z → Γ, die der Adresse eines Feldes die Inschrift des Feldes zuordnet. Dabei ist f (z) = b für fast alle z. (D.h. nur endlich viele Felder sind nicht leer.) BIM = {f : Z → Γ : f (z) = b f.ü.} bezeichnet die Menge aller M-Bandinschriften. Die Position p des Arbeitsfeldes ist dessen Adresse (NB: p ∈ Z). Ein M-Band ist dann ein Paar (f , p) bestehend aus der M-Bandinschrift f und der Position p des Arbeitsfeldes. TBM = BIM × Z bezeichnet die Menge aller M-Bänder. Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 23 / 46 (1) M-Konfigurationen: Definition DEFINITION: Eine M-Konfiguration α ist ein Tripel α = (f , p, z) ∈ BIM × Z × Z (= TBM × Z ) wobei f die Bandinschrift p die Position des Arbeitsfeldes z der Zustand von α sind. Die Menge aller M-Konfigurationen wird mit KONM bezeichnet. Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 24 / 46 (1) M-Konfigurationen: Alternative Darstellung Eine M-Konfiguration α = (f , p, z) stellen wir auch dadurch dar, dass wir den endlichen relevanten Bandteil von α explizit angeben . . . a−l . . . a−1 a0 a1 . . . ar . . . z und zusätzlich den Zustand unter die Inschrift des Arbeitsfeldes schreiben. Dabei umfasst der relevante Bandteil a−l . . . ar den nichtleeren Teil der Bandinschrift und das Arbeitsfeld. / so können Wählen wir die Bezeichnungen der Zustände so, dass Z ∩ Γ = 0, wir eine M-Konfiguration auch als Wort über dem Alphabet Z ∪ Γ schreiben, indem wir den Zustand nicht unter sondern hinter die Inschrift des Arbeitsfeldes schreiben: . . . a−l . . . a−1 a0 z a1 . . . ar . . . NB: Die Darstellungen von Konfigurationen auf dieser Folie lassen die (absoluten) Adressen nicht erkennen. Diese Adressen sind für die Arbeitsweise von M aber auch belanglos; sie erleichtern lediglich die formalen Beschreibung der Arbeitsweise. Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 25 / 46 (2) Ein-/Ausgabe: Eingabefunktion und Startkonfiguration Die Eingabefunktion inM von M bildet einen Eingabevektor ~x ∈ (Σ∗ )m auf die zugehörige Startkonfiguration ab. Die Startkonfiguration αM (~x) von M bei Eingabe ~x = (x1 , . . . , xm ) ∈ (Σ∗ )m ist hierbei die Konfiguration inM (~x) = αM (~x) = . . . b x1 b x2 b . . . xm b . . . z0 wobei das Arbeitsfeld die Adresse 0 hat (p = 0). Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 26 / 46 (2) Ein-/Ausgabe: Ausgabefunktion Die Ausgabefunktion outM : KONM → T∗ ordnet jeder Konfiguration das längste direkt rechts des Arbeitsfeldes stehende Wort über dem Ausgabealphabet T zu: ( λ falls f (p + 1) 6∈ T outM (f , p, z) = f (p + 1) . . . f (q) sonst für q > p minimal mit f (q + 1) 6∈ T. NB: Die tatsächliche Ausgabe y von M bei einer Eingabe ~x wird der am Ende der Rechnung erreichten Stoppkonfiguration αstop (~x) von M bei dieser Eingabe (falls existent) entnommen, d.h. y = outM (αstop (~x)). Um dies formal zu beschreiben, definieren wir zunächst den Begriff der Nachfolgekonfiguration. Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 27 / 46 (3) Rechenschritte: Nachfolgekonfigurationen Die Nachfolgekonfiguration s(α) einer M-Konfiguration α = (f , p, z) ist genau dann definiert, wenn δ(z, f (p)) definiert ist. Ist δ(z, f (p)) = (a, i, ẑ), wobei i ∈ {−1, 0, 1} die Bewegung L = −1, S = 0, R = +1 beschreibt, so gilt s(α) = (f̂ , p̂, ẑ) wobei ( f (z) falls z 6= p f̂ (z) = a falls z = p p̂ = p + i Falls definiert, ist die Nachfolgekonfiguration s(α) von α eindeutig bestimmt. Besitzt α keine Nachfolgekonfiguration, so ist α eine Stoppkonfiguration. Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 28 / 46 (3) Rechenschritte: Einschrittrelation Der Übergang von der Konfiguration α zu der Nachfolgekonfiguration s(α) beschreibt einen Rechenschritt von M. Man nennt daher die Relation α ⇒M α0 :⇔ α0 = s(α) auch die Einschrittrelation von M. Wegen der Eindeutigkeit der Nachfolgekonfiguration ist die 1-Schrittrelation eine partielle Funktion KONM → KONM (genauer: der Graph solch einer Funktion). Wir sprechen daher auch von der 1-Schrittfunktion. Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 29 / 46 (4) Rechnung/Ergebnis: Konfigurationenfolgen (1) Eine endliche oder unendliche Folge von Konfigurationen heißt Konfigurationenfolge, falls jede Konfiguration in der Folge Nachfolgekonfiguration der vorhergehenden Konfiguration ist. Eine Konfigurationenfolge heißt maximal, falls sie unendlich ist oder mit einer Stoppkonfiguration endet. Die endliche Konfigurationenfolge α0 , . . . , αn hat Länge n und wir sagen, dass α0 in n Schritten in αn überführbar bzw. αn aus α0 in n Schritten erreichbar ist (SCHREIBWEISE: α0 ⇒nM αn ). α heißt in α0 überführbar bzw. α0 aus α erreichbar (SCHREIBWEISE: α ⇒∗M α0 ), falls es ein n ≥ 0 gibt, sodass α in n Schritten in α0 überführbar ist. Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 30 / 46 (4) Rechnung/Ergebnis: Konfigurationenfolgen (2) Man beachte: Zu jeder Konfiguration α gibt es genau eine maximale mit α beginnende Konfigurationenfolge. (Dies drückt gerade aus, dass die Maschine M deterministisch ist!) α ⇒0M α0 ⇔ α = α0 α ⇒1M α0 ⇔ α ⇒M α0 (⇔ α0 ist Nachfolgekonfiguration von α) ⇒∗M ist der reflexive und transitive Abschluss von ⇒M Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 31 / 46 (4) Rechnung/Ergebnis: Rechnungen Die Rechnung von M bei Eingabe ~x, RechnungM (~x), ist die (eindeutig bestimmte) maximale mit der Startkonfiguration αM (~x) beginnende Konfigurationenfolge. Ist RechnungM (~x) endlich, so terminiert (hält oder konvergiert) M bei Eingabe ~x. Andernfalls divergiert M bei Eingabe ~x (M terminiert nicht bzw. hält nicht bei Eingabe ~x). Terminiert M für jede Eingabe ~x ∈ (Σ∗ )m , so ist M total. Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 32 / 46 (4) Rechnung/Ergebnis: Von M berechnete (partielle) Funktion Die von M = (Σ, m, T, k , Γ, Z , zo , δ) berechnete partielle Funktion ϕM : (Σ∗ )m → T∗ ist definiert durch: ϕM (~x) ist genau dann definiert, wenn die M-Rechnung bei Eingabe ~x endlich ist (d.h. M bei Eingabe ~x terminiert). Ist α1 , . . . , αl die M-Rechnung bei Eingabe ~x, so ist ϕM (~x) = outM (αl ). NB: Die von M berechnete Funktion ϕM ist genau dann total, wenn die Maschine M total ist. Damit haben wir die Arbeitsweise der Turingmaschine M und die von dieser berechnete Funktion ϕM formal definiert. Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 33 / 46 3.3 TURINGMASCHINEN: Rechenzeit und Speicherplatz (Komplexität) Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 34 / 46 Rechenzeit der Turingmaschine M Anschaulich beschreibt die Rechenzeit einer Turingmaschine die Anzahl der durchgeführten Rechenschritte, wobei bei einer unendlichen langen Rechnung die Rechenzeit undefiniert ist. Mithilfe der formalen Beschreibung der Arbeitsweise von M lässt sich die Rechenzeit timeM (~x) von M bei Eingabe ~x wie folgt formal definieren. Terminiert M bei Eingabe ~x, so gilt für die Rechenzeit von M bei Eingabe ~x: timeM (~x) = Länge von RechnungM (~x) Terminiert M bei Eingabe ~x nicht, so ist timeM (~x) ↑ . Eine totale Turingmaschine M zur Berechnung einer 1-st. Wortfunktion heisst für eine Funktion t : N → N t(n)-zeitbeschränkt, falls für fast alle Eingaben x timeM (x) ≤ t(|x|) gilt. (D.h. t ist eine asymptotische obere Schranke für die worst-caseZeitkomplexität von M.) Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 35 / 46 Platzbedarf der Turingmaschine M Um den Platzbedarf von M zu bestimmen, legen wir zunächst die Grösse |α| einer M-Konfiguration α = (f , p, z) fest: |α| = max{n ≥ 0 : n = |p| ∨ f (n) 6= b ∨ f (−n) 6= b} Anschaulich: |α| ist der Betrag der Adresse des am weitesten von Feld 0 entfernten “benutzen” Feldes. Hiermit definieren wir: Terminiert M bei Eingabe ~x und ist α0 , . . . , αn die Rechnung von M bei dieser Eingabe, so gilt für den Platzbedarf von M bei Eingabe ~x : spaceM (~x) = max{|αp | : 0 ≤ p ≤ n}. Terminiert M bei Eingabe ~x nicht, so ist spaceM (~x) ↑. NB: Gilt spaceM (~x) = s, so befindet sich der relevante Bandteil (d.h. Arbeitsfeld und von b verschiedene Inschriften) während der Rechnung von M bei Eingabe ~x immer innerhalb des Adressintervalls [−s, +s]. Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 36 / 46 Komplexität Rechenzeit und Platzbedarf sind die wichtigsten Kostenfunktionen, die man der Komplexitätsanalyse von Algorithmen und Problemen zugrundelegt. Wir werden diese Konzepte im Kapitel über die Komplexitätstheorie näher betrachten. Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 37 / 46 3.4 Turing-Berechenbarkeit, Turing-Entscheidbarkeit und Turing-Aufzählbarkeit Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 38 / 46 Formalisierung des Berechenbarkeitsbegriffs mit Hilfe von Turingmaschinen Nachdem wir die Arbeitsweise einer Turingmaschine M und damit die von ihr berechnete (partielle) Funktion ϕM formal definiert haben, erhalten wir die folgenden Formalisierungen der Begriffe der (partiell) berechenbaren Funktion sowie der entscheidbaren bzw. aufzählbaren Menge. Dabei benutzen wir zur Formalisierung der Entscheidbarkeit und der Aufzählbarkeit die folgenden früher beobachteten Charakterisierungen dieser Begriffe mit Hilfe der (partiellen) Berechenbarkeit: Die Menge A ist genau dann entscheidbar, wenn die charakteristische Funktion cA von A berechenbar ist. Die Menge A ist genau dann aufzählbar, wenn A der Definitionsbereich einer partiell berechenbaren Funktion ist. Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 39 / 46 Turing-Berechenbarkeit von Wortfunktionen DEFINITION. Eine (partielle) Wortfunktion ϕ : (Σ∗ )m → T∗ ist (partiell) Turing-berechenbar, wenn es eineTuringmaschine M gibt, die ϕ berechnet, d.h. für die ϕ = ϕM gilt. Da die von einer Turingmaschine M berechnete Funktion ϕM genau dann total ist, wenn die Maschine M total ist (d.h. bei jeder Eingabe stoppt), ist eine (totale) Wortfunktion f : (Σ∗ )m → T∗ genau dann (total) Turing-berechenbar, wenn f von einer totalen Turingmaschine M berechnet wird, d.h. f = ϕM gilt. Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 40 / 46 Turing-Berechenbarkeit von Zahlfunktionen (1) Für (partielle) Funktionen vom Typ ϕ : Nm → N führt man die (partielle) Turing-Berechenbarkeit auf die (partielle) Turing-Berechenbarkeit der zugehörigen Wortfunktion ϕ̂ (die auf den Unärkodierungen n = 0n+1 der Zahlen n operiert) zurück. Hierbei ist die partielle Funktion ϕ̂ : ({0}∗ )m → {0}∗ definiert durch Db(ϕ̂) = {(n1 , . . . , nm ) : ϕ(n1 , . . . , nm ) ↓} und ϕ̂(n1 , . . . , nm ) = ϕ(n1 , . . . , nm ). DEFINITION. Eine (partielle) Funktion ϕ : Nm → N ist (partiell) Turing-berechenbar, wenn die zugehörige Wortfunktion ϕ̂ partiell Turing-berechenbar ist. Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 41 / 46 Turing-Berechenbarkeit von Zahlfunktionen (2) BEMERKUNG 1. Der Begriff der Turing-Berechenbarkeit von Zahlfunktionen hängt nicht von der gewählten Zahldarstellung ab. Wir könnten statt der (redundanten) Unärdarstellung n = 0n+1 von n auch die einfache Unärdarstellung ñ = 0n oder die Binärzahldarstellung Bin(n) oder die Dezimaldarstellung Dez(n) oder das (n + 1)-Wort (Σ,≤) wn eines beliebigen gegebenen Alphabets (Σ, ≤) wählen. Der Grund hierfür ist, dass für jede dieser Darstellungen die Übersetzungsfunktionen, die die gewählte Darstellung von n in die Unärdarstellung n bzw. umgekehrt die Unärdarstellung n von n in die gewählte Darstellung abbilden, partiell Turing-berechenbar sind und dass die Klasse der partiell Turing-berechenbaren Funktionen gegen Substitution (Komposition) abgeschlossen ist. Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 42 / 46 Turing-Berechenbarkeit von Zahlfunktionen (3) BEMERKUNG 2. Die partielle Turing-Berechenbarkeit von “gemischten Funktionen”, die auf Zahlen und Wörtern operieren, wie z.B. ϕ : (Σ∗ )m → N (betrachte z.B. die charakteristischen Funktion cL : Σ∗ → N einer Sprache L ⊆ Σ∗ ) führt man analog auf die partielle Turing-Berechenbarkeit von Wortfunktionen zurück, indem man die zu ϕ korrespondierende Wortfunktion ϕ̂ betrachtet, die man aus der Definition von ϕ erhält, indem man alle Zahlen durch die entsprechenden Unärdarstellungen ersetzt. So ist z.B. cL nach Definition genau dann Turing-berechenbar, wenn die Funktion ĉL mit ĉL (x) = cL (x) partiell Turing-berechenbar ist. (Wir werden dies im Folgenden stillschweigend verwenden.) Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 43 / 46 Turing-Entscheidbarkeit und Turing-Aufzählbarkeit von Sprachen TURING-ENTSCHEIDBARKEIT: DEFINITION. Eine m-dimensionale Sprache L ⊆ (Σ∗ )m ist Turing-entscheidbar, wenn ihre charakteristische Funktion Turing-berechenbar ist. TURING-AUFZÄHLBARKEIT: DEFINITION. Eine m-dimensionale Sprache L ⊆ (Σ∗ )m ist Turing-aufzählbar, wenn sie der Definitionsbereich einer m-st. partiell Turing-berechenbaren Wortfunktion über Σ ist. Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 44 / 46 Turing-Entscheidbarkeit und Turing-Aufzählbarkeit von Zahlmengen (1) Die Turing-Entscheidbarkeit und -Aufzählbarkeit von Zahlmengen wird dann - entsprechend wie bei Sprachen - auf die partielle Turing-Berechenbarkeit von Zahlfunktionen zurückgeführt: DEFINITION. Eine m-dimensionale Menge A ⊆ (N)m ist Turing-entscheidbar, wenn ihre charakteristische Funktion Turing-berechenbar ist. DEFINITION. Eine m-dimensionale Menge A ⊆ (N)m ist Turing-aufzählbar, wenn sie der Definitionsbereich einer m-st. partiell Turing-berechenbaren Funktion vom Typ Nm → N ist. Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 45 / 46 Turing-Entscheidbarkeit und Turing-Aufzählbarkeit von Zahlmengen (2) BEMERKUNG. Eine Menge A ⊆ (N)m ist genau dann Turing-entscheidbar (Turing-aufzählbar), wenn die zugehörige m-dimensionale Sprache LA = {(n1 , . . . , nm ) : (n1 , . . . , nm ) ∈ A} ⊆ ({0}∗ )m Turing-entscheidbar (Turing-aufzählbar) ist. Theoretische Informatik (SoSe 2017) 3. Turingmaschinen 46 / 46