【发布时间】:2011-10-18 09:42:04
【问题描述】:
在一些处理数字的程序中,我有一个函数,它在三个维度上只能是 1 或 0。我事先不知道函数,但我需要知道函数的总“表面”等于零。在类似的问题中,我可以在英国地图的 2D 表示上绘制一个矩形。该函数在海上等于 0,在地球上等于 1。我需要知道总水面。我想知道执行此操作的最佳并行算法或方法是什么。
我首先想到了以下方法; a) 将 2D 地图区域划分为矩形网格。对于属于每个单元格中心的每个点,检查它是否是水之土。这可以并行完成。在程序结束时,我将得到一个包含 1 和 0 的矩阵。我会得到一些精确的区域。现在我想提高这个精度,所以b)选择零和一之间边界区域的单元格(这样做的最佳标准是什么?)并在这些单元格中,再次将它们分成连续的单元格并重复该过程直到获得所需的精度。我想在这个过程中,关键参数是每个新阶段的网格大小,以及如何存储和检查属于边界区域的单元格。最后,从计算的角度来看,最优化的方法是执行最少检查次数以获得具有所需精度的总表面值的方法。
【问题讨论】:
-
你对地图有什么规定吗?例如,如果您有同质区域,则不必检查给定区域中的像素。如果您有一些规则,您可以使用公式将地图的某些部分排除在检查之外,该公式在数学上描述了区域表面,您可以对地图中不适用您的规则的部分使用近似值。
-
我明白你的意思,但我没有那个规则(例如,这可能适用于真实的英格兰地图)
-
好的,这意味着您需要一个近似值。我认为这两个答案都是合理的。请记住,您想要的精度越高,需要的操作就越多,您想要的速度越大,获得的精度就越低。没有精确而快速的“神奇”解决方案。
标签: algorithm integration parallel-processing numerical-methods