๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก์šฐ์„ ์ˆœ์œ„ ํ (1)

JUINTINATION

ํž™(Heap)๊ณผ ์šฐ์„ ์ˆœ์œ„ ํ(Priority Queue)

ํž™์ด๋ž€? ์ตœ๋Œ“๊ฐ’ ๋ฐ ์ตœ์†Ÿ๊ฐ’์„ ์ฐพ์•„๋‚ด๋Š” ์—ฐ์‚ฐ์„ ๋น ๋ฅด๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทœ์น™์„ ๊ฐ–๋Š” ์™„์ „์ด์ง„ํŠธ๋ฆฌ๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ A๊ฐ€ B์˜ ๋ถ€๋ชจ๋…ธ๋“œ(parent node) ์ด๋ฉด, A์˜ ํ‚ค(key)๊ฐ’๊ณผ B์˜ ํ‚ค๊ฐ’ ์‚ฌ์ด์—๋Š” ๋Œ€์†Œ๊ด€๊ณ„๊ฐ€ ์„ฑ๋ฆฝํ•œ๋‹ค. ํž™์—๋Š” ๋‘๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค. ์ตœ๋Œ€ ํž™: ๋ถ€๋ชจ๋…ธ๋“œ์˜ ํ‚ค ๊ฐ’์ด ์ž์‹๋…ธ๋“œ์˜ ํ‚ค ๊ฐ’๋ณด๋‹ค ํ•ญ์ƒ ํฐ ํž™ ์ตœ์†Œ ํž™: ๋ถ€๋ชจ๋…ธ๋“œ์˜ ํ‚ค ๊ฐ’์ด ์ž์‹๋…ธ๋“œ์˜ ํ‚ค ๊ฐ’๋ณด๋‹ค ํ•ญ์ƒ ์ž‘์€ ํž™ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ๋Š” ์ž์‹๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ตœ๋Œ€ 2๊ฐœ์ธ ์ด์ง„ ํž™(binary heap)์„ ์‚ฌ์šฉ ๊ฐ€์žฅ ๋†’์€(ํ˜น์€ ๊ฐ€์žฅ ๋‚ฎ์€) ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง€๋Š” ๋…ธ๋“œ๊ฐ€ ํ•ญ์ƒ ๋ฃจํŠธ ๋…ธ๋“œ์— ์˜ค๊ฒŒ ๋˜๋Š” ํŠน์ง•์ด ์žˆ์Œ ์ด๋ฅผ ์‘์šฉํ•˜์—ฌ ์šฐ์„ ์ˆœ์œ„ ํ์™€ ๊ฐ™์€ ์ถ”์ƒ์  ์ž๋ฃŒํ˜•์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ํž™์˜ ์ฃผ์š” ์—ฐ์‚ฐ ์ตœ์†Œ ํž™์„ ๊ธฐ์ค€์œผ๋กœ ํž™์˜ ์ฃผ์š” ์—ฐ์‚ฐ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ..