算法
文章平均质量分 81
谢潇雨
视觉SLAM,SFM等
展开
-
最小生成树算法——Kruskal算法Java实现
闲来无事,写个算法,最小生成树的Kruskal算法,相对比Prim算法实现起来麻烦一点点package trees;import java.util.HashMap;import java.util.HashSet;import java.util.Map;import java.util.PriorityQueue;import java.util.Set;/** * 最小生成树原创 2013-04-18 21:00:03 · 4826 阅读 · 1 评论 -
图的匹配问题与最大流问题(六)——匈牙利算法一种简洁实现
接着这个系列,前几个又重新写匈牙利算法时,发现了一种更为简洁的实现方式,和上一篇文章相比http://blog.csdn.net/smartxxyx/article/details/9672181,这个算法更为简洁,也好理解。和维基百科上介绍的算法思路是一致的。原创 2014-05-05 14:21:54 · 4002 阅读 · 0 评论 -
TopCoder——Lottery(买彩票问题)
简单来说,题目就是问给N个可选数字,M个空白,在有些一限制的情况下(是否允许重复,是否要求有序)共有多少种组合方式?原创 2014-04-04 14:19:50 · 1601 阅读 · 1 评论 -
poj3436-ACM Computer Factory
这题的关键在于建图,然后最大流算法,而建图的关键在于拆点。将每个点拆为两个点,两点之间的流为performance。和其他点相连的边容量为INF。原创 2014-05-22 12:40:05 · 1850 阅读 · 0 评论 -
poj3252-Round Number 组合数学
思路基本上就是组合计数,唯一特别需要注意的是在计算组合数的时候很容易越界,虽然上面分析了计算结果在int范围内是没有问题的,但是计算组合数中间过程还是很可能越界,所以这里要特别注意。解决方法是利用C(n,m)=C(n-1,m-1)+C(n-1,m)进行递归计算,而不是使用传统的乘法计算方式。为了更有效率一点,可以事先计算好n=1~32,m=1~32的组合数的结果然后存起来。原创 2014-06-28 10:56:18 · 1951 阅读 · 0 评论 -
图的匹配问题与最大流问题(三)——最大流问题Ford-Fulkerson方法Java实现
上篇文章主要介绍了Ford-Fulkerson方法的理论基础,本篇给出一种Java的实现。改写一下,原来的太冗余了。原创 2013-07-10 18:52:46 · 10131 阅读 · 10 评论 -
求一个树的最长路径
树的最长路径指的是树上两个节点的最大距离。转载 2014-10-28 21:58:00 · 1232 阅读 · 0 评论 -
对链表排序,时间开销O(nlogn), 空间开销O(1)
Sort a linked list in O(n log n) time using constant space complexity.原创 2014-11-26 15:19:40 · 3249 阅读 · 1 评论 -
二叉树最近公共祖先问题(O(n) time 且只遍历一遍,O(1) Space (不考虑函数调用栈的空间))
Tarjan算法很精妙,但是使用了并查集,需要额外O(n)的存储空间。上面博客中给的第三个方法也是需要记录根到节点的路径,需要O(log n)空间,当然考虑到一般情况下我们遍历树都是递归的方式,所以本身方法调用栈就是O(log n)空间占用率。 但是这是对于平衡的二叉树而言的,在最差情况下空间占用率还是O(n)。所以,这里我给的算法不需要记录根到节点的路径,而且仅仅遍历树一遍就可以完成。原创 2015-04-02 11:00:37 · 6525 阅读 · 0 评论 -
poj-1635 Subway tree systems(判断两个有根树是否同构)-哈希法
求两个有根树是否同构,这个如果暴力法枚举的话,复杂度是O(N^2),一中经典的做法是哈希,思想就是使得不同结构的树哈希值不同,而同构的树哈希值相同。我这个也是参考别人写的,不同的是我先把01串转换为了树状结构表示,然后再递归求哈希值,这样好理解一点。原创 2014-04-18 09:01:21 · 5460 阅读 · 0 评论 -
TopCoder——HillHiker(爬山问题)
Problem Statement A hiker has set out to conquer a hill. The trail guide for the hill lists information known about the hill. First, it lists how tall the hill is, and how far it is to the othe原创 2014-04-02 19:20:18 · 1165 阅读 · 0 评论 -
计算任意一个图生成树的个数——Kirchhoff 的Matrix Tree 方法Java实现
计算任意一个图的生成树的个数,是Kirchhoff提出的理论,通常称为Matrix Tree Theorem,原理很简单:Let G be a graph with V(G)={v1,v2,...,vn},let A={aij}be the adjacentcy matrix of G,and let C={cij}be the n*n matrix, where cij=deg vi if原创 2013-04-19 10:07:08 · 4600 阅读 · 0 评论 -
算法之强连通分支
深度优先搜索有一种经典的应用:把一个有向图分解为各强连通分支。很多有关有向图的算法都是从这种步骤开始的。(算法导论P338,觉得简洁而精妙,分享下)STRONGLY-CONNECTED-COMPONENTS(G)1 call DFS(G) to compute finishing times f[u] for each vertex u2 compute GT 3 cal原创 2012-08-20 20:27:27 · 2926 阅读 · 1 评论 -
图的匹配问题与最大流问题(一)
准备写个系列,关于图的匹配,最大流,线性规划等这些图论中的重要而且有着千丝万缕连续的问题,顺便介绍求图的最大匹配问题的著名的匈牙利算法。算是对前段时间学习的一个小结吧。(对内容进行了部分修改,原来使用Word编辑的公式这里无法显示,只能截图了)原创 2013-07-08 21:06:16 · 25303 阅读 · 0 评论 -
图的匹配问题与最大流问题(五)——计算二分图的最大匹配
介绍二分图最大匹配的解法,一是最大流算法来计算,二是匈牙利算法来计算,最后Java实现。原创 2013-07-31 20:38:07 · 19163 阅读 · 1 评论 -
图的匹配问题与最大流问题(四)——计算图的边连通度和点连通度
前三篇文章内容,(一)讲述了基础概念;(二)介绍了最大流算法的实现原理以及证明;(三)用Java语言予以了实现。这里,我们讲述如何利用最大流算法来求图的点连通度和边连通度,有图有代码,呵呵原创 2013-07-25 15:22:56 · 17707 阅读 · 1 评论 -
图的匹配问题与最大流问题(二)——最大流问题Ford-Fulkerson方法
本篇承接上一篇文章,主要讲解最大流问题的Ford-Fulkerson解法。可是说这是一种方法,而不是算法,因为它包含具有不同运行时间的几种实现。该方法依赖于三种重要思想:残留网络,增广路径和割。本文将会详细介绍这些内容,下一篇文章我们提供一种该方法的Java实现。原创 2013-07-10 18:22:31 · 60363 阅读 · 2 评论 -
C语言位域-编程之美之中国将帅问题
这里是看到了编程之美将帅问题的最后一个解法,觉得这个虽然不如第二个解法巧妙,但是更加简洁直白,其中就是因为使用了C语言位域。所以这里我也查了相关知识,发现一篇博客对位域的介绍非常好,这里转载一下。首先说下将帅问题:这道题如果没有限制是很简单的,程序框架大致就是:遍历A的位置遍历B的位置判断A、B的位置组合是否满足要求如果满足,则输出。在文中,采用了用1~9的数字转载 2013-12-13 18:20:56 · 1074 阅读 · 0 评论 -
编程之美热身赛——树上三角形(解决RE Runtime Error)
这个题昨天做的时候总是报RE,也就是运行时错误Runtime Error,原因是它那个测试系统不允许创建多个类,即使是内部类也不行,办法就是改写成数组形式表示。思路:1、读取数据,建立图2、广度优先遍历,找到目的点。这个过程找到的肯定是最短路,因为这是一棵树,两点之间只有一条通路(不重复的情况下)。遍历过程中保存每个点遍历的时候的父亲节点,这样就能够知道走过了哪些节点。3、遍历任意三条边的组合是否能够组成三角形。原创 2014-04-08 19:14:42 · 1444 阅读 · 0 评论 -
将矩阵中值为0的元素所在的行和列设置为0, in-place O(1)space O(mn) time
将矩阵中值为0的元素所在的行和列设置为0, in-place O(1)space O(mn) time使用O(m+n)space 的方案比较容易想到原创 2015-04-09 20:05:48 · 2446 阅读 · 0 评论