图灵完备——游戏中进行实践

简述

  这周就要学习计算机组成原理了,为了学起来不那么吃力,我很早以前就下好了这款游戏——图灵完备。
  现在已经玩了一段时间了,涉及的内容是数字逻辑里面的,整体上难度不太大,随着游戏的深入,涉及的内容会更加全面,而查找的内容可能也更广泛一些。
  后来想了想还是打算在这里记录一下吧,从根本的原理上去讲解,以及之前所学的知识如何在这款游戏里去应用。当然,讲解的话肯定需要学latex,而学习latex正好也满足manim的需求,所以说也正合适。
  不定期更新,尽量能完美解决这个游戏的所有问题,但由于一边游玩一边写文稿一边学习相关内容,比较耗费时间,所以不知道什么时候会完结,下面就开始吧。

结构

  整体上的结构划分以游戏内给的结构为主,然后整体中部分讲解则遵循从左到右,从下到上的顺序讲解把,难度不一定统一,但是整体上也大差不差。

一、基本逻辑电路

  这里是最基本的了,我也不按照游戏的进度来,直接将此前涉及到的各个门的真值表给出来吧。由于使用manim中的latex编写表格,其中的中文字符无法写出来,由于还没有深入研究,下面的输出就用op(output)来代表吧,然后输入就用对应的字符ABCD这种来表示吧。另外,下面的排序是无序的,对应实现的门在游戏中已经激活了,所以整体上看看就行。

1、低电平

在这里插入图片描述
  可以看到,不论输入1还是0,输出总是0。

2、高电平

在这里插入图片描述
  可以看到,不论输入1还是0,输出总是1。
效果图:
在这里插入图片描述
注:不一定是最简的。图中AND是与门,N是非门。

3、非门

在这里插入图片描述
  输入结果跟输出结果正好相反。
效果图:
在这里插入图片描述
注:NAND是与非门

4、与门

在这里插入图片描述

效果图:
在这里插入图片描述
注:NAND是与非门

5、三路与门

在这里插入图片描述
在这里插入图片描述

6、或门

在这里插入图片描述
在这里插入图片描述
注:NAND是与非门

7、三路或门

在这里插入图片描述
在这里插入图片描述

8、与非门

在这里插入图片描述
在这里插入图片描述

9、或非门

在这里插入图片描述
在这里插入图片描述

10、异或门

在这里插入图片描述
在这里插入图片描述
注:上述肯定不是最优解法,很早之前弄的了,当时的思想应该是胡乱弄的。

11、同或门

在这里插入图片描述
在这里插入图片描述

二、算数运算&&存储器

1、二进制速算

  这里的二进制速算,我以为直接运算二进制,后来发现不是,而是将其转换到了十进制,整体上难度不是很大。

2、成对的麻烦

题目
在这里插入图片描述
输入及预期输出
在这里插入图片描述
  像这种问题,如果单纯地来思考的话,肯定比较困难,而此时就涉及到了数字逻辑中的基础部分,我们来分析一下题目,以及结合数字逻辑知识如何解决。
首先,这里有4个输入,我们按照二进制顺序方式,可以将输入4-1分别用字母ABCD来表示,下面我列出了输入输出的真值表。
在这里插入图片描述
  先说明一下,为什么从输入4-1为ABCD而不是正向的输入1-4为ABCD。我上面说的采取排序方式是按照二进制顺序方式,这种方式是书上一般的排序方式,也就是我上面真值表从上到下的排序方式。而游戏中,按照输入4-1的方式读取输入的话,从左到右,刚好满足二进制顺序方式,所以为了统一,尤其是真值表与游戏输入对应的原则,我们还是简单地改变一下看输入的方向就可以了。
  没看懂我说的也没关系,通俗一些讲,就是真值表中ABCD分别对应游戏中的输入4、输入3、输入2、输入1。
  画出来真值表后,我们可以根据其中输出的0、1的数量,选择少的那部分来描述出最简电路。这里的输出0的数量最少,那我们就从这个为切入点来进行对应运算。
  下面我给出上面真值表对应的最大项和最小项。
在这里插入图片描述
注:上面表格还是那个问题,无法显示中文,最大项、最小项用max、min代替。另外,斜线也无法显示,所以空着的地方表示无。
  从上面的表格中可以看出来,最大项跟最小项本身是互补的,我们可以将最大项、最小项分别化成最简的,也是有两种表示方式(与或、或与),所以对于这类问题,总会用两种最简的方法解决。如果按照一开始的二进制排序方式规定的话,对于最小项来说,从上到下依次为 m 0 m_0 m0-> m 15 m_{15} m15。我们何时选取最小项?看上面图的话可以看到输出为1时选取对应的最小项,而输出为0时选取对应的最大项。
  最小项表示方式: ∑ m ( 3 , 5 , 6 , 7 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , ) \sum m(3,5,6,7,9,10,11,12,13,14,15,) m(3,5,6,7,9,10,11,12,13,14,15,)
  最大项表示方式: ∏ M ( 0 , 1 , 2 , 4 , 8 ) \prod M(0,1,2,4,8) M(0,1,2,4,8)
  当然,按照上述方法判断最小项没有错,做题也没问题,但是从本质上来说,最大项的判断方法并不对。找最大项的方法其实同样也是需要找输出为1的。但是呢,找最大项需要将输入取反。输入取反之后,其对应的输出也就取反了。所以,此时的真值表跟上面的相比就从上到下反过来了。为了方便理解,我下面再贴张图。
