寻找天际线集

时间:2012-09-13 13:45:43

标签: c# algorithm math

2 个答案:

答案 0 :(得分:1)

将点放在K-D树(或某些此类数据结构)中。现在,您可以有效地找到由给定点支配的点。删除那些占主导地位的人,重复所有剩余的分数。

答案 1 :(得分:0)

我不确定这是否有用。这似乎在我脑海里似乎是合理的。也许这正是你正在做的事情。

建立一个支配矩阵NxN,其中N是点数。矩阵中的值是“相等”,“支配”,“支配”,“不”。将所有矩阵单元格设置为“相等”。该矩阵将结果保存在算法的末尾。

从第一个坐标开始。

我在这里假设我们有一个数组,其中包含当前坐标的所有值,但也与它们相关的点有关。

建立部分统治关系,仅查看当前坐标。统治的关系可以有一个这样的价值:“平等”,“支配”,“支配”。没有“既不”。

在双嵌套循环中运行此数组(I = 0,N-2; J = I + 1,N-1)。给定两个点的关系R和这两个点的关系矩阵中的单元格C将矩阵更新为新值C,如下所示:

如果C“相等”则C = R. 如果C“既不”,则不变 如果C被“支配”而R是“支配”则C变为“不”,否则不变 如果C是“支配”而R是“支配”则C变为“不”,否则不变。

对所有坐标重复此过程,在矩阵中累积结果。

最后贯穿每个点的矩阵。将所有与任何其他点没有“支配”关系的点。