Sind alle kontextfreien und regulären Sprachen effizient bestimmbar?

12

Ich bin auf diese Abbildung gestoßen, die zeigt, dass kontextfreie und reguläre Sprachen (richtige) Teilmengen effizienter Probleme sind (angeblich ). Ich verstehe vollkommen, dass effiziente Probleme eine Teilmenge aller entscheidbaren Probleme sind, weil wir sie lösen können, aber es kann sehr lange dauern.P

Warum können alle kontextfreien und regulären Sprachen effizient entschieden werden? Bedeutet das, dass es nicht lange dauern wird, sie zu lösen (ich meine, wir wissen es ohne weiteren Kontext)?

Bildbeschreibung hier eingeben

Gigili
quelle
3
Wo haben Sie diese Figur aus Neugier gefunden? Es kann hilfreich sein, den Kontext zu erklären, da „effizient“ kein formaler Begriff ist und verschiedene Leute ihn verwenden, um verschiedene Dinge zu bedeuten.
Gilles 'SO- hör auf böse zu sein'
2
Wenn "effizient" (wie üblich) " " bedeutet, bedeutet "effizient" nicht "nicht sehr lange", da Polynome ebenfalls große Werte liefern. Beachten Sie, dass ein grundlegendes Ergebnis der Komplexität darin besteht, dass es unendlich viele Problemsequenzen gibt, von denen jede einfacher ist als die andere. Dies gilt sowohl innerhalb als auch außerhalb von . PP
Raphael
@Raphael: Effizient ist in diesem Zusammenhang eine Klasse von Sprachen, die in polynomieller Zeit entscheidbar sind. Ich benutzte "es könnte sehr lange dauern" für entscheidbare Probleme im Gegensatz zu unentscheidbaren Problemen, für die wir in einer endlichen Zeitspanne keine Lösung finden können.
Gigili
Der korrekte technische Weg, dies zu sagen, besteht darin, zu bestimmen, ob w∈L, wo w ein Wort und L eine Sprache ist, in P. ie / aka "Spracherkennung"
vzn

Antworten:

15

Die reguläre Zugehörigkeit zu einer Sprache kann in werden, indem der (vorberechnete) (minimale) DFA der Sprache simuliert wird.Ö(n)

Die kontextfreie Sprachenmitgliedschaft kann in durch den CYK-Algorithmus festgelegt werden .Ö(n3)

Es gibt entscheidbare Sprachen, die nicht in , z. B. die in .PEXPTichMEP

Dave Clarke
quelle
2
Vielleicht möchten Sie den Matrixmultiplikationsalgorithmus für kontextfreie Grammatiken erwähnen, der eine bessere Laufzeit hat und der mit praktisch jeder kontextfreien Grammatik sehr effizient (linear) funktioniert: sciencedirect.com/science/article/pii / 030439759190180A
Alex ten Brink
@AlextenBrink Ich glaube nicht, dass diese Frage eine feinere Granularität verlangt als "Polynom oder nicht".
Raphael
1
Ö(n)
1
Tatsächlich benötigen Sie für reguläre Sprachen nicht einmal explizit deterministische Automaten. Sie simulieren alle Berechnungen parallel, indem Sie alle Zustände auf diese Weise verfolgen und die Powerset-Konstruktion nachahmen.
Hendrik Jan
1
@ Dave: linear in der Länge der Eingabezeichenfolge für eine feste reguläre Sprache, wie die anderen hier angegebenen Komplexitäten.
Hendrik Jan
1

Verfeinerung / "Kleingedrucktes" bei Beantwortung durch DC: Alle CFLs in Form der Chomsky-Normalform können mit dem CYK-Algorithmus effizient analysiert und alle CFLs in CNF konvertiert werden. Das Konvertieren einer beliebigen CFL in CNF kann jedoch abhängig von einigen Algorithmen im schlimmsten Fall einen exponentiellen Raum beanspruchen. (Mir ist kein Algorithmus bekannt, der hier eine P-Zeit-Konvertierung garantiert, oder? Man muss alle Edge / Worst-Cases wie nicht deterministische oder mehrdeutige CFLs berücksichtigen .) Wikipedia-Angaben zum CNF-Abschnitt Reihenfolge der Transformationen

|G|222|G|

Daher scheint es möglicherweise CFLs zu geben, die nicht effizient analysiert werden können. Die meisten Programmiersprachen sind effizient konvertierbar zu CNF (oder vielleicht meist definiert in CNF oder nahezu CNF) daher CFL für „typische“ Sprachen Parsen ist „praktisch“ in P. Es gibt wohl einige moderne Forschung in diese schlimmen Fall Komplexität (aber nicht aktuelle Beiträge dazu finden Sie in der Cursorsuche). ZB scheint diese ältere (1973) Forschungsarbeit von Greibach auch darauf hinzudeuten, dass die Worst-Case-Leistung möglicherweise nicht durch P. beschränkt ist, siehe z.

vzn
quelle