【发布时间】:2010-04-26 18:14:10
【问题描述】:
我对两个单词列表的函数感兴趣,它将返回它们之间的顺序无关的编辑距离。
也就是说,参数将是两个(假设是空格分隔的)单词列表,返回值将是列表中单词的编辑(或 Levenshtein)距离的最小总和。
"cat rat bat" 和 "rat bat cat" 之间的距离将为 0。"cat rat bat" 和 "fat had bad" 之间的距离将与 "rat bat cat" 和 "had fat bad" 之间的距离相同,4. 在这种情况下,单词数列表不一样,较短的列表将用 0 长度的单词填充。
我的直觉(没有通过计算机科学课程培养)除了使用蛮力之外找不到任何其他解决方案:
|had|fat|bad| a solution
---+---+---+---+ +---+---+---+
cat| 2 | 1 | 2 | | | 1 | |
---+---+---+---+ +---+---+---+
rat| 2 | 1 | 2 | | 3 | | |
---+---+---+---+ +---+---+---+
bat| 2 | 1 | 1 | | | | 4 |
---+---+---+---+ +---+---+---+
从第一行开始,选择一列并转到下一行,而无需重新访问您已经访问过的列。一遍又一遍地这样做,直到您尝试了所有组合。
对我来说,这听起来有点像旅行推销员问题。是吗,您将如何解决我的特殊问题?
【问题讨论】:
标签: algorithm string language-agnostic fuzzy traveling-salesman