算法用来解决实际问题,是一套有穷的、普遍的、可重复的操作办法。现实生活中解决一个问题的办法有效率高低之别,算法也是如此。评价一个算法的好坏,要从结果和成本两个方面考虑。结果要看数学证明,我们暂且不说;成本分为时间和空间,在今天这篇文章中,我们只盯住成本中的“时间”来进行考量。
影响特定具有特定算法的程序运行时间的因素主要有:输入数据的规模、输入数据的具体情形、程序运行的环境、程序语言、编译器、操作系统……我们为了抓住其中的主要变量,进行如下两个理想化处理,来研究特定算法程序的运行时间:
1. 将输入数据理想化处理——固定输入规模n、考虑最坏的输入
2. 将测评环境理想化处理——建立理想计算模型,模型满足算法运行时间正比于算法操作步骤
下面把我们的精力集中在建模上面:我们考虑图灵机(Turing Machine)和随机存储模型(Random Access Machine)。
我最开始提出了一个问题是:如果换一个算法就要换一个模型,这样的平台是否具有能够比较不同算法的时间成本的能力?
但这个问题错在前提,对于图灵机来说,任何的算法都可以在上面进行计算。
图灵机(Turing Machine)
图灵机本质上是一种思想实验。图灵把计算过程抽象成了一个具有以下要素的模型:
- 无限长纸带,被分为一个一个小格子
- 有限的字母表,上面的字符用来填充纸带
- 读写头,可以阅读并修改纸带上的字符
- 读写头的左右运动,改变读写头的位置
- 状态,读写头具有有限个状态,这个状态由它所处的位置、读写的内容、下一步要移动的方向决定
一个著名的论题,丘奇-图灵论题指出,“任何在算法上可计算的问题同样可由图灵机计算”。
随机存取模型(Random Access Machine)
随机存取模型和图灵机是等价的。该模型具有以下要素:
- 无限个存储器(类比无限长纸带)
- 可以通过编号访问任意存储器(不同于图灵机只能按位访问)
- 一套计算规则
————————————————————————
参考文献:
[1]https://blog.youkuaiyun.com/qq_34216729/article/details/82766707
[2]https://izoyo.cn/index.php/archives/30/
本文介绍了如何通过图灵机和随机存取模型来建立计算模型,评估算法的时间成本。算法的评价标准关注时间和空间成本,文章主要聚焦于时间成本,固定输入规模并考虑最坏情况。图灵机作为一种思想实验,可以计算任何算法,而随机存取模型与图灵机等价,允许直接访问任意存储位置。
574

被折叠的 条评论
为什么被折叠?



