【发布时间】:2017-02-23 18:48:15
【问题描述】:
我们有 M 个介于 1 和 N 之间的唯一整数。在现实生活中,N 是几百万,而 M 介于 N/10 和 N/3 之间。我需要计算 M 个整数之间的成对距离分布。
这个问题的蛮力复杂度是 M^2,但输出只是 N 个数字。所以自然的问题是是否有更快的算法。即使是像 N * sqrt(M) 这样快的算法也应该足以满足我们的目的。
该问题作为以下问题的一个子集出现。我们有一个大的虚拟正方形对称矩阵,几百万乘几百万个元素。矩阵的一些行和列被屏蔽掉了。我们需要找出矩阵的每个对角线中有多少被屏蔽的元素。人们可以很容易地计算出与每个对角线相交的屏蔽箱数。但通常被屏蔽的行和列会在对角线上相交,因此只屏蔽了一个 bin。为了避免重复计算这些,我们需要成对分布屏蔽列之间的距离。
【问题讨论】:
标签: algorithm math complexity-theory