當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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