Построение машины Мура
У меня есть домашнее задание:
Построить машину Мура, которая принимает строку, состоящую из букв a и b, и выводит строку, содержащую 1 в конце каждой подстроки abc и 0 во всех других позициях. например, input, aabcb производит вывод 000010
Я пытался строить, но я зашел в тупик. Вот моя попытка:
Как вы можете видеть, я не могу создать строку cccb, а 'abc' может вывести 0. Я чувствую, что я слишком усложнил эту простую проблему.
РЕДАКТИРОВАТЬ: сделал перерыв и переделал его. Я думаю, что это правильно, если кто-то не скажет мне иначе:
2 ответа
Решение
Я постараюсь помочь вам, не портя ответ:
- Почему вы используете второй цикл (нижний треугольник)?
- Как бы вы реализовали машину, которая успешно останавливается после нахождения подпоследовательности?
- Что нужно сделать, чтобы он работал бесконечно? Убедитесь сами, что ошибка, соответствующая подпоследовательности, эквивалентна исходному состоянию.
Я решил это, используя только четыре состояния, но, возможно, есть решение только с тремя. Должно быть ясно, что вы не можете стать лучше, чем это.