--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
发言: pyth...@googlegroups.com
退订: python-cn+...@googlegroups.com (向此发空信即退!)
详情: http://code.google.com/p/cpyug/wiki/PythonCn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
感觉和 agrep 差不多,你可以去看看 agrep 是怎么做的。
--
Best regards,
lilydjwg
Linux Vim Python 我的博客
http://bit.ly/lilydjwg or http://goo.gl/y4Gsy
> 2 要查询的特定字段是已知的,以下假设查找目标为:'ABCDABCD'
> 3 需要严格的按顺序比对。并可以手动调节可容忍的差异字母的个数。
> 例如:当设定为2时,''ABCDABBB' 可以通过,'ABCDBCDA'失败。
> 目前的方法是差异字母数为0的时候调用正则。
> 大于0的时候从字符流初始位置开始,一个个截取等长的字符串,然后 for 循环遍历计算差异字符数。感觉速度太慢了。。
> 由于需要查询的字段很多。想整个好点的算法。
> 求问有没有什么好的方法可以加速这种模糊比对的?
agrep之类的东西(以及前面几个回复提到的库),都不能处理超大的串,至于搜索引擎的开发者在飞机上写的那个,很可能针对的是搜索引擎平时处理的关键字序列(借助倒排索引中找),而不是DNA字符串(借助suffix
tree/array),问题不一样,方法不能通用。当然,如果文本是几M的级别,还能忍。再大的话,肯定挂。这时候一般要用到filtering。你这个是hamming
distance,可以用spaced seeds。BLAST中有实现,但是开源的库我就不知道了。搜一搜相关论文有没有公布的code吧。
总之,楼主先弄清楚自己面临的数据量,以及最大可以容忍的差异字母个数,然后再决定是用简单办法,还是复杂的。
- Rujia
- Rujia
> 不过怎样快速检测一01字串里有多少个1呢?。。
下面是一个链接,你可以自己比较一下里面的方法
http://gurmeet.net/puzzles/fast-bit-counting-routines/
- Rujia
2011/3/10 jame2981 <jame...@gmail.com>:
2011/3/10 saner w <san...@gmail.com>: