
Algorithms
文章平均质量分 56
iJuliet
这个作者很懒,什么都没留下…
展开
-
最小路径覆盖
给n个自然数,要求穿在尽量少的柱子上,条件是i+j是个完全平方数。这是二分图问题,X集合为1...n, Y集合也为1...n。那么如果该二分图的最大匹配数为m,则结果就是n-m.因为:路径覆盖中每个简单路径除最后一结点外都有唯一后继和它对应,因此匹配数就是非路径结尾的结点数。所以说匹配数最大,就是说非结尾点最多,由于总数为n,那么结尾数就最少喽,正好对应了柱子数啊!!!原创 2008-12-19 23:01:00 · 1035 阅读 · 0 评论 -
有道难题,决赛第一轮之“如何为实习生安排座位”
ü 问题描述:N排,每排M个座位,任何两个实习生座位不能水平、垂直或对角线相邻。输入:string intern[] intern[]的各元素拼起来得到一串以单个空格隔开的数字。总共N个数字,表示第i排坐了几个实习生。输出:满足条件的座次安排方案数。因总数可能过大,返回 方案总数%1000000007的结果。约束:1. M∈原创 2009-09-20 20:48:00 · 3595 阅读 · 0 评论 -
SIFT特征点匹配与消除错配:BBF,RANSAC
Step1: BBF算法,在KD-tree上找KNN。第一步做匹配咯~ 1. 什么是KD-tree(from wiki)K-Dimension tree,实际上是一棵平衡二叉树。一般的KD-tree构造过程:function kdtree (list of points pointList, int depth){ if pointList is原创 2009-08-21 21:49:00 · 38589 阅读 · 30 评论 -
AC 经典多模式匹配算法
今天说说多模式匹配AC算法(Aho and Corasick),感谢追风侠帮忙整理资料,while(1) {Juliet.say("3Q");}。前面学习了BM、Wu-Manber算法,WM由BM派生,不过AC与它们无染,是另外一种匹配思路。 1. 初识AC算法Step1: 将由patterns组成的集合(要同时匹配多个patterns嘛)原创 2009-05-23 15:27:00 · 21359 阅读 · 8 评论 -
Wu-Manber 经典多模式匹配算法
多模式匹配的用法,多了去了!DB中对selected patterns进行数挖;安全中对suspicious keyword进行匹配;各种日期形式2009-5-20,2009年5月20日,May,20的搜索;DNA配对;各种replace功能;等等,太口水了枚举这个。 Wu-Manber基于BM算法思想,如果您佬BM还没OK,请参照我的BM日志搞搞清楚先。 提原创 2009-05-21 14:56:00 · 22015 阅读 · 7 评论 -
Boyer-Moore 经典单模式匹配算法
O了O了!我现特想说:一个人Boyer-Moore都敢闹明白,他还有什么不敢的呢^_^ 经典单模式匹配算法:KMP、BM;经典多模式匹配算法:AC、Wu-Manber。貌似实用中,KMP跟C库strstr()效率相当,而BM能快上3x-5x。于是小女不才花了小天的功夫来研究这个BM算法。BM如何快速匹配模式?它怎么跳跃地?我今儿一定要把大家伙儿讲明白了,讲不明白您佬跟帖,我买单,包教包会。原创 2009-05-19 11:34:00 · 35590 阅读 · 41 评论 -
递归 递归 递归 —深入浅出
递归是种思想,不是算法。一个算法,你用递归去实现,它就是递归算法;你用循环去实现,它就是非递归算法。递归与循环一一对应,大多数编程语言都支持循环,但不一定支持递归。一个大问题,分解成类似的小问题,递归只用一句话就能描述这些“重复工作”,代码那叫一个简单!想想这句话的威力都觉得很牛B!递归算法简单而又经典的例子有:n!、Fibonacci、Hanoi、回溯、树遍历、图搜索。敲代码的时候,原创 2009-05-11 23:15:00 · 6648 阅读 · 2 评论 -
非规则计算中的局部性和并行性
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <! /* Styl原创 2009-04-09 12:28:00 · 3872 阅读 · 0 评论 -
CPU上0.0022S的九宫算法,GPU能更快么?
欢迎大家下载我上传的资源: (内附源码、详细代码注释、测试数据) 源码1:普通IDA*算法实现八数码源码2:变相IDA*算法实现八数码,这个我得好好说道说道。 一大清早地,跟电脑前发愣,突然想知道8/15数码的GPU速度会怎样,毕竟这可是搜索界的极品问题了。先跟网上狂搜一把,“2005年百度之星”的决赛题目,就这个九宫问题,且看冠军得主楼大牛如何在0.0022s的时间内搞定它(请原创 2009-03-17 23:01:00 · 2541 阅读 · 2 评论 -
Joseph—约瑟夫环 线性复杂度
说有n个要被处决的人(编号0~(n-1)),从0开始报数,报到(m-1)的会被杀掉,剩下的人继续从0开始报数,如此下去最后剩的一个人会存活下来。说Joseph发现了这个规律而且把他透露了出来,现在假如你在这n个人里面,你会选择几号位置站下。 很显然你会选择能活下来的那个位置,所以问题就是如何得到这个位置。 首先想到的是模拟(至少我笨脑子是这么想的),但无论是用链表还是用数组这个时间复杂度都原创 2008-12-19 23:33:00 · 1875 阅读 · 0 评论 -
从N到M中出现多少个1
1. f(n, m): N到M中出现多少个1。 2. g(x): 1到x中出现多少个1。则f(n, m) = g(m) - g(n - 1) 3. h(x, y): x在y位上出现多少个1。g(x) = h(x, 1) + h(x, 2) .... h(x, n) 每10个数会在个位出现1个1、每100个数会在十位出现10个1... sample input: 2 200 sample ou原创 2008-12-19 23:32:00 · 1190 阅读 · 0 评论 -
最小生成树 MST
1. Kruskal O(ElgV)思路:每个顶点是个集合,形成森林;边排序;每次取权最小的边u-v,若u.v不在同一集合,则Union()用到了最小堆/优先队列、并查集2. Prim O(ElgV)思路: 从一个结点u出发(u放进集合S中),找连出去的最短边u-v,找到后将v放进S,找所有S中结点连出去的最短边,直到所以结点归入集合S用到了最小原创 2008-12-19 23:06:00 · 1178 阅读 · 0 评论 -
有向图的极大强连通分量
1. 对有向图G进行DFS,记录时间戳Ai,形成森林W12. 将G中所有边反向形成G3.按时间戳由大到小对G进行DFS,形成新森林W2.由此,形成的每棵树都是一个极大强连通子图。原创 2008-12-19 23:04:00 · 1516 阅读 · 0 评论 -
0-1背包—DP、暴力、贪心
最简单地:v是空间,w是价值,要求总价值最大 dp[v] = max {dp[v-v[i]] + w[i]};//自顶向下; //自底向上 1. /********************************************************** 2. * 0-1背包问题原创 2008-12-19 23:34:00 · 3575 阅读 · 5 评论 -
整数划分
直接帖程序好像有点不厚道,偶的神哪,就让我不厚道这么一次吧: #include using namespace std; int q(int n,int m) //n划分的最大整数n1{ if(nif(n==1 || m==1) return 1; if(nif(n==m) return q(n,n-1)+1; return q(n,m-1)+q(n-m,m); } int q2(int原创 2008-12-19 23:41:00 · 2184 阅读 · 0 评论 -
谈谈SIFT、PCA-SIFT、SURF及我的一点思考
SIFT(Scale-invariant feature transform), Lowe, 2004PCA-SIFT(Principle Component Analysis), Y.ke, 2004SURF(Speeded Up Robust Features), Bay, 2006 这三位先后登场各有千秋,算是图像特征点检测领域的宋氏三姐妹了!SIFT鼻祖先宗大佬,PCA-S原创 2009-10-07 23:06:00 · 42581 阅读 · 19 评论