在解决问题之前,我先解释一下这个定义:
说点A是坐标(可以有双倍值),比如说(1.2,3.5,4.3,2.6),
与B点相同
点A占据B点,
当且仅当
1.点A中的所有坐标< = B点中的所有坐标,和
2.点A的一个坐标< B点的对应坐标 例如:
特定
A=(2,3,4,5) B=(2,6)
A由于条件1成立,因此占优势B,对于条件2,A的第四成分为A <1. B的第四部分 再举另一个例子,
A=(2,5)
A既不支配B,反之亦然,因为条件2在两种情况下都不成立.
现在给出一个n维坐标列表,我希望找到不受其他人支配的坐标集,
这些坐标称为天际线集.
假设我有5个维度的坐标
(2,1,2,2) (1,1) (3,3) (4,4)
天际线组是
(2,1)
List<double[]> Skylineset(List<double[]> Coordinates,int dimension)
给出示例输入:
List<double[]> newList=new List<double[]>(); newList.Add(new double[] {2,2}); newList.Add(new double[] { 1,1 }); newList.Add(new double[] { 3,3 }); newList.Add(new double[] { 4,4 });
(2,1)
解决方法
将点放在K-D树(或某些此类数据结构)中.现在,您可以有效地找到由给定点支配的点.删除那些占主导地位的人,重复所有剩余的分数.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。