出于本文的目的,通过平面图或平面地图,我将指的是可以在平面中绘制的抽象图(或等效地在球体上),与每个顶点处的边缘的圆形顺序一起根据特定的这种绘图。这些额外信息决定了球体上的嵌入(直到移动顶点和边缘,使得它们永远不会与任何其他顶点/边相交)。我做想要允许循环和多个边缘。
例如,假设我们已按如下方式构建图表。在平面中绘制两个顶点(A和B),以及连接这两个顶点的两条边。两个边缘一起形成一个简单的闭合曲线\ gamma。现在再添加两个顶点A'和B',并用边连接A和A',B和B'连接。
根据顶点A'和B'是否由曲线\ gamma分开,这个抽象图将有两个不等价的嵌入。
我的问题是:是否有实现此类平面图的Python包?
我感兴趣的是一个可以创建平面图的绘图(当然,尊重嵌入),以及执行一些标准操作(例如,给出面数,形成双图等)的包。 / p>
如果Python中不存在这样的包,我也会对其他语言的实现感兴趣。
当然,有各种各样的软件包可以实现图形绘制和图形理论算法。但是,我没有注意到任何一种已经嵌入嵌入式图形的可能性。非常感谢参考。
编辑。让我再详细说明一下。如果球体与其自身的同胚相关,则球体中相同图形的两个嵌入是等效的。如上所述,平面图的嵌入通常不是唯一的,因此我要求的是不与测试平面度图并绘制其一些嵌入相同。
有几种组合方式可以将嵌入编码到这种等效性。可能最简单的是在每个顶点记录边缘的循环次序(“旋转系统”),但还有许多其他的。有关讨论和参考,请参阅the article on graph embeddings on Wikipedia。
人们可能希望对这种组合嵌入进行明显的操作,例如,找到图形的面,找到边/顶点相邻的面,在面上插入一个顶点,细分边,绘制嵌入图等。
是否有一个或多个这些数据结构的实现表示Python中可用的组合图嵌入? (我注意到图形嵌入在一般表面上是有意义的,尽管我主要对球体的情况感兴趣。)
答案 0 :(得分:0)
我不确定我是否完全理解你的要求,但你有没有看过这个 planarity library。它是c(++?)平面度算法实现的cython包装器,包括绘图。 我一直在使用networkX。
答案 1 :(得分:0)
我刚刚注意到networkx确实包含一个用于我描述的目的的类,即PlanarEmbedding。参见https://networkx.github.io/documentation/latest/reference/algorithms/planarity.html
(我不确定自问了问题以来是否引入了该方法,或者我当时是否想念它。)
该类附带的方法看起来确实很基础,并且这仅实现了平面嵌入的一种可能的数据结构。我将进一步调查;如果有人知道其他实现,将不胜感激。