确定性有限状态自动机问题

时间:2011-09-22 09:55:25

标签: math set theory set-theory

我把这个DFA描述为(Q,q1,A,N,F),其中

  

Q = {1,2,3,4},
  q1 = 1,
  A = {a,b,c},
  F = {2,4},
  N = {
  (1,a) - > 2,(1,b) - > 3,(1,c) - > 4,
  (2,a) - > 2,(2,b) - > 4,
  (3,a) - > 2,(3,c) - > 4,
  (4,b) - > 4,(4,c) - > 4}

所以我绘制了转换图,看起来很好,

然后我需要弄清楚这个DFA是否接受以下字符串:

  1. 为aabbcc
  2. ACACAC
  3. cabbac
  4. BABBAB
  5. 并提出以下

    1. 正确
    2. 不正确(无法从 - > c移动?)
    3. 不正确(无法从c -a移动?)
    4. 不正确(无法从b - > a移动)
    5. 我并非100%确定这些是正确的,但认为它们是在正确的轨道上。

      然后我需要用英语描述这种接受的语言,我认为这不是一个问题,但我需要帮助的地方是使用数学符号来描述这种语言。你能帮我理解一下吗。

      非常感谢你的帮助

1 个答案:

答案 0 :(得分:0)

您对字符串可接受性的回答是正确的,可以通过尝试在图表中跟踪它们来轻松看出 现在,关于语言:

在第2个顶点,我们可以用对应的正则表达式的单词结束:
b?a+ - 我们可以选择首先获取b我移动到第3个顶点,然后通过a,或者我们可以通过a移动到第2个顶点曾经,我们可以根据需要添加a个。{/ p>

现在关于完成第4个顶点的单词:

首先,我们如何到达顶点4?
 1.我们可以首先通过c一次移动到达顶点4,或者首先移动到第3个顶点,获得b,然后通过c移动到第4个。因此,我们得到像b?c
这样的字符串 2.我们可以使用b?a+(如前面的例子中所述)到达顶点2,然后通过b。因此,我们得到像b?a+b这样的字符串 总的来说,我们可以使用与b?(a+b|c)正则表达式匹配的任何单词到达第4个顶点。

现在,在顶点4的末尾添加任意数量的bc符号,我们得到了这种情况的答案:
b?(a+b|c)(bc)*

最后,我们可以将这个DFA单词所接受的整个单词集合作为以下正则表达式:

b?( a+ | (a+b|c)(bc)*? )