数据结构 图

基本概念

  • 简单路径: 除了第一个和最后一节点之外,路径中其他定点均不相同的路径。
  • 邻接矩阵: A(i,j) 代表存在从点 i 到点 j 的边。 无向图的邻接矩阵是对称矩阵。

图的遍历

  • 广度优先 BFS
  • 深度优先 DFS

拓扑排序

在这里插入图片描述
不断将入度为 0 的点输出到 theOrder中,
当一个点被输出时,其邻接到的点的入度相应 -1.

单源点最短路问题

Dijkstra 算法

  • 按照路径长度递增顺序产生最短路

  • 在目前已经产生的每条最短路径中,考虑加入一条边到达未产生最短路径的目的顶点,再从这些新路径中选择最短的。

  • 简单复杂度 O(n2)

  • 优化后O((n+m) log n)

最小生成树

Kruskal 算法

  • 按照边权大小,从小到大顺序来考虑边
  • 当考虑某条时,若将其加入到已选边集中会出现环路,则将其抛弃,否则将他选入。

在这里插入图片描述

  • 时间复杂性: O(n + eloge)

Prim 算法

每次从可达的,且不会构成环的边中选择代价最小的边。
在这里插入图片描述

Floyd 算法

求所有顶点对之间的最短路
c ( i , j , k ) c(i,j,k) c(i,j,k) :从 i 到 j, 中间定点曲子集合{1, 2, …,k}的最短路长度

c ( i , j , k ) = m i n { c ( i , j , k ) , c ( i , k , k − 1 ) + c ( k , j , k − 1 ) } c(i,j,k) = min \{c(i,j,k), c(i,k,k-1)+c(k,j,k-1)\} c(i,j,k)=min{c(i,j,k),c(i,k,k1)+c(k,j,k1)}

  • 时间复杂度 O(n3)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值