(2022.07.01 Fri)
概念
图G由顶点(vertices)集合V和连接V中顶点的边(edge)的集合E组成。有些书上成顶点为nodes,称边为arcs。
- 有向(directed):图中的边或者有向或者无向(undirected)。如果两个顶点u和v的连接是有序的,从u指向v,则称该边(u, v)有向。如果u和v无序,则边(u, v)无向。无向边有时被表示成{u, v},但为了简单常使用(u, v)表示。对于无向边(u, v),等价于(v, u)。无向边的两个顶点对称(symetric),有向边的两顶点非对称(asymetric)。如果图中的所有边都是无向边,称该图为无向图;相应的,所有边有向,称之为有向图(digraph)。如果图中有的边有向有的边无向,称之为混合图(mixed graph)。
- 边的两个端点被称为边的end vertices/endpoints。如果边有向,则第一个endpoint称为源点(origin),另一个endpoint称为终点(destination)。
- 相邻(adjacent):如果两个顶点u和v是一个边的两个顶点,则称u和v相邻。
- 附带(incident):如果一个顶点是一条边的终点,则称这条边附带于(be incident to)这个顶点
- 出发(outgoing)/进入(incoming)边:当一个顶点是有向边的起点,称该边是顶点的出发边;当一个顶点是一条有向边的终点,称该边是该顶点的进入边。
- 度(degree):顶点v的度,标记为
deg(v)
,是该顶点附带边的个数。顶点的进度(in-degree)和出度(out-degree)分别是该点的进入边数和出发边数,分别标记为indeg(v)
和outdeg(v)
。 - 并行边(parallel edges)/多边(multiple edges):两个无向边共享相同的顶点,或两个有向边共享相同的起点和终点,比如飞机航线,两个城市之间有来往两个航班
- 自环(self-loop):如果一条有向或无向边的两个顶点为同一点,则称该边self-loop。
- 简单图(simple):没有并行边或自环的图称为简单图。因此简单图的边可以表示为顶点对(vertex pair)的集(set)。
- 路径(path):路径是顶点和边交替的一个序列,该序列始于一个顶点终于一个顶点,其中每个边都是附带于其predecessor和successor顶点。如果该路径中的节点互不重复,则称该路径简单(simple)。有向路径(directed path)是路径中的边都是有向边,且沿着各边的方向行进。
- 环(cycle):是以同一个点为起点和终点的路径,并至少包括一条边。如果该环中除了起点和终点,其他点都互不重复,则称该环简单。有向图概念类似有向边。
- 无环(acyclic):有向图如果没有有向环,则称为无环。
- 可达(reachable):有向图中,如果从顶点u到顶点v有有向路径,则称u到达(reaches)v,或v从u可达(v is reachable from u)。在无向图中,可达性是对称的,u可达v则v可达u。在有向图中,很可能出现u到达v但v不能到达u的情况。
- 联通(connected):如果一个图中任意两点都有路径连接,则称该图联通。一个有向图是强联通的,如果任何两点都能到达对方。
- 子图(subgraph):一个图如果其顶点和边是另一个图的子集,则称该图为另一个图的子图。
- 生成子图(spanning subgraph):一个图是另一个图G的子图,且包含G的所有顶点,则该图是G的生成子图。如果图G不联通,则它的最大联通子图被称为联通分量(connected components of G)。
- 森林(forest):没有环的图成为森林。
- 树(tree):联通的树,即无环的联通图称为树。
- 生成树(spanning tree):图的生成树是树形生成子图。
定理
- 图G中有m条边,顶点集V,则有
说明:在计算度时,每条边都会被它的两个顶点计算一次,所以顶点度的和是边数的2倍。 - 有向图G有m条边,和顶点集合V,有
- 图G是简单图,含有n个顶点和m条边,若G无向,则有,如果G有向,则有。即,n个顶点的图,其边数为。
说明:用排列、组合的思路解决。 - 图G是无向图,有n个顶点和m条边
- 如果G联通,则
- 如果G是树,则
- 如果G是森林,则
Reference
1 Goodrich and etc., Data Structures and Algorithms in Python