折线图

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

Bases: BaseTransform

返回输入图的线图。

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

该模块仅适用于同构图。

Parameters:

回溯 (bool, 可选) – 如果为False,将会有一条边从对应于\((u, v)\)的线图节点指向对应于\((v, u)\)的线图节点。

示例

以下示例使用PyTorch后端。

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

案例1:回溯为真

>>> 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:回溯为假

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