1.图的定义
图是由顶点(vertex)集合及顶点间的关系组成的一种数据结构。 Graph=(V,E) 其中,顶点集合 V={x|x∈某个对象数据集} 是有穷非空集合; E={(x,y)|x,y∈V} 是顶点间关系的有穷集合,也叫边(edge)集合。 Path(x,y) 表示从顶点x到y的一条单向通路,他是有方向的。
2.图的相关概念
∙
有向图(Directed Graph):一般用
<u,v>
<script type="math/tex" id="MathJax-Element-9758">
</script>表示
∙
无向图(Undirected Graph):一般用
(u,v)
表示
∙
完全图(Complete Graph):在n个顶点组成的无向图中,若有
n(n−1)2
条边,则称为
无向完全图。在n个顶点组成的有向图中,若有
n(n−1)
条边,则称为
有向完全图。完全图中的边数达到最大。
∙
权(Weight):在某些图中,边具有与之相关的数量(比如一个顶点到另一个顶点的距离、花费的代价、所需的时间、次数等)。这种带权图也叫做
网络(Network)。
∙
邻接顶点(Adjacent vertex):如果(u,v)是E(G)中的一条边,则u和v互为邻接顶点,且边(u,v)依附于顶点u和v,顶点u和v依附于边(u,v)。如果
<u,v>
<script type="math/tex" id="MathJax-Element-9766">
</script>是E(G)中的一条有向边,则称顶点u邻接到顶点v,顶点v邻接自顶点u,边
<u,v>
<script type="math/tex" id="MathJax-Element-9767">
</script>与顶点u和v相关联。
∙
子图(Subgraph):Subgraph Let G = (V, E) be a graph with vertex set V and edge set E. A subgraph of G is a graph G’ = (V’, E’) where
1. V’ is a subset of V
2. E’ consists of edges (v, w) in E such that both v and w are in V’
∙
度(Degree):与顶点v关联的边数,称为v的度,记作deg(v)。有向图中,顶点的度是入度和出度之和。顶点v的入度是指以v为终点的有向边的条数,记作indeg(v),顶点v的出度是指以v为始点的有向边的条数,记作outdeg(v)。顶点v的度为deg(v)=indeg(v)+outdeg(v)。一般地,若图中有n个顶点,e条边,那么:
e=12{∑ni=1deg(vi)}
∙
路径(Path)&路径长度(Path length):路径可以用顶点序列表示,在某些算法中,也可用一系列边来表示。对与不带权图,路径长度指的是此路径上边的条数,对于带权图,路径长度指的是此路径上各条边的权值之和。
∙
简单路径&回路(Cycle):路径上各顶点互不重复,这样的路径为简单路径。路径上第一个顶点与最后一个顶点重合,这样的路径为回路。
∙
连通图(Connected graph)&连通分量(Connected component ):无向图中,若从
顶点v1到顶点v2
有路径,则称
顶点v1与顶点v2
是连通的。如果图中任一对顶点都是连通的,则称此图是连通图。
非连通图的极大连通子图叫做连通分量。
∙
强连通图(Strongly connected graph)&强连通分量(Strongly connected component ):有向图中,若在每一对
顶点vi到顶点vj
之间存在一条从
顶点vi到顶点vj
的路径,也存在一条从
顶点vj到顶点vi
的路径,则称此图是强连通图。
非强连通图的极大强连通子图叫做强连通分量。
∙
生成树(Spanning tree):一个无向连通图的生成树是它的极小连通子图,若图中有n个顶点,则其生成树由n-1条边构成。若是有向图,则可能得到它的若干有向树组成的森林。
∙
最小生成树(Minimum spanning tree):一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。
*包含图的所有顶点,n-1条边
*没有回路
*边的权重和最小