Я не собираюсь давать вам закодированное решение, но приведу несколько направлений мысли.
Прежде всего, конечным автоматам нужны начальные и конечные состояния, поэтому вам не хватает важной информации.
Если вы создаете список строк, вы, вероятно, имеете дело с очень ограниченным подмножеством автоматов, которые принимают конечное количество строк. Поэтому разумно попробовать все возможности; проследите каждый путь по графику и печатайте всякий раз, когда вы попадете в конечное состояние.
Подумайте, что отличает DFSM от NDFSM. Это недетерминировано, если есть несколько способов ввода некоторого ввода. Итак, когда вы строите свой график, если у вас когда-либо есть узел с двумя идентичными переходами в разные состояния, это недетерминировано. Поскольку любой недетерминизм делает всю систему недетерминированной, детерминизм - это просто полное отсутствие недетерминизма.
Итак, вы, вероятно, захотите начать с создания представления. На ум приходят два простых способа. Более наглядно можно построить график. Самый простой способ сделать это - создать класс узла, а затем объект для каждого узла, содержащий пары переходов и мест назначения.
Я предпочитаю представлять конечные автоматы с помощью хеш-карты / словаря. Используйте узел и переход в качестве ключа с местом назначения в качестве значения. Это делает навигацию довольно простой.
Удачи!
РЕДАКТИРОВАТЬ: при определении недетерминизма не забудьте подумать о переходах эпсилон (как я только что сделал в течение секунды. :))
person
Cannoliopsida
schedule
16.06.2012