网站大量收购独家精品文档,联系QQ:2885784924

第1章 算法设计PPT.pptx

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

第1章 算法设计《算法分析与复杂性理论》第1节 算法设计的基本策略int Exhaustivity(){ while (还有需要列举的可能解) { 列举下一个可能解A; if (A满足所有相关约束条件) 输出A; } return 0;}穷举法盒子里的气球问题在一个盒子里有n个充气点(n≤6),从充气点充起的气球碰到边缘或别的气球时即停止充气。按照什么顺序依次充气,气球占据的空间最大?6! = 720子集的列举问题已知一个不重复整数集合S,|S|≤32,试列举出S的所有子集。例如,当S={1, 2, 3}时,S的所有子集如下:{ }, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}000 -- { }001 -- {1}010 -- {2}011 -- {1, 2}100 -- {3}101 -- {1, 3}110 -- {2, 3}111 -- {1, 2, 3}第1节 算法设计的基本策略int BackTrack(){ Node = 初始问题状态结点; while (尚未从根结点回溯) { ChildNode = Node的下一个满足约束条件的子结点; if (ChildNode != null) { Node = ChildNode; if (Node是解结点) { 输出解结点Node; Node退回父结点(回溯); } else { 为搜索Node的子结点做准备; } } else { Node退回父结点(回溯); } } return 0;}回溯法N后问题{}{}{1}{}{5}{1}{1,5}{}{12}{5}{5,12}{1}{1,12}{1,5}{1,5,12}{}{14}{12}{12,14}{5}{5,14}{5,12}{5,12,14}{1}{1,14}{1,12}{1,12,14}{1,5}{1,5,14}{1,5,12}{1,5,12,14}子集和问题设W={1,5,12,14}不等式问题求满足下列不等式的所有整数解:??令:x3’=4-x3,则1≤x3’ ≤3,代入上式得:?()5×25×35×15×1+4×25×1+4×35×1+4×15×1+4×1-25×1+4×1-35×1+4×1-1第1节 算法设计的基本策略int BoundPruning(){ T = 初始问题状态结点; 初始化优先队列Q; U = u(T); // u为上界函数 计算~C(T),并将T入队; // ~C为下界函数 while (!Empty(Q)) { e = DeQueue(Q); if (e是解结点) { 输出e或求解路径; return 0; } else if (~C(e) = U) { for (e的所有满足约束条件的子结点x) { if (~C(x) = U) { EnQueue(x); if (u(x) U) U = u(x); }}}} return 0;}限界剪枝法C(x) = min{D(y)|y∈Tx∩A}x C(x) = ∞D(y2)xy2D(y1)y1第1节 算法设计的基本策略Divide_and_Conquer(P){ if (|P|足够小) return Answer(P); Divide P into (P0, P1, .., Pk-1); foreach (Pi) ai = Divide_and_Conquer(Pi); return Merge(a0, a1, .., ak-1);}分治法Gray码的构造问题Gray码是一个长度为2n的序列,序列中无相同元素,每个元素都是长度为n位的(0, 1)串,相邻元素恰好只有一位不同。设计一个算法对任意的n构造相应的Gray码。例如,Gray(3)如下:000, 001, 011, 010, 110, 111, 101, 100设n位Gray码序列为G(n),则G(1) = {0, 1}定义G(n)以相反顺序排列的序列为G-1(n),则:G(n+1)={ 0G(n), 1G-1(n) }G(n)的最后一个元素,就是G-1(n)的第一个元素。0100011011马的Hamilton周游路线问题结构化的Hamilton回路子棋盘的拼接子棋盘的拼接第1节 算法设计的基本策略DynamicProgramming(){ 构造子问题空间; 初始化叶子结点; 从叶子结点向上递推各子问题的最优值直到根结点,并记录计算轨迹; 根据计算轨迹推导最优解;}动态规划最长单调递增子序列问题在长度为n的序列S中找出最长单调递增子序列。例如,当S=(5, 2, 4, 6, 5, 1, 8)时,一个最长单调递增子序列为(2, 4, 5, 8)。设S=(S0, S1, .., Sn-1),定义bi表示以Si为最尾元素的最长单调

您可能关注的文档

文档评论(0)

djdjix + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档