【问题标题】:Efficient method for convolution like sum evaluation卷积的有效方法,如求和评估
【发布时间】:2015-12-09 02:40:58
【问题描述】:

问题给定 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)$ 更好地降低复杂性的想法

【问题讨论】:

  • P, Q, R, S 和它们的表达式如Q(Yi - Yj) 应该是什么?
  • Alos,这与 FFT 和卷积有什么关系?
  • 抱歉造成混淆,Q(Yi-Yj) 是 Q 和 (Yi-Yj) 的乘积,现已更正。
  • 似乎可以使用卷积或 fft 等快速评估该表达式。没有具体原因
  • A) 我认为没有理由假设 FFT/卷积在这里会有效,但是 B) 我可能是错的,因为这实际上是一个实际编程问题而不是理论问题的站点。是的,这个问题兼而有之,但您可能会在 CompSci 网站之一上得到更好的回应:例如 cs.stackexchange.com

标签: algorithm fft computational-geometry convolution mathematical-expressions


【解决方案1】:

假设所有坐标都在 1 到 100 之间,那么您可以通过以下方式执行此操作:

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

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

这将产生 3d 矢量的 3d 直方图。然后,您可以遍历此直方图以计算您想要的值。

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

【讨论】:

  • 请您再解释一下。即如何计算 3D 直方图然后进行卷积。也许给一些链接
  • 一些使用 fft 执行卷积的示例教程和代码可在codechef上获得
  • 你能告诉我更多关于 3D 直方图的信息吗?
  • 这不过是 hist[xi][yi][zi] += 1 for each point
【解决方案2】:

您的问题看起来像一个粒子势问题(例如您在电动力学中遇到的那种问题),您必须通过将来自 i-th 粒子的所有基本贡献相加来在位置 (x_j, y_j) 找到一些“势”。

专门针对这类问题的快速算法是快速多极法。查找这个关键字,但我必须警告你,它绝不是简单的理解或实现。需要强大的数学背景。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    • 2019-10-24
    • 2017-12-22
    • 2011-07-20
    • 1970-01-01
    相关资源
    最近更新 更多