当前课程知识点:计算思维导论 >  第七单元 >  7.8 时间与空间及其相互转换 >  Video

返回《计算思维导论》慕课在线视频课程列表

Video在线视频

Video

下一节:Video

返回《计算思维导论》慕课在线视频列表

Video课程教案、知识点、字幕

大家好

这一节我们介绍

时间与空间及其相互转换

古今中外

关于时间的描述

有很多“金律玉言”

比如

一寸光阴一寸金

寸金难买寸光阴

时间书写故事

里程见证岁月等等

那么

什么是时间呢

时间是一个抽象的概念

“时”是对物质运动过程的描述

“间”是指人为的划分

时间是思维对物质运动

过程的分割和划分

从物理学的角度来说

时间是事件发生

到结束的时刻间隔

那么

什么是空间呢

空间是与时间相对的

一种物质客观存在形式

由长度

宽度

高度

大小表现出来

空间有宇宙空间

网络空间

思想空间

数字空间

物理空间等等

它们都属空间的范畴

我们在这里讨论时间和空间

当然不是一般意义下

泛指的时间和空间

而是与计算机

紧密相关的“时间”和“空间”

我们知道

借助于计算机求解问题

需要设计专门的

可供计算机运行的程序

并提供相应的原始数据

运行程序

会产生中间结果以及最终的解

它们都是数据

因此

计算机世界中“时间”

和“空间”有其特定的含义

这里的“时间”通常是指

程序运行所需要的时间

这里的“空间”

指的是程序和数据

所占据的存储空间(通常指内存空间)的大小

不难理解

对于计算机(系统)而言

“时间”和“空间”是非常重要的

宝贵的资源

对于时间

与生活中的道理一样

我们希望做一件事情越快越好

也希望在单位时间内

能够做更多的事情

对计算机系统来说

没有人愿意在计算机面前

坐等计算结果

总是希望计算机能同时运行

多个程序

对于空间

也与生活中的道理一样

每个人都希望拓展自己的生存空间

或者提高有限的空间使用率

对计算机系统来说

主存储器的存储容量是有限的

并且容量大小越来越难以满足

应用发展的需要那么

在时间和空间

都有限的情况下

如何提高

计算机系统的整体效能呢

面对这样的问题

计算机科学家们

是怎么思考的呢

客观地说

这基本上是属于

工程问题

比较适合采用工程思维中的

折中

妥协

权衡

转化

等思想来解决

面对计算机系统中的时间和空间问题

计算机科学家们提出了

非常经典的“时空转换”方法

也就是以时间换空间

或者以空间换时间

听起来似乎有点不可思议

时间和空间怎么转换

通过转换能解决什么问题

为理解这种特定的思维方法

让我们看两个简单的实例

1、游戏带来的问题现在计算机已经非常普及

小张家前些年也买了一台计算机

平时没事

小张特爱玩游戏

现在的游戏做的也是越来越漂亮

场景越来越庞大

人物逼真

角色众多

小张特喜欢玩一些大型游戏

只要知道有什么新的游戏推出

就要想办法弄来玩玩

比如《坦克世界》

《全球使命》等等

但游戏过程中

小张感觉机器的运行速度

总有点赶不上

兴奋中难免有些遗憾和懊恼

一次

他和朋友聊天说起这事

有经验的朋友给他支了一招

只要一两根内存条

扩充机器的内存空间

情况就会好很多

小张听后

立即设法买来内存条扩充内存

然后开机再玩同样的游戏

果然感觉机器的速度快多了

兴奋之情难以言表

甚至手舞足蹈起来

这就是典型的以空间换时间的问题

二、程序覆盖技术

早期计算机的内存空间非常有限

像AppleⅡ整个内存寻址空间才64K

还要留出不少空间给系统程序

比如操作系统使用

留给用户使用的空间就非常小了

为了节约存储空间

有时候就不得不采取

一些以牺牲程序运行时间

程序的可读性等为代价的办法

来换取存储空间上的不足

比如

过去经常采用的程序覆盖(Overlapping)技术

就是一个典型例子

用户观点的程序覆盖

一般是指在没有虚拟存储的机器上

当用户程序大于实际可用存储空间时

为了使大程序得以运行所采取的手段

我们知道

程序在执行期间的某一时刻

只和当前模块有关

不可能所有模块一起执行

因此可以让某些暂时还不需要执行的

或操作的模块呆在外存中

当它需要被执行

或操作时才让它进入内存

从而达到高效使用内存空间的目的

例如

某程序包含七个模块

其中一个主程序模块

三个常驻模块A、B和C

另三个模块x,y和z为覆盖模块

希望共享同一存储空间

就像图示一样

当程序执行需要模块x时

才把它调入覆盖区域来运行

执行完模块x后

若要执行模块y

则把模块y调入覆盖区

覆盖掉前面调入并执行过的模块x

然后执行模块y

以此类推

这样

一个大的用户程序

在外存上有完整的拷贝

执行中动态地向内存

一段一段地复制

直至整个应用程序执行完毕

这就是所谓的程序覆盖技术

它可以有效地利用并节省内存空间

从而可使较小的内存空间

运行较大的程序

这对大型软件的设计

往往具有重要的意义

显然

程序覆盖技术

以时间换取空间上的不足

