【发布时间】:2014-09-13 23:23:37
【问题描述】:
我正在尝试开发一个在 Java 中执行非确定性有限自动机的模拟。第一个命令行参数是定义机器的文本文件。第二个参数是输入字符串。如果它接受字符串,它会打印到标准输出“accept”,然后是它可以结束的接受状态列表。如果它拒绝,它输出“reject”,然后是所有可能的结束状态的列表。
例如文字:
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
我需要关于使用什么数据结构的建议。我考虑过使用哈希图和集合,但我不确定。
【问题讨论】:
-
这台机器如何决定何时转换到另一个状态?
-
@tbodt 对于这个例子,如果当前状态是 2 并且正在读取的字符是 0 它可以转换到 1,2 或 7。所以我认为我必须通过所有可能的过渡到最终状态。
标签: java finite-automata nfa automaton automata-theory