我有一个几何无向平面图,即每个节点都有一个位置并且没有两条边交叉的图,我想找到所有没有边交叉的循环。
这个问题有什么好的解决方案吗?
我打算做的是一种A*
类似的解决方案:
- 将最小堆中的每条边作为路径插入
- 使用每个选项扩展最短路径
- 剔除循环回到起点以外的路径(可能不需要)
- 剔除将是第三个使用给定边缘的路径
有没有人看到这个问题?它甚至会起作用吗?
我有一个几何无向平面图,即每个节点都有一个位置并且没有两条边交叉的图,我想找到所有没有边交叉的循环。
这个问题有什么好的解决方案吗?
我打算做的是一种A*
类似的解决方案:
有没有人看到这个问题?它甚至会起作用吗?
我的第一直觉是使用类似于墙跟随迷宫求解器的方法。本质上,遵循边,并始终从顶点中取出最右边的边。使用此方法遇到的任何循环都将成为面的边界。您必须跟踪您在哪个方向上遍历了哪些边。一旦您在两个方向上遍历了一条边,您就已经确定了它所分离的面。在两个方向上遍历所有边后,您将通过边界识别所有面。
一个简单的方法是简单地出去枚举每张脸。原理很简单:
走瓷砖由以下方式执行:
我希望这是有道理的;它可能需要一些图表来解释......