Übung zur Vorlesung Berechenbarkeit und Komplexität

Ähnliche Dokumente
Theoretische Informatik SS 03 Übung 3

Die Ackermannfunktion

LOOP-Programme: Syntaktische Komponenten

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

Syntax von LOOP-Programmen

Komplexität von Algorithmen

Probleme aus NP und die polynomielle Reduktion

1.4 Die Ackermannfunktion

Mächtigkeit von WHILE-Programmen

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Übung zur Vorlesung Berechenbarkeit und Komplexität

Lösung zur Übung für Analysis einer Variablen WS 2016/17

Vorkurs: Mathematik für Informatiker

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

2. Algorithmenbegriff

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

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Probeklausur zur Vorlesung Berechenbarkeit und Komplexität

Theoretische Informatik 1

2. Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung

Achtung: Groß O definiert keine totale Ordnungsrelation auf der Menge aller Funktionen! Beweis: Es gibt positive Funktionen f und g so, dass

Einführung in die Informatik I

Grundlagen der Theoretischen Informatik Musterlösungen zu ausgewählten Übungsaufgaben

Komplexität von Algorithmen

Komplexität. G. Zachmann Clausthal University, Germany Leistungsverhalten von Algorithmen

Vorlesung. Vollständige Induktion 1

Einführung in die Theoretische Informatik

Algorithmen II Vorlesung am

Informatik I Komplexität von Algorithmen

Student: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum:

= k 0+k 0 ( ). Wir addieren (0 k) zu den Seiten der Gleichung ( ): 0 = k 0.

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens

LOOP-Programme: Syntaktische Komponenten

Übung Grundbegriffe der Informatik

Diskrete Strukturen Kapitel 2: Grundlagen (Beweise)

3. Binäre Suchbäume. 3.1 Natürliche binäre Suchbäume. EADS 3.1 Natürliche binäre Suchbäume 78/598 ľernst W. Mayr

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20.

1 Modulare Arithmetik

1 Zahlentheorie. 1.1 Kongruenzen

1.2 LOOP-, WHILE- und GOTO-Berechenbarkeit

Grundlagen der Theoretischen Informatik

3 Vom Zählen zur Induktion

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6

1.2 Eigenschaften der ganzen Zahlen

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

Kanonische Primfaktorzerlegung

Höhere Mathematik I für die Fachrichtung Informatik. Lösungsvorschläge zum 10. Übungsblatt. < 0 für alle t > 1. tan(x) tan(0) x 0

5 Grundlagen der Zahlentheorie

3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

Theoretische Informatik SS 03 Übung 4

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik

Themen: Kubische Gleichungen, Ungleichungen, Induktion

Lösungsvorschlag Serie 2 Rekursion

Primzahlzertifikat von Pratt

Amortisierte Analysen

Effiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra

Abschnitt 18: Effizientes Suchen in Mengen

Kapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte

Vorkurs: Mathematik für Informatiker

4.4.1 Statisches perfektes Hashing. des Bildbereichs {0, 1,..., n 1} der Hashfunktionen und S U, S = m n, eine Menge von Schlüsseln.

Algorithmen und Datenstrukturen

TECHNISCHE UNIVERSITÄT MÜNCHEN

Übungsblatt 6. Vorlesung Theoretische Grundlagen der Informatik im WS 16/17

Dezimaldarstellung ganzer Zahlen (Division mit Rest) 1 Division mit Rest in der Hochschule

Induktion und Rekursion

Übungsblatt 2 - Lösung

Prof. Dr. H. Brenner Osnabrück SS Zahlentheorie. Vorlesung 3. Der euklidische Algorithmus

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

4. ggt und kgv. Chr.Nelius: Zahlentheorie (SS 2007) 9

Nachklausur Bitte in Druckschrift leserlich ausfüllen!

Vorlesung 4. Tilman Bauer. 13. September Wir befassen uns in dieser Vorlesung noch einmal mit Mengen.

Übung zu Grundbegriffe der Informatik. Simon Wacker. 15. November 2013

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

