图的定义:
图在数据结构中是中多对多的关系,一般分为无向图与有向图
常用邻接矩阵或者邻接链表来表示图中结点的关系
⑴图是由顶点集V(Vertex)和顶点间的关系集合也就是边的集合E(edge)组成的一种数据结构
⑵用二元组定义为:G=(V,E)。
对于图7-1所示的无向图G1和有向图G2,它们的数据结构可以描述为:
G1=(V1,E1), 其中 V1={a,b,c,d},E1={(a,b),(a,c),(a,d),(b,d),(c,d)},
G2=(V2,E2),其中 V2={1,2,3}, E2={<1,2>,<1,3>,<2,3>,<3,1>}。
有向图与无向图
⑴在图中,若用箭头标明了边是有方向性的,则称这样的图为有向图,否则称为无向图。
如图7-1中:
①G1为无向图, ②G2 为有向图。
⑵在无向图中:一条边(x,y)与(y,x)表示的结果相同,用圆括号表示,
⑶在有向图中:一条边<x,y>与<y,x>表示的结果不相同,故用尖括号表示。<x,y>表示从顶点x发向顶点y的边,x为始点,y为终点。
⑷有向边也称为弧,x为弧尾,y为弧头,则<x,y>表示为一条弧, 而<y,x>表示y为弧尾,x为弧头的另一条弧 。
完全图/稠密图/稀疏图:
⑴具有n个顶点,n(n-1)/2条边的图,称为完全无向图,
⑵具有n个顶点,n(n-1) 条弧的有向图,称为完全有向图。
⑶完全无向图和完全有向图都称为完全图。
⑷对于一般无向图,顶点数为n,边数为e,则 0≤e ≤n(n-1)/2。
⑸对于一般有向图,顶点数为n,弧数为e, 则 0≤e≤n(n-1) 。
⑹当一个图接近完全图时,则称它为稠密图,
⑺当一个图中含有较少的边或弧时,则称它为稀疏图。
度(出度/入度):
⑴在图中,一个顶点依附的边或弧的数目,称为该顶点的度。
⑵在有向图中,一个顶点依附的弧头数目,称为该顶点的入度。
⑶一个顶点依附的弧尾数目,称为该顶点的出度,某个顶点的入度和出度之和称为该顶点的度。
⑷若图中有n个顶点,e条边或弧,第i个顶点的度为di,则有 e=1/2 * Σ(1<= i <= n, di)
子图
⑴若有两个图G1和G2, G1=(V1,E1), G2=(V2,E2), 满足如下条件:
V2⊆V1 ,E2⊆ E1,即V2为V1的子集,E2为E1的子集,则 称图G2为图G1的子图。
权:
⑴在图的边或弧中给出相关的数,称为权。
⑵权可以代表一个顶点到另一个顶点的距离,耗费等,带权图一般称为网。
强连通图、单向连通图和弱连通图:
强连通:有向图(前提)中,任意两点都有至少一条通路,则此图为强连通图。
单向连通:有向图中,任意结点对中,至少从一个到另一个是可达的,就是单向连通。
弱连通图:将有向图的有向边换成无向边得到的图是连通图,则此有向图是弱连通图。
欧拉回路:
如果图G中的一个路径包括每个边恰好一次,则该路径称为欧拉路径(Euler path)。如果一个回路是欧拉路径,则称为欧拉回路(Euler circuit)。 [1] 具有欧拉回路的图称为欧拉图(简称E图)。具有欧拉路径但不具有欧拉回路的图称为半欧拉图。