构造 dfa,它接受所有以“1”开头且在 {0,1} 上包含子字符串“11”的字符串。请详细解释一下

问题描述 投票:0回答:1

我目前正在开发确定性有限自动机(DFA)来接受某些二进制字符串,但我遇到了一个问题。我测试了字符串“10011”,它被拒绝,但我相信它应该被接受。

这是我创建的DFA:(https://i.sstatic.net/AWKh7b8J.jpg)

问题:

  • 输入字符串:“10011”
  • 预期结果:已接受 实际结果:拒绝 我尝试过的:
  • 我通过 DFA 跟踪了字符串“10011”的转换,但最终处于不接受状态。
  • 我已经仔细检查了我的状态转换和接受状态,但我不知道哪里出了问题。 问题:
  • 有人可以帮助我确定我的 DFA 设计是否存在问题吗?
  • 我应该检查哪些具体方面以确保 DFA 正确处理字符串? 任何指导将不胜感激!
computer-science automaton finite-state-automaton
1个回答
0
投票

从你的DFA中可以清楚地看出,输入“01”后,最终处于“trap”状态。这是不对的。唯一一次不可能再获得有效输入的情况是输入以“0”开头的情况。对于任何以“1”开头的输入,应该始终有一种方法来扩展输入以进入接受状态。所以不应该有从状态 q1 到“陷阱”状态的转换。

您需要一个附加状态,q3,这是您已读取一个或多个“0”的状态(其后面可能仍然有“1”甚至“11”)。

以下是带有附加状态的 DFA 的外观:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.