目录
深度优先搜索(DFS)和广度优先搜索(BFS)是图遍历中常用的两种搜索算法。它们在解决许多与图相关的问题时都有着重要的应用。本文将介绍深度优先搜索和广度优先搜索的原理,以及它们在实际问题中的应用,并通过C++代码示例来演示它们的实现。
深度优先搜索(DFS)
深度优先搜索是一种通过遍历图的方式来探索所有可能的路径,直到找到目标节点或无法继续搜索为止。其基本原理是沿着图的一条路径尽可能深入地探索,直到到达不能再深入的节点,然后返回上一级节点,继续探索其他路径。DFS使用栈数据结构来保存节点,并且一般采用递归或迭代的方式实现。
下面是一个使用DFS搜索图的简单示例代码:
#include <iostream>
#include <vector>
using namespace std;
void DFS(int node, vector<vector<int>>& graph, vector<bool>& visited) {
visited[node] = true;
cout << node << " ";
for (int neighbor : graph[node]) {
if (!visited[neighbor]) {
DFS(neighbor, graph, visited);
}
}
}
int main() {
int n = 7; // 图中节点