各种数据结构的算法用途,总结

10 篇文章 0 订阅

各种数据结构的算法用途,总结

1.栈(Stack)

(1)深度优先搜索

(2)表达式求值

2.队列(Queue)

(1)宽度优先搜索

3.并查集

(1)维护无向图的连通性,支持判断两个点是否在同一连通块内,和判断增加一条边是否会产生环

(2)用在求解最小生成树的Kruskal算法里面

3、二叉堆

(1、)堆排序,建立一个堆,每次取出堆顶元素,然后删除堆顶元素,这样得到的序列是有序的

(2、)实现优先队列Priority_queue

4、伸展树

(1、)可以用来实现动态树

5、图的染色

(1、)给地图着色

(2、)数独可以被看作是对给定的图求一种9染色

6、深度优先遍历DFS

(1、)遍历隐式图,求一个可行解/所有解

7、广度优先遍历BFS

(1、)寻找无权图两点间最短距离

(2、)判断图是否为二分图

(3、)遍历隐式图,求解最优解/所有解

8、欧拉路

(1、)图的一笔画问题

9、最短路—Bellman-ford算法 单源最短路

(1、)带负权的最短路

(2、)求解差分约束

10、最短路—Dijkstra算法 单源最短路

(1、)非负权图的最短路径问题

(2、)构造最短路径树

11、最短路—Floyd(弗洛伊德)算法—原理(动态规划)多源最短路

(1、)判断是否有负环

(2、)求图的最小环

12、Prim算法(图——》树)

(1、)生成无向带权连通图的最小生成树

13、Kruskal算法(图——》树)

(1、)生成无向带权连通图的最小生成树

14、二分图*

(1、)求解二分图最大匹配,最大独立集、最小边覆盖

(2、)二分图也可以用来求解有向无环图G的最小路径覆盖:

建立一个新的二分图G’:将原图中的每一个点拆成一个入点A和一个出点A’,原图中的i->j的边变成i’->j’的边

在这个二分图中所求得的最大匹配满足等式:|最小路径覆盖(G)|=|V(G)|-|最大匹配(G’)|

15最大权匹配

(1、)用于求解一些最优化问题

16、稳定婚姻

(1、)求解一些最优分配问题

17、最大闭合子图

(1、)在实际应用中,闭合子图的性质恰好对应了事件之间的必然条件:一个事件必须在其需要的所有的前提都发生的情况下发生

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值