Die Ackermannfunktion

Ähnliche Dokumente
2.5 Die Ackermannfunktion

Theoretische Informatik SS 03 Übung 5

Berechenbarkeit und Komplexität: Mächtigkeit von Programmiersprachen: WHILE- und LOOP-Programme

Berechenbarkeit und Komplexität: Mächtigkeit von Programmiersprachen: WHILE- und LOOP Programme

Mächtigkeit von LOOP-Programmen. Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen

1.4 Die Ackermannfunktion

LOOP-Programme: Syntaktische Komponenten

Berechenbarkeit und Komplexität Vorlesung 11

Übung zur Vorlesung Berechenbarkeit und Komplexität

Theoretische Informatik SS 03 Übung 3

Alternative Berechnungsmodelle

Theorie der Informatik

1.2 LOOP-, WHILE- und GOTO-Berechenbarkeit

THEORETISCHE INFORMATIK UND LOGIK

Syntax von LOOP-Programmen

Unvollständigkeit der Arithmetik

LOOP-Programme: Syntaktische Komponenten

Alternativ kann man auch die Differenz a n+1 a n betrachten:

THEORETISCHE INFORMATIK UND LOGIK

Berechenbarkeit und Komplexität Vorlesung 10

Hausaufgaben. zur Vorlesung. Vollständige Induktion. 1. Beweist folgende Formeln (zu beweisen ist nur die Gleichheit mit dem. i=1 (4 + i)!

Themen: Kubische Gleichungen, Ungleichungen, Induktion

Theoretische Informatik für Wirtschaftsinformatik und Lehramt

Mächtigkeit von WHILE-Programmen

Mächtigkeit von WHILE-Programmen

Der mathematische Beweis

Grundlagen Theoretischer Informatik 2 WiSe 2011/12 in Trier. Henning Fernau Universität Trier

Mächtigkeit von WHILE-Programmen

Proseminar Theoretische Informatik - WS07/08 - Prof. Helmut Alt. I. Einleitung Berechnungsmodelle LOOP, WHILE, GOTO, rekursive Funktionen

Primitiv rekursive und µ-rekursive Funktionen

Primitiv rekursive und µ-rekursive Funktionen

Def.: Die Menge der LOOP-Programme ist induktiv wie folgt definiert:

VL-11: LOOP und WHILE Programme I. (Berechenbarkeit und Komplexität, WS 2017) Gerhard Woeginger

Grundlagen: Algorithmen und Datenstrukturen

Wiederholung. Organisatorisches. VL-11: LOOP und WHILE Programme I. (Berechenbarkeit und Komplexität, WS 2017) Gerhard Woeginger

3 a) Berechnen Sie die normierte Zeilenstufenform der Matrix A = normierte Zeilenstufenform:

3 Die natürlichen Zahlen. Themen: Vollständige Induktion Varianten des Induktionsprinzips Induktion über den rekursiven Aufbau Die ganzen Zahlen

Elementare Beweistechniken

Turing-Maschinen: Ein abstrakes Maschinenmodell

Grundlagen der Theoretischen Informatik: Übung 10

Einführung in die Theoretische Informatik

Einführung in die Theoretische Informatik

Institut für Analysis WiSe 2018/2019 Prof. Dr. Dirk Hundertmark Dr. Markus Lange. Analysis 1. Aufgabenzettel 4

Musterlösung zum Weihnahchtsübungsblatt. Teil 1 von Martin Fabricius. Aufgabe 1

Primitiv rekursive Codier- und Decodierfunktionen

Berechenbarkeit. Script, Kapitel 2

Wir wollen nun die Behauptung beweisen, dass die Laufzeit von SELECT linear ist, also dass T (n) = O(n) gilt.

GTI. Hannes Diener. 18. Juni. ENC B-0123,

Vollständige Induktion

Arbeiten ( )

1.5 Turing-Berechenbarkeit

Zusammenfassung: Beweisverfahren

Mathematische Grundlagen (01141) SoSe 2010

