Notice: Unexpected clearActionName after getActionName already called in /var/www/html/includes/context/RequestContext.php on line 338
Äquivalenzproblem – Wikipedia Zum Inhalt springen

Äquivalenzproblem

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Programmäquivalenz)

Als Äquivalenzproblem bezeichnet man in der Theoretischen Informatik das Problem, zu entscheiden, ob zwei formale Definitionen von zwei Sprachen <math>L_1</math> und <math>L_2</math> äquivalent sind, also <math>L_1 = L_2</math> gilt.

So können die Sprachen durch Grammatiken oder Automaten oder auch ganz anders definiert sein.

Das Äquivalenzproblem ist für reguläre Grammatiken und deterministisch kontextfreie Grammatiken entscheidbar, für nichtdeterministische kontextfreie ist es unentscheidbar. Offenbar ist es sinnvoll, nach der Komplexität des Äquivalenzproblems zu fragen, wenn das Problem entscheidbar ist. In diesem Fall kann diese Komplexität ganz erheblich von der vorgegebenen Art, wie die Sprache definiert wird, abhängen.

Für reguläre Sprachen ist das Äquivalenzproblem wegen der Entscheidbarkeit des Leerheitsproblems und der Abschlusseigenschaften entscheidbar, da <math>L_1 = L_2</math> genau dann, wenn <math>( L_1 \cap \overline{L_2}) \cup (L_2 \cap \overline{L_1} ) = \empty</math>.

Liegen die Sprachen <math>L_1</math> und <math>L_2</math> schon in Form von DEAs vor, so kann man das Äquivalenzproblem auch entscheiden, indem man von beiden DEAs jeweils die Minimalautomaten bildet und diese dann auf Isomorphie überprüft. Ist das der Fall, so sind die beiden Sprachen <math>L_1</math> und <math>L_2</math> ebenfalls äquivalent.

Siehe auch

Literatur

  • {{#invoke:Vorlage:Literatur|f}}