- 博客(6)
- 收藏
- 关注
原创 K短路及其模板(A*+Dijkstra)
阅读之前,先声明,您不需要对于A*算法多么深入的理解,事实上这对您对于K短路的理解帮助并不很大。当然,若果您对于A*已经有了自己独到见解,也是很好的。A*用非专业的语言来说,A*就是一个将最好的选择,送上你面前的算法。打个比方,您在一个叉路口,面前有几条路。A*做的,便是告诉您哪一条路是您最好的选择。有一个这样的估价函数 F = G + H您可以简单的理解为F为您选择道路的标准,G是
2016-10-17 21:35:58
1488
原创 KM算法(二分图完备匹配下的最大权匹配)
阅读本文之前,首先假设您已经理解匈牙利算法,如果不理解友链在这=>我是匈牙利算法<=有时间会将匈牙利算法的博客补上的。KM算法KM算法求的是二分图完备匹配下的最大权匹配。在二分图中,x点集中的所有点都有对应的匹配 且 y 点集中所有的点都有对应的匹配,则称该匹配为完备匹配。但是完备匹配可能不止一种,KM算法就是为了求出,其中边权和最大的一组。KM算法的思路非常简单,核心可以看做这一句:从最大权的匹配
2016-10-17 21:02:12
1260
1
原创 无向图的最小割问题
再不写博客我就要忘光了= =一个无向连通网络,去掉一个边集可以使其变成两个连通分量则这个边集就是割集。而最小割集是其中权值和最小的割集。网络流说起最小割,最为朴素的算法大约是从网络流入手,枚举汇点,比较所得到的最大流(最大流=最小割),其中最小的就是我们所求的答案。 但是显然这样算是非常非常慢的,进行了很多次重复而毫无意义的计算。即便可以求出正确答案,但效率低下等于没求,复杂度不小于O(n^4)。
2016-10-17 20:25:27
1305
原创 树状数组( 单点修改/区间修改+区间求和+一维/二维)
树状数组(Binary Indexed Tree(BIT), Fenwick Tree)是一个查询和修改复杂度都为log(n)的数据结构。主要用于查询任意两位之间的所有元素之和,但是每次只能修改一个元素的值;经过简单修改可以在log(n)的复杂度下进行范围修改,但是这时只能查询其中一个元素的值。首先照例附上树状数组的百度百科解释。实际上,经过“简单修改”可以做到区间修改与区间求和。树状数组,在你写线
2016-09-06 20:37:44
834
原创 LCA在线算法
LCA(Least Common Ancestors),即最近公共祖先。对于有根树T的两个结点u、v,最近公共祖先LCA(T,u,v)表示一个结点x,满足x是u、v的祖先且x的深度尽可能大。 求LCA的算法有很多种,分为在线和离线。离线算法一般有tarjan,在线算法则是树上倍增与rmq。这里主要讲下在线算法吧:-)经过“肉眼扫描算法”,我们可以很快的得出4和6的最近公共祖先是1。倍增对于两
2016-08-18 16:35:59
908
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人