Jede beschränkte und monotone Folge (a n ) n N konvergiert, d.h. es gibt ein a R, so dass lim

Brückenkurs Rechentechniken

Aufgaben und Lösungen zum Vorkurs Mathematik: Beweismethoden Für Mittwoch den

1.5 Turing-Berechenbarkeit

Kapitel 1. Grundlegendes

Übung Grundbegriffe der Informatik

Einführung, III: Verschiedenes

1 Das Prinzip der vollständigen Induktion

Zusammenfassung: Beweisverfahren

Übung zur Vorlesung Diskrete Mathematik (MAT.107) Blatt Beispiellösungen Abgabefrist:

Numerische Verfahren und Grundlagen der Analysis

Übungen zur Vorlesung. Einführung in Dynamische Systeme. Musterlösungen zu Aufgabenblatt 1

Übung Algorithmen und Datenstrukturen

Aufgaben und Lösungen zum Vorkurs Mathematik: Beweismethoden Für Donnerstag den x > 1 3x > 3 3x + 3 > 6 6x + 3 > 3x + 6.

Vollständige Induktion. Analysis I. Guofang Wang. Universität Freiburg

Theorie der Informatik

Satz 7. A sei eine Teilmenge des nichttrivialen Vektorraums (V,+, ). Dann sind die folgende Aussagen äquivalent.

HEUTE. Regeln für Programmabnahmen! Wiederholung: Regeln für Übungs- und Programmieraufgaben! Beweistechniken: vollständige Induktion, Widerspruch

Mathematischer Vorbereitungskurs für das MINT-Studium

Vorlesung. Vollständige Induktion 1

TECHNISCHE UNIVERSITÄT MÜNCHEN Zentrum Mathematik

Einführung in die Theoretische Informatik

GOTO simuliert Turingmaschinen

3 Vom Zählen zur Induktion

Mathematischer Vorbereitungskurs für das MINT-Studium

Grundbegriffe der Informatik

Logik für Informatiker

Algorithmenbegriff: Berechenbarkeit. Algorithmenanalyse. (Berechnung der Komplexität)

Aufgaben und Lösungen Ausarbeitung der Übungsstunde zur Vorlesung Analysis I

Monotonie von Folgen

Einführung in die Theoretische Informatik

Überblick. 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 Induktion und Rekursion 3.3 Boolsche Algebra

Logik für Informatiker

Rekursive und primitiv rekursive Funktionen. Ein maschinenunabhängiges formales Berechnungsmodell auf den natürlichen Zahlen

Vorkurs Beweisführung

Berechenbarkeitstheorie

Berechenbarkeit und Komplexität

Musterloesung: Uebung 3

Theorie der Informatik Einleitung. Theorie der Informatik Basisfunktionen und Einsetzung Primitive Rekursion. 14.

Grundlagen der Mathematik

3. Vortrag: Arithmetische Relationen und Gödelisierung

exponentielle Wachstumsphase Abbildung 1: Wachstumskurve einer Bakterienkultur

Elementare Beweismethoden

(a), für i = 1,..., n.

Transkript:

Die Ackermannfunktion Slide 1 Die Ackermannfunktion Hans U. Simon (RUB) Email: simon@lmi.rub.de Homepage: http://www.ruhr-uni-bochum.de/lmi

Die Ackermannfunktion Slide 2 Eine Frage zu Anfang Ist jede intuitiv berechenbare totale (= total definierte) Funktion f : k LOOP berechenbar? Im Jahre 1928 präsentierte Ackermann ein Gegenbeispiel. Seine Idee: Entwerfe eine Funktion, die schneller wächst als jede LOOPberechenbare Funktion.

Die Ackermannfunktion Slide 3 Die Ackermannfunktion Betrachte folgende induktiv definierte Funktion a : 2 : a(0, y) = y + 1 für alle y 0 a(x, 0) = a(x 1, 1) für alle x 1 a(x, y) = a(x 1, a(x, y 1)) für alle x, y 1 Die Definition besteht zwar nur aus drei Gleichungen, ist aber nicht ganz leicht zu durchschauen.

