1. 图的表示
1.1 邻接矩阵
两个节点之间要是有边,就在矩阵中标记为边权重;如果没有边,就标记为0.
1.2 关联矩阵
每个节点对应一个边集:
1.3 邻接表
为了节省空间,每个节点只需保存一个与其相连的节点列表:
空间复杂度:
- 有向图:O(n+e)
- 无向图: O(n+2e), 因为边被保存了两次
2. 广度优先搜索
3. 深度优先搜索
深度优先搜索算法是一种用于遍历或搜索树或图的算法。沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。属于盲目搜索。
4. 拓扑排序
4.1 问题
4.2 策略:顺序输出零入度节点
5. 最小生成树
5.1 定义
5.2 Prim算法
例子:
6. 最短路径
6.1 问题描述
每次都选取工作集中最小的那个点,之后把和这个点相连的所有点的值都更新一遍。
6.2 实例