Performance Levenstein转置距离
如何使用动态规划单独实现转置/交换/旋转/交换距离。我必须强调,我不想检查其他操作(即复制、删除、插入、终止等)只是转置/交换Performance Levenstein转置距离,performance,algorithm,dynamic,dynamic-programming,levenshtein-distance,Performance,Algorithm,Dynamic,Dynamic Programming,Levenshtein Distance,如何使用动态规划单独实现转置/交换/旋转/交换距离。我必须强调,我不想检查其他操作(即复制、删除、插入、终止等)只是转置/交换 我希望将Levenstein算法应用于交换距离。代码会是什么样子?我不确定Levenstein的算法是否可以用于这种情况。在没有插入或删除操作的情况下,仅在具有相同长度和相同字符的字符串之间定义好距离。无法仅通过换位转换为同一字符串的字符串示例: AB, ABC AAB, ABB 那么,,算法可以是找到两个字符串中不在同一位置的字符位置的所有可能排列,并寻找一个可以用
我希望将Levenstein算法应用于交换距离。代码会是什么样子?我不确定Levenstein的算法是否可以用于这种情况。在没有插入或删除操作的情况下,仅在具有相同长度和相同字符的字符串之间定义好距离。无法仅通过换位转换为同一字符串的字符串示例:
AB, ABC
AAB, ABB
那么,,算法可以是找到两个字符串中不在同一位置的字符位置的所有可能排列,并寻找一个可以用最少的换位或交换次数表示的排列。动态规划的有效应用通常需要将任务分解为同一任务的多个实例,时间更短输入。对于Levenstein距离,这归结为两个字符串的前缀以及从一个字符串到另一个字符串所需的编辑次数。我不明白在你的情况下如何实现这样的分解。至少我没有看到一个会产生多项式时间算法的算法
另外,你所说的是什么行动还不太清楚。根据上下文,交换或交换可能意味着与换位相同的事情,也可能意味着用任意其他字母替换字母,例如
test->text
。如果通过“转置/交换/旋转/交换”你试图说的只是“转置”,那么你应该看看。如果没有,请澄清问题。您能更清楚地了解哪些操作是允许的吗?我只使用了我在不同地方发现的同一操作的所有名称。CLRS称之为旋转或交换。谢谢你的回答。如果你不能通过交换从一个字符串到另一个字符串,我的交换距离将是无限的。