图的遍历与应用
1. 图的遍历算法
图的遍历是图论中一个重要的基础操作,广泛应用于各种图论问题中。常见的图遍历算法有两种:深度优先搜索(DFS)和广度优先搜索(BFS)。这两种算法分别适用于不同的应用场景,各有优劣。
1.1 深度优先搜索(DFS)
深度优先搜索是一种递归算法,它从图中的一个顶点开始,尽可能深地搜索图的分支,直到不能再深入为止,然后回溯到上一个顶点继续搜索其他分支。DFS适用于连通性检测、拓扑排序、循环检测等场景。
DFS伪代码
void DFS(Graph g, int v, vector<bool>& visited) {
visited[v] = true;
cout << v << " ";
for (auto adj : g.adjacent(v)) {
if (!visited[adj]) {
DFS(g, adj, visited);
}
}
}
1.2 广度优先搜索(BFS)
广度优先搜索是一种非递归算法,它从图中的一个顶点开始,逐层向外扩展,先访问离起点最近的顶点,再逐步访问更远的顶点。BFS适用于最短路径问题、连通分量检测等场景。
BFS伪代码
void BFS(Graph g, int start, vector<bool>& vi
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



