์ž๋ฃŒ ๊ตฌ์กฐ

category:Programming
instructor:๋‚จ์›ํ™
provide:KOCW,๊ฑด๊ตญ๋Œ€ํ•™๊ต

KOCW์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ฑด๊ตญ๋Œ€ ๋‚จ์›ํ™ ๊ต์ˆ˜์˜ ๊ฐ•์˜.

ํž™

date:
2025-09-03
order:
17

ํž™Heap ์ด๋ž€?

์ €๋ฒˆ ์‹œ๊ฐ„์— ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์ž๋ฃŒ๊ตฌ์กฐ๋ณ„๋กœ ๊ตฌํ˜„ํ•  ๋•Œ์˜ ์žฅ๋‹จ์ ์„ ๋ณด์•˜๋‹ค. ํŠนํžˆ ๊ท ํ˜• ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ๋กœ ๊ตฌํ˜„ํ•œ๋‹ค๋ฉด ๊ฐ€์žฅ ์•ˆ์ •์ ์ด๋ฉด์„œ ๋น ๋ฅธ $O(logn)$ ๋ณต์žก๋„๋กœ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ์ด๋ฃจ์–ด์ง€๋Š” ๊ฒƒ์„ ๋ณด์•˜๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด์ง„ ํž™์„ ํ†ตํ•ด ๊ตฌํ˜„ํ•˜๋ฉด๊ฒ€์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ์—๋Š” $O(logn)$์˜ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€์ง€๋งŒ, ์ตœ์†Œ/์ตœ๋Œ€ ๊ฐ’ ์ฐพ๊ธฐ์—๋Š” $O(1)$์˜ ๋ณต์žก๋„๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. (์ž์ฃผ ํ˜„์žฌ ์ƒํ™ฉ์„ ํ™•์ธํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— ์ž์ฃผ ์‚ฌ์šฉ๋ ๊ฒƒ์ด๋ผ๋Š” ๊ฑธ ์•Œ ์ˆ˜ ์žˆ๋‹ค.)

ํž™์˜ ์†์„ฑ

ํŠธ๋ฆฌ์™€ ๋น„์Šทํ•˜๋‹ค. (๋ช‡ ๊ฐ€์ง€ ์†์„ฑ์„ ๊ฐ€์ง€๋Š” ํŠธ๋ฆฌ์ด๋‹ค.) ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉ๋˜๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ํž™์€ ์ด์ง„ ํž™ binary heap์ด๋ฏ€๋กœ ์ด์ง„ ํž™์„ ๊ธฐ์ค€์œผ๋กœ ์‚ดํŽด๋ณธ๋‹ค.

  • ํž™์˜ ๊ธฐ๋ณธ ์š”๊ตฌ์‚ฌํ•ญ์€ ๋…ธ๋“œ์˜ ๊ฐ’์ด ๊ทธ ์ž์‹ ๋…ธ๋“œ '์ด์ƒ' ํ˜น์€ '์ดํ•˜'์—ฌ์•ผ ํ•œ๋‹ค. (ํž™ ์†์„ฑ)
    • MIn Heap : ๋…ธ๋“œ์˜ ๊ฐ’์ด ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐ’๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์•„(์ดํ•˜)์•ผ๋งŒ ํ•œ๋‹ค.
    • Max Heap : ๋…ธ๋“œ์˜ ๊ฐ’์ด ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐ’๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์•„(์ด์ƒ)์•ผ๋งŒ ํ•œ๋‹ค.
  • ํŠธ๋ฆฌ์˜ ๋†’์ด h๊ฐ€ ์žˆ์„๋•Œ, ๋ชจ๋“  ๋ฆฌํ”„ ๋…ธ๋“œ๋“ค์ด hํ˜น์€ h-1 ๋ ˆ๋ฒจ์— ์žˆ์–ด์•ผํ•œ๋‹ค. (์ฆ‰ '์™„์ „complete ์ด์ง„ ํŠธ๋ฆฌ'์—ฌ์•ผ ํ•œ๋‹ค.)

๊ตฌํ˜„

ํŠธ๋ฆฌ์™€ ๋‹ฌ๋ฆฌ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•ด์„œ, ์ฆ‰ ํฌ์ธํ„ฐ ์—†์ด ์ธ๋ฑ์Šค๋งŒ ์‚ฌ์šฉํ•ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฃจํŠธ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ๊ฐ ๋ ˆ๋ฒจ๋ณ„๋กœ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์—ด์— ์œ„์น˜์‹œํ‚จ๋‹ค.

      17
  13        6
1    4   2    5

์ด๊ฑธ ๋ฐฐ์—ด์— ๋‹ด์œผ๋ฉด [17, 13, 6, 1, 4, 2, 5] ์ด ๋œ๋‹ค.

๋ถ€๋ชจ, ์ž์‹ ๋…ธ๋“œ ์ฐพ๊ธฐ

์–ด๋–ค ๋…ธ๋“œ์˜ ์ธ๋ฑ์Šค i๋ฅผ ๊ฐ€์ง€๊ณ  ๋ถ€๋ชจ, ์ž์‹ ๋…ธ๋“œ์˜ ์ธ๋ฑ์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. ๋ถ€๋ชจ : (i-1)/2 ์ž์‹ : (i*2)+1, (i*2)+2

6๋…ธ๋“œ์˜ ์ธ๋ฑ์Šค 2๋กœ ์ง์ ‘ ๊ตฌํ•ด๋ณด์ž. (2-1)/2=0์ด๋ฏ€๋กœ 0๋ฒˆ์งธ ๋…ธ๋“œ์ธ 17์ด ๋ถ€๋ชจ๊ฐ€ ๋งž๊ณ , (2*2)+1=5, (2*2)+2=6์ด๋ฏ€๋กœ 5,6๋ฒˆ์งธ ๋…ธ๋“œ์ธ 2์™€ 5๊ฐ€ ์ž์‹์ด ๋งž๋‹ค.

์‚ญ์ œ

Percolate Down(ํ˜๋Ÿฌ๋‚ด๋ฆฌ๊ธฐ) ๋ฐฉ์‹์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

๋ชจ๋“  ์šฐ์„ ์ˆœ์œ„ ํž™์€ ๋ฃจํŠธ ๋…ธ๋“œ๋งŒ ์ œ๊ฑฐํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ๋ฅผ ๋ฃจํŠธ ์ž๋ฆฌ์— ๋„ฃ๊ณ . (ํž™ ์กฐ๊ฑด์„ ์œ„๋ฐฐํ•˜๊ฒŒ ๋œ๋‹ค.) ๊ทธ ํ›„์— percolate down ๋ฐฉ์‹์œผ๋กœ ํž™์œผ๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค. ๋ฃจํŠธ ๋…ธ๋“œ์˜ ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ ์ž์‹์„ ๋น„๊ตํ•œ๋‹ค. ์กฐ๊ฑด์— ๋งž์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋ถ€๋ชจ์™€ ํ•ด๋‹น ์ž์‹์˜ ์œ„์น˜๋ฅผ ๋ฐ”๊พผ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋ฆฌํ”„ ๋…ธ๋“œ๊นŒ์ง€

์‚ฝ์ž…

๊ฑฐ๊พธ๋กœ percolate up ๋ฐฉ์‹์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ผ๋‹จ ๋งจ ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ์— ์ƒˆ๋กœ์šด ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๋ถ€๋ชจ์™€ ๋น„๊ตํ•ด๋ด์„œ ์กฐ๊ฑด์— ๋งž์œผ๋ฉด ๊ทธ๋Œ€๋กœ ๋„˜์–ด๊ฐ€์ง€๋งŒ, ์กฐ๊ฑด์— ๋งž์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๊ณ„์† ๋ถ€๋ชจ์™€ ๋ฐ”๊ฟ”์ค€๋‹ค.