例如:给定以下符号序列,
a b c b c d d d b c b c d d d d e
可以接受它的最简单的 DFA 是 17 个状态的链。
而下面的正则表达式可以推导出上面的序列:
a (b c)* (d)* (b c)* (d)* e
对应的最小 DFA 有 8 个状态。
此外,正则表达式的a ((b c)* (d)*)* e
最小 DFA 更小,有 4 个状态。它可以接受示例序列。
在上面的例子中,我只考虑了*
运算符;更一般地,算子|
也可以考虑减小 DFA 的大小。
所以,一般的问题是:
给定一个符号序列,如何找到能够接受它的最小 DFA?