繁体   English   中英

高效的无相交线段匹配算法

[英]Effiecient algorithm for matching line segments without intersection

我想知道一种有效的算法来匹配(划分为n / 2个不同的对)n = 2k个点在平面中的常规位置,以使连接匹配点的线段不交叉。 任何想法都会极大地帮助您。

SRKV先生,有一种更简单的方法。

  1. 根据x坐标对所有点进行排序。
  2. 现在,将最左边的点与下一个最左边的点配对。
  3. 删除我们刚刚配对的两个点。
  4. 从步骤2继续,直到没有剩余的点。

如果两个点具有相同的x坐标。 以下是平局决胜规则。

  1. 将具有较低y坐标的点连接到具有第二最低y坐标的点。
  2. 如果具有相同x坐标的奇数个点,则我们将唯一的剩余点(最高y)与下一个x坐标(如果有多个,然后是最低的)连接在一起。

排序的总复杂度O(nlogn)和遍历的O(n)渐近为O(nlogn)。

  1. 找到凸包。
  2. 围绕船体工作(假设顺时针旋转),获取相邻的顶点对并将其添加到对对中。 这样做时,请从图中删除每对。 如果船体包含偶数个点,则所有这些点都将被删除,否则将剩下1个。
  3. 如果图形仍然包含点,请转到1。

如果每个船体包含偶数个点,那么很明显,此算法找到的每对线段要么来自同一船体,要么来自不同船体-无论哪种方式,它们都不会相交。 我坚信即使某些船体具有奇数个点,它也可以工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM