Algorithm

[Algorithm] ๊ทธ๋ฆฌ๋””(Greedy) ์•Œ๊ณ ๋ฆฌ์ฆ˜

yevdev 2021. 10. 6. 10:38

๐Ÿ’ก ๊ทธ๋ฆฌ๋””(Greedy) ์•Œ๊ณ ๋ฆฌ์ฆ˜? 

  • ์ตœ์ ํ™” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค.
  • (์ž…๋ ฅ) ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ์ˆ˜ํ–‰๊ณผ์ •์—์„œ ํ˜„ ์ƒํ™ฉ์—์„œ ๊ฐ€์žฅ ์ข‹์€ (locally optimal)์„ ์š•์‹ฌ๋‚ด์–ด ์ตœ์†Œ ๋˜๋Š” ์ตœ๋Œ€ ๊ฒƒ์„ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํƒํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ
  • ์ „์ฒด์ ์œผ๋กœ ์ตœ์ ์ธ์ง€๋Š” ํŒ๋‹จX, ์˜ค๋กœ์ง€ ํ˜„์žฌ ์ตœ์ !
  • ๊ทผ์‹œ์•ˆ์ ์ธ ์„ ํƒ์œผ๋กœ ๋ถ€๋ถ„์ ์ธ ์ตœ์ ํ•ด๋ฅผ ์ฐพ๊ณ , ์ด๋“ค์„ ๋ชจ์•„์„œ ๋ฌธ์ œ์˜ ์ตœ์ ํ•ด๋ฅผ ์–ป๋Š”๋‹ค.
    • ํ•œ๋ฒˆ ์„ ํƒํ•˜๋ฉด ์ ˆ๋Œ€ ๋ฒˆ๋ณต X
  • ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํ•ญ์ƒ global solution์„ ์–ป๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์ฃผ์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋…ผ๋ฆฌ์ ์ธ ์ฆ๋ช…์ด ํ•„์š”
    • ์ฆ๋ช…ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด, ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ•ด๋Š” suboptimal์ผ ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ์ด๊ฒฝ์šฐ ์ด๊ฒƒ์„ ํœด๋ฆฌ์Šคํ‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค

 

๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋Š”?

์•„๋ž˜์˜ ๋‘๊ฐ€์ง€ ์กฐ๊ฑด์ด ๋งŒ์กฑ๋˜์–ด์•ผ ํ•œ๋‹ค.

  1. ํƒ์š•์Šค๋Ÿฐ ์„ ํƒ ์กฐ๊ฑด : ์•ž์˜ ์„ ํƒ์ด ์ดํ›„์˜ ์„ ํƒ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธ
  2. ์ตœ์  ๋ถ€๋ถ„ ๊ตฌ์กฐ ์กฐ๊ฑด (or ์ตœ์ ์„ฑ ์›์น™) : ๋ฌธ์ œ์˜ ์ตœ์ ํ•ด๊ฐ€ ๋ถ€๋ฌธ์ œ๋“ค์˜ ์ตœ์ ํ•ด๋กœ๋ถ€ํ„ฐ ํšจ์œจ์ ์œผ๋กœ ์ƒ์„ฑ

 

 


 

โž• ๊ฐ„๋‹จํ•œ ๋™์ „ ๊ฑฐ์Šค๋ฆ„๋ˆ ๋ฌธ์ œ๋ฅผ ์‚ดํŽด๋ณด์ž,,

  • ๋งค์ˆœ๊ฐ„, ๋‚จ์€ ๊ฑฐ์Šค๋ฆ„๋ˆ์˜ ์ด์•ก์„ ์ดˆ๊ณผํ•˜์ง€ ์•Š๋Š” ์กฐ๊ฑดํ•˜์— ๊ฐ€์žฅ ํฐ ์•ก๋ฉด์„ ๊ฐ€์ง„ ๋™์ „์„ ์ทจํ•จ 
  • ๋™์ „ ๊ฑฐ์Šค๋ฆ„๋ˆ ๋ฌธ์ œ์˜ ์ตœ์†Œ ๋™์ „ ์ˆ˜๋ฅผ ์ฐพ๋Š” ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜!
    • ๋‹จ, ๋™์ „์˜ ์•ก๋ฉด์€ 500์›, 50์›, 10์›, 1์› 

