[c++] 경로 탐색 알고리즘

이번에는 C++을 사용하여 경로 탐색 알고리즘을 구현하는 방법에 대해 알아보겠습니다.

깊이 우선 탐색 (DFS)

깊이 우선 탐색은 그래프나 트리를 탐색할 때 많이 사용되는 알고리즘 중 하나입니다. 우선 주어진 시작 노드에서 한 방향으로 탐색을 진행하다가 더 이상 갈 곳이 없으면 가장 마지막에 만났던 갈림길로 돌아가서 탐색을 다시 진행하는 방식입니다.

다음은 C++으로 깊이 우선 탐색을 구현한 예시입니다.

#include <iostream>
#include <vector>

using namespace std;

vector<vector<int>> graph;
vector<bool> visited;

void dfs(int node) {
    visited[node] = true;
    cout << "Visiting node " << node << endl;

    for (int i = 0; i < graph[node].size(); i++) {
        int next = graph[node][i];
        if (!visited[next]) {
            dfs(next);
        }
    }
}

int main() {
    int n = 6; // 노드의 수
    graph.resize(n);
    visited.assign(n, false);

    // 그래프 정보 입력
    graph[0].push_back(1);
    graph[0].push_back(2);
    graph[1].push_back(3);
    graph[1].push_back(4);
    graph[2].push_back(5);

    // 시작 노드 지정
    dfs(0);

    return 0;
}

참고 자료

이제 경로 탐색 알고리즘을 구현하는 데 도움이 되길 바랍니다.