擅长:python、mysql、java
<p>一种加快速度的方法是确保你不会同时计算相似度。您当前的伪代码将比较<code>i</code>和{<cd2>}<em>和</em><code>j</code>与{<cd1>}。不要在整个文档中迭代<code>j</code>,而是迭代<code>document[i+1:]</code>,即只在<code>i</code>之后的条目。这将使您对<code>compute_similarity</code>的调用减少一半。在</p>
<p>最适合这种比较的数据结构是邻接矩阵。这将是一个<code>n * n</code>矩阵(<code>n</code>是数据集中的成员数),其中<code>matrix[i][j]</code>是成员{<cd1>}和{<cd2>}之间的相似性。您可以完全填充这个矩阵,同时只需对<code>j</code>进行半次迭代,只需同时为<code>matrix[i][j]</code>和{<cd16>}分配一个对<code>compute_similarity</code>的调用。在</p>
<p>除此之外,我想不出任何加快此过程的方法;您至少需要对<code>compute_similarity</code>进行<code>n * (n - 1) / 2</code>调用。把它想象成握手问题;如果每个成员都必须与每个其他成员(握手)至少比较一次,那么下限是<code>n * (n - 1) / 2</code>。但我欢迎其他人的意见!在</p>