DFS์™€ BFS

  • ์žฌ๊ท€๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. Stack์œผ๋กœ ๊ตฌํ˜„

void dfs(int x) {
	// x๋ฅผ ๋ฐฉ๋ฌธํ–ˆ๋‹ค.
	visit[x] = true;
	
	// x์—์„œ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ณณ๋“ค์„ ๋ชจ๋‘ ๋ฐฉ๋ฌธํ•œ๋‹ค.
	for (int y : x์—์„œ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ ๋“ค) {
		if (visit[y]) // y๋ฅผ ์ด๋ฏธ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์‚ฌ์‹ค์„ ์•ˆ๋‹ค๋ฉด ๊ฐˆ ํ•„์š”๊ฐ€ ์—†๋‹ค.
			continue;
	
		// y์—์„œ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ณณ๋“ค์„ ํƒ์ƒ‰
		dfs(y);
	}
}

์‹œ๊ฐ„ ๋ณต์žก๋„ :

  • ์ธ์ ‘ ํ–‰๋ ฌ : DFS ํ•˜๋‚˜์— for loop๋ฅผ V๋งŒํผ ๋Œ๊ธฐ ๋•Œ๋ฌธ์—, O(V) ์‹œ๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค. ์ •์ ์„ ๋ฐฉ๋ฌธ ํ• ๋•Œ๋งˆ๋‹ค DFS๋ฅผ ํ˜ธ์ถœํ•˜๋Š”๋ฐ, V๊ฐœ์˜ ์ •์ ์„ ํƒ์ƒ‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— DFS์˜ ์ „์ฒด ์‹œ๊ฐ„๋ณต์žก๋„๋Š” = V * O(V) = O(V^2)

  • ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ :

    DFS์˜ ํ˜ธ์ถœ์€ ์ด V๋ฒˆ์ด๋‹ค. ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋Š” ์ •์ ์— ์—ฐ๊ฒฐ ๋˜์–ด์žˆ๋Š” ๊ฐ„์„  ๊ฐœ์ˆ˜๋งŒํผ ํƒ์ƒ‰์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  DFS ํ˜ธ์ถœ ์‹œ๊ฐ„์ด ๋™์ผํ•˜์ง€ ์•Š๋‹ค.

    ์ •์  ๋ฐฉ๋ฌธ : ๋ชจ๋“  ์ •์ ์„ ํ•œ ๋ฒˆ์”ฉ ๋ฐฉ๋ฌธํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ด O(V) ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค.

    ๊ฐ„์„  ๋ฐฉ๋ฌธ : ๊ฐ ๊ฐ„์„ ์€ ํ•œ ๋ฒˆ์”ฉ๋งŒ ํƒ์ƒ‰๋˜๋ฏ€๋กœ O(E) ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค.

    ๋”ฐ๋ผ์„œ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(V+E)๊ฐ€ ๋œ๋‹ค. ์ด๋Š” ์ •์ , ๊ฐ„์„  ๊ฐœ์ˆ˜์— ๋น„๋ก€ํ•˜๋Š” ์„ ํ˜• ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

  • ํ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

    • queue์— ์ •์ ์ด ๋‚จ์•˜๋‹ค โ†’ ์•„์ง ๋ฐฉ๋ฌธ ๊ฐ€๋Šฅํ•œ ์ ์ด ์กด์žฌํ•œ๋‹ค, ํƒ์ƒ‰ ์ค‘(while)์ด๋‹ค.

    • queue๊ฐ€ ๋น„์–ด์žˆ๋‹ค. โ†’ ์‹œ์ž‘์ ์—์„œ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์ ์„ ์ฐพ์•˜๋‹ค. ํƒ์ƒ‰์ด ๋๋‚ฌ๋‹ค.

์‹œ๊ฐ„ ๋ณต์žก๋„ :

  • ์ธ์ ‘ ํ–‰๋ ฌ : ์ •์  ํ•˜๋‚˜๋‹น for loop์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ ๋ชจ๋“  ์ •์ ์€ O(V)์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์•ˆ์—์„œ while loop๋ฅผ V๋ฒˆ ๋ฐ˜๋ณต ์‹คํ–‰ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(V^2)์ด ๋œ๋‹ค.

  • ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ : ๊ทธ๋ž˜ํ”„ ์ดˆ๊ธฐํ™”๋Š” O(V)๊ฐ€ ๊ฑธ๋ฆฌ๊ณ , ๋ฐ์ดํ„ฐ๋Š” ์ถ”๊ฐ€๋Š” O(1)๋งŒํผ ์†Œ์š”๋œ๋‹ค. ํ•˜์ง€๋งŒ ์ด๊ฑด ๋ฌด์‹œ ํ•ด๋„๋œ๋‹ค. ์ •์  ๋ฐฉ๋ฌธ : ๊ฐ ์ •์ ์„ ํ์— ๋„ฃ์„ ๋•Œ ๋ฐฉ๋ฌธํ•˜๊ฒŒ ๋œ๋‹ค. ์ •์ ์€ ํ•œ ๋ฒˆ์”ฉ๋งˆ๋А ๋ฐฉ๋ฌธํ•˜๋ฏ€๋กœ O(V) ์‹œ๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค. ๊ฐ„์„  ๋ฐฉ๋ฌธ : ๊ฐ„์„ ์„ ํƒ์ƒ‰ํ•  ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น ๊ฐ„์„ ์˜ ์—ฐ๊ฒฐ๋œ ์ •์ ์„ ํ์— ์‚ฝ์ž…ํ•œ๋‹ค. ๊ฐ„์„ ์€ ํ•œ๋ฒˆ ๋ฐฉ๋ฌธํ•˜๋ฏ€๋กœ O(E) ๋”ฐ๋ผ์„œ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„ํ•œ ์ „์ฒด ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(V+E)๊ฐ€ ๋œ๋‹ค. ์ •์ ๊ณผ ๊ฐ„์„  ์ˆ˜์— ๋น„๋ก€ํ•˜์—ฌ ์„ ํ˜• ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ๋‹ค.

Last updated