【非官方】哈工大2022 形式语言与自动机试题解析

写在前面:

1. 笔者给出的答案仅供参考,不完全正确,不代表官方答案。欢迎同学们纠错,看到之后会第一时间更新。

2. 感谢同学提供的期末试题回忆版,同学也在博客最后总结了一些比较容易被忽略的易错点,很值得学习借鉴。原文链接附在下方:哈工大本部2022形式语言与自动机期末试题_weixin_52027058的博客-CSDN博客_哈工大 形式语言与自动机icon-default.png?t=N7T8https://blog.csdn.net/weixin_52027058/article/details/124738005?spm=1001.2014.3001.55013. 由于笔者在复习时没有找到往年试题的解析,不希望学弟学妹们也遇到这种情况;再加上期末发挥得也算不错,所以博主在这里提供一份解题思路与作答结果,以供参考。

正文部分:

第一题:

(因为当时备考时只有19,20两年的期末试题,而这两套卷子的DFA, NFA题都很简单,所以博主低估了这两题的难度,在刚作答试卷的时候有一点被前两题弄得束手无策,后来先去做了第三题···)

解题思路:

        既包含00,又包含11的串,无非是两种可能:先出现00,后出现11;先出现11,后出现00.而第一个字符不是0就是1,故在开始时即可分支处理。注意在匹配一个字符后匹配第二个字符失败时的  “转移”(对应作答结果里q1读入1,q4读入0的情况)以及  “回退”(q3读入0,q6读入1的情况)。最后的接受状态为了简洁可以合并。

作答结果:

第二题:

解题思路:

        01,10出现的次数相等乍一听有点难以统计,但是考虑一些满足这个条件的字符串:010,0100010,1111110001,我们会发现:首末字符一样的字符串均满足这个条件。举个例子:你可以自由地在河的两岸走动,但只有当你的起点和终点在一侧时,去的次数和回的次数才相等。有了这个等价转化之后,题目就变得简单了,设计NFA即可。

        注意一点:e, 0, 1以及0^n, 1^n也满足上述情况,千万不要忽略。

作答结果:

第三题:

解题思路:

(回忆版的期末试题第1小问符号集应该是给错了,换为a, b即可,不影响做题)

        1)有两种情况:含有两对aa以及含有一个aaa。都是很简单的正则表达式,无须赘述。在考试时因为保证绝对正确,没有进行化简。

        2)不以aa, bb结尾,那就写出以ab, ba结尾的字符串。注意一点:e, a, b也满足条件。

作答结果: 

第四题:

解题思路:

        利用泵引理证明语言非正则的题目,套用泵引理的步骤即可,对于N,选用0^N1^N进行泵引理即可。(0^n1^n也是一个很典型的非正则的例子,课上也提到过)

作答结果:

        具体步骤略,按步骤操作即可。

第五题:

解题思路:

        本质是利用DFA证明正则语言同态的封闭性(老师说上课讲过的定理的证明不考?)要熟记DFA的五元组(NFA, PDA, TM也是一样,即用符号语言描述自动机,这里容易被忽视)。

        使用定理:正则语言与DFA的等价性,即任意正则语言都有其对应的DFA,设接受L的DFA D,再设计接受h(L)的DFA Dh,证明充要性即可。

作答结果:

        (笔者考试时描述Dh的转移函数时符号表达很模糊,并且个人认为自己对于充要性的证明也是非常“象征性”,再加上距离考试已经过去了近两个月(写于6.28 夜),所以本题答案不保证准确,欢迎同级同学和学弟学妹提供更好的作答)

第六题:

(温馨提示:书写产生式时,“|” 符号和字符 “1” 要有区分度,这样对大家都好···)

解题思路:

        利用CFG构造语言,构造出两串相等长度的0,在中间用含1的串隔离开,再在左右添加其他的串即可,故分为ABCBD五部分,B是构造的两串相等的0,C是隔离的串,可以为1或1x···x1,总之接触到相等0串的字符都为1,A&D是两旁添加的串,同样与相等0串接触的部分都要为1,或者直接空串。

作答结果:

第七题:

解题思路:

        给定语言构造DPDA,构造的难度远小于在考试之前熟记DPDA的难度(),如果复习到PDA定义或者做过DPDA的题就好说,没有的话···

        目标语言为a^nb^2n+1,自然想到用一个a入栈生成两倍的a,然后用b来消栈达到二倍的目的,最后多出来的b用来消除栈底符号S0/Z0,再结合DPDA的概念设计即可。

作答结果:

第八题:

(不用担心这种题后一问是基于前一问基础还是基于题目,考试会给出说明(甚至还会加粗注明···))

解题思路:

        没有技术性,只是单纯的体力劳动,按上课教的方法操作即可。

作答结果:

第九题:

(回忆版没有具体题目,但好在又是一道体力劳动的题目,按上课教的方法操作即可,考试的PDA也很简单,笔者甚至还手撕了PDA验证了一下··· 另外博主记得考试时要求转换为CFG,但是前面有一个c开头的单词修饰,博主考试时不知道这个单词的意思,以防万一直接把产生的CFG也给化简了)

ps. 这个流程有那么一些难背,建议熟记或者考试在发演草纸后赶紧写一遍(

解题思路:无

作答结果:无 

第十题:

(图灵机的题目比较复杂,强烈建议作答完成后细致地检查一下)

解题思路:

        分次处理,识别到一个a后,先将a替换为终止符B,而后分j次识别,每次识别1对b, c,其中每一次都是寻找最左边的b和最右边的c,并将其分别替换为Y, B(b不替换为B是为了重复使用)。在j次识别结束后,将Y重新替换为b,准备下一轮识别。最后会出现三种情况:① i*j=k 时,此时的字符串为BBB···Bbb···bbBBB···BB,此时将所有的b替换为B后进入终态即可。② i*j<k 时,此时的字符串为BB···Bbb···bbcc···cBB···B的形式,和①采取相同的方法,但会发现在识别到多余的c的时候,图灵机卡死,所以不接收。③ i*j>k 时,图灵机在遍历的时候就会卡死,所以也不会接收。 

作答结果:

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值