๐Ÿšซ ํ•˜์ง€๋งŒ, ์ด๋Š” ํ•ญ์ƒ ์ตœ์ ์˜ ๋‹ต์„ ์ฃผ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

  • ๋งŒ์•ฝ 160์›์งœ๋ฆฌ ์ƒˆ๋กœ์šด ๋™์ „์˜ ์ข…๋ฅ˜๊ฐ€ ์ถ”๊ฐ€๋ ๋•Œ,
    • ๊ฑฐ์Šค๋ฆ„๋ˆ์ด 200์›์ด๋ผ๋ฉด, 160์› 1๊ฐœ, 10์› 4๊ฐœ๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.
    • ์ตœ์†Œ๋™์ „์˜ ๊ฑฐ์Šค๋ฆ„๋ˆ์€ 100์›์งœ๋ฆฌ 2๊ฐœ๊ฐ€ ๋œ๋‹ค.

์ด ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๊ฑฐ์Šค๋ฆ„๋ˆ ๊ตํ™˜ ๋ฌธ์ œ๋ฅผ ํ’€๊ฒŒ ๋œ๋‹ค๋ฉด, ํฐ ๋‹จ์œ„์˜ ๋™์ „์ด ์ž‘์€ ๋‹จ์œ„์˜ ๋™์ „์˜ ๋ฐฐ์ˆ˜๊ฐ€ ๋˜์–ด์•ผ ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • 160์›์€ 10์›, 1์›์˜ ๋ฐฐ์ˆ˜์ง€๋งŒ, 50์›, 100์›์˜ ๋ฐฐ์ˆ˜๊ฐ€ ๋˜์ง„ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ ์šฉ ๋ถˆ๊ฐ€๋Šฅ

โžฐ๋”ฐ๋ผ์„œ, ํƒ์š• ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์ „์ฒด์ ์ธ ์ตœ์ ํ•ด ์ธ์ง€๋ฅผ ํ•ญ์ƒ ์—ผ๋‘ํ•ด์•ผํ•œ๋‹ค. ์ฆ‰, ์‚ฌ์šฉํ•ด๋„ ๋˜๋Š”์ง€ ๊ฒ€์ฆ๋‹จ๊ณ„๋ฅผ ๊ผญ ๊ฑฐ์น˜๊ธฐ!

 

 


โžฐ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ ์šฉ

  1. ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ (MST) : ํฌ๋ฆฌ์Šค์ปฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜[O(mlogm)] (m์€ ๊ทธ๋ž˜ํ”„์˜ ์„ ๋ถ„์˜ ์ˆ˜), ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜[O(n^2)]
  2. ์ตœ๋‹จ ๊ฒฝ๋กœ ์ฐพ๊ธฐ : ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ [O(n^2)]
  3. ๋ถ€๋ถ„ ๋ฐฐ๋‚ญ ๋ฌธ์ œ [O(nlogn)]
  4. ์ง‘ํ•ฉ ์ปค๋ฒ„ ๋ฌธ์ œ [O(n^3)]
  5. ์ž‘์—… ์Šค์ผ€์ฅด๋ง [O(nlogn)] + O(mn) (n์€ ์ž‘์—…์˜ ์ˆ˜, m์€ ๊ธฐ๊ณ„์˜ ์ˆ˜)
  6. ํ—ˆํ”„๋งŒ ์••์ถ• [O(nlogn)]

 


Reference

์„œ์šธ๊ณผํ•™๊ธฐ์ˆ ๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐ๊ณตํ•™๊ณผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์—