算法 - 图深度优先搜索

时间:2015-11-17 02:56:04

标签: algorithm topological-sort

我正在学习图形和DFS,并试图做一些类似于ANT如何解决依赖关系的事情。我对某些事感到困惑,我读到的所有文章似乎都假设每个人都知道这一点。

我正在考虑使用地图> with key = file,value =密钥所依赖的文件集。

DFS算法表明,如果已经访问过节点,我必须更改节点的颜色,这意味着对同一个文件节点的引用必须在密钥中的一个与Set<>中的一个之间相同。正确?

因此,我想,每次创建一个Node(包括邻居节点),我会将它添加到另一个Collection(可能是另一个Map?),然后每当一个新的Node添加到图形时(作为关键),搜索该集合并使用该引用代替?我在浪费太多空间吗?通常怎么做?还有其他更好的方法吗?

1 个答案:

答案 0 :(得分:0)

在我学习期间,DFS算法实现如下:

将图形的所有节点放入堆栈(这是一种结构,您只能检索和删除第一个元素)。

检索第一个元素,将其设置为可见,这可以通过着色或通过设置属性来完成,让我们称之为isSeen,为真。

然后你看看那个节点的所有邻居,如果它们没有被看到,你把它们放在堆栈中。

一旦你查看了所有邻居,就从堆栈中删除节点并检索堆栈的下一个元素并执行与第一个相同的操作。

结果将是,从起始节点可以到达的所有节点都将具有设置为可见的属性。

希望这会有所帮助。