基础图论备课-updating / break

图的相关概念

1、有点有边

2、有向图、无向图、成环

3、完全图、稀疏图、稠密图

4、连通图 - > 生成树  //

5、度、出度、入度

存图

声明n个点,m条边

1、邻接矩阵

时间复杂度、空间复杂度O(n^2)

G[i][j]:从i点到j点的边权

初始化

O(1)查询两点是否有边

遍历、初始化之类的效率都低,二维数组很容易爆

2、邻接表

前向星

以存储边的方式来存储图,把边集数组中的每一条边按照起点从小到大排序,如果起点相同就按照终点从小到大排序,

并记录下以某个点为起点的所有边在数组中的起始位置和存储长度。

3、链式前向星

拓扑排序

O(m+n)

有向无环图  (可以用来判断有向无环图

拓扑序

拓扑排序:判断是否存在拓扑序,并求出拓扑序的过程。

一般例子有先修课

入度为零

从有向图中选取一个入度为0的顶点输出,再从中删去此顶点以及所有以它为尾的弧。借助队列。

将所有入度为0的点扔到队列。

while(队列非空)

{

取队首P

访问队首的所有相邻点Q 并将其入度减一

若Q此时的入度为0 Q入列
}

最短路 

djkstra

O(n^2)

单源最短路,只能是正边权,贪心

①选定一个点 

   a. 未被选过

   b. 距离最短 (贪心)

②对于这个点的所有邻接点去尝试松弛

堆优化的djkstra

bellman-ford

O(n*m)

单源最短路,不能有负权环,但可以有负边权

spfa

最好O(m),最坏O(n*m)

队列优化的bellman-ford,可以存在负环

floyd

O(n^3)

dp思想

最小生成树

1、prim

O(n*n+m) 稠密图

加点法

2、kruskal

O(m*log(m)) 稀疏图

加边法

结合并查集

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值