图论初步 - L

图论初步 - L

一、图

1. 图的概念

图是一种数据结构,由节点和连接它们的构成。

数学上,一般使用 \(G = (V, E)\) 表示一个点集为 \(V\),边集为 \(E\) 的图。

与一个顶点 \(u\) 关联的边的个数叫做顶点 \(u\) 的的,用 \(d(u)\) 表示。

2. 图的分类

  • 按照点或边是否有限:

    有限图、无限图。

  • 按照边是否有方向:

    有向图(所有边都有方向);

    无向图(所有边都没有方向);

    混合图(一部分边有方向,另一部分没有)。

  • 按照边是否有权:

    有权图、无权图。

3. 简单图

  • 自环:对于边 \((u, v)\),若 \(u = v\),那么 \(e\) 叫做自环。
  • 重边:连接同一组顶点的边互为重边。
  • 如果一个图没有自环或重边,那么这个图叫做简单图。反之,这个图叫做多重图。

4. 图的连通性

5. 图的存储

在 C++ 语言中,一般使用下列方法来存储图。

1)邻接矩阵

2)邻接表

3)链式前向星

6. 图的遍历

图一般有两种遍历方式:DFS 与 BFS。

1)DFS

2)BFS

7. 特殊的路径

1)最短路

对于一条路径,若它是节点 \(u\) 到节点 \(v\) 所有路径中,权值和最小的那条,那么这条路径叫做节点 \(u\) 到节点 \(v\)最短路。反之,若权值和最大,那么它叫做最长路

最短路或最长路,可以使用多种算法求解。

A. 单源最短路
a. Dijkstra 算法
b. Bellman-Ford 算法
c. SPFA 算法
B. 多源最短路
a. Floyd 算法
b. Johnson 算法

2)环

对于一条路径,若起点与终点相同,且这组点对是唯一重复出现的点对,那么这条路径叫做一个

如果一个环所有边的权值为负,那么这个环叫做负环

可以使用 SPFA 算法寻找图中负环。

8. 生成树问题

二、例题

1. 图的遍历:P5318

2. 最长路:P1807

3. 单源最短路:P4779

4. 多源最短路:B3611

5. 最小生成树:P3366

6. 负环:P3385

7. 图上 DP:P1113

三、习题