C# 寻找天际线集

C# 寻找天际线集,c#,algorithm,math,C#,Algorithm,Math,在讨论问题之前,让我先解释一下定义: 假设点A是一个坐标(可能有双倍值),比如(1.2,3.5,4.3,2.6), B点也一样 A点支配B点, 敌我识别 1.点A中的所有坐标将点放在K-D树(或某些类似的数据结构)中。现在,您可以有效地找到由给定点控制的点。去掉那些占优势的,重复所有剩余的分数。我不确定这是否有效。在我看来这似乎是有道理的。也可能这正是你正在做的 建立控制矩阵NxN,其中N是点数。矩阵中的值为“相等”、“支配”、“支配”、“均非”。将所有矩阵单元设置为“相等”。该矩阵在算法结束时

在讨论问题之前,让我先解释一下定义:

假设点A是一个坐标(可能有双倍值),比如(1.2,3.5,4.3,2.6), B点也一样

A点支配B点, 敌我识别
1.点A中的所有坐标将点放在K-D树(或某些类似的数据结构)中。现在,您可以有效地找到由给定点控制的点。去掉那些占优势的,重复所有剩余的分数。

我不确定这是否有效。在我看来这似乎是有道理的。也可能这正是你正在做的

建立控制矩阵NxN,其中N是点数。矩阵中的值为“相等”、“支配”、“支配”、“均非”。将所有矩阵单元设置为“相等”。该矩阵在算法结束时保存结果

从第一个坐标开始

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

建立部分支配关系,只看当前坐标。支配关系可以有一个这样的价值观:“平等”、“支配”、“支配”。没有“两者都不是”

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

如果C为“相等”,则C=R.
如果C是“都不是”,则它是不变的。
如果C是“支配的”,R是“支配的”,则C变为“都不是”,否则不变。
如果C是“支配的”,R是“支配的”,那么C变成“两者都不是”,否则不变

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


最后,对每个点的矩阵进行遍历。拿所有与其他点没有“支配”关系的点来说。

不,这不是家庭作业,这是我面临的实际问题……不知道这里发生了什么。基于整个论文和研究都是为了优化计算而进行的这一事实,我担心这个问题的范围太大了,甚至连我们都无法深入研究。这里可能有一个有趣的资源:@william007,在这种情况下,+1用于一个被问得很好的问题更新:上述IEEE论文只涉及二维和三维天际线计算的算法。它甚至不考虑五个维度的可能性。这是O(n ^ 2),你可以通过检查所有的点对来获得O(n ^ 2)(不被其他点支配的点在天际线集合)。谢谢,但是如何用K-D树来做?“您可以有效地找到由给定点支配的点”,为什么会这样?由给定点支配的点是所有坐标大于或等于给定点坐标的点。支配点是d立方体中的点,其中一个角位于给定点,另一个角位于无穷远处。KD树允许您高效地查找给定立方体中的点。我想。。。
A=(2,3,4,5)
B=(2,3,4,6)
A=(2,3,4,5)
B=(2,3,4,5)
(2,1,2,1,2)
(1,2,1,2,1)
(3,3,3,3,3)
(4,4,4,4,4)
(2,1,2,1,2)
(1,2,1,2,1)
List<double[]> SkylineSet(List<double[]> Coordinates, int dimension)
 List<double[]> newList=new List<double[]>();
 newList.Add(new double[] {2, 1, 2, 1, 2});
 newList.Add(new double[] { 1, 2, 1, 2, 1 });
 newList.Add(new double[] { 3, 3, 3, 3, 3 });
 newList.Add(new double[] { 4, 4, 4, 4, 4 });
(2,1,2,1,2)
(1,2,1,2,1)