Algorithmen & Programmierung. Rekursive Funktionen (1)

(Prüfungs-)Aufgaben zur Berechenbarkeits- und Komplexitätstheorie

Operatoren (1) Operatoren (2)

Grundlagen: Algorithmen und Datenstrukturen

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem

Punktlokalisierung. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK

Theoretische Informatik: Berechenbarkeit und Formale Sprachen

Theorie der Informatik

2. Teilbarkeit. Euklidischer Algorithmus

Vorlesung Algorithmische Geometrie Konvexe Hülle im R 3

Kapitel 3. Natürliche Zahlen und vollständige Induktion

Einführung in die Theoretische Informatik

Lenstras Algorithmus für Faktorisierung

Praktikum zur Vorlesung Einführung in die Programmierung WS 14/15 Blatt 3

Mathematik und Logik

Unentscheidbare Probleme: Diagonalisierung

abgeschlossen unter,,,, R,

Kostenmodell. Daniel Graf, Tobias Pröger. 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016)

= 7 (In Binärdarstellung: = 0111; Unterlauf) = -8 (In Binärdarstellung: = 1000; Überlauf)

WS 2009/10. Diskrete Strukturen

Chr.Nelius: Zahlentheorie (WS 2006/07) ggt und kgv

Rekursionsanfang, Rekursionsschritt oder äquivalente Antworten. (z.b.: Abbruchbedingung (= Basisfall), eigentliche Rekursion (= Selbstaufruf))

Übersicht Datenstrukturen und Algorithmen. Literatur. Algorithmus: Wikipedia Definition. Vorlesung 1: Einführung. Prof. Dr.

Resolutionsalgorithmus

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 3, Donnerstag 6.

Transkript:

RWTH Aachen Lehrgebiet Theoretische Informatik Reidl Ries Rossmanith Sanchez Tönnis WS 2012/13 Übungsblatt 7 26.11.2012 Übung zur Vorlesung Berechenbarkeit und Komplexität Aufgabe T15 Entwickeln Sie ein WHILE-Programm, daß den Wert 2 x 1 berechnet. Analysieren Sie die Laufzeit ihres Programmes im uniformen und im logarithmischen Kostenmaß. Lösungsvorschlag. Unter der Annahme, daß alle Variablen die nicht zur Eingabe gehören mit 0 initialisiert sind, berechnet das folgende Programm 2 x 1 : Eingabe: x 1 N x 2 := x 2 + 1; WHILE x 1 0 DO x 3 := x 2 + 0; WHILE x 3 0 DO x 2 := x 2 + 1; x 3 := x 3 1 ; x 1 := x 1 1 ; x 0 := x 2 + 0 Ausgabe: x 0 Das aktuelle Zwischenergebnis steht immer in x 2 während x 1 und x 3 als Schleifenvariablen genutzt werden. Im uniformen Kostenmaß beträgt die Laufzeit O(2 n ). Im logarithmischen Kostenmaß kommt ein Faktor n = log(2 n ) hinzu, da die Additionen x = x + 1 hier log(x) Zeit benötigen. Aufgabe T16 Die Ackermannfunktion A : N 2 N wurde in der Vorlesung folgendermaßen definert: A(0, m) = m + 1 für m 0 A(n + 1, 0) = A(n, 1) für n 0 A(n + 1, m + 1) = A(n, A(n + 1, m)) für n, m 0 a) Zeigen Sie, daß die Ackermannfunktion für alle Parameter n, m N terminiert. b) Beweisen Sie durch Induktion nach n folgende Aussage: A(n, m) A(n + 1, m 1) für alle m 0 Hinweis: Nutzen Sie die Monotonie der Ackermannfunktion in beiden Parametern aus.

