Lösungsvorschläge – Blatt 3

Werbung
Theoretische Informatik
Prof. Dr. Juraj Hromkovič
http://www.ita.inf.ethz.ch/theoInf17
Departement Informatik
Lösungsvorschläge – Blatt 3
Zürich, 13. Oktober 2017
Lösung zu Aufgabe 7
Der folgende endliche Automat akzeptiert die Sprache
L = {x ∈ {0, 1}∗ | x enthält das Teilwort 0101} .
1
qλ
0, 1
0
0
q0
1
q01
1
0
q010
1
q0101
0
Für jedes Wort x ∈ {λ, 0, 01, 010} beschreibt qx das längste aktuell gelesene Präfix des
gesuchten Musters 0101. Im Zustand q0101 wurde das gesuchte Muster bereits gefunden.
Der Startzustand ist der Zustand qλ .
Damit ergeben sich die folgenden Klassen für die Zustände:
Kl[q0101 ] = L ,
Kl[q010 ] = {x ∈ {0, 1}∗ | x endet mit 010} − L ,
Kl[q01 ] = {x ∈ {0, 1}∗ | x endet mit 01} − L ,
Kl[q0 ] = {x ∈ {0, 1}∗ | x endet mit 0} − (L ∪ Kl[q010 ]) ,
Kl[qλ ] = {0, 1}∗ −
[
Kl[qx ] .
x∈{0,01,010,0101}
Man beachte, dass es hilfreich sein kann, die Reihenfolge der Klassenbeschreibungen
geschickt zu wählen.
Lösung zu Aufgabe 8
Der folgende endliche Automat akzeptiert die Sprache
L = {xcy ∈ {a, b, c}∗ | x, y ∈ {a, b}∗ und |x|a mod 3 = 2 und |xy|b ist gerade} .
a
a
a
q0,g
b
a
q1,g
b
b
c
q2,g
b
b
qg
c
b
b
b
a
q0,u
a
q1,u
a
c
q2,u
qu
c
c
c
c
c
a
qS
a, b, c
In diesem Automaten modellieren die Zustände qi,x für i ∈ {0, 1, 2} und x ∈ {g, u} einen
Zähler, der die Anzahl i der bisher gelesenen Buchstaben a modulo 3 zählt und gleichzeitig
speichert, ob die Anzahl bisher gelesener Buchstaben b gerade (g) oder ungerade (u) ist.
Mit dem Lesen eines Buchstaben c geht der Automat dann entweder in einen der Zustände
qu oder qg über, falls die Anzahl bisher gelesener as die Bedingung von L erfüllt, oder in
den Senkenzustand qS . In dem zweiten Teil des Wortes hinter dem c muss nur noch die
Parität der Anzahl von bs überprüft werden, dies geschieht mit den Zuständen qu und qg .
Wird ein weiteres c gelesen, geht der Automat in den Senkenzustand über.
Damit ergeben sich die folgenden Klassen für die Zustände:
Kl[qi,g ] = {x ∈ {a, b}∗ | |x|a mod 3 = i und |x|b gerade} für i ∈ {0, 1, 2} ,
Kl[qi,u ] = {x ∈ {a, b}∗ | |x|a mod 3 = i und |x|b ungerade} für i ∈ {0, 1, 2} ,
Kl[qg ] = L ,
Kl[qu ] = {xcy | x, y ∈ {a, b}∗ , |x|a mod 3 = 2 und |xy|b ungerade} ,
Kl[qS ] = {a, b, c}∗ −
[
Kl[q] .
q∈Q−{qS }
Lösung zu Aufgabe 9
Die in der Aufgabenstellung gegebene Sprache L lässt sich schreiben als L = L1 ∪ L2 mit
L1 = {w ∈ {a, b}∗ | (|w|a + 2|w|b ) mod 3 = 1} ,
L2 = {w ∈ {a, b}∗ | w enthält das Teilwort abb und beginnt mit a} .
Für die Sprache L1 lässt sich der folgende Automat A1 konstruieren:
a
a
q0
a
q1
b
q2
b
b
Dieser Automat zählt in seinen Zuständen die Anzahl von as und bs modulo 3 gemäss der
Formel aus L1 . Es gilt für i ∈ {0, 1, 2}, dass
Kl[qi ] = {w ∈ {a, b}∗ | (|w|a + 2|w|b ) mod 3 = i} .
Für die Sprache L2 lässt sich der folgende Automat A2 konstruieren:
pS
a, b
b
p0
a
pa
a
a
b
pab
b
pabb
a, b
Dieser Automat prüft in seinem Startzustand p0 zunächst, ob das Wort mit einem a beginnt.
Falls nicht, geht er in den Senkenzustand pS über, sonst in den Zustand pa . Die Zustände
pa , pab und pabb geben an, welches längste Präfix des gesuchten Musters aktuell gelesen
wurde. Sobald das Muster gefunden wurde, verbleibt der Automat im akzeptierenden
Zustand pabb . Damit ergeben sich die folgenden Klassen:
Kl[p0 ] = {λ} ,
Kl[pS ] = {bx | x ∈ {a, b}∗ } ,
Kl[pabb ] = L2 ,
Kl[pab ] = {x ∈ {a, b}∗ | x beginnt mit a und endet mit ab} − L2 ,
Kl[pa ] = {x ∈ {a, b}∗ | x beginnt und endet mit a} − L2 .
Mit der Methode des modularen Entwurfs kann man nun aus A1 und A2 den folgenden
Produktautomaten A konstruieren, der die Sprache L = L1 ∪ L2 akzeptiert. Zur einfacheren
Darstellung verwenden wir die Notation rx,y = hqx , py i. Weil dies ein Produktautomat
für die Vereinigung von zwei Sprachen ist, sind alle Zustände akzeptierend, die einen
akzeptierenden Zustand aus einem der beiden Teilautomaten enthalten, also die zu q1
gehörige Spalte und die zu pabb gehörige Zeile. Man beachte, dass die Zustände r0,1 und
r0,2 vom Startzustand aus nicht erreichbar sind. Diese beiden Zustände können deshalb
auch weggelassen werden.
b
a
q0
a
q1
b
q2
b
a
a
b
pS
a, b
a
rS,0
rS,1
b
a
rS,2
b
b
b
b
b
r0,0
p0
r0,1
r0,2
a
a
a
a
pa
a
a
ra,0
a
ra,1
a
ra,2
a
a
b
b
a
b
pab
rab,0
b
rab,1
a
rab,2
b
b
pabb
b
b
a, b
a
rabb,0
a
rabb,1
b
rabb,2
b
a
b
Lösung zu Bonus-Aufgabe 1
Für die Lösung dieser Aufgabe orientieren wir uns am Beweis von Satz 2.4 aus dem Buch.
Wir wollen die dort angegebene untere Schranke für die Anzahl der Primzahlen ≤ k
verbessern. Die Idee dabei ist, die selbstbeschränkende Kodierung Bin aus dem Buch zu
d wie folgt: Sei m ∈ N−{0}, sei l =
verbessern. Dafür definieren wir eine neue Kodierung Bin
4
dlog2 (m + 1)e die Länge der Binärdarstellung von m und sei Bin(m) = a1 a2 . . . al . Sei α =
−l mod 4. Dann sei Bin4 (m) = 0α Bin(m) = b1 b2 . . . bl0 eine abgewandelte Binärdarstellung
von m mit so vielen führenden Nullen, dass die Gesamtlänge l0 = l + α durch 4 teilbar ist.
Nun definieren wir
d (m) = b b b b 0 b b b b 0 . . . b 0 b 0 b 0 b 0 1 .
Bin
4
1 2 3 4
5 6 7 8
l −3 l −2 l −1 l
Wir fügen also hinter je 4 Zeichen der Binärdarstellung Bin4 (m) ein Kontrollbit ein, so
dass ein Kontrollbit 1 das Ende der Kodierung anzeigt.
Jetzt können wir analog zum Beweis von Satz 2.4 eine Zahl n durch das Paar (m, n/pm )
darstellen, wobei pm der grösste Primfaktor von n ist. Wir repräsentieren das Paar (m, n/pm )
dann durch
d (dlog (dlog (m + 1)e + 1)e)Bin(dlog (m + 1)e)Bin(m)Bin(n/p ) .
Wort(m, n/pm ) = Bin
4
m
2
2
2
Analog zum Beweis von Satz 2.4 verwenden wir also eine selbstbeschränkende Kodierung,
um die Länge der Länge von m darzustellen, allerdings verwenden wir unsere verbesserte
Kodierung.
Damit können wir die Länge unserer Darstellung abschätzen durch
|Wort(m, n/pm )| ≤
5
· (dlog2 (dlog2 (dlog2 (m + 1)e + 1)e + 1)e + 3)
4
+ dlog2 (dlog2 (m + 1)e + 1)e
+ dlog2 (m + 1)e + dlog2 ((n/pm ) + 1)e .
Dabei ergibt sich die + 3 durch die bis zu 3 führenden Nullen in unserer selbstbeschränkenden Kodierung.
Mit einer analogen Argumentation wie im Beweis von Satz 2.4 erhalten wir, dass es
unendlich viele natürliche Zahlen n gibt mit den Eigenschaften
|Wort(m, n/pm )| ≥ dlog2 (n + 1)e − 2
(1)
und
K(n) ≥ dlog2 (n + 1)e − 2 .
(2)
Wir setzen die Ungleichung (1) in die Längenabschätzung ein und erhalten mit analogen
Abschätzungen der Gaussklammern wie im Beweis von Satz 2.4, dass
5
· (dlog2 (dlog2 (dlog2 (m + 1)e + 1)e + 1)e + 3)
4
+ dlog2 (dlog2 (m + 1)e + 1)e
+ dlog2 (m + 1)e + dlog2 ((n/pm ) + 1)e
15 5
≤
+ log2 log2 log2 m + log2 log2 m + log2 m + log2 (n/pm ) + 15
4
4
dlog2 (n + 1)e − 2 ≤
und somit
log2 n ≤
5
log2 log2 log2 m + log2 log2 m + log2 m + log2 (n/pm ) + 21 .
4
Analog zum Buch ist also
pm ≤ 221 · m · log2 m · (log2 log2 m)5/4 .
Mit Lemma 2.6 aus dem Buch folgt nun wie im Beweis von Satz 2.4 aus (2), dass für
unendlich viele Zahlen k ∈ N
Prim(k) ≥
221
k
· log2 k · (log2 log2 k)5/4
gilt. Die Behauptung der Aufgabe ist also für d = 221 bewiesen.
Anmerkung: Man kann die Behauptung der Aufgabe auch zeigen, indem man die selbstbeschränkende Kodierung aus dem Beweis von Satz 2.4 verwendet, um die Länge der
Länge der Länge von m zu kodieren. Damit ergibt sich dann für eine Konstante d0 die
Abschätzung
k
Prim(k) ≥ 0
,
d · log2 k · log2 log2 k · (log2 log2 log2 k)2
die für unendlich viele Zahlen k die in der Aufgabe geforderte Schranke impliziert.
Herunterladen