卷积的有效方法,如求和评估

Efficient method for convolution like sum evaluation

问题 给定 N 个 3 维点,它们是 {$p_1,p_2,..,p_n$} 其中 $ p_i = (x_i,y_i,z_i) $ .我必须找到公式的值

对于一些给定的常数整数 P、Q、R、S。 所有数字都在 1 和 M ( = 100) 之间。

我需要一个有效的方法来计算这个公式

请给出关于如何比 $O(n^2)$

更好地降低复杂性的想法

假设所有坐标都在 1 到 100 之间,那么您可以通过:

  1. 计算所有点的 3d 直方图 O(100*100*100) 操作。

  2. 使用 FFT 计算直方图沿 3 个轴中每个轴的卷积

这将产生 3d 向量的 3d 直方图。然后您可以遍历此直方图以计算所需的值。

要点是,计算值直方图的卷积就是计算这些值的两两差值的直方图。这也可以用于以类似的方式计算值总和的直方图。

你的问题看起来像一个粒子势问题(例如你在电动力学中遇到的那种),你必须在位置 (x_j, y_j) 找到一些 "potential" i-th 个粒子。

针对此 class 问题的快速算法是快速多极方法。查找此关键字,但我必须警告您,它绝不是易于理解或实现的。需要强大的数学背景。