Greedy Algorithm

What is Greedy?

  • ํƒ์š• ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ตœ์ ํ•ด๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ทผ์‹œ์•ˆ์ ์ธ ๋ฐฉ๋ฒ•

  • ์ผ๋ฐ˜์ ์œผ๋กœ, ๋จธ๋ฆฟ์†์— ๋– ์˜ค๋ฅด๋Š” ์ƒ๊ฐ์„ ๊ฒ€์ฆ์—†์ด ๋ฐ”๋กœ ๊ตฌํ˜„ํ•˜๋ฉด Greedy ์ ‘๊ทผ์ด ๋จ

  • ์—ฌ๋Ÿฌ ๊ฒฝ์šฐ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•  ๋•Œ๋งˆ๋‹ค ๊ทธ ์ˆœ๊ฐ„์— ์ตœ์ ์ด๋ผ๊ณ  ์ƒ๊ฐ๋˜๋Š” ๊ฒƒ์„ ์„ ํƒํ•ด ๋‚˜๊ฐ€๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜์—ฌ ์ตœ์ข…์ ์ธ ํ•ด๋‹ต์— ๋„๋‹ฌํ•จ.

    • ๊ฐ ์ง€์ ์—์„œ ์ด๋ฃจ์–ด์ง€๋Š” ๊ฒฐ์ •์€ ์ง€์—ญ์ ์œผ๋กœ๋Š” ์ตœ์ ์ด์ง€๋งŒ, ๊ทธ ์„ ํƒ๋“ค์„ ๊ณ„์† ์ˆ˜์ง‘ํ•˜์—ฌ ์ตœ์ข…์ ์ธ ํ•ด๋‹ต์„ ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ํ•˜์—ฌ, ๊ทธ๊ฒƒ์ด ์ตœ์ ์ด๋ผ๋Š” ๋ณด์žฅ์€ ์—†๋‹ค

  • ์ผ๋‹จ, ํ•œ๋ฒˆ ์„ ํƒ๋œ ๊ฒƒ์€ ๋ฒˆ๋ณตํ•˜์ง€ ์•Š๋Š”๋‹ค

    • ์ด๋Ÿฐ ํŠน์„ฑ ๋•Œ๋ฌธ์— ๋Œ€๋ถ€๋ถ„์˜ ํƒ์š• ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค์€ ๋‹จ์ˆœํ•จ

    • ์ œํ•œ์ ์ธ ๋ฌธ์ œ๋“ค์— ์ ์šฉ๋จ

  • ์ตœ์ ํ™” ๋ฌธ์ œ(optimization)๋ž€ ๊ฐ€๋Šฅํ•œ ํ•ด๋“ค ์ค‘์—์„œ ๊ฐ€์žฅ ์ข‹์€ (์ตœ๋Œ€ ๋˜๋Š” ์ตœ์†Œ) ํ•ด๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ

How it works?

1. ํ•ด ์„ ํƒ

  • ํ˜„์žฌ ์ƒํƒœ์—์„œ ๋ถ€๋ถ„ ๋ฌธ์ œ์˜ ์ตœ์  ํ•ด๋ฅผ ๊ตฌํ•œ ๋’ค, ์ด๋ฅผ ๋ถ€๋ถ„ํ•ด ์ง‘ํ•ฉ (Solution Set )์— ์ถ”๊ฐ€ํ•œ๋‹ค

2. ์‹คํ–‰ ๊ฐ€๋Šฅ์„ฑ ๊ฒ€์‚ฌ

  • ์ƒˆ๋กœ์šด ๋ถ€๋ถ„ ํ•ด ์ง‘ํ•ฉ์ด ์‹คํ–‰๊ฐ€๋Šฅํ•œ์ง€๋ฅผ ํ™•์ธํ•œ๋‹ค

  • ์ฆ‰, ๋ฌธ์ œ์˜ ์ œ์•ฝ ์กฐ๊ฑด์„ ์œ„๋ฐ˜ํ•˜์ง€ ์•Š๋Š” ์ง€๋ฅผ ๊ฒ€์‚ฌํ•œ๋‹ค

