Übungen Theoretische Informatik Prof. Dr. Jürgen Cleve Inhaltsverzeichnis 1 Übung Grundlagen 1 2 2 Übung Grundlagen 2 3 3 Übung Automaten I DFA 4 4 Übung Automaten II NFA 5 5 Übung Automaten III Kellerautomaten 6 6 Übung Automaten IV DFA/NFA/Kellerautomaten 7 7 Übung Automaten V Turingmaschinen 8 8 Übung Automaten VI 9 9 Übung Automaten und Sprachen 10 10 Übung Aussagen-Logik I 11 11 Übung Aussagen-Logik II 12 12 Übung Aussagen-Logik III 14 13 Übung Komplexität 16 14 Übung Berechenbarkeit & Entscheidbarkeit 17 1 1 Übung Grundlagen 1 1. Welche Aussagen sind wahr? (a) ∅⊂∅ (b) ∅∈∅ (c) ∅ ⊂ {∅} (d) ∅ ∈ {∅} (e) {a, b} ∈ {a, b, {a, b}} (f ) {a, b} ⊂ {a, b, {a, b}} (g) A ∩ (A ∪ B) = A Begründen Sie Ihre Aussagen! 2. Sind folgende Mengen abgeschlossen bez. der folgenden Operationen? Begründen Sie Ihre Aussagen! (a) Ungerade Zahlen / Multiplikation (b) Positive ganze Zahlen / Division (c) Negative ganze Zahlen / Subtraktion (d) Negative ganze Zahlen / Multiplikation 3. Bilden Sie das Kreuzprodukt: 4. Sei diese Relation gegeben: Finden Sie für R {1} × {1, 2} × {1, 2, 3} R = {(a, b), (c, f ), (f, f ), (f, b), (d, b), (d, d)} eine graphische Darstellung. Wir denieren eine neue Relation (x, y) ∈ R ? R ⇔ R?R wie folgt: Es existiert einz , so dass : (x, z) ∈ R und (z, y) ∈ R Kommt Ihnen diese Verknüpfung bekannt vor? Welche Operation ist das aus Datenbank-Sicht? Finden Sie die graphische Darstellung für die Relationen : R?R R ∩ (R ? R) 5. Finden Sie typische Beispiele für Äquivalenz- bzw. Ordnungsrelationen! 2 Übung Grundlagen 2 1. Sei R (als 2-stellige Relation) die leere Menge. Beispielsweise ist folgende Relation über der Grundmenge der natürlichen Zahlen leer: R = {(x, y) | x, y ∈ IN, x · y = −1} = ∅ Ist R reexiv, symmetrisch, antisymmetrisch, transitiv? Begründen Sie Ihre Aus- sagen! 2. Sind die folgenden Funktionen bezüglich den angegebenen Funktionen abgeschlossen? • Natürliche Zahlen / Addition • Reelle Zahlen / Quadrieren • Reelle Zahlen / Wurzelziehen • Menschen / mutter_von 3. Beschreiben Sie die Sprache (aus a und b), die nur Strings enthält, wo beliebig viele a, gefolgt von beliebig vielen b, wiederum gefolgt von mindestens einem a, durch einen Ausdruck! Z.B. wird die Menge aller nichtleeren Strings (über a und + b) durch den Ausdruck (a ∪ b) beschrieben. 4. Bestimmen Sie die Anzahl der Knoten eines Binärbaumes mit b Blättern, bei dem jeder Knoten den Ausgangsgrad 2 oder 0 hat! 5. Wahr oder unwahr? Ein Binärbaum der Tiefe t hat höchstens den Sie Ihre Aussage! 2t Blätter. Begrün- 3 Übung Automaten I DFA 1. Wir wollen ein Programm schreiben, welches eine Geldkarte sperrt, wenn man dreimal hintereinander eine falsche PIN eingibt. Dies können wir mit einem DFA lösen. Sei b das Symbol für die Eingabe einer korrekten PIN, a stehe für ei- ne falsche PIN. Programmieren Sie also einen DFA, der alle Wörter (über dem Alphabet {a, b}) akzeptiert, die nicht 3 aufeinanderfolgende a enthalten. 2. Programmieren Sie einen DFA, der alle Wörter (über dem Alphabet {a, b, c}) akzeptiert, die mindestens ein a enthalten. Finden Sie für diese Sprache einen regulären Ausdruck. 3. Programmieren Sie einen DFA, der alle Wörter (über dem Alphabet {a, b}) akzeptiert, die nicht genau 3 aufeinanderfolgende a enthalten. Finden Sie für diese Sprache einen regulären Ausdruck. JFLAP Version Bitte benutzen Sie das Paket JFLAP für Automaten (dies ist relativ selbsterklärend), und zwar die unter StudIP (Informationen) gespeicherte Version von JFLap (7.0). Hinweise Endliche Automaten in JFLAP • JFLAP läuft sowohl unter Unix/Linux als auch unter Windows. Das komplette Paket nden Sie in StudIP unter Informationen. • Die Unterschiede zwischen der Darstellung der DFA in der Vorlesung und JFLAP sind in folgender Tabelle gegeben: Vorlesung JFLAP Deniertheit Totalität Partialität verarbeitete Zeichen nur 1 beliebig viele (einschl. e) leerer String e λ Bezüglich der Strings. NFA oder gibt es nur den Unterschied in der Darstellung des leeren 4 Übung Automaten II NFA 1. Programmieren Sie einen NFA, der alle Wörter (über dem Alphabet {a, b, c}) akzeptiert, die kein a enthalten. 2. Programmieren Sie einen NFA, der alle Wörter (über dem Alphabet {a, b}) akzeptiert, die nur aus den Bausteinen aa, ab und aba aufgebaut sind, also z.B. aaabaabaabaa, abaabaaa. 3. Programmieren Sie einen NFA, der alle Wörter (über dem Alphabet {a, b}) akzeptiert, die mindestens einmal (mindestens) 3 aufeinanderfolgende a oder min- destens einmal den String aab enthalten. 4. Programmieren Sie einen NFA, der alle Wörter (über dem Alphabet {a, b}) akzeptiert, die entweder nur aus ab- oder nur aus aba-Bausteinen aufgebaut sind. Folgende Strings sind korrekt: abaabaaba, e, ababab. Ein Mischen von ab- und aba-Blöcken ist also nicht erlaubt. 5. Wandeln Sie alle NFAs in DFAs um. (Sie sollen keinen eigenen DFA entwickeln, sondern mit der in der Vorlesung vorgestellten Technik aus den NFAs DFAs machen.) 6. Finden Sie für alle Sprachen einen regulären Ausdruck. JFLAP Version Bitte benutzen Sie das Paket JFLAP für Automaten (dies ist relativ selbsterklärend), und zwar die unter StudIP (Informationen) gespeicherte Version von JFLap (7.0). Hinweise Endliche Automaten in JFLAP • JFLAP läuft sowohl unter Unix/Linux als auch unter Windows. Das komplette Paket nden Sie in StudIP unter Informationen. • Die Unterschiede zwischen der Darstellung der DFA in der Vorlesung und JFLAP sind in folgender Tabelle gegeben: Vorlesung JFLAP Deniertheit Totalität Partialität verarbeitete Zeichen nur 1 beliebig viele (einschl. e) leerer String e λ Bezüglich der Strings. NFA oder gibt es nur den Unterschied in der Darstellung des leeren 5 Übung Automaten III Kellerautomaten 1. Programmieren Sie einen Kellerautomaten, der alle Wörter (über dem Alphabet {a, b, c}) akzeptiert, die eine gerade Anzahl von Buchstaben enthalten, z.B. abcb. 2. Programmieren Sie einen Kellerautomaten, der alle Wörter (über dem Alphabet {a, b}) akzeptiert, die eine gleiche Anzahl von a und b enthalten. JFLAP Version Bitte benutzen Sie das Paket JFLAP für Automaten (dies ist relativ selbsterklärend), und zwar die unter StudIP (Informationen) gespeicherte Version von JFLap (7.0). Hinweise Kellerautomaten in JFLAP • JFLAP läuft sowohl unter Unix/Linux als auch unter Windows. Das komplette Paket nden Sie in StudIP unter Informationen. • Die Unterschiede zwischen der Darstellung der Kellerautomaten in der Vorle- sung und JFLAP sind in folgender Tabelle gegeben: Vorlesung JFLAP Keller zu Beginn leer Z leerer String e λ Wann wird String ak- Finalzustand zeptiert? erreicht und Keller leer oder Finalzustand erreicht ODER Keller leer • ACHTUNG: Stellen Sie in JFLAP ein, dass der Kellerautomat im Finalzustand akzeptieren soll. Dass der Keller leer ist, kann in JFLap leider nicht zusätzlich gefordert werden. 6 Übung Automaten IV DFA/NFA/Kellerautomaten 1. Finden Sie eine Grammatik (kontext-frei) und einen Kellerautomaten für die R ∗ Sprache {ww |w ∈ {a, b} } ! 2. Finden Sie eine(n) DFA/NFA/Kellerautomaten, der die Sprache {w|w ∈ {a, b}∗ , w enthält doppelt so viele a wie b} akzeptiert ! Finden Sie für diese Sprache auch eine Grammatik. 3. Wandeln Sie den folgenden NFA in einen DFA um. Nutzen Sie dazu die von uns entwickelte Technik zur automatischen Umwandlung. JFLAP Version Bitte benutzen Sie das Paket JFLAP für Automaten (dies ist relativ selbsterklärend), und zwar die unter StudIP (Informationen) gespeicherte Version von JFLap (7.0). 7 Übung Automaten V Turingmaschinen 1. Programmieren Sie eine Turing-Maschine, die in einem Wort (über dem Alphabet {a, b, c}) a zu b umwandelt und umgekehrt. Die c sollen nicht geändert werden. Der Leseschreibkopf steht zu Beginn und am Schluss auf dem ersten Zeichen der Zeichenkette. 2. Programmieren Sie eine Turing-Maschine, die Multiplikation mit 2 ausführt. Wählen Sie dazu als Darstellung für die Zahlen einerseits die Darstellung durch eine entsprechende Anzahl von x, zum anderen eine Form Ihrer Wahl. Der Lese- schreibkopf steht auf dem linkesten Zeichen. Dort soll er auch am Schluss stehen. 3. Programmieren Sie eine Turing-Maschine, die die Sprache {a scheidet! Schreiben Sie y für YES oder n b c |n ∈ IN} n n n ent- für NO als Antwort auf das Band! n n n Überlegen Sie zunächst, welche Zeichenketten dem Muster a b c genügen. Der Leseschreibkopf steht auf dem linkesten Zeichen. Dort soll er auch am Schluss stehen. JFLAP Version Bitte benutzen Sie das Paket JFLAP für Automaten (dies ist relativ selbsterklärend), und zwar die unter StudIP (Informationen) gespeicherte Version von JFLap (7.0). Hinweise Turingmaschinen in JFLAP • JFLAP läuft sowohl unter Unix/Linux als auch unter Windows. Das komplette Paket nden Sie in StudIP unter Informationen. • Die Unterschiede zwischen der Darstellung der Turingmaschinen in der Vorle- sung und JFLAP sind in folgender Tabelle gegeben: Vorlesung Zustandsübergang deterministisch JFLAP (totale indeterministisch (Relation) Funktion) Füllzeichen Haltezustand # h 2 beliebig viele 8 Übung Automaten VI 1. Finden Sie einen Automaten, der die Sprache {w|w ∈ {a, b, c}∗ , w enthält 2 × so viele a wie b und 3 × so viele c wie b} entscheidet! 2. Sei als Zahlendarstellung die Binärdarstellung gegeben, also z.B. 110 für 6. Ent- wickeln Sie eine Turingmaschine, die 2 Zahlen addiert. Z.B. soll die TM bei Eingabe von 111x101 als Resultat 1100 liefern. (Hier wurde x als Trennzeichen für die beiden Summanden verwendet.) Erläutern Sie Ihre Turing-Maschine. 110 für 6. Ent11) multipliziert. 3. Sei als Zahlendarstellung die Binärdarstellung gegeben, also z.B. wickeln Sie eine Turingmaschine, die eine Binärzahl mit 3 (binär Erläutern Sie Ihre Turing-Maschine. 4. Wir betrachten die Sprache ist die Anzahl von a, die in L = {uv| |u|0 = 1 und |v|1 = 1, Σ = {0, 1}}. |x|a x enthalten sind. Finden Sie dafür einen regulären Ausdruck, einen DFA und einen NFA. JFLAP Version Bitte benutzen Sie das Paket JFLAP für Automaten (dies ist relativ selbsterklärend), und zwar die unter StudIP (Informationen) gespeicherte Version von JFLap (7.0). 9 Übung Automaten und Sprachen 1. Testen Sie die in der Vorlesung vorgestellten Beispiele für FLEX und BISON. Sie nden die Beispiele LINES.L und PAS2.L sowie POL.Y im Verzeichnis: http://www.wi.hs-wismar.de/~cleve/vorl/ti2027/exyacc/ 2. Entwickeln Sie mittels BISON verwenden Sie POL.Y als Vorlage einen Ta- schenrechner, der von links nach rechts rechnet und Klammern zulässt. Die Eingabe soll durch Enter abgeschlossen werden. Hinweis Diese Beispiele laufen unter LINUX/UNIX. Es gibt aber auch Windows-Versionen von FLEX und YACC/Bison. Hier nden Sie einige UNIX-Kommandos: http://www.wi.hs-wismar.de/~cleve/vorl/ti2027/unixcomm.pdf. 10 Übung Aussagen-Logik I 1. Übersetzen Sie folgende Aussagen in die Aussagenlogik: • Wenn schönes Wetter ist, gehe ich schwimmen. • Ich gehe schwimmen, nur wenn schönes Wetter ist. • Wenn ich nicht schwimmen gehe, dann ist kein schönes Wetter. • Ich gehe schwimmen, obwohl schönes Wetter ist. • Wer Hunger kennt, der weiÿ eine gute Mahlzeit zu schätzen. • Ich komme nur mit in's Kino, wenn Du die Karte bezahlst. • Ich schae den Bachelor nur, wenn ich TI bestehe. • Lutz mag Fuÿball, er liebt Hansa. • Es schneit, aber es ist nicht kalt. • A und B sind genau dann wahr, wenn zumindest eines der Ereignisse C, D, E eintritt. • Bernd mag Deep Purple, aber nicht Santana. • Harald liebt Brahms und Beethoven, aber weder Händel noch Telemann. • Wenn Dörte die Hochschulreife schat und dabei eine gute Note erzielt, dann studiert sie Wirtschaftsinformatik oder Multimediatechnik, aber nicht Biochemie oder Chemie. 2. Ist folgende Situation möglich (d.h. können alle Aussagen gleichzeitig wahr sein)? • Meier verlässt das Haus nicht ohne Schmidt. • Wenn Lehmann das Haus verlässt, so verlässt es Schmidt nicht, falls Meier es verlässt. • Lehmann verlässt das Haus. Formulieren Sie die Sachverhalte als aussagenlogische Formeln. Wie kann man die Aufgabe lösen? Welche Techniken kann man verwenden? 11 Übung Aussagen-Logik II 1. Ist folgende Situation möglich (d.h. können alle Aussagen gleichzeitig wahr sein)? • Meier verlässt das Haus nicht ohne Schmidt. • Wenn Lehmann das Haus verlässt, so verlässt es Schmidt nicht, falls Meier es verlässt. • Lehmann verlässt das Haus. Formulieren Sie die Sachverhalte als aussagenlogische Formeln. Beweisen Sie Ihre Behauptung mittels Resolution! 2. Ein Fall aus den Akten von Inspektor Craig: Es gibt 3 Verdächtige: Anton, Bernd und Claus. Folgendes ist bekannt: • Wenn Anton schuldig und Bernd unschuldig ist, so ist Claus schuldig. • Claus arbeitet niemals allein. • Anton arbeitet niemals mit Claus. • Niemand auÿer Anton, Bernd, Claus war beteiligt. Lösen Sie den Fall mittels Resolution! Welchen Täter vermuten Sie? Beweisen Sie Ihre Behauptung mittels Resolution! Hinweise Aussagenlogik • Kopieren Sie sich die Dateien unter http://www.wi.hs-wismar.de/~cleve/vorl/kibuch/Kap02/beweiser/index.html, in Ihr lokales Verzeichnis! SWIProlog! http://www.swi-prolog.org/ • Starten Sie • Laden (consult) Sie die Datei • Editieren Sie die Datei SWIPL1.PL! albsp.txt. Es geht ein neues Fenster auf. (Sie nden in dieser Datei eine Vorlage für aussagenlogische Formeln.) • Vom Beweiser-Fenster aus laden Sie nun albsp.txt. Folgen Sie den Hinweisen im unteren Teil des Fensters. Weitere Hinweise: • Verwenden Sie als aussagenlogische Variablen keine Prolog-Variablen. (Variable beginnen in Prolog mit einem Groÿbuchstaben, Konstante mit einem Kleinbuchstaben. Benutzen Sie also nur • Kleinbuchstaben!) Jedes Beispiel wird in einer separaten Datei gespeichert. Jede Formel gehört auf eine Zeile, wird mit einem Punkt und newline abgeschlossen. • Vor die zu beweisende Aussage muss als Schlüsselwort goal . Aussagenlogische Formeln werden in unseren Beispielen wie folgt dargestellt: Negation: ˜ Und: & Oder: v Implikation: Äquivalenz: −> <−> Man kann die runden Klammern verwenden. 12 Übung Aussagen-Logik III 1. Formulieren Sie in Aussagenlogik die folgenden Sätze: • Von den 5 Klavierkonzerten Ki von Beethoven gefällt mir das 2. und das 5. Konzert, von den restlichen mindestens noch eins. • Von 4 Verdächtigen A, B, C, D hat genau einer die Tat begangen. • Von 3 Medikamenten K, L, M muss der Patient höchstens 2 nehmen. ¬((A ∧ B) ↔ (D → ¬E)) 2. Bringen Sie auf KNF! 3. Ist folgende Situation möglich (d.h. können alle Aussagen gleichzeitig wahr sein)? • Schmidt verlässt das Haus nur mit Meier. • Wenn Lehmann oder Schmidt das Haus verlassen, so verlässt es Meier nicht. • Schmidt oder Lehmann verlassen das Haus. Beweisen Sie Ihre Behauptung mittels Resolution! 4. 4 Kinder (Emil, Paul, Tom, Kai) haben Fuÿball gespielt und nun eine Fensterscheibe auf dem Gewissen. Die Kinder sagen folgendes: • Emil: Tom oder Kai haben das Fenster kaputt gemacht. • Paul: Kai war's. • Tom: Ich war's nicht. • Kai: Ich war's auch nicht. Ein Lehrer, der alle kannte, sagt: Drei von ihnen sprechen immer die Wahrheit. Finden Sie den Schuldigen! Beweisen Sie Ihre Behauptung mittels Resolution! Hinweise Aussagenlogik • Kopieren Sie sich die Dateien unter http://www.wi.hs-wismar.de/~cleve/vorl/kibuch/Kap02/beweiser/index.html, in Ihr lokales Verzeichnis! SWIProlog! http://www.swi-prolog.org/ • Starten Sie • Laden (consult) Sie die Datei • Editieren Sie die Datei SWIPL1.PL! albsp.txt. Es geht ein neues Fenster auf. (Sie nden in dieser Datei eine Vorlage für aussagenlogische Formeln.) • Vom Beweiser-Fenster aus laden Sie nun unteren Teil des Fensters. Weitere Hinweise: albsp.txt. Folgen Sie den Hinweisen im • Verwenden Sie als aussagenlogische Variablen keine Prolog-Variablen. (Variable beginnen in Prolog mit einem Groÿbuchstaben, Konstante mit einem Kleinbuchstaben. Benutzen Sie also nur • Kleinbuchstaben!) Jedes Beispiel wird in einer separaten Datei gespeichert. Jede Formel gehört auf eine Zeile, wird mit einem Punkt und newline abgeschlossen. • Vor die zu beweisende Aussage muss als Schlüsselwort goal . Aussagenlogische Formeln werden in unseren Beispielen wie folgt dargestellt: Negation: ˜ Und: & Oder: v Implikation: Äquivalenz: −> <−> Man kann die runden Klammern verwenden. 13 Übung Komplexität 1. Untersuchen Sie den Aufwand einer TM, die a zu b, b zu c und c zu a umwandelt! 2. Betrachten Sie das Sortieren einer Liste durch Nachbarvertauschen. Wie groÿ ist der Aufwand im schlechtesten Fall (worst case)? Wie sieht der Aufwand im besten Fall aus? 3. Wie könnte man den Aufwand eines endlichen Automaten und eines Kellerautomaten denieren? 4. In welcher Komplexitätsklasse liegt das Problem, die Sprache {wwR | w ∈ {a, b}∗ } zu entscheiden? Entwickeln Sie dazu eine TM, die diese Sprache entscheidet, und untersuchen Sie den Aufwand, den diese TM benötigt. Ist Ihre TM optimal im Sinne des Aufwandes? 14 Übung Berechenbarkeit & Entscheidbarkeit 1. Kodieren Sie Strings über Σ = {a, b, c, d, e, f } mittels Gödelisierung! Ist Ihre Codierung eineindeutig? 2. Ist folgende Funktion LOOP-berechenbar? • f (n) = 2n Begründen Sie Ihre Aussage! 3. Ist die Subtraktion (die aber 0 nie unterschreitet) LOOP-berechenbar? (9 − 5 = 4; 5 − 6 = 0) • −(n1 , n2 ) = max(0, n1 − n2 ) 4. Programmieren Sie die Ackermann-Funktion und testen Sie empirisch das Zeitverhalten.