
图
文章平均质量分 81
EmilyGnn
这个作者很懒,什么都没留下…
展开
-
无向图
1、术语2、无向图的数据结构图的基本操作API图的数据结构2、深度优先搜索 DFS3、使用DFS寻找路径算法实现5、总结1、术语连通图 / 非连通图,无环图子图:由一幅图的所有边的一个子集(以及它们所依附的所有顶点)组成的图树:无环 连通 图 生成树:连通图的子图,他含有图中的所有顶点且是一棵树2、无向图的数据结构...原创 2018-09-03 17:40:15 · 663 阅读 · 0 评论 -
Dijkstra算法
Dijkstra算法Dijkstra算法能够解决边权重非负的加权有向图的单起点最短路径问题。在之前,我们讨论过寻找加权无向图中的最小生成树的Prim算法:构造最小生成树的每一步都向这棵树中添加一条新的边。Dijkstra算法采用了类似的方法来计算最短路径树。首先将 distTo[] 最小的非树顶点放松并加入树中,如此直到所有的顶点都在树中或者所有非树顶点的 distTo[] 值均为无穷大。...原创 2018-11-15 17:30:42 · 3360 阅读 · 0 评论 -
最小生成树 - Kruskal算法
Kruskal算法第二种最小生成树算法 —— Kruskal算法按照边的权重顺序(从小到大)处理它们,将边加入最小生成树中,加入的边不会与已经加入的边构成环,直到树中含有 V−1V-1V−1 条边为止。这些边逐渐由一片森林合并为一棵树,也就是图的最小生成树。Kruskal算法能够得到任意加权无向图的最小生成树。算法如下:使用一条优先队列pq 来将边按照权重排序,一个union-find...原创 2018-11-06 22:30:18 · 1572 阅读 · 0 评论 -
最小生成树 - Prim算法
Prim算法我们要学习的第一种计算最小生成树的方法是 Prim算法,它的每一步都会为一棵生长中的树添加一条边。一开始这棵树只有一个顶点,然后会向它添加 V−1V-1V−1 条边,每次总是将下一条连接树中的顶点与不在树中的顶点且权重最小的边加入树中。Prim算法能够得到任意加权无向图的最小生成树。这棵不断生长的树定义了一个切分且不存在黑色的横切边,该算法会选取权重最小的横切边并根据贪心算法不断将...原创 2018-11-06 21:45:34 · 529 阅读 · 0 评论 -
最小生成树 加权无向图
最小生成树加权图:为每条边关联一个权值或成本的图模型本节我们将学习加权无向图模型并用算法回答下面这个问题。最小生成树(MST):给定一幅加权无向图,找到它的一棵最小生成树。图的生成树是它的一棵含有其所有顶点的无环连通子图。一幅加权无向图的最小生成树是它的一棵权值(树中所有边的权值之和)最小的生成树。计算最小生成树的两种经典算法:Prim算法 和 Kruskal算法在计算最小生成树的过程...原创 2018-11-06 13:45:11 · 4329 阅读 · 0 评论 -
有向图
有向图1、术语在有向图中,边是单向的。每条边所连接的两个顶点都是一个有序对,他们的邻接性是单向的。出度:该顶点指出的边的总数入度:指向该顶点的边的总数一条有向边的第一个顶点称为它的头,第二个顶点称为它的尾。将有向边画为由头指向尾的一个箭头。用 v -> w 表示有向图中一条由v指向w的边。有向路径有向环简单有向环:除了起点和终点必须相同之外,不含有重复的顶点和边的环路径或...原创 2018-10-30 11:25:35 · 6250 阅读 · 2 评论 -
环和有向无环图
文章目录定义有向环检测基于DFS的顶点排序拓扑排序在和有向图相关的实际应用中,有向环特别的重要。优先级限制下的调度问题:给定一组需要完成的任务,以及一组关于任务完成先后次序的优先级限制。在满足限制条件的前提下应该如何安排并完成所有任务?对于任意一个这样的问题,我们都可以画出一张有向图,其中顶点对应任务,有向边对应优先级顺序。优先级限制下的调度问题等价于计算有向无环图中所有顶点的拓扑排序。...原创 2018-10-31 17:22:49 · 2027 阅读 · 0 评论 -
有向图的强连通性(未完成)
有向图的强连通性术语强连通在一幅有向图中,如果从顶点v有一条有向路径到达w,则顶点w是从顶点v 可达的。如果两个顶点v和w是互相可达的,则称它们为强连通的。如果一幅有向图中的任意两个顶点都是强连通的,则称这幅有向图是强连通图。环在强连通性的理解上起着重要的作用。两个顶点是强连通的当且仅当它们都在一个普通的有向环中。强连通分量强连通性将所有顶点分为了一些平等的部分,每个部分都是由相...原创 2018-10-31 14:22:32 · 1727 阅读 · 2 评论 -
深度优先搜索 DFS
1、基本思想在搜索一幅图时,只需要用一个递归来遍历所有顶点。在访问其中一个顶点时: - 将它标记为已访问 - 递归访问它的所有未标记的邻居顶点DFS只会访问与起点s连通的所有顶点(而不会访问其他顶点)。如果图是连通的,则所有顶点都会被访问到。 DFS中每条边都会被访问两次,且在第二次时总会发现这个顶点已经被标记过了。 2、算法实现public class DepthFi...原创 2018-09-03 21:44:30 · 2146 阅读 · 1 评论 -
广度优先搜索 BFS
1、基本思想2、算法实现单点最短路径问题:从起点s到给定目的顶点v是否存在一条路径?如果有,找出其中最短的那条(所含边数最少) 解决这个问题的经典方法叫做 广度优先搜索(BFS)。DFS并不能解决这个问题,相比之下,BFS正是为了这个目标才出现的。1、基本思想广度优先搜索要找到从 s 到 v 的最短路径,从s开始,在所有由一条边就可以到达的顶点中寻找 v,如果...原创 2018-09-03 21:41:06 · 280 阅读 · 0 评论 -
最短路径
最短路径定义:在一幅加权有向图中,从顶点 s 到顶点 t 的最短路径是所有从 s 到 t 的路径中的权重最小者。单点最短路径: 给定一幅加权有向图和一个起点s,回答 “从s到给定的目标顶点v是否存在一条有向路径?如果有,找出最短(总权重最小)的那条路径。”最短路径的性质路径是有向的。权重不一定等价于距离。并不是所有顶点都是可达的。(为了简化问题,假定图是强连通的,即每个顶点从另外任意...原创 2018-11-14 19:47:55 · 1270 阅读 · 0 评论