1.1图的定义
上课讲过一大堆这里不再赘述,直接学习代码实现。
1.2图的存储
例图展示:
graph LR v1((v1))--4-->v2((v2)) v1((v1))--9-->v6((v6)) v3((v3))--19-->v2((v2)) v3((v3))--22-->v1((v1)) v4((v4))--17-->v3((v3)) v5((v5))--29-->v8((v8)) v6((v6))--12-->v1((v1)) v6((v6))--9-->v5((v5)) v6((v6))--4-->v7((v7)) v7((v7))--25-->v4((v4)) v8((v8))--7-->v7((v7)) v8((v8))--11-->v3((v3))
设n个点,m条边
上图的数据(按照 起点-终点-权值):
|
|
邻接矩阵
- 遍历效率低、不能存重边、初始化效率低
初始化O(n^2)时间,建图O(m)时间
、空间开销大O(n^2)
- 对于稀疏图来说大部分是INF,空间利用效率也不高
前向星
前向星涉及排序,所以其时间复杂度和排序算法有关,一般情况下时间复杂度为O(mlog m)
,空间上需要两个数组(记录边的边数组、记录各点在边数组中起始位置的head数组),空间复杂度为O(m+n)