【发布时间】:2010-12-09 05:54:52
【问题描述】:
假设您有一个包含 10,000 个电子邮件地址的列表,并且您想查找此列表中一些最近的“邻居”是什么 - 定义为与您列表中的其他电子邮件地址可疑地接近的电子邮件地址.
我知道如何计算两个字符串之间的Levenshtein distance(感谢this question),这将使我知道将一个字符串转换为另一个字符串需要多少操作。
假设我将“可疑地靠近另一个电子邮件地址”定义为 Levenshtein 分数小于 N 的两个字符串。
除了将每个可能的字符串与列表中的每个其他可能的字符串进行比较之外,是否有更有效的方法来查找分数低于此阈值的字符串对?也就是说,这类问题能比O(n^2)更快解决吗?
Levenshtein 对这个问题的算法选择是否糟糕?
【问题讨论】:
-
看看我在下面的回复,这个问题是众所周知的,因为它基本上是您正在处理的拼写更正。
-
请考虑从 Nick Johnson 的答案中删除“已接受答案”状态,因为它对近似搜索的 O(log n) 时间的核心主张不正确。
标签: algorithm string cluster-analysis complexity-theory edit-distance