首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >规则语言和证明(计算模型)

规则语言和证明(计算模型)
EN

Stack Overflow用户
提问于 2012-06-25 22:53:57
回答 1查看 191关注 0票数 1

我需要一些HW问题的帮助,我得到了我的计算课程的模型。我读了课文的相关章节(迈克尔·西普瑟的“计算理论导论”),但我觉得这些HW问题需要这本书没有给我的知识。第一个问题是:

(1)证明不存在L语言,使L* = {a}* {b}*暗示使用矛盾。

显然,右边是一个正则表达式;0或多个a,后面是零或多个b。这也可能是空字符串epsilon。

我的麻烦来了。我完全不知道一个*应用于一种语言做什么,也不知道如何处理这个等式,因为语言L上有*。

如能为这个问题提供任何帮助或资源,将不胜感激。

=====

第二个问题比较容易,我觉得我几乎可以做到。我可以向自己证明这一点,所以我想问题是正式地写出来。第二个问题是:

(2)证明了如果A和V是同一字母(西格玛)和A(是B的子集)上的语言,则A* (是) B*的子集。提示是使用归纳法。

现在显然(例如)如果sigma = {1,0}

和A= {00,01,10,11}

和B= {00,01,10,11,100,101,110,111}

A*中的任何东西都在B*下关闭,因为B=A+其他一些东西.如果有人能帮我把它正规化成归纳形式,我会很感激的。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-25 23:32:16

(1)以下是L*的一个有用的递归定义

  1. 埃普西隆在L*
  2. 如果xLxL*
  3. 如果xyL*xy也是
  4. 对于给定的L*L是满足1. - 3的最小语言。

有了这个定义,这里有一个矛盾的证明:假设R* = a*b*。然后abR*。到3.,abab也必须在R*中。但是接着是R* != a*b*,一个矛盾。因此,R* = a*b*必须是假的;换句话说,没有语言RR* = a*b*

直觉很简单:L*是所有字符串的语言,这些字符串可以通过从L连接零或多个字符串(允许重复)而形成。递归定义的工作方式是允许零字符串(在1.中)、从L (在2.中)接受一个字符串的字符串,以及通过从L (in 3.)连接多个字符串而形成的字符串。

(2)利用前面给出的定义,对A*中串连字符串的数目进行归纳。对于0连接,空字符串位于A*B*中,因此我们很好(参见规则1)。对于一个级联,因为AB的一个子集,所以A中的字符串将在A*中(见规则2),而来自B的字符串将在B* (相同的规则)中,因此在A*中接受一个连接的所有字符串也在B*中。现在,假设k连接在A*中的所有字符串也在B*中。在k+1中使用A*连接的字符串怎么办?这些都是使用规则3形成的,在字符串xy上,A*中的连接严格少于k+1连接,即最多是k连接。换句话说,A*中任何接受k+1连接的字符串都可以重写为xy,其中xyA*中,xy最多采用k连接。由于A*中的所有字符串最多都包含在k连接中(根据我们的假设),所以xy都在B*中。根据规则3,xy也必须在B*中。因此,在k+1中使用A*连接的字符串也必须属于B*。这就完成了证据。

注意:这掩盖了一些细节,并不是很正式,但你应该明白这个想法,并希望能把它塑造得更好。如果你需要比这更精致的东西,让我知道,我可以试着和你合作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11198547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档