何为图论
见名知意,图论 (Graph Theory) 就是研究 图 (Graph) 的数学理论和方法。图是一种抽象的数据结构,由 节点 (Node) 和 连接这些节点的 边 (Edge) 组成。图论在计算机科学、网络分析、物流、社会网络分析等领域有广泛的应用。
如下,这就是一个图,可以看到这个图有 5 5 5 个顶点,分别编号为 { 0 , 1 , 2 , 3 , 4 } \{0, 1, 2, 3, 4\} { 0,1,2,3,4}。同时这个图有 4 4 4 条边,例如,在顶点 2 2 2 和 顶点 4 4 4 之间存在着一条边。

图的基本概念
在详细讲解图论和有关图论算法之前,先来了解一下在图论中的一些基本表述和规范。
- 图 (Graph):图是一种由一组顶点和一组边组成的数据结构,记做 G = ( V , E ) G = (V, E) G=(V,E),其中 V V V 代表顶点集合, E E E 代表边集合。
- 顶点 (Vertex):顶点是图的基本单位,也称为节点。
- 边 (Edge):一条边是连接两个顶点的线段或弧。可以是无向的,也可以是有向的。一条边可以记做为 ( u , v ) (u, v) (u,v)。在无向图中,若存在一条 ( u , v ) (u, v) (u,v),表示可以从 u u u 点直接走到 v v v 点,反之亦然。但若在有向图中,存在一条边 ( u , v ) (u, v) (u,v),表示可以从 u u u 节点直接走向 v v v 节点,如果不存在一条边 v , u v, u v,u,那么 v v v 节点就没有办法直接走向 u u u 节点。
- 无向图 (Undirected Graph):图中的边没有方向,即 ( u , v ) (u, v) (u,v) 和 ( v , u ) (v, u) (v,u) 是同一条边。
- 有向图 (Directed Graph/ Digraph):图中的边有方向,即 ( u , v ) (u, v) (u,v) 和 ( v , u ) (v, u) (v,u) 不是同一条边。
- 简单图 (Simple Graph):表示含有重边(两个顶点之间的多条边)和自环(顶点到自身的边)的图。
- 多重图 (Multigraph):允许有重边和自环的图。
- 边权 (Weight of an Edge):一般表示经过这一条边的代价(代价一般是由命题人定义的)。
如下图,就是一个有向的简单图(通常来说,在有向图中边的方向用箭头来表示):

如下图,就是一个无向的多重图,其中存在两条边可以从顶点 5 5 5 到顶点 2 2 2:

与此同时,为了方便起见,对于无向图的处理,我们只需要在两个顶点之间建立两个方向相反的无向边就可以表示一个无向图,具体如下:

图的表示方法
在计算机中,图可以通过许多方式来构建和表示。总的可以分成图的邻接矩阵和邻接表两种方法(关于链式前向星本文不过多展开叙述,有兴趣的可以自行查阅相关文档)。
图的邻接矩阵 (Adjacency Matrix)
若一个图中有 N N N 个顶点,那么我们就可以用一个 N × N N \times N N×N 的矩阵来表示这个图。我们一般定义,若矩阵的元素 A i , j ≠ − ∞ A_{i, j} \neq -\infty Ai,j=−∞ 表示从节点 i i i 到 j j


7862

被折叠的 条评论
为什么被折叠?



