图的存储方式:
(1)邻接表
(2)邻接矩阵
选一种自己喜欢的结构去练所有的算法,面试的时候把给出的结构换成一直练的结构然后去做题。
推荐图的表达、模板(经常用的图的结构——支持所有的算法):
如何把用户给的数据转化成我们熟悉的结构?
例子:
图的算法:
1、图的遍历
(1)宽度优先遍历:
需要用到队列,同时利用哈希表来解决有环的情况,否则就进入了死循环一直走不出来
(2)深度优先遍历:
需要用到栈
2、拓扑排序
3、生成最小生成树
(1)K算法:从最小的边开始考虑,如果加上不形成环,可以加上,如果形成环,就不加上。先把每个节点单独放在一个集合,然后每加一条边就判断边的from和In在不在一个集合,如果不在就合并两个集合并且要这条边,在的话就直接不要这条边
(2)P算法:适用于无向图
(3)迪杰斯特拉算法:
优化加速后的迪杰斯特拉算法:用小根堆