【非官方】哈工大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
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 哈工大形式语言与自动机理论MOOC练习题分为两部分:选择题和编程题。选择题主要考察学生对于形式语言与自动机理论的基本概念和知识的掌握程度,题目不考察太深入的细节,大多数都可以在课程的PPT中找到答案。编程题主要考察学生对于自动机的理解和能力的实现,需要学生熟练掌握Python语言的基本语法和知识,并且需要结合课程中讲解的内容,掌握如何用Python实现自动机的构建和分析。 选择题中包括一些比较典型的题目,例如求解最短字符串、判断语言的等价性、求解正则表达式等等。这些题目都是在课程中详细讲解过的,需要学生认真复习PPT中的内容,掌握重点难点,才能对选择题答题有较好的准确率。 编程题中一般不会有太多的代码要求,主要是考查学生如何运用Python语言来实现自动机。例如,求解一个正则表达式的DFA,需要学生熟练掌握正则表达式的基本语法和Python的re模块,以及如何将正则表达式转换为NFA和DFA,并且实现DFA的最小化算法。编程题难度相对选择题会比较高,需要学生对于理论知识的掌握和动手能力有一定的要求,同时也需要学生具备一定的代码思维和分析能力。 综上所述,哈工大形式语言与自动机理论MOOC练习题是一个相对严谨的练习题库,需要学生认真复习课程中的内容,并且结合大量的实践演练,才能够掌握理论知识和动手能力,提高自己的学习水平和能力。 ### 回答2: 哈工大形式语言与自动机理论MOOC练习题是在学习该课程的过程中重要的一环。该课程涵盖了形式语言与自动机理论的基础知识,通过课程练习题的完成,可以帮助学生更好地掌握理论知识,加强对于课程内容的理解。 在完成哈工大形式语言与自动机理论MOOC练习题的过程中,需要掌握一定的逻辑思维能力,以及一定的代码编程能力。题目通常涉及到正则表达式、自动机等相关知识点,需要学生能够灵活运用这些知识点,组织解题思路。 此外,在完成练习题的过程中,还需要学生注重细节和准确性。这些细节可能会影响到最终的解题结果,因此学生需要仔细和认真地完成每一个步骤。 总之,完成哈工大形式语言与自动机理论MOOC练习题是学习该课程不可或缺的一部分,它对于学生掌握理论知识、提高逻辑思维能力、加强编程技能都有重要的作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值