算法
迈克尔摩峰
这个作者很懒,什么都没留下…
展开
-
Ackermann函数
Ackermann函数——数学史上和计算机史上的一个经典递归函数,表达式:A(m,n) = n+1 when m=0; = A(m-1,1) when n=0; = A(m-1,A(m,n-1)) otherwise.原创 2014-03-02 15:18:08 · 2511 阅读 · 0 评论 -
merkle tree
test原创 2014-04-09 12:08:31 · 1427 阅读 · 0 评论 -
M*N矩阵顺时针旋转90度
问题:如下的4*3矩阵A1:原创 2014-06-19 15:00:43 · 8247 阅读 · 0 评论 -
BLS签名
记e: G*G->G’,为一个非退化的双线性映射,G和G’为素数r阶的乘法群,生成元为g。根据双线性映射的性质,e(g1^x, g2^y)=e(g1,g2)^(x*y)。要求在G上,CDH problem是困难的。BLS签名的三个函数KeyGen:选取[0, r-1]内的一个随机整数x,作为私钥sk;g^x作为公钥pk。由于CDH问题是困难的,我们相信DL问题也是困难的(虽然这一点还没有证转载 2014-10-22 11:18:29 · 6223 阅读 · 0 评论 -
选择第K小或前K小元素
问题描述从长度为n的整型数组x中选择第k小元素。解决方法方法一对数组排序,然后得到第K小元素。思想简单,容易实现;但进行了许多没必要的交换操作,时间复杂度O(nlogn)。具体实现如下:/** * 快速排序后,选出第K小元素 * @param x 长度为n+1的整型数组,x[0]不用 * @param K 1<=K<=n * @return原创 2015-04-11 13:29:50 · 1355 阅读 · 1 评论 -
采样问题
问题描述从0~n-1中随机选取m(m < n)个不同整数,且使m个整数有序输出。已知条件bigRand()产生一个远大于m和n的正整数;randInt(int i,int j)产生一个[i,j]的随机数;sort(int []a,int lo,int hi)对a中指定范围内数据排序解决方法【Knuth的S算法】从r个剩余元素中选择s个元素,以s/r的概率选择下一个。 /**原创 2015-04-08 11:06:08 · 854 阅读 · 1 评论