Rozważ niedeterministyczny automat skończony i funkcję . Dodatkowo definiujemy .
Teraz przeanalizujmy następujące oświadczenie:
Jeżeli , to .
Łatwo jest wykazać, że dla jest to prawdą, dlatego jeśli automaty produkują każde słowo o długości do , a następnie daje .
Ale czy nadal tak jest, jeśli jest wielomianem?
Odpowiedzi:
Aby wypowiedź mogła się utrzymać, f musi rosnąć wykładniczo, nawet w przypadku jednoznacznego alfabetu.
[Edycja: Analiza została nieznacznie poprawiona w wersji 2.]
Oto szkic próbny. Załóżmy, że instrukcja posiada i niech f będzie funkcją taką, że każdy NFA z najwyżej n stanami, które akceptują wszystkie łańcuchy o długości co najwyżej f ( n ), akceptuje wszystkie łańcuchy. Udowodnimy, że dla każdego C > 0 i wystarczająco dużego n mamy f ( n )> 2 C ⋅√ n .
Liczba pierwsza twierdzenie oznacza, że dla każdego c <lg E i dla dostatecznie dużej k , istnieją co najmniej c ⋅2 k / k liczb pierwszych w zakresie [2 k 2 k + 1 ]. Bierzemy c = 1. Dla takiego k , niech N k = ⌈2 k / k ⌉ i zdefiniuj NFA M k w następujący sposób. Niech p 1 ,…, p N k będą różnymi liczbami pierwszymi w zakresie [2 k , 2 k +1]. NFA M K ma S k = 1 + s 1 + + ... p N k stanów. Niezależnie od stanu pierwotnego stany są podzielone na N k cykli gdzie i tym cyklu ma długość p ı . W każdym cyklu wszystkie stany oprócz jednego są stanami akceptowanymi. Początkowy stan ma N k wychodzące krawędzie, z których każdy przechodzi do stanu bezpośrednio po odrzuconej państwa w każdym cyklu. Wreszcie, stan początkowy jest również akceptowany.
Niech P k będzie iloczynem p 1 … p N k . Łatwo jest zauważyć, że M k akceptuje wszystkie ciągi o długości mniejszej niż P k ale odrzuca ciąg długość P k . Dlatego f ( S k ) ≥ P k .
Należy zauważyć, że S k ≤ 1 + N k ⋅2 k +1 = o (2 2 k ) i że P k ≥ (2 k ) N k ≥ 2 2 k . Reszta jest standardem.
źródło
EDYCJA AT 10/12/06:
ok, to prawie najlepsza konstrukcja, jaką mogę uzyskać, zobacz, czy ktoś wpadnie na lepsze pomysły.
To da nam .f(n)=Ω(2n/5)
Konstrukcja jest prawie taka sama jak w Shallit , z tym wyjątkiem, że konstruujemy NFA bezpośrednio zamiast reprezentowania języka przez wyrażenie regularne. Pozwolić
Dla każdego zbudujemy język rozpoznający NFA , gdzie jest następującą sekwencją ( na przykład ):n Σ∗−{sn} sn n=3
Chodzi o to, że możemy zbudować NFA składający się z pięciu części;
Zauważ, że chcemy zaakceptować zamiast , więc gdy dowiemy się, że sekwencja wejściowa jest niezgodna z jednym z powyższych zachowań, natychmiast ją akceptujemy. W przeciwnym razie pokroki, NFA będzie w jedynym możliwym stanie odrzucenia. A jeśli sekwencja jest dłuższa niż, NFA również akceptuje. Tak więc każdy NFA spełnia powyższe pięć warunków tylko odrzuca .Σ∗−{sn} {sn} |sn| |sn| sn
Bezpośrednim sprawdzeniem poniższej figury zamiast rygorystycznego dowodu może być:
Zaczynamy w lewym górnym rogu. Pierwsza część to starter i licznik, następnie spójny kontroler, terminator, a na końcu kontroler add-one. Cały łuk bez węzłów końcowych wskazuje na dolny prawy stan, który jest akceptorem przez cały czas. Niektóre krawędzie nie są oznakowane z powodu braku spacji, ale można je łatwo odzyskać. Linia przerywana reprezentuje sekwencję stanów z krawędziami .n−1 n−2
Możemy (z bólem) zweryfikować, czy NFA odrzuca tylko , ponieważ przestrzega wszystkich pięciu powyższych zasad. Tak więc zbudowano NFA z , co spełnia wymaganie twierdzenia.sn (5n+12) |Σ|=5
Jeśli jest jakaś niejasność / problem z konstrukcją, proszę zostawić komentarz, a ja postaram się wyjaśnić / naprawić.
To pytanie zostało zbadane przez Jeffreya O. Shallita i in., A faktycznie optymalna wartość jest wciąż otwarta dla . (Jeśli chodzi o język jednoargumentowy, zobacz komentarze w odpowiedzi Tsuyoshi )f(n) |Σ|>1
Na stronach 46-51 swojego wystąpienia na temat uniwersalności przedstawił konstrukcję, która:
Zatem optymalna wartość dla wynosi gdzieś między a . Nie jestem pewien, czy wynik Shallita poprawił się w ostatnich latach.f(n) 2n/75 2n
źródło