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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。