在这里插入图片描述
  结合上图来看,我们ABCD取反后找输出为1的最大项,其实跟一开始不取反,找输出为0的为最大项,结果上是一样的,但为什么要说本质呢?因为之后做题的话,解析可能会详解,但是如果本质理解错了,可能解析看不太明白。所以迅速做题的话,按照我一开始的方法就好,但本质要清楚。我们再来看看书上对于真值表找最小项、最大项是怎么说的。
最小项: 下标 i i i的取值规则是:按照变量将最小项中的原变量用1表示,反变量用0表示,由此得到一个二进制数,与该二进制数对应的十进制数即为下标 i i i的值。例如3变量A,B,C构成最小项 A B ‾ C A\overline{B}C ABC可以用 m 5 m_5 m5来表示。
最大项: 下标 i i i的取值规则是:按照变量顺序将最大项中的原变量用0表示,反变量用1表示,由此得到一个二进制数,与该二进制数对应的十进制数即下标 i i i的值,例如,3变量A,B,C构成的最大项 A ‾ + B + C ‾ \overline{A}+B+\overline{C} A+B+C可用 M 5 M_5 M5表示。
  好的,明白了上面内容,我们再继续。为了方便解题,我们用项数少的来解,也就是用最大项。找到最大项之后,其实就已经找到结果了。也就是:
o p = ( A ‾ + B ‾ + C ‾ + D ‾ ) ∙ ( A ‾ + B ‾ + C ‾ + D ) ∙ ( A ‾ + B ‾ + C + D ‾ ) ∙ ( A ‾ + B + C ‾ + D ‾ ) ∙ ( A + B ‾ + C ‾ + D ‾ ) op=(\overline{A}+\overline{B}+\overline{C}+\overline{D})\bullet(\overline{A}+\overline{B}+\overline{C}+D)\bullet(\overline{A}+\overline{B}+C+\overline{D})\bullet(\overline{A}+B+\overline{C}+\overline{D})\bullet(A+\overline{B}+\overline{C}+\overline{D}) op=(A+B+C+D)(A+B+C+D)(A+B+C+D)(A+B+C+D)(A+B+C+D)
注:如果按照一上来输出为0的到的最大项,千万不要忘了对输入去反再读取。如果按照上面输出为1得到的最大项,直接读取对应项就行!!!
  然后我们按照这个规则进行电路连接就好了,肯定可以的。
  话是这么说,可是这并不是最简电路。所以为了得到最简电路,接下来我们需要对输出结果进行化简。怎么化简呢?仍然选择书中的卡诺图化简法。当然可以直接化简,不过我对应公式都忘了,所以还是用通俗的卡诺图化简法来解决吧,这在考试中会考的。
  由于这是一个四项输入的,所以我们需要一个4x4的表格。将输入ABCD拆分为AB、CD两个部分。AB占据上表头,CD占据左表头。AB的四个表头从左到右依次为00,01,11,10,CD的左表头从上到下依次为00,01,11,10。注意这俩并不是按照二进制排序的。如果看不懂的话,可以比照我下面的图来对照一下。
在这里插入图片描述
注:还是那个问题,AB、CD中间的斜线显示不出来,凑活看看吧。

  卡诺图化简我是纯靠“感觉”来的,下面分享一下我的“感觉”。这种“感觉”最好还是做几道题目,总结一下,要不然可能会有错误。
  卡诺图最大项化简需要好几次取反,而最小项化简不用取反。我们先用最小项讲解一下,然后再用最大项做。
  哎,早知道用manim生成图像的时候标注好图几了,现在找图还不好描述找哪个图。现在先凑活看一下吧,后续的内容会标注好图几的。
  从上面真值表找到对应的最小项,然后将对应的最小项放到卡诺图中,存在的就标1,由此就得到了下面的图。
在这里插入图片描述
  接下来就是画圈了,可以看到,项数越多,相对而言画圈就越难画,所以还是选择项数少的来做。先说一下画圈的规则。
1、圈的1的数量为2n个,比如全3个的话就不行。
2、圈尽可能少而大。
3、圈中至少有一个未被圈的1。
4、卡诺图是封闭的。
  基于上述规则,我们来圈一下。我用manim可以圈,不过,卡诺图是连续的,所以我们将内部4x4网格拿出来,将其想象成一个球,所以还存在特殊的画图方式,不过我不清楚我会不会用manim画出来。这个题目没受影响,我们直接画就好了。查找了一下,manim竟然有table类,我还苦苦地用latex在manim中写。
  又去学manim的table。ai了好一会,还是不行,等抽空专门学学吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值