dgl.dfs_labeled_edges_generator
- dgl.dfs_labeled_edges_generator(graph, source, reverse=False, has_reverse_edge=False, has_nontree_edge=False, return_labels=True)[source]
在深度优先搜索(DFS)中生成按类型标记的边。
有三个标签:FORWARD(0), REVERSE(1), NONTREE(2)
FORWARD 边是指 u 已被访问但 v 未被访问的边。REVERSE 边是指 u 和 v 都已被访问且该边在 DFS 树中的边。NONTREE 边是指 u 和 v 都已被访问但该边不在 DFS 树中的边。
请参阅
networkx
的dfs_labeled_edges
获取更多详细信息。可以指定多个源节点来开始DFS遍历。需要确保每个源节点属于不同的连通组件,这样前沿可以轻松合并。否则,行为是未定义的。
- Parameters:
graph (DGLGraph) – The graph object.
source (list, tensor of nodes) – Source nodes.
reverse (bool, optional) – If true, traverse following the in-edge direction.
has_reverse_edge (bool, optional) – 如果为True,则包含反向边。
has_nontree_edge (bool, optional) – 如果为True,则包含非树边。
return_labels (bool, optional) – 如果为True,则返回每条边的标签。
- Returns:
边缘前沿列表 – 每个边缘前沿是边缘ID的列表或张量。
整数列表的列表 – 每个边缘的标签,按照与边缘前沿相同的顺序组织。
示例
给定一个图(有向,边从小节点ID到大节点ID):
2 - 4 / \ 0 - 1 - 3 - 5
边的添加顺序 [(0, 1), (1, 2), (1, 3), (2, 3), (2, 4), (3, 5)]
>>> g = dgl.graph(([0, 1, 1, 2, 2, 3], [1, 2, 3, 3, 4, 5])) >>> list(dgl.dfs_labeled_edges_generator(g, 0, has_nontree_edge=True)) (tensor([0]), tensor([1]), tensor([3]), tensor([5]), tensor([4]), tensor([2])), (tensor([0]), tensor([0]), tensor([0]), tensor([0]), tensor([0]), tensor([2]))