【问题标题】:How to move line segments to eliminate intersections with minimum movements?如何移动线段以消除最小移动的交叉点?
【发布时间】:2023-03-07 01:25:01
【问题描述】:

以下问题有什么算法或相关工作吗?

给定一组二维线段,如何移动线段(水平或垂直)以消除交叉点,从而最大限度地减少整体移动?可以允许端点的交叉点。

【问题讨论】:

  • 你如何定义最小?最小移动次数还是距离之和/距离平方的最小值?
  • 另外,你可以单独移动线的端点,还是线的长度和方向是常量?

标签: algorithm layout geometry line-intersection


【解决方案1】:

如果您想尽量减少分段移动次数:

您可以将线段问题转换为图形问题: 每个线段都是图的一个顶点,如果两个线段彼此相交,则两个顶点之间有一条边。您想找到包含所有边的至少一个端点的最小顶点数(因为如果您移动所有这些线段,将不再有交叉点)。这是顶点覆盖问题,不幸的是NP难,但是存在近似算法。

见:http://en.wikipedia.org/wiki/Vertex_cover_problem

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    • 1970-01-01
    • 2019-06-10
    • 1970-01-01
    • 2021-03-27
    • 2021-07-17
    • 2020-08-21
    相关资源
    最近更新 更多