Algorithm 一种测量无序序列间距离的算法

Algorithm 一种测量无序序列间距离的算法,algorithm,Algorithm,Levenshtein距离为我们提供了一种根据无序单个字符计算两个相似字符串之间距离的方法: quick brown fox quikc brown fax 敏捷褐狐 quikc布朗传真 Levenshtein距离=3 对于具有相似子序列的两个字符串之间的距离,什么是相似的算法? 例如,在 quickbrownfox brownquickfox quickbrownfox 布朗基克盒 Levenshtein距离是10,但这并没有考虑到字符串有两个相似的子序列,这使得它们比完全无序的单词更“相似”

Levenshtein距离为我们提供了一种根据无序单个字符计算两个相似字符串之间距离的方法:

quick brown fox quikc brown fax 敏捷褐狐 quikc布朗传真 Levenshtein距离=3

对于具有相似子序列的两个字符串之间的距离,什么是相似的算法? 例如,在

quickbrownfox brownquickfox quickbrownfox 布朗基克盒 Levenshtein距离是10,但这并没有考虑到字符串有两个相似的子序列,这使得它们比完全无序的单词更“相似”

quickbrownfox qburiocwknfox quickbrownfox qburiocwknfox 然而,这个完全无序的版本有八个Levenshtein距离


存在哪些考虑子序列长度的距离度量,如果不假设子序列可以很容易地分解成不同的单词?

初始尝试:使用一种算法,并将差异数作为距离进行计数

我认为您可以尝试使用Levenshtein距离或它们的一些组合。

我觉得这是NP完全问题


至少,我看不出我们怎样才能避免彻底搜查。此外,我甚至看不出我们如何在多项式时间内验证给定的解。

一个简单的度量是取每个字符串中的所有n*(n-1)/2个子字符串,并查看有多少重叠。这种方法有一些简单的变体,其中您只查看特定长度的子字符串


这将类似于通常用于评估机器翻译的分数。在BLEU的例子中,他们比较了两个句子:他们从每个句子中提取所有的单格、双格、三格和四格单词。他们计算每个问题的精确性和召回率,基本上使用这些分数的平均值。

你所指的问题属于上下文相关语法。
你基本上定义了一个语法,在本例中是英语语法,然后找出语法和不匹配之间的距离。您需要首先分析您的输入。

这是怎么离题的?也许你可以改进一下标题。被问了很多次,名字更好:o)或者顺便说一句:我特别喜欢基于压缩距离的想法。@Dario:你会建议什么标题?@MaR:这些问题和这个问题不一样。重点是没有明显的方法将字符串分解成单词。另外,比较不同字符串相似性度量的有趣页面:在这个比较中,最好的似乎是SmithWatermanGotoh度量。这不是英语语法。这些不是英语单词。链接不再起作用了,但答案是正确的。