dgl.double_radius_node_labeling

dgl.double_radius_node_labeling(g, src, dst)[source]

双半径节点标注,如论文 Link Prediction Based on Graph Neural Networks 中所介绍。

此函数计算每个节点的双半径节点标注,以标记给定目标链接在包围子图中的不同节点角色。

源节点 \(s\) 和目标节点 \(t\) 的节点标注设置为 1,从源节点或目标节点无法到达的节点的标注设置为 0。其他节点 \(l\) 的标注根据以下哈希函数定义

\(l = 1 + min(d_s, d_t) + (d//2)[(d//2) + (d%2) - 1]\)

其中 \(d_s\)\(d_t\) 分别表示到源节点和目标节点的最短距离。 \(d = d_s + d_t\)

参数:
  • g (DGLGraph) – 输入图。

  • src (int) – 目标链接的源节点 ID。

  • dst (int) – 目标链接的目标节点 ID。

返回值:

所有节点的标注。张量的形状为 \((N,)\),其中 \(N\) 是输入图中的节点数。

返回类型:

Tensor

示例

>>> import dgl
>>> g = dgl.graph(([0,0,0,0,1,1,2,4], [1,2,3,6,3,4,4,5]))
>>> dgl.double_radius_node_labeling(g, 0, 1)
tensor([1, 1, 3, 2, 3, 7, 0])