Я не собираюсь давать вам кодированное решение, но некоторые направления мысли.
Прежде всего, FSMs должны иметь начальные состояния и конечные состояния, поэтому вам не хватает важной информации.
Если вы создаете список строк, вы, вероятно, имеете дело с очень ограниченным подмножеством FSM, которые принимают конечное число строк. Поэтому разумно попробовать любую возможность; следовать по каждому пути через график и печатать каждый раз, когда вы нажимаете конечное состояние.
Подумайте о том, что отличает DFSM от NDFSM. Он не является детерминированным, если есть несколько способов пойти с некоторым вводом. Итак, когда вы строите свой график, если у вас когда-либо есть узел с двумя идентичными переходами в разные состояния, это не детерминировано. Поскольку любой недетерминизм делает всю систему недетерминированной, детерминизм - это просто полное отсутствие недетерминированности.
Итак, вы, вероятно, захотите начать с создания представления. Приходят на ум два простых способа. Более визуально вы можете создать график. Самый простой способ сделать это - создать класс узла, затем объект для каждого узла, содержащий пары переходов и пунктов назначения.
Способ, которым я предпочитаю представлять FSMs, имеет хеш-карту/словарь. Используйте узел и переход как ключ с назначением в качестве значения. Это делает навигацию довольно простой.
Удачи вам!
EDIT: При определении индетерминизма, не забывайте думать о эпсилоне переходах (как я только что сделал на секунду :).)
ли это домашнее задание? Что вы пробовали? –
@home нехорошо просить полного решения, он должен продемонстрировать значительные усилия. –