当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python NetworkX PlanarEmbedding用法及代码示例


本文简要介绍 networkx.algorithms.planarity.PlanarEmbedding 的用法。

用法:

class PlanarEmbedding(incoming_graph_data=None, **attr)

表示具有平面嵌入的平面图。

平面嵌入由 combinatorial embedding 给出。

邻居排序:

与通常的图结构相比,嵌入还存储每个顶点的所有邻居的顺序。邻居的顺序可以按顺时针 (cw) 方向或逆时针 (ccw) 方向给出。此顺序存储为底层有向图中的边属性。对于边 (u, v),边属性 ‘cw’ 设置为 u 的邻居,紧跟在 v 之后,顺时针方向。

为了使 PlanarEmbedding 有效,它必须满足多个条件。可以使用check_structure() 方法检查是否满足这些条件。条件是:

  • 边必须是双向的(因为边属性不同)
  • 每条边都必须具有与正确的平面嵌入相对应的 ‘cw’ 和 ‘ccw’ 属性。
  • 非零度的节点必须具有节点属性‘first_nbr’。

只要PlanarEmbedding 无效,就应该调用以下方法:

即使该图是 nx.DiGraph 的子类,它仍然可以用于需要无向图的算法,因为方法 is_directed() 被重写。这是可能的,因为有效的 PlanarGraph 必须在两个方向上都有边。

半边:

add_half_edge_ccw 等方法中,使用术语 “half-edge”,该术语在 doubly connected edge lists 中使用。用于强调边仅在一个方向,并且存在相反方向的另一半边。虽然传统边总是有两个紧邻的面(包括外面),但可以分配每个半边 exactly one 面。对于半边 (u, v),其方向使得 u 低于 v,则属于 (u, v) 的面位于该半边的右侧。

例子

创建星图的嵌入(比较 nx.star_graph(3) ):

>>> G = nx.PlanarEmbedding()
>>> G.add_half_edge_cw(0, 1, None)
>>> G.add_half_edge_cw(0, 2, 1)
>>> G.add_half_edge_cw(0, 3, 2)
>>> G.add_half_edge_cw(1, 0, None)
>>> G.add_half_edge_cw(2, 0, None)
>>> G.add_half_edge_cw(3, 0, None)

或者,同样的嵌入也可以逆时针方向定义。以下结果完全相同 PlanarEmbedding:

>>> G = nx.PlanarEmbedding()
>>> G.add_half_edge_ccw(0, 1, None)
>>> G.add_half_edge_ccw(0, 3, 1)
>>> G.add_half_edge_ccw(0, 2, 3)
>>> G.add_half_edge_ccw(1, 0, None)
>>> G.add_half_edge_ccw(2, 0, None)
>>> G.add_half_edge_ccw(3, 0, None)

创建图表后,可以验证PlanarEmbedding 对象是否正确:

>>> G.check_structure()

相关用法


注:本文由纯净天空筛选整理自networkx.org大神的英文原创作品 networkx.algorithms.planarity.PlanarEmbedding。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。