由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 请教一个算法问题
相关主题
Perl 的一个问题有人能解释一下这段C++代码吗
如何 measure similarity帮帮看看这段tree insertion
给定一个dictionary,如何用26个字母拼出尽可能多的单词?[合集] 如何得到一个指向STL元素的指针?
请构造个数据结构,满足:linux 能查到 deleted file list 吗
visual c++ 性能的问题new了指针,delete的时候出错了
需要一个编程键盘[转载] CS Interview question
请问call by name是不是C编译器都没实现About Longest repeated substring
一道C++面试编程题问一个简单问题的算法 (转载)
相关话题的讨论汇总
话题: 字母话题: 单词话题: 相差话题: 文件话题: b2
进入Programming版参与讨论
1 (共1页)
s****l
发帖数: 10462
1
请教一个算法问题
有一个文件A有很多行,每行都是一个20个字母的单词,比如说
1, abbbcdefggabcdeabcde
2, abbbcdefggabcdeabcxy
3, abbbcdefggabcdeabcxz
......
有一个文件B有很多行,每行都是一个20个字母的单词;
1, abhhcdefggabcdeabcde
2, abbxcdefggabcdeabcxz
3, abbpcdefggabcdeabcxz
4, abhhcdefggabcdeabcde
5, abcxcdefggabcdeabcxy
......
对于B文件中每一个单词我要找出在文件A中和它一样,相差一个或者两个字母的单词。
比如B1和A1相差两个字母,满足条件。B2和A2相差一个字母,满足;B2和A3相差一个字
母,也满足,等等。
什么方法比较起来比较快?
谢谢!
k****f
发帖数: 3794
2
google:
suffix tree + string edit distance.

【在 s****l 的大作中提到】
: 请教一个算法问题
: 有一个文件A有很多行,每行都是一个20个字母的单词,比如说
: 1, abbbcdefggabcdeabcde
: 2, abbbcdefggabcdeabcxy
: 3, abbbcdefggabcdeabcxz
: ......
: 有一个文件B有很多行,每行都是一个20个字母的单词;
: 1, abhhcdefggabcdeabcde
: 2, abbxcdefggabcdeabcxz
: 3, abbpcdefggabcdeabcxz

s****l
发帖数: 10462
3
thanks.
This looks like what BLAST does (with dynamic programming), however, it's
not what I really want since my case has only substitutions, but no deletion
or insertion.

【在 k****f 的大作中提到】
: google:
: suffix tree + string edit distance.

d*z
发帖数: 150
4

如果仅仅找出所有相等或最多两个位置不同的串,可以有比较好的Trick.可以将每个串
分成3段(比如6+7+7),然后关于每一段建立索引。
如果两个串之间符合要求,那么必然有一段完全相等。我们可以根据这个将大部分数据
过滤掉

【在 s****l 的大作中提到】
: 请教一个算法问题
: 有一个文件A有很多行,每行都是一个20个字母的单词,比如说
: 1, abbbcdefggabcdeabcde
: 2, abbbcdefggabcdeabcxy
: 3, abbbcdefggabcdeabcxz
: ......
: 有一个文件B有很多行,每行都是一个20个字母的单词;
: 1, abhhcdefggabcdeabcde
: 2, abbxcdefggabcdeabcxz
: 3, abbpcdefggabcdeabcxz

n******t
发帖数: 4406
5
Then just assign deletion and insertion an -infty penalty.

deletion

【在 s****l 的大作中提到】
: thanks.
: This looks like what BLAST does (with dynamic programming), however, it's
: not what I really want since my case has only substitutions, but no deletion
: or insertion.

w****i
发帖数: 964
6
I agree with duz, use partial seeding HASH table is probably the fastest way.
Most short sequence aligners are using this method. It's more efficient
than suffix tree algorithm IMO.
s****l
发帖数: 10462
7
Good idea. I think it'll work.
Thanks!

【在 d*z 的大作中提到】
:
: 如果仅仅找出所有相等或最多两个位置不同的串,可以有比较好的Trick.可以将每个串
: 分成3段(比如6+7+7),然后关于每一段建立索引。
: 如果两个串之间符合要求,那么必然有一段完全相等。我们可以根据这个将大部分数据
: 过滤掉

1 (共1页)
进入Programming版参与讨论
相关主题
问一个简单问题的算法 (转载)visual c++ 性能的问题
程序速读指南需要一个编程键盘
一个问题请问call by name是不是C编译器都没实现
问个C++中重复删除指针的问题一道C++面试编程题
Perl 的一个问题有人能解释一下这段C++代码吗
如何 measure similarity帮帮看看这段tree insertion
给定一个dictionary,如何用26个字母拼出尽可能多的单词?[合集] 如何得到一个指向STL元素的指针?
请构造个数据结构,满足:linux 能查到 deleted file list 吗
相关话题的讨论汇总
话题: 字母话题: 单词话题: 相差话题: 文件话题: b2