6.1图的定义
G(V,E) 图G 顶点V 边E
<x,y>有向边 (x,y)无向边
无向完全图有n(n-1)/2条边,有向完全图有n(n-1)条弧
顶点v的度,入度,出度,边是度的1/2
序列中顶点不重复出现的路径称为简单路径。简单回路
无向图:任意两点间连通为连通图,极大连通子图为连通分量
有向图:任意两点连通为强连通图,极大连通子图为强联通分量
连通图的生成树:一个极小连通子图,它含有图中全部顶点,但只有构成一棵树的n-1条边。
一颗有n个顶点的生成树有n-1条边,一个n个顶点的图少于n-1条边则是非连通图,多于n-1条边则一定有环。但是,有n-1条边不一定是生成树
6.2图的存储结构
邻接矩阵(二维数组)
优点:便于判断两点之间是否有边;便于计算入度和出度(行和为出,列和为入)
缺点:不便于增删顶点;不便于统计边的数目,O(n^2);空间复杂度O(n^2)高
适合存储稠密图
压缩存储
邻接表(图的链式存储)
6.3图的遍历
6.4图的应用(最小生成树、最短路径、拓扑排序、关键路径)
最小生成树(Minimum Cost Spaning Tree)
Prim普里姆算法(加点法)稠密图
Kruskal克鲁斯卡尔(加边法)稀疏图
最短路径
dijkstra迪杰斯特拉算法(某个源点到其余各顶点的最短路径)
按路径长度递增的次序产生最短路径
floyd弗洛伊德算法(每一对顶点间的最短路径)
拓扑排序
顶点表示活动的网AOV-网 (Activity On Vertex Network)不应该有环
拓扑排序:判定网中是否有环
解决依赖解析(dependency resolution)?
关键路径
边表示活动的网AOE-网(Activity On Edge)