提问人:cfp 提问时间:5/9/2019 更新时间:5/11/2019 访问量:119
用于查找非负正数中轴对齐超长方体并集的顶点的算法,所有顶点都位于原点处
Algorithm for finding the vertices of a union of axis-aligned hypercuboids in the nonnegative orthant, all with one vertex at the origin
问:
假设我有一个 D 维的 N 轴对齐超长方体的集合。
每个超长方体在原点有一个顶点,在正节点上有一个顶点(即所有坐标都严格为正)。后一个顶点定义了超立方体,因此超立方体的集合可以由顶点集合给出,每个超立方体一个顶点。
你可能会认为我已经从超长方体列表中删除了严格包含在另一个超长方体中的任何超长方体。(目前我正在通过一个朴素的 O(N^2*D) 算法来做到这一点。附带问题:我能做得更好吗?
我需要找到所有超长方体并集的顶点,不包括任何具有一个或多个零坐标的顶点。
在二维中,有 N-1 个这样的顶点,可以通过在一个(任意)坐标上对顶点进行排序来有效地找到它们,即在 O(N log(N)) 中)。
在D维中有多少个这样的顶点?(对于两个立方体,似乎只有一个新顶点,所以也许仍然是 N-1?如何有效地找到这些顶点?
答:
0赞
Ripi2
5/11/2019
#1
Some abreviature:表示“Hipercuboid j”,在原点处有一个顶点,在 处有相反的顶点。Hj
{xi, yi, zi, wi, etc}
如果包含在其中,则 、 、 、 等。Hi
Hj
xi<=xj
yi<=yj
zi<=zj
如果你有 D 个排序的坐标列表,每个维度一个,那么很容易通过对坐标索引的简单查询来检查是否在内部:和 和 等。请注意“and”,而不是“or”条件。Hi
Hj
posXi<posXj
posYi<posYj
posZi<posZj
如果有些顶点不遵守所有顶点的“和”规则,那么顶点就是一个新的顶点。
如果某个坐标是“out”:则该顶点是新顶点。Hi
Hj
i
T
posTi > posTlast
i
评论
1赞
cfp
5/11/2019
我不确定我是否理解这是如何生成新顶点列表的。您能否说明它如何应用于上面给出的 HEKTO 示例,(3,2,1)、(2,1,3) 和 (1,3,2)?
评论