0
我制作了来自正则表达式3d数组的NFA,例如(01 *)表达式。我得到它:如何检查我的线是否与NFA相符?
[[FROM,TO,TRANSITION]]
[['q0', 'q1', '0'], ['q1', 'q2', ':e:'] ,['q1', 'q4', ':e:'] ,
['q2', 'q3', '1'], ['q3', 'q2', ':e:'], ['q3', 'q4', ':e:']
如何编写一个方法,可以测试满足此自动机的字符串?例如"011111"
将返回q0 q1 q2 q3 q2 q3 q2 q3 q2 q3 q2 q3 q4
那么,如果自动机是确定性的,你会知道该怎么做吗? – timgeb
(如果是的话,将搜索引擎foo应用于构建DFA的算法) – timgeb
您可以使用很多现有的库,因此您不必重新编写该weel。我建议使用http://www.brics.dk/automaton/,这是一种适用于Java的工业强度,易于使用的自动机包。它确实是你想要的。如果您需要更多关于为了匹配给定字符串而采取的特定转换的更多信息,扩展Automaton类也很容易。 – Julian