早上好,
我是图形界的新手,我对DFS有一些疑问,我在其他主题中找不到。
我拿了网站的DFS代码:
http://www.geeksforgeeks.org/depth-first-traversal-for-a-graph/
(我采用了Java实现)
图表内置于主要功能:
g.addEdge(0, 1);
g.addEdge(0, 2);
g.addEdge(1, 2);
g.addEdge(2, 0);
g.addEdge(2, 3);
g.addEdge(3, 1);
g.addEdge(2, 4);
但如果我像这样更改第一行:
g.addEdge(1, 0);
DFS结果不同,因为它是有向图。那么将DFS实现为无向图的最佳方式是什么,而不需要进行两次"搜索"在名单上? (我认为这是最简单的方法)。 我找到了几种方法来实现DFS到有向图,但没有一种方法可以实现无向图。 DFS会用于有向图吗?
关于图表的最佳书籍是什么?
此致
安东尼奥
答案 0 :(得分:0)
您使用的代码实际上非常好。 处理此问题的最简单方法是更改图形而不是DFS的实现。因此,您可以按如下方式更改addEdge函数,以便在两个方向上添加边缘:
void Graph::addEdge(int v, int w)
{
adj[v].push_back(w); // Add w to v’s list.
adj[w].push_back(v);
}