【问题标题】:Minimum number of states needed?需要的最少状态数?
【发布时间】:2011-02-13 14:55:18
【问题描述】:

用字母 { a } 对语言 L 的定义如下

L = { ank | k > 0 ; n 是一个正整数常数 }

在 DFA 中识别 L 所需的状态数是多少?


在我看来应该是 k+1 但我不确定。

【问题讨论】:

    标签: finite-automata computation-theory dfa


    【解决方案1】:

    语言 L 可以被具有 n+1 个状态的 DFA 识别。

    观察 L 中任何字符串的长度都等于 0 mod n。

    用整数 0, 1, 2, ... n-1 标记状态的 n,表示每个可能的余数。附加状态 S 是起始状态。 S 有一个单一的转换,到状态 1。如果机器当前处于状态 i,在输入时它移动到状态 (i+1) mod n。状态 0 是 唯一的接受状态。 (如果空字符串是 L 的一部分,我们可以消除 S 并使状态 0 成为开始状态。

    假设有一个具有少于 n+​​1 个状态的 DFA 仍然可以识别 L。考虑状态序列 S0, S1, ... San 时遇到 sub>n。 Sn 必须是一个接受状态,因为 an 在 L 中。但是由于这个 DFA 中的不同状态少于 n+​​1 个,根据鸽巢原理,一定有某个状态至少被访问过两次。删除该循环会给出另一个路径(和另一个接受的字符串),长度 0 到 Sn。但是 L 不包含比 n 短的字符串,这与我们的假设相矛盾。因此,没有少于 n+​​1 个状态的 DFA 可以识别 L。

    【讨论】:

    • 这是否排除了较小 DFA 的存在?我认为这个证明要复杂得多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    • 2021-09-18
    • 2011-08-12
    • 1970-01-01
    • 2020-03-24
    相关资源
    最近更新 更多