c# – 寻找天际线集
发布时间:2020-12-15 21:40:11 所属栏目:百科 来源:网络整理
导读:在解决问题之前,我先解释一下这个定义: 说点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成立,因此
在解决问题之前,我先解释一下这个定义:
说点A是坐标(可以有双倍值),比如说(1.2,3.5,4.3,2.6), 点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 }); 将输出SkylineSet(newList,5) (2,1) 这可以通过每个坐标的成对比较来实现,但是 解决方法
将点放在K-D树(或某些此类数据结构)中.现在,您可以有效地找到由给定点支配的点.删除那些占主导地位的人,重复所有剩余的分数.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |