有关图的定义
图是由若干给定的顶点及连接两顶点的边所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系。顶点用于代表事物,连接两顶点的边则用于表示两个事物间具有这种关系。图论起源于著名的柯尼斯堡七桥问题(下图所示),该问题于1736年被欧拉解决,因此普遍认为欧拉是图论的创始人。
边没有方向的图称为无向图。
边有方向,每条边只能从一端到另一端(单向性),的图称为有向图。
连通性
- 连通:在一个无向图 G 中,若从顶点i到顶点j有路径相连(当然从j到i也一定有路径),则称i和j是连通的。如果 G 是有向图,那么连接i和j的路径中所有的边都必须同向。
- 连通图(无向图):如果图中任意两点都是连通的(可以不是直接连通,间接连通也可以,只要有路径连接就可以),那么图被称作连通图。
- 强联通(有向图):若一张有向图的节点两两互相可达,则称这张图是 强连通的。
- 弱连通(有向图):若一张有向图的边替换为无向边后可以得到一张连通图,则称原来这张有向图是 弱连通的。
简单图与多重图
- 自环:若图中存在从顶点i出发并指向顶点i的边,则该边称作一个自环。
- 重边:若图中存在两条完全相同的边,则它们被称作(一组)重边。
- 简单图:若一张图中没有自环和重边,它被称为简单图。
- 多重图:若一张图中有自环或重边,它被称为多重图。
度
- 度:一个顶点在图中的度为与这个顶点相连接的边的数目。对于有向图,顶点的入度是指进入该顶点的边的条数,顶点的出度是指从该顶点出发的边的条数,有向图中顶点的度等于该顶点入度和出度之和。
邻接矩阵
邻接矩阵:存储图的常用方式之一,邻接矩阵只适用于没有重边(或重边可以忽略)的情况。其最显著的优点是可以O(1)查询一条边是否存在。
实现方法:使用一个二维数组a
来存边,其中a[u][v]
为1表示存在u
到v
的边,为0表示不存在。如果是带边权的图,可以在a[u][v]
中存储u
到v
的边的边权。