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()
相关用法
- Python NetworkX negative_edge_cycle用法及代码示例
- Python NetworkX voronoi_cells用法及代码示例
- Python NetworkX numerical_edge_match用法及代码示例
- Python NetworkX inverse_line_graph用法及代码示例
- Python NetworkX LFR_benchmark_graph用法及代码示例
- Python NetworkX write_graph6用法及代码示例
- Python NetworkX DiGraph.__contains__用法及代码示例
- Python NetworkX average_degree_connectivity用法及代码示例
- Python NetworkX eulerian_circuit用法及代码示例
- Python NetworkX single_source_dijkstra_path_length用法及代码示例
- Python NetworkX from_dict_of_dicts用法及代码示例
- Python NetworkX weisfeiler_lehman_subgraph_hashes用法及代码示例
- Python NetworkX transitive_closure_dag用法及代码示例
- Python NetworkX intersection用法及代码示例
- Python NetworkX MultiGraph.size用法及代码示例
- Python NetworkX Graph.size用法及代码示例
- Python NetworkX from_scipy_sparse_array用法及代码示例
- Python NetworkX local_and_global_consistency用法及代码示例
- Python NetworkX number_of_selfloops用法及代码示例
- Python NetworkX single_source_bellman_ford用法及代码示例
- Python NetworkX all_simple_paths用法及代码示例
- Python NetworkX Graph.to_undirected用法及代码示例
- Python NetworkX numeric_assortativity_coefficient用法及代码示例
- Python NetworkX binomial_graph用法及代码示例
- Python NetworkX dedensify用法及代码示例
注:本文由纯净天空筛选整理自networkx.org大神的英文原创作品 networkx.algorithms.planarity.PlanarEmbedding。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。