3. ํ•ด ๊ฒ€์‚ฌ

  • ์ƒˆ๋กœ์šด ๋ถ€๋ถ„ ํ•ด ์ง‘ํ•ฉ์ด ๋ฌธ์ œ์˜ ํ•ด๊ฐ€ ๋˜๋Š”์ง€๋ฅผ ํ™•์ธํ•œ๋‹ค

  • ์•„์ง ์ „์ฒด ๋ฌธ์ œ์˜ ํ•ด๊ฐ€ ์™„์„ฑ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด 1์˜ ํ•ด ์„ ํƒ๋ถ€ํ„ฐ ๋‹ค์‹œ ์‹œ์ž‘ํ•œ๋‹ค

์ตœ์ ํ•ด๋ฅผ ๋ฐ˜๋“œ์‹œ ๊ตฌํ•œ๋‹ค๋Š” ๋ณด์žฅ์ด ์—†๋‹ค!

ex1) ๋ฐฐ๋‚ญ ์ง์‹ธ๊ธฐ (Knapsack) ๋ฌธ์ œ

  • ๋„๋‘‘์€ ๋ถ€์ž๋“ค์˜ ๋ฌผ๊ฑด์„ ํ›”์น˜๊ธฐ ์œ„ํ•ด ์ฐฝ๊ณ ์— ์นจ์ž…ํ•˜์˜€๋‹ค.

  • ๋„๋‘‘์€ ํ›”์นœ ๋ฌผ๊ฑด์„ ๋ฐฐ๋‚ญ์— ๋‹ด์•„ ์˜ฌ ๊ณ„ํš์ด๋‹ค. ๋ฐฐ๋‚ญ์€ ๋‹ด์„์ˆ˜ ์žˆ๋Š” ๋ฌผ๊ฑด์˜ ์ด ๋ฌด๊ฒŒ(W)๊ฐ€ ์ •ํ•ด์ ธ ์žˆ๋‹ค.

  • ์ฐฝ๊ณ ์—๋Š” ์–ด๋Ÿฌ ๊ฐœ(n๊ฐœ)์˜ ๋ฌผ๊ฑด๋“ค์ด ์žˆ๊ณ  ๊ฐ๊ฐ€๊ทธ์ด ๋ฌผ๊ฑด์—๋Š” ๋ฌด๊ฒŒ์™€ ๊ฐ’์ด ์ •ํ•ด์ ธ ์žˆ๋‹ค.

  • ๊ฒฝ๋น„์›์—๊ฒŒ ๋ฐœ๊ฐ๋˜๊ธฐ ์ „์— ๋ฐฐ๋‚ญ์ด ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌด๊ฒŒ๋ฅผ ์ดˆ๊ณผํ•˜์ง€ ์•Š์œผ๋ฉด์„œ, ๊ฐ’์ด ์ตœ๋Œ€๊ฐ€ ๋˜๋Š” ๋ฌผ๊ฑด๋“ค์„ ๋‹ด์•„์•ผ ํ•œ๋‹ค.

์˜ˆ)

๋ฌด๊ฒŒ
๊ฐ’

๋ฌผ๊ฑด1

25kg

10๋งŒ์›

๋ฌผ๊ฑด2

10kg

9๋งŒ์›

๋ฌผ๊ฑด3

10kg

5๋งŒ์›

image-20200509134329981

0-1 Knapsack์— ๋Œ€ํ•œ ์™„์ „ ๊ฒ€์ƒ‰ ๋ฐฉ๋ฒ•

