图论
文章平均质量分 50
fftx_00
这个作者很懒,什么都没留下…
展开
-
【图论】关键路径
一、AOV网和AOE网AOE网和AOV网都是有向无环图,如果给定AOV网中各顶点活动所需要的时间,那么就可以将AOV网转换为AOE网(比较简单的方法是:将AOV网中的每个顶点都拆成两个顶点,分别表示活动的起点和终点, 两个顶点通过有向边连接,该有向边表示原顶点的活动,边权为需要的时间 原AOV网中的边全部视为空活动,边权为0(因为AOE结点表示已完成)总花费时间=到达终点的多条路径中花费时间最长的那条关键路径(要达到最短花费时间,不能拖延的路径):AO...原创 2021-09-28 17:00:26 · 2606 阅读 · 0 评论 -
【图论】拓扑排序
时间复杂度为O(V+E)可用来检测是否DAG(有向无环图)如果要求多个入度为0的顶点,选择编号最小的顶点,把queue改成priority_queue,并保持堆顶元素是优先队列中最小的即可(set也可以)...原创 2021-09-28 15:39:54 · 156 阅读 · 0 评论 -
【图论】最小生成树——kruskal算法
“边贪心”策略按边权递增对边排序,两测试点是否在同一连通块中,不在则将当前边加入最小生成树 在则舍弃直到测试完所有边或者最小生成树生成完毕(边数=n-1)由于需要对边权排序,使用邻接表每次都要遍历就不太好了,故直接定义边。struct edge{ int u,v;//边的两端点 int cost;//边权}E[MAXN];将每个连通块当成一个集合判断两个端点是否在同一个集合中——查 合并集合——并使用“并查集”!#...原创 2021-09-27 14:56:44 · 179 阅读 · 0 评论 -
【图论】最小生成树——prim算法
一、什么是最小生成树最小生成树(Minimum Spanning Tree,MST):在一个给定的无向图G中求一棵树T,树T拥有图G的所有顶点, 所有边都来自图G, 使得整棵树的边权最小贪心策略:prim算法: 让小树长大kruskal算法:将森林合并成树二、prim算法与Dijkstra算法区别:思想几乎完全相同,Dijkstra算法的最短距离指到源点s的最短距离;prim算法的最短距离指到集合s的最短距离时间复...原创 2021-09-27 13:44:14 · 229 阅读 · 0 评论 -
【图论】图的最短路径问题——多源最短路算法(Floyd算法)
(不适用于存在负值圈的情况)原创 2021-08-09 15:33:41 · 120 阅读 · 0 评论 -
【PAT】1030 Travel Plan——单源最短路径Dijkstra算法(第二标尺)打印路径两种写法
//第一种:普通Dijkstra写法#include <iostream>#include <vector>#define MAXN 510#define MAXDATA 510using namespace std;int N,M,S,D;int G[MAXN][MAXN];int C[MAXN][MAXN];//dist:到源点距离.G[S][i]:是否S邻接点int dist[MAXN];int cost[MAXN];int collec...原创 2021-09-25 16:25:45 · 140 阅读 · 0 评论 -
【图论】单源最短路径问题——两种路径存储方法(普通Dijkstra+DFS)
一、存储一个前驱结点存储一种能使结点路径最短的前驱结点最后逆着访问出一条完整最短路径打印路径函数:1.递归写法2.非递归写法二、存储所有前驱结点存储所有能使路径最短的前驱结点最后遍历前驱结点构成的路径树(DFS),选择最优的一条输出vector<int> pre[MAXN]set<int> pre[MAXN]//set使用count(i)方法,可以查询i在set中出现的次数if(dist[i]>di...原创 2021-09-26 22:47:40 · 470 阅读 · 0 评论 -
【PAT】1003 Emergency——单源最短路径算法(第二标尺)(Dijkstra,Bellman_ford,SPFA)
//第一种方法:Dijkstra算法#include <iostream>#define INFINITE 65535#define MAXN 510using namespace std; int G[MAXN][MAXN];int N,M;int team[MAXN]; int dist[MAXN],num[MAXN],cnt[MAXN];int collected[MAXN];void Dijstra(int c1){ for(int i=0;i&l...原创 2021-09-26 22:20:12 · 104 阅读 · 0 评论 -
【图论】单源最短路径问题——三种算法比较(Dijkstra,Bellman_ford,SPFA)
算法名称 能否处理负权边 时间复杂性 Dijkstra 因为核心算法是贪心, 所以不能处理负边权 o(V^2) o(VlogV)Heap+邻接表 Bellman—Ford 能,只要不是负环即可 o(VE)邻接表 SPFA 能,本质是队列优化的 Bellman—Ford, 负环只会增加出入队列次数 o(km)~o(VE) k为常数,通常不超过2原创 2021-09-26 14:30:27 · 752 阅读 · 0 评论 -
【图论】图的最短路径问题——有权图的单源最短路(Dijkstra算法)
有权图的单源最短路与无权图的区别:1.有权图的最短路不一定是经过顶点数最少的那条路2.负值圈问题(negative-cost cycle)每次收录未收录顶点中dist最小者保证了->收录V只可能使V邻接点的路径变短=min{dist[W],dist[V]+E<V,W>}(反证法:如果收录V使非V邻接点K路径变短,原先 dist[K]=E<S,W>+E<W,K>收录后dist[K]=E<S,V>+...原创 2021-08-08 23:12:23 · 1138 阅读 · 0 评论