DFA最小化了多少?

时间:2017-07-11 12:42:14

标签: computation-theory dfa

状态{A,B}超过字母= {a,b},可以使用多少最小DFA?我已经解决了这个问题并获得了122作为答案。我拿了两个案子 1.具有2个状态的最小DFA 2.具有1个状态的最小DFA

在案例1中,A和B的所有4个案例都是最终的,一个是最终的,一个是非最终的,都是非最终的。所以总数是120

在案例2中有两个单一状态DFA。

希望我的问题很清楚。这是正确的答案吗?如果不是,请回答解释。

1 个答案:

答案 0 :(得分:3)

(以下假设我们正在讨论完整的DFA - 也就是说,每个可能的转换都定义为明确定义的状态的DFA。这与可能缺少转换的不完整DFA相反。)

一个重要的澄清:并非所有双态DFA都是最小的。

  • 例如,没有接受状态的任何双状态DFA相当于没有接受状态的单状态DFA,每个转换都进入和来自单个状态。
  • 如果你最终得到一个双状态DFA,其中没有转换离开起始状态,这不是一个最小的DFA。
  • 如果两个州都在接受,那么DFA相当于接受每个字符串的单州DFA。

您对单态DFA的分析是正确的。有两种:DFA接受字母表中的所有字符串,DFA不接受字母表中的字符串。

对于双态DFA,每个州都可以是接受状态。有4种这样的配置。根据上述观察,其中两个并不是最小的。

过渡具有以下属性:

  • 每个转换都有一个起始状态,一个目标状态和一个字母表中的字母。
  • 每个州都有两个过渡({a,b}中每个字母一个过渡。)
  • 每次转换都有两个可能的目的地(A或B)。

双态DFA中的转换次数=状态数*字母大小= 2 * 2 = 4每次转换都成对出现(例如,对于转换{A,a} - > x,x可以是只有A或B)。有4个这样的对,每个都有二元选择,总共16个转换配置(2^4 = 16)。

接受状态有2种有效的最小配置(A接受,B不接受; B接受,A不接受)。

因此,可能的最小双态DFA的最大值为2 * 16 = 32。其中一些DFA不会很小。 32是上限。

至少有8个不是最小的。这些对应于8个双态DFA,其中从起始状态的转换在起始状态结束。

所以24是一个更严格的上界,我相信这是双态DFA的最小数量。

另一种解决此问题的方法(以及我如何找到自己的错误)是考虑最小双态DFA的结构。每个都有两种状态,可以是两种配置(A接受,或B接受,但不是两者或两者都没有),乘数为2.A(起始)状态必须有一个从A到B的转换(有两种选择)字符(a或b),或从A到B的两个转换,乘数为3.B状态对其转换没有限制,因此它总共有4个可能的转换,乘数为4。检查2 * 3 * 4 = 24以确认上述分析。