2013-01-09 35 views
2

我有一个表示一组依赖关系的大图。仅在通过给定顶点连接的顶点的拓扑排序图上

  • A - >乙
  • A - >Ç
  • 乙 - >˚F
  • Ç - “G
  • d - >电子
  • ë - >大号
  • 的F - >ħ
  • 的F - >我
  • ħ - >ķ
  • 的J - >ķ

鉴于乙作为起始节点,结果需要是:BFIHK

我不需要任何其他节点,因为它们不能从B.

的用户到达可以指定一个节点,我需要收集这些路径中的所有路径和节点,并打印这些节点的拓扑排序。

目前我通过

  1. 实施这个创建一个新的图形
  2. 提取从给定节点的所有输出边沿。
  3. 在图形中添加这些边。从这些边缘获取节点并将它们添加到新图形中。
  4. 对于步骤3,重复(2)每个节点(3)
  5. 在新图中,执行拓扑排序,并得到节点

    的顺序是否有其他更好的办法做到这个或已知的算法用于查找节点子集的拓扑排序?

回答

0

我想看一下depth_first_visit()函数和boost提供的Visitor Pattern。 Visitor Pattern允许您在树搜索时检查顶点和边。 depth_first_visit()函数允许您从特定顶点开始DFS搜索。