给出起始顶点的图形的子图

问题描述

| 我想获得给定顶点开始位置的图的子图。连接到起始顶点的所有顶点均视为应返回的子图的一部分。 我已经解决了这一要求,但好奇是否有更有效的解决方案。我想出的解决方案是对图形进行DFS记录,并记录在集合S中遇到的每个顶点。然后,我简单地从原始图形中取出所有与S和I中的一个顶点相连的边。从中建立一个子图。原始图中的边存储在C#字典中,我相信它基本上是一个哈希。 DFS和BFS不起作用,因为如果两个顶点都具有相同的子对象,则BFS或DFS将不会遍历这些边之一。因此,在这种情况下,子图将包含所有正确的顶点,但会丢失一些边对。 有比我想出的解决方案更好的解决方案吗?     

解决方法

        我认为BFS遍历是最有效的算法。 如果执行BFS并让每个节点的所有邻居入队(即遍历连接到当前节点的所有边),并且仅在访问了当前节点后才中止遍历,则可以避免使用“相同的子代”描述的问题/ \“缺少边缘\”。     ,        一种“快速”算法,该算法枚举了所有的归纳子图 给定的大小可以在这里找到: http://theinf1.informatik.uni-jena.de/~wernicke/motifs-wabi2005.pdf 这有帮助吗?