【计算理论导引】 课后习题1.48

题干

Σ={0,1}\Sigma=\{0,1\}Σ={0,1} 以及
D={w∣w中子串01与10的出现次数相等}, D=\{w|w中子串01与10的出现次数相等\}, D={ww0110},

由于 101101101 含有一个 010101 和一个 101010,因此 101∈D101\in D101D。而 101010101010 含有两个 101010 和一个 010101,所以 1010∉D1010\not\in D1010D。证明: DDD 是正则语言。

分析

若D是正则语言,那么必然存在一个DFA ,其语言是D,等价于存在正则表达式R,使得L(R)=D。如果能够构造识别D的正则表达式,那么就证明了D是正则语言。

从子串 10 和 子串 01 的性质入手。观察到某个字符串中出现这两个子串当且仅当在从左向右扫描字符串的过程中字符发生变化。以字符串 111001011 为例,从左向右扫描的过程中字符串变化了4次,更加细致地说,由 1 变化到 0 两次,由 0 变化到 1 两次,分别对应了两个 10 子串和两个 01 子串。

换一个角度来看,我们把字符串看作连续的若干个 1 组成的子串和连续的若干个 0 组成的子串的交替排列,10 子串和 01 子串数量相等的充分必要条件为这样的连续若干个 1 组成的子串和这样的连续若干个 0 组成的子串的数目相同相差 111

写为正则表达式的形式如下
R=((1+0+)∗1+)∪((0+1+)∗0+). R=((1^+0^+)^*1^+)\cup((0^+1^+)^*0^+). R=((1+0+)1+)((0+1+)0+).

证明

如分析,证毕。■\blacksquare

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