【问题标题】:How this language has even number of symbols ((0+1)(0+1))*这种语言如何具有偶数个符号 ((0+1)(0+1))*
【发布时间】:2015-05-20 18:17:07
【问题描述】:
我正在学习Automata的课程,可能作为初学者我错过了一些东西,我真的对老师说的这个正则表达式感到困惑
它表示一种语言,所有二进制字符串都有偶数个
符号
字母Σ={0,1}
((0+1)(0+1))*
(0+1) 表示 0 和 1 的并集
但我在这里感到困惑让我们假设
第一个 (0+1) 给出 01,第二个 (0+1) 只给出 0,然后最后我们连接两个具有 (010)* 并让它只出现一次,即 010
那么它怎么有偶数个符号呢?需要一点了解...
【问题讨论】:
标签:
regex
computation-theory
【解决方案1】:
给定的问题:((0+1)(0+1))*
让我们从最里面的括号开始 (0+1) 这匹配 0 或 1 而不是 01
'+' 表示“或” 运算符,这不是合取运算符。
这会重复两次,因此 ((0+1)(0+1)) 匹配 01 或 10 或 00 或 11
和 '*' 表示它匹配 0 次或多次
因此,((0+1)(0+1))* 匹配 [NULL] 或 01 或 10 或 00 或 11 或 0011 或 1100 或 1010 或 0110 ....等等
【解决方案2】:
联合意味着一个或另一个,而不是两者。所以,0+1 要么是 0 要么是 1,但不能同时是两者。因此 (0+1)(0+1) 将导致 00、01、10 或 11。它们都有偶数个符号。结果会随之而来。