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

图灵完备

  • 简述
  • 结构
  • 一、基本逻辑电路
    • 1、低电平
    • 2、高电平
    • 3、非门
    • 4、与门
    • 5、三路与门
    • 6、或门
    • 7、三路或门
    • 8、与非门
    • 9、或非门
    • 10、异或门
    • 11、同或门
  • 二、算数运算&&存储器
    • 1、二进制速算
    • 2、成对的麻烦

简述

  这周就要学习计算机组成原理了,为了学起来不那么吃力,我很早以前就下好了这款游戏——图灵完备。
  现在已经玩了一段时间了,涉及的内容是数字逻辑里面的,整体上难度不太大,随着游戏的深入,涉及的内容会更加全面,而查找的内容可能也更广泛一些。
  后来想了想还是打算在这里记录一下吧,从根本的原理上去讲解,以及之前所学的知识如何在这款游戏里去应用。当然,讲解的话肯定需要学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了好一会,还是不行,等抽空专门学学吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/74073.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

踏过强化学习的每一步推导

给定 l [ a n , . . . , a 0 ] l[a_n, ..., a_0] l[an​,...,a0​],现在 for idx in range(len(l)-2, -1, -1):l[idx] l[idx1] * ld注:这里的ld就是 λ \lambda λ,定义 λ 0 1 \lambda^01 λ01 证明变换后: l [ ∑ i 0 n …

AI小白的第七天:必要的数学知识(概率)

概率 Probability 1. 概率的定义 概率是一个介于 0 和 1 之间的数,表示某个事件发生的可能性: 0:事件不可能发生。1:事件必然发生。0 到 1 之间:事件发生的可能性大小。 例如,掷一枚公平的硬币&#xf…

UE5 + Rider + VsCode 接入腾讯的 Puerts 脚本

学习了一段时间 U,写点啥就得等编译,体验真的是一言难尽。。。。。。 然后就想着给自己找个脚本好了,调研了一下 AngelScript,puerts 的可行性。 AngelScript 看着真的诱人,但是发现连官方提供的都是 UE 的预编译版本…

凸包构造算法—Graham 扫描法

1. 理论原理推导 核心思想 Graham 扫描法基于以下基本思想: 极角排序: 选取一个参考点(通常选择 y 坐标最小的点,若存在多个,则选 x 坐标最小的),将其他点按照与该参考点构成的极角进行升序排…

如何在 Windows 上安装与配置 Tomcat

Apache Tomcat 是一个开源的 Servlet 容器和 Web 服务器,广泛用于 Java Web 应用的开发和部署。它是实现 Java EE(现称 Jakarta EE)规范中的 Servlet 和 JSP 的官方参考实现。在本文中,我们将详细介绍如何在 Windows 系统上安装并…

测试模版15

本篇技术博文摘要 🌟 引言 📘 在这个变幻莫测、快速发展的技术时代,与时俱进是每个IT工程师的必修课。我是盛透侧视攻城狮,一名什么都会一丢丢的网络安全工程师,也是众多技术社区的活跃成员以及多家大厂官方认可人员&a…

拦截、限流,针对场景详细信息(一)

以下是一个基于Java Spring Boot Redis 的完整限流实现案例,针对同一接口前缀(如 /one/ )的IP访问频率控制: 场景:用户不用登录即可访问接口,网站会有被攻击的风险 URL:one/two/three one/…

计算机视觉算法实战——烟雾检测

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​​​ ​​​​​​​​​ ​​ 1. 烟雾检测领域介绍 烟雾检测是计算机视觉在公共安全领域的重要应用,它通过分析视频或图像序…

MySQL-DCL函数

DCL DCL英文全称是Data Control Language(数据控制语言),用来管理数据库用户、控制数据库的访问权限。 管理用户 1). 查询用户 use mysql; select * from user; select * from mysql.user; 查询的结果如下: 其中 Host代表当前用户访问的主机, 如果为localhost, 仅…

linux 服务器创建服务器启动后服务自启动

1、在/etc/systemd/system/下touch一个文件: touch /etc/systemd/system/your_application.service 2、在文件中写入: [Unit] Descriptionmodules-system Aftersyslog.target[Service] Typeforking Userroot Grouproot ExecStart/bin/bash /usr/loca…

端到端语音识别案例

《DeepSeek大模型高性能核心技术与多模态融合开发(人工智能技术丛书)》(王晓华)【摘要 书评 试读】- 京东图书 语音识别这一技术正如其名,是通过精密地解析说话人的语音来识别并准确转写出其所说的内容。它不仅仅是一个简单的转录过程&#…

QT——信号和槽

QT是图形化界面,自然是需要与用户进行交互的,但是该如何实现用户与界面或者程序的交互呢。答案是通过信号和槽。 一,什么是信号和槽? 在Linux操作系统里面,我们知道信号是由硬件或者软件产生,但是在QT里面…

Q:如何保证备份的有效性以及备份频率设置的优化方案?

1、如何保障备份数据的一致性 a) 快照 快照通过捕获数据在某一时刻的完整状态来保障备份一致性。在应用层,快照会暂停业务写入或生成事务一致性检查点(如数据库的全局读视图),确保备份数据不包含未提交的事务;在存…

Linux实用操作及命令

一、各类小技巧(快捷键) 1、强制停止(ctrlc) Linux某些程序的运行,如果想要强制停止它,可以使用快捷键ctrl c 命令输入错误,也可以通过快捷键ctrl c,退出当前输入,重…

压测工具开发(一)——使用Qt Designer构建简单界面

你好,我是安然无虞。 文章目录 项目功能概述构建菜单栏、工具栏1. 菜单栏注意事项2. 工具栏注意事项3. 日志停靠窗口 项目功能概述 开发一款 Qt版本的压测工具, 可以用来做 基于HTTP API接口的 性能测试. 要求做一个 MDI 多功能子窗口的 图形界面程序, 方便公司内…

Ubuntu 22 Linux上部署DeepSeek R1保姆式操作详解(ollama方式)

操作系统:Ubuntu Linux 22.04 一、安装模型运行环境 打开链接https://ollama.com/download/linux 1.安装ollama (1)一条指令即可实现的简易版安装方法(也可称为在线安装) curl -fsSL https://ollama.com/install.s…

MySQL 和 Redis 数据一致性解决方案

MySQL 和 Redis 数据一致性解决方案 MySQL 和 Redis 作为两种不同类型的数据库(关系型 vs 内存型),在配合使用时需要特别注意数据一致性问题。以下是几种常见的解决方案: 1. 缓存更新策略 1.1 Cache Aside Pattern (旁路缓存模式) 读操作&#xff1a…

Java高频面试之集合-20

hello啊,各位观众姥爷们!!!本baby今天来报道了!哈哈哈哈哈嗝🐶 面试官:讲讲 HashSet 的底层实现? HashSet 是 Java 集合框架中用于存储唯一元素的高效数据结构,其底层实…

【MySQL】从零开始:掌握MySQL数据库的核心概念(四)

人们之所以不愿改变,是因为害怕未知。但历史唯一不变的事实,就是一切都会改变。 前言 这是我自己学习mysql数据库的第四篇博客总结。后期我会继续把mysql数据库学习笔记开源至博客上。 上一期笔记是关于mysql数据库的表格约束,没看的同学可以…

Manus:通用智能体的架构革命与产业破局

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…