1. 图(多对多)
1.1 图的定义
- 图G由顶点集V和边集E组成,记为G=(V,E)
- E(G)表示图G中顶点之间的关系(边)集合,用|E|表示图G中边的条数(边)
- V(G)表示图G中顶点的有限非空集,用|V|表示图G中顶点的个数,也称为图G的阶(顶点)
- 图:强调顶点集合V要有穷非空
线性表中我们把数据元素叫元素,树中叫结点,图中则称为顶点
1.2 图的基本概念
- 无向图:无向边的有限集合,边是顶点的无序对,无序偶(v,w),(v,w)=(w,v)w,v互为邻接点
- 有向图:有向弧的有限集合,弧是顶点的有序对,有序偶<v,w>,v是弧尾,w是弧头,v邻接到w或w邻接自v
- 简单图:同一条边不同时出现,不存在顶点到自己的边
- 无向完全图:任意两个顶点之间都存在边 (n个顶点的无向完全图有n(n-1)/2条边)
- 有向完全图:任意两个顶点之间都存在方向相反的两条弧(n个顶点的有向完全图有 n(n-1)条边)
- 权和网:图中每条边或弧赋予一定意义的数值,这个数值叫做这条边的权,有权值得图称为带权图,也叫做网
- 子图:假设有两个图G1=(V1,E1)和G2=(V2,E2),如果 V 2 ⊆ V 1 , E 2 ⊆ E 1 则称G2为G1的子图(subgraph)
- 连通图:无向图中任意两个顶点都是连通的(n(n-1)/2条边)
- 连通分量:无向图中的极大连通子图
- 强连通图:有向图中任意两个顶点是连通的
- 强连通分量:有向图中的极大连通子图
- 连通图的生成树:它含有图中全部的n个顶点,但只有足以构成一颗树的n-1条边(反之错误,不一定是生成树)
2. 图的存储结构(前两种重要)
2.1 邻接矩阵(顺序存储 O n 2 )
一个一维数组存储图中的顶点信息,一个二维数组(邻接矩阵)存储图中的边或弧的信息
- 无向图的邻接矩阵是一个对称矩阵(0表示不存在边,1表示存在边)
- 判断两个顶点之间是否有边:获取两个点所代表的邻接矩阵位置上的值 0 or 1
- 判断某个顶点的度:其实就是这个顶点在邻接矩阵中第i行/列的’1’元素之和(无向图)
- 无向图邻接矩阵
- 有向图的入度对应列,出度对应行(有向图)
- 0代表自己到自己,无穷代表没有连线