本章我们主要学习了图,包括图的定义和基本术语、图的存储结构、图的遍历、图的应用等。
图表示多对多的关系,包含一组顶点和一组边(不考虑重边和自回路)
图的常见术语有:无向图,有向图,网络等
图的存储结构:
邻接矩阵:
找任意顶点的邻接点:只需要找到该点所在行或所在列的元素为1,则对应的点就是邻接点
邻接表:适用于稀疏矩阵。因为邻接表每一条边被存了两遍,而且对于有权重的图,还需要心得额空间,所以邻接表存储必须要够稀疏才合算。
邻接矩阵的类型定义:
图的创建:基于邻接矩阵创建无向带权图
基于邻接表的类型定义:(递归定义)
邻接点的结构:
顶点的类型:
在邻接表中查找顶点所在下标:
截图的遍历:
深度优先遍历:邻接表的时间复杂度为O(N+E),邻接矩阵的实践复杂度为O(N^2)
广度优先遍历:相当于层次遍历,邻接表的实践复杂度为O(N+E),邻接矩阵的时间复杂度为O(N^2)
图的应用:
最小生成树:
Prim算法:添加点,逐步形成一个连通分量
克鲁斯卡尔算法:先找权值最小的边,逐步添加,形成一个连通分量。
最短路径:Dijkstra算法:
拓扑排序:
改进:
关键路径。
下阶段目标:认真学习第七章的内容,复习之前的内容,准备期末考试。
原文:https://www.cnblogs.com/llwjh/p/13128544.html