11-有算法的设计.pptx

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
11-有算法的设计

第 11章 有效算法的设计; 处理大规模问题时,求解可能比较困难,对于这类问题,往往把它分解为若干个子问题求解,求出几个子问题后,在找合适的方法,把它们组合成整个问题的解。如果处理子问题仍然困难,则再次进行分割,直到可以直接求解为止。这种大化小的策略称为分治策略。;动态规划;分析: (1)贪心法往往得不到最优解;分析: (1)贪心法往往得不到最优解;分析: (1)贪心法往往得不到最优解;分析: (1)贪心法往往得不到最优解;分析: (1)贪心法往往得不到最优解;分析: (1)贪心法往往得不到最优解;分析: (1)贪心法往往得不到最优解 (2)穷举法往往是不可能的;动态规划求解: 采用:自顶向下分析,自底向上求解;方法: (1)从底层开始,本身数值即为最大值;方法: (1)从底层开始,本身数值即为最大值;方法: (1)从底层开始,本身数值即为最大值;方法: (1)从底层开始,本身数值即为最大值;18 27 39 31;12 7 13 24 11;问题求解: 数塔表示;;#include iostream.h #include iomanip.h #include stdlib.h #define NUM 5 struct St{ int val; int max; int de; }; void eva(St g[][NUM],int n) { int i,j; for(i=n-2;i=0;i--) for(j=0;j=i;j++) if(g[i+1][j].maxg[i+1][j+1].max) g[i][j].max=g[i][j].val+g[i+1][j].max; else { g[i][j].max=g[i][j].val+g[i+1][j+1].max; g[i][j].de=1;} };void output(St g[][NUM],int n) { int i,j; int mm=0; for(i=0;iNUM;i++) { for(j=0;j=i;j++) coutsetw(3)g[i][j].val ; coutendl;} coutg[0][0].val; j=0; for(i=0;in-1;i++) { j+=g[i][j].de; mm+=g[i+1][j].val; cout-g[i+1][j].val; } cout:mmendl; } ; 动态规划解题的方法是一种高效率的方法,其时间复杂度通常为O(n2),O(n3)等,可以解决相当大的信息量。(数塔在n=100层时,可以在很短的时间内得到问题解) 适用的原则:原则为优化原则,即整体优化可以分解为若干个局部优化。 动态规划比穷举法具有较少的计算次数 递归算法需要很大的栈空间,而动态规划不需要栈空间;NP完全问题; 本课程许多算法都是多项式时间,即对规模为n的输入,算法在最坏情况下的计算时间是O(nk),k是常数。; 并不是所有问题都在多项式时间内可解的。在可计算性理论中,著名的“图灵停机问题”,任何计算机不论耗费多少时间也不可能解决该问题。 有写问题,虽然可以用计算机求解,但是对于任意常数k,它们不能在O(nk)时间内得到解答。 ————非确定性问题; 有些计算问题是确定性的,比如加减乘除之类,你只要按照公式推导,按部就班一步步来,就可以得到结果。 非确定性问题:问题无法按部就班直接地计算出来。比如,找大质数的问题。没有一个公式,用该公式,就可以一步步推算出来,下一个质数应该是多少。 再比如,大的合数分解质因数的问题,也没有一个公式,把合数代进去,就直接可以算出,它的因子各自是多少?; 这种问题的答案,是无法直接计算得到的,只能通过间接的“猜算”来得到结果。这也就是非确定性问题。而这些问题的通常有个算法,它不能直接告诉你答案是什么,但可以告诉你,某个可能的结果是正确的答案还是错误的。 这个可以告诉你“猜算”的答案正确与否的算法,假如可以在多项式时间内验证出来,就叫做多项式非确定性问题--NP问题。; 如果问题的所有可能答案,都可以在多项式时间内进行正确与否的验算的话,就叫完全多项式非确定问题。

文档评论(0)

189****1013 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档