Die Ackermannfunktion Slide 4 Ackermannfunktion (fortgesetzt) Per Salami Taktik zerlegen wir a(x, y) in Scheiben A x : und schnuppern an A 0, A 1, A 2,.... A x (y) := a(x, y) : Offensichtlich gilt A 0 (y) = y + 1. Mit Induktion ergibt sich relativ leicht (s. Übung): A 1 (y) = y + 2 A 2 (y) = 2y + 3 A 3 (y) = 2 y+3 3 A 4 (y) = 2 2 2 }{{} 3 y+3 Zweien Die Folge beginnt harmlos, nimmt aber dann schnell an Fahrt auf.

Die Ackermannfunktion Slide 5 Macht die Definition von Ackermann Sinn? Wir beweisen durch doppelte Induktion, dass alle Funktionen A x Werte aus als Ergebnis liefern. Induktionsanfang: A 0 (y) = y + 1 Induktionsvoraussetzung: A x 1 (y) Folgerung: a(x, y) = A x (y) für alle y für alle y Induktionsschritt: Zum Studium von A x erfolgt erneut eine vollständige Induktion (diesmal nach y): Induktionsanfang: A x (0) = a(x, 0) = a(x 1, 1) = A x 1 (1) Induktionsvoraussetzung: A x (y 1) Induktionsschritt: A x (y) = a(x, y) = a(x 1, a(x, y 1)) = für alle x, y... {}}{ A x 1 (A x (y 1) ) }{{}..

Die Ackermannfunktion Slide 6 Ist die Ackermannfunktion berechenbar? Wir berechnen a(3, 0) mit Hilfe eines Kellerspeichers (Stapels): 0 1 0 1 1 1 0 2 0 1 1 0 2 2 1 0 0 0 3 0 1 2 1 0 0 0 3 1 0 0 0 0 0 4 3 2 1 1 1 1 1 1 0 0 0 0 0 0 0 5 Da wir mit brain power A 3 (y) = 2 y+3 3 herausgefunden hatten, hätten wir das Ergebnis auch einfacher bestimmen können: a(3, 0) = A 3 (0) = 2 0+3 3 = 8 3 = 5. Das Stapelverfahren (langsam wie es ist) funktioniert aber für alle möglichen Eingaben (x, y) 2.

Die Ackermannfunktion Slide 7 Die allgemeine Vorgehensweise beim Stapelverfahren Wir erinnern an die Definitionsgleichungen für die Ackermannfunktion: a(0, y) = y + 1 für alle y 0 a(x, 0) = a(x 1, 1) für alle x 1 a(x, y) = a(x 1, a(x, y 1)) für alle x, y 1 Das Stapelverfahren interpretiert die zwei obersten Operanden x, y des Stapel (y oben) als a(x, y) und manipuliert den Stapel wie folgt: Ersetze 0, y durch y + 1 (Stapel wird niedriger). Für x 1 ersetze x, 0 durch x 1, 1. Für x, y 1 ersetze x, y durch x 1, x, y 1 (Stapel wird höher). Dadurch wird a(x, y) stets gemäß der Definitionsgleichungen ausgewertet.

Die Ackermannfunktion Slide 8 Berechenbarkeit der Ackermannfunktion Das Stapelverfahren ist leicht auf einer Mehrband DTM implementierbar, die eines ihrer Bänder als Kellerspeicher verwendet. Folgerung: Die Ackermannfunktion ist berechenbar. In der Folge sagen wir einfach berechenbar statt Turing berechenbar (oder WHILE bzw. GOTO berechenbar ).

Die Ackermannfunktion Slide 9 Monotonie Eigenschaften der Ackermannfunktion Die folgenden Ungleichungen gelten für alle x, y : y < a(x, y) (1) a(x, y) < a(x, y + 1) (2) a(x, y + 1) a(x + 1, y) (3) a(x, y) < a(x + 1, y) (4) Insbesondere ist a(x, y) streng monoton wachsend in x und y.

Die Ackermannfunktion Slide 10 Beweis der 1. Ungleichung Zum Beweis von a(x, y) > y verwenden wir doppelte Induktion: Induktionsanfang: a(0, y) = y + 1 > y für alle y 0. Induktionsvoraussetzung: a(x 1, y) > y für alle y 0. Induktionsschritt: Analyse von a(x, y) erfolgt mit Induktion nach y. Induktionsanfang: a(x, 0) = a(x 1, 1) > 1 > 0. Induktionsvoraussetzung: a(x, y 1) > y 1 und somit a(x, y 1) y. Induktionsschritt: für alle y 0 gilt dann a(x, y) = a(x 1, a(x, y 1)) > a(x, y 1) y.

Die Ackermannfunktion Slide 11 Beweis der 2. Ungleichung Der Beweis von a(x, y + 1) > a(x, y) erfolgt durch eine Fallunterscheidung: Fall 1: x = 0. a(0, y + 1) = y + 2>y + 1 = a(0, y) Fall 2: x 1. a(x, y + 1) = a(x 1, a(x, y)) (1) > a(x, y)

Die Ackermannfunktion Slide 12 Beweis der 3. Ungleichung Zum Beweis von a(x + 1, y) a(x, y + 1) verwenden wir Induktion nach y: Induktionsanfang: a(x + 1, 0) = a(x, 1). Induktionsvoraussetzung: a(x + 1, y 1) a(x, y). Induktionsschritt: Nun ergibt sich a(x + 1, y) a(x, y + 1) wie folgt: a(x + 1, y) = a(x, a(x + 1, y 1) }{{} IV a(x,y) ) Definition der Ackermannfunktion a(x, a(x, y) ) Monotonie in y }{{} (1) y+1 a(x, y + 1) Monotonie in y

Die Ackermannfunktion Slide 13 Beweis der 4. Ungleichung Die Ungleichung a(x, y) < a(x + 1, y) ergibt sich direkt wie folgt: a(x, y) (2) < a(x, y + 1) (3) a(x + 1, y)

Die Ackermannfunktion Slide 14 Wachstumsfunktion zu LOOP Programmen Betrachte ein LOOP Programm P. P führt Anfangswerte n 0, n 1, n 2,... der Variablen in Endwerte über, die wir mit n 0, n 1, n 2,... bezeichnen. Folgende Funktion misst gewissermaßen, wie stark die Werte der Variablen durch Ausführung von P wachsen könnnen: f P (n) := max n i n i n i 0 In Worten: f P (n) ist die größtmögliche Summe der Variablenendwerte, wenn die Summe der Variablenanfangswerte durch n beschränkt ist. i 0

Die Ackermannfunktion Slide 15 Wachstumsfunktion (fortgesetzt) Wenn P eine Funktion g : berechnet, dann gilt offensichtlich g(n) f P (n), da die Anfangskonfiguration zu Eingabe n mit einer speziellen Wahl der Variablenanfangswerte, nämlich n 0 = 0, n 1 = n und n i = 0 für alle i 2, operiert, welche bei dem Maximum in der Definition von f P wird. berücksichtigt

Die Ackermannfunktion Slide 16 Verhältnis von Ackermannfunktion und LOOP Programmen Schlüsselresultat: Für jedes LOOP Programm P gilt: k 0, n 0 : f P (n) < A k (n) Die einem LOOP Programm P zugeordnete Funktion f P wächst demnach nicht schneller als die k te Schicht A k ( ) der Funktion a(, ). Folgerung: Die Ackermannfunktion ist nicht LOOP berechenbar.

Die Ackermannfunktion Slide 17 Widerspruchsbeweis zur Folgerung (heuchlerische) Annahme: a(x, y) ist LOOP berechenbar. Dann ist auch g(n) := a(n, n) LOOP berechenbar, sagen wir mit LOOP Programm P. Es gilt dann g(n) f P (n) für alle n 0. Wähle dann k so aus, dass f P (n) < A k (n) für alle n 0. Für n = k ergibt sich nun ein Widerspruch: g(k) f P (k)<a k (k) = a(k, k) = g(k)

Die Ackermannfunktion Slide 18 Beweis des Schlüsselresultates Der Beweis ist aufgebaut wie folgt: Reduktion des Schlüsselresultates auf sogenannte einfache LOOP Programme. Beweis des Schlüsselresultates für einfache LOOP Programme mit Hilfe von struktureller Induktion.

Die Ackermannfunktion Slide 19 Einfache LOOP Programme Ein LOOP Programm heißt einfach gdw es die folgenden Bedingungen erfüllt: Anweisungen der Form x i := x j ± c verwenden nur Konstanten c {0, 1}. Bei Anweisungen der Form LOOP x i DO Q END wird Variable x i nicht innerhalb von Q verwendet. Jedes LOOP Programm ist in ein äquivalents einfaches LOOP Programm transformierbar: Eine Anweisung x i := x j ± c mit c 2 kann durch c fache Hintereinanderausführung von x i := x j ± 1 simuliert werden. Eine Anweisung der Form LOOP x i DO Q END, die x i innerhalb Q verwendet, kann statt x i eine bisher unbenutzte Variable y verwenden, wobei der LOOP Anweisung mit Laufvariable y die Wertzuweisung y := x i + 0 vorangeschaltet wird.

Die Ackermannfunktion Slide 20 Induktionsanfang P hat die Form x i := x j ± c mit c {0, 1}. Das größte Wachstum wird erzielt für Variablenanfangswerte n i = 0, n j = n und die Anweisung x i := x j + 1, wobei sich Variablenendwerte n i = n + 1, n j = n ergeben (restliche Variablen auf Null). Somit gilt: f P (n) 2n + 1<2n + 3 = A 2 (n).

Die Ackermannfunktion Slide 21 1. Induktionsschritt P hat die Form P 1 ; P 2. Induktionsvoraussetzung: Es gibt Konstanten k 1, k 2 so dass f P1 (n) < A k1 (n) und f P2 (n) < A k2 (n) für alle n 0. Offensichtlich gilt f P (n) f P2 (f P1 (n)) IV < A k2 (f P1 (n)) IV < A k2 (A k1 (n)) = a(k 2, a(k 1, n)). Fall 1: k 1 k 2 + 1. a(k 2, a(k 1, n)) a(k 2, a(k 2 +1, n)) = a(k 2 +1, n+1) a(k 2 +2, n) = A k2 +2(n) Fall 2: k 1 > k 2 + 1. a(k 2, a(k 1, n))<a(k 1 1, a(k 1, n)) = a(k 1, n + 1) a(k 1 + 1, n) = A k1 +1(n) Für k := max{k 1 + 1, k 2 + 2} gilt dann f P (n) < A k (n) für alle n 0.

Die Ackermannfunktion Slide 22 2. Induktionsschritt P hat die Form LOOP x i DO Q END, wobei x i in Q nicht verwendet wird. Induktionsvoraussetzung: Es gibt eine Konstante k so dass f Q (n) < A k (n) für alle n 0. Wähle Variablenanfangswerte n 0, n 1, n 2,... mit f P (n) = j 0 n i und setze m := n i (Anfangswert von x i, der zu maximaler Summe der Variablenendwerte führt). Dann gilt Erkläre! f P (n) f m Q (n m) + m. Ausgehend von dieser Ungleichung und f Q (n) < A k (n) werden wir f P (n) < A k+1 (n), (5) nachweisen, was den Induktionsbeweis abschließt.

Die Ackermannfunktion Slide 23 High Noon bei Familie Ackermann f P (n) fq m (n m) + m A k (f m 1 Q (n m) + (m 1) A 2 k(f m 2 Q (n m)) + (m 2) A m k (n m) = A m 2 k (a(k, a(k, n m))) < A m 2 k (a(k, a(k + 1, n m)) ) }{{} =a(k+1,n m+1) = A m 3 k (a(k, (a(k + 1, n m + 1)) ) }{{} =a(k+1,n m+2) = a(k + 1, n 1) < a(k + 1, n) = A k+1 (n)