时间效率上肯定有所牺牲

需要说明的是

开发覆盖程序

会给程序员带来麻烦

好在虚拟存储技术

有效地解决了这一问题

事实上

计算机世界的“时间”

和“空间”是两个非常重要的概念

是衡量程序

或者算法的两个重要的指标

理想情况下

我们希望一个程序运行速度非常快

占用的内存空间又非常小

但事实上

这很多时候是不可能的

除非程序本身就很小很小

通常

希望一个程序运行速度快

恐怕就要需要较大的存储空间

反之

如果想在较小的空间下

运行一个程序

恐怕就需要牺牲时间

也就是程序的运行速度就会变慢

这就有点像天平

这头压下去了

另一头就会抬起来

反之也一样

计算机世界中的

“时间”和“空间”的关系

在现实生活中也有大量的体现

只要我们认真领会

就会发现科学与生活

很多方面都有相通的地方

比如

如果你对股票市场感兴趣

经常关注股市的动态

就不难看到类似下面的股评

目前

大盘将面临时间与空间的转换

就看大盘是在“拖”时间

还是“赶”空间

“拖”时间

对散户来说

就如目前的天气

是煎熬

“赶”空间

是“长痛不如短痛”

“快刀斩乱麻”痛快

下面的股票走势图

所反映的就是一个典型的

以“时间换空间”的实例

该股票很长一段时间

都在底部整理

磨时间

横盘了很久

然后开始拉升

股市里有句谚语

横的越长

升得越高

说的就是

以比较长的“时间”

换取空间上更大的“升幅”

生活中类似的事例太多了

比如

学习上我们每一个人

都从小开始积累知识和能力

经过漫长的锻炼

以获取工作方面

乃至整个人生更大的

舞台和空间

有了大的“舞台和空间”

你又能更加有效地

发挥自己的潜能

做出于国于民更大的事业

再比如

战场上也有以时间换空间

或以空间换时间的案例

解放战争中

党中央审时度势

调集几十万子弟兵

分别跟国民党打了辽沈

淮海

平津三大战役

以巨大的作战空间

换取了全国的迅速解放

这一节就讲到这

谢谢大家

计算思维导论课程列表:

第一单元

-1.1 计算思维及其教育

--Video

第二单元

-2.1 计算是什么

--Video

-2.2 计算与自动计算

--Video

-2.3 计算机及其计算本质特征(I)

--Video

-2.4 计算机及计算的本质特征(II)

--Video

第三单元

-3.1 数的表示与模拟计算

--Video

-3.2 数的表示与数字计算

--Video

-3.3 二进制加法运算的机器化

--Video

-3.4 “九九归一”的加法运算

--Video

-3.5 二进制之优越性及问题与代价

--Video

第四单元

-4.1 从数学危机到图灵机

--Video

-4.2 图灵机的计算能力

--Video

-4.3 什么问题都能计算吗?

--Video

-4.4 冯•诺依曼机及其发展与演化

--Video

-4.5 从算盘到图灵机——机械计算的本质

--Video

-4.6 电子计算机——透过现象看本质

--Video

第五单元

-5.1 思维可机械计算吗(I)

--Video

-5.2 思维可机械计算吗(II)

--Video

第六单元

-6.1 量子理论

--Video

-6.2 量子计算机

--Video

第七单元

-7.1 人类求解问题之过程

--Video

-7.2 基于计算(机)的问题求解过程

--Video

-7.3 面向过程的结构化设计方法学

--Video

-7.4 面向对象之方法学

--Video

-7.5 面向对象技术

--Video

-7.6 抽象

--Video

-7.7 计算学科中的抽象

--Video

-7.8 时间与空间及其相互转换

--Video

-7.9 技术层面的其他方法学

--Video

-7.10 认知层面的其他方法学

--Video

第八单元

-8.1 算法与程序

--Video

-8.2 算法设计方法——枚举

--Video

-8.3 算法设计方法——递推

--Video

-8.4 算法设计方法——递归

--Video

-8.5 算法设计方法——分治

--Video

-8.6 算法设计方法——仿生

--Video

第九单元

-9.1 机器间的通信方式

--Video

-9.2 数据转发方法

--Video

-9.3 网络分层体系结构

--Video

-9.4 有趣的对称加密技术

--Video

-9.5 难解的非对称加密技术

--Video

-9.6 数字签名及其应用

--Video

-9.7 从自然智能到人工智能

--Video

-9.8 符号主义的基本思想

--Video

-9.9 连接主义Ⅰ

--Video

-9.10 连接主义Ⅱ

--Video

-9.11 行为主义的基本思想

--Video

-9.12 机器翻译的愿景与困难

--Video

-9.13 峰回路转的自然语言处理

--Video

-9.14 信息传输中的问题与挑战

--Video

-9.15 重复传输与冗余编码

--Video

-9.16 校验与校验和

--Video

-9.18 自纠错技术及应用

--Video

-9.19 两种简单的数据压缩方法

--Video

-9.20 哈夫曼编码

--Video

-9.21 数据压缩极限与LZ压缩方法

--Video

-9.22 大海捞针的搜索引擎

--Video

-9.23 网页排序方法(PageRank)

--Video

第十单元

-10.1 计算文化

--Video

期末考试

-期末考试--作业

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。