Lösungsvorschlag. a) In jedem Schritt wird entweder m verringert oder m erhöht und n verringert. Jedes Mal wenn m Null erreicht, wird n verringert, also muss auch n irgendwann Null erreichen. Man beachte allerdings daß bei Verringerung von n keine obere Schranke für das Wachstum von m in den Funktionsaufrufen gibt. b) Induktionsanfang: Nach Definition gilt A(n + 1, 0) := A(n, 1) also insbesondere A(n, 1) A(n + 1, 0). Induktionsschritt: Sei die Behauptung jetzt schon für n 1 bewiesen. Aufgrund der Definition A(0, m) := m + 1 und der Monotonie im ersten Parameter gilt m + 1 A(n, m) für alle m 0. Damit gilt A(n, m+1) A(n, A(n, m)) A(n, A(n+1, m 1)) = A(n+1, m), was zu zeigen war. Dabei geht in die erste Ungleichung die Monotonie im zweiten Parameter ein, in die zweite die Induktionsvoraussetzung, und in die letzte Gleichung die Definition. Aufgabe T17 Sind WHILE-Programme immer noch Turing-mächtig, wenn die Zuweisungen x i := x j +c nur noch für c { 1, 0} erlaubt sind? Lösungsvorschlag. Wir zeigen für folgende (WHILE-berechenbare) Funktion, daß sie nicht durch die eingeschränkten WHILE-Programme berechenbar ist: f : N N, f(n) = 1 für alle n N. Dies geht sehr einfach, in dem man per Induktion zeigt: Wenn alle Variablen zu Beginn eines WHILE-Programms mit 0 belegt sind, gilt dies auch nach der Ausführung. Induktionsanfang: Das WHILE-Programm hat die Form x i := x j + c für c { 1, 0}. Hier gilt die Aussage offensichtlich. Induktionsschluss: Fall 1: Das WHILE-Programm hat die Form WHILE x i 0 DO P. P wird offensichtlich nicht ausgeführt, also ändert sich die Belegung der Variablen nicht. Fall 2: Das WHILE-Programm hat die Form P 1 ; P 2. Weder P 1 noch P 2 ändert die Belegung der Variablen, also gilt auch hier die Aussage Somit können mit den eingeschränkten WHILE-Programmen höchstens Funktionen mit f(0) = 0 berechnet werden. Aufgabe H16 (8 Punkte) Betrachten Sie die nachfolgenden Varianten des Euklidischen Algorithmus (entnommen aus Wikipedia) zur Berechnung des größten gemeinsamen Teilers zweier natürlicher Zahlen a und b.

Variante 1: Eingabe: a, b N While a b If a > b then a := a b else b := b a End While Ausgabe: a Variante 2: Eingabe: a, b N While b > 0 r := a mod b a := b b := r End While Ausgabe: a Kommentar Der euklidische Algorithmus berechnet den größten gemeinsamen Teiler von zwei natürlichen Zahlen a und b. Die in der Aufgabenstellung angegebenen Varianten beruhen auf dem folgenden Lemma. Lemma 1 Falls b 0, dann gilt ggt(a, b) = ggt(a b, b) ggt(a, b) = ggt(a mod b, b). Wir werden im Folgenden o.b.d.a. annehmen, daß a b gilt. 1. Bestimmen Sie eine möglichst scharfe untere Schranke für die Worst-Case-Laufzeit von Variante 1 im uniformen Kostenmaß. Lösungsvorschlag Betrachte den Fall b = 1. Wie oben angenommen gilt a b. Da entweder a = b oder a > b gilt, wird in jedem Durchlauf der WHILE-Schleife wird, die Anweisung a := a b ausgeführt. Das heißt aber, daß in jeder Iteration Eins von a subtrahiert wird und somit die WHILE-Schleife Ω(a) mal ausgeführt wird. Folglich ist die Worst- Case-Laufzeit von Variante 1 durch Ω(a) nach unten beschränkt. 2. Bestimmen Sie eine möglichst scharfe obere Schranke für die Worst-Case-Laufzeit von Variante 2 im uniformen Kostenmaß. Lösungsvorschlag Variante 2 berechnet in jeder Iteration der WHILE-Schleife zunächst r = a mod b und setzt dann a := b und b := r. Da wie oben angenommen a b gilt, lässt sich der Wert von r nach der ersten Runde durch r = a mod b a abschätzen (betrachte 2 hierzu den Fall b = a/2 + 1). Somit sind nach zwei Runden sowohl a als auch b nur noch höchstens halb so groß wie die größere der beiden Eingaben, d.h. hier a. Nach 2 k Runden gilt also a, b a. Die Anzahl der Iterationen beträgt somit 2 k maximal 2 log 2 (a). Damit berechnet Variante 2 den größten gemeinsamen Teiler von a und b mit höchstens O(log(a)) vielen Modulo-Operationen. Folglich ist die Worst-Case-Laufzeit von Variante 2 durch O(log(a)) nach oben beschränkt. 3. Nutzen Sie Ihre Abschätzungen, um zu zeigen, daß sich die uniformen Worst-Case- Laufzeiten beider Varianten durch einen exponentiellen Faktor unterscheiden.

