导航

随笔分类 -  数据结构·算法

摘要:BloomFilter——大规模数据处理利器 Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。一. 实例 为了说明Bloom Filter存在的重要意义,举一个实例: 假设要你写一个网络蜘蛛(web crawler)。由于网络间的链接错综复杂,蜘蛛在网络间爬行很可能会形成“环”。为了避免形成“环”,就需要知道蜘蛛已经访问过那些URL。给一个URL,怎样知道蜘蛛是否已经访问过呢?稍微想想,就会有如下几种方案: 1. 将访问过的URL保存到数据库。 2. 用Has... 阅读全文

posted @ 2011-01-02 19:08 苍梧 阅读(75099) 评论(30) 推荐(28) 编辑

摘要:朋友手机装有数独游戏,开会报告等无聊的场合常拿来玩玩,游戏的算法似乎并不难,想想我也能做出来。今早闲的蛋疼,就写了个数独玩玩。记录如下:数独规则不知道的可以参考这里: http://baike.baidu.com/view/961.htm?fr=ala0_1 。游戏关键的算法就在于生成一个符合数独游戏规则的初始矩阵,首先想到的自然是号称万能解题法的“搜索+剪枝”了。1. 产生符合数独规则的初始矩阵第一行是随机生成的1~9的排列,第2到9行就要通过搜索来产生了。对于第2到9行的每一个空格,要从1到9逐个尝试放入,看同一列、同一行、同一个3×3的小方阵中是否出现过相同的数字,若没有就尝试 阅读全文

posted @ 2010-08-01 15:45 苍梧 阅读(24646) 评论(5) 推荐(8) 编辑

摘要:闲着无聊,编个连连看玩玩,用了魔兽里面的头像来做图片。下面记录如下: 程序的关键在于判断用户连续点击的两个图案能否消除。两个图片可以消除的条件有两个: 图片相同 图片间连线的转角数不得超过2 。 而判断能否通过小于两个转角的路径连通的算法有两种: 分类判断法 以转角数为标准的广度优先搜索 下面对两种算法分别讨论。 分类判断法 这里实质上是一种递归的思想,要判断图片A与图片B能否通过一条有N个转角的路径相连,可以转化为判断能否找到图片C,C与A能直线相连,且C与B能用一条有N-1个转角的路径相连。若这样的图片C存在,那么A与B就可以通过一条有N个转角的路径相连。 根据转角数... 阅读全文

posted @ 2010-06-06 00:18 苍梧 阅读(34474) 评论(26) 推荐(11) 编辑

摘要:最近申请加入学校的机器人足球实验室,被要求写一个hash_map容器类,接口与STL相似。键的数据类型为string,值类型可以为内置类型或自定义。myHashMap说明文档一、设计思想:1 哈希函数的设计: 将字符串按照“按位加权”,然后对哈希表大小取模将其映射到表中。2解决冲突:采用开链法,发生冲突时将其放到对应的链表中。3减少冲突:哈希表的大小取素数。 当元素个数/哈希表大小 > 0.75 时,扩大哈希表的大小,重建哈希表。二、接口: 接口基本按照STL map的标准,但没有实现迭代器。1 myHashNode * begin() const ;2 myHashNode * end 阅读全文

posted @ 2009-05-23 23:46 苍梧 阅读(2869) 评论(3) 推荐(2) 编辑