第五节 新算法的要点.docVIP

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
运筹学 第四讲: 线性规划(三) (2008年10 内容提要 (1)算法复杂度的概念, (2)线性规划求解的多项式复杂度算法, (3)线性规划求解软件包 (主要以Maple为例) 的使用方法, (4)对偶线性规划的基本性质和算法,(5) 影子价格: 对偶线性规划的经济学解释, (6)线性规划的灵敏度分析 第一节 算法复杂度的概念 衡量一个算法的好坏,计算时间的多少是非常重要的一个标志. 太花费时间的算法总是不手欢迎的. 由于实际的执行时间依赖于计算机的性能,因此算法所用时间指的是它执行的基本运算(如算术运算, 比较运算)的总次数来衡量的. 当然, 即使用同一个算法计算同一类型的问题时, 由于各问题的数据不同, 计算快慢也会不同, 一般用最坏情况下所花的时间来做讨论. 设输入数据的规模为l, 设在最坏情况下的运算次数为f(l), 这样的f(l)可以称为算法的计算复杂度. 具体看下面的几个例子 1整数的乘法. 若以数字的位数为数据的规模, 10以内的乘法(九九表)和任意长整数数的加法为基本运算, 则一个位整数和一个位整数的乘法, 按照我们通常使用的方法, 需要的运算次数为:乘法为次, 加法的次数为次, 合起来. 2排序. 若以输入的数据的个数为规模, 则将个数按照从小到大的次序排列, 最容易想到的方法是Inserting Sorting, 这个方法, 其实很多人玩扑克的时候在用, 先把手里8的牌扣在桌子上, 然后一个一个地拿起来, 然后插在合适的位置. 如下面的图 数字按照这种方法排序的过程, 可以用下面的图来形象地表示. Inserting排序的计算次数根据输入的数字的情况, 最坏情况下需要的计算(比较)次数是的一个二次函数, , 其中是与无关的常数. 当充分大的时候, 二次函数的大小主要决定于二次项, 即 , 又系数与无关, 可写成下面形式 这个记号在分析算法的复杂度的时候非常有用. 如果同一个问题, 有两个不同的算法, 其复杂度都是, 虽然前面的常数不同, 如 但从复杂度分析的角度来说, 可以看成同一类的, 如果两个算法, 里面的函数的比值, 在时的极限是或者, 则他们的算法复杂度之间认为有很大差别. 例如, 已知多项式的各系数和一个具体的数值, 则计算多项式在的值, 可以用下面的两个算法 其复杂度为 其复杂度为 我们说, 的复杂度比的高. 有些算法的复杂度含有对数, 有的有指数等表达式. 例如, 设求整数的最大公因数, 用下面的Euclid递归算法: 则该算法的递归次数是.如果用整数的位长作为数据规模, 则算法复杂度是. 判断一个整数是否素数, 如果用下面的方法 计算的话, 需要的次数, 按照的位数衡量, 是. 具有什么样的复杂度的算法是一个好的算法?目前计算机科学中广为接受的观点是:多项式时间算法, 即 或者, 以多项式为上界的算法, 如等, 是好的算法;而指数时间算法, 或以指数式为下界的算法, 则是坏的. 我们可以以下面的故事来感受一下指数增长的恐怖(这可以看成空间复杂度的例子). 故事说的是很久很久以前. 在古波斯, 或是印度, 国王的“内阁大学士”——Vizier(宰相)发明了一种新游戏. 玩法是在一个分成64个红色和黑色小方块的方板上, 移动一些棋子. 最重要的棋子是国王, 其次是宰相——在一位宰相发明的游戏里, 这是理所当然的. 游戏的目标是捉住对方的国王, 因此这种游戏在波斯语里叫作shahmat, 其中shah的意思是国王, mat是死. 俄国人仍把它称为shakhmat, 似乎传达着某种挥之不去的革命气息. 甚至英语里也仍回荡着这个名字的余音——最后的一着叫作checkmate(将死). 不用说, 这种游戏就是象棋. 随着时间的流逝, 棋子、棋步、游戏规则都发生了变化, 例如宰相换成了力量更强的王后. 为什么一个国王会为一个叫做“国王之死”的游戏问世感到高兴, 实在难以理解. 但故事就是这样发展的. 他非常高兴, 让宰相提出他想要的奖赏. 宰相早就想好了, 对国王说, 他是个谦逊的人, 只想要一点普通的奖赏. 他指着自己发明的棋盘上的8行和8列格子说, 希望能在第一个格子里放一粒麦子, 第2个格子增加一倍, 第3个再增加一倍, 直到所有的格子填满. 国王反对说, 对这样重要的一桩发明而言, 这份奖品太寒酸了. 他表示愿意赏赐珠宝、舞姬、宫殿……但宰相得体地低眉顺眼, 拒绝了这些:他只想要一小堆麦子. 国王暗暗对他的谦卑和节制感到惊奇, 同意了他的请求. 然而, 皇家仓库的总管开始数麦子时, 国王遇到了一个令人不快的意外. 麦子的数目开始是很小的:1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, ……但到第64个格子时, 麦粒数目变得极为庞大,

文档评论(0)

开心果 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档