Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 显示带有计数(1s)=计数(0s)的位字符串为';不规则_Regex_Algorithm_Regular Language_Automata_Proof - Fatal编程技术网

Regex 显示带有计数(1s)=计数(0s)的位字符串为';不规则

Regex 显示带有计数(1s)=计数(0s)的位字符串为';不规则,regex,algorithm,regular-language,automata,proof,Regex,Algorithm,Regular Language,Automata,Proof,设L是由字母表{0,1}上包含相等数量的1和0的字符串组成的语言 例如: 000111 10010011 10 1010101010 你怎么能证明L不是一种常规语言呢?我不知道形式证明,但直觉是你不能构造一个DFA来识别这种语言(考虑到它需要一个无边界的状态数来跟踪111…111000…000或类似形式的字符串).我认为你可以使用与用来证明{0^n 1^n:n>0}不是正则的参数完全相同的参数,因为你可以自由选择与泵引理相矛盾的字符串 假设L是正则的。所以它必须满足某个整数n(泵浦长度)的泵浦

设L是由字母表{0,1}上包含相等数量的1和0的字符串组成的语言

例如:

000111
10010011
10
1010101010

你怎么能证明L不是一种常规语言呢?

我不知道形式证明,但直觉是你不能构造一个DFA来识别这种语言(考虑到它需要一个无边界的状态数来跟踪
111…111000…000或类似形式的字符串).

我认为你可以使用与用来证明{0^n 1^n:n>0}不是正则的参数完全相同的参数,因为你可以自由选择与泵引理相矛盾的字符串


假设L是正则的。所以它必须满足某个整数n(泵浦长度)的泵浦引理。以属于L的字符串
S=0^n1^n
为例。根据引理,它可以被拆分为
S=xyz
,其中
|xy | 0
,而
xy^iz
属于L,因为所有
i>=0
。请注意
y
只能由零组成。现在泵入y,您只需在字符串中添加零,该字符串不再属于L。因此,您有一个矛盾。因此L不是正则的。

可以使用正则语言的泵引理给出形式证明,如下所示:

假设语言是正则的。所以它必须满足常数整数p的泵引理。设
s
为0和1数量相等的任意字符串。然后s可以分为3部分x,y,z,这样
|xy | 0
,然后
x(y^i)z
,其中
i>=0
也应该属于L

让我按如下方式划分字符串:

  • y
    是字符串的一部分,其0和1的数量不等
  • x
    可以是
    s
    y
    之前的子字符串
  • z
    可以是
    y
    之后的零件
现在,如果我通过取
i=0
来“压缩”字符串,那么剩余的字符串将仅是
xz
,它肯定具有不相等的0和1,这不属于语言L

因此,我们得出了一个矛盾,正如我们先前假设L是正则的一样

因此,它是不规则的

如果对上述部分有点难以理解,请考虑一个例子。 设p为整数5。将

0+1000+11101
设为L中的字符串(+表示串联) 让我假设x是“
0
”,y是
“1000”
,z是剩余部分
11101
。 然后,如果我们用
i=0
执行
x(y^i)z
,剩下的字符串将是
011101
,它不是L的一部分。因此不规则


注意:这个例子只是一个让你理解逻辑的例子。一个人不能随机决定p的值。

你可能是指
count
,而不是
sum
@Kobi你有什么深奥的语言理论观点吗?否则,“n”1s的总和与“n”1s的计数相同。这有帮助吗?@Alnitak-但不是零。我同意这是一种迂腐的语言。@Kobi啊,是的-关于零的观点很好:)这不是语言{0^n1^n:n>0},数字可以是任意顺序。你怎么能用泵引理来表示Q中描述的语言是非规则的?@Andrewtomazo Fathomling:但这是你感兴趣的语言的一个子语言。它也是
0*1*
的一个子语言,这是规则的。@Andrewtomazo Fathomling:这是一个很好的观点。在这种情况下,我将把我的答案限制在直观的论点上!安德鲁:如果你的语言L是正则的,那么交集L和0*1*将是正则的(因为正则语言在交集下是封闭的)。但是交叉点是0^n 1^n,这是不规则的。@Kobi:我想我选择的字符串可以作为证明。根据维基百科和rparree的链接,它应该是| xy|