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๋ง์

0-1 Knapsack์ ๋ํ ์์ ๊ฒ์ ๋ฐฉ๋ฒ
์์ ๊ฒ์์ผ๋ก ๋ฌผ๊ฑด๋ค์ ์งํฉ S์ ๋ํ ๋ชจ๋ ๋ถ๋ถ์งํฉ์ ๊ตฌํ๋ค.
๋ถ๋ถ์งํฉ์ ์ด ๋ฌด๊ฒ๊ฐ W๋ฅผ ์ด๊ณผํ๋ ์งํฉ๋ค์ ๋ฒ๋ฆฌ๊ณ , ๋๋จธ์ง ์งํฉ์์ ์ด ๊ฐ์ด ๊ฐ์ฅ ํฐ ์งํฉ์ ์ ํํ ์ ์๋ค
๋ฌผ๊ฑด์ ๊ฐ์๊ฐ ์ฆ๊ฐํ๋ฉด ์๊ฐ ๋ณต์ก๋๊ฐ ์ง์์ ์ผ๋ก ์ฆ๊ฐํ๋ค
ํฌ๊ธฐ n์ธ ๋ถ๋ถํฉ์ ์ 2^n




ex2) ํ์์ค ๋ฐฐ์ ํ๊ธฐ ๋ฌธ์



Greedy Algorithm์ ํ์ ์์
1. ํ์์ ์ ํ ์์ฑ (greedy choice property)
ํ์์ ์ ํ์ ์ต์ ํด๋ก ๊ฐ ์ ์์์ ๋ณด์ฌ๋ผ
์ฆ, ํ์์ ์ ํ์ ํญ์ ์์ ํ๋ค
2. ์ต์ ๋ถ๋ถ ๊ตฌ์กฐ (optimal substructure property)
์ต์ ํ ๋ฌธ์ ๋ฅผ ์ ํํํ๋ผ
ํ๋์ ์ ํ์ ํ๋ฉด ํ์ด์ผ ํ ํ๋์ ํ์ ๋ฌธ์ ๊ฐ ๋จ๋๋ค
3. ์๋ฌธ์ ์ ์ต์ ํด == ํ์์ ์ ํ + ํ์ ๋ฌธ์ ์ ์ต์ ํด
์์ ์ฆ๋ช
ํ๋ผ
์๋ฌธ์ ์ ์ต์ ํด == ํ์์ ์ ํ + ํ์ ๋ฌธ์ ์ ์ต์ ํด
์์ ์ฆ๋ช
ํ๋ผ
Greedy Algorithm vs Dynamic Programming
๋งค ๋จ๊ณ์์, ๊ฐ์ฅ ์ข๊ฒ ๋ณด์ด๋ ๊ฒ์ ๋น ๋ฅด๊ฒ ์ ํํ๋ค
-> ์ง์ญ ์ต์ ์ ํ (local optimal choice
)
๋งค ๋จ๊ณ์ ์ ํ์ ํด๊ฒฐํ ํ์ ๋ฌธ์ ์ ํด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ค
ํ์ ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ ์ (ํ์์ ) ์ ํ์ด ๋จผ์ ์ด๋ฃจ์ด์ง๋ค
ํ์ ๋ฌธ์ ๊ฐ ์ฐ์ ํด๊ฒฐ๋๋ค
Top-down ๋ฐฉ์
Bottom-up ๋ฐฉ์
์ผ๋ฐ์ ์ผ๋ก ๋น ๋ฅด๊ณ ๊ฐ๊ฒฐ
์ข ๋ ๋๋ฆฌ๊ณ ๋ณต์ก
Last updated
Was this helpful?