EDYCJA AT 10/12/06:
ok, to prawie najlepsza konstrukcja, jaką mogę uzyskać, zobacz, czy ktoś wpadnie na lepsze pomysły.
Twierdzenie. Dla każdego Istnieje NFA nad alfabetami z tak że najkrótszy ciąg nie w ma długość .( 5 n + 12 ) M Σ | Σ | = 5 L ( M ) ( 2 n - 1 ) ( n + 1 ) + 1n(5n+12)MΣ|Σ|=5L(M)(2n−1)(n+1)+1
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ć
Σ={[00],[01],[10],[11],♯} .
Dla każdego zbudujemy język rozpoznający NFA , gdzie jest następującą sekwencją ( na przykład ):nΣ∗−{sn}snn=3
s3=♯[00][00][01]♯[00][01][10]♯…♯[11][11][01]♯ .
Chodzi o to, że możemy zbudować NFA składający się z pięciu części;
- rozrusznik , który zapewnia rozpoczyna ciągów ;♯[00][00][01]♯
- terminator , który zapewnia końce ciągów ;♯[11][11][01]♯
- licznik , który utrzymuje liczbę symboli między dwoma „S, ;♯n
- dodatek jednego rejestratora , który gwarantuje, że tylko symbole z postaci pojawia; Wreszcie,♯xx+1♯
- zgodne sprawdzania , co zapewnia, że tylko symbole z postaci mogą pojawić się równocześnie.♯xy♯yz♯
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−1n−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:
Twierdzenie. Dla dla niektórych wystarczająco dużych, istnieje NFA nad binarnymi alfabetami, tak że najkrótszy ciąg nie w ma długość dla .n≥NNnML(M)Ω(2cn)c=1/75
Zatem optymalna wartość dla wynosi gdzieś między a . Nie jestem pewien, czy wynik Shallita poprawił się w ostatnich latach.f(n)2n/752n