【发布时间】:2011-09-15 01:19:21
【问题描述】:
我想得到一个给定顶点开始的图的子图。连接到起始顶点的所有顶点都被视为应返回的子图的一部分。
我已经解决了这个要求,但我很好奇是否有更有效的解决方案。我想出的解决方案是对图进行 DFS 并记录在集合 S 中遇到的每个顶点。然后,我只需从原始图中获取连接到 S 中的一个顶点的所有边,然后我从中构建了一个子图。原始图中的边存储在 C# 字典中,我认为它基本上是一个散列。
DFS 和 BFS 不起作用,因为如果您有两个顶点都具有相同的子节点,则 BFS 或 DFS 将不会遍历这些边之一。因此,这种情况下的子图将包含所有正确的顶点,但会遗漏一些边对。
有没有比我想出的更好的解决方案?
【问题讨论】:
-
你所拥有的图表的表示形式是什么?图是面向的吗?
-
@svick 它是定向的。如果有向的定义是不能有任何边a->b和b->a,那么是的,它也是有向的。