gpt4 book ai didi

从图中获取所有单个区域的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:05:04 25 4
gpt4 key购买 nike

作为输入,我们只有一组段,这是一个例子:

[AB] = [(0, 0), (0, 4)]    ;    [BC] = [(0, 4), (2, 6)]

[CD] = [(2, 6), (4, 0)] ; [DA] = [(4, 0), (0, 0)]

[CE] = [(2, 6), (5, 6)] ; [EF] = [(5, 6), (5, 3)]

[FG] = [(5, 3), (3, 3)] ; [HI] = [(2, 1), (4, 5)]

[JK] = [(1, 3), (2, 3)] ; [KL] = [(2, 3), (1, 1)]

[LJ] = [(1, 1), (1, 3)]

(对不起,我尽力了,但我的图像有点模糊)

enter image description here

我需要找到所有单独的区域。从上图中我将有 3 个不同的区域,JKL、CEFG 和 {ABCD、JKL}:

enter image description here enter image description here enter image description here

请注意,不构成任何区域的段将被忽略(例如[HI]),并且区域不能被段分割,例如:

enter image description here enter image description here

我可以使用一些完全没有效率的意大利面条代码轻松完成,但在开始之前,您是否知道我可以开始研究的算法?我正在寻找尽可能高效的东西......

最佳答案

想法:尝试从连接最少的节点创建最小的环。不断缩小问题规模。

  1. 删除所有只有一个段的节点,因为它们不能属于任何区域。
  2. 在段数之后按升序对节点进行排序(您需要 O(n log log n) 或更少的算法)
  3. 选择分段最少的节点
  4. flood fill沿着线段,直到一个潜在的目标已经被填满(不要倒退)
  5. ...(这里可能有 2 个加环)
  6. 通过删除连接到所选节点的 2 个分段节点获利
  7. 更新剩余的节点段。

ToDo:如果连接最少的节点是 3 或更高...

关于从图中获取所有单个区域的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45723243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com