我正在为我的计算课理论做作业,但对如何合并两个DFA有点困惑。该书说它使用“交叉口构造”来做到这一点,但是我不确定那是什么。这里有两个例子:

最佳答案

这个想法非常简单,尽管我可以看到困惑的根源。我将通过笛卡尔乘积机器结构(与您所说的相同)给出文本/符号描述相交(联合,差异)机器的制造过程。关于)。

DFA是5元组(E,Q,q0,A,f),其中

  • E是输入字母,是一组非空的有限符号
  • Q是状态集,非空和有限
  • q0是开始状态,是Q
  • 的元素
  • A是接受状态或最终状态的集合,是Q
  • 的子集
  • f是转换函数,从Q x E到Q


  • 假设我们有两台机器M'=(E',Q',q0',A',f')和M''=(E'',Q'',q0'',A'',f'') 。为了使讨论更加容易,我们假设E'= E''。现在,我们将构造M''',以便L(M''')= L(M')相交(或并集或差)L(M'')。
  • 以E'''= E''= E'
  • 取Q'''= Q'x Q''
  • 取q0'''=(q0',q0'')
  • 取A'''=(x,y)其中x在A'中且y在A''中(对于并集,x在A'中或y在A''中;对于差异,x在A'中而不是在a中”)。
  • 取f'''(((x,y),e)=(f'(x,e),f''(y,e))。

  • 你去!现在让我们考虑两台机器:一台接受a ^ 2n,另一台接受a ^ 3n(交集应该是一台接受a ^ 6n ...的机器...对吗?)。

    对于M',我们有...
  • E'= {a}
  • Q'= {s0,s1}
  • q0'= s0
  • A'= {s0}
  • f'(s0,a)= s1,f'(s1,a)= s0

  • 对于M'',我们有...
  • E''= {a}
  • Q''= {t0,t1,t2}
  • q0''= t0
  • A''= {t0}
  • f''(t0,a)= t1,f''(t1,a)= t2,f''(t2,a)= t0

  • 对于M''',我们得到...
  • E'''= {a}
  • Q'''= {(s0,t0),(s0,t1),(s0,t2),(s1,t0),(s1,t1),(s1,t2)}
  • q0'''=(s0,t0)
  • A'''= {(s0,t0)}表示交集,{(s0,t0),(s0,t1),(s0,t2),(s1,t0)}表示联合,{(s0,t1) ,(s0,t2)}。
  • f'''(((s0,t0),a)=(s1,t1),f'''((s1,t1),a)=(s0,t2),f'''((s0,t2 ),a)=(s1,t0),f'''((s1,t0),a)=(s0,t1),f'''((s0,t1),a)=(s1,t2) ,f'''(((s1,t2),a)=(s0,t0)。

  • 然后你去!请让我知道是否需要澄清。

    10-07 12:02