我对两个单词列表的函数感兴趣,它将返回它们之间的顺序不可知的编辑距离。
也就是说,参数将是两个(假设用空格分隔)单词列表,返回值将是列表中单词的编辑(或 Levenshtein)距离的最小总和。
"cat rat bat"
和之间的距离"rat bat cat"
为0。和之间的距离与和"cat rat bat"
之间"fat had bad"
的距离相同,4。如果列表中的单词数不相同,则较短的列表将用长度为0的单词填充。"rat bat cat"
"had fat bad"
我的直觉(没有通过计算机科学课程培养)除了使用蛮力之外没有找到任何其他解决方案:
|had|fat|bad| a solution
---+---+---+---+ +---+---+---+
cat| 2 | 1 | 2 | | | 1 | |
---+---+---+---+ +---+---+---+
rat| 2 | 1 | 2 | | 3 | | |
---+---+---+---+ +---+---+---+
bat| 2 | 1 | 1 | | | | 4 |
---+---+---+---+ +---+---+---+
从第一行开始,选择一列并转到下一行,而无需重新访问您已经访问过的列。一遍又一遍地这样做,直到你尝试了所有的组合。
对我来说,这听起来有点像旅行商问题。是吗,您将如何解决我的特定问题?