摘要: 位运算神马的,最给力了,当你的复杂度优化到不能再优的时候,你还可以考虑位运算,把本来小时级别的运算提高到秒级别。比如6400个bool值向量,你要窜位比较相似度O(n^2)复杂度不能再优化的情况下,需要6400*6400=4千万次比较,如果变成Ulong 64位的,每次O(1)比较64位,就可以把复杂度压缩到O(n^2/64/64),时间压缩4000倍!本来小时级别的运算提高到秒级别。参考我另外一个文章,位运算技巧总结:http://blog.csdn.net/superdullwolf/archive/2009/10/10/4649080.aspx下面是C#的一些实验。using Syste 阅读全文
posted @ 2011-06-23 11:55 CSDN大笨狼 阅读(602) 评论(0) 推荐(0) 编辑
摘要: 现代战争,发现就是毁灭,排除故障,优化性能也是一样,只要能找到问题在哪里,基本上成功90%了。毁灭恒久远,发现永流传。。。1,发现本拉登,难度90%2,毁灭之,难度10%1,警察搜集证据,难度90%2,抓捕嫌疑犯,难度10%我们学习和提高的要点也在于:发现自己的问题在哪里,解决的办法就有了。把有限的精力,放在重要的事情上。先做个分析日志的工具先。using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System. 阅读全文
posted @ 2011-06-16 21:41 CSDN大笨狼 阅读(668) 评论(1) 推荐(1) 编辑
摘要: 随便写的,速度可能不是最优,但是已经是O(n)了。实际使用时候可能受其他设备和程序输出速度限制,这里是模拟的数据。思路是保持前K大有序,然后插入时候判断,非大不插,并且插入的时候是二分查找位置,弹出最后一个。以后有空再研究下最大堆的插入和维持,这个先放这里放着吧。因为N*(LogK+C)还是常数*N,所以认为复杂度依然是O(N).using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Diagnostics;namespace ConsoleApplicatio 阅读全文
posted @ 2011-04-26 09:29 CSDN大笨狼 阅读(531) 评论(0) 推荐(0) 编辑
摘要: C#实现字典树,欢迎测试。using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication7{ public class Trie { private static Node Root = new Node(' '); private int Capbility = 10; public Trie(int capbility) { Capbility = capbility; } public void AddWord(st 阅读全文
posted @ 2011-04-15 19:02 CSDN大笨狼 阅读(2979) 评论(0) 推荐(1) 编辑
摘要: 中英文关键字生成器:中文,会生成最大命中率2+3的格式,英文保留原词,至少2个长。见我http://www.cnblogs.com/dullwolf/archive/2011/04/14/2015539.html这个文章:倒排索引,中文维持2+3长度的重要性。using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Text.RegularExpressions;namespace ConsoleApplication2{ class Program { sta 阅读全文
posted @ 2011-04-14 15:38 CSDN大笨狼 阅读(1187) 评论(1) 推荐(0) 编辑
摘要: 汉字,如果保持索引关键字的长度只有2和3两种,那么对于输入过长的怎么办?5个字可以组成2+3和3+2两种,究竟是谁高,要根据命中率来排序,命中率高的,就作为组合搜索条件比如:笨狼代码大管家,可以拆成:笨狼 代码 大管家笨狼 代码大 管家笨狼代 码大 管家------------------如果:“笨狼” “代码” “大管家”这几个字在索引中存在,或者词频高,那么就按照这个做组合搜索。相反,象“码大”“代码大”这样可能压根不算是词的组合,排序就会靠后。例如:当索引中存在:“笨狼” “代码” “大管家”“管家”时,命中率分别是笨狼代 码大 管家1 笨狼 代码大 管家2笨狼 代码 大管家3倒排索引保 阅读全文
posted @ 2011-04-14 01:11 CSDN大笨狼 阅读(750) 评论(0) 推荐(0) 编辑
摘要: 百分百命中的搜索引擎?没错,倒排索引的结构,一般常见的做法是分词后丢弃词库里没用的部分,那么词库里增加新词就是悲剧!~~隔几天维护了词库就全部重新分词一遍?前年“给力”不算词,现在谁都说,你伤不起呀~~坑爹呀!海量数据,频繁重新分词你分不起,有木有?有木有?要想百分百命中,永远不重新分词,全部地球的文字组合就不要丢掉,考虑存哪儿。文件,没错!~~文件可以存储最大量的信息。只要是O(1)查找,IO再慢,也是秒杀的。本人的实践,第一层文件夹是单个字母或汉字,第二层是两个字,第三层3个字,第四层4个字,没有第五层了,够用了。每个层最多65536个文件夹,最多一个文件,单个字不考虑做索引,如果你做也可 阅读全文
posted @ 2011-04-12 16:22 CSDN大笨狼 阅读(666) 评论(1) 推荐(0) 编辑
摘要: 打造自己的分布式搜索引擎底层架构(非Lucene)大家知道,搜索引擎技术不仅仅是类似百度首页的应用,还可以衍生出数据分析工具,商务智能工具等许多有卖点的应用,甚至是社会化关系通道的发现。甚至这些非搜索引擎的搜索引擎产品才是最重要的,因为你不需要去做百度做的事情。所以,搜索引擎技术要了解原理,才可以扩展,离开Lucene也能做搜索引擎是非常重要的,利用这个积木,我们可以搭建房子和汽车。搜索引擎要完成的目的,就是O(1)秒杀爬虫采集来的文章里关键字的搜索,丫的和数据库Like不同的效果优点是速度快,缺点是如果没建索引的字,搜不到。本文是针对:打造一个自己的搜索引擎服务器的积木底层模块,给大家扩展思 阅读全文
posted @ 2011-01-27 05:18 CSDN大笨狼 阅读(1807) 评论(1) 推荐(1) 编辑