图
概念
图(graph)是由一些点(vertex)和这些点之间的连线(edge)所组成的;其中,点通常称为 顶点(vertex) ,而点到点之间的连线通常称之为 边或者弧(edge) 。通常记为G=(V,E)。
权重:当边带有数字标签时,可以将这些数字称为 权重 ,并且说这个图是一个 加权图
路径:一个顶点到另一个顶点的边的序列
连通的图:图中的每一个顶点到其他的每一个顶点都有一条路径
完全的图:从每一个顶点到其他的每一个顶点都有一条边
分类
根据边是否有方向,图又分为 有向图 和 无向图
性质
N个节点的完全有向图边的数目:N*(N-1)
N个节点的完全无向图边的数目:N*(N-1)/ 2
表示方式
图有 邻接矩阵 和 邻接链表 两种表示方式
邻接矩阵
- 如果图中有顶点 i 到顶点 j 的一条边,则G[i] [j]= 1
- 如果边有权重,权重值可以占用矩阵单元格,没有边的单元格要用不在允许的权重值范围之内的一个值来表示
邻接表
- 图的邻接表是N个链表的一个数组
- 只有从 i 到 j 有一条边时,第i个链表才包含了顶点j的一个节点
- 当边有权重时,权重可以作为节点的一个数据字段
两种表示的分析
| | 相邻矩阵 | 邻接表 | | :----------------------------: | :------: | :--------------------: | | 判断两个给定点之间是否有一条边 | O(1) | 与列表长度成相信关系 | | 找出一个给定点的所有相邻节点 | O(N) | 取决于给定点的列表长度 | | 内存 | O(N^2) | N个指针的一个数组 | | 使用场景 | 稠密图 | 稀疏图 |