我有一个包含n个字符串的数据库(n> 1百万),每个字符串有100个字符,每个字符都是a
,b
,c
或{{1} }。
我想找到每个最接近的字符串,最接近的字符串定义为 hamming distance 。我想找到每个k最近的字符串(k <5)。
d
对于k = 1,它应该返回{(i1,i2),(i2,i1),(i3,i4),(i4,i3)}。对于k = 2,它应该返回{(i1,{i2,i4}),(i2,{i1,i4}),(i3,{i4,i2}),(i4,{i3,i2})}。等等。对于每个字符串,应找到k-nearest字符串。
朴素解决方案具有O(n ^ 2)时间复杂度。我想找到更复杂的解决方案。我找到了一些其他解决方案,但没有一个比天真更好。
如何将这些字符串最佳地分配到群集中?一个字符串可以在两个或更多个集群中。解决方案可能是确定性的或概率性的。