我正在为 python 使用图形工具,这是一个实现 boost 的库。我需要仅使用具有 edge_property 的边进行深度优先搜索:
rel_need = True
所以,我正在使用
gt.dfs_search(g, g.vertex(0), NeedFinder(rel_need, pred, time))
使用此 DFSVisitor:
class NeedFinder(gt.DFSVisitor):
def __init__(self, rel_need, pred, time):
self.rel_need = rel_need
self.pred = pred
self.time = time
self.last_time = 0
def discover_vertex(self, u):
self.time[u] = self.last_time
self.last_time += 1
def examine_edge(self, e):
pass
def tree_edge(self, e):
if self.rel_need[e]:
self.pred[e.target()] = int(e.source())
似乎我应该在检查边缘定义中进行某种检查,但我无法找到解释它的文档。我在 tree_edge def 中进行了检查,它成功过滤了所有 rel_need=true 边,但它不会改变遍历。如何制作仅遍历某些边缘而不是所有边缘的 DFSVisitor?