引论
图是抽象的网络表示,它帮助我们有可能透过现象看本质,帮助我们得到具体的实际网络的拓扑性质。网络的拓扑性质是指与网络中节点的大小、位置、形状等以及节点间是如何连接的方式等都无关,而只与网络中有多少节点,节点之间有无边相连这些基本特征相关。众所周知的网络问题是七桥问题,在18世纪的哥尼斯堡,有一条河穿过,河上有两个小岛,有七座桥把两个岛与河岸联系起来,有人提出,能否一次性不重复且不遗漏地走完七座桥然后回到出发点。
欧拉对此问题将其转化为几何图形,给出了一个连通图,不考虑桥的长短宽窄,将被河流分割的每块陆地用一个点表示,河流上的桥就是节点之间的连边。下图即为七桥问题等价图形。
在连通图中无法看出每座桥或陆地的具体信息,单纯从研究这个问题是否有解的角度去进行求解,简单且纯粹。
1 图
1.1 定义
图的定义:一个由点集V,边集E组成的图 。
1.2 图的类型
图根据连边的权重和方向可以分为无权无向图,无权有向图,加权有向图,加权无向图,四者转化关系如下:
1)无权无向图
所谓无权无向图即图中的边是无方向且无权重的。
2)无权有向图
与无全无向图不同的是,无权有向图中的连边是带有方向的,每一条边都有起始点和重点,如节点 i 指向节点 j 的连边可用向量 表示。典型的应用网络如引文网络、社交软件关注网络等。
3)加权有向图
加权有向图中的连边是有方向且有权重的,权重可以描述两个节点之间联系的强度。典型应用网络如交通网络、金融网络等。
4)加权无向图
与无权无向图相比,加权无向图的连边是有权重但无方向的。典型实际网络如科研合著网络等。
2.3 简单图
简单图的定义:所谓简单图即两个节点间至多只有一条连边,没有自环的图。即没有自环和重边的图。简单图有两种极端情形:
1)空图
空图:① 没有任何节点或连边的图;② 有节点但是没有连边。
2)完全图
完全图:完全图即每个节点之间都存在一条连边,总边数为。
稀疏网络:当节点数N较大,且图的连边数量远小于完全图的连边数量时,该网络称为稀疏网络。
2.4 图在计算机中的表示
1)邻接矩阵
加权有向图
代表从 i 指向 j 的权值为 的边;0即没有从 i 指向 j 的边
加权无向图
代表从 i 与j之间的权值为 的边;0即 i 与 j 之间没有边
无权有向图
如果有从节点 i 指向节点 j 的边则为1,如果没有从节点 i 指向节点 j 的边则为0;
无权无向图
如果有节点 i 与节点 j 的边则为1,如果没有节点 i 与节点 j 的边则为0;
2)邻接表
表示稀疏的无权图的最常用方法是邻接表。其构成为节点和连边组成的单链表,如七桥问题网络,将A、B、C、D分别用1,2,3,4表示,其网络的邻接表表示如下:
3)三元组
三元组的格式与邻接表是相近的,其第一列为起始节点编号,第二列为目标节点编号,第三列代表这条连边的一个权值,将邻接矩阵表示中的有权有向网络以三元组的形式表示,可表示如下:
2.5 路径与连通性
1)路径
有连才有网,讨论两个节点是否相关,即两个节点之间有无路径。设一个无向图为。
路径(Path):无向图中的路径是指一个节点至另一个节点之间的边,如无向图G中,存在一个节点A,和一个节点D,二者本身是不相邻的,没有直接的连边,但A可以通过其相邻节点找到与D相连的一组连边,这一组连边即A-D的路径,一条路径的长度即这条路径中所包含的连边数。
回路(Circuit):起点与终点重合的路径。
简单路径(Simple Path):各个顶点互不相同的路径。
圈(Circle):圈可以成为特殊的回路,即起点与终点重合,但路径中间历经的节点并无重合。所以说,一个圈必定是一个回路,而一个回路中可能包含多个圈。
2)连通性
无向图连通性:
若每一对节点之间都存在一条路径,则称这个无向图是连通的;否则则是不连通的。而一个不连通图是由多个连通片组成的。连通片是网络中满足连通性和独立性的子图。
连通性判别:若一个网络的邻接矩阵是不可约的,则该网络是连通的。
有向图连通性:
强连通:一个有向图的任意节点对之间存在相互指向的路径。弱连通:当且仅当将有向图的有向边转换为无向边只后的无向图的是连通的。
2.6 生成树与最小生成树
1)树
一个含有N个节点与N-1条连边的连通图可以成为树。一棵树有如下特点:
a、图G是连通的且有N-1条连边
b、图G是连通的且不包含圈
c、图G的任意节点对之间仅有一条路径
d、图G去掉任意一条连边都会变得不连通
2)最小生成树
生成树:一个连通图G本身不是一棵树,但可以看作是一棵树添加了一部分连边形成的图,这棵树即为生成树。而这棵树可以看做是连通图G的一个子图。一个包含N个节点的完全图存在棵生成树。
最小生成树:在加权无向图中,每棵生成树的连边数必然都为N-1,但其连边的权值之和不尽相同,其中权值之和最小的成为最小生成树。
2.7 二分图与匹配问题
1)二分图
二分图:给定图。若可将点集V划分为X,Y两个子集,且E中的每一条边的两个节点分属于不同子集,则可称G为一个二分图。若子集X和子集Y的任意节点对之间都存在一条连边,则图G可称为完全二分图。
2)匹配问题
匹配:给定二分图G,F为边集E的一个子集,若F中的连边没有公共节点,则称F为图G的一个匹配。
最大匹配:二分图G的匹配中连边数最多的匹配。
X-完全匹配:二分图G的匹配F中包含所有X子集的节点,同理Y-完全匹配即为F中包含所有Y子集的节点。
完全匹配:即F既是X-完全匹配又是Y-完全匹配。