๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ตœ๋Œ€ ์ตœ์†Œ ์ฐพ๊ธฐ (ํ† ๋„ˆ๋จผํŠธ ํŠธ๋ฆฌ)

by bba_dda 2020. 9. 7.
๋ฐ˜์‘ํ˜•

์ตœ๋Œ€ ์ตœ์†Œ ์ฐพ๊ธฐ

ํ† ๋„ˆ๋จผํŠธ ํŠธ๋ฆฌ

์„ ํƒํŠธ๋ฆฌ(Selection tree) ๋ผ๊ณ ๋„ ํ•˜๋ฉฐ, ์ด๋ฅผ ์ด์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ •๋ ฌ๋œ ๋ฌถ์Œ๋“ค(run) ์ค‘์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์ฐพ๊ฑฐ๋‚˜, ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์ฐพ์„ ๋•Œ ์ด๋ฅผ ์ด์šฉํ•˜๋ฉด ๋น„๊ตํšŸ์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด, ์„œ์šธ ๊ฒฝ๊ธฐ ๊ฐ•์› ์ถฉ์ฒญ ๋“ฑ๋“ฑ์—์„œ ๊ฐ ์ง€์—ญ๋งˆ๋‹ค ๊ฐ€์žฅ ํ‚ค ํฐ ์‚ฌ๋žŒ 100๋ช…์”ฉ์„ ๋ฝ‘์€ ๋’ค์— 

๊ทธ ๋“ค ์ค‘์—์„œ ๊ฐ€์žฅ ํ‚ค๊ฐ€ ํฐ์‚ฌ๋žŒ์„ ์ˆœ์„œ๋Œ€๋กœ ๋ฝ‘๊ณ  ์‹ถ์„ ๋•Œ ํ† ๋„ˆ๋จผํŠธ ํŠธ๋ฆฌ๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

ํ† ๋„ˆ๋จผํŠธ ํŠธ๋ฆฌ์—๋Š” ๋ฃจํŠธ์— ๋” ํฐ๊ฐ’์„ ์˜ฌ๋ฆฌ๋Š๋ƒ, ์ž‘์€ ๊ฐ’์„ ์˜ฌ๋ฆฌ๋Š๋ƒ์— ๋”ฐ๋ผ ์Šน์žํŠธ๋ฆฌ์™€ ํŒจ์žํŠธ๋ฆฌ ๋‘ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค.

์Šน์ž ํŠธ๋ฆฌ (Winner Tree)

๋ถ€๋ชจ๋…ธ๋“œ๊ฐ€ ๋‘ ๊ฐœ์˜ ์ž์‹๋…ธ๋“œ๋ณด๋‹ค ๋” ์ž‘์€ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๋Š” ์™„์ „ ์ด์ง„ํŠธ๋ฆฌ์ด๋‹ค.

๋”ฐ๋ผ์„œ ๋ฃจํŠธ๋…ธ๋“œ๋Š” ํŠธ๋ฆฌ์—์„œ ๊ฐ€์žฅ ์ž‘์€ ์›์†Œ์ด๋‹ค.

์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ฆฌ๋œ k๊ฐœ์˜ run์— ๋Œ€ํ•ด ์Šน์žํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์—ฌ๋Ÿฌ๊ฐœ์˜ run๋“ค ์ค‘์— ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฐพ์•„๋‚˜๊ฐ€๋Š” ํŠธ๋ฆฌ์ด๋ฏ€๋กœ ๊ฐ run๋“ค์€ ์˜ค๋ฆ„์ฐจ์ˆœ(์ž‘์€ ๊ฐ’์ด ์•ž์— ์žˆ๋„๋ก)์œผ๋กœ ์ •๋ ฌ๋˜์–ด์žˆ์–ด์•ผ ํ•œ๋‹ค.

๋จผ์ €, ์•„๋ž˜์™€ ๊ฐ™์€ 4๊ฐœ์˜ run๋“ค์ด ์žˆ๋‹ค๊ณ  ํ•˜์ž. ๊ฐ run๋“ค์˜ ๊ฐ€์žฅ ์ฒซ๋ฒˆ์งธ ์›์†Œ๋“ค์„ ๋Œ€์ƒ์œผ๋กœ ์Šน์ž ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ ๋‹ค.

 

๊ฐ ์›์†Œ๋“ค์„ ๋น„๊ตํ•ด์„œ ๋” ์ž‘์€ ์›์†Œ๋ฅผ ์œ„๋กœ ์˜ฌ๋ฆฌ๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์ด ๋ฃจํŠธ๋…ธ๋“œ์— ์˜ฌ๋ผ์˜จ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค

 

์ด ์ƒํƒœ์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’(๋ฃจํŠธ)์„ ์‚ญ์ œํ•˜๊ฒŒ ๋˜๋ฉด, ํ•ด๋‹น ๊ฐ’์ด ๋“ค์–ด์žˆ๋Š” ๋…ธ๋“œ๋ฅผ ๋ชจ๋‘ ์‚ญ์ œํ•œ๋‹ค.

๊ทธ ํ›„์— ๊ฐ’์ด ์‚ญ์ œ๋œ run์˜ ๋‹ค์Œ ์›์†Œ๋ฅผ ๋น„์–ด์žˆ๋Š” ๋ฆฌํ”„๋…ธ๋“œ๋กœ ์˜ฌ๋ฆฐ๋‹ค

 

