[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…๊ณต๋ถ€ :: ์ž๋ฃŒ๊ตฌ์กฐ - ํž™

ํž™

  1. ์šฉ๋„

  2. ๊ตฌํ˜„

  3. ์ข…๋ฅ˜

  4. ์—ฐ์‚ฐ

  5. ์ •๋ ฌ

 

ํž™

ํž™์€ ์ถ”์ƒ์  ์ž๋ฃŒํ˜•์ธ ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋งŒ๋“ค์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

partial-ordering (๋ถ€๋ถ„ ์ •๋ ฌ)์„ ๋งŒ์กฑํ•˜๋Š” left-complete binary tree (์ขŒ์ธก ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ) ์ด๋‹ค.

๋ถ€๋ถ„ ์ •๋ ฌ์„ ๋งŒ์กฑํ•œ๋‹ค๋Š” ๋ง์€ '๋ถ€๋ชจ ๋…ธ๋“œ์™€ ์ž์‹๋…ธ๋“œ' ๊ฐ„์—๋Š” ํŠน์ • ๋Œ€์†Œ๊ด€๊ณ„ ์„ฑ๋ฆฝํ•˜์ง€๋งŒ, 'ํ˜•์ œ๋…ธ๋“œ'๊ฐ„์—๋Š” ํ•ด๋‹น ๋Œ€์†Œ๊ด€๊ณ„๊ฐ€ ์„ฑ๋ฆฝํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋œป์ด๋‹ค.

์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์—์„œ๋Š” ์ค‘๋ณต๋œ ๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ ํž™ ํŠธ๋ฆฌ์—์„œ๋Š” ํ—ˆ์šฉํ•œ๋‹ค.

 

1. ์šฉ๋„

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

์ด์™€ ๊ฐ™์€ ํŠน์„ฑ ๋•Œ๋ฌธ์— ํž™ ์ •๋ ฌ์ด๋ผ๋Š” ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ๋„ ์“ฐ์ธ๋‹ค.

 

2. ๊ตฌํ˜„

ํž™์€ ๋ฐฐ์—ด, ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ์ด๋ ‡๊ฒŒ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ํŠธ๋ฆฌ ๊ตฌํ˜„๊ณผ ๋น„์Šทํ•˜๊ฒŒ ๋Œ€๋ถ€๋ถ„ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ž์„ธํ•œ ๊ตฌํ˜„ ๋‚ด์šฉ์€ ์ด์ง„ ํŠธ๋ฆฌ์—์„œ์˜ ๊ตฌํ˜„๊ณผ ๊ฐ™๋‹ค.

 

3. ์ข…๋ฅ˜

  • ์ตœ๋Œ€ ํž™

  • ์ตœ์†Œ ํž™

    ์ตœ๋Œ€ ํž™์€ ๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ์ž์‹ ๋…ธ๋“œ๋ณด๋‹ค ํฐ, ์ตœ์†Œ ํž™์€ ๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ์ž์‹ ๋…ธ๋“œ๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ partial ordering์ด ์„ฑ๋ฆฝํ•œ๋‹ค. total ordering์€ ๋งŒ์กฑํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

 

4. ์—ฐ์‚ฐ

  • ์‚ฝ์ž…

    ์‚ฝ์ž… ์—ฐ์‚ฐ ์‹œ ๊ฐ€์žฅ ๋ง๋‹จ(๋งˆ์ง€๋ง‰ index)์— ์‚ฝ์ž…ํ•œ ํ›„ ๋ถ€๋ชจ ๋…ธ๋“œ๋“ค๊ณผ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ ˆ๋ฒจ์„ ์˜ฌ๋ผ๊ฐ€๋ฉด์„œ ๋น„๊ต/๊ตํ™˜ํ•ด์„œ ํž™์˜ ์„ฑ์งˆ์„ ๋งŒ์กฑํ•˜๋„๋ก ์ˆ˜์ •ํ•œ๋‹ค.

    ํž™์˜ ๋†’์ด๋Š” ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ์ด๋ฏ€๋กœ logn์ด๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฝ์ž… ์—ฐ์‚ฐ์˜ ๋ณต์žก๋„๋Š” O(logn)์ด๋‹ค.

  • ์‚ญ์ œ

    ํž™์—์„œ์˜ ์‚ญ์ œ ์—ฐ์‚ฐ์€ ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋ฃจํŠธ ๋…ธ๋“œ ์‚ญ์ œ ํ›„ ๋นˆ ์ž๋ฆฌ์— ๊ฐ€์žฅ ๋ง๋‹จ ๋…ธ๋“œ๋ฅผ ์ฑ„์šด ํ›„ ์ž์‹ ๋…ธ๋“œ๋“ค๊ณผ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ ˆ๋ฒจ์„ ๋‚ด๋ ค๊ฐ€๋ฉด์„œ ๋น„๊ต/๊ตํ™˜ํ•ด์„œ leaf node๊นŒ์ง€ ๋‚ด๋ ค๊ฐ„๋‹ค.

    ์‚ญ์ œ ์—ฐ์‚ฐ ๋˜ํ•œ ํž™์˜ ๋†’์ด์— ๋น„๋ก€ํ•˜๋ฏ€๋กœ ๋ณต์žก๋„๊ฐ€ O(logn)์ด๋‹ค.

 

5. ์ •๋ ฌ

 ํž™์„ ํ†ตํ•ด์„œ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•˜๋ ค๋ฉด ํž™ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๋งŒ์กฑํ•˜๊ฒŒ ๊ตฌ์„ฑํ•˜๊ณ , ๋ฃจํŠธ ๋…ธ๋“œ์—์„œ ์š”์†Œ๋“ค์„ ํ•˜๋‚˜์”ฉ ์‚ญ์ œํ•ด๊ฐ€๋ฉด์„œ ๋‹ค์‹œ ํž™ ๊ตฌ์กฐ๋กœ ๋งŒ๋“œ๋Š” ๊ฑธ ๋ฐ˜๋ณตํ•˜๋ฉด ๋œ๋‹ค.

 ์ด ๋•Œ, ๋ฐ์ดํ„ฐ์˜ ๊ฐฏ์ˆ˜๋งŒํผ ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๊ณ , ์ด ๊ณผ์ •์˜ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ์œ„์—์„œ ์„ค๋ช…ํ–ˆ๋“ฏ์ด O(logn)์ด๋ฏ€๋กœ, ์ „์ฒด ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(nlong)์ด๋‹ค.

๋ฐ˜์‘ํ˜•