
贪心算法
贪心算法
卡戎一生
这个作者很懒,什么都没留下…
展开
-
【算法导论05】贪心算法-Dijkstra算法
05贪心算法-Dijkstra算法问题描述:请设计一个算法,实现在一个有向图中,给出一个源点,计算该源点到其他所有顶点的单源最短路径。算法描述:Dijkstra算法的目的是寻找单源最短路径,其具有以下最优子结构性质:最短路径上的子路径也是两个顶点的最短路径,此性质可以用cut&paste反证(见笔记),因此,该算法满足贪心算法性质,局部最优解也是全局最优解,属于贪心算法的一种。基于此思想,若想找到源点s到v的最短路径,只需要找到s到u的最短路径+u到v的最短路径。u是s到v最短路径上的一个顶原创 2020-07-28 22:51:38 · 1370 阅读 · 1 评论 -
【算法导论04】贪心算法-kruskal算法
04贪心算法-kruskal算法问题描述:给定一个无向图,设计算法找出其中的最小生成树。思路分析:kruskal算法属于贪心算法,因此满足贪心算法的本质:局部最优解一定是全局最优解。在最小生成树中的应用即为,一个无向图中包含最小权值边点两个点,一定在最小生成树中,因此,只需要对该无项图中的顶点进行排序,按顺序找出边权值最小的顶点即可。但这个问题实际包含了两个问题:1、如何对边进行排序?2、如果新加入的边使得该最小生成树形成回路,如何解决?针对 问题1:对无向图的各个边进行从小到大的堆排序(堆排原创 2020-07-27 22:21:06 · 3504 阅读 · 0 评论 -
【算法导论03】贪心算法-prim算法
03贪心算法-prim算法问题描述:给出一个带权无向图,请设计一个算法,找出其中的最小生成树。思路分析:贪心算法的本质是:一个问题的局部最优解,也是该问题的全局最优解。接下来来了解一下最小生成树的最优子结构性质:假设一个无向图包含两部分A,B,其中A为最小生成树部分,B为剩余部分,则存在以下性质:该无向图中一个顶点在A部分,另一个顶点在B部分的边中,权值最小的边一定属于整个无向图的最小生成树,即部分最小权值是整个最小生成树的局部最有解,该性质符合贪心算法的特点。基于最小生成树的该性质,使用prim算原创 2020-07-27 21:18:59 · 3042 阅读 · 0 评论