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