9

就本文而言,平面图平面图是指可以在平面上(或等效地在球体上)绘制的抽象图,以及每个顶点的边的圆形顺序到特定的此类绘图。这个额外的信息决定了球体上的嵌入(直到移动顶点和边,使其永远不会与任何其他顶点/边相交)。我确实想允许循环和多个边缘。

例如,假设我们已经构建了如下图。在平面中绘制两个顶点(A 和 B),以及连接这两个顶点的两条边。两条边共同形成一条简单的闭合曲线 γ。现在再添加两个顶点,A' 和 B',并将 A 和 A' 与一条边连接,同时将 B 和 B' 连接起来。

这个抽象图将有两个不等价的嵌入,根据顶点 A' 和 B' 是否被曲线 \gamma 分开。


我的问题是:有没有实现这种平面图的 Python 包?

我对一个可以创建平面图绘图(当然是关于嵌入)以及执行一些标准操作(例如,给出面数,形成对偶图等)的包感兴趣

如果 Python 中不存在这样的包,我也会对其他语言的实现感兴趣。


当然,有各种包可以实现图形的绘制和图形理论算法。但是,我没有注意到在任何这些中使用已经带有嵌入的图形的可能性。参考将不胜感激。

编辑。让我进一步详细说明。如果球体与自身的同胚相关,则同一图在球体中的两个嵌入是等价的。如上所述,平面图的嵌入通常不是唯一的,所以我所要求与测试图形的平面性并绘制一些嵌入不同。

有几种组合方式可以对嵌入进行编码,直到达到这个等价。可能最简单的方法是记录每个顶点的边的循环顺序(“旋转系统”),但还有很多其他的。有关讨论和参考,请参阅Wikipedia 上有关图嵌入的文章。

人们可能希望对这种组合嵌入执行一些明显的操作,例如找到图形的面,找到边/顶点相邻的面,在面中插入顶点,细分边,绘制图片嵌入等

是否有一种或几种表示 Python 中可用的组合图嵌入的数据结构的实现?(我注意到图嵌入在一般表面上是有意义的,尽管我主要对球体的情况感兴趣。)

4

2 回答 2

2

我刚刚注意到 networkx 确实包含一个用于我描述的目的的类,即 PlanarEmbedding。请参阅https://networkx.github.io/documentation/latest/reference/algorithms/planarity.html

(我不确定自从我问这个问题以来是否已经介绍过,或者我当时是否错过了。)

该类附带的方法看起来确实非常基础,而这仅实现了平面嵌入的一种可能数据结构。我会进一步调查;如果有人知道其他实现,将不胜感激。

于 2018-08-18T01:21:25.703 回答
0

我不确定我是否完全理解您的要求,但您是否看过这个 平面库。它是平面算法的 ac(++?) 实现的 cython 包装器,包括绘图。我一直在将它与networkX一起使用。

于 2014-04-06T07:45:50.550 回答