LineGraph¶
-
class
dgl.transforms.
LineGraph
(backtracking=True)[source]¶ Bases:
dgl.transforms.module.BaseTransform
Return the line graph of the input graph.
The line graph \(L(G)\) of a given graph \(G\) is a graph where the nodes in \(L(G)\) correspond to the edges in \(G\). For a pair of edges \((u, v)\) and \((v, w)\) in \(G\), there will be an edge from the node corresponding to \((u, v)\) to the node corresponding to \((v, w)\) in \(L(G)\).
This module only works for homogeneous graphs.
- Parameters
backtracking (bool, optional) – If False, there will be an edge from the line graph node corresponding to \((u, v)\) to the line graph node corresponding to \((v, u)\).
Example
The following example uses PyTorch backend.
>>> import dgl >>> import torch >>> from dgl import LineGraph
Case1: Backtracking is 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]))
Case2: Backtracking is False
>>> transform = LineGraph(backtracking=False) >>> new_g = transform(g) >>> print(new_g.edges()) (tensor([0]), tensor([2]))