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


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。