Процедура конечного автомата

Мне нужно разработать эффективную процедуру принятия решения, чтобы определить, является ли язык, принятый недетерминированным конечным автоматом, пустым.

Я знаю, что машина не принимает строку, если нет пути от начального состояния к конечному состоянию.

Но я изо всех сил пытаюсь доказать это или разработать процедуру.

Спасибо


person user10543640    schedule 09.04.2019    source источник
comment
Что вы пробовали до сих пор, и где вы застряли? Где терпит неудачу наивный подход поиска множества всех лямбда-достижимых состояний из начального состояния?   -  person Welbog    schedule 09.04.2019
comment
Я думаю, мне не нужно идти, как вы сказали.   -  person user10543640    schedule 09.04.2019
comment
Как вы думаете, что вам нужно сделать? Без более конкретной информации ваш вопрос слишком открыт, чтобы люди могли помочь.   -  person Welbog    schedule 09.04.2019


Ответы (1)


Итак, как вы сказали, вы выполняете поиск в глубину или в ширину из начального состояния и печатаете «нет», если вы сталкиваетесь с принимающим состоянием. Если поиск завершается без вывода «нет», выведите «да».

Доказательство того, что это работает, легко, если вы используете DFS в качестве поиска. Затем, выполняя поиск, отслеживайте последовательность символов, которые вы уже встречали на ветке. Если вы дойдете до состояния принятия, строка, которую вы видели, является строкой, принятой DFA; вы можете выплюнуть это как контрпример к пустому языку. Вы не можете получить лучшее доказательство, чем контрпример.

person Patrick87    schedule 09.04.2019