Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 访问无向图中的边、顶点_Algorithm_Graph_Graph Algorithm_Depth First Search - Fatal编程技术网

Algorithm 访问无向图中的边、顶点

Algorithm 访问无向图中的边、顶点,algorithm,graph,graph-algorithm,depth-first-search,Algorithm,Graph,Graph Algorithm,Depth First Search,问题:您有一个无向图G=(V,E)(V=顶点,E=边),必须访问每个顶点并在两个方向上传递每条边 我所知道的关于图的唯一算法是DFS、BFS和一些MST(Kruskal,等等)。我的朋友和我在讨论这个问题,如果它是定向的,我只需要DFS,然后DFS转置,但不幸的是,图是无向的。我的朋友建议我们执行一个MST和一个MST,然后通过迭代那些不在MST中的边来找到剩余的边。我有点明白他的意思,但我不确定这是不是一个好办法?意见?另外,如果一条边是无向的,我怎样才能在两个方向上都通过它呢?图形是有向的还

问题:您有一个无向图
G=(V,E)
(V=顶点,E=边),必须访问每个顶点并在两个方向上传递每条边


我所知道的关于图的唯一算法是DFS、BFS和一些MST(Kruskal,等等)。我的朋友和我在讨论这个问题,如果它是定向的,我只需要DFS,然后DFS转置,但不幸的是,图是无向的。我的朋友建议我们执行一个MST和一个MST,然后通过迭代那些不在MST中的边来找到剩余的边。我有点明白他的意思,但我不确定这是不是一个好办法?意见?另外,如果一条边是无向的,我怎样才能在两个方向上都通过它呢?

图形是有向的还是无向的并不重要。您可以将每个无向边替换为两条有向边,然后对有向图执行任何算法。DFS和BFS都将遍历整个顶点和边


我想你要找的东西叫做。BFS和DFS是两种图遍历算法,它们不需要对图进行定向。另一方面,MST不是一种图遍历算法。

您可以使用DFS或BFS,这无关紧要;与DFS;只需将回溯视为沿相反方向通过边,对于BFS,您需要递归回溯,从发现最终边界的顶点集开始。关于MST:在一般情况下,这些顶点不包含它们跨越的图的所有边,这可以很容易地通过n个顶点上的树有n-1条边这一事实来证明,因此有n-1条边以上的图的MST(或任何ST)不会有图的所有边,因此在MST上操作对你没有帮助。@G.Bach我认为你是对的。DFS和BFS都将遍历所有边和顶点,但MST在这里没有帮助。@jurgenreza他想在两个方向上传递所有边(尽管我不确定在算法中“传递”边实际上意味着什么);没有修改的DFS/BFS不会在计算下一个边沿时考虑两个方向的边。你能澄清一下吗?如果目标实际上是找到一条路径,该路径至少访问每个顶点一次,并且两个方向上的每个边至少访问一次,则可以采用您的方法。如果这不是目标,只需在图的边和顶点上迭代,而不限制自己遍历图。你真正想要实现的是什么?