第一章算法概述概要

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
快速电子计算机贵在神速,也就是它的运算速度快,同时它的发展之迅速也是惊人的。 从每秒5000次运算,发展到现在的运算速度每秒数千亿次运算。元器件从继电器、真空管、 晶体管、集成电路、大规模集成电路,发展到超大规模集成电路。结构上从每台机器作为 运算工具的“单兵作战”模式,发展到今天将范围遍及各大洲的计算机网络,算法也从单 机的串行计算发展到网络上并行的分布计算。
(5)背包问题2:设有n=8个体积分别为54,45,43,29,23,21,14,1的物体和一个 容积为C=110的背包,问选择哪几个物体装入背包可以使其装的最满。
(6)装箱问题:设有体积分别为v1,v2,…,vn的n种物品u1,u2,…,un装到容量为L的箱子里。 不同的装箱方案所需的箱子数目可能不同,问如何装箱能装完这n种物品且使用的箱子数目最 少。
第一章算法概述概要
1
第1章 算法概述
学习要点: • 理解算法的概念。 • 理解什么是程序,程序与算法的区别和内在联系。 • 掌握算法的计算复杂性概念。 • 掌握算法渐近复杂性的数学表述。 • 掌握用java语言描述算法的方法。
电子计算机的出现是本世纪的一件大事,因为它改变了我们这个世界的面貌。可以毫 不夸张地这么说,今天人们依赖于计算机,就象人们依赖于电力,如果它暂停了,社会就 无法运转。
这就是说,计算机虽么都能做,有的事情理论上它根本做不了。讨论哪些事计算机能做,哪些事计算机做 不了,属于可计算性理论研究的范畴。还有一些问题理论上计算机虽是能做,但实际上 又是不可能完成的。
比如拿最简单例子,26个英文字母全排列,它的排列数为: 26!≈4×1026
设距离矩阵如下:
0 39 7 55 64
39
0
41
73
72
D 7 41 0 56 65
55 73 56
0
18
64 72 65 18 0
试一试求出最短路径。
(2) 皇后问题:这是高斯1850年提出的一个著名问题: 国际象棋中的“皇后”在横向、直向、 和斜向都能走步和吃子,问在n×n 格的棋盘上如何能摆上n个皇后而使她们都不能互相吃。
以每年365天计算,共有 365×24×3600=3.1536×107秒
以每秒能完成107个排列的超高速电子计算机来做这项工作,需要 4×1026/(3.1536×1014)≈1.2×1012年
即使计算机运行速度随着技术的提高,恐怕也还是不可能实现的。因计算机的速度再提高 也有它的极限。
任何一项计算,总要事先拟定计算方案和规划计算步骤。为使计算机的计算过程能够解决某 一问题,必须为计算机设计执行的解决方案中的每个详细步骤,并且将此过程完整地描述出来。 所谓算法是对某个问题求解方案的完整而明确的描述。
这样的算法是不存在的。” (不过,要证明一个问题不存在有效算法,往往跟寻找有效算法一样难。)
问:“交给你的问题,解决方案设计出来了吗?” 答: “我找不到一个有效的算法来解决它,但不是
我不行,因为所有这些名人也都找不到解决它 的有效算法。”
如果是你的话,你愿意是哪种结果?
3. 问题解决的好吗? 设计出解决问题的算法后,要知道算法的优劣好坏,是好算法则不必对其怀疑而再浪费时
与算法有关的还有一个大家熟悉的公式: 程序=算法十数据结构 也就是说,算法设计和程序设计是不完全相同的。由于数字计算机运算速度很高,是人工手 算所不能比拟的。为了充分发挥计算机的这种优点,在用计算机求解问题过程中,应尽量减少人 工干预。因此,必须先将所制定的解决方案“告诉”计算机,使计算机按照人们规定的计算顺序 去自动执行。用计算机能接受的“语言”来描述解题步骤,这项工作叫做程序设计,它还包含了 需要使用合适的数据结构。
间进行研究。不是好算法则应再进行研究改进。而如何知道算法的优劣好坏,需要学习分析算 法的方法。
要设计出好算法,需要学习算法设计的常用方法。
算法(Algorithm)
“算法设计与分析”是研究算法的一门学科。它还很年轻远未定型,还处在发展中。 有人说“计算机科学是一门研究算法的科学”。不论这个说法是否全面,算法无疑是计 算机科学的重要组成部分。它近来发展极其迅速。“算法设计与分析”已是计算机专业 本科生的一门必需掌握的内容。
1.一些有趣的问题 (1) 巡回推销员问题:设有n个城市,已知任意两城市间之距离,现有一推销员想从某一 城市出发巡回经过每一城市(且每城市只经过一次),最后又回到出发点,问如何找一 条最短路径。
当n很大时,问题很难。 对于n=8,现已知此问题共有92种解,但只有12种是独立的,其余的都可以由这12种利用对 称性或旋转而得到。 设n=4,试一试。
(3)设天平有一些25克的砝码,一些10克的砝码,一些5克的砝码和一些1克的砝码。现 要称63克的物体,问至少需要用几个砝码。
(4)背包问题1:有一旅行者要从n种物品中选取不超过b公斤重的行李随身携带,要求 总价值最大。 例:设背包的容量为50千克。物品1重10千克,价值60元;物品2重20千克,价值100元; 物品3重30千克,价值120元。求总价值最大。
一台作109次/秒运算(1G)的计算机的效率超过10亿人同时工作。它可以作中期的天 气预报,可以控制庞大的化工厂生产过程,以至于还可以驾驭现代化战争,从这个意义 上来说它确实是近乎神奇的。不过必须强调的是这些都是在人的安排下进行工作的。比 如人们利用计算机作天气预报,必须依据天气变化规律,作出它的偏微分方程数学模型, 以及编好程序,指导计算机按照人的安排一步步地工作,计算预报数据,绘制气象云图。
(7)平面图的四色猜想问题:一个平面图是否用四种颜色就可使相邻的区域颜色都不相同?
2.研究算法的重要性 假设某一负责人交给你一个很难的任务,几天后询问你问题解决了没有。可能会发生如下图
这样的情况:
问:“交给你的问题,解决方案设计出来了吗?” 答:“我找不到一个有效的算法来解决它,没能完成任
务。”
问:“交给你的问题,解决方案设计出来了吗?” 答: “我找不到一个有效的算法来解决它,因为
相关文档
最新文档