λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
μ•Œκ³ λ¦¬μ¦˜

14-3κ°•. κ·Έλž˜ν”„μ—μ„œμ˜ DFS

by devshin.kr 2020. 12. 6.
728x90

DFS(Depth-First Search) 깊이 μš°μ„  탐색

 

level order traversal (BFS)

 

inorder traversal (DFS)

pre-order traversal (DFS)

post-order traversal (DFS)

 

κ·Έλž˜ν”„μ—μ„œμ˜ DFS

1. 좜발점 sμ—μ„œ μ‹œμž‘ν•œλ‹€.

2. ν˜„μž¬ λ…Έλ“œλ₯Ό visited둜 markν•˜κ³ , μΈμ ‘ν•œ λ…Έλ“œλ“€ 쀑 unvisited λ…Έλ“œκ°€ μ‘΄μž¬ν•˜λ©΄ κ·Έ λ…Έλ“œλ‘œ κ°„λ‹€.

3. 2λ²ˆμ„ 계속 λ°˜λ³΅ν•œλ‹€.

4. λ§Œμ•½ unvisited인 μ΄μ›ƒλ…Έλ“œκ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” λ™μ•ˆ κ³„μ†ν•΄μ„œ 직전 λ…Έλ“œλ‘œ λ˜λŒμ•„ κ°„λ‹€.

5. λ‹€μ‹œ 2λ²ˆμ„ λ°˜λ³΅ν•œλ‹€.

6. μ‹œμž‘λ…Έλ“œ s둜 λŒμ•„μ˜€κ³ , 더이상 갈 곳이 μ—†μœΌλ©΄ μ’…λ£Œν•œλ‹€.

 

이 κ·Έλž˜ν”„μ—μ„œλŠ” 1-3-7-8-7-3-5-2-4-2-5-6 μˆœμ„œλ‘œ κ°„λ‹€.. (ν•˜μ§€λ§Œ μˆœμ„œλŠ” λ°”λ€” 수 μžˆλ‹€)

(s=1μ—μ„œ 3이 μ•„λ‹Œ 2λ₯Ό λ¨Όμ € λ°©λ¬Έν•  μˆ˜λ„ μžˆλ‹€.)

 

// κ°€μž₯ 첫 ν˜ΈμΆœμ€ DFS(G, s)κ°€ 될 것이닀.

DFS (G, v)
	visited[v] <- YES;	// 방문된 λ…Έλ“œλ₯Ό yes둜 ν‘œκΈ°ν•œλ‹€.
    for each node x adjacent to v do	// node v의 μΈμ ‘ν•œ λ…Έλ“œ x에 λŒ€ν•΄μ„œ 반볡 검사λ₯Ό ν•œλ‹€..
    	if visited[x] = NO then	// visited[x]κ°€ λ°©λ¬Έλ˜μ§€ μ•Šμ€ λ…Έλ“œλΌλ©΄,
        	DFS(G, x);	// DFS ν•¨μˆ˜ ν˜ΈμΆœμ„ λ°˜λ³΅ν•œλ‹€.
    end.
end.

 

* κ·Έλž˜ν”„κ°€ disconnected μ΄κ±°λ‚˜ ν˜Ήμ€ λ°©ν–₯κ·Έλž˜ν”„λΌλ©΄, DFS에 μ˜ν•΄μ„œ λͺ¨λ“  λ…Έλ“œκ°€ λ°©λ¬Έλ˜μ§€ μ•Šμ„ 수 있음

 

μ‹œκ°„λ³΅μž‘λ„ : O(n+m)

 

 

곡뢀 자료

www.inflearn.com/course/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EA%B0%95%EC%A2%8C/lecture/4107?tab=curriculum

 

μ˜λ¦¬ν•œ ν”„λ‘œκ·Έλž˜λ°μ„ μœ„ν•œ μ•Œκ³ λ¦¬μ¦˜ κ°•μ’Œ - μΈν”„λŸ°

μ˜λ¦¬ν•˜κ²Œ ν”„λ‘œκ·Έλž˜λ°μ„ ν•  수 있기 μœ„ν•œ κΈ°λ³Έ μ†Œμ–‘μΈ 'μ•Œκ³ λ¦¬μ¦˜' 을 배우고 μ‘μš©ν•˜λŠ” 방법을 λ°°μ›λ‹ˆλ‹€. μ΄ˆκΈ‰ μ•Œκ³ λ¦¬μ¦˜ μ•Œκ³ λ¦¬μ¦˜ 온라인 κ°•μ˜ ν”„λ‘œκ·Έλž˜λ°μ„ μœ„ν•œ μ•Œκ³ λ¦¬μ¦˜ κ°•μ’Œ

www.inflearn.com

 

λŒ“κΈ€