Рассмотрим язык different состоящий из всех строк k- букв над Σ, таких, что никакие две буквы не равны:L k - d i s t i n c t
L k - d i s t i n c t : = { w = σ 1 σ 2 . , , σ к | ∀ я ∈ [ к ] : σ я ∈ Е и ∀ J ≠ я : σ J ≠ σ я }
Этот язык конечен и поэтому регулярен. В частности, если | Σ | = n
Какой самый маленький недетерминированный конечный автомат принимает этот язык?
В настоящее время у меня есть следующие свободные верхние и нижние границы:
Наименьший NFA, который я могу построить, имеет состояний.4k(1+o(1))⋅polylog(n)
4k(1+o(1))⋅polylog(n) Следующая лемма подразумевает нижнюю оценку состояний:2k
2k
Пусть L⊆Σ∗
L⊆Σ∗ регулярный язык. Предположим, что существует nn пар P={(xi,wi)∣1≤i≤n}P={(xi,wi)∣1≤i≤n} таких что xi⋅wj∈Lxi⋅wj∈L тогда и только тогда, когда i=ji=j . Тогда любой NFA, принимающий L, имеет как минимум n состояний.
- Другая (тривиальная) нижняя граница - это log
log (nk)(nk) , которая представляет собой журнал размера наименьшего DFA для языка.
Меня также интересуют NFA, которые принимают только фиксированную дробь ( 0<ϵ<1
Редактировать: я только что начал щедрость с ошибкой в тексте.
Я имел в виду, что мы можем предположить, что k=polylog(n)
Edit2:
Награда скоро закончится, поэтому, если кто-то заинтересован в том, что, возможно, является более простым способом заработка, рассмотрите следующий язык:
L(r,k)−distinct:={w:w
(т. е. L(1,k)−distinct=Lk−distinct
Конструкция, аналогичная описанной в комментариях, дает автомат размером с для ,O(ek⋅2k⋅log(1+r)⋅poly(n))
Можно ли это улучшить? Какую лучшую нижнюю границу мы можем показать для этого языка?