Онлайн-симулятор конечного автомата (FSM)
Симулируйте детерминированный конечный автомат: введите правила, начальное состояние и строку — получите путь и финальное состояние.
Начать работу
Пример работы
Пусть заданы правила:
q0,0,q0 q0,1,q1 q1,0,q0 q1,1,q1
Начальное состояние q0, входная строка 1011. Ожидаемый путь: q0 → q1 → q0 → q1 → q1, финальное состояние q1.
Ограничения и особенности
- Количество правил: от 1 до 200.
- Имена состояний: непустые, до 50 кодовых единиц UTF-16.
- Входной символ — ровно один символ Unicode (кодовая точка).
- Для каждой пары (состояние, символ) допускается только одно правило; дубликаты отклоняются.
- Входная строка обрабатывается по одному символу Unicode, максимальная длина — 10000 UTF-16 кодовых единиц.
- Если переход для текущего состояния и символа отсутствует, симуляция останавливается с ошибкой на этом символе.
- Инструмент не поддерживает принимающие состояния, эпсилон-переходы, недетерминизм, преобразование в регулярное выражение, минимизацию или диаграммы.
Часто задаваемые вопросы
Что делать, если я ввёл дублирующееся правило?
Симулятор отклонит дубликат, так как для каждой пары (состояние, символ) допускается только одно правило. Проверьте таблицу переходов и удалите повторяющиеся строки.
Почему симуляция останавливается с ошибкой?
Это происходит, когда для текущего состояния и очередного символа входной строки нет подходящего правила. Убедитесь, что все необходимые переходы заданы.
Можно ли использовать пробелы в именах состояний?
Да, имена состояний могут содержать пробелы, но не запятые, так как запятая используется как разделитель. Также символ входа не может быть запятой.
Проверка результата
Сравните полученный путь с ожидаемым. Для длинных входных строк сначала протестируйте короткий фрагмент, чтобы убедиться в корректности правил.
Имена состояний и начальное состояние ограничены 50 кодовыми единицами UTF-16, вход — 10000. Пробелы по краям полей правил удаляются; пробельный символ нельзя задать как входной. Начальное состояние вводите точно, с учётом регистра, без пробелов по краям. Пустой вход сохраняет начальное состояние. При отсутствии перехода выводится общая ошибка без позиции и частичного пути.
Обработка выполняется локально в вашем браузере.