随笔分类 -  Algorithm

一致性hash算法
摘要:一致性hash算法(consistent hashing)consistent hashing算法早在1997年就在论文Consistent hashing and random trees中被提出,目前在cache系统中应用越来越广泛;1基本场景比如你有N个cache服务器(后面简称cache),那么如何将一个对象object映射到N个cache上呢,你很可能会采用类似下面的通用方法计算object的hash值,然后均匀的映射到到N个cache;hash(object)%N一切都运行正常,再考虑如下的两种情况;1 一个cache服务器m down掉了(在实际应用中必须要考虑这种情况),这样所 阅读全文

posted @ 2013-10-01 16:22 liangzh123 阅读(242) 评论(0) 推荐(0)

动态规划笔试题
摘要:1、最长公共子序列、最长公共子串最长公共子序列(Longest-Common-Subsequence,LCS)dp[i][j]:dp[i][j]表示长度分别为i和j的序列X和序列Y构成的LCS的长度 dp[i][j] = 0,如果i=0 或 j=0 dp[i][j] = dp[i-1][j-1] + 1,如果 X[i-1] = Y[i-1] dp[i][j] = max{ dp[i-1][j], dp[i][j-1] },如果 X[i-1] != Y[i-1] LCS长度为 dp[Xlen][Ylen]View Code int dp[100][100]; // 存储LCS长度, 下标i,j. 阅读全文

posted @ 2013-05-24 19:50 liangzh123 阅读(359) 评论(0) 推荐(0)

KMP算法
摘要:A="abababaababacb",B="ababacb",我们来看看KMP是怎么工作的。我们用两个指针i和j分别表示,A[i-j+ 1..i]与B[1..j]完全相等。也就是说,i是不断增加的,随着i的增加j相应地变化,且j满足以A[i]结尾的长度为j的字符串正好匹配B串的前 j个字符(j当然越大越好),现在需要检验A[i+1]和B[j+1]的关系。当A[i+1]=B[j+1]时,i和j各加一;什么时候j=m了,我们就说B是A的子串(B串已经整完了),并且可以根据这时的i值算出匹配的位置。当A[i+1]<>B[j+1],KMP的策略是调整 阅读全文

posted @ 2013-05-24 19:47 liangzh123 阅读(157) 评论(0) 推荐(0)

(转)Nim游戏
摘要:Nim游戏的概述:还记得这个游戏吗? 给出n列珍珠,两人轮流取珍珠,每次在某一列中取至少1颗珍珠,但不能在两列中取。最后拿光珍珠的人输。 后来,在一份资料上看到,这种游戏称为“拈(Nim)”。据说,它源自中国,经由被贩卖到美洲的奴工们外传。辛苦的工人们,在工作闲暇之余,用石头玩游戏以排遣寂寞。后来流传到高级人士,则用便士(Pennies),在酒吧柜台上玩。 最有名的玩法,是把十二枚便士放成3、4、5三列,拿光铜板的人赢。后来,大家发现,先取的人只要在3那列里取走2枚,变成了1、4、5,就能稳操胜券了,游戏也就变得无趣了。于是大家就增加列数,增加铜板的数量,这样就让人们有了毫无规律的感觉,不易于 阅读全文

posted @ 2013-03-27 16:47 liangzh123 阅读(313) 评论(0) 推荐(0)

遗传算法
摘要:这是个真实的故事。从前在海岸边有一群扇贝在悠哉游哉地生活繁衍着。它们自然是衣食不愁,连房子也有了着落。它们担忧的只有一件事:每隔一段时间,总有一个人来挖走它们之中的一部分。当然啦,挖回去干什么这大家都知道。但扇贝们不知道的是,这人的家族图腾是Firefox的图标,所以他总是选择那些贝壳花纹长得比较不像Firefox图标的扇贝。这种状况持续了好几十万代。大家应该也猜到扇贝们身上发生什么事情了:它们的贝壳上都印着很像Firefox图标的图案。可能有些读者会说:你这不是糊弄我们么,Firefox才有多少年历史,你就搞了个几十万代的扇贝?确有其事,但是这些扇贝不是真实的,它们在我电脑的内存里边生活。它 阅读全文

posted @ 2012-09-20 10:19 liangzh123 阅读(1000) 评论(1) 推荐(0)

导航