Niech będą dwoma zwykłymi językami podanymi przez NFA M_1 jako dane wejściowe.M 1 , M 2
Załóżmy, że chcielibyśmy sprawdzić, czy . Można to wyraźnie zrobić za pomocą algorytmu kwadratowego, który oblicza automat produktu , , ale zastanawiałem się, czy wiadomo coś bardziej wydajnego.M 1 , M 2
Czy istnieje algorytm do decydowania, czy ? Jaki jest najszybszy znany algorytm?L 1 ∩ L 2 ≠ ∅
Odpowiedzi:
Prosta odpowiedź : jeśli istnieje bardziej wydajny algorytm działający w czasie dla pewnego δ < 2 , wówczas hipoteza silnego wykładniczego czasu byłaby obalona.O ( nδ) δ< 2
Udowodnimy mocniejsze twierdzenie, a następnie pojawi się prosta odpowiedź.
Twierdzenie : Jeśli możemy rozwiązać problem nieopróżnienia przecięcia dla dwóch DFA w czasie , to każdy problem, który nie jest deterministycznie rozwiązany przy użyciu tylko n bitów pamięci, jest deterministycznie rozwiązany w p o l y ( n ) ⋅ 2 Czas ( δ n / 2 ) .O ( nδ) p o l y( n ) ⋅ 2( δn / 2 )
Uzasadnienie : Załóżmy, że możemy rozwiązać brak pustki skrzyżowania dla dwóch DFA w czasie . Niech zostanie podana niedeterministyczna maszyna Turinga M z taśmą wejściową tylko do odczytu i binarną taśmą roboczą do odczytu / zapisu. Niech zostanie podany ciąg wejściowy x o długości n. Załóżmy, że M nie ma dostępu do więcej niż n bitów pamięci na binarnej taśmie roboczej.O ( nδ)
Obliczenia M na wejściu x mogą być reprezentowane przez skończoną listę konfiguracji. Każda konfiguracja składa się ze stanu, pozycji na taśmie wejściowej, pozycji na taśmie roboczej i maksymalnie n bitów pamięci reprezentujących taśmę roboczą.
Teraz rozważmy, że taśma robocza została podzielona na pół. Innymi słowy, mamy lewą sekcję komórki i prawa sekcjann2) komórki. Każda konfiguracja może zostać podzielona na lewą i prawą część. Lewy kawałek składa się ze stanu, pozycji na taśmie wejściowej, pozycji na taśmie roboczej oraznn2) bity z lewej sekcji. Właściwy kawałek składa się ze stanu, pozycji na taśmie wejściowej, pozycji na taśmie roboczej oraznn2) bity z prawej sekcji.n2)
Teraz budujemy DFA którego stany są lewymi kawałkami, i DFA D 2, których stany są prawymi kawałkami. Znaki alfabetu to instrukcje określające, do którego stanu należy przejść, w jaki sposób powinny się poruszać głowice taśmy oraz jak manipulować aktywną komórką taśmy roboczej.re1 re2)
Chodzi o to, że i D 2 czytają listę instrukcji odpowiadających obliczeniu M na wejściu x i razem sprawdzają, czy jest poprawna i akceptuje. Zarówno D 1 i D 2 będzie zawsze uzgodnić gdzie głowice są dlatego, że informacje są zawarte w ich znaków wejściowych. Dlatego możemy poprosić D 1 o sprawdzenie, czy instrukcja jest odpowiednia, gdy pozycja taśmy roboczej znajduje się w lewym elemencie, a D 2 o sprawdzenie, czy w prawym elemencie.re1 re2) re1 re2) re1 re2)
W sumie co najwyżej jest dla każdej DFA co najwyżej P ° l r ( n ) oddzielnych liter alfabetu.p o l y( n ) ⋅ 2n / 2 p o l y( n )
Przy wstępnym założeniu, wynika, że można rozwiązać przecięcia non-pustkę dla w dwóch DFA czasu.p o l y( n ) ⋅ 2( δn / 2 )
Może ci się to przydać: https://rjlipton.wordpress.com/2009/08/17/on-the-intersection-of-finite-automata/
CNF-SAT można rozwiązać za pomocą bitów pamięci, gdzie k jest liczbą zmiennych. Powyższą konstrukcję można wykorzystać, aby pokazać, że jeśli uda nam się rozwiązać brak pustki przecięcia dla dwóch DFA w czasie O ( n δ ) , to możemy rozwiązać CNF-SAT w p o l y ( n ) ⋅ 2 ( δ k / 2 ) czas. Dlatego prosta odpowiedź jest ważna.k + O ( log( n ) ) O ( nδ) p o l y( n ) ⋅ 2( δk / 2 )
Komentarze, poprawki, sugestie i pytania są mile widziane. :)
źródło