dgl.metapath_reachable_graph

dgl.metapath_reachable_graph(g, metapath)[source]

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

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

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

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

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

Parameters:
  • g (DGLGraph) – The input graph

  • metapath (list[str or tuple of str]) – 以边类型列表形式表示的元路径

Returns:

一个同质或单向的二部图。无论输入图是在CPU还是GPU上,它都会在CPU上。

Return type:

DGLGraph

注释

This function discards the batch information. Please use dgl.DGLGraph.set_batch_num_nodes() and dgl.DGLGraph.set_batch_num_edges() on the transformed graph to maintain the information.

示例

>>> 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]))