【问题标题】:DFA for odd sequences of 1 and 01 和 0 的奇数序列的 DFA
【发布时间】:2021-12-15 17:03:43
【问题描述】:

我想为语言 {1,0} 创建一个 DFA,它只接受从奇数 1 和 0 的序列构建的单词。 我发现了许多 DFA 示例,字符串中的偶数/奇数为 0 和 1,但不是在该字符串的每个序列中。我无法掌握如何创建所述图表。应该构建 4 个状态还是 3 个状态?

刚刚想到一件事,这是正确的还是我在这里弄错了?

好的,这个是错的,但也许这个? 然而,有了这个,我觉得你总是必须从一个 1 或一个 0 开始,并且在第一个序列中不会得到更多,所以它并不完美......

亲切的问候,

【问题讨论】:

  • “奇数 1 和 0 的序列”到底是什么意思?单词中的每组 1 或 0 必须有一个奇数长度?即例如 1000111 将是一个有效的词 100011 不会?
  • 没错,1000111, 1110111000, 01000111 是有效的
  • 嗯,假设最左边的状态是您的起始状态,您的 DFA 会例如接受 1101,如果我理解正确的话,这是错误的。并且它不会接受任何以 01xxx 或 10xxx 开头的单词
  • 在你的图中,哪个是起始状态?右边的国家是接受还是拒绝?尝试使用它逐步完成一些示例。
  • 最左边的一个是开始的,最右边的一个是接受的,是的,我刚刚看到,如果不是序列,这会没问题...

标签: sequence dfa


【解决方案1】:

给出一个确定性有限自动机,它接受字母表 {0, 1} 上的这些单词,其中每个系列的 0 和每个系列的 1 的长度都是奇数。

不是 100% 明确的。我个人理解,空词和仅由 0s 或仅由 1s 组成的词也是语言的一部分(如果它的长度为奇数)。然后像下面这样的东西应该可以解决问题。

State 1 是起始状态。 “上”分支(即状态 2、3)用于接受任何奇数个 0,“下”分支(即状态 4,5)接受任何奇数个 1。您只能通过读取相应符号的单个实例(从空字开始,或在读取相应其他符号的奇数之后)“进入”相应分支。

例如单词1000111110001。读完一个1 后,您处于4 状态。通过读取单个0,您切换到“上层分支”,现在可以读取任何偶数(在本例中为2)0,这将始终使您回到接受状态2。在3 状态下读取1 是不可能的(因为这个词是无效的)。在状态 2 中读取单个 1 会使您回到状态 4。从这里与上面类似,您可以读取1 的任何偶数(在本例中为4),这将始终使您回到接受状态4。等等等等。如果在偶数个相等符号后符号发生变化(或单词结束),则您处于状态3 或5,两者都不接受,因此单词不会被接受。

【讨论】:

  • 太棒了,谢谢。另外,由于某种原因,我不知道您可以有多个状态来结束单词(请记住这一点)。我还在学习这件事,不知何故一定错过了这件事。也许我正在看的例子让我这么想。无论如何,再次感谢您的帮助:)
猜你喜欢
  • 1970-01-01
  • 2019-09-01
  • 2015-08-21
  • 2013-08-05
  • 2012-12-16
  • 1970-01-01
  • 2016-01-03
  • 1970-01-01
  • 2017-06-25
相关资源
最近更新 更多