数据结构最短路径例题_算法与数据结构基础 - 图(Graph)

62be91c629c5bc26305fe235dddba0f5.png

图基础

图(Graph)应用广泛,程序中可用邻接表和邻接矩阵表示图。依据不同维度,图可以分为有向图/无向图、有权图/无权图、连通图/非连通图、循环图/非循环图,有向图中的顶点具有入度/出度的概念。

面对图相关问题,第一步是将问题转为用图表示(邻接表/邻接矩阵),二是使用图相关算法求解。

相关LeetCode题:

997. Find the Town Judge 题解

1042. Flower Planting With No Adjacent 题解

图的遍历(DFS/BFS)

图的遍历/搜索可使用DFS或BFS方法。DFS方法 可视化过程,BFS方法 可视化过程

相关LeetCode题:

332. Reconstruct Itinerary 题解

785. Is Graph Bipartite? 题解

802. Find Eventual Safe States 题解

1059. All Paths from Source Lead to Destination 题解

133. Clone Graph 题解

关于BFS,详见:算法与数据结构基础 - 广度优先搜索(BFS)

最短路径问题

BFS另可用于求解无权图的最短路径问题,相关LeetCode题:

1162. As Far from Land as Possible 题解

310. Minimum Height Trees 题解

854. K-Similar Strings 题解

对于有权图的单源最短路径问题,Dijkstra算法用于无负权边的问题求解 可视化过程,Bellman-Ford算法支持判断有无负权回路、若有则不存在最短路径。Floyd-Warshall是求解多源、无负权边的最短路径问题的算法 可视化过程

相关LeetCode题:

1129. Shortest Path with Alternating Colors 题解

928. Minimize Malware Spread II 题解

743. Network Delay Time 题解

787. Cheapest Flights Within K Stops 题解

399. Evaluate Division 题解

最小生成树

假设有权图中有这样一棵树,满足图任意两个顶点之间可达、并且这棵树所有边的权值之和最小。这样的树称之为图的最小生成树(MST,Minimum spanning tree)。求最小生成树有重要的现实应用,例如求城市之间航班的安排、使得整体成本最小。

求最小生成树的算法,有 Kruska算法 可视化过程 和 Prim算法 可视化过程

相关LeetCode题:

1168. Optimize Water Distribution in a Village 题解

1135. Connecting Cities With Minimum Cost 题解

图与并查集

如果需要求解图的某两个顶点是否连通、图分成多少非连通部分,这时可以用并查集(Union Find/Disjoint Set),并查集方法 可视化过程

相关LeetCode题:

684. Redundant Connection 题解

323. Number of Connected Components in an Undirected Graph 题解

839. Similar String Groups 题解

更多关于Union Find,详见:算法与数据结构基础 - 合并查找(Union Find)

图与拓扑排序

有这样一类问题:节点之间存在依赖关系,求按依赖关系排列节点,这类问题可以转换为有向无环图(DAG)、使用拓扑排序(Topological Sort)求解。

相关LeetCode题:

207. Course Schedule 题解

210. Course Schedule II 题解

444. Sequence Reconstruction 题解

1136. Parallel Courses 题解

269. Alien Dictionary 题解

更多关于拓扑排序,详见:算法与数据结构基础 - 拓扑排序(Topological Sort)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值