์™„์ „ ๊ฒ€์ƒ‰์œผ๋กœ ๋ฌผ๊ฑด๋“ค์˜ ์ง‘ํ•ฉ S์— ๋Œ€ํ•œ ๋ชจ๋“  ๋ถ€๋ถ„์ง‘ํ•ฉ์„ ๊ตฌํ•œ๋‹ค.

  • ๋ถ€๋ถ„์ง‘ํ•ฉ์˜ ์ด ๋ฌด๊ฒŒ๊ฐ€ W๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ์ง‘ํ•ฉ๋“ค์€ ๋ฒ„๋ฆฌ๊ณ , ๋‚˜๋จธ์ง€ ์ง‘ํ•ฉ์—์„œ ์ด ๊ฐ’์ด ๊ฐ€์žฅ ํฐ ์ง‘ํ•ฉ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค

  • ๋ฌผ๊ฑด์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉด ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ์ง€์ˆ˜์ ์œผ๋กœ ์ฆ๊ฐ€ํ•œ๋‹ค

    • ํฌ๊ธฐ n์ธ ๋ถ€๋ถ„ํ•ฉ์˜ ์ˆ˜ 2^n

image-20200509195130448

image-20200509195209925

image-20200509195240258

image-20200509195322083

ex2) ํšŒ์˜์‹ค ๋ฐฐ์ •ํ•˜๊ธฐ ๋ฌธ์ œ

image-20200509195557213

image-20200509200153297

image-20200509200512719

Greedy Algorithm์˜ ํ•„์ˆ˜ ์š”์†Œ

1. ํƒ์š•์  ์„ ํƒ ์†์„ฑ (greedy choice property)

  • ํƒ์š•์  ์„ ํƒ์€ ์ตœ์ ํ•ด๋กœ ๊ฐˆ ์ˆ˜ ์žˆ์Œ์„ ๋ณด์—ฌ๋ผ

    • ์ฆ‰, ํƒ์š•์  ์„ ํƒ์€ ํ•ญ์ƒ ์•ˆ์ „ํ•˜๋‹ค

2. ์ตœ์  ๋ถ€๋ถ„ ๊ตฌ์กฐ (optimal substructure property)

  • ์ตœ์ ํ™” ๋ฌธ์ œ๋ฅผ ์ •ํ˜•ํ™”ํ•˜๋ผ

    • ํ•˜๋‚˜์˜ ์„ ํƒ์„ ํ•˜๋ฉด ํ’€์–ด์•ผ ํ•  ํ•˜๋‚˜์˜ ํ•˜์œ„ ๋ฌธ์ œ๊ฐ€ ๋‚จ๋Š”๋‹ค

3. ์›๋ฌธ์ œ์˜ ์ตœ์ ํ•ด == ํƒ์š•์  ์„ ํƒ + ํ•˜์œ„ ๋ฌธ์ œ์˜ ์ตœ์ ํ•ด ์ž„์„ ์ฆ๋ช…ํ•˜๋ผ

Greedy Algorithm vs Dynamic Programming

Greedy Algorithm
Dynamic Programming

๋งค ๋‹จ๊ณ„์—์„œ, ๊ฐ€์žฅ ์ข‹๊ฒŒ ๋ณด์ด๋Š” ๊ฒƒ์„ ๋น ๋ฅด๊ฒŒ ์„ ํƒํ•œ๋‹ค -> ์ง€์—ญ ์ตœ์  ์„ ํƒ (local optimal choice)

๋งค ๋‹จ๊ณ„์˜ ์„ ํƒ์€ ํ•ด๊ฒฐํ•œ ํ•˜์œ„ ๋ฌธ์ œ์˜ ํ•ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๋‹ค

ํ•˜์œ„ ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์ „์— (ํƒ์š•์ ) ์„ ํƒ์ด ๋จผ์ € ์ด๋ฃจ์–ด์ง„๋‹ค

ํ•˜์œ„ ๋ฌธ์ œ๊ฐ€ ์šฐ์„  ํ•ด๊ฒฐ๋œ๋‹ค

Top-down ๋ฐฉ์‹

Bottom-up ๋ฐฉ์‹

์ผ๋ฐ˜์ ์œผ๋กœ ๋น ๋ฅด๊ณ  ๊ฐ„๊ฒฐ

์ข€ ๋” ๋А๋ฆฌ๊ณ  ๋ณต์žก

Last updated

Was this helpful?