1. Teil: Formale Sprachen und Automatentheorie - Faculty of ...
1. Teil: Formale Sprachen und Automatentheorie - Faculty of ...
1. Teil: Formale Sprachen und Automatentheorie - Faculty of ...
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