当前课程知识点:数据结构(上) > 第一章 绪论(上) > (b)计算模型 > 01b-4: 理想模型
在解决了特定算法的评价问题之后
我们就需要进一步的
来回答另一个问题
也就是说当同一个问题
拥有多个算法的时候
这是经常出现的情况
我们如何来评价
它们之间的相对好坏
或者说优劣呢?
一种直观的方法是
所谓的实验统计方法
简单的说是骡子是马拉出来溜溜
谁所用的时间越短
谁用的资源越少 谁就越优
但是这种表面想当然的方法
在实际应用中是不够用的
因为它并不能准确的
反应一个算法真正的全面的效率
那么这个原因就在于
我们的实验统计
或者叫作实验测试
总是不充分的
算法和人非常的相似
不同的算法 各有所长也各有所短
所以如果我们的测试
在问题实例的规模
以及类型等等方面
覆盖的不够全面
不具有充分的代表性的话
那么这种测试
本身就是带有偏见的
它的结论也就难以让人信服
再退一步的 即使是同一种算法
也可能是由不同的程序员完成的
而且他们也有可能
选择不同的编程语言
而且甚至再进一步地
可能会选择不同的编译器
设置不同的编译选项等等
再进一步
即便是上述因素都是一致的
也就是说是由同一个程序员
用同一种语言
并且用同一种编译器和设置
编辑出来的执行代码
在不同的硬件体系结构上
在不同的操作系统上
它体现出来的性能
在此时和彼时
也可能有很大的区别
比如说 硬件的CPU速度
内存和磁盘的速度和容量
以及它们之间的带宽 等等
还有包括操作系统
在不同的时刻 对不同计算资源
分配的当时的状况不同 等等等等
这些因素都不可能由少数次
有限次实验统计就足以覆盖
综合起来我们最后
能够可行的方法只有一条
也就是说 我们需要抽象出
一种理想的计算的平台或者说模型
唯此才能抛开上述种种
具体的 其实是次要的因素
更加直接和准确地
来评价和测量算法
最后得出一个客观的结论
这样一种做法
就犹如物理学家伽利略
所擅长的那样
不是去真正的去做一个
现实中的物理实验
而是在头脑中去做一个
虚拟的理想的
但又是能够反应事物本质的实验
而在我们这里
确实人们已经构造出了
很多种这样理想的平台和模型
比如说我们接下来
要讨论的图灵机模型
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-OJ系统说明
--关于OJ
--1-注册与登录
--2-界面与选课
--3-提交测试
-关于课程教材与讲义
--课程教材与讲义
-关于讨论区
--关于讨论区
-微信平台
--html
-PA晋级申请
--PA晋级
-(a)计算
--演示
--(a)计算--作业
-(b)计算模型
-(b)计算模型--作业
-(c)大O记号
-(c)大O记号--作业
-(d)算法分析
-(d)算法分析--作业
-(e)迭代与递归
-(e)迭代与递归--作业
-(xc)动态规划
-- 演示
-(xc)动态规划--作业
-本章测验--作业
-(a)接口与实现
--02A-5 复制
-(a)接口与实现--作业
-(b)可扩充向量
-(b)可扩充向量--作业
-(c)无序向量
--02C-1 概述
--02C-3 插入
--02C-6 查找
--02C-8 遍历
-(c)无序向量--作业
-(d1)有序向量:唯一化
-(d1)有序向量:唯一化--作业
-(d2)有序向量:二分查找
-(d2)有序向量:二分查找--作业
-(d3)有序向量:Fibonacci查找
-(d3)有序向量:Fibonacci查找--作业
-(d4)有序向量:二分查找(改进)
-(d4)有序向量:二分查找(改进)--作业
-(d5)有序向量:插值查找
-第二章 向量(下)--(d5)有序向量:插值查找
-(e)起泡排序
--02E-2 改进
--02E-3 反例
-(e)起泡排序--作业
-(f)归并排序
-(f)归并排序--作业
-本章测验--作业
-(a)接口与实现
--03A-4 实现
-(a)接口与实现--作业
-(b)无序列表
--03B-2 查找
-(b)无序列表--作业
-(c)有序列表
--03C-3 查找
-(c)有序列表--作业
-(d)选择排序
--03D-1 构思
--03D-2 实例
--03D-3 实现
--03D-4 推敲
--03D-6 性能
-(d)选择排序--作业
-(e)插入排序
--03E-1 经验
--03E-2 构思
--03E-3 对比
--03E-4 实例
--03E-5 实现
-(e)插入排序--作业
-(xd)习题辅导:LightHouse
-本章测验--作业
- (a)栈接口与实现
--04A-1 栈
--04A-2 实例
--04A-3 实现
- (a)栈接口与实现--作业
-(c1)栈应用:进制转换
-第四章 栈与队列--(c1)栈应用:进制转换
-(c2)栈应用:括号匹配
-(c2)栈应用:括号匹配--作业
-(c3)栈应用:栈混洗
-第四章 栈与队列--(c3)栈应用:栈混洗
-(c4)栈应用:中缀表达式求值
-(c4)栈应用:中缀表达式求值--作业
-(c5)栈应用:逆波兰表达式
-第四章 栈与队列--(c5)栈应用:逆波兰表达式
-(d)队列接口与实现
--04D-1 接口
--04D-2 实例
--04D-3 实现
-第四章 栈与队列--本章测验
-(a)树
--05A-1 动机
--05A-2 应用
-(a)树--作业
-(b)树的表示
--05B-2 父亲
--05B-3 孩子
-第五章 二叉树--(b)树的表示
-(c)二叉树
-(c)二叉树--作业
-(d)二叉树实现
-(d)二叉树实现--作业
-(e1)先序遍历
-(e1)先序遍历--作业
-(e2)中序遍历
-第五章 二叉树--(e2)中序遍历
-(e4)层次遍历
-第五章 二叉树--(e4)层次遍历
-(e5)重构
-(e5)重构--作业
-本章测验--作业
-(a)概述
-(a)概述--作业
-(b1)邻接矩阵
-(b1)邻接矩阵--作业
-(c)广度优先搜索
--06C-2 策略
--06C-3 实现
--06C-5 实例
-(c)广度优先搜索--作业
-(d)深度优先搜索
--06D-1 算法
--06D-2 框架
--06D-3 细节
-(d)深度优先搜索--作业
-第六章 图--本章测验