-
无向图,和有向图差别不大,所有的边都成对
-
表达方式
- 邻接表
- 大致上是以点集为单位,与点直接相邻的点写在后面
- 邻接矩阵
- 一定是一个正方形的矩阵
- 大致上是以边为单位,每个可能的边,不管是否有,都在矩阵中
- 自己到自己是0,没有边是无穷
- 某一些特殊的图可能可以用数组来表示
- 邻接表
-
图上的算法是有限的,但是可能会突然变换图的表达方式
-
建议是用自己最喜欢的图结构实现所有的算法,作为模板,遇到题目时编写接口,将新的图结构转换为喜欢的图结构
-
一个推荐的图结构
-
一个点集,一张哈希表,key表示点编号,Node表示点结构
-
一个边集,一个hash set
-
点的描述,Node
- 值value编号,通常可以等于哈希表中的key
- 入度in
- 出度out
- nexts,从他发散出去的边,直接相邻的点有哪些,放在链表< Node >中
- edges,所有相邻的边
-
边的描述,Edge
- 无向边就是两个有向边组合
- weght权重
- from来自
- to到达
-
使用时只需要编写函数create graph,之后套用算法
- 通常来说,先创建点,会预留下两个空列表,入度,出度初始化为0
- 然后创建边
- 然后更新from点nexts
- 然后更新入度,出度
- 更新两个点的edges
-
算法系列15.1——图类题目通用数据结构
最新推荐文章于 2024-05-30 20:15:33 发布