Lösungsvorschlag Wie in den Aufgabenteilen oben gezeigt, hat Variante 1 eine Worst-Case-Laufzeit von Ω(a), Variante 2 hingegen eine von O(log(a)). Die Eingabelängen von a und b können durch log(a) bzw. log(b) abgeschätzt werden. Da wir angenommen haben, daß a b gilt, ist die Eingabelänge folglich durch 2 log(a) beschränkt. Im Vergleich zur Eingabelänge benötigt Variante 2 also polynomielle und Variante 1 exponentielle Zeit. 4. Stimmt diese Aussage auch bezüglich der Laufzeiten im logarithmischen Kostenmaß? Lösungsvorschlag Ja, die Aussage stimmt weiterhin. Der Zeitaufwand im logarithmischen Kostenmaß zur Berechnung von einer Zuweisung, eines Vergleichs oder einer Subtraktion zweier Zahlen a, b N mit a b ist O(log(a)). Die Berechnung von (a mod b) kann mit Hilfe einer Division, einer Multiplikation und einer Subtraktion durchgeführt werden. Eine Multiplikation und eine Division benötigen nach der Schulmethode O(log 2 (a)) viele Schritte. Demnach wird der Aufwand von Variante 2 im Vergleich zum uniformen Kostenmaß also höchstens um einen polylogarithmischen Faktor vergrößert. Der exponentielle Gap bleibt also bestehen. Aufgabe H17 (6 Punkte) Geben Sie ein LOOP-Programm an, daß folgende Sprache akzeptiert: L = {w {0, 1} w 0 = w 1 } wobei w i die Anzahl der Stellen in w angibt, an denen die Ziffer i steht. Gehen Sie davon aus, daß die Eingabe in der Variable x 1 als Binärzahl kodiert steht und das zudem die Länge der Eingabe in der Variable x 2 zu finden ist. Wenn der Wert x 1 in der Sprache L enhalten ist, soll am Ende des Programs x 0 eine Eins enthalten, ansonsten Null. Nehmen Sie an, daß die Subtraktion von Variablen mit dem Wert 0 wiederum 0 ergibt (Variablen können also nie negative Werte enthalten). Zudem setzen wir voraus, daß die Eingabe x 1 nie das leere Wort enthält.

Lösungsvorschlag. Eingabe: x 1 N, x 2 N x 6 := 0; // Anzahl Nullen x 7 := 0; // Anzahl Einzen LOOP x 2 DO x 4 := 1; x 5 := 0; x 3 := x 1 ; LOOP x 3 DO x 10 := 1; x 11 := x 4 ; LOOP x 11 DO x 10 := 0; x 4 := 0; x 5 := 1; x 1 := x 1 1; LOOP x 10 DO x 11 := x 5 ; LOOP x 11 DO x 4 := 1; x 5 := 0; LOOP x 4 DO // Gerade x 6 := x 6 + 1; LOOP x 5 DO // Ungerade x 7 := x 7 + 1; x 8 := x 6 ; x 9 := x 7 ; LOOP x 7 DO x 8 := x 8 1; LOOP x 6 DO x 9 := x 9 1; x 0 := 1; LOOP x 8 DO x 0 := 0; LOOP x 9 DO x 0 := 0;

Ausgabe: x0