29.01.2014 Aufrufe

1. Teil: Formale Sprachen und Automatentheorie - Faculty of ...

1. Teil: Formale Sprachen und Automatentheorie - Faculty of ...

1. Teil: Formale Sprachen und Automatentheorie - Faculty of ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Tatsächlich gibt es solche Zustände q i , da P n ∩ F ≠ ∅ <strong>und</strong> für i = n−1,...,0:<br />

P i+1 = δ det (P i ,a i+1 )=<br />

⋃<br />

δ(q,a i+1 ).<br />

q∈P i<br />

Daher gibt es zu jedem Zustand q i+1 ∈ P i+1 einen Zustand q i ∈ P i mit q i+1 ∈ δ(q i ,a i+1 ).<br />

Wegen P 0 = Q 0 ist q 0 ein Anfangszustand <strong>und</strong> q 0 q 1 ...q n ein Lauf von M für w. Wegen<br />

q n ∈ F ist der Lauf q 0 q 1 ...q n akzeptierend. Also ist w ∈ L(M).<br />

In Abbildung 12 betrachten wir ein einfaches Beispiel für die im Beweis von Satz 2.15 angegebene<br />

Potenzmengenkonstruktion. Links ist der NFA M skizziert, rechts dessen Potenzmengenkonstruktion.<br />

Beispielsweise kann der akzeptierende Lauf q 0 q 1 q 0 q 1 q 0 für das Wort 1010 in<br />

M durch den akzeptierenden Lauf {q 0 }{q 0 ,q 1 }{q 0 }{q 0 ,q 1 }{q 0 } im DFA M det (Potenzmengenkonstruktion)<br />

simuliert werden. Zustand {q 1 } in der Potenzmengenkonstruktion ist unerreichbar.<br />

Er kann daher weggelassen werden, ohne die akzeptierte Sprache zu ändern. Auch auf den<br />

Zustand ∅ kann verzichtet werden, da von ihm kein Endzustand erreichbar ist.<br />

1<br />

q 0 q 1<br />

1<br />

0<br />

0,1<br />

∅<br />

1<br />

{q 1 }<br />

0<br />

1<br />

0<br />

1<br />

{q 0 } {q 0 ,q 1 }<br />

Abbildung 12: Beispiel zur Potenzmengenkonstruktion<br />

0<br />

Beispiel 2.16 (Das <strong>Teil</strong>summenproblem). Das <strong>Teil</strong>summenproblem bezeichnet folgende kombinatorische<br />

Fragestellung:<br />

• Gegeben ist eine ganze Zahl K 2 <strong>und</strong> eine nichtleere Folge a 1 a 2 ...a n ∈ {1,...,K} ∗ .<br />

• Gefragt ist, ob es eine <strong>Teil</strong>menge I von {1,...,n} gibt, so dass ∑ i∈I<br />

a i = K.<br />

Ein einfacher nichtdeterministischer Algorithmus, der das <strong>Teil</strong>summenproblem löst, rät nichtdeterministisch<br />

eine <strong>Teil</strong>menge I von {1,...,n} <strong>und</strong> prüft dann, ob die <strong>Teil</strong>summe der geratenen<br />

Indexmenge gleich K ist. Für festes K können wir diese Idee durch einen NFA realisieren. Intuitiv<br />

bearbeitet der Automat die Eingabewerte a 1 ,a 2 ,...,a n der Reihe nach <strong>und</strong> entscheidet<br />

nichtdeterministisch, die i-te Zahl a i an der <strong>Teil</strong>summe zu beteiligen oder nicht. Wir betrachten<br />

folgenden NFA M (K) , dessen Zustände die Zahlen q ∈ {0,1,...,K} sind, welche jeweils für<br />

den Wert der bereits erzielten <strong>Teil</strong>summen stehen. Der Automat verfügt über einen eindeutigen<br />

Anfangs- <strong>und</strong> Endzustand. Der Anfangszustand ist 0; dies entspricht der initialen <strong>Teil</strong>summe 0.<br />

Der Endzustand ist K (der gewünschte Wert der <strong>Teil</strong>summe). Wir definieren den NFA M (K) wie<br />

folgt:<br />

=({0,1,...,K}, def<br />

{1,2,...,K}, δ, {0}, {K}),<br />

M (K)<br />

31

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!