图
文章平均质量分 89
李柒岁
这个作者很懒,什么都没留下…
展开
-
【最小生成树】kruskal算法C语言实现
系列文章:【最小生成树】Prim算法C语言实现这里推荐一个B站的8min动画介绍的两种最小生成树的原理,建议先看完动画再看代码: 最小生成树(Kruskal(克鲁斯卡尔)和Prim(普里姆))算法动画演示 kruskal(克鲁斯卡尔)算法时间复杂度:O(NlogN)(N为边数)kruskal算法又称“加边法”,用于边数较少的稀疏图方法:每次找图中权值最小的边,将边连接的两个顶点加原创 2020-07-16 17:35:37 · 8005 阅读 · 4 评论 -
【最小生成树】Prim算法C语言实现
算法描述:Prim算法的大致思想:假设图G顶点集合为U,首先任选一点a(默认为第一条边)作为起始点,加入集合V,再从集合U-V中找到另一点b使得b到V中任意一点的权值最小,把b加入集合V。以此类推,现在集合V={a,b},再从集合U-V找到一点c使得c到V中任意一点的权值最小,将c加入集合V,此时就构建出一棵最小生成树。为了便于在集合U和U-V之间选择权值最小的边,建立两个数组mst和lowcost。lowcost[i]:表示以i为终点的边的最小权值,当lowcost[i]=0说明i点加入了最小生成树原创 2020-07-16 13:29:11 · 4716 阅读 · 11 评论 -
【图】最短路径Floyd算法C语言实现
相关blog:【图】最短路径Dijkstra算法C语言实现算法过程:1.把图用邻接矩阵G表示出来,如果从Vi到Vj有路可达,则G[i][j]=dG[i][j]=dG[i][j]=d,ddd表示该路的长度;否则G[i][j]=∞G[i][j]=∞G[i][j]=∞。一个点到自己的距离如G[i][i]=0G[i][i]=0G[i][i]=02.定义一个矩阵D用来记录所插入点的信息,D[i][j]D[i][j]D[i][j]表示从ViViVi到VjVjVj需要经过的点,初始化D[i][j]=−1D[i][j原创 2020-07-16 10:52:25 · 1692 阅读 · 2 评论 -
【图】最短路径Dijkstra算法C语言实现
Dijkstra算法(单源点路径算法)要求:图中不存在负权值边)算法步骤如下:G={V,E}初始时令 S=V0,T=V−S=S={V0},T=V-S=S=V0,T=V−S={其余顶点},T中顶点对应的距离值若存在<V0,Vi>,d(V0,Vi)<V0,Vi>,d(V0,Vi)<V0,Vi>,d(V0,Vi)为<V0,Vi><V0,Vi><V0,Vi>弧上的权值若不存在<V0,Vi><V0,Vi>&l原创 2020-07-15 21:38:14 · 1217 阅读 · 0 评论 -
【图的建立】邻接矩阵/邻接表C语言实现
邻接矩阵表示图无权图实例:1.图基本结构#include<stdio.h>#include<malloc.h>#define MAXSIZE 100/******* 邻接矩阵 *******/typedef struct Gnode{ int nv ;//顶点 int ne ;//边 int G[MAXSIZE][MAXSIZE]; int data[20];//存顶点的数据}*graph;2.初始化一个有所有顶点原创 2020-07-12 11:07:34 · 1465 阅读 · 0 评论