任务是通过字母{0,1}为这种语言构建DFA。
我构建了一个由4个状态组成的DFA,它不接受空字。但是,在答案中,他们给出了接受它的3州DFA。
为什么我的DFA会接受一个空单词,如果在空单词中奇数位置没有1,这意味着它不在语言中?
答案 0 :(得分:2)
唯一的要求是奇数位置的任何符号必须为1
。不需要特定数量的符号,特别是不能存在至少一个符号。
因此,具有初始状态的DFA 0
导致拒绝状态,而1
导致第二个状态接受任一符号并返回到开头将是可接受的答案,并且会接受空字符串。这将是一个三态机器:
答案 1 :(得分:0)
我认为你很困惑,为什么空字符串应该是所提到的集合的一部分。
让我们来看看另一个例子。考虑你有一组所有可能的字符串,每个字符都等于0.这样的字符串将是0,00,000,000,等等。空字符串*怎么样?它实际上也属于这个集合。空字符串不违反集合的定义。
将此示例与您的示例进行比较。你应该检查字符串的每个奇怪位置,如果你发现除了1以外的任何东西,你应该说它不是你设置的元素。关于字符串是否应该有一个奇怪的位置进行检查,没有任何说法。