【发布时间】:2013-03-27 06:05:45
【问题描述】:
鉴于:
一个集合(为了便于讨论,我们称之为S),它是一个无序线段集合。每条线段定义为两个经纬度端点。虽然所有线段都遵循一条隐含的曲线,但每个线段之间存在各种大小的“间隙”。我们将这条曲线称为“隐含”,因为它没有在任何地方明确定义。我们唯一可用的信息是S 中包含的线段。
期望的结果:
一个序列(为了便于讨论,我们将其称为R),它是一个有序的线段集合。每条线段的定义与以前一样,遵循与以前相同的隐含曲线,但现在按其沿隐含曲线的位置排序。
上下文(即“我到底为什么需要这个?”):
基本上我有不完整的地理数据需要规范化并通过一些非常简单的插值来“完成”以形成一个完整的曲线,没有间隙。您可能会问“为什么不将曲线拟合到所有线段端点并完成它?” ——嗯,这不是我所追求的。线段正是它们应该位于的位置,不需要最终的曲线是“平滑的”。事实上,我打算用一条直线连接每个线段(可以想象的最粗略的插值形式)。但是,连接这些部分很容易;困难的部分是对它们进行分类。
总结一下:从S 到R 的高效算法是什么?
【问题讨论】:
-
曲线是什么?也许您可以发布一张
S的图片? -
想象一条远足径:你基本上就拥有了。非常紧的弯曲不太可能是曲线的一部分,并假设根本不存在尖角。
-
您是否考虑过简单地获取从一条线段上的点到另一条线段上的点的最短距离?到原点距离最短的线段将是 R 中的下一段。这可能是 n^2。太慢了?
-
希望我能比O(n^2)做得更好
-
@RyanDelucchi:从侧面还是从顶部远足?如果是side,那么一切都可以按x轴排序,但我认为你的问题一定更难,对吧?您正试图找出曲线等段的组合最不疯狂,对吧?
标签: algorithm language-agnostic geometry line graph-theory