我在hadoop工作,我必须在java中对齐n个字符串,我想要一个在Java中计算一般字符串(没有生物信息学,基因组等)的算法。 ES。
ASFHASFHASDSAAPJEIHRA <-- seq1
AAPSOFHASFDSOISISN--A <-- seq2
AWP-JWRAIADSDIA--N--A <-- seq3
AOPSJD-A-JDSSDSOQOSSJ <-- seq4
100000000011000000000 <-- score
有人可以帮我找一个名字,图书馆或其他东西吗?
答案 0 :(得分:0)
您可以编写自己的动态编程算法,但复杂度为:O(N ^ k),如果N是序列长度,k是序列数。假设您有k = 2个序列: 你有一个2D网格,你的网格中的每个点都对应一对字符。因此position(1,1)对应于word1 [1]和word2 [1]。此网格中的水平和垂直边缘对应于插入和删除,而对角线则匹配或不匹配。对于每一个你必须设备罚款。在您的示例中,匹配= +1,而其他可能性为+0。当您到达网格的右下角时,您将获得最佳对齐分数。