包含相同数量的001和100的单词的语言是否正常?


14

我想知道包含两个子字符串的相同数量实例的语言何时会是常规的。我知道包含相等的1和0的语言不是常规语言,而是诸如的语言,其中 =子字符串“ 001”的实例数等于“” 100英寸普通?注意,将接受字符串“ 00100”。L { w }LL{w}

我的直觉告诉我不是,但我无法证明这一点。我无法将其转换为可以通过抽运引理抽运的形式,那么我怎么证明呢?另一方面,我尝试构建DFA,NFA或正则表达式,但在这些方面也都失败了,那么我应该如何进行?我想大致了解这一点,而不仅仅是针对所建议的语言。



2
您为什么不能回答自己的解决方案?
Yuval Filmus

1
@YuvalFilmus低知名度用户回答自己的问题会有所延迟(如果rep <100,则需要8个小时)。
吉尔(Gilles)'所以

1
可能在还应该有一个额外的循环?q 50q5
Hendrik

1
这种现象的类似示例,但在我们的姊妹站点讨论了子字符串“ 01”和“ 10”,证明语言是正常的或不规则的。答案与wece在其评论中的评论类似:“也就是说,如果没有中间的过渡,则01过渡不能跟随另一个过渡。” 100110
亨德里克

Answers:


3

从问题中提取答案。

正如Hendrik Jan所指出的,在q5处应该有一个额外的0自环。

自动机


这是一种结构,而不是证明
vzn13 2013年

在CS类中,对于简单问题,有时仅给出DFA,但不能证明它完全接受该语言。您必须以某种方式为每个输入字符串显示其正确运行的字符串。“它是如何工作的?”
vzn13 2013年

2
我认为您可以合并和。那正确吗?q 2q5q2
J.-E.

3

这是一个技巧问题。尝试构造一个包含两个001并且不包含100的字符串,然后看看为什么不能这样做。如果X =“ 001的数量”,而Y =“ 100的数量”,则X = Y或X = Y±1。

一旦意识到了窍门,就很不可能出现语言不规则的情况,然后构造DFA就非常简单。如果下一个符号为0/1,则只有8个状态及其转换:

State S0: Input is empty. -> S1/C0

State S1: Input is 0. -> C2/C0

State A: Y = X + 1, input ends in 00. -> A/C0

State B0: X = Y + 1, input ends in 1. -> B1/B0

State B1: X = Y + 1, input ends in 10. -> C2/B0

State C0: X = Y, input ends in 1. -> C1/C0

State C1: X = Y, input ends in 10. -> A/C0

State C2: X = Y, input ends in 00. -> C2/B0

初始状态为S0,S0,S1,C0,C1,C2为接受状态。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.