python数据结构-图

图是一种数据间具有多对多关系的非线性数据结构
顶点的度:指与该顶点关联的边的数目
全部顶点的度之和为边数的两倍
图的存储有邻接矩阵,邻接表,十字链表

邻接矩阵

边采用顺序存储结构,用二维数组存储

邻接表

采用链式存储结构,存储行的后继,即矩阵行的单链表

十字链表

图的邻接多重表:采用链式存储结构,存放行和列的后继

图的广度优先算法

从某一个顶点开始,一次性访问他的邻接点,直到访问结束

  1. 利用栈实现
  2. 从源节点开始把节点按照深度放入栈,然后弹出
  3. 每弹出一个点,把该节点下一个没有进过栈的邻接点放入栈
  4. 直到栈变空

图的深度优先算法

从某一个顶点开始,一次访问一个顶点,直到访问结束

  1. 利用队列实现
  2. 从源节点开始依次按照深度进队列,然后弹出
  3. 每弹出一个点,把该节点所有没有进过队列的邻接点放入队列
  4. 直到队列变空

最小生成树

kruskal算法

依次找出权值最小的边建立最小生成树,每次新增的边不能使生成树产生回路,直到找到n-1条边
kruskal算法的执行时间主要取决于图的边数,时间复杂度为O(n^2),适用于稀疏图的操作

Prim算法

最短路径

拓扑排序和关键路径

参考资料
《数据结构(Python版)》作者:吕云翔、郭颖美、孟爻

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值