Übungen Theoretische Informatik

Werbung
Ü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.
Herunterladen