РЕДАКТИРОВАТЬ В 10/12/06:
хорошо, это в значительной степени лучшая конструкция, которую я могу получить, посмотрим, если кто-нибудь придумает лучшие идеи.
Теорема. Для каждого существует ( 5 n + 12 ) -состояния NFA M над алфавитами Σ с | Σ | = 5 так , что самая короткая строка, не входящая в L ( M ), имеет длину ( 2 n - 1 ) ( n + 1 ) + 1 .n(5n+12)MΣ|Σ|=5L(M)(2n−1)(n+1)+1
Это даст нам .f(n)=Ω(2n/5)
Конструкция почти такая же, как у Шаллита , за исключением того, что мы создаем NFA напрямую, вместо того, чтобы сначала представлять язык регулярным выражением. Позволять
.Σ={[00],[01],[10],[11],♯}
Для каждого мы собираемся построить язык распознавания NFA Σ ∗ - { s n } , где s n - следующая последовательность (например, n = 3 ):nΣ∗−{sn}snn=3
.s3=♯[00][00][01]♯[00][01][10]♯…♯[11][11][01]♯
Идея в том, что мы можем построить NFA состоит из пяти частей;
- стартер , который обеспечивает строка начинается с ;♯[00][00][01]♯
- терминатор , который обеспечивает струнные концы с ;♯[11][11][01]♯
- счетчик , который хранит число символов между двумя «S , как п ;♯n
- средство проверки add-one , которое гарантирует, что только символы с формой появляется x + 1 ;; Ну наконец то,♯xx+1♯
- последовательная проверка , которая гарантирует , что только символы с формой могут появляться одновременно.♯xy♯yz♯
Обратите внимание, что мы хотим принять вместо { s n } , поэтому, как только мы узнаем, что входная последовательность не подчиняется одному из описанных выше способов поведения, мы немедленно принимаем последовательность. В противном случае после | с н | шаги, NFA будет в единственно возможном состоянии отказа. И если последовательность длиннее, чем | с н | НФА также принимает. Таким образом, любой NFA, удовлетворяющий вышеуказанным пяти условиям, будет отклонять только s n .Σ∗−{sn}{sn}|sn||sn|sn
Может быть легко проверить следующую фигуру непосредственно вместо строгого доказательства:
Мы начинаем с верхнего левого состояния. Первая часть - это стартер, а затем счетчик, затем согласованный контролер, терминатор, и, наконец, проверка на добавление. Вся дуга без конечных узлов указывает на нижнее правое состояние, которое является постоянным акцептором. Некоторые края не помечены из-за отсутствия пробелов, но их можно легко восстановить. Штриховая линия представляет последовательность из состояний с n - 2 ребрами.n−1n−2
Мы можем (мучительно) проверить, что NFA отклоняет только , поскольку оно следует всем пяти вышеприведенным правилам. Итак ( 5 n + 12 ) -состояния NFA с | Σ | = 5 , что удовлетворяет требованию теоремы.sn(5n+12)|Σ|=5
Если есть какие-то неясности / проблемы со строительством, пожалуйста, оставьте комментарий, и я постараюсь объяснить / исправить это.
f(n)|Σ|>1
На странице 46-51 своего выступления об универсальности он представил такую конструкцию, которая:
Theorem. For n≥N for some N large enough, there is an n-state NFA M over binary alphabets such that the shortest string not in L(M) is of length Ω(2cn) for c=1/75.
Thus the optimal value for f(n) is somewhere between 2n/75 and 2n. I'm not sure if the result by Shallit has been improved in recent years.