算法程序与计算系统之灵魂最全课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《算法程序与计算系统之灵魂最全课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 程序 计算 系统 灵魂 课件
- 资源描述:
-
1、1/55算法程序与计算系统之灵魂2/55基本目标基本目标:理解算法类问题求解框架理解算法类问题求解框架内容提要内容提要3/55算法:程序与计算系统之灵魂算法:程序与计算系统之灵魂1.算法与算法类问题求解算法与算法类问题求解算法与算法类问题求解算法与算法类问题求解-什么是算法什么是算法-算法类问题及求解概述算法类问题及求解概述4/55算法算法u算法-计算学科和计算机器的灵魂。“算法”(Algorithm)一词源于数学家的名字:公元825年,阿拉伯数学家阿科瓦里茨米(AlKhowarizmi)写了著名的波斯教科书(Persian Textbook),书中概括了进行四则算术运算的计算规则。u算法算法
2、是一个是一个有穷规则有穷规则的集合,它用规则规定了解决某一特定类型问题的运算的集合,它用规则规定了解决某一特定类型问题的运算序列,或者规定了任务执行或问题求解的一系列步骤。序列,或者规定了任务执行或问题求解的一系列步骤。1.算法与算法类问题求解算法与算法类问题求解1.1 什么是算法什么是算法?如音乐乐谱、太极拳谱等都可看作广义的算法如音乐乐谱、太极拳谱等都可看作广义的算法5/55算法算法解决问题的步骤程序程序计算机能够理解与执行的解决问题的步骤计算机语言计算机语言步骤书写的规范、语法规则、标准的集合是人和计算机都能理解的语言 算法、语言与计算机程序算法、语言与计算机程序1.算法与算法类问题求解
3、算法与算法类问题求解1.2 为什么算法很重要呢为什么算法很重要呢?“是否会编程序是否会编程序”,本质上是,本质上是“能否想出求解问题的算法能否想出求解问题的算法”,其次才是将算法用计算机可以识别的形式书写出来其次才是将算法用计算机可以识别的形式书写出来6/55u欧几里德算法欧几里德算法:求解两个数的最大求解两个数的最大公约数的算法公约数的算法(公元前公元前300年年)表述了最大公约数的求解过程表述了一个判定过程,即判定“m和n是互质的”(即除1以外,m和n没有公约数)命题的真假。该算法体现了输入、输出、有穷规则、确定性和能行性等算法的基本特征。寻找两个正整数的最大寻找两个正整数的最大公约数的欧
4、几里德算法公约数的欧几里德算法输入输入:正整数:正整数M和正整数和正整数N输出输出:M和和N的最大公约数的最大公约数(设设MN)算法步骤算法步骤:Step 1.M除以除以N,记余数为记余数为RStep 2.如果如果R不是不是0,将将N的值赋给的值赋给M,R的值赋给的值赋给N,返回返回Step 1;否则否则,最大最大公约数是公约数是N,输出输出N,算法结束。算法结束。算法示例算法示例1.算法与算法类问题求解算法与算法类问题求解1.3 什么是计算学科中的算法什么是计算学科中的算法?7/55有穷性有穷性:一个算法在执行有穷步规则之后必须结束。确定性确定性:算法的每一个步骤必须要确切地定义,不得有歧义
5、性。输入输入:算法有零个或多个的输入。输出输出:算法有一个或多个的输出/结果,即与输入有某个特定关系的量。能行性能行性:算法中有待执行的运算和操作必须是相当基本的(可以由机器自动完成可以由机器自动完成)。并能在有限时间内完成。算法的基本特征算法的基本特征1.算法与算法类问题求解算法与算法类问题求解1.4 具备什么特征才能被认为是算法具备什么特征才能被认为是算法?基本运算:除法、赋值、逻辑判断基本运算:除法、赋值、逻辑判断典型的典型的“重复重复/循环循环”与与“迭代迭代”寻找两个正整数的最大寻找两个正整数的最大公约数的欧几里德算法公约数的欧几里德算法输入输入:正整数:正整数M和正整数和正整数N输
6、出输出:M和和N的最大公约数的最大公约数(设设MN)算法步骤算法步骤:Step 1.M除以除以N,记余数为记余数为RStep 2.如果如果R不是不是0,将将N的值赋给的值赋给M,R的值赋给的值赋给N,返回返回Step 1;否则否则,最大最大公约数是公约数是N,输出输出N,算法结束。算法结束。8/55u算法(类)问题:寻找一个(唯一的)方法(算法)以解决同一类型的无穷多个单个问题系列的问题。u典型问题:哥尼斯堡七桥问题哥尼斯堡七桥问题:“寻找走遍这7座桥且只许走过每座桥一次最后又回到原出发点的路径”“对给定的任意一个河道图与任意多座桥判定可能不可能每座桥恰好走过一次?”。梵天塔问题梵天塔问题:有
7、三根柱子,梵天将64个直径大小不一的金盘子按照从大到小的顺序依次套放在第一根柱子上形成一座金塔,要求每次只能移动一个盘子,盘子只能在三根柱子上来回移动不能放在他处,在移动过程中三根柱子上的盘子必须始终保持大盘在下小盘在上。其他如:背包问题背包问题,丢番图方程可丢番图方程可解性问题解性问题;1.算法与算法类问题求解算法与算法类问题求解1.5 你知道一些典型的算法类问题吗你知道一些典型的算法类问题吗?算法类问题:由一个算法可以解决的问题9/55uTSP问题(Traveling Salesman Problem,旅行商问题旅行商问题),威廉哈密尔顿爵士和英国数学家克克曼于19世纪初提出TSP问题uT
8、SP问题问题:有若干个城市,任何两个城市之间的距离都是确定的,现要:有若干个城市,任何两个城市之间的距离都是确定的,现要求一旅行商从某城市出发必须经过每一个城市且只能在每个城市逗留一次,求一旅行商从某城市出发必须经过每一个城市且只能在每个城市逗留一次,最后回到原出发城市,问如何事先确定好一条最短的路线使其旅行的费用最后回到原出发城市,问如何事先确定好一条最短的路线使其旅行的费用最少。最少。uTSP是最有代表性的组合优化组合优化问题之一,在半导体制造(线路规划)、物流运输(路径规划)等行业有着广泛的应用。城市之间的距离城市之间的距离1.算法与算法类问题求解算法与算法类问题求解1.6 你知道你知道
9、TSP问题吗问题吗?算法类问题示例10/55u问题抽象及数学建模问题抽象及数学建模:将问题抽象为一个数学问题,并给出求解该数学问题的算法模型。u算法策略设计算法策略设计u算法的数据结构和控制结构算法的数据结构和控制结构设计设计:将数学模型转换为可由计算机自动计算的算法。u算法的实现算法的实现:用程序设计语言编写算法实现的程序。u算法的分析算法的分析:分析算法的正确性和复杂性,判断能行性!1.算法与算法类问题求解算法与算法类问题求解1.7 你知道算法类问题求解的一般步骤吗你知道算法类问题求解的一般步骤吗?算法类问题求解框架11/55算法:程序与计算系统之灵魂算法:程序与计算系统之灵魂2.数学建模
10、与算法策略设计数学建模与算法策略设计-算法思想算法思想数学建模与算法策略设计数学建模与算法策略设计-算法思想算法思想-数学建模数学建模-有不同的算法求解策略有不同的算法求解策略12/55算法类问题求解的第一步就是要数学建模。算法类问题求解的第一步就是要数学建模。u数学建模:数学建模:是一种数学的思考方法,是运用数学的语言和方法,通过抽象、简化建立对问题进行精确描述和定义的数学模型。简单而言,数学建模数学建模是用数学语言描述实是用数学语言描述实际现象的过程际现象的过程,即建立数学模型的过程。u数学模型数学模型是对实际问题的一种数学表述,是关于部分现实世界为某种目是对实际问题的一种数学表述,是关于
11、部分现实世界为某种目的的一个抽象的简化的数学结构。的的一个抽象的简化的数学结构。2.数学建模与算法策略设计数学建模与算法策略设计-算法思想算法思想2.1 为什么说数学建模对于算法很重要为什么说数学建模对于算法很重要?将现实世界的问题抽象成数学模型,就可能发现问题的本将现实世界的问题抽象成数学模型,就可能发现问题的本质及其能否求解,甚至找到求解该问题的方法和算法。质及其能否求解,甚至找到求解该问题的方法和算法。13/55哥尼斯堡七桥问题哥尼斯堡七桥问题被抽象成一个“图图(Graph)”-由节点和边所构成的一种结构,-依据“图”,可发现该问题所蕴含的许多性质:u“回路回路-从一个节点出发最后又回到
12、该节点的一条路径”u“连通连通-两个节点间有路径相连接”u“可达可达-从一个节点出发能够到达另一个节点”u“经过图中每边一次且仅一次的回路经过图中每边一次且仅一次的回路”u“经过图中每个节点一次且仅一次的回路”u 什么情况下有解,什么情况下无解?什么情况下有解,什么情况下无解?u注:离散数学或者集合论与图论课程将介绍图的有关性质和方法。2.数学建模与算法策略设计数学建模与算法策略设计-算法思想算法思想2.1 为什么说数学建模对于算法很重要为什么说数学建模对于算法很重要?如果能抽象成数学模型,则可将一个具体问题如果能抽象成数学模型,则可将一个具体问题的求解,推广为一类问题的求解!的求解,推广为一
13、类问题的求解!14/55TSP问题的数学模型问题的数学模型2.数学建模与算法策略设计数学建模与算法策略设计-算法思想算法思想2.2 数学建模要做到怎样数学建模要做到怎样?15/55算法策略设计算法策略设计-算法思想算法思想当数学建模完成后,就要设计算法的策略或者说问题求解的策略。当数学建模完成后,就要设计算法的策略或者说问题求解的策略。uTSP问题的基本求解策略u遍历遍历:列出每一条可供选择的路线,计算出每条路线的总里程,最后从中选出一条最短的路线。u出现的问题是出现的问题是:组合爆炸组合爆炸路径组合数目:(n-1)!20个城市,遍历总数1.2161017计算机以每秒检索1000万条路线的计算
14、速度,需386年。所有路径组所有路径组合及其长度合及其长度城市之间的距离城市之间的距离2.数学建模与算法策略设计数学建模与算法策略设计-算法思想算法思想2.3 算法思想或者算法策略对问题求解有什么影响算法思想或者算法策略对问题求解有什么影响?16/55uTSP问题的难解性问题的难解性:随着城市数量的上升,TSP问题的“遍历”方法计算量剧增,计算资源将难以承受。u2001年解决了德国15112个城市的TSP问题,使用了美国Rice大学和普林斯顿大学之间互连的、速度为500MHz 的Compaq EV6 Alpha 处理器组成的110台计算机台计算机,所有计算机花费的时间之和为22.6年年。An
15、optimal TSP tour through Germanys 15 largest cities.It is the shortest among 43 589 145 600 possible tours visiting each city exactly once.2.数学建模与算法策略设计数学建模与算法策略设计-算法思想算法思想2.3 算法思想或者算法策略对问题求解有什么影响算法思想或者算法策略对问题求解有什么影响?17/55uTSP问题,有没有其他求解算法呢?问题,有没有其他求解算法呢?u最优解最优解 vs.可行解可行解u不同的算法设计策略:遍历、搜索算法遍历、搜索算法 分治算
16、法分治算法 贪心算法贪心算法 动态规划算法动态规划算法 u可选取一种合适的策略来求解TSP问题可行解最优解TSP问题的可行解与最优解示意2.数学建模与算法策略设计数学建模与算法策略设计-算法思想算法思想2.4 有哪些算法策略有哪些算法策略?算法策略设计算法策略设计-算法思想算法思想18/55u贪心算法贪心算法是一种算法策略,或者说问题求解的策略。基本思想“今朝有酒今朝醉”。一定要做当前情况下的最好选择,否则一定要做当前情况下的最好选择,否则将来可能会后悔,故名将来可能会后悔,故名“贪心贪心”。uTSP问题的贪心算法求解思想从某一个城市开始,每次选择一个城市,直到所有城市都被走完。每次在选择下一
17、个城市的时候,只考虑每次在选择下一个城市的时候,只考虑当前情况,保证迄今为止经过的路径总距当前情况,保证迄今为止经过的路径总距离最短。离最短。城市之间的距离城市之间的距离2.数学建模与算法策略设计数学建模与算法策略设计-算法思想算法思想2.5 为什么称为为什么称为“贪心算法贪心算法”?贪心算法贪心算法19/55算法:程序与计算系统之灵魂算法:程序与计算系统之灵魂3.算法设计算法设计-算法思想的精确表达算法思想的精确表达算法设计算法设计-算法思想的精确表达算法思想的精确表达(I)-算法的数据结构设计算法的数据结构设计-算法的控制结构设计及其表达方法算法的控制结构设计及其表达方法-TSP算法解读算
18、法解读20/553.算法设计算法设计-算法思想的精确表达算法思想的精确表达3.1 算法设计包括什么算法设计包括什么?算法设计算法设计n算法的数据结构设计算法的数据结构设计-问题或算法相关的数据之间的逻辑关问题或算法相关的数据之间的逻辑关系及存储关系的设计系及存储关系的设计 n算法的控制结构设计算法的控制结构设计-算法的计算规则或计算步骤设计算法的计算规则或计算步骤设计如何构造和表达处理的规则,以便能够按规则逐步计算出结果如何构造和表达处理的规则,以便能够按规则逐步计算出结果?如何将数学模型中的数据转为计算机可以存储和处理的数据?如何将数学模型中的数据转为计算机可以存储和处理的数据?21/55数
19、据结构数据结构u如何组织、记忆、改变和操作数据的集合呢?数据存在什么结构呢?数据的逻辑结构数据的逻辑结构:数据之间的关系;数学模型中反映的通常是数据的逻辑结构。数据的存储结构数据的存储结构:在反映数据逻辑关系的原则下,数据在存储器中的存储方式。典型的有顺序存储结构和链式存储结构。面向数据存储结构的基本运算基本运算:(1)建立数据结构;(2)清除数据结构;(3)插入数据元素;(4)删除数据元素;(5)更新数据元素;(6)查找数据元素;(7)按序重新排列;(8)判定某个数据结构是否为空,或是否已达到最大允许的容量;(9)统计数据元素的个数等。u数据结构数据结构是数据的逻辑结构、存储结构及其操作的总
20、称,它提供了问题是数据的逻辑结构、存储结构及其操作的总称,它提供了问题求解求解/算法的数据操纵机制。算法的数据操纵机制。3.算法设计算法设计-算法思想的精确表达算法思想的精确表达3.2 什么是数据结构什么是数据结构?22/553.算法设计算法设计-算法思想的精确表达算法思想的精确表达3.2 什么是数据结构什么是数据结构?典型的数据结构典型的数据结构-“树树”示例示例存储结构中存储结构中,用一个指针表达数据之间的逻辑关系用一个指针表达数据之间的逻辑关系150120160数据的逻辑结构数据的逻辑结构数据的存储结构数据的存储结构503070100数据元素数据元素对应数据元素的对应数据元素的指针指针指
21、向该元指向该元素的父元素素的父元素数据结构的设计数据结构的设计23/55150120160503070100数据的逻辑结构数据的逻辑结构数据的存储结构数据的存储结构通过指针的变化通过指针的变化,不改变数据的存储不改变数据的存储,但却改变了数据之间的逻辑关系但却改变了数据之间的逻辑关系数据结构的设计数据结构的设计3.算法设计算法设计-算法思想的精确表达算法思想的精确表达3.2 什么是数据结构什么是数据结构?24/55150120160503070100数据元素数据元素对应数据元素的左对应数据元素的左指针指针指向该元素指向该元素的左侧子结点的左侧子结点对应数据元素的右对应数据元素的右指针指针指向该
22、元素指向该元素的右侧子结点的右侧子结点3.算法设计算法设计-算法思想的精确表达算法思想的精确表达3.3 同样的逻辑结构可以有不同的存储结构吗同样的逻辑结构可以有不同的存储结构吗?数据结构的设计数据结构的设计典型的数据结构典型的数据结构-“树树”示例示例另一种存储结构另一种存储结构,用两个指针用两个指针表达数据之间的逻辑关系表达数据之间的逻辑关系数据的逻辑结构数据的逻辑结构数据的存储结构数据的存储结构数据结构不同,数据之间的操作方法也是不同的数据结构不同,数据之间的操作方法也是不同的25/551501201605030701003.算法设计算法设计-算法思想的精确表达算法思想的精确表达3.3 同
23、样的逻辑结构可以有不同的存储结构吗同样的逻辑结构可以有不同的存储结构吗?数据结构的设计数据结构的设计典型的数据结构典型的数据结构-“树树”示例示例另一种存储结构另一种存储结构,用两个指针用两个指针(左指针左指针和和右指针右指针)表达数据之间的逻辑关系表达数据之间的逻辑关系数据的逻辑结构数据的逻辑结构150120160503070100数据的逻辑结构数据的逻辑结构110Null动手练习一下动手练习一下26/55u向量向量或列表列表或数组数组。u矩阵矩阵或表表向向量量实实例例n=4;Sum=0;For J=0 to n Step 1 Sum=Sum+mark J;Next JAvg=Sum/n;多
24、元素变量及其程序处理多元素变量及其程序处理(前讲介绍的前讲介绍的)3.算法设计算法设计-算法思想的精确表达算法思想的精确表达3.4 多元素变量结构是怎样的多元素变量结构是怎样的?112522254539844212801003483751612341234行行列列M2,3表表实实例例Sum=0;For I=1 to 4 Step 1 For J=1 to 4 Step 1 Sum=Sum+MIJ;Next J Next I Avg=Sum/16;27/55u数据结构设计就是针对选定的算法策略,设计其相应的数据结构及数据结构设计就是针对选定的算法策略,设计其相应的数据结构及其运算规则。不同的算法
展开阅读全文