考研编程-图
图的算法不需要会写,但看程序加深理解
Jiawen9
从来不自诩有不带偏见看待事物的所谓眼界和宽容,但会一直坚守接触之后能重新认识人和事物的勇气。
展开
-
【数据结构·考研】邻接表表示的图的深搜和广搜
基于邻接表的图的深搜和广搜原创 2023-03-10 17:28:24 · 542 阅读 · 3 评论 -
【数据结构·考研】邻接矩阵表示的图的深搜和广搜
邻接矩阵实现图的深搜和广搜原创 2023-03-10 17:38:42 · 452 阅读 · 0 评论 -
【数据结构·考研】Dijkstra算法
边上权值非负情形的单源最短路径问题Dijkstra算法的应用场景:给定一个带权有向图D与源点v,求从v到D中其他顶点的最短路径。限定:各边权值大于或等于0Dijkstra算法使用了广度优先搜索解决赋权有向图或者无向图的单源最短路径问题,算法最终得到一个最短路径树。算法逐步求解过程:①引入dis数组,它的每一个分量dis[i]表示当前找到的从源点v1到终点vi的最短路径长度。②集合T是已求得最短路径的终点的集合,则可证明:下一条最短路径必然是从v1出发,中间只经过T中的顶点便可到达原创 2020-07-25 23:53:59 · 1538 阅读 · 0 评论 -
【数据结构·考研】Kruskal算法
Kruskal算法Kruskal 算法把图的边由小到大排序,在避免形成环的前提下,构造出一棵最小生成树。首先是边结点的定义://边结点定义 struct edge{ //两个顶点,和边上的权值 int u , v , cost;};专门为它定义一种用于 sort() 的比较函数。//比较函数 bool comp(edge& e1 , edge& e2){ return e1.cost < e2.cost;} 把边不停加入已经遍历的集合的操作原创 2020-09-26 23:00:11 · 591 阅读 · 0 评论 -
【数据结构·考研】Prim算法
Prim算法Prim 算法和 Dijkstra 算法很相似,都是从一个点开始把点不停加入到点集合。Prim算法适合于边疏密的图。首先定义邻接矩阵、标志数组和一个不断更新的 minCost 数组用来求当前点集到其他点的最小权值。#define N 6 vector<vector<int> > Graph(N,vector<int>(N,INT_MAX));//邻接矩阵 vector<bool> visited(N,false); //访原创 2020-09-26 22:50:13 · 720 阅读 · 0 评论 -
【数据结构·考研】Floyd算法
Floyd算法Floyed 算法与 Dijkstra 算法的思想完全一样,遍历整个邻接矩阵,比较每一条边可否加入循环中的两边之间来短接。Floyed 算法基于动态规划算法,可以允许有负权值,但不可以有带负权值的边存在。首先,初始化一个邻接矩阵,初始化一个 dp 矩阵,初始化一个顶点的前趋矩阵prev。#define N 6 vector<vector<int> > Graph(N,vector<int>(N,INT_MAX)); //邻接矩阵 v原创 2020-09-26 22:38:36 · 807 阅读 · 0 评论 -
【数据结构·考研】拓扑排序
拓扑排序先发一部分,一个邻接表用广度优先遍历实现的拓扑排序。#include<iostream>#include<queue>#include<stack>using namespace std;//边结点struct edgeNode{ int dest; //数字下标 edgeNode *next = NULL; }; //顶点结点 struct vertexNode{ char dest; //字母下标 edgeNode *f原创 2020-09-08 21:47:37 · 402 阅读 · 0 评论 -
【数据结构·考研】图的深搜和广搜
深搜和广搜 - 邻接矩阵实现今天演示 dfs 和 bfs 的就是下边这个图。邻接矩阵的结构声明typedef struct{ int numVertices; //顶点个数 char vertice[10]; //顶点矩阵 int edge[10][10]; //边矩阵}MGraph; 与顶点 v 相邻的第一个结点的下标int fistNeighbor(MGraph& G,int v){ for(int i = 0;i < G.numVertices;i原创 2020-09-08 13:11:51 · 772 阅读 · 0 评论