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


Python NetworkX weisfeiler_lehman_graph_hash用法及代碼示例

本文簡要介紹 networkx.algorithms.graph_hashing.weisfeiler_lehman_graph_hash 的用法。

用法:

weisfeiler_lehman_graph_hash(G, edge_attr=None, node_attr=None, iterations=3, digest_size=16)

返回 Weisfeiler Lehman (WL) 圖哈希。

該函數迭代地聚合和散列每個節點的鄰域。在對每個節點的鄰居進行散列以獲得更新的節點標簽後,將結果標簽的散列直方圖作為最終散列返回。

同構圖的哈希值是相同的,並且有力保證非同構圖將獲得不同的哈希值。詳細信息請參見[1]。

如果沒有提供節點或邊屬性,則將每個節點的度數用作其初始標簽。否則,節點和/或邊標簽用於計算散列。

參數

G: graph

要散列的圖。可以具有節點和/或邊屬性。也可以沒有屬性。

edge_attr: string, default=None

邊屬性字典中用於散列的鍵。如果為 None,則忽略邊標簽。

node_attr: string, default=None

節點屬性字典中用於散列的鍵。如果沒有,並且沒有給出edge_attr,則使用節點的度數作為標簽。

iterations: int, default=3

要執行的鄰居聚合數。對於較大的圖表,應該更大。

digest_size: int, default=16

用於散列節點標簽的 blake2b 散列摘要的大小(以位為單位)。

返回

hstring

與輸入圖的哈希對應的十六進製字符串。

注意

要返回圖的每個子圖的 WL 哈希,請使用 weisfeiler_lehman_subgraph_hashes

哈希之間的相似性並不意味著圖之間的相似性。

參考

1

Shervashidze, Nino, Pascal Schweitzer, Erik Jan Van Leeuwen, Kurt Mehlhorn, and Karsten M. Borgwardt. Weisfeiler Lehman Graph Kernels. Journal of Machine Learning Research. 2011. http://www.jmlr.org/papers/volume12/shervashidze11a/shervashidze11a.pdf

例子

兩個具有同構的邊屬性的圖,除了邊標簽的差異。

>>> G1 = nx.Graph()
>>> G1.add_edges_from(
...     [
...         (1, 2, {"label": "A"}),
...         (2, 3, {"label": "A"}),
...         (3, 1, {"label": "A"}),
...         (1, 4, {"label": "B"}),
...     ]
... )
>>> G2 = nx.Graph()
>>> G2.add_edges_from(
...     [
...         (5, 6, {"label": "B"}),
...         (6, 7, {"label": "A"}),
...         (7, 5, {"label": "A"}),
...         (7, 8, {"label": "A"}),
...     ]
... )

省略 edge_attr 選項會產生相同的哈希值。

>>> nx.weisfeiler_lehman_graph_hash(G1)
'7bc4dde9a09d0b94c5097b219891d81a'
>>> nx.weisfeiler_lehman_graph_hash(G2)
'7bc4dde9a09d0b94c5097b219891d81a'

使用邊標簽,不再為圖分配相同的哈希摘要。

>>> nx.weisfeiler_lehman_graph_hash(G1, edge_attr="label")
'c653d85538bcf041d88c011f4f905f10'
>>> nx.weisfeiler_lehman_graph_hash(G2, edge_attr="label")
'3dcd84af1ca855d0eff3c978d88e7ec7'

相關用法


注:本文由純淨天空篩選整理自networkx.org大神的英文原創作品 networkx.algorithms.graph_hashing.weisfeiler_lehman_graph_hash。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。