๊ทธ๋ž˜ํ”„

9/4/2025

'๊ทธ๋ž˜ํ”„'๋ž€?

์‹ค์ œ ์„ธ๊ณ„์˜ ๋งŽ์€ ๋ฌธ์ œ๋“ค์€ ๊ฐ์ฒด๋“ค๊ณผ ๊ทธ๋“ค์˜ ๊ด€๊ณ„๋กœ ํ‘œํ˜„๋œ๋‹ค.
๊ทธ๋ž˜์„œ ์‹ค์ œ๋กœ๋Š” ๋งŽ์€ ๋ฌธ์ œ๋“ค์ด ๊ทธ๋ž˜ํ”„ ๋ฌธ์ œ๋กœ ๋ณ€ํ˜•๋˜์–ด์„œ ํ’€์–ด์ง„๋‹ค๊ณ  ํ•œ๋‹ค.
ex) ํ•˜์ด๋ฐ๋ผ๋ฐ”๋“œ์—์„œ ๋‰ด์š•๊นŒ์ง€ ๊ฐ€๋Š” ๊ฐ€์žฅ ๋น ๋ฅธ ๋…ธ์„ ์€? ๊ฐ€์žฅ ์ €๋ ดํ•œ ๋…ธ์„ ์€?

๊ทธ๋ž˜ํ”„๋Š” '์ •์ vertex' (๋…ธ๋“œ)๋“ค๊ณผ ๊ทธ๋“ค์„ ์—ฐ๊ฒฐํ•˜๋Š” '๊ฐ„์„ edge'๋“ค์˜ ์ง‘ํ•ฉ.

  • ์—ฃ์ง€์—๋Š” ๋ฐฉํ–ฅ์ด ์žˆ์„ ์ˆ˜ ์žˆ๊ณ  ์—†์„ ์ˆ˜๋„ ์žˆ๋‹ค.
  • ์—ฃ์ง€๊ฐ€ ๋‘ ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ  ์žˆ์œผ๋ฉด ๋‘ ๋…ธ๋“œ๊ฐ€ ์ธ์ ‘adjacentํ•˜๋‹ค๊ณ  ํ•œ๋‹ค.
  • ์‚ฌ์ดํด์ด ์—†๋Š” ๊ทธ๋ž˜ํ”„๋Š” ํŠธ๋ฆฌ๋ผ๊ณ  ํ•œ๋‹ค. (์ด์ „ ์ˆ˜์—…์—์„œ ํž™์€ ํŠธ๋ฆฌ์˜ ์ผ์ข…์ด๋ผ๊ณ  ํ–ˆ๋Š”๋ฐ, ํŠธ๋ฆฌ๋Š” ๊ทธ๋ž˜ํ”„์˜ ์ผ์ข…์ธ๊ฑด๊ฐ€?)
  • ๊ฒฝ๋กœ path : ์ธ์ ‘ํ•œ ์ •์ ๋“ค์˜ sequence์ด๋‹ค.
    • simple path : ๋ฐ˜๋ณต๋˜๋Š” ์ •์ ์ด ์—†๋Š” ๊ฒฝ๋กœ.
  • ์‚ฌ์ดํด cycle : ์ฒซ ๋ฒˆ์งธ ์ ๊ณผ ๋งˆ์ง€๋ง‰ ์ ์ด ๊ฐ™์€ ๊ฒฝ๋กœ. (A,B,C,A)

๊ทธ๋ž˜ํ”„ ์ ์šฉ ์‚ฌ๋ก€

์ „์ž ํšŒ๋กœ์—์„œ ๊ฐ ๊ตฌ์„ฑ ์š”์†Œ๋“ค์˜ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ
์ˆ˜์†ก ๋„คํŠธ์›Œํฌ : ๊ณ ์†๋„๋กœ ๋„คํŠธ์›Œํฌ, ํ•ญ๊ณต ๋„คํŠธ์›Œํฌ
์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ
๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ” ๊ฐ„์˜ ์˜์กด ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ERD

๊ตฌํ˜„

๊ทธ๋ž˜ํ”„ ๋˜ํ•œ ๋‹ค๋ฅธ ADT์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ปดํ“จํ„ฐ๋กœ ๋‹ค๋ฃจ๊ธฐ ์œ ์šฉํ•œ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•ด์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

์ธ์ ‘ ํ–‰๋ ฌ

๋Œ€ํ‘œ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ธ์ ‘ ํ–‰๋ ฌAdjacency Matrix์ด ์žˆ๋‹ค.
๋ง ๊ทธ๋Œ€๋กœ matrix, ๋ฐฐ์—ด๋“ค์˜ ๋ฐฐ์—ด์ด๋‹ค.
V ๊ฐœ์˜ ๋ฐฐ์—ด์ด ์žˆ๊ณ  ๊ฐ ๋ฐฐ์—ด์€ V ๊ฐœ์˜ ์นธ์ด ์žˆ์–ด์„œ, ๋‘ ๋…ธ๋“œ ์‚ฌ์ด์— ์—ฐ๊ฒฐ์ด ์žˆ์œผ๋ฉด 1, ์—†์œผ๋ฉด 0.
๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์ธ ๊ฒฝ์šฐ ๊ฐ ๋…ธ๋“œ์—์„œ ์ถœ๋ฐœํ•˜๋Š” ์—ฃ์ง€๊ฐ€ ์žˆ์œผ๋ฉด 1, ์—†์œผ๋ฉด 0.

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

๊ทธ๋ž˜ํ”„๊ฐ€ ์กฐ๋ฐ€denseํ•˜์ง€ ์•Š๋‹ค๋ฉด, ์ฆ‰ ์—ฃ์ง€ ์ˆ˜๊ฐ€ ์ ๋‹ค๋ฉด ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋” ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์ด๋‹ค.
๊ฐ ๋…ธ๋“œ๋ณ„๋กœ ์ž์‹ ๊ณผ ์—ฐ๊ฒฐ๋œ(๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์˜ ๊ฒฝ์šฐ ์ž์‹ ์—์„œ ์ถœ๋ฐœํ•œ ์—ฃ์ง€๋งŒ) ๋…ธ๋“œ๋“ค์„ ๋ฆฌ์ŠคํŠธ์— ๋‹ด๋Š”๋‹ค.
๋‹น์—ฐํžˆ ์ธ์ ‘ํ–‰๋ ฌ์ฒ˜๋Ÿผ ๋งŽ์€ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜์ง€ ์•Š๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

๋‹จ์ 

์ด๋ ‡๊ฒŒ ๋ณด๋ฉด ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ธ์ ‘ ํ–‰๋ ฌ๋ณด๋‹ค ๋” ์ข‹์€ ๋ฐฉ์‹์˜ ๊ตฌํ˜„์ธ๊ฒƒ ๊ฐ™์€๋ฐ, ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ์˜ ๋‹จ์ ์ด ๋ฌด์—‡์ด๊ธธ๋ž˜ ์ธ์ ‘ ํ–‰๋ ฌ๋„ ์‚ฌ์šฉ๋˜๋Š”๊ฒƒ์ผ๊นŒ?
์ธ์ ‘ ๋ฆฌ์ŠคํŠธ์—์„œ ๋‘ ๋…ธ๋“œ a,b๊ฐ€ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธ(์—ฃ์ง€ํ™•์ธ) ํ•˜๋ ค๋ฉด? ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์˜ ๊ฒฝ์šฐ a->b ์—ฃ์ง€๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด?
์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋Š” '๋ฆฌ์ŠคํŠธ'๋“ค์˜ '๋ฐฐ์—ด' ์ด๋‹ˆ๊นŒ, ๋ฐฐ์—ด์—์„œ a ๋…ธ๋“œ๋ฅผ ์ฐพ๋Š”๋ฐ๋Š” O(1)์ด๊ณ  ๋ฆฌ์ŠคํŠธ์—์„œ๋Š” a๊ฐ€ ๊ฐ€์ง„ ์—ฃ์ง€์˜ ์ˆ˜ ๋งŒํผ ์กฐํšŒํ•ด์•ผํ•˜๋‹ˆ O(n) ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค. (ํ–‰๋ ฌ์˜ ๊ฒฝ์šฐ ๋ชจ๋‘ ๋ฐฐ์—ด๋กœ ์ด๋ฃจ์–ด์กŒ์œผ๋‹ˆ O(1)๋ณต์žก๋„.)

์–ด๋–ค ๋…ธ๋“œ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š”? ๋ชจ๋“  ๋…ธ๋“œ๋“ค์„ ์ˆœํšŒํ•˜๋ฉด์„œ ๊ฑฐ๊ธฐ์— ํ•ด๋‹น ๋…ธ๋“œ์™€์˜ ์—ฃ์ง€๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผํ•˜๋‹ˆ O(n^2) ์”ฉ์ด๋‚˜ ์†Œ์š”๋œ๋‹ค.

(์—ฌ๊ธฐ์„œ ์‹œ๊ฐ„ ๋ณต์žก๋„์— ์žˆ๋Š” n์€ ์ •ํ™•ํžˆ๋Š” ์ฐจ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.)

๊ฐ„์„  ๋ฆฌ์ŠคํŠธ

์ธ์ ‘ ํ–‰๋ ฌ๊ณผ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ ์™ธ์—๋„ ๊ฐ„์„  ๋ฆฌ์ŠคํŠธ, ์ธ์ ‘ ์ง‘ํ•ฉ ์ด๋ผ๋Š” ํ‘œํ˜„๋„ ์žˆ๊ธด ํ•œ๋ฐ ๊ฑฐ์˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ .
๊ฐ„์„ ๋“ค์˜ ๋ฆฌ์ŠคํŠธ๋กœ. ๋…ธ๋“œ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์€ ํ›จ์”ฌ ์ ๊ฒŒ ์ฐจ์ง€ํ•˜๊ฒ ์ง€๋งŒ, ๋ชจ๋“  ์—ฐ์‚ฐ์—์„œ ์‹œ๊ฐ„์ด ๋งŽ์ด ์†Œ์š”๋  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.

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

ํ˜น์€ ๊ทธ๋ž˜ํ”„ ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค.
ํŠธ๋ฆฌ์˜ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜(DLR, LDR, LRD)์ฒ˜๋Ÿผ ๊ทธ๋ž˜ํ”„์˜ ํŠน์ • ๋…ธ๋“œ์—์„œ ์‹œ์ž‘ํ•ด ์—ฃ์ง€๋“ค์„ ๋”ฐ๋ผ ๊ฒ€์‚ฌํ•˜๋ฉฐ ํƒ์ƒ‰ํ•œ๋‹ค.
๊ทธ๋ž˜ํ”„๋ฅผ ํƒ์ƒ‰ํ•˜๋Š”๋ฐ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

DFS

Depth First Search : ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰.
DFS๋Š” ํŠธ๋ฆฌ์˜ ์ „์œ„ ํƒ์ƒ‰ (DLR) ๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ๋™์ž‘ํ•œ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ DFS ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ๋Š” ๋ฐฉ๋ฌธ/๋น„๋ฐฉ๋ฌธ ์—ฌ๋ถ€๋ฅผ boolean์œผ๋กœ ํ‘œ์‹œํ•œ๋‹ค.(๊ฐ„ํ˜น ์„ธ ๊ฐ€์ง€ ๊ฒฝ์šฐ๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค.)

BFS

Breadth First Search : ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰.