高级算法设计与分析(四) -- 贪心算法

系列文章目录

高级算法设计与分析(一) -- 算法引论

高级算法设计与分析(二) -- 递归与分治策略

高级算法设计与分析(三) -- 动态规划

高级算法设计与分析(四) -- 贪心算法

高级算法设计与分析(五) -- 回溯法

高级算法设计与分析(六) -- 分支限界法

高级算法设计与分析(七) -- 概率算法和NP完全性理论

高级算法设计与分析(八) -- 总结


目录

系列文章目录

前言

一、贪心算法的基本思想

二、活动安排问题

三、贪心算法的基本要素

四、哈夫曼编码

五、单源最短路径-Dijkstra算法

六、最小生成树

1、基础概念与问题

2、prim算法(普里姆算法)

3、kruskai算法(克鲁斯卡尔算法)

习题


前言

tips:这里只是总结,不是教程哈。鉴于本人写字如画符,就不出视频教程了,如实在有需要,请在文章下方留言。当然,文章有任何问题,也请留言,谢谢!

这个系列用另一种形式,把习题放在最下面,看看好用不。

本系列文章最后一文会进行简要全部总结,以及思维导图放在最后一篇文章最下面,请自行获取。


一、贪心算法的基本思想

高级算法设计与分析(四) -- 贪心算法_第1张图片

50,20,0.2,0.1
3*5

高级算法设计与分析(四) -- 贪心算法_第2张图片

二、活动安排问题

1、问题描述

给定一组活动,每个活动都有一个开始时间和结束时间,目标是安排出一个最大数量的相互兼容的活动集合,即这些活动之间不会相互冲突。

2、例子

高级算法设计与分析(四) -- 贪心算法_第3张图片

3、步骤:

因为是按照结束时间的非减排序的,选择第一个后(红1),把开始时间在这个活动结束时间之前的都排除(红叉),然后继续选择未排除的结束时间最早的一个(绿2),把开始时间在这个活动结束时间之前的都排除(绿叉),以此类推……

高级算法设计与分析(四) -- 贪心算法_第4张图片

4、算法正确性证明:

高级算法设计与分析(四) -- 贪心算法_第5张图片

高级算法设计与分析(四) -- 贪心算法_第6张图片

另一种表述,看你们能接收那种

高级算法设计与分析(四) -- 贪心算法_第7张图片

高级算法设计与分析(四) -- 贪心算法_第8张图片

三、贪心算法的基本要素

1、贪心选择性质、最优子结构

高级算法设计与分析(四) -- 贪心算法_第9张图片

***自顶向下和自底向上

高级算法设计与分析(四) -- 贪心算法_第10张图片

2、证明方法

高级算法设计与分析(四) -- 贪心算法_第11张图片

高级算法设计与分析(四) -- 贪心算法_第12张图片

高级算法设计与分析(四) -- 贪心算法_第13张图片

4、贪心算法的适用范围

高级算法设计与分析(四) -- 贪心算法_第14张图片

5、背包问题和0-1背包问题

高级算法设计与分析(四) -- 贪心算法_第15张图片

高级算法设计与分析(四) -- 贪心算法_第16张图片

四、哈夫曼编码

高级算法设计与分析(四) -- 贪心算法_第17张图片

复杂度

高级算法设计与分析(四) -- 贪心算法_第18张图片

高级算法设计与分析(四) -- 贪心算法_第19张图片

五、单源最短路径-Dijkstra算法

1、问题描述

高级算法设计与分析(四) -- 贪心算法_第20张图片

高级算法设计与分析(四) -- 贪心算法_第21张图片

有向图

2、算法的基本思想

高级算法设计与分析(四) -- 贪心算法_第22张图片

高级算法设计与分析(四) -- 贪心算法_第23张图片

3、将算法用程序描述

高级算法设计与分析(四) -- 贪心算法_第24张图片

高级算法设计与分析(四) -- 贪心算法_第25张图片

高级算法设计与分析(四) -- 贪心算法_第26张图片

高级算法设计与分析(四) -- 贪心算法_第27张图片

高级算法设计与分析(四) -- 贪心算法_第28张图片

高级算法设计与分析(四) -- 贪心算法_第29张图片

高级算法设计与分析(四) -- 贪心算法_第30张图片

复杂度分析:时间复杂度:o(|V|^2)

4、算法正确性证明

高级算法设计与分析(四) -- 贪心算法_第31张图片

高级算法设计与分析(四) -- 贪心算法_第32张图片

六、最小生成树

1、基础概念与问题

高级算法设计与分析(四) -- 贪心算法_第33张图片

高级算法设计与分析(四) -- 贪心算法_第34张图片

2、prim算法(普里姆算法)

高级算法设计与分析(四) -- 贪心算法_第35张图片

2.1、直接算法实现

高级算法设计与分析(四) -- 贪心算法_第36张图片

2.2、prim算法实现

高级算法设计与分析(四) -- 贪心算法_第37张图片

高级算法设计与分析(四) -- 贪心算法_第38张图片

高级算法设计与分析(四) -- 贪心算法_第39张图片

高级算法设计与分析(四) -- 贪心算法_第40张图片

高级算法设计与分析(四) -- 贪心算法_第41张图片

高级算法设计与分析(四) -- 贪心算法_第42张图片

高级算法设计与分析(四) -- 贪心算法_第43张图片

高级算法设计与分析(四) -- 贪心算法_第44张图片

高级算法设计与分析(四) -- 贪心算法_第45张图片

时间复杂度:o(|V|^2)

3、kruskai算法(克鲁斯卡尔算法)

高级算法设计与分析(四) -- 贪心算法_第46张图片

高级算法设计与分析(四) -- 贪心算法_第47张图片

高级算法设计与分析(四) -- 贪心算法_第48张图片


习题

topic1:

高级算法设计与分析(四) -- 贪心算法_第49张图片

topic2:

高级算法设计与分析(四) -- 贪心算法_第50张图片

topic3:

高级算法设计与分析(四) -- 贪心算法_第51张图片

topic4:

高级算法设计与分析(四) -- 贪心算法_第52张图片

topic5:

高级算法设计与分析(四) -- 贪心算法_第53张图片

高级算法设计与分析(四) -- 贪心算法_第54张图片

高级算法设计与分析(四) -- 贪心算法_第55张图片

topic5:

高级算法设计与分析(四) -- 贪心算法_第56张图片

topic6:

高级算法设计与分析(四) -- 贪心算法_第57张图片

你可能感兴趣的:(高级算法设计与分析,算法,贪心算法)