Процедура конечного автомата - PullRequest
1 голос
/ 09 апреля 2019

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

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

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

Спасибо

1 Ответ

0 голосов
/ 09 апреля 2019

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

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

...