从交错字符串学习确定性有限自动机(DFA)
1. 语言的可测试性与可逆性分析
在研究语言特性时,我们关注从语言 L 到其交错语言 L2 的 k - 可测试性和 k - 可逆性是否能可靠保留。
有这样一种语言,它包含所有包含两个或更多 ‘a’ 或者两个或更多 ‘b’ 的字符串,这种语言是 2 - 可测试的,只要字符串的所有长度为 2 的子串是 ‘aa’ 或 ‘bb’,该字符串就在此语言中。然而,对于语言 L2,情况有所不同。L2 包含所有长度为 4 或更长,且包含零个、两个或更多 ‘a’ 以及零个、两个或更多 ‘b’ 的字符串。由于字符串中的一个 ‘a’ 可能与下一个 ‘a’ 被任意数量的 ‘b’ 分隔开,所以不存在固定的子串长度能让我们验证第二个 ‘a’ 的存在,因此 L2 对于任何 k 值都不是 k - 可测试的。
为了更清晰地说明,假设我们有一个 k - 可测试的原始 DFA,想找到一个有限值 k′ 使超级 DFA 是 k′ - 可测试的。但对于非有限语言,通常没有固定的子串长度 k′ 可用于检查交错字符串,以验证来自两个生成执行的 “嵌入式” k 长度子串的有效性。一个对抗性字符串生成器可以通过以下步骤击败窗口大小 k′:
1. 从第一次执行中生成一个符号。
2. 从第二次执行中生成 ⌈k′/k⌉k 长度的序列。
3. 从第一次执行中生成 k - 1 个符号。
步骤 (2) 会将第一个符号推出固定窗口的范围,使得无法将后续的 k - 1 个符号识别为有效 k 长度序列的结尾。
基于以上分析,似乎 k - 可测试性和 k - 可逆性都不能可靠地从语言 L 保留到其交错语言 L2。虽然可能存在对 L 的更严格
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



