首页 / C# / c# – 寻找天际线集
c# – 寻找天际线集
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 寻找天际线集,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1149字,纯文字阅读大概需要2分钟。
内容图文
![c# – 寻找天际线集](/upload/InfoBanner/zyjiaocheng/770/d76c2ce6ca5c4ca18cc2a0aa06a47106.jpg)
在解决问题之前,我先解释一下这个定义:
说点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,3,4,6)
A由于条件1成立,因此占优势B,对于条件2,A的第四成分为A <1. B的第四部分 再举另一个例子,
A=(2,3,4,5)
B=(2,3,4,5)
A既不支配B,反之亦然,因为条件2在两种情况下都不成立.
现在给出一个n维坐标列表,我希望找到不受其他人支配的坐标集,
这些坐标称为天际线集.
假设我有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 });
将输出SkylineSet(newList,5)
(2,1,2,1,2)
(1,2,1,2,1)
这可以通过每个坐标的成对比较来实现,但是
坐标的数量可以非常大,任何人都有想法如何有效地解决这个问题?
解决方法:
将点放在K-D树(或某些此类数据结构)中.现在,您可以有效地找到由给定点支配的点.删除那些占主导地位的人,重复所有剩余的分数.
内容总结
以上是互联网集市为您收集整理的c# – 寻找天际线集全部内容,希望文章能够帮你解决c# – 寻找天际线集所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。