Exponentielle Trennung zwischen NFAs und DFAs in Gegenwart von Gewerkschaften


15

Kürzlich wurde eine interessante Frage gestellt und anschließend gelöscht.

Für eine reguläre Sprache ist ihre DFA-Komplexität die Größe des minimalen DFA, der sie akzeptiert, und ihre NFA-Komplexität ist die Größe des minimalen NFA, der sie akzeptiert. Es ist bekannt, dass es eine exponentielle Trennung zwischen den beiden Komplexitäten gibt, zumindest wenn die Größe des Alphabets nicht begrenzt ist. Betrachten Sie in der Tat die Sprache L n über dem Alphabet { 1 , , n }, die aus allen Wörtern besteht, die nicht alle Symbole enthalten. Mit dem Myhill-Nerode-Theorem ist es einfach, die DFA-Komplexität 2 n zu berechnen . Andererseits ist die NFA-Komplexität nur nLLn{1,,n}2nn(Wenn mehrere Anfangszustände zulässig sind, andernfalls ist es ).n+1

Die gestrichene Frage betraf den DFA, der die Komplexität einer Sprache abdeckt , wobei es sich um das minimale , sodass L als (nicht notwendigerweise disjunkte) Vereinigung von Sprachen mit DFA-Komplexität höchstens C geschrieben werden kann . Die DFA, die die Komplexität von L n abdeckt, beträgt nur 2 .CLCLn2

Gibt es eine exponentielle Trennung zwischen NFA-Komplexität und DFA-Komplexität?

Antworten:


8

Betrachten Sie die Sprache , wobei # ein neues Symbol ist. Die NFA-Komplexität von M n ist n . Wir werden zeigen, dass der DFA, der die Komplexität abdeckt, 2 n beträgt .Mn=ϵ+(Ln#)Ln#Mnn2n

Sei ein DFA, der eine Sprache L ( A ) M n mit der Übergangsfunktion q A akzeptiert . Rufe einen Zustand s lebensfähig , wenn es einig Wort w , so daß q A ( s , w ) ist ein akzeptierende Zustand. Für zwei beliebige Nicht-Fehlerzustände s , t sei A s , t = { w ( 1 + + n ) : q AAL(A)MnqAswqA(s,w)s,tEs ist nicht schwer zu überprüfendass jedes Wort w L ( A ) kann geschrieben werden als w = w 1 # # w l wo w iA s i , t i für einige lebensfähig s i , t i .

As,t={w(1++n):qA(s,w)=t}.
wL(A)w=w1##wlwiAsi,tisi,ti

Mn=i=1NL(Ai)AiPAs,tiL(Ai)LP(Ai)P#MnP

LP(Ai) xPyPzPxyzLP(Ai)LP(Ai)LP(Ai)(|P|1)llLP(Ai)|P|ll|P|lN(|P|1)ll

LP(Ai)A=AixPxMnyLnzyMnx#y#zyL(Ai)

S{1,,n}ySSx#ySASTaSTx#yTy{1,,n}a#zyTy{1,,n}aL(A)x#ySy{1,,n}a#zyTy{1,,n}aMnA2n

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.