【发布时间】:2017-04-17 06:04:00
【问题描述】:
我正在尝试解决以下问题:假设我们得到了一堆带有一些起点和终点坐标的线段。它们都是水平的或垂直的。我正在尝试提出一种算法来计算给定段集中的组件数量。组件是一组线段,其中每个线段与至少一个其他线段相交(或者换句话说,可以从任何线段的任何点到任何其他线段上的任何点)。有没有可能比显而易见的 O(N^2) 解决方案做得更好?
【问题讨论】:
我正在尝试解决以下问题:假设我们得到了一堆带有一些起点和终点坐标的线段。它们都是水平的或垂直的。我正在尝试提出一种算法来计算给定段集中的组件数量。组件是一组线段,其中每个线段与至少一个其他线段相交(或者换句话说,可以从任何线段的任何点到任何其他线段上的任何点)。有没有可能比显而易见的 O(N^2) 解决方案做得更好?
【问题讨论】:
你可以使用扫线算法(1)(2)寻找交叉点。
使用这些交叉点创建具有union-find algorithm 的段集群。
请注意,当交叉点计数很高(大约 O(N^2))时,这种方法可能是二次方法。
【讨论】: