Algorithm 平面度测试,边缘类型除外

Algorithm 平面度测试,边缘类型除外,algorithm,graph,graph-algorithm,planar-graph,Algorithm,Graph,Graph Algorithm,Planar Graph,我试图了解平面度检查算法(如LR平面度、PC树、PQ树等)是否可以增强,以便根据其类型允许某些边交叉 我有一个有3种不同边的图:a,B,C 类型A的边不能与任何其他边交叉 B型边缘可以与C型边缘交叉,反之亦然 我已经看过一个简单的LR平面性测试,但无法成功实现此功能 是否可以采用现有算法并使用这些规则对其进行调整,或者是否已经存在支持此规则的算法?选取仅包含A类边的子图,并使用标准平面度测试算法查看其是否为平面 注:一个图表可能[第60页],因此您可能需要对此进行说明 为类型a边进行平面嵌入后,

我试图了解平面度检查算法(如LR平面度、PC树、PQ树等)是否可以增强,以便根据其类型允许某些边交叉

我有一个有3种不同边的图:a,B,C

类型A的边不能与任何其他边交叉

B型边缘可以与C型边缘交叉,反之亦然

我已经看过一个简单的LR平面性测试,但无法成功实现此功能


是否可以采用现有算法并使用这些规则对其进行调整,或者是否已经存在支持此规则的算法?

选取仅包含A类边的子图,并使用标准平面度测试算法查看其是否为平面

注:一个图表可能[第60页],因此您可能需要对此进行说明

为类型a边进行平面嵌入后,可以生成面列表

如果B类边的端点都位于嵌入的单个面边界上,则只能以平面方式(不与任何A类边相交)绘制从A类边生成的平面子图中的两个顶点连接起来的B类边的路径。根据Jordan曲线定理,将其添加到嵌入中,将执行嵌入的面平分,并生成两个子面

注意:同样,一条路径可能能够平分多个面,因此您可能有多个潜在的嵌入

继续执行类型B边/路径的嵌入,这些边/路径在两端连接到类型A子图,并在每一步对分一个面,直到到达没有可行面可对分的点(且图形为非平面)或类型A和类型B边为平面

由于类型C边可以与类型B交叉(反之亦然),因此可以将类型C边(使用相同的面平分方法)嵌入到类型A子图中,而不考虑类型B边(因为它们可以交叉)

对于类型A和B或C,这可以在O(N)中完成(因为这实际上只是一个普通的平面嵌入),但您可能需要测试多个嵌入,以找到同时适用于A、B和C的面方向,并且生成的算法几乎肯定不是O(N)


或者,如果您在生成不同嵌入时知道面排列的约束,则添加某种基于约束的解算器以协调嵌入中路径的方向可能会有所帮助。

在不应用平面度测试的情况下,获取具有B型和C型边的子图,然后尝试通过应用平面度测试算法将类型A的边添加到子图。

由B和C边形成的子图可能是断开连接的,并且可能有多个可能的嵌入。如何确定将A边添加到哪个嵌入?如何修改现有的平面度测试算法,从一个部分嵌入的图开始?我认为这可能确实是最好的解决方案。就我个人而言,我研究了在简单的LR平面性算法中添加自定义“冲突”规则-但是,这只在LR平面性碰巧生成正确的嵌入时偶尔起作用…@Henri我链接的平面性测试算法可用于生成O(N)中双连通图的所有可能嵌入第一次嵌入的时间和内存,以及所有嵌入的O(N.P)时间(其中N是顶点数,P是可能的嵌入数),并讨论为连通图生成所有可能的嵌入(但可能没有O(N.P)算法)。