图论
潇洒哥讲Android
名不见经传的大厂程序猿,每周一篇技术分享。
展开
-
图 求最小生成树 Prim Kruskral算法
图 求最小生成树 Prim Kruskral算法Prim 算法(和Dijkstra算法极像)寻找一个到最小生成树集合距离最近的点把这个点加入到最小生树集合中再用刚刚加入的点去更新集合到集合外的点的最短距离 重复步骤2 (共迭代n(顶点个数)次)//时间复杂度 O(V^2) 适合稠密图 用邻接矩阵#include<iostream>using namespace std;const int INF=0x3f3f3f;const int MAX_V = 600;int原创 2020-11-26 21:32:35 · 274 阅读 · 0 评论 -
图的五种求最短路径算法(Dijkstra、堆优化Dijstra、Bellmon-Ford、SPFA、Floyd-Warshall)
图的五种求最短路径算法(Dijkstra、堆优化Dijstra、Bellmon-Ford、SPFA、Floyd-Warshall)V代表顶点个数 E代表边数Dijkstra算法 适合正权(不含负权)稠密图 时间复杂度为O(V^2) 只与顶点个数有关 慎用邻接矩阵 需要考虑初始化为INF 有向图和无向图 重边 和 自环//Acwing 849#include<iostream>using namespace std;const int V=1e3;//最大顶点个数c原创 2020-11-25 20:46:41 · 585 阅读 · 0 评论 -
图论数据结构和基础算法
图论数据结构和基础算法1、数据结构(以下文章中V代表顶点数,E代表边数)图常用的两种数据结构邻接矩阵使用矩阵表示图的连接情况,对于无权图,我们可以用0代表两点之间不连接,1代表两点之间连接。对于有权图,我们可以定义一个极大值INF,来代表两个点不连接,使用权值代表两点连接,这样既存储了权值又存储了两点是否连接。//定义一个二维数组 用fill函数赋值int adj[MAX_V][MAX_V];fill(adj,adj+MAX_V*MAX_V,INF);优点: 可以在常数时间O(1)内原创 2020-11-23 19:44:36 · 339 阅读 · 0 评论