Inhaltsverzeichnis - Automaten und Formale Sprachen
Inhaltsverzeichnis - Automaten und Formale Sprachen
Inhaltsverzeichnis - Automaten und Formale Sprachen
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
1.6.1 Satz Es gibt effiziente (d. h. Polynomialzeit-)Algorithmen, die folgende Probleme<br />
lösen: Zu einem vorgelegtem <strong>Automaten</strong> M = (Q, Σ, q 0 , F , δ) entscheide, ob<br />
(a) L M = ∅ (für NFA M),<br />
(b) |L M | < ∞ (für NFA M),<br />
(c) L M = Σ ∗ (für DFA M).<br />
Zu DFA’s M 1 <strong>und</strong> M 2 entscheide ob<br />
(d) L M1 ⊆ L M2 ,<br />
(e) L M1 = L M2 .<br />
Beweis Wir formulieren die Algorithmen alle in der graphentheoretischen Sprache, stellen<br />
uns also vor, dass ein Automat M als Graph G M gegeben ist. Beachte, dass die Tabelle<br />
(das |Q|×|Σ|-Array mit Einträgen aus f(Q) (für NFA’s) bzw. aus Q (für DFA’s)) für δ im<br />
wesentlichen in seinen Zeilen die Adjazenzlisten für G M enthält, einschließlich der Kantenmarkierungen.<br />
Es ist fair, als Eingabegröße für diesen Graphen |δ| := |Q|+Σ q∈Q,a∈Σ |δ(q, a)|<br />
anzusetzen, das ist die Summe aus Knoten- <strong>und</strong> Kantenzahl in G M .<br />
(a) Offenbar ist L M ≠ ∅ genau dann, wenn es in G M überhaupt einen Weg von v q0 zu<br />
einem v q mit q ∈ F gibt (ohne auf die Kantenmarkierungen zu achten). Dies lässt sich<br />
z. B. durch einen einfachen Markierungsalgorithmus feststellen. Der Zeitbedarf hierfür ist<br />
O(|δ|).<br />
(b) Wir überlegen zunächst, dass |L M | = ∞ ist genau dann, wenn es in G M einen Weg<br />
von v q0 zu einem v q mit q ∈ F gibt, der einen Kreis enthält. [ ⇒: Ist |L ” M | = ∞, so<br />
existiert x ∈ L M mit |x| ≥ |Q|. Die Existenz eines akzeptierenden Weges, der einen<br />
Knoten zweimal benutzt, also einen Kreis enthält, folgt wie in 1.4.1. ⇐“: Gibt es einen<br />
”<br />
Weg von v q0 zu v q , q ∈ F, mit einem Kreis, so besitzt nach dem Argument von 1.4.1 L<br />
eine unendliche Teilmenge der Form {uv i w | i ∈ IN}, mit |v| ≥ 1 also ist L unendlich.]<br />
Algorithmus<br />
1. Konstruiere die Umkehrung von G M :<br />
←<br />
GM:=<br />
(<br />
{v q | q ∈ Q}, {(v q , v q ′) | (v q ′, v q ) Kante in G M }<br />
2. Mittels eines Markierungsalgorithmus in ← GM, startend von {v q | q ∈ F }, ermittle<br />
die Menge<br />
V ′ = {v q ′ | ∃ Weg in ← GM von v q nach v q ′ für ein q ∈ F }<br />
( = {v q ′ | ∃ Weg in G M von v q ′ nach v q für ein q ∈ F } ).<br />
3. Bilde G ′ := Einschränkung von G M auf V ′ .<br />
Falls V q0 ∉ V ′ , stoppe mit der Antwort ”<br />
endlich“.<br />
4. Ein geschickter Graphalgorithmus, genannt ”<br />
erweiterte Tiefensuche in G ′ “, vom<br />
Knoten v q0 startend, erlaubt es festzustellen, ob von v q0 aus ein gerichteter Kreis in<br />
G ′ erreichbar ist. Falls dies so ist, wird ”<br />
∞“ ausgegeben, sonst ”<br />
endlich“.<br />
45<br />
)<br />
.