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.Mk∈Nw∈Σ∗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


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. dfa≺2nunfa≺2ncafa≺2n???≺2npafa≺2nnfa
— 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′)asisi′i(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 i ≠ c j .ccijci≠cj

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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.