[算法下] 1.图论算法

  1. 有向、无向
  2. 有权、无权

邻接矩阵

  1. 本质是二维数组 arr.cpp
  2. 优点:判断两点相连快 \ 缺点:稀疏图浪费空间,求一点的度要遍历一行
  3. floyd算法 floyd.cpp
    1.时间复杂度O(n3),处理数据规模小的问题
    2. 核心公式 j --> k ( i 作为中转点)
    3. 求任意点到任意点的最短路,无负边

邻接表

  1. 本质是二维数组,对临界矩阵的“空边”进行压缩
  2. 有权图的数组元素是node,用vector实现节省内存
  3. 优点:省空间,求某点的度不需要遍历所有点(邻接矩阵的缺点) \ 缺点:判断两点相连要遍历一行
  4. dijkstra算法 dijkstra.cpp -> 746.cpp
    1. 求单源到任意点的最短路,无负边
    2. 从起点出发到几个终点的权值,弹出起点,确定当前最小边的点(其他路径中转了非负边,更大),从新点出发遍历增加新的状态后再选择最优,直到弹出所有点,是贪心

链式前向星

  1. 本质是用数组模仿静态链表,head[ i ]记录以 i 为起点的第一条边(实际是最后一条边)的下标,edg[ head[ i ] ]中{e, v, next}的e为终点,v为权值,next为同起点的下(实际上是上)一条边的编号
  2. 邻接多重表类似
  3. 插入:像链表的头插法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值