【发布时间】:2013-12-03 08:35:05
【问题描述】:
我需要证明,对于每个 k,都有一个具有 k+2 个状态的 DFA M,因此在每个接受语言 reverse(L(M)) 的自动机 M' 中,至少有 2^k 个状态。
非常感谢您的帮助。
谢谢:)
【问题讨论】:
标签: finite-automata automata formal-languages
我需要证明,对于每个 k,都有一个具有 k+2 个状态的 DFA M,因此在每个接受语言 reverse(L(M)) 的自动机 M' 中,至少有 2^k 个状态。
非常感谢您的帮助。
谢谢:)
【问题讨论】:
标签: finite-automata automata formal-languages
假设字母集至少包含两个元素,则设为{0,1}。
接下来,让M 成为接受语言L 定义为的自动机:
第k个位置为1的所有字符串
定义为:
M = {Q,{0,1},q0,{qk+1},δ},其中
Q={q0,q1,...,qk,qF}
δ(qi,a) = qi+1,对于 {0,1} 中的 a 和 i=0,1,...,k -2
δ(qk-1,0) = qF,
δ(qk-1,1) = qk,
δ(qF,a) = qF,对于 {0,1}
中的 a
请注意,M 恰好具有 k+2 状态,并且它接受语言 L。
现在,请注意语言reverse(L(M)) 可以翻译为:
从末尾开始第k个位置为1的所有字符串
要识别该语言,请注意我们需要记住最后 k 个符号,因为我们不知道字符串何时结束。我们知道至少有 2k 个可能的长度为 k 的字符串(因为字母表大小至少为 2)。
所以使用 DFA,我们至少需要 2k 个状态,每个状态代表一个可能的长度为 k 的字符串。 ▢
这个证明的想法是找到一种以正常方式“容易”识别但向后阅读时“困难”的语言。通过经验,我记得从开始开始固定第k个位置是“容易的”,而从结束开始第k个位置是“困难”,因此我的回答。
【讨论】: