Upload
others
View
28
Download
0
Embed Size (px)
Citation preview
[email protected] http://parnec.nju.edu.cn/huangsj
大学计算机
计算思维导论
南京航空航天大学 2015年
计算机科学与技术学院
大学计算机 —— 计算思维导论 2015年
第3章 问题求解框架
计算思维导论
• 第1章 引论 • 第2章 计算系统的基本思维 • 第3章 问题求解框架 • 第4章 算法与复杂性 • 第5章 数据抽象、设计与挖掘 • 第6章 计算机网络、信息网络与网络化社会
大学计算机 —— 计算思维导论 2015年
第3章 问题求解框架
第3章 问题求解框架
• 3.1 传统程序的构成要素 • 3.2 算法类问题求解框架 • 3.3 现代程序的构成要素 • 3.4 系统类问题求解框架
大学计算机 —— 计算思维导论 2015年
第3章 问题求解框架
第3章 问题求解框架
• 3.1 传统程序的构成要素 • 3.2 算法类问题求解框架 • 3.3 现代程序的构成要素 • 3.4 系统类问题求解框架
大学计算机 —— 计算思维导论 2015年
第3章 问题求解框架
问题
算法 系统
(硬件/嵌入式系统;软件系统;网络系统;信息系统;服务系统)
计算机程序
第3章 问题求解框架
大学计算机 —— 计算思维导论 2015年
第3章 问题求解框架
第3章 问题求解框架
• 3.2.1 算法的基本概念 • 3.2.2 数学建模:建立问题的数学模型 • 3.2.3 算法思想:算法策略选择 • 3.2.4 算法设计:算法思想的精确表达 • 3.2.5 算法的模拟与分析 • 3.2.6 算法的复杂性 • 3.2.7 算法类问题求解框架
大学计算机 —— 计算思维导论 2015年
第3章 问题求解框架
第3章 问题求解框架
• 算法的基本概念 – 算法被誉为计算学科、计算机器和程序的灵魂
– 算法是一个有穷规则的集合,它用规则规定了解决某一特定类型问题的运算序列,或者规定了任务执行或问题求解的一系列步骤。
程序=算法+数据结构
什么是算法?
大学计算机 —— 计算思维导论 2015年
第3章 问题求解框架
第3章 问题求解框架
11.11
什么是算法?
你今天怎么过?
大学计算机 —— 计算思维导论 2015年
第3章 问题求解框架
第3章 问题求解框架
• 丢番图方程是否有整数解?
a1x1b1+a2x2b2+…+anxnbn=c
过路的人! 这儿埋葬着丢番图. 请计算下列数目,
便可知道他一生经过了多少个寒暑. 他一生的六分之一是幸福的童年, 十二分之一是无忧无虑的少年. 再过去七分之一的生命旅程,
他建立了幸福的家庭. 五年后儿子出生,
不料儿子竟先于父亲四年而终, 年龄不过父亲享年的一半,
晚年丧子老人真可怜, 悲痛之中度过了风烛残年.
大学计算机 —— 计算思维导论 2015年
第3章 问题求解框架
第3章 问题求解框架
• 线性丢番图方程 – ax=b是否有整数解?
– ax+by=c是否有整数解?
先求出a和b的最大公约数d, 若d能整除c,则该方程有整数解
– 如何求最大公因子
欧几里德算法(公元前300年):展转相除法
大学计算机 —— 计算思维导论 2015年
第3章 问题求解框架
第3章 问题求解框架
• 欧几里德算法 M N R
最大公约数 具体问题 32
24 ?
计算过程1 32
24 8
计算过程2 24
8 0 8 具体问题
31 11
? 计算过程1
31 11 9 计算过程2
11 9 2 计算过程3
9 2
1 计算过程4 2
1 0
1
输入:正整数m和正整数n 输出:m和n的最大公约数 算法: Step1: • m除以n,记余数为r Step2: • 如果r不是0,将n赋给m,r
赋给n,返回Step1, • 否则最大公约数是n,输
出n,算法结束
什么是算法?
大学计算机 —— 计算思维导论 2015年
第3章 问题求解框架
第3章 问题求解框架
• 算法是一个有穷规则的集合,它用规则规定了解决某一特定类型问题的运算序列,或者规定了任务执行或问题求解的一系列步骤。
• 算法的基本特征 – 有穷性:一个算法在执行有穷步规则之后必须结束。 – 确定性:算法的每一个步骤必须要确切地定义,不得有歧义性。 – 输入:算法有零个或多个的输入。 – 输出:算法有一个或多个的输出/结果,即与输入有某个特定关
系的量。 – 能行性:算法中有待执行的运算和操作必须是相当基本的。
大学计算机 —— 计算思维导论 2015年
第3章 问题求解框架
第3章 问题求解框架
• 算法类问题 – 由一个算法可以解决的问题 – 寻找一个方法(算法)以解决同一类型的无穷多个单个问题。
• 典型算法类问题: – 哥尼斯堡七桥问题 – 梵天塔问题: – 旅行商问题 – 背包问题 – …
大学计算机 —— 计算思维导论 2015年
第3章 问题求解框架
第3章 问题求解框架
• 算法类问题求解概述 – 问题抽象及数学建模:将问题抽象为一个数
学问题,并给出求解该数学问题的算法模型。 以哥尼斯堡七桥问题为例
– 算法策略设计 以旅行商问题为例
– 算法的数据结构和控制结构设计:将数学模型转换为可由计算机自动计算的算法。 以梵天塔问题为例
– 算法的实现:用程序设计语言编写算法实现的程序。
– 算法的分析:分析算法的正确性和复杂性,判断能行性。
算法类问题
数学建模
算法策略设计
数据结构设计
算法思想表达
程序实现
算法的模拟与分析
算法的复杂性
大学计算机 —— 计算思维导论 2015年
第3章 问题求解框架
第3章 问题求解框架
• 哥尼斯堡七桥问题
大学计算机 —— 计算思维导论 2015年
第3章 问题求解框架
第3章 问题求解框架
• 思考 – 欧拉如何解决哥尼斯堡七桥问题?
• 问题抽象及数学建模
算法类问题
数学建模
算法策略设计
数据结构设计
算法思想表达
程序实现
算法的模拟与分析
算法的复杂性
大学计算机 —— 计算思维导论 2015年
第3章 问题求解框架
第3章 问题求解框架
• 旅行商问题(Traveling Salesman Problem): – 有若干个城市,任何两个城市之间的距离都是确定的,现要求
一旅行商从某城市出发必须经过每一个城市且只能在每个城市逗留一次,最后回到原出发城市,问如何事先确定好一条最短的路线使其旅行的费用最少。
大学计算机 —— 计算思维导论 2015年
第3章 问题求解框架
第3章 问题求解框架
• 旅行商问题(Traveling Salesman Problem): – http://www.optitool.de/en/optimisation/optimisation-
game-tsp.html
– http://www.math.uwaterloo.ca/tsp/games/tspTwoPlayers.html
http://www.optitool.de/en/optimisation/optimisation-game-tsp.htmlhttp://www.optitool.de/en/optimisation/optimisation-game-tsp.htmlhttp://www.math.uwaterloo.ca/tsp/games/tspTwoPlayers.htmlhttp://www.math.uwaterloo.ca/tsp/games/tspTwoPlayers.html
大学计算机 —— 计算思维导论 2015年
第3章 问题求解框架
第3章 问题求解框架
• TSP问题求解策略 – 遍历:列出每一条可供选择的路线,计算出每条路线的总里程,
最后从中选出一条最短的路线 – 组合爆炸:路径组合数目:(n-1)! – 20个城市,遍历总数1.216×1017 – 每秒检索1000万条路线,需386年
• 走遍德国最大的15个城市的最短路径
• 总共有 43589145600 种可能的路径.
大学计算机 —— 计算思维导论 2015年
第3章 问题求解框架
第3章 问题求解框架
• TSP问题求解策略 – 贪心算法:每次在选择下一
个城市的时候,只考虑当前情况,保证迄今为止经过的路径总距离最短
– 非最优解(可行解)
可行解 最优解
TSP问题的可行解与最优解
大学计算机 —— 计算思维导论 2015年
第3章 问题求解框架
第3章 问题求解框架
• 思考 – 你是如何选择下一个点的? – 电脑是如何得到最优路径的?
• 算法策略设计
算法类问题
数学建模
算法策略设计
数据结构设计
算法思想表达
程序实现
算法的模拟与分析
算法的复杂性
大学计算机 —— 计算思维导论 2015年
第3章 问题求解框架
第3章 问题求解框架
• 梵天塔问题
大学计算机 —— 计算思维导论 2015年
第3章 问题求解框架
第3章 问题求解框架
• 思考:如果有10个圆盘呢?
大学计算机 —— 计算思维导论 2015年
第3章 问题求解框架
第3章 问题求解框架
• 思考 – 柱子和圆盘如何表示? – 圆盘的移动如何表达? – 用raptor求三角形面积
• 算法思想的精确表达 – 数据结构设计 – 算法流程设计 – 算法的程序实现
算法类问题
数学建模
算法策略设计
数据结构设计
算法思想表达
程序实现
算法的模拟与分析
算法的复杂性
大学计算机 —— 计算思维导论 2015年
第3章 问题求解框架
第3章 问题求解框架
• 实现的算法是正确的吗? – 算法的输出是问题的一个解吗? – 20世纪60年代,美国一架发往金星的航天飞机由于控制程序出
错而永久丢失在太空中。
• 算法的效果如何? – 算法的输出是最优解还是可行解?如果是可行解,与最优解的
偏差多大?
大学计算机 —— 计算思维导论 2015年
第3章 问题求解框架
第3章 问题求解框架
• 两种评价方法: – 证明方法:利用数学方法证明算法的
正确性和算法的效果; – 模拟/仿真分析方法:产生或选取大
量的、具有代表性的问题实例,利用该算法对这些问题实例进行求解,对算法产生的结果进行统计分析。
• 思考 – 用raptor编程时你是如何检查错误的?
算法类问题
数学建模
算法策略设计
数据结构设计
算法思想表达
程序实现
算法的模拟与分析
算法的复杂性
大学计算机 —— 计算思维导论 2015年
第3章 问题求解框架
第3章 问题求解框架
• 另一个问题:算法是能够执行的吗?效率如何?
• 思考:TSP问题 – 遍历算法: 路径组合数目为(n-1)! – 贪心算法: 关于n的三重循环,即复杂度为n3级别
• 大O记法
– O(n3)
大学计算机 —— 计算思维导论 2015年
第3章 问题求解框架
第3章 问题求解框架
• 算法的复杂性分析 – 时间复杂性 – 空间复杂性
算法类问题
数学建模
算法策略设计
数据结构设计
算法思想表达
程序实现
算法的模拟与分析
算法的复杂性
大学计算机 —— 计算思维导论 2015年
第3章 问题求解框架
第3章 问题求解框架
算法类问题求解
算法类问题
数学建模
算法策略设计
数据结构设计
算法思想表达
程序实现
算法的模拟与分析
算法的复杂性
大学计算机��计算思维导论计算思维导论第3章 问题求解框架第3章 问题求解框架第3章 问题求解框架第3章 问题求解框架第3章 问题求解框架第3章 问题求解框架第3章 问题求解框架第3章 问题求解框架第3章 问题求解框架第3章 问题求解框架第3章 问题求解框架第3章 问题求解框架第3章 问题求解框架第3章 问题求解框架第3章 问题求解框架第3章 问题求解框架第3章 问题求解框架第3章 问题求解框架第3章 问题求解框架第3章 问题求解框架第3章 问题求解框架第3章 问题求解框架第3章 问题求解框架第3章 问题求解框架第3章 问题求解框架第3章 问题求解框架第3章 问题求解框架