Skip to content
Go back

Edit page

一种多对多数据结构。用 G(V,E)G(V, E) 表示, VV 表示一个顶点集, EE 表示一个边集。

根据边的类型分类:

根据复杂度:

完全有向图:每对顶点之间都存在两条反向的有向边; 完全无向图:每对顶点之间都存在一条无向边;

连通与否:

连通分量:无向图的极大连通子图,再加入任何一个顶点均不连通; 强连通图:有向图中每个顶点均存在双向路径(即 VV 可以到 WWWW 也可以到 VV。) 弱连通图:有向图中任意两个顶点均有边,不管方向;

一些基础概念

存储方式

  1. 邻接矩阵(二维数组)
  2. 邻接表(链表)

遍历方式

图的相关应用

最小生成树

最短路径算法

算法思想都是按照递增顺序查找最短路。

无权图单源最短路算法

使用广度优先遍历(BFS)即可,注意访问标志数组变成了最短距离数组 dist[] ,增加路径数组 path[] 存储从 AABB 的路径。

有权图单源最短路算法

初始化 dist[] 为全部无穷大的数组,用于存放图的最短路径数值,先将起点的 dist[s] 定义为 0。然后每次从 dist[] 中选择路径最小的点,将其标记为 collected[] = true 表示放进了确定最小值的顶点集合中。然后遍历他的所有邻接点并更新邻接点的 dist[] 值和前置顶点 path[] 数组。经过寻找,直到所有的点都被收集进了确定最小路径的顶点集合 collected[] 中。算法结束。

拓扑排序

AOV 网

关键路径

AOE 网

Edit page
Share this post on:

Previous Post
C++语言程序设计进阶(1)
Next Post