Я пытаюсь разработать симуляцию, которая выполняет не детерминированный конечный автомат в Java. Первый аргумент командной строки - это текстовый файл, который определяет машину. Второй аргумент - входная строка. Если он принимает строку, он печатает на стандартный вывод «accept», за которым следует список состояний accept, в котором он может закончиться. Если он отклоняет, он выдает «reject», а затем список всех возможных конечных состояний.Внедрение недетерминированного конечного автомата (NFA)
Например, текст:
state 1 start
state 2
state 7 accept
transition 1 0 1
transition 1 1 1
transition 1 0 2
transition 2 0 2
transition 2 0 1
transition 2 1 1
transition 2 0 7
transition 7 0 7
transition 7 1 7
, который выглядит следующим образом:
с входной строкой 10 будет выходные
reject 1 2
и с входной строкой из 000 будет производить
accept 7
Мне нужен совет относительно того, какие структуры данных использовать. Я думал об использовании hashmaps и наборов, но я не уверен.
Как эта машина решает, когда перейти в другое состояние? – tbodt
@tbodt Для этого примера, если текущее состояние равно 2, а прочитанный символ равен 0, он может перейти на 1,2 или 7. Поэтому я думаю, что мне нужно пройти все возможные переходы, чтобы добраться до конечных состояний , – donth77