我正在开发一个需要计算两个字符串之间最小距离的项目。每个字符串的最大长度可以是10,000(m),我们有大约50,000(n)个字符串。我需要找到每对弦之间的距离。我还有一个权重矩阵,其中包含每个字符对的权重。例如,(a,a)之间的权重=(a,b)= 0。
迭代所有字符串对需要O(n ^ 2)时间。我已经看到算法花费O(m)时间来寻找距离。然后,总时间复杂度变为O(n ^ 2 * m)。是否有任何算法可以使用一些预处理做得比这更好?它实际上与自动纠正相同的问题。
我们是否有一些算法将所有字符串存储在数据结构中,然后我们从数据结构中查询两个字符串之间的近似距离?构造数据结构可以采用O(n ^ 2),查询处理应该小于O(m)。
s1 = abcca,s2 = bdbbe
如果我们按照上面的加权矩阵计算两者之间的欧几里德距离:
sqrt(0 ^ 2 + 9 ^ 2 + 9 ^ 2 + 9 ^ 2 + 342 ^ 2)
上下文:我需要对时间序列进行聚类,我已将时间序列转换为SAX表示,大约10,000点。为了聚类,我需要定义一个距离矩阵。所以,我需要以有效的方式计算两个字符串之间的距离。
注意:所有字符串长度相同,字母大小为5。