DFS 와 BFS

찬들이·2022년 8월 4일
0

알고리즘

목록 보기
23/42

DFS

  • Depth First Search 의 약자로 깊이 우선 탐색을 위한 알고리즘이다.
  • 자기 자신을 호출하는 순환 알고리즘 형태를 지닌다. (stack, 재귀)
  • 모든 노드를 방문하고자 할 때 쓰인다.

static void dfs(int x){
        if(visited[x]) return;
        visited[x] = true;
        System.out.print(x+" ");
        for (int i = 1; i < node.length; i++) {
            if(node[x][i] == 1){
                dfs(i);
            }
        }
    }

BFS

  • Bread First Search의 약자로 너비 우선 탐색을 위한 알고리즘이다.
  • BFS는 DFS와 다르게 재귀를 사용하지 않고, 큐를 이용한 반복문을 사용한다. (선입선출 구조)
  • 두 노드 사이에 최단경로를 찾을 때나, 모든 노드를 방문하고자 할 때 쓰인다.
  • 속도는 DFS보다 빠르다.

static void bfs(int x){
        Queue<Integer> qu = new LinkedList();
        qu.offer(x);
        visited[x] =true;
        while(!qu.isEmpty()){
            x = qu.poll();
            System.out.print(x+" ");
            for (int i = 1; i < node.length; i++) {
                if(!visited[i] && node[x][i] == 1 ){
                    qu.offer(i);
                    visited[i] = true;
                }
            }
        }
    }
profile
Junior-Backend-Developer

0개의 댓글