19.11.2014 Aufrufe

Inhaltsverzeichnis - Automaten und Formale Sprachen

Inhaltsverzeichnis - Automaten und Formale Sprachen

Inhaltsverzeichnis - Automaten und Formale Sprachen

MEHR ANZEIGEN
WENIGER ANZEIGEN

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 />

.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!