LineGraph

class dgl.transforms.LineGraph(backtracking=True)[source]

基类: BaseTransform

返回输入图的线图。

给定图 \(G\) 的线图 \(L(G)\) 是一个图,其中 \(L(G)\) 中的节点对应于 \(G\) 中的边。对于 \(G\) 中的一对边 \((u, v)\)\((v, w)\),在 \(L(G)\) 中将存在一条从对应于 \((u, v)\) 的节点到对应于 \((v, w)\) 的节点的边。

此模块仅适用于同构图。

参数:

backtracking (bool, optional) – 如果为 False,则在线图节点中,对应于边 \((u, v)\) 的节点到对应于边 \((v, u)\) 的节点之间将存在一条边。

示例

以下示例使用 PyTorch 后端。

>>> import dgl
>>> import torch
>>> from dgl import LineGraph

情况 1:Backtracking 为 True

>>> transform = LineGraph()
>>> g = dgl.graph(([0, 1, 1], [1, 0, 2]))
>>> g.ndata['h'] = torch.tensor([[0.], [1.], [2.]])
>>> g.edata['w'] = torch.tensor([[0.], [0.1], [0.2]])
>>> new_g = transform(g)
>>> print(new_g)
Graph(num_nodes=3, num_edges=3,
      ndata_schemes={'w': Scheme(shape=(1,), dtype=torch.float32)}
      edata_schemes={})
>>> print(new_g.edges())
(tensor([0, 0, 1]), tensor([1, 2, 0]))

情况 2:Backtracking 为 False

>>> transform = LineGraph(backtracking=False)
>>> new_g = transform(g)
>>> print(new_g.edges())
(tensor([0]), tensor([2]))