图G是由一个顶点集和一个边集构成的数据结构
G=(V,E)
其中
V是由顶点组成的一个非空有限集合:{V0, V1, V2 ... Vn-1}
E是由V中顶点的对偶构成的有限集合:{(V0, V1), (V3, V4) ... },E如果为空,则图当中只有顶点而没有边
边有2种情况,有向和无向
如果边是无向的,(Vi, Vj) = (Vj, Vi),该图称为无向图
如果边是有向的,<Vi, Vj> != (Vj, Vi),该图称为有向图,这个时候,边称为弧,<Vi, Vj>当中Vi称为弧尾,Vj称为弧头
邻接点
无向图中,如果存在一条边(Vi, Vj),则顶点Vi和Vj互为邻接点
有向图中,如果存在一条弧<Vi, Vj>,可以认为是Vi邻接到Vj,Vj邻接自Vi,Vi和Vj互为邻接点
顶点的度、入度和出度
无向图中,与顶点V相连的边的个数,称为顶点的度,记做D(V)
有向图中,顶点V的度又分为出度和入度2个部分:
以顶点V为终点的弧的个数,称为V的入度,记做ID(V)
以顶点V为起点的弧的个数,称为V的出度,记做OD(V)
而D(V) = ID(V) + OD(V)
无论是有向图还是无向图,一个图的定点数n,边(弧)数e和每个顶点的度Di之间满足以下关系式:
边(弧)数e = 所有顶点度之和 / 2
完全图、稠密图和稀疏图
如果图G为无向图,任意两个顶点之间都有一条边,则G称为无向完全图
如果有一个有n个顶点的无向完全图,则它每个顶点的度数应该都=n-1,那么它的各个顶点度数之和应该是n*(n-1),它的边数应该就是n*(n-1)/2,这里其实就是一个组合问题
如果图G为有向图,任意两个顶点之间都有二条弧,则G称为有向完全图
有向完全图的弧数应该是n*(n-1),这里其实就是一个排列问题。
如果一个图的边数接近完全图,称之为稠密图
如果一个图的边数很少,称之为稀疏图
子图
现在有2个图 G=(V, E), G1=(V1, E1),如果V1是V的子集,E1是E的子集,则G1是G的子图。
路径、回路和路径长度
在无向图G当中,如果存在一个顶点序列{V1, V2, V3, V4, V5, V6},而(V1, V2), (V2, V3), (V3, V4), (V4, V5), (V5, V6)均为图G的边,那么这个顶点序列,称为V1到V6的路径,如果图G是有向的,则路径是有向的。
路径长度=路径当中边或者弧的个数
如果一个路径当中,不存在重复顶点,称为简单路径
如果一个路径当中,起点=终点,称为回路或环
除了起点和终点相同外,没有其他的重复顶点,称为简单回路或简单环
连通、连通分量和连通图、生成树
无向图G当中
如果顶点Vi到顶点Vj之间,至少有一条路径,则成Vi和Vj是连通的。
如果图中任意两个顶点都连通,称为连通图,否则,称为非连通图
非连通途中,任意一个极大连通子图,称为它的一个连通分量,
在连通图当中,连通分量只有一个,即其自身。而非连通图有多个连通分量。
在一个连通图当中,包含全部顶点的极小连通子图,称为该连通图的生成树。
强连通、强连通分量和强连通图
有向图G当中
2个顶点Vi和Vj,如果既存在从Vi到Vj的路径,也存在从Vj到Vi的路径,则成Vi和Vj之间是强连通的。
如果途中,任意两个顶点都是强连通的,则图G称为强连通图,否则称为非强连通图
在非强连通图中,任意一个极大强连通子图,称为它的一个强连通分量
任意一个强连通图只有一个强连通分量,即其自身,而非强连通图,有多个强连通分量。
权、带权图、有向网和无向网
在图当中,每一条边(弧)可以带一个数值,称为权
每条边都有权的无向图称为带权无向图,也成为无向网
每条弧都有权的有向图称为带权有向图,也成为有向网