给定一个大立方体(轴对齐和整数坐标),以及许多较小的立方体(也是轴对齐和整数坐标)。我们如何检查大立方体是否被较小的立方体完美填充。
目前,我们检查:
对于少量的多维数据集来说,这是可以的,但是我们需要支持尺寸大于2^32的多维数据集的测试。即使在2^16,填充大立方体所需的小立方体数量也足够大,因此步骤2需要一段时间(O(n^2)检查每个多维数据集不与其他多维数据集相交)。
有更好的算法吗?
编辑:
这件事似乎有些混乱。我不是想把一个立方体分割成更小的立方体。已经做好了。我们程序的一部分将大的OpenCL范围(整数坐标上的轴对齐立方体)分割成许多适合于硬件作业的较小范围。
我所做的是连接到这个系统,并检查它产生的作业是否正确地涵盖了大范围的初始范围。我上面的算法是有效的,但是它很慢,并且考虑到我们必须运行的测试数量,我希望尽可能快地保持这些测试。
发布于 2013-08-15 12:04:55
发布于 2013-08-15 16:00:28
再来一次,同样只讨论原来问题中的第二步:
2^18。这些坐标定义了沿空间填充曲线的间隔,因此对它们进行排序并查找重叠。时间复杂性可能是由这类主导的,空间复杂性可能相当大。
https://stackoverflow.com/questions/18250827
复制相似问题