【问题标题】:Finding the DFA寻找 DFA
【发布时间】:2014-04-06 23:20:00
【问题描述】:

创建一个 DFA,使得 L 下标 4 = {0,1}* - {0,01}* 并按字典顺序列出前五个字符串。

我无法推断 L 下标 4 的含义,它是一种长度为 4 的字符串语言吗?另外,当我们减去两种语言时,我们是否可以选择从空字符串中减去字符串“1”,意思是可以选择长度为 0 的 {0,01}* 减去长度为 1 的第一个 {0,1}* ?

【问题讨论】:

  • 通常只表示名称为“L subscript 4”的语言
  • 你不能减去字符串。这是否意味着您应该从另一种语言中减去一种语言:L_4 = L({0,1}*) - L({0,01}*)
  • 你说得对,Bergi,我指的是语言 {0,1}*,但字符串是指语言创建的字符串。
  • 我认为你的问题没有任何意义(不再)。你介意改写关于“选择字符串”的部分吗?减去语言的工作方式类似于设置差异:“L1 中不在 L2 中的所有字符串”
  • @azureskys learn complement dfa L = {0, 1}* - {0, 01}* 表示语言的补充{0, 01}*

标签: regular-language dfa


【解决方案1】:

语言 {0,01}* 是一组字符串,在每个 1 之前应该有一个 0。例如,00010001 是这种语言,但 10000 或 0001111 不是。另一方面,{0,1}* 是所有带有字母 {0,1} 的字符串。现在减去这些结果,一种语言至少有一个 1,并且所有 1 都在任何 0 之前。例如,1111000 在 L_4 中,但 000000 或 011111 不在。

【讨论】:

    【解决方案2】:

    符号 {0, 1}* - {0, 01}* 是设置减法 - 它表示“{0, 1}* 中不在 {0, 01}* 中的所有字符串的语言。”当他们写作时

    L4 = {0, 1}* - {0, 01}*

    我相信他们正在定义一种名为 L4 的新语言,它与上述表达式相同。

    要解决这个问题,您可能会发现注意到 L4 是语言 {0, 01}* 的补码很有用。解决此问题的一种方法是为 {0, 01} * 构建 DFA,然后翻转所有接受和拒绝状态。这将为您提供 L4 的 DFA。

    我将把剩下的问题留给读者作为练习。 :-)

    【讨论】:

      猜你喜欢
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      • 2013-06-23
      • 1970-01-01
      • 2011-02-19
      • 2021-10-17
      • 2022-01-23
      • 2011-02-23
      相关资源
      最近更新 更多