몽셀통통의 블로그

dfs를 사용해야 할때 tip 본문

IT/자료구조 && 알고리즘

dfs를 사용해야 할때 tip

몽통이 2018. 2. 17. 03:44




여러 알고리즘 문제에서 완전 탐색으로 걸러지지 않을 것 같은 느낌의 문제가 종종 등장한다.

이러한 대부분의 경우는 dfs를 사용하여야 하는데 이 알고리즘을 사용해 보지 않는 사람들은

이해하기 어려울 수 있다.


이 알고리즘도 마찬가지로 재귀함수를 토대로 만들어 진다.


    

 

  int visit[MAX] = { 0 };

  int n;

 

   void function(int i, int j){

      if ( n==d ) return;


      for(int h=0 ; h<n ; h++){

         if(!visit[i]){

            visit[h] = 1;

            function( //특정 조건);

            visit[h] = 0;

            }

      }

   }


 

요정도만 해주어도 dfs를 통해 모든 경우의 수를 탐색 할 수 있다.


- 왜 완탐색으로는 해결되지 않는 문제가 위 방법으로는 잘 해결될까? 탐색 방법 자체는

비슷한 것 같은데...  좀더 고민해 봐야겠다.


- (3/18) 이 방법을 쓰면 시간초과뜨는 경우가 잦다... 전수조사를 하기 때문인 것같은데

더 최적화 할 방법은 없을까




'IT > 자료구조 && 알고리즘' 카테고리의 다른 글

비트마스트 알고리즘 개념 및 기본  (0) 2018.05.30
visit 알고리즘  (0) 2018.01.31