๐Ÿ’ป

[์•Œ๊ณ ๋ฆฌ์ฆ˜][DFS์™€BFS ์™„์ „์ •๋ณต] ๊ทธ๋ž˜ํ”„์˜ ํƒ์ƒ‰ ๋ณธ๋ฌธ

์•Œ๊ณ ๋ฆฌ์ฆ˜/๊ธฐ๋ณธ๊ธฐ ๋‹ค์ง€๊ธฐ

[์•Œ๊ณ ๋ฆฌ์ฆ˜][DFS์™€BFS ์™„์ „์ •๋ณต] ๊ทธ๋ž˜ํ”„์˜ ํƒ์ƒ‰

๋˜ํšจ๋‹ˆ 2020. 2. 29. 23:17

์ด์ „๊ธ€ )

2020/02/29 - [์•Œ๊ณ ๋ฆฌ์ฆ˜/๊ธฐ๋ณธ๊ธฐ ๋‹ค์ง€๊ธฐ] - [์•Œ๊ณ ๋ฆฌ์ฆ˜][DFS์™€BFS ์™„์ „์ •๋ณต] ๊ทธ๋ž˜ํ”„์˜ ํ‘œํ˜„

 

[์•Œ๊ณ ๋ฆฌ์ฆ˜][DFS์™€BFS ์™„์ „์ •๋ณต] ๊ทธ๋ž˜ํ”„์˜ ํ‘œํ˜„

์–ด๋Š์ •๋„ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด๋ฅผ ํ•ด ๋ณธ ์‚ฌ๋žŒ์ด๋ผ๋ฉด ์•Œ๊ฒ ์ง€๋งŒ ๋ชจ๋“  ์ฝ”๋”ฉํ…Œ์ŠคํŠธ์— ๊ฑฐ์˜ ๋‹จ๊ณจ๋กœ ์ถœ์ œ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐ”๋กœ DFS, BFS ์ด๋‹ค. ๋ฐฑ์ค€ ๋ฌธ์ œํ’€์ด๋ฅผ ํ•˜๋ฉด์„œ ๊ฐ€์žฅ ๋‚˜๋ฅผ ํž˜๋“ค๊ฒŒ ํ–ˆ๋˜ ๊ฒƒ๋„ ๋ฐ”๋กœ DFS์™€BFS!! ๊ทธ๋ž˜์„œ ๋‚˜..

hyonee.tistory.com

 2. ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰

 

DFS:๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰  -> ์ตœ๋Œ€ํ•œ ๊นŠ์ˆ™ํžˆ ๋งŽ์ด

BFS:๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰  -> ์ตœ๋Œ€ํ•œ ๋„“๊ฒŒ ๊ฐ€๋Š” ๊ฒƒ  ๋ชจ๋“ ๊ฐ€์ค‘์น˜๊ฐ€ 1์ธ๊ฒฝ์šฐ ์ตœ๋‹จ๊ฑฐ๋ฆฌ ํƒ์ƒ‰

 

- ์œ„์˜ 2๊ฐ€์ง€ ํƒ์ƒ‰ ๋ชจ๋‘ ๋ชฉ์ ์€ ๋ชจ๋“  ์ •์ ์„ 1๋ฒˆ์”ฉ ๋ฐฉ๋ฌธํ•˜๋Š” ๊ฒƒ

 

 

DFS

- ์Šคํƒ์„ ์ด์šฉํ•ด์„œ ๊ฐˆ ์ˆ˜ ์žˆ์„ ๋งŒํผ  ์ตœ๋Œ€ํ•œ ๋งŽ์ด ๊ฐ€๊ณ  ๊ฐˆ ์ˆ˜ ์—†์œผ๋ฉด ์ด์ „ ์ •์ ์œผ๋กœ ๋Œ์•„๊ฐ€์„œ ํƒ์ƒ‰์„ ๊ณ„์† ์ง„ํ–‰ํ•œ๋‹ค.

- ์„ค๋ช…์€ ์•„๋ž˜ ๊ทธ๋ฆผ์œผ๋กœ ๋Œ€์ฒดํ•œ๋‹ค. visited[]๋ฐฐ์—ด์€ ๋ฐฉ๋ฌธ ํ–ˆ๋Š” ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ์Šคํƒ์—์„œ ๋นจ๊ฐ•์ƒ‰์œผ๋กœ ํ‘œ์‹œํ•œ ๊ฒƒ์€ pop()์„ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ด๋‹ค.

 

 

์ธ์ ‘ ํ–‰๋ ฌ์„ ์ด์šฉํ•œ ๊ตฌํ˜„

 

- ์žฌ๊ท€ ํ˜ธ์ถœ์„ ์ด์šฉํ•ด์„œ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

- O(V^2)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค. 

void dfs(int x){
      visited[x] = true;
      printf("%d ", x);
      for(int i=1; i<=n; i++){
            if(a[x][i]==1 && visited[i]==false){ // ๊ฐ„์„ ์ด ์žˆ๊ณ , ์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ 
                dfs(i);  // i๋ฅผ ๋ฐฉ๋ฌธํ•œ๋‹ค
            }
      }
}

 

์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ด์šฉํ•œ ๊ตฌํ˜„

 

- ์žฌ๊ท€ ํ˜ธ์ถœ์„ ์ด์šฉํ•ด์„œ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

- a[x] : x์™€ ์—ฐ๊ฒฐ๋œ ์ •์ 

- ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ์˜ ๊ฒฝ์šฐ ํ•ญ์ƒ ์žˆ๋Š” ๊ฐ„์„ ๋งŒ ์ €์žฅ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„์„ ์ด ์žˆ๋Š”์ง€ ์ฒดํฌํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

- ๋ชจ๋“  ์ •์ ๊ณผ ๋ชจ๋“  ๊ฐ„์„ ์„ ํ•œ๋ฒˆ์”ฉ๋งŒ ๋ฐฉ๋ฌธํ•˜๊ธฐ ๋•Œ๋ฌธ์— O(V+E) ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค. 

 void dfs(int x){
      visited[x] = true;
      printf("%d ", x);
      for(int i=0; i<a[x].size() ; i++){
      		int y = a[x][i];
            if(visited[y] == false){ // ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜์œผ๋ฉด ๋ฐฉ๋ฌธํ•œ๋‹ค
                dfs(y);  
            }
      }
}

BFS 

- ํ๋ฅผ ์ด์šฉํ•ด์„œ ํ˜„์žฌ ์œ„์น˜์—์„œ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๋ชจ๋‘ ํ์— ๋„ฃ๋Š” ๋ฐฉ์‹์ด๋‹ค.

- ํ์— ๋„ฃ์„ ๋•Œ ๋ฐฉ๋ฌธํ–ˆ๋‹ค๊ณ  ์ฒดํฌ ํ•ด์•ผํ•œ๋‹ค.  

- visited[]๋ฐฐ์—ด์€ ๋ฐฉ๋ฌธํ–ˆ๋Š” ์ง€ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฐ์—ด์ด๊ณ , ํ์˜ ๋นจ๊ฐ•์ƒ‰ ์ˆซ์ž๋Š” pop()์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. 

 

 

 

์ธ์ ‘ ํ–‰๋ ฌ์„ ์ด์šฉํ•œ ๊ตฌํ˜„


- Queue ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•ด์„œ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

- dfs์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ O(V^2) ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

- visited[] : boolํƒ€์ž…์œผ๋กœ ๋ฐฉ๋ฌธํ–ˆ์œผ๋ฉด true, ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์œผ๋ฉด false์ด๋‹ค.

queue <int> q;
visited[1] = true; q.push(1);  // ์‹œ์ž‘์ 
while(!q.empty()){
      int x = q.front(); 
      q.pop();
      printf("%d ",x);
      for(int i=1; i<=n; i++){
            if(a[x][i]==1 && visited[i]==false){
                visited[i] = true;
                q.push(i);
            }
     }
}

 

์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ด์šฉํ•œ ๊ตฌํ˜„

- Queue ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•ด์„œ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

- dfs์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ O(V+E)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค. 

queue <int> q;
visited[1] = true; q.push(1);  // ์‹œ์ž‘์ 
while(!q.empty()){
      int x = q.front(); 
      q.pop();
      printf("%d ",x);
      for(int i=1; i<=a[x].size(); i++){
            int y = a[x][i];
            if(visited[y] == false){
                visited[y] = true;
                q.push(y);
            }
     }
}

 

 

 

 

 

์ž! ์ด์ œ ์ง€๊ธˆ๊นŒ์ง€ ๊ณต๋ถ€ํ–ˆ๋˜ DFS์™€BFS ๋ฅผ ์ด์šฉํ•ด์„œ ํ’€ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ์ ์ธ ๋ฌธ์ œ๋ฅผ ๋„์ „ํ•ด๋ณด์ž

 

+ ๋ฌธ์ œ ํ’€๊ธฐ / ํ•ด์„ค)

2020/03/01 - [์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฌธ์ œํ’€์ด] - [๋ฐฑ์ค€] DFS์™€BFS - 1260.DFS์™€ BFS

 

[๋ฐฑ์ค€] DFS์™€BFS - 1260.DFS์™€ BFS

๋ฌธ์ œ ๊ทธ๋ž˜ํ”„๋ฅผ DFS๋กœ ํƒ์ƒ‰ํ•œ ๊ฒฐ๊ณผ์™€ BFS๋กœ ํƒ์ƒ‰ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ๋‹จ, ๋ฐฉ๋ฌธํ•  ์ˆ˜ ์žˆ๋Š” ์ •์ ์ด ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒฝ์šฐ์—๋Š” ์ •์  ๋ฒˆํ˜ธ๊ฐ€ ์ž‘์€ ๊ฒƒ์„ ๋จผ์ € ๋ฐฉ๋ฌธํ•˜๊ณ , ๋” ์ด์ƒ ๋ฐฉ๋ฌธํ•  ์ˆ˜ ์žˆ๋Š” ์ ์ด ์—†..

hyonee.tistory.com

 

๋ฐ˜์‘ํ˜•
Comments