计算机科学导论笔记(十五)

本文介绍了计算理论的基本概念,包括简单语言的构造和其表达能力,详细讲解了图灵机的工作原理和组成部分,以及如何使用图灵机模拟简单语言的语句。接着探讨了哥德尔数在程序表示中的作用,证明了停机问题的不可解性,以及问题的复杂度分类,特别是可解问题与不可解问题的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

十七、计算理论

17.1 简单语言

17.1.1 简单语句的威力

17.2 图灵机

17.2.1 图灵机的组成部件

17.2.2 对简单语言的模拟

17.2.3 邱奇-图灵论题

17.3 哥德尔数

17.3.1 表示一个程序

17.3.2 翻译一个数字

17.4 停机问题

17.4.1 停机问题是不可解的

17.5 问题的复杂度

17.5.1 不可解问题

17.5.2 可解问题


十七、计算理论

在之前的章节中,我们把计算机看成一台问题求解机器。在这一章中,回答一些诸如此类的问题:哪些问题可以通过计算机解决?语言之间是否存在优劣?运行一个程序前,是否可以确定该程序会停止还是一直运行?

17.1 简单语言

我们可以仅用三条语句来定义一种语言,它们是:递增语句、递减语句和循环语句。在该语言中,只能使用非负整数数据类型。这里不需要其他数据类型,目标仅仅是说明计算理论中的一些思想。该语言只使用少数几个符号。

 

17.1.1 简单语句的威力

可以证明只使用这三种简单语句的简单程序设计语言和我们现在使用的任何一种复杂语言一样强大(虽然效率上不一定)。下面演示如何模拟当今流行语言中的一些语句。

1. 简单语言中的宏

我们把每次模拟称为一个宏,并且在其他模拟中使用时不需要再重复其代码。一个宏是高级语言中的一条指令,它等价于相同语言中的一条或多条指令的特定集合。

 

 

其他宏:显然我们需要更多的宏使简单语言与高级语言相匹配,建立其他宏是可能的,但是并不简单。

2. 输入和输出

在简单语言中,read X 语句可以使用 X\leftarrow n 来模拟,我们也可以模拟输出,即假定程序中使用的最后一个变量保存将要打印的数据。简单语言不是实际语言,而是仅仅用来证明计算机科学中的一些定理。

17.2 图灵机

图灵机是1936年由Alan M. Turing提出用来解决可计算问题的。它是现代计算机的基础。我们将用一个非常简单的版本来说明它是如何工作的。

17.2.1 图灵机的组成部件

图灵机由三部分组成:磁带、控制器和读写头。

1. 磁带

虽然现代计算机中使用的随机存储设备的容量是有限的,但是我们假定图灵机中的内存是无限的。磁带任何时候只能保存一系列顺序字符,该字符来自计算机所能接收的字符集中。假设图灵机只能接收两个符号:空白(b)和数字1,并且图灵机处理正整数,如下图。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值