第1篇章 算法设计.pptxVIP

  • 2
  • 0
  • 约5.61千字
  • 约 44页
  • 2018-08-17 发布于天津
  • 举报
第1篇章 算法设计.pptx

第1章 算法设计《算法分析与复杂性理论》子集的列举问题已知一个不重复整数集合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为最尾元素的最长单调递增子序列的长度,则:b0 =1bi = max{ bj, ji且SjSi } + 1S的最长单调递增子序列的长度为:max{ bi }子集集合问题n个元素的集合{1, ..., n}可以划分成若干非空子集,给定整数n和m,计算n个元素{1, .., n}可以划分成多少个不同的由m个子集构成的非空子集集合。例如n=4时,{1, 2, 3, 4}可以划分为:{{1

文档评论(0)

1亿VIP精品文档

相关文档