第4章--贪心算法ppt课件

上传人:20****08 文档编号:240687872 上传时间:2024-04-30 格式:PPTX 页数:119 大小:861.53KB
返回 下载 相关 举报
第4章--贪心算法ppt课件_第1页
第1页 / 共119页
第4章--贪心算法ppt课件_第2页
第2页 / 共119页
第4章--贪心算法ppt课件_第3页
第3页 / 共119页
点击查看更多>>
资源描述
我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午第4章贪心算法110:46 下午第4章 贪心算法11我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午第4章贪心算法 贪心算法总是作出在当前看来当前看来最好的选择。贪心算法不从整体最优考虑,作出的选择只是在某种意义上的局部最优局部最优选择。贪心算法不能对所有问题都得到整体最优解.但对有些问题可以快速获得最优解。在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似最优解的很好近似。210:46 下午第4章 贪心算法 贪心算法总是作出在2我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午第4章贪心算法本章主要知识点:4.1 活动安排问题4.2 贪心算法的基本要素4.3 最优装载4.4 哈夫曼编码4.5 单源最短路径4.6 最小生成树4.7 多机调度问题4.8 贪心算法的理论基础310:46 下午第4章 贪心算法本章主要知识点:33我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午4.1 活动安排问题 活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合,是可以用贪心算法有效求解的很好例子。该问题要求高效地安排一系列争用某一公共资源的活动。贪心算法提供了一个简单、漂亮的方法使得尽可能多的活动能兼容地使用公共资源。410:46 下午4.1 活动安排问题 活动安排问题就4我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午4.1 活动安排问题5 设有n个活动的集合E=1,2,n,其中每个活动都要求使用同一资源,而在同一时间内只有一个活动能使用这一资源。活动i占用区间si,fi),活动j占用区间sj,fj),则活动i与活动j是相容的条件是sifj或sjfi。换句话说,就是后一个活动的开始时间不能在前一个活动结束之前。10:46 下午4.1 活动安排问题5 设有n个活动的5我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午GGreedy A AlgorithmsC Creative Thinking&Problem Solving活动名称开始时间结束时间学术讲座A9:0012:00会议8:0010:00音乐欣赏20:0023:00论文答辩A8:0015:00论文答辩B11:0014:00论文答辩C12:0016:00学术讲座B15:0017:00放映电影18:0021:00演讲比赛16:0018:00报告厅申请登记表 xxxx年xx月xx日请给出安排方案要求:使报告厅安排的活动数最多10:46 下午Greedy AlgorithmsCreat6我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午GGreedy A AlgorithmsC Creative Thinking&Problem Solving活动名称开始时间结束时间学术讲座A9:0012:00会议8:0010:00音乐欣赏20:0023:00论文答辩A8:0015:00论文答辩B11:0014:00论文答辩C12:0016:00学术讲座B15:0017:00放映电影18:0021:00演讲比赛16:0018:00递增递增报告厅申请登记表 xxxx年xx月xx日10:46 下午Greedy AlgorithmsCreat7我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午GGreedy A AlgorithmsC Creative Thinking&Problem Solving活动名称开始时间结束时间学术讲座A9:0012:00会议8:0010:00音乐欣赏20:0023:00论文答辩A8:0015:00论文答辩B11:0014:00论文答辩C12:0016:00学术讲座B15:0017:00放映电影18:0021:00演讲比赛16:0018:00123456789报告厅申请登记表 xxxx年xx月xx日10:46 下午Greedy AlgorithmsCreat8我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午GGreedy A AlgorithmsC Creative Thinking&Problem Solving活动名称开始时间结束时间会议8:0010:00学术讲座A9:0012:00论文答辩B11:0014:00论文答辩A8:0015:00论文答辩C12:0016:00学术讲座B15:0017:00演讲比赛16:0018:00放映电影18:0021:00音乐欣赏20:0023:00按结束时间递增排序后的表格10:46 下午Greedy AlgorithmsCreat9我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午GGreedy A AlgorithmsC Creative Thinking&Problem Solving活动名称开始时间结束时间activity18:0010:00activity29:0012:00activity311:0014:00activity48:0015:00activity512:0016:00activity615:0017:00activity716:0018:00activity818:0021:00activity920:0023:00按结束时间递增排序后的表格10:46 下午Greedy AlgorithmsCreat10我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午GGreedy A AlgorithmsC Creative Thinking&Problem Solvinga1a3a6a8a2a4a5a9a78 9 10 11 12 13 14 15 1617 18 19 20 21 22 2310:46 下午Greedy AlgorithmsCreat11我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午GGreedy A AlgorithmsC Creative Thinking&Problem Solvinga1a3a6a8a2a4a5a9a78 9 10 11 12 13 14 15 1617 18 19 20 21 22 2310:46 下午Greedy AlgorithmsCreat12我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午GGreedy A AlgorithmsC Creative Thinking&Problem Solvinga1a3a6a8a2a4a5a9a78 9 10 11 12 13 14 15 1617 18 19 20 21 22 2310:46 下午Greedy AlgorithmsCreat13我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午GGreedy A AlgorithmsC Creative Thinking&Problem Solvinga1a3a6a8a2a4a5a9a78 9 10 11 12 13 14 15 1617 18 19 20 21 22 2310:46 下午Greedy AlgorithmsCreat14我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午GGreedy A AlgorithmsC Creative Thinking&Problem Solvinga1a3a6a8a2a4a5a9a78 9 10 11 12 13 14 15 1617 18 19 20 21 22 2310:46 下午Greedy AlgorithmsCreat15我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午GGreedy A AlgorithmsC Creative Thinking&Problem Solvinga1a3a6a8a2a4a5a9a78 9 10 11 12 13 14 15 1617 18 19 20 21 22 2310:46 下午Greedy AlgorithmsCreat16我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午GGreedy A AlgorithmsC Creative Thinking&Problem Solvinga1a3a6a8a2a4a5a9a78 9 10 11 12 13 14 15 1617 18 19 20 21 22 2310:46 下午Greedy AlgorithmsCreat17我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午GGreedy A AlgorithmsC Creative Thinking&Problem Solvinga1a3a6a8a2a4a5a9a78 9 10 11 12 13 14 15 1617 18 19 20 21 22 2310:46 下午Greedy AlgorithmsCreat18我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午GGreedy A AlgorithmsC Creative Thinking&Problem Solving问题描述n个需要排队使用某个公共资源的活动。S=a1,anai在半开区间si,fi)使用资源,其中si=开始时间,fi=结束时间目标:安排最大可能的非重叠活动集合10:46 下午Greedy AlgorithmsCreat19我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物greedySelectorgreedySelector:public static int greedySelector(int s,int f,boolean a);/n个活动按照结束时间从小到大排序后存放于s,f中 int n=s.length-1 a1=true;int j=1;int count=1;for(int i=2;i=fj)ai=true;j=i;count+;else ai=false;return count;8:03 上午C Creative Thinking&Problem Solving复杂度:(n)如果给定的活动没有事先按结束时间排如果给定的活动没有事先按结束时间排序,需要先排序,这样序,需要先排序,这样整个算法的时间整个算法的时间复杂性是?复杂性是?greedySelector:10:46 下午Creati20我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物214.2 贪心算法的基本要素 对于一个具体的问题,怎么知道是否可用贪心算法解此问题,以及能否得到问题的最优解呢?从许多可以用贪心算法求解的问题中看到这类问题一般具有2个重要的性质:贪心选择性质贪心选择性质最优子结构性质最优子结构性质。214.2 贪心算法的基本要素 对于一个具体的问题,21我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午4.2 贪心算法的基本要素1.1.贪心选择性质贪心选择性质 贪心选择性质贪心选择性质是指所求问题的整体最优解整体最优解可以通过一系列局部最优局部最优的选择,即贪心选择来达到。这是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。动态规划算法通常以自底向上自底向上的方式解各子问题 贪心算法通常以自顶向下自顶向下的方式进行,以迭代的方式作出相继的贪心选择,每作一次贪心选择就将所求问题简化为规模更小的子问题。对于一个具体问题,要确定它是否具有贪心选择性质,必须证明每一步所作的贪心选择最终导致问题的每一步所作的贪心选择最终导致问题的整体最优解。整体最优解。2210:46 下午4.2 贪心算法的基本要素1.贪心选择性质222我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午4.2 贪心算法的基本要素2.2.最优子结构性质最优子结构性质 当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质最优子结构性质。问题的最优子结构性质是该问题可用动态规划算法或贪心算法求解的关键特征。即此二种算法都要求问题具有最优子结构性质。2310:46 下午4.2 贪心算法的基本要素2.最优子结构性质23我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午4.2 贪心算法的基本要素3.贪心算法与动态规划算法的差异贪心算法和动态规划算法都要求问题具有最优子结构性质,这是2类算法的一个共同点。但是,对于具有最优子结构最优子结构的问题应该选用贪心算法还是动态规划算法求解?下面研究2个经典的组合优化问题组合优化问题,并以此说明贪心算法与动态规划算法的主要差别。2410:46 下午4.2 贪心算法的基本要素3.贪心算法与动态24我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午4.2 贪心算法的基本要素0-10-1背包问题:背包问题:给定n种物品和一个背包。物品i的重量是Wi,其价值为Vi,背包的容量为C。应如何选择装入背包的物品,使得装入背包中物品的总价值最大?25在选择装入背包的物品时,对每种物品在选择装入背包的物品时,对每种物品i i只有只有2 2种选择,即装入背种选择,即装入背包或不装入背包。不能将物品包或不装入背包。不能将物品i i装入背包多次,也不能只装入部装入背包多次,也不能只装入部分的物品分的物品i i。10:46 下午4.2 贪心算法的基本要素0-1背包问题:25我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午4.2 贪心算法的基本要素背包问题:背包问题:与0-1背包问题类似,所不同的是在选择物品i装入背包时,可以选择物品可以选择物品i i的一部分的一部分,而不一定要全部装入背包,1in。26 这2类问题都具有最优子结构最优子结构性质,极为相似,但背包问题可以用贪心算法求解,而0-1背包问题却不能用贪心算法求解。10:46 下午4.2 贪心算法的基本要素背包问题:26 26我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午4.2 贪心算法的基本要素用贪心算法解背包问题的基本步骤:首先计算每种物品单位重量的价值Vi/Wi,然后,依贪心选择策略,将尽可能多的单位重量价值最高单位重量价值最高的物品装入背包。若将这种物品全部装入背包后,背包内的物品总重量未超过C,则选择单位重量价值次高的物品并尽可能多地装入背包。依此策略一直地进行下去,直到背包装满为止。具体算法可描述如下页:2710:46 下午4.2 贪心算法的基本要素用贪心算法解背包问27我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午4.2 贪心算法的基本要素void Knapsack(int n,float M,float v,float w,float x)Sort(n,v,w);int i;for(i=1;i=n;i+)xi=0;float c=M;for(i=1;ic)break;xi=1;c-=wi;if(i=n)xi=c/wi;28 算法算法knapsackknapsack的主要计算时间在的主要计算时间在于将各种物品依其于将各种物品依其单位重量的价值从单位重量的价值从大到小排序。因此,大到小排序。因此,算法的计算时间上算法的计算时间上界为界为O O(nlognnlogn)。当然,)。当然,为了证明算法的正为了证明算法的正确性,还必须证明确性,还必须证明背包问题具有贪心背包问题具有贪心选择性质选择性质。10:46 下午4.2 贪心算法的基本要素void Knap28我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午4.2 贪心算法的基本要素 对于0-10-1背包问题背包问题,贪心选择之所以不能得到最优解是因为在这种情况下,它无法保证最终能将背包装满,部分闲置的背包空间使每公斤背包空间的价值降低了。0-1背包举例:设背包的容量w=6,(Wi,Vi)|(1,3),(3,6),(5,9)为三个物品重量和价值按照贪心算法得最大价值按照贪心算法得最大价值=9=9,实际上可以得到实际上可以得到12.12.实际在考虑0-1背包问题时,应比较选择该物品和不选择该物品所导致的最终方案,然后再作出最好选择。第三章使用动态规划方法解决了0-1背包。2910:46 下午4.2 贪心算法的基本要素 对于0-1背29我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午4.3 最优装载 有一批集装箱要装上一艘载重量为c的轮船。其中集装箱i的重量为Wi。最优装载问题要求确定在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船。1.1.算法描述算法描述最优装载问题可用贪心算法求解。采用重量最轻者先装的贪心选择策略,可产生最优装载问题的最优解。具体算法描述如下页。3010:46 下午4.3 最优装载 有一批集装箱要装30我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午4.3 最优装载templatevoid Loading(int x,Type w,Type c,int n)/w数组按单位重量价值非递减排序。Sort(w,n);for(int i=1;i=n;i+)xi=0;for(int i=1;i=n&wi=c;i+)xi=1;c-=wi;3110:46 下午4.3 最优装载template50%abcdef010001101110:46 下午Creati35我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithmsabcdef0 01 10000010110101111 0 1 0 1 1 0 0 例子10:46 下午Creative Thinking&Pr36我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithmsabcdef0 01 10000010110101111 0 1 0 1 1 0 0 a解码10:46 下午Creative Thinking&Pr37我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithmsabcdef0 01 10000010110101111 0 1 0 1 1 0 0 a解码10:46 下午Creative Thinking&Pr38我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithmsabcdef0 01 10000010110101111 0 1 0 1 1 0 0 ba看出问题了吗解码10:46 下午Creative Thinking&Pr39我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithmsabcdef0 01 10000010110101111 0 1 0 1 1 0 0 bad01解码10:46 下午Creative Thinking&Pr40我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithmsabcdef0 01 10000010110101111 0 1 0 1 1 0 0 bad解码10:46 下午Creative Thinking&Pr41我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithmsabcdef0 01 10000010110101111 0 1 0 1 1 0 0 bad a?e?解码10:46 下午Creative Thinking&Pr42我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithmsabcdef0 01 10000010110101111 0 1 0 1 1 0 0 bad a?e?aaa e如何解决解码时的二义性?解码10:46 下午Creative Thinking&Pr43我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物abcdef0 010110110010011111111011101110011008:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithms新的变长编码有什么不同?0 1 0 1 1 0 0 a解码abcdef0 01011011001001111111101110111001100abcdef01011001111101110010:46 44我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物abcdef0 010110110010011111111011101110011008:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithms新的变长编码有什么不同?0 1 0 1 1 0 0 a x解码abcdef0 01011011001001111111101110111001100abcdef01011001111101110010:46 45我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物abcdef0 010110110010011111111011101110011008:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithms新的变长编码有什么不同?0 1 0 1 1 0 0 a x x解码abcdef0 01011011001001111111101110111001100abcdef01011001111101110010:46 46我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物abcdef0 010110110010011111111011101110011008:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithms新的变长编码有什么不同?0 1 0 1 1 0 0 a x x b解码abcdef0 01011011001001111111101110111001100abcdef01011001111101110010:46 47我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物abcdef0 010110110010011111111011101110011008:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithms新的变长编码有什么不同?0 1 0 1 1 0 0 a x x b x解码abcdef0 01011011001001111111101110111001100abcdef01011001111101110010:46 48我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物abcdef0 010110110010011111111011101110011008:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithms新的变长编码有什么不同?0 1 0 1 1 0 0 a x x b x x解码abcdef0 01011011001001111111101110111001100abcdef01011001111101110010:46 49我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物abcdef0 010110110010011111111011101110011008:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithms新的变长编码有什么不同?0 1 0 1 1 0 0 a x x b x x c解码abcdef0 01011011001001111111101110111001100abcdef01011001111101110010:46 50我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物abcdef0 010110110010011111111011101110011008:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithms前缀码 Prefix code前缀码:给定一个序列的集合,若不存在一个序列是另一个序列的前缀,则该序列集合称为前缀码。abcdef01011001111101110010:46 51我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物abcdef0 0101101100100111111110111011100110045131216958:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithms总位数=(1*45+3*13+3*12+3*16+4*9+4*5)*1000 =224,000 比特25%abcdef01011001111101110045131252我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物a ab bc cd de ef f0000000010010100100110111001001011018:03 上午GGreedy reedy A Algorithmslgorithmsf:5 e:9 c:12b:13a:45d:1658288614141000 00 00 00 00 00 01 11 11 11 11 1定长码xxx:x:xxx:x:xx+=xxxx定长编码二叉树abcdef00000101001110010110:46 53我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物a ab bc cd de ef f0 010110110010011111111011101 110011008:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithmsf:5 e:9 c:12b:13a:45d:161000 01 10 00 00 01 11 11 11 10 055302514前缀码xxx:x:xxx:x:xx+=xxxx哈夫曼编码二叉树abcdef01011001111101110010:46 54我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A AlgorithmslgorithmsB(T)=cCdT(c)f(c)dt(c)叶子c在T中的深度f(c)c在文件中出现的频度C 字符集B(T)平均比特数平均比特数代价10:46 下午Creative Thinking&Pr55我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithms最优问题贪心算法 Greedy Algorithm10:46 下午Creative Thinking&Pr56我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithms贪心算法 Greedy Algorithm哈夫曼编码 Huffman codes10:46 下午Creative Thinking&Pr57我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithmsf:5 e:9 c:12b:13a:45min-priority Queue按频率递增排序d:1610:46 下午Creative Thinking&Pr58我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithmsf:5 e:9 c:12b:13a:45d:161410:46 下午Creative Thinking&Pr59我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithmsf:5 e:9 c:12b:13a:45d:161410:46 下午Creative Thinking&Pr60我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithmsf:5 e:9 c:12b:13a:45d:1614New node10:46 下午Creative Thinking&Pr61我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithmsf:5 e:9 a:45d:1614c:12b:132510:46 下午Creative Thinking&Pr62我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithmsf:5 e:9 a:45d:1614c:12b:132510:46 下午Creative Thinking&Pr63我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithmsf:5 e:9 a:45d:1614c:12b:13253010:46 下午Creative Thinking&Pr64我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithmsf:5 e:9 a:45d:1614c:12b:13253010:46 下午Creative Thinking&Pr65我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithmsf:5 e:9 a:45d:1614c:12b:13253010:46 下午Creative Thinking&Pr66我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithmsf:5 e:9 a:45d:1614c:12b:1325305510:46 下午Creative Thinking&Pr67我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithmsf:5 e:9 a:45d:1614c:12b:13253055100root0 00 00 01 11 11 10 01 10 01 110:46 下午Creative Thinking&Pr68我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A AlgorithmslgorithmsHuffman(C)1 n C/C C数组记录所有字符的发生频度数组记录所有字符的发生频度2 Q C /*min-priority queue*/3 for i 1 to n-14 allocate a new node z5 leftz x Extract-Min(Q)6 rightz y Extract-Min(Q)7 fz fx+fy8 Insert(Q,z)9 10 return Extract-Min(Q)哈夫曼算法伪码返回树的root10:46 下午Creative Thinking&Pr69我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem Solving设C C为一字母表,其中每个字符c cC C 具有频率fcfc。设x x和y y为C C C C中具有最低频率的两个字符,则存在C C的一种最优前缀编码,其中x x和y y的编码长度相同但最后一位不同。证明方法:贪心选择性质bycxxycbxcybTTT“10:46 下午Creative Thinking&Pr70我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物B(T)-B(T)=.=(f(b)-f(x)(dT(b)-dT(x)0B(T)-B(T”)=.=(f(c)-f(y)(dT(c)-dT(y)0由此推出B(T)B(T)B(T”)因为T是最优解,因此只有B(T)=B(T”)成立也就是发生频率最低的两个字符在哈夫曼树的最低层,存在一种形式既是一个父节点的二个孩子节点。B(T)-B(T)=.71我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A Algorithmslgorithms设T T为表示字母表C C上的一种最优前缀编码的一棵满二叉树,对每个字符c cC C 定义有频率fcfc。考虑T T中任意两个为兄弟叶节点的字符x x和y y,并设z z为它们的父节点。那么,若认为z z是一个频率为fz=fx+fyfz=fx+fy的字符的话,树T=T-x,yT=T-x,y就表示了字母表C=C-x,y C=C-x,y zz上的一种最优前缀编码。证明:推导可得:B(T)=B(T)+f(x)+f(y)用反证法可以证明B(T)一定是一个最优解最优子结构性质10:46 下午Creative Thinking&Pr72我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午4.5 单源最短路径给定带权有向图G=(V,E),其中每条边的权是非负实数。另外,还给定V中的一个顶点,称为源源。现在要计算从源到所有其他各顶点的最短路径长度最短路径长度。这里路径的长度是指路径上各边权之和。这个问题通常称为单源最短路径问单源最短路径问题题。1.1.算法基本思想算法基本思想Dijkstra算法是解单源最短路径问题的贪心算法。7310:46 下午4.5 单源最短路径给定带权有向图G=73我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午4.5 单源最短路径基本思想基本思想:设置顶点集合S并不断地作贪心选择贪心选择来扩充这个集合。一个顶点属于集合S当且仅当从源到该顶点的最短路径长度已知。初始时,S中仅含有源。从源只经过S中顶点到达u(S外)称为从源到u的特殊路径,用数组dist记录当前每个顶点的最短特殊路径长度。具有最短特殊路径长度值最小的为最短路径已知。每次从V-S中取出具有最短特殊路长度的顶点u,将u添加到S中,同时对数组dist作必要的修改。直到S包含了所有V中顶点.7410:46 下午4.5 单源最短路径基本思想:设置顶点集合74我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A AlgorithmslgorithmsDijkstra 算法例子演示ABCDE1031422879带有非负边权的图10:46 下午Creative Thinking&Pr75我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingDijkstra 算法例子演示ABCDE1031422879初始化:0Q:A B C D EDist 0 S:10:46 下午Creative Thinking&Pr76我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A AlgorithmslgorithmsDijkstra 算法例子演示ABCDE10314228790“A”Extract-Min(Q):Q :A B C D Edist 0 S:A10:46 下午Creative Thinking&Pr77我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A AlgorithmslgorithmsDijkstra 算法例子演示ABCDE10314228790103Q:A B C D Edist 0 S:A1010 3 3 10:46 下午Creative Thinking&Pr78我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A AlgorithmslgorithmsDijkstra 算法例子演示ABCDE10314228790Q:A B C D E 0 S:A C 1010 3 3 “C”Extract-Min(Q):10310:46 下午Creative Thinking&Pr79我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy A AlgorithmslgorithmsDijkstra 算法例子演示ABCDE10314228790115Q:A B C D E 0 S:A C 1010 3 3 73 7 117 11 5 510:46 下午Creative Thinking&Pr80我吓了一跳,蝎子是多么丑恶和恐怖的东西,为什么把它放在这样一个美丽的世界里呢?但是我也感到愉快,证实我的猜测没有错:表里边有一个活的生物8:03 上午C Creative Thinking&Problem SolvingGGreedy reedy
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!