-
数据的逻辑结构:
- 集合:数据元素间除“同属于一个集合外”,无其它关系。
- 线性结构:一对一,如线性表,栈,队列。
- 树形结构:一对多,如树。
- 图形结构:多对多,如图。
- 集合:数据元素间除“同属于一个集合外”,无其它关系。
-
图: G=(V,E)。其中V代表顶点(数据元素)的有穷非空集合;E代表边的有穷集合。
- 无向图:每条边都是无方向的。
- 有向图:每条边都是有方向的。
- 无向图:每条边都是无方向的。
-
完全图: 任意两个点都有一条边相连。
n个顶点,无向完全图有Cn2=n(n−1)2C_n^2 = \frac{{n(n - 1)}}{2}Cn2=2n(n−1)条边,有向完全图有2Cn2=2n(n−1)2=n(n−1)2C_n^2 = 2\frac{{n(n - 1)}}{2} = n(n - 1)2Cn2=22n(n−1)=n(n−1)条边。 -
稀疏图:有很少边或弧的图(e<nlogne < n\log ne<nlogn)。
-
稠密图:有较多边或弧的图。
-
网:边或弧带权的图。
-
邻接:有边/弧相连的两个顶点之间的关系。
存在(vi,vj)({v_i},{v_j})(vi,vj),则称viv_ivi和vjv_jvj互为邻接点。
存在<vi,vj>< {v_i},{v_j} ><vi,vj>,则称viv_ivi邻接到vjv_jvj,vjv_jvj邻接于viv_ivi。 -
关联(依附):边/弧与顶点之间的关系。
存在(vi,vj)/<vi,vj>({v_i},{v_j})/< {v_i},{v_j} >(vi,vj)/<vi,vj>,则称改边/弧关联于viv_ivi和vjv_jvj。 -
顶点的度:与该顶点相关联的边的数目,记为TD(v)。在有向图中,顶点的度等于该顶点的入度与出度之和。
- 顶点v的入度:以v为终点的有向边的条数,记作ID(v)。
- 顶点v的出度:以v为始点的有向边的条数,记作OD(v)。
-
当有向图中仅有1个点的入度为0,其余顶点的入度均为1,则这是一棵有向树。
-
路径:接续的边构成的顶点序列。
-
路径长度:路径上边或弧的数目/权值之和。
-
回路(环):第一个顶点和最后一个顶点相同的一条路径。
-
简单路径:除路径起点和终点可以相同外,其余顶点军部相同的路径。
-
连通图(强连通图):在无(有)向图G=(v,{E})中,若对任何两个顶点v、u都存在从v到u的路径,则称G是连通图(强连通图)。
-
权与网:图中边或弧所具有的相关数称为权。表明从一个顶点到另一个顶点的距离或耗费。带权的图称为网。
-
子图:设有两个图G=(V,{E})、G1=(V1,{E1}),若V1⊆V,E1⊆EV1 \subseteq V,E1 \subseteq EV1⊆V,E1⊆E,则称G1是G的子图。
-
连通分量(强连通分量)
- 无向图G的极大连通子图称为G的连通分量。
极大连通子图:该子图是G的连通子图,将G中的任何不在该子图中的顶点加入,子图不再连通。 - 有向图G的极大强连通子图称为G的强连通分量。
极大强连通子图:该子图是G的强连通子图,将G中的任何不在该子图中的顶点加入,子图不再强连通。
- 无向图G的极大连通子图称为G的连通分量。
-
极小连通分量:该子图是G的连通子图,在该子图中删除任何一条边,该子图不再连通。
-
生成树:包含无向图G的所有顶点的极小连通子图。
-
生成森林:对非连通图,由各个连通分量的生成树的集合。
-
图的抽象类型定义:
ADT Graph
{
数据对象V: 具有相同特性的数据元素的集合,称为顶点集。
数据关系R:R={VR}VR={<v,w>∣<w,v>∣v,w∈V,p(v,w),<v,w>表示从v到w的弧,p(v,w)定义了弧<v,w>的信息}R=\{VR\}\\VR=\{<v,w>|<w,v>|v,w\in V,p(v,w) ,<v,w>表示从v到w的弧,p(v,w)定义了弧<v,w>的信息\}R={VR}VR={<v,w>∣<w,v>∣v,w∈V,p(v,w),<v,w>表示从v到w的弧,p(v,w)定义了弧<v,w>的信息}
基本操作P: 有图的创建,求顶点v的值等操作。
}ADT Graph
数据结构之图(一)——图的相关概念和术语
