如何计算常规语言的最小抽水长度。例如,如果我有0001 *那么最小泵送长度应该是4,那就是000不能泵送。为什么会这样?
答案 0 :(得分:1)
它将小于或等于语言的最小DFA中的状态数减去1。因此,将正则表达式转换为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可能缺少这种长度的路径。在这种情况下,您可以通过使用深度优先搜索自动机的图形以及查看路径可以使用多长时间来找到两次无法访问状态的最长路径(从开始状态)跟踪。那将是你真正的答案。