Leerheitsproblem
Als Leerheitsproblem bezeichnet man in der theoretischen Informatik das Problem, zu entscheiden, ob eine in Form einer formalen Grammatik gegebene formale Sprac…
Als Leerheitsproblem bezeichnet man in der theoretischen Informatik das Problem, zu entscheiden, ob eine in Form einer formalen Grammatik gegebene formale Sprache leer ist, also , oder nicht. Das Problem ist also, herauszufinden, ob es Wörter gibt, die den Regeln der Grammatik genügen, oder nicht.
Die Entscheidbarkeit des Leerheitsproblems hängt von der Komplexität der zugrundeliegenden Grammatik ab: Für die Grammatiken vom Typ 2 oder höher in der Chomsky-Hierarchie ist das Leerheitsproblem entscheidbar, für die Grammatiken bis Typ 1 im Allgemeinen jedoch nicht.
Leerheitsproblem für endliche Automaten
Gegeben ist ein (nicht-)deterministischer endlicher Automat A. Es soll entschieden werden, ob die formale Sprache ist oder nicht.
Gesucht ist ein Algorithmus zur Lösung des Leerheitsproblems.
Naiver Ansatz
Man überprüft alle Wörter w (mit Länge ≤ Zustandsanzahl des Automaten), ob diese von A erkannt werden. Wird ein Wort erkannt, so gilt ≠ , ansonsten ist die Sprache leer.
Der Ansatz ist für Alphabete mit mehr als einem Symbol und größere Automaten in der Praxis nicht einsetzbar – der Zeitbedarf ist exponentiell ().
Markierungsalgorithmus
Der Markierungsalgorithmus betrachtet einen endlichen Automaten als gerichteten Graphen G=(Q,E). Q-Elemente heißen Knoten und E-Elemente Kanten. Wenn ein Wort w in L(A) existiert, gibt es einen Pfad vom Startzustand in den Endzustand des Automaten. Es wird nun überprüft, ob ein markierter Zustand des Graphen ein Endzustand des Automaten ist.
Beginnend vom Startzustand p1: p1 wird markiert und in die Liste der markierten Zustände aufgenommen. Dann wird überprüft, welche Zustände von p1 erreichbar sind. Markiere diese Zustände und füge p2, p3 … in die Liste ein und streiche p1 aus der Liste. Dies wird so lange wiederholt, bis alle zu erreichenden Zustände markiert sind und die Schlange leer ist. Ist kein Endzustand erreicht (und somit nicht markiert), gilt, dass die Sprache leer ist.
Der Algorithmus fügt jeden Knoten maximal einmal in die Liste hinzu und markiert ihn. Somit terminiert der Algorithmus im Zeitaufwand von n².
Leerheitsproblem für Grammatiken
Bei dem Leerheitsproblem für eine Grammatik G ist die Frage, ob G eine leere Sprache erzeugt oder nicht.
Lösung über den Markierungsalgorithmus: Dabei werden die Symbole der Regeln markiert, aus denen ein Terminalwort ableitbar ist. Ist das Startsymbol markiert, dann ist die Sprache nicht leer.
Siehe auch
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.