首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >perl: Text::Fuzzy,给出相同编辑距离的不同字符串?

perl: Text::Fuzzy,给出相同编辑距离的不同字符串?
EN

Stack Overflow用户
提问于 2016-05-27 10:34:09
回答 2查看 82关注 0票数 3

检查$barcode和两个字符串之间的距离,第一个字符串的前面有相同的12个字符,另一个字符串完全不同,但都给出了相同的距离?

代码语言:javascript
运行
复制
#!/usr/bin/perl
use warnings;
use strict;
use Text::Fuzzy;
my $barcode =  "TCCCTTGTCTCC";

foreach my $line1 (<DATA>) {
    print "New string\n";
    print "Barcode length:", length $barcode, "\nSequence length:",
    length $line1, "\n";
    my $tf = Text::Fuzzy->new($barcode);
    my $ed = $tf->distance($line1);
    print "Edit distance: ", $ed ,"\n\n";
}

__DATA__
TCCCTTGTCTCCCCTGATATCCTGTAAAATCCTTTTCTTCTGATGGGTGCCATTTGCCACTAGAGGAAGCTGAACAGACCTGACTACCTGGA
GACGAGACTGATCACCTGATATCCTGTAAAATCCTTTTCTTCTGATGGGTGCCATTTGCCACTAGAGGAAGCTGCAGACCTGACTACCTGGA

输出:

代码语言:javascript
运行
复制
New string
Barcode length:12
Sequence length:93
Edit distance: 81

New string
Barcode length:12
Sequence length:93
Edit distance: 81
EN

回答 2

Stack Overflow用户

发布于 2016-05-27 10:51:05

这似乎是对的,因为子序列的所有字符都出现在较长的序列中,两者都具有相同的Levenshtein编辑距离。这是因为它所需要的只是将较长的序列转换为较短的序列的删除

示例:

artic => arc编辑距离2,即删除2 arche => arc将具有相同的编辑距离2,即删除2

票数 2
EN

Stack Overflow用户

发布于 2016-05-27 11:02:29

好的。在第一种情况下,$barcode中的所有字符都一起出现在行首,因此需要进行81 (93 - 12)次编辑才能将所有其他字符添加到行尾。

在第二种情况下,$barcode中的所有字符仍然按顺序出现,只是中间有一堆东西。因为他们这样做了,不需要删除或替换,距离仍然是81,字符只是添加在不同的地方。举例说明:

代码语言:javascript
运行
复制
GACGAGACTGATCACCTGATATCCTGTAAAATCCTTTTCTTC ...
________T___C_CCT_______TGT______CT___C__C ...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37473924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档