我需要一种有效的方法来计算两个无序符号集合之间的最小编辑距离。就像仅适用于序列的 Levenshtein 距离一样,我需要以不同的每个符号成本进行插入、删除和替换。我也有兴趣恢复编辑脚本。
由于我要完成的工作与计算字符串编辑距离非常相似,因此我认为它可能被称为无序字符串编辑距离,或者只是设置编辑距离。然而,谷歌并没有用这些搜索词出现任何东西,所以我很想知道这个问题是否有其他名字?
为了澄清,问题将通过以下方式解决
def unordered_edit_distance(target, source):
return min(edit_distance(target, source_perm)
for source_perm in permuations(source))
例如,unordered_edit_distance('abc', 'cba')
将是0
,edit_distance('abc', 'cba')
而是2
。不幸的是,排列的数量增长得非常快,即使对于中等大小的输入也不实用。
编辑更清楚地表明操作与不同的成本相关联。