平面嵌入中最左边的路径

时间:2014-05-06 12:43:39

标签: algorithm planar-graph

我有一个定向平面图。因此我可以进行平面嵌入。 我有节点s和t,我想根据特定的嵌入找到s和t之间最左边的路径。

左边被定义为评论中描述的大卫。这意味着“左”是相对于无限面和顺时针/逆时针惯例定义的。如果循环p * rev(q)至少与相对于将无限面缠绕为任何其他面的逆时针方向,则路径q留有具有相同端点的路径p。

怎么可能? 我不知道如何告诉我的程序是否有另一个路径。我读了几篇论文,但他们没有解释如何实现这一点。 有人有想法吗?

2 个答案:

答案 0 :(得分:0)

一个简单的平面图没有左右概念,它可以被镜像并旋转仍然是平面的。 你必须在图表中嵌入某种方向。

如果节点的最大外出度为2,则可以标记左边缘。 要找到最左边的路径,您可以从s开始进行深度优先搜索。 到达新节点时,请始终先使用左边缘。 当达到t时算法应该终止,留下最左边的路径。

在任意最大输出度的情况下,您可以用从左到右的数字增加标记边缘。

答案 1 :(得分:0)

正如user3568609所说,平面嵌入在球体上,没有 左右的自然定义。你需要选择一个无限的 面对第一;对于流算法(我认为这就是你所做的 实施),选择面部事件通常很方便 吨。让我们假设无限的面孔是偶然的。该 逆时针方向的半边缘到t现在有一个自然的差距在哪里 无限的面孔是。

.4  3| /2  .
 \___|/___/
     t  1

(infinite face)

以逆时针顺序访问半边,示例中为1到4。 这是深度优先遍历,因此我们充分探索1的连接 在2之前等等当你从另一个顶点到达另一个顶点v时 那么图片看起来像这样

|3   |2
 \___|___/1
     v
     |
     u

我再次标记了正确的遍历顺序。