标签:优先 深度 max 个人 a算法 序列 kruskal class str
一.图的概念:
1.图、无向图、有向图、完全图
2.度、入度、出度
3.路径:由顶点和相邻顶点序偶构成的边所形成的序列
4.连通图、连通分量(无向图)
5.强连通图、连通分量:极大强连通子图(有向图)
二. 图的存储结构:
1.邻接矩阵
typedef struct { char vexs[maxvexs];//顶点表 int arc[maxvexs][maxvexs];//邻接矩阵 int vertexes,edges;//图的顶点与边 }graph;
2.邻接表
typedef struct EdgeNode { int adjvex; //邻接点域,存储该顶点对应的下标 int weight; //用于存储权值 struct EdgeNode *next; //指向下一个邻接点 }EdgeNode;//边表结点 typedef struct VertexNode //顶点表结点 { char data; //顶点域,存储顶点信息 EdgeNode *firstedge; //边表头指针 }VertexNode,AdjList[MAXVEX]; typedef struct { AdjList adjList; int numVertexes,numEdges;//图中当前顶点数和边数 }GraphAdjList;
三.图的遍历
1.BFS(广度优先遍历)
2.DFS(深度优先遍历)
四.最小生成树
Prim算法:针对顶点,对于稠密图(边数非常多的情况)更好;
Kruskal算法:针对边,对于稀疏图(边数少)时更好。
五.最短路径
Dijkstra算法:按边的径权值递增的次序产生最短路径
算法的思路并不算难,但要将其变为能让计算机跑起来的代码就有难度了
学习心得:图的内容感觉是数据结构中较为困难的内容,现阶段对图的掌握也没有这么理想,在个人小测中也因为没有仔细审题而踩到了坑。PTA上的踩鳄鱼问题也是一开始完全不知道该如何下手,感觉自己第六章白学了一样。所以以后还是要多动手敲代码,不要偷懒,只有自己认真的把代码写出来,一点点完善,才能使自己的印象更深刻。
标签:优先 深度 max 个人 a算法 序列 kruskal class str
原文地址:https://www.cnblogs.com/GJJbk/p/13126446.html