๋ถ๊ธฐ ํ์ ๋ฒ์ ๋ํด ์์๋ณด์.
๋ถ๊ธฐ ํ์ ๋ฒ
- Branch : ์ด์ ์ํ ๊ณต๊ฐ ํธ๋ฆฌ์์ ๋ค์ ๊ฐ์ง๋ก ๋์ด๊ฐ๋ ๊ฒฝ์ฐ๋ฅผ ๋งํจ
- Bound : ํ๊ณ
- ์ด์ ์ ๋ฐฑ ํธ๋ ํน๊ณผ ํฌ๊ฒ ๋ค๋ฅด์ง ์๋ค.
- ๊ทธ ๋ถ๋ถ ์งํฉ์ ํฉ์ ๊ตฌํ๋ ๋ฌธ์ ์ ํฌ๊ฒ ๋ค๋ฅด์ง๋ ์๋ค.
- ๊ฒฐ๊ตญ ํน์ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ์ ๋, ์ดํ๋ฅผ ์ญ ๋ดค์ ๋, ์ด๋์ด ๊ฐ์ ์๋ ์ต๋์น? ํน์ ์ต์์น๊ฐ ๊ธฐ๋๊ฐ ๋๋ฉด ๊ฐ๊ณ ์ ์ด์ ๊ธ๋ ์ผ๋ฉด ์๊ฐ๋ ๊ฒ
- ์ด์ ๊ณผ ๋ค๋ฅธ์ ์, ํด๋น ๋ ธ๋์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ํ๋จํ๋ ๊ฒ์ด ์๋๊ณ
- ๋ ๋์๊ฐ์ ์ด ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋๋จธ์ง ๊ฐ์ ํ๊ณ Bound๋ฅผ ์ฐพ๊ณ ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋จํ๋ค๋ ๊ฒ์ด๋ค.
- ๊ฒฐ๊ตญ ํฌํ ์ ์ ๋ณธ๋ค๋ ๊ฒ(โฆ ์ํ)
0-1 ๋ฐฐ๋ญ ์ฑ์ฐ๊ธฐ ๋ฌธ์
- ์ ๋ค์ ๋์์๋ค.
- W์ ๋ฌด๊ฒ๋ฅผ ๋ด์ ์ ์๋ ๊ฐ๋ฐฉ์ด ์์ ๋
- ๊ฐ์น pi, ๊ฐ๊ฐ์ ๋ฌด๊ฒ wi๊ฐ ์๋ ๋ฌผ๊ฑด n๊ฐ๊ฐ ์๋ค๋ฉด
- ๊ฐ์ฅ ๊ฐ์น๋ฅผ ๋ํ๋ฉด์ ๊ฐ๋ฐฉ์ ๋ด์ ๋์ ๋ฌผ๊ฑด ๋ฆฌ์คํธ๋?
์ํ ๊ณต๊ฐ ํธ๋ฆฌ
- ์ ์๋ฅผ ๊ฐ๋จํ๊ฒ ์๊ฐํด๋ณด๋ฉด ์ด๋ฐ ์ํ๊ณต๊ฐ ํธ๋ฆฌ๊ฐ ์๊ธด๋ค.
- ๋ฌผ๊ฑด์ด n๊ฐ๋ผ๋ฉด 2^n๊ฐ์ ๋ง๋จ ๋ ธ๋๊ฐ ์๊ธฐ๋ ๊ฑฐ์ง.
- ๊ทธ๋ฆฌ๊ณ ๊ฑฐ๊ธฐ์ ๊ผญ ํ๋จ์ ํด์ผํด
- ์ด์ ์๋ ์ด๋ฐ ์ ๊ทผ๋ ํ์์ด.
- ๋์ ๊ณํ๋ฒ์ ์ฌ์ฉํด์, i๋ฒ์งธ๊น์ง์ ๋ฌผ๊ฑด์ ๊ณ ๋ คํ์ ๋, w์ ๋ฌด๊ฒ๋ฅผ ๋์ง ์๋ ์ต๋ ๊ฐ์น๋ผ๊ณ ์ ์๋ฅผ ํ๊ณ
- ๊ทธ๋ผ ๊ทธ ์ํ์์ i๋ฒ์งธ ๋ฌผ๊ฑด์ ๋ฃ์์ ๋์ ๊ฐ์น์ ๋ฃ์ง ์์์ ๋ ๊ฐ์น๋ฅผ ๋น๊ตํด์ ์ ๋ฐ์ดํธ๋ฅผ ํ๋ ๊ฑฐ์ง.
- ํ์ง๋ง ์ด ๋ฐฉ๋ฒ ์ญ์ ๋ง์ง๋ง ๊ฐ์ ๊ตฌํ๊ธฐ ์ํด 2๊ฐ์ ๋น๊ต๊ฐ ํ์ํ๊ณ ,
- ๊ฒฐ๊ตญ ๋ฌผ๊ฑด์ด n๊ฐ์ธ ๊ฒฝ์ฐ 2^n ์ ๋์ ์๊ฐ ๋ณต์ก๋๊ฐ ๋ฐ์ํ์ง.
Branch and bounds : DFS
branch and bound๋ฅผ ์ฌ์ฉ
- ์, ๊ทธ๋ผ ์ด๋ฒ์๋ ์ด๋ ๊ฒ ํด๋ณด์.
- ๋ด๊ฐ ํน์ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ์ ๋, ์ดํ๋ก ๊ฐ์ง ์ ์๋ ์ต๋ ๊ฐ์น๋ฅผ ์ ์ ์๋ค๊ณ ์๊ฐํด๋ณด์.
- ๊ทธ๋ผ ๋ด๊ฐ ์ง๊ธ๊น์ง ์ป์ ๊ฐ์น๋ณด๋ค, ์ป์ ์ ์๋ ์ต๋ ๊ฐ์น๊ฐ ๋ ํฌ๋,
- ๋ ์ฌ๊ธฐ๋ค๊ฐ ํฌ์ํ๋ฉด ์ง๊ธ ๋ฒ๊ฑฐ๋ณด๋ค 20%๋ ๋ฒ๋
- ๊ทธ๋ฌ๋ฉด ํฌ์ ํ์์.
- ๋๊ฐ์ด ๊ทธ๋ฐ ๊ฒฝ์ฐ์๋ ํ์์ ์งํํ๋ ๊ฑฐ์ผ.
- ๊ทธ๋ฐ๋ฐ ์๊ฐ ์ต๋ ๊ฐ์น๋ฅผ ๊ณ์ฐํด๋ดค์ ์๋ผ
- ๊ทธ๋ฌ๋ฉด ๋ด๊ฐ ํฌ์๋ฅผ ์ํด.
- ์ด๋ฐ ๋๋์ด์ผ.
- ๊ทธ๋ผ ์ด๊ฑธ ์ด๋ป๊ฒ ๊ตฌํ ์ง๋ฅผ ์๊ฐํด๋ณด์.
- ์ผ๋จ ๋ฌด๊ฒ๋น ๊ฐ์น๊ฐ ๋์๊ฒ ๋จผ์ ์ค๋๊ฒ ๋ง์๋ณด์ด๋, ์ด ์์๋ก ์ ๋ ฌํด๋ ์ํ๋ก ์์ํด๋ณด์.
- profit : i๋ฒ์งธ ๋ ธ๋๊น์ง ๋ฐฉ๋ฌธํ์ ๋, ์ด๋๊น์ง ๋ฃ์ ์์ดํ ์ ๊ฐ์น ํฉ
- weight : i๋ฒ์งธ ๋ ธ๋๊น์ง ๋ฐฉ๋ฌธํ์ ๋, ์ด๋๊น์ง ๋ฃ์ ์์ดํ ์ ๋ฌด๊ฒ ํฉ
- bound : ์ด ์ดํ๋ก ์ป์ ์ ์๋ ์ต๋ ๊ฐ์น (๋ฌผ๊ฑด ์๋ผ์ ๋ฃ์ ์ ์๋ค๊ณ ํ์)
- ์ด bound๋ฅผ ๊ตฌํ๋ ค๋ฉด, ๋ช๋ฒ์งธ ๋ฌผ๊ฑด์ ๋ฃ์์ ๋ W๋ฅผ ๋๋์ง๋ฅผ ์์์ผํด
- ์๋ฅผ ๋ค์ด 6๋ฒ์งธ ๋ฌผ๊ฑด๊น์ง ๋ฃ์ผ๋๊น W๋ฅผ ๋์ด๊ฐ, ๊ทธ๋ผ ์ต๋ ๊ฐ์น๋ฅผ ๊ตฌํ๋ ค๋ฉด 6๋ฒ์งธ ์์๋ ๋นผ๊ณ
- ๋๋จธ์ง๋ฅผ ๋ค ๋ฃ์ด์ ๊ฐ์น๋ฅผ ๊ณ์ฐํ ๋ค์์ 6๋ฒ์งธ๋ ์๋ผ์ ๊ฐ์น๋ฅผ ๊ณ์ฐํด์ ๋ํด์ค์ผ ์ต๋ ๊ฐ์น๊ฐ ๋์ค์์(์ด๋ก ์ )
- ๊ทธ 6์ด๋ผ๋ ์ซ์๋ฅผ k๋ผ๊ณ ํด๋ณด์. ๊ทธ๋ฌ๋ฉด i๋ฒ์งธ ์ดํ๋ถํฐ k์ ๊น์ง ๋ค ๋ํด์ค์ผ๊ฒ ์ง?
- ๊ทธ๋ฌ๋๊น
- bound = profit + + (W-totalweight) * pk/wk
- ์ฌ๊ธฐ์ total weight๋ k-1๋ฒ์งธ๊น์ง์ ๋ฌด๊ฒ๋ฅผ ๋ค๋ํ ๊ฐ์ด์ผ.
- ์ ๊ทธ๋ฌ๋ฉด ํ์์ ํ๋ฉด์, ์ง๊ธ๊น์ง ์ต๋ ๊ฐ์น๋ฅผ ๋ด์ ๋ณ์ maxprofit ํ๋๋ฅผ ์ก์์ฃผ์.
- maxprofit >= bound์ด๋ฉด ํ์ํ ํ์๊ฐ ์๋ค.
- ๊ฐ์๋ ๊ทธ๋ฌํ ์ด์ ๋ bound๋ ์ ๋ง ์ด๋ก ์ ์ต์ ์ด๊ธฐ ๋๋ฌธ์ด์ง.
ํ์ ํธ๋ฆฌ
- ์ฐ์ตํ๋ฉด์ ์์ฐจ์ ์ผ๋ก ๋ฐ๋ผ๊ฐ ๋ณด์.
Branch and bounds : BFS
BFS
- ๋๋น ์ฐ์ ํ์์ ์งํํด๋ณด์.
- ํ์ ์์๋ง ๋ค๋ฅด๊ณ ๋ชจ๋ ๊ฒ์ ๊ฐ๋ค.
BFS ํ์ ์์
Branch and bounds : BFS(Best First Search)
- BFS์์ ๋๋น ์ฐ์ ํ์์ ์ํํ๊ธฐ ์ํด Queue๋ฅผ ์ฌ์ฉํด์ ๊ตฌํ๋ค.
- ์ฆ ํด๋น ๋ ธ๋์ ์ฐ๊ฒฐ๋์ด ์๋ ๋ค๋ฅธ ๋ ธ๋๋ฅผ ํ์ํ๋๋ฐ ์์ด์
- ์ฐ๊ฒฐ๋ ๋ ์๋ค ๋จผ์ ํ์ ์ง์ด๋ฃ๊ณ
- ํ์ด ๋์จ ๋ ์๋ค์ ๋ํด์ ๊ฐ์ ์์ ์ ๋ฐ๋ณตํจ์ผ๋ก์จ ์ด๋ฅผ ๊ตฌํํ ๊ฒ
- ๊ทธ๋ฐ๋ฐ, ์ด Queue๋ฅผ Priority Queue๋ฅผ ์ฌ์ฉํด์ ๊ฐ์ฅ ๊ฐ๋ฅ์ฑ์ด ์๋ ๋ ์๋ถํฐ
- ํ์ํ๋ค๋ฉด ์ด๋จ๊น?
Best First Search
- ์ค์ ๋ก ํด๋ณด๋ฉด ํ์ ๊ฐ์๊ฐ ๋ง์ด ์ค์ด๋ค์๋ค.
์ธํ์ ๋ฌธ์
- ํ๋์ ๋ ธ๋๋ฅผ ์ถ๋ฐํ์ฌ ๋ค๋ฅธ ๋ ธ๋๋ฅผ ํ๋ฒ๋ง ๋ฐฉ๋ฌธํ๊ณ ์ฒ์์ผ๋ก ๋์์ค๋ ๊ฐ์ฅ ์งง์ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๋ ๋ฌธ์
- ์ฆ ํ๋ฐฐ ์์ ์จ๊ฐ ์ด๋ป๊ฒ ํ๋ฉด ์ต๋จ๊ฑฐ๋ฆฌ๋ก ๋ค ๋ฐฐ๋ฌํ๊ณ ์ง์์์ ์ด๊น? ์ ๋ฌธ์ ์ด๋ค.
- ๋ง์ฝ์ ๋ชจ๋ ๊ฐ์ง์๋ฅผ ํ๋จํ๋ค๋ฉด (n-1)!์ด๋ค.
- ์ด๋ฐ ๊ฒฝ๋ก๊ฐ ์์ ๊ทธ๋ํ์ ์๋ค.
ํค๋ฐํ ๋์ ํ๋ก
- ์ด๊ฒ์ ๋์ ๊ณํ๋ฒ์ผ๋ก ํ๋ ค๋ฉด ์๊ฐ ๋ณต์ก๋๊ฐ ๋ง์ด ์๋๋ค.
- ์ฌ์ค ์ ์๋๋์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค.
์ธํ์ ๋ฌธ์ ์ํ ๊ณต๊ฐ ํธ๋ฆฌ
- ์ด๋ ๊ฒ ์ํ๊ณต๊ฐ ํธ๋ฆฌ๊ฐ ๊ตฌ์ฑ๋๋ค. ๋ง๋จ ๋ ธ๋๋ ์ด (n-1)!๊ฐ์ด๋ค.
- ์ ๋ต์ ๋ถ๊ธฐ ํ์ ๋ฒ์ผ๋ก, ์ง๊ธ๊น์ง ๋ฐฉ๋ฌธํ ๋ง์ง๋ง ๋ ธ๋ ์ดํ์ ๋ชจ๋ ๋ ธ๋๊ฐ ๊ฐ์ง๋ ๊ฐ์ค์น์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๋ํด์ Bound๋ฅผ ์ก๋ ๊ฒ
- ๊ทธ๋ฌ๋๊น ๋ฌด์จ ๋ง์ด๋๋ฉด..
- ์ ์๋ณด๋ฉด, ์ฒซ๋ฒ์งธ v1~v5๊น์ง์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๋ชจ๋ ๋ํด์ ์ผ์ฃผ ๊ฒฝ๋ก์ bound๋ฅผ ์ก์๋ค.
- ์๊ฐํด๋ณด๋ฉด ์ด๊ฑด ์๋ชป๋๋ค. ๋ถ๊ฐ๋ฅํ ์ง๋ ๋ชจ๋ฅด๋ ๊ฒฝ๋ก์ธ๋ฐ..
- ๊ทธ๊ฒ ํฌ์ธํธ์ด๋ค. ํ์ง๋ง ๊ฐ๋ฅ์ฑ์ด ์๊ธดํ๋ค. ์ฆ, ์ ๋ง ๊ธฐ์ ์ ์ผ๋ก ์ด์ด๋๋ฌด์ข์ ๊ทธ๋์ ์ป๋ ๊ฒฐ๋ก ์ bound๋ก ์ก์๋ ๊ฒ
- ์ํ..
- ๊ทธ๋ฌ๋๊น ๋๋ฒ์งธ ์ธ๋ฒ์งธ ๊ทธ๋ฆผ์ ๋ณด๋ฉด,
- ํน์ ์์น๊น์ง ๊ฐ๋ค์์ ์๊ฐ ๋ ธ๋์ ๋ํด์ ์ต๋จ๊ฑฐ๋ฆฌ๋ง ์์ ๋นผ์ ๊ทธ ๊ฒฝ๋ก๊น์ง ๊ฐ์ ๋์ Bound๋ก ์ก๋๋ค.
- ์ฌ๊ธฐ์ ๋ฐฐ์ธ ์ ์๋ ์ ์, bound๋ ์ด๋ก ์ ์ผ๋ก ๊ฐ์ฅ ์ด์์ ์ธ ๊ฐ์ผ๋ก ๊ณ์ฐํ๋๊ฒ์ด ๋ง๋ค๋ ๊ฒ.
์ง์ ํด๋ณด๊ธฐ
- ๊ทธ๋ฐ๋ฐ ์ฌ์ ํ ์๊ฐ ๋ณต์ก๋๋ ๊ฑฐ์ ์ง์๋ค ^^
- ์ ํ๋์ n^2์ ํ ์ ์๋ค๊ณ ํ๋ค.
- ์ฌํผ ๊ทธ๋์ n=40๋ง ๋๋ ๋ชปํผ๋ค๊ณ ํ๋ค.