๊ฐ€์žฅ ์•„๋ž˜์—์„œ๋ถ€ํ„ฐ ๋” ์ž‘์€ ์›์†Œ๋ฅผ ์œ„๋กœ ์˜ฌ๋ฆฌ๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

๋˜๋‹ค์‹œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์ด ๋ฃจํŠธ๋…ธ๋“œ์— ์˜ฌ๋ผ์˜จ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค

์ด๋Ÿฐ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ๊ณ„์†์ ์œผ๋กœ ์—ฌ๋Ÿฌ๊ฐœ์˜ run๋“ค ์ค‘์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’๋“ค์„ ์ฐพ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

ํŒจ์ž ํŠธ๋ฆฌ (Loser Tree)

์Šน์žํŠธ๋ฆฌ์™€ ๊ฐœ๋…์ด ๊ฐ™์ง€๋งŒ, ๋ถ€๋ชจ๋…ธ๋“œ๊ฐ€ ๋‘ ๊ฐœ์˜ ์ž์‹๋…ธ๋“œ๋ณด๋‹ค ๋” ํฐ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๋Š” ์™„์ „ ์ด์ง„ํŠธ๋ฆฌ์ด๋‹ค.

๋”ฐ๋ผ์„œ ๋ฃจํŠธ๋…ธ๋“œ๋Š” ํŠธ๋ฆฌ์—์„œ ๊ฐ€์žฅ ํฐ ์›์†Œ์ด๋‹ค.

๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ฆฌ๋œ k๊ฐœ์˜ run์— ๋Œ€ํ•ด ์Šน์žํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์—ฌ๋Ÿฌ๊ฐœ์˜ run๋“ค ์ค‘์— ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฐพ์•„๋‚˜๊ฐ€๋Š” ํŠธ๋ฆฌ์ด๋ฏ€๋กœ ๊ฐ run๋“ค์€ ๋‚ด๋ฆผ์ฐจ์ˆœ(ํฐ ๊ฐ’์ด ์•ž์— ์žˆ๋„๋ก)์œผ๋กœ ์ •๋ ฌ๋˜์–ด์žˆ์–ด์•ผ ํ•œ๋‹ค.

๋จผ์ €, ์•„๋ž˜์™€ ๊ฐ™์€ 4๊ฐœ์˜ run๋“ค์ด ์žˆ๋‹ค๊ณ  ํ•˜์ž. ๊ฐ run๋“ค์˜ ๊ฐ€์žฅ ์ฒซ๋ฒˆ์งธ ์›์†Œ๋“ค์„ ๋Œ€์ƒ์œผ๋กœ ์Šน์ž ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ ๋‹ค.

๊ฐ ์›์†Œ๋“ค์„ ๋น„๊ตํ•ด์„œ ๋” ํฐ ์›์†Œ๋ฅผ ์œ„๋กœ ์˜ฌ๋ฆฌ๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

๊ฐ€์žฅ ํฐ ๊ฐ’์ด ๋ฃจํŠธ๋…ธ๋“œ์— ์˜ฌ๋ผ์˜จ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค

์ด ์ƒํƒœ์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’(๋ฃจํŠธ)์„ ์‚ญ์ œํ•˜๊ฒŒ ๋˜๋ฉด, ํ•ด๋‹น ๊ฐ’์ด ๋“ค์–ด์žˆ๋Š” ๋…ธ๋“œ๋ฅผ ๋ชจ๋‘ ์‚ญ์ œํ•œ๋‹ค.

๊ทธ ํ›„์— ๊ฐ’์ด ์‚ญ์ œ๋œ run์˜ ๋‹ค์Œ ์›์†Œ๋ฅผ ๋น„์–ด์žˆ๋Š” ๋ฆฌํ”„๋…ธ๋“œ๋กœ ์˜ฌ๋ฆฐ๋‹ค

๊ฐ€์žฅ ์•„๋ž˜์—์„œ๋ถ€ํ„ฐ ๋” ํฐ ์›์†Œ๋ฅผ ์œ„๋กœ ์˜ฌ๋ฆฌ๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

๋˜๋‹ค์‹œ ๊ฐ€์žฅ ํฐ ๊ฐ’์ด ๋ฃจํŠธ๋…ธ๋“œ์— ์˜ฌ๋ผ์˜จ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค

์ด๋Ÿฐ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ๊ณ„์†์ ์œผ๋กœ ์—ฌ๋Ÿฌ๊ฐœ์˜ run๋“ค ์ค‘์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’๋“ค์„ ์ฐพ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

๊ตฌํ˜„

ํ† ๋„ˆ๋จผํŠธ ํŠธ๋ฆฌ์˜ ๊ฒฝ์šฐ ๋ฐฐ์—ด๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ๋” ํšจ์œจ์ ์ด๋‹ค

 

[๊ตฌํ˜„ ์ฝ”๋“œ] -- ๊ณต๋ถ€ํ•ด์„œ ์ถ”๊ฐ€ํ•  ๊ฒƒ 

https://jaimemin.tistory.com/189

์…€๋ ‰์…˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜

[์ถ”๊ฐ€ํ•  ๊ฒƒ]

์ฐธ๊ณ ์ž๋ฃŒ

https://codemcd.github.io/algorithm/Algorithm-%EC%88%9C%EC%97%B4%EA%B3%BC-%EC%A1%B0%ED%95%A9/

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€