Czy ciągła dwuznaczność może zmniejszyć złożoność stanu zwykłych języków?

16

Mówimy, że NFA jest stale niejednoznaczny, jeśli istnieje tak że każde słowo jest akceptowane przez lub (dokładnie) ścieżek.MkNwΣ0k

Jeśli automat jest stale niejednoznaczny dla , wówczas nazywa się Jednoznacznym FA (UFA).Mk=1M

Niech będzie zwykłym językiem.L

Czy jakiś stale dwuznaczny automat dla być mniejszy niż najmniejszy UFA, który akceptuje ? Ile może to być mniejsze?McLL

Czy automat całkowicie niejednoznaczny może być wykładniczo mniejszy niż najmniejszy CFA dla tego samego języka?

Wiadomo, że istnieją całkowicie niejednoznaczne automaty (istnieje , takie, że każde słowo jest akceptowane przez maksymalnie ścieżek), które są wykładniczo mniejsze niż najmniejsze UFA dla tego samego języka, ale nie widziałem nic o stałej dwuznaczności.k k

Oto pokrewne pytanie , które zamieściłem tutaj kilka miesięcy temu.

EDYTOWAĆ:

Odpowiedź Domotorp pokazuje, że jest wielomianowo redukowalny do , ale nie odnosi się do pytania, czy możemy uzyskać tę redukcję przestrzeni wielomianowej przez .CFAUFACFA

Tak więc nowe pytanie brzmi: o ile mniejsze (liniowo / kwadratowe / itp.) Można porównać do minimalnego ? dla tego samego języka?CFAUFA

RB
źródło
czy -transitions jest dozwolone? ϵ
Denis
Być może może to być pomocne: w Kupke, O oddzielaniu stałej od wielomianowej niejednoznaczności automatów skończonych, przedstawiona jest następująca hierarchia: Nie sprawdziłem powiązanego papieru, ponieważ jest za paywall. dfa2nunfa2ncafa2n???2npafa2nnfa
Marzio De Biasi
Dzięki @MarzioDeBiasi, ale niestety to nie pomaga (miałem również nadzieję, kiedy zobaczyłem prezentację). Używają innej notacji niż ta, której używam (i widziałem w różnych artykułach). Ich „stała dwuznaczność” jest tym, co nazwałem skończoną dwuznacznością, więc związek między ich Cafą a UFA był mi już znany. Ponieważ moja aplikacja liczy rozwiązania problemów NPC, mój język jest zawsze skończony i dlatego każde słowo jest akceptowane przez ścieżki , które nazywają „stałymi”. O(1)
RB
Zastanawiam się, czy moja definicja pomaga zmniejszyć złożoność stanu, ponieważ mam CFA, który jest wykładniczo mniejszy niż najmniejszy UFA, jaki potrafię zbudować, i zastanawiałem się, czy to możliwe, że nie ma małego UFA dla tego języka.
RB
1
@Denis, tak, ale czy pomogłoby to zmniejszyć złożoność stanu? Zakładam, że dzięki takim ruchom można zmniejszyć liczbę krawędzi.
RB

Odpowiedzi:

4

I twierdzą, że jeśli z jakiegoś języka jest CFA zz stanach i 0 lub c przyjmując ścieżki dla każdego słowa, to nie jest UFA z C s s c stanach. Podstawową ideą jest to, że stany UFA są (uporządkowanymi) c-krotkami stanów CFA i akceptuje wtedy i tylko wtedy, gdy wszystkie stany c akceptują. Oczywiście musimy również upewnić się, że były to rzeczywiście różne obliczenia i że nie liczymy wszystkich c ! permutacje, więc dla nich musimy jakieś dodatkowe c s bitów przechowywania.s0cCsscc!Cs

Nieco bardziej szczegółowy opis podstawowych idei: if jest stanem UFA, to ma przejście od niego (czytanie trochę się A ) do stanu ( s ' 1 , ... , s c ) wtedy i tylko wtedy, gdy CFA ma przejście (czytanie litery a ) z s i na s i dla każdego i . Stan ( s 1 , , s c )(s1,,sc)a(s1,,sc)asisii(s1,,sc)akceptuje wtedy i tylko wtedy, gdy akceptuje dla każdego i . Oczywiście stanem początkowym UFA jest ( s 0 , , s 0 ), gdzie s 0 jest stanem początkowym CFA.sii(s0,,s0)s0

Problem z powyższego jest taka, że symulowane przebiegi CFA może być taka sama. Więc dodajemy dodatkowe informacje, zakodowane, powiedzmy, na wykresie na c wierzchołkach, który ma krawędź między wierzchołkiem i a wierzchołkiem j, jeśli podczas dotychczasowego przebiegu przynajmniej raz mieliśmy to c ic j .ccijcicj

Teraz nadal mamy problem, że policzyliśmy wszystko razy z powodu możliwych permutacji. Możemy temu zaradzić, wymagając, aby jeśli i- ty i j- ty stany były do ​​tej pory takie same, aw następnym kroku będą się różnić, to w następnym kroku i- ty stan powinien mieć większy indeks.c!iji

domotorp
źródło
Dziękuję za odpowiedź @domotorp. Niestety nie mogę powiedzieć, że to rozumiem. Czy możesz podać więcej szczegółów (np. Jak zakodowany byłby dowód pierwszeństwa?). Dzięki !
RB
W każdym razie zdałem sobie sprawę, że istnieje również UFA dla tego języka, więc zapomnij o nim. A co z pozostałą częścią mojej odpowiedzi?
domotorp
Nie jestem pewien, czy podążam. Jeśli jest CFA z k = c , nie oznacza to, że dla każdego słowa w mogą istnieć tylko c ścieżki , tylko że tylko c z nich zakończy się stanem akceptującym. Jakie byłyby stany UFA? Czy możesz spróbować go sformalizować? Mk=ccwc
RB
Proszę bardzo, mam nadzieję, że teraz jest jasne.
domotorp