![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图
horizon08
这个作者很懒,什么都没留下…
展开
-
Floyd算法的原理和实现代码
原理假设有向图G=(V,E)采用邻接矩阵存储。设置一个二维数组A用于存放当前顶点之间的最短路径长度,分量A[i][j]表示当前顶点i -> j的最短路径长度。然后,每次添加一个顶点,同时对A的数组进行筛选优化,期间会产生k个A数组。Ak[i][j]数组代表着从考虑0 -> k的i -> j 的最小距离,当k 等于全部顶点数的时候,就是已经找出了i -> j 的最短距离。初始化1. 二维数组 path [i] [j] 初始化时,i -> j有路径时,path [i] [原创 2020-08-14 18:56:48 · 731 阅读 · 0 评论 -
最小生成树算法之Kruskal算法
定义克鲁斯卡尔(Kruskal)算法过程:构造最小生成树(U,TE)1. 置U的初值等于V(即包含有G中的全部顶点),TE的初值为空集(即图T中每一个顶点都构成一个连通分量)。2. 将图G中的边按权值从小到大的顺序依次选取: - 若选取的边未使生成树T形成回路,则加入TE; - 否则舍弃,直到TE中包含(n-1)条边为止。结构体定义typedef struct sn{ int u; //当前顶点 int v; //下一个顶点 int w; //权值}Edge原创 2020-08-11 16:27:09 · 370 阅读 · 0 评论 -
最小生成树算法之Prim算法
生成树 一个连通图的生成树是一个极小连通子图,它含有图中全部n个顶点和构成一棵树的(n-1)条边。 连通图由一次遍历就可以产生生成树由深度优先遍历得到的生成树称为深度优先生成树。由广度优先遍历得到的生成树称为广度优先生成树。一个连通图的生成树不一定是唯一的!最小生成树对于带权连通图G (每条边上的权均为大于零的实数),可能有多棵不同生成树。每棵生成树的所有边的权值之和可能不同。其中权值之和最小的生成树称为图的最小生成树。Prim算法普里姆(Prim)算法是一种构造性算原创 2020-08-10 21:31:43 · 802 阅读 · 0 评论 -
无向图深度优先遍历(DFS)和广度优先遍历(BFS)算法
定义深度优先遍历(1)从图中某个初始顶点v出发,首先访问初始顶点v。(2)选择一个与顶点v相邻且没被访问过的顶点w,再从w出发进行深度优先搜索,直到图中与当前顶点v邻接的所有顶点都被访问过为止。 (3) 利用递归实现,简单但是不好理解,时间复杂度 O(n+e)。广度优先遍历(1)访问初始点v,接着访问v的所有未被访问过的邻接点v1,v2,…,vt。(2)按照v1,v2,…,vt的次序,访问每一个顶点的所有未被访问过的邻接点。 (3)依次类推,直到图中所有和初始点v有路径相通的顶点原创 2020-08-07 18:39:40 · 11792 阅读 · 0 评论