
算法导论
文章平均质量分 76
Koliday
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
算法导论 23.2 Prim算法
一,Prim算法的思想 Prim算法和Kruskal算法一样对安全边的选择规则作出了细化,Prim每一步在连接集合A和A之外的结点的所有边中选择一条轻量边的结点信息加入A中,直到A中的结点覆盖所有结点。二,Prim算法介绍 准备阶段:一张赋值无向连通图,集合A用于存放最小生成树的各结点信息,每个结点有两个属性:key表示该结点的所有前驱结点到它的最短距离,π表示到它距离...原创 2018-07-08 13:56:53 · 994 阅读 · 0 评论 -
算法导论 23.1 最小生成树
一,最小生成树的概念 对于一个连通的无向图G=(V,E),每条边(u,v)∈E上赋予一个权重w(u,v)(可以是金钱、资源的消耗量或者长度等代价),我们需要找到一个E的无环子集T,既能将所有结点连接起来,又要让权重(代价)最小。由于T是无环的且连通所有结点,那他必然是棵树,我们称这棵树叫生成树,因为他是由图G生成的,而求最小权重的树的问题叫做最小生成树问题。二,最小生成树的形成 ...原创 2018-07-07 19:52:19 · 1068 阅读 · 0 评论 -
算法导论 22.4 拓扑排序
一,拓扑排序的思想 拓扑排序是利用深度优先搜索对有向无环图进行线性排序,即对于一个图G进行拓扑排序后,所有结点按线性排放,凡是在图G中u在v前面,拓扑排序后u也一定在v前面。 常见的拓扑排序的应用比如早上穿衣的顺序,袜子必须在穿鞋前穿好,领带必须在衬衫穿好后才能戴。二,拓扑排序算法介绍 我们对有向无环图进行DFS操作,并将结点按结束时间逆序线性排列三,拓扑...原创 2018-07-05 23:52:06 · 1185 阅读 · 1 评论 -
算法导论 22.3 深度优先搜索
一,深度优先搜索的思想 深度优先搜索(Depth First Search,以下简称DFS)的思想是对一幅图G,从源结点s开始,访问他的后续结点v1,然后继续深入访问v1的后续结点v1.1,直到这条路走到尽头(即v1.1...n.1没有后续结点),再返回上一个结点(v1.1...n)寻找其下一个后续结点(v1.1...n.2),直到所有结点都被访问完毕,简单来说就是选定一个点,沿着一...原创 2018-07-05 18:25:31 · 1009 阅读 · 0 评论 -
算法导论 22.2 广度优先搜索
一,广度优先搜索的思想 广度优先搜索(Bread First Search,以下简称BFS)的思想是对一幅图V,从某个源结点s开始,依次访问其邻结点v1,v2...,访问完后,从被访问过的结点(v1)开始继续访问其邻结点v1.1、v1.2...,直到所有结点被访问完毕,简单来说就是对图一层一层的进行访问,访问完同一层级的结点后再访问后续结点。 访问完所有结点后,我们可...原创 2018-07-05 11:00:38 · 862 阅读 · 0 评论 -
算法导论 25.3 Johnson算法
一,Johnson算法的思想 如果图G中所有的边权重均为非负值,通过对每个结点进行一次Dijkstra算法来找到所有结点对之间的最短路径,如果图G中有负值的边但没有权重为负值的环路,就计算出一组新的非负权重值,并按同样的方法计算。二,新权重的确定 我们定义新权重w'(u,v)=w(u,v)+h(u)-h(v),满足两个性质:一是对于所有结点对(u,v),路径p是使用原权...原创 2018-07-10 21:59:06 · 4881 阅读 · 0 评论 -
算法导论 25.2 Floyed-Warshall算法
一,Floyed-Warshall算法的思想 Floyed-Warshall算法(以下简称FW)用一种不同的动态规划公式来解决所有结点对的最短路径问题,有向图的权值可以为负,但不能存在负值环路。与25.1中的方法不同的是,25.1中是通过每次拓展一条边,而FW算法则是用已知最短路径的(i,k)和(k,j)的值来算出(i,j)的最短路径。二,FW算法的递归定义 若k=0,...原创 2018-07-10 20:15:06 · 2624 阅读 · 0 评论 -
算法导论 24.3 Dijkstra算法
一,Dijkstra算法的思想 Dijkstra算法解决的是权重非负的有向图的单源最短路径问题,仍然使用的是贪心策略,每次将权值最小的结点加入集合中。二,Dijkstra算法介绍 准备阶段:一副赋值有向图,我们定义一个集合S,表示源结点s到集合S中的结点的最短路径已经被找到,再定义一个队列Q=V-S用于存放未找到最短路径的结点。 算法过程:算法不断的从Q中...原创 2018-07-09 16:09:15 · 2382 阅读 · 0 评论 -
算法导论 24.2 有向无环图的单源最短路径(DAG算法)
一,DAG算法的思想 根据结点的拓扑排序次序来对带权重的有向无环图G进行边的松弛操作,在有向无环图中,边可以为负值但是没有权重为负值的环,因此最短路都是存在的。二,DAG算法介绍准备阶段:一副赋值有向无环图算法过程:对图G中的结点进行拓扑排序就,使所有结点线性排列,然后按照拓扑排序的次序对每个结点发出的所有边进行松弛操作。三,DAG伪代码DAG_SHORTEST_PATHS(G,w,...原创 2018-07-09 12:00:05 · 2984 阅读 · 0 评论 -
算法导论 24.1 Bellman-Ford算法
一,Bellman-Ford算法的思想 Bellman-Ford算法(以下简称BF算法),用于解决边的权重可以为负值的单源最短路径,它通过对边进行松弛操作逐渐降低从源结点s到各结点v的最短路径估计值v.d,直到该估计值与实际的最短路径权重δ(s,v)相同。二,Bellman-Ford算法介绍 准备阶段:一副赋值有向图,每个结点有两个属性:d和π,分别表示从源结点到该结...原创 2018-07-08 21:40:38 · 1421 阅读 · 0 评论 -
算法导论 23.2 Kruskal算法
一,Kruskal算法的思想 Kruskal算法对最小生成树安全边的通用确定规则进行了细化,在该算法中,集合A是一个森林,其结点就是给定图的结点,每次加入到集合A中的安全边永远是权重最小的连接两个不同分量的边。二,Kruskal算法介绍 准备阶段:一个赋值无向连通图G=(V,E),我们需要一个集合A用于存放加入的安全边,最后A中的边形成最小生成树 算法过程...原创 2018-07-07 21:06:28 · 1134 阅读 · 0 评论