在C ++中实现深度优先搜索

时间:2012-09-01 05:13:31

标签: c++ depth-first-search

我正在学习数据结构和抽象数据类型,并且我一直陷入一个不断出现的问题。

我不明白计算机科学现在已有50年历史了(或更老,我不确切知道)以及数据结构,ADT和算法如何成为这一切的基础部分,但仍然存在没有任何标准。

我的问题实际上非常具体:我正在尝试在C ++中实现深度优先搜索,其方式可以适用于任何本机(内置)数据类型。我的问题是,我先在哪里看?我知道STL的堆栈类可以用来实现DFS算法,但STL是第一个看的地方吗?我应该从头开始实现DFS,使用堆栈以及我对实现此算法的了解吗?或者,当专业程序员需要进行这种搜索时,他们会找到一个库?

请注意,这个问题并不像我希望的那样具体。

2 个答案:

答案 0 :(得分:7)

Boost在这里有一个C ++深度优先搜索实现:

http://www.boost.org/doc/libs/1_42_0/libs/graph/doc/depth_first_search.html

答案 1 :(得分:5)

使用您的知识!您知道STL,并且您知道如何使用堆栈实现DFS,最重要的是,它非常简单,因此您可以自己编写代码。

大多数人都建议Boost。但如果这是你唯一需要Boost的东西,那么最好自己编写DFS。另一方面,您还想学习如何使用已有的东西。