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

[์ž๋ฃŒ๊ตฌ์กฐ] Heap

quedevel 2023. 3. 27. 14:21
728x90
๋ฐ˜์‘ํ˜•

๐ŸŽฏ Heap


Heap(ํž™)์€ ์ตœ๋Œ€ ๊ฐ’ ๋˜๋Š” ์ตœ์†Œ ๊ฐ’์„ ๋น ๋ฅด๊ฒŒ ์ฐพ๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์šฐ์„ ์ˆœ์œ„ ํ(Priority Queue)์™€ ๊ฐ™์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋ถ€๋ชจ ๋…ธ๋“œ์™€ ์ž์‹ ๋…ธ๋“œ ๊ฐ„์˜ ํฌ๊ธฐ ๊ด€๊ณ„๋ฅผ ์ด์šฉํ•˜์—ฌ ํšจ์œจ์ ์ธ ์‚ฝ์ž…, ์‚ญ์ œ, ํƒ์ƒ‰ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํŠธ๋ฆฌ ๊ธฐ๋ฐ˜์˜ ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.


Heap์˜ ๊ตฌ์กฐ


Heap์€ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ(Complete Binary Tree)์˜ ํ˜•ํƒœ๋ฅผ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ๋Š” ๋ชจ๋“  ๋ ˆ๋ฒจ์—์„œ ๋…ธ๋“œ๋“ค์ด ๊ฝ‰ ์ฐจ์žˆ๊ณ , ๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ์—์„œ๋Š” ์™ผ์ชฝ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ์ฑ„์›Œ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

Heap์€ ํฌ๊ฒŒ Max Heap๊ณผ Min Heap์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Max Heap์€ ๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ์ž์‹ ๋…ธ๋“œ๋ณด๋‹ค ํฐ ๊ฐ’์„ ๊ฐ€์ง€๋Š” Heap์ด๊ณ , Min Heap์€ ๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ์ž์‹ ๋…ธ๋“œ๋ณด๋‹ค ์ž‘์€ ๊ฐ’์„ ๊ฐ€์ง€๋Š” Heap์ž…๋‹ˆ๋‹ค.


Heap์˜ ํŠน์ง•


  1. Heap์€ ํ•ญ์ƒ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ์˜ ํ˜•ํƒœ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. Max Heap์—์„œ๋Š” ๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ์ตœ๋Œ€๊ฐ’์„ ๊ฐ€์ง€๋ฉฐ, Min Heap์—์„œ๋Š” ๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ์ตœ์†Œ๊ฐ’์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
  3. ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ๊ฐ’์€ ํ•ญ์ƒ ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐ’๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜(Max Heap) ํ˜น์€ ์ž‘์•„์•ผ(Min Heap) ํ•ฉ๋‹ˆ๋‹ค.
  4. Heap์—์„œ๋Š” ์ƒˆ๋กœ์šด ๋…ธ๋“œ๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ, ํ•ญ์ƒ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ์˜ ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.
  5. Heap์—์„œ๋Š” ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ์‚ญ์ œํ•  ๋•Œ, ํ•ญ์ƒ ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ๋ฅผ ๋ฃจํŠธ ๋…ธ๋“œ๋กœ ์˜ฎ๊ธด ํ›„, Heap์˜ ํŠน์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์‹œ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.

Heap์˜ ์—ฐ์‚ฐ


  1. ์‚ฝ์ž…(Insert): Heap์— ์ƒˆ๋กœ์šด ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  2. ์‚ญ์ œ(Delete): Heap์—์„œ ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
  3. ํƒ์ƒ‰(Search): Heap์—์„œ ์ตœ์†Œ ๊ฐ’ ๋˜๋Š” ์ตœ๋Œ€ ๊ฐ’์— ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค.
  4. Heapify: ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์„ Heap์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

Heap์€ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ๋†’์ด๊ฐ€ log(n)์œผ๋กœ ์œ ์ง€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Heap์—์„œ์˜ ์‚ฝ์ž…, ์‚ญ์ œ, ํƒ์ƒ‰ ์—ฐ์‚ฐ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(log n)์ž…๋‹ˆ๋‹ค.


Heap ์žฅ๋‹จ์ 


โญ๏ธ Heap ์žฅ์ 

  1. ํž™์€ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ O(log n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐฐ์—ด์ด๋‚˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ด์šฉํ•œ ์ผ๋ฐ˜์ ์ธ ์ž๋ฃŒ๊ตฌ์กฐ์˜ O(n) ์‹œ๊ฐ„ ๋ณต์žก๋„์™€ ๋น„๊ตํ•ด์„œ ๋น ๋ฅธ ์†๋„๋ฅผ ๋ณด์ž…๋‹ˆ๋‹ค.
  2. ํž™์€ ์ตœ๋Œ€๊ฐ’ ๋˜๋Š” ์ตœ์†Œ๊ฐ’์„ O(1) ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ •๋ ฌ๋œ ๋ฐฐ์—ด์—์„œ ์ตœ๋Œ€๊ฐ’ ๋˜๋Š” ์ตœ์†Œ๊ฐ’์„ ์ฐพ๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋น ๋ฅด๋ฉฐ, ์ผ๋ถ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
  3. ํž™์€ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ์ด๋ฏ€๋กœ ๋ฐฐ์—ด์„ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

๐Ÿ’€๏ธ Heap ๋‹จ์ 

  1. ํž™์€ ํŠน์ • ๊ฐ’์„ ์ฐพ๋Š” ํƒ์ƒ‰ ์—ฐ์‚ฐ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํŠธ๋ฆฌ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๊ณผ์ •์—์„œ ํŠน์ • ๋…ธ๋“œ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
  2. ํž™์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ƒ์ˆ˜ ๊ณ„์ˆ˜๊ฐ€ ํฌ๊ธฐ ๋•Œ๋ฌธ์—, ์ž‘์€ ๊ทœ๋ชจ์˜ ์ž๋ฃŒ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ๋Š” ํšจ์œจ์ ์ด์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ํž™์€ ๊ฐ ๋…ธ๋“œ๊ฐ€ ๋‘ ๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ, ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋งŽ์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•