dgl.metapath_reachable_graph

dgl.metapath_reachable_graph(g, metapath)[source]

返回一个图,其中任何节点 u 的后继节点是可以通过给定元路径从 u 到达的节点。

如果起始节点类型 s 和结束节点类型 t 相同,则返回一个节点类型为 s = t 的同构图。否则,返回一个源节点类型为 s、目标节点类型为 t 的单向二部图。

在这两种情况下,如果存在一条从节点 u 到节点 v 且与元路径匹配的路径,则节点 uv 将通过边 (u, v) 连接。

结果图保留了原始图中类型为 st 的节点集合,即使它们可能没有邻居。

原始图中源/目标节点类型的特征将被复制到新图。

参数:
返回:

一个同构图或单向二部图。无论输入图在 CPU 还是 GPU 上,结果图都将在 CPU 上。

返回类型:

DGLGraph

注意

此函数会丢弃批次信息。请在变换后的图上使用 dgl.DGLGraph.set_batch_num_nodes()dgl.DGLGraph.set_batch_num_edges() 来保留这些信息。

示例

>>> g = dgl.heterograph({
...     ('A', 'AB', 'B'): ([0, 1, 2], [1, 2, 3]),
...     ('B', 'BA', 'A'): ([1, 2, 3], [0, 1, 2])})
>>> new_g = dgl.metapath_reachable_graph(g, ['AB', 'BA'])
>>> new_g.edges(order='eid')
(tensor([0, 1, 2]), tensor([0, 1, 2]))