如何计算正则语言的最小泵送长度。例如,如果我有 0001*,则最小泵送长度应为 4,即 000 无法泵送。为什么会这样呢?
它将小于或等于该语言的最小 DFA 中的状态数减一。因此,将正则表达式转换为 DFA,最小化它,并对状态进行计数。对于你的例子:
0001*
SOURCE SYMBOL DESTINATION
q1 0 q2
q1 1 q5
q2 0 q3
q2 1 q5
q3 0 q4
q3 1 q5
q4 0 q5
q4 1 q4
q5 0 q5
q5 1 q5
为什么等于这个呢?因为这是您可以在 DFA 中进行的最大转换次数,而无需访问某个状态两次。一旦你访问一个州两次,你就已经循环了。
当然,语言的最小 DFA 可能缺少那么长的路径。在这种情况下,您可以通过使用自动机图的深度优先搜索之类的方法并查看可以跟踪的路径有多长,找到不会两次访问某个状态的最长路径(从起始状态开始)。这才是你真正的答案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)