NP Hard
๐ ํฅ๋ฏธ๋ก์ด ์ฃผ์ ๋ฐ๊ฒฌ
Dacon์์ ํฅ๋ฏธ๋ก์ด ์ฃผ์ ๋ก ๋ํ๋ฅผ ์ด์๊ธธ๋, ์ด๋ฒ์ ์ฐธ์ฌํด๋ณด๊ธฐ๋ก ํ๋ค.
๋ํ๋งํฌ
๋ํ ์ด๋ฆ์ ์ฐํ ๋ฐฐ์ก ๊ฒฝ๋ก ์ต์ ํ
๋ด์ฉ์ ๊ฐ๋จํ ์ค๋ช ํ์๋ฉด
(0,0) ์ ์์นํ ์ฐํ๊ฐ (100,100) ์ขํ ์์ ๋ชจ๋ ๋ง์์ ์ ๋ฌผ์ ์ ๋ฌํ ์ ์๋ ์ต๋จ๊ฒฝ๋ก ๋ง์ ๋ฐฉ๋ฌธ์์ ๊ตฌํ๊ธฐ!
โ ๏ธ ๐ฆ๊ฐ ํ๋ค๊ธฐ ๋๋ฌธ์ ํ๋ฒ์ ์ ๋ฌผ 25๊ฐ๋ง ์ค์ ์ ์๊ณ , ํ๋ฒ ๋ฐฉ๋ฌธํ ๋ง์์ ๋ค์ ๋ฐฉ๋ฌธํ ์ ์์.
โ ๏ธ ์ ์๋ ์ฐธ๊ฐ์๊ฐ ๋์ถํ ๋ฐฐ๋ฌ ์์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ํด๋ฆฌ๋ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ์ฌ ์ฐ์
TSP ์๊ณ ๋ฆฌ์ฆ์ด ์นดํ
๊ณ ๋ฆฌ๋ก ์ค์ ๋์ด ์์๋ค.
์ธํ์ ์๊ณ ๋ฆฌ์ฆ์ด๋ผ๊ณ ์์ ์ ์ฝํ
์คํฐ๋ํ ๋ ์ ๊น ๋ค์๋ ๊ธฐ์ต์ด ์๊ธดํ๋ฐ,
๋น์์ ๋๋ฌด ์ด๋ ค์ ์ด์ ๊ทธ๋ฅ ํจ์คํ์๋ค. ์๋์ค๋ฝ๋ค.
๊ทธ๋์ ๋ํ์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ฐธ์ฌํ๊ธฐ ์์ ์ฌ๋ฌ ๊ฐ๋ ๋ค์ ๊ณต๋ถํด๋ณด๋ ค๊ณ ํ๋น.
์ด๋ฒ ์ฃผ์ ๋ NP-Hard ~
๋ญ์ง ๋ชฐ๋ผ๋ ์๋นํ Hard ํ ๊ธฐ์ด์ด ๋๊ปด์ง๋ค.
NP-Hard
NP-Hard์ ์ ์
NP-Hard(Non-deterministic Polynomial-time Hard)๋ ๊ณ์ฐ ๋ณต์ก๋ ์ด๋ก ์์ ์์ฃผ ์ด๋ ค์ด ๋ฌธ์ ์ ์งํฉ
NP-Hard ๋ฌธ์ ์ ํน์ง
- ํด๊ฒฐํ๋ ๋ฐ ์๊ฐ์ด ๋งค์ฐ ์ค๋ ๊ฑธ๋ฆผ(๊ธฐ์กด์ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก๋ ๋คํญ ์๊ฐ ์์ ํด๊ฒฐ ๋ถ๊ฐ๋ฅ).
- ๋ฌธ์ ์ ํด๊ฐ ์ฃผ์ด์ก์ ๋, ๊ทธ๊ฒ์ด ๋ง๋์ง ํ์ธํ๋ ๊ฒ๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆผ.
- NP ๋ฌธ์ ๋ณด๋ค๋ ๋ ์ด๋ ค์ด ๋ฌธ์ ๋ฅผ ํฌํจ.
TSP(Traveling Salesman Problem)๋ NP-Hard ๋ฌธ์ ์ค ํ๋์ด๋ค.
๋์ ์๊ฐ ๋ง์์ง์๋ก ๊ฐ๋ฅํ ๊ฒฝ๋ก ์๊ฐ ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ์ ๋น ๋ฅด๊ฒ ์ต์ ํด๋ฅผ ์ฐพ๋ ๊ฒ์ด ์ด๋ ต๋ค๊ณ ํ๋น.
์ฝ๊ฒ ์ดํดํ๋ NP-Hard
1๏ธโฃ P(Polynomial-time):
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ํ์ํ ์๊ฐ์ด ๋คํญ ์๊ฐ ๋ด์ ๊ฐ๋ฅ
- ๋ง์ , ๋บ์ , ์ ๋ ฌ ๋ฑ.
2๏ธโฃ NP(Non-deterministic Polynomial-time):
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆด ์ ์์ง๋ง, ํด๊ฐ ์ฃผ์ด์ก์ ๋, ๊ทธ๊ฒ์ด ๋ง๋์ง ๊ฒ์ฆํ๋ ๊ฒ์ ๋คํญ ์๊ฐ ๋ด์ ๊ฐ๋ฅ
- Sudoku ํผ์ฆ: ๋ฌธ์ ๋ฅผ ํธ๋ ๋ฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ์ง๋ง, ์ ๋ต์ด ์ฃผ์ด์ก์ ๋ ๊ฒ์ฆํ๋ ๊ฒ์ ๋น ๋ฆ
3๏ธโฃ NP-Hard:
- P ๋ฌธ์ ์ NP ๋ฌธ์ ๋ฅผ ๋ชจ๋ ํฌํจํ๋ ๋ ์ด๋ ค์ด ๋ฌธ์
- ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋๋ผ๋ ์ผ๋ฐ์ ์ผ๋ก ๋น ๋ฅธ ํด๊ฒฐ์ฑ ์ ์ฐพ๊ธฐ ์ด๋ ต
- NP-Hard ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ์๊ณ ๋ฆฌ์ฆ์ด ์๋ค๋ฉด, ๋ชจ๋ NP ๋ฌธ์ ๋ฅผ ํด๊ฒฐ ๊ฐ๋ฅ
TSP๊ฐ NP-Hard์ธ ์ด์
TSP์ ํต์ฌ์ ๋ชจ๋ ๋์๋ฅผ ํ ๋ฒ์ฉ ๋ฐฉ๋ฌธํ๊ณ ๋ค์ ์ถ๋ฐ์ ์ผ๋ก ๋์์ค๋ ์ต์ ๊ฒฝ๋ก๋ฅผ ์ฐพ๋ ๋ฌธ์ ์ด๋ค.
๊ทธ๋ฌ๋ฏ๋ก ๋์ ์๊ฐ ์ฆ๊ฐํ ์๋ก ๊ฐ๋ฅํ ๊ฒฝ๋ก ์๊ฐ ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐํ๊ฒ ๋๋ค.
๊ฐ๋ฅํ ๊ฒฝ๋ก ์:
- ๋์๊ฐ ( n )๊ฐ์ผ ๋, ๊ฐ๋ฅํ ๊ฒฝ๋ก ์๋ ((n-1)!) ์ฆ, ์๊ฐ๋ณต์ก๋๊ฐ n! ์ด ๋๋ค.
์์๋ก ๋์ ์๋ฅผ ์ฆ๊ฐ์์ผ ๋ณด๋ฉด:
๋์ ์ | ๊ฐ๋ฅํ ๊ฒฝ๋ก ์ |
---|---|
4 | ( 3! = 6 ) |
5 | ( 4! = 24 ) |
10 | ( 9! = 362,880 ) |
20 | ( 19! \approx 10^{17} ) |
์ด์ฒ๋ผ, ๋์ ์๊ฐ ๋ง์์ง๋ฉด ๊ฐ๋ฅํ ๊ฒฝ๋ก ์๊ฐ ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ์, ํ์ค์ ์ผ๋ก ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ํ์ํ์ฌ ์ต์ ๊ฒฝ๋ก๋ฅผ ์ฐพ๋ ๊ฒ์ ํ๋ค์ด๋ณด์ธ๋ค.
๊ทธ๋ผ NP-Hard ๋ฌธ์ ๋ ์ฐ์ฐ ํด๊ฒฐํ๋์ฌ
NP-Hard ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์๋ฒฝํ ์ต์ ํด๋ฅผ ์ฐพ๊ธฐ๋ณด๋ค ๊ทผ์ฌํด(Approximate Solution)๋ฅผ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ค๊ณ ํ๋ค.
๋ช ๊ฐ์ง ๋ํ์ ์ธ ์๊ณ ๋ฆฌ์ฆ:
์๊ณ ๋ฆฌ์ฆ | ์ค๋ช |
---|---|
Greedy Algorithm | ํ์ฌ ์ํฉ์์ ๊ฐ์ฅ ์ข์ ์ ํ์ ๋ฐ๋ณต. |
Dynamic Programming | ๋ฌธ์ ๋ฅผ ์์ ๋ถ๋ถ ๋ฌธ์ ๋ก ๋๋ ํด๊ฒฐ. |
Genetic Algorithm | ์์ฐ ์ ํ์ ๋ชจ๋ฐฉํ ์ต์ ํ ์๊ณ ๋ฆฌ์ฆ. |
Simulated Annealing | ๋ฌผ์ง์ด ๋๊ฐ๋ ๋์ ๋ถ์ ์ด๋์ ๋ชจ๋ฐฉ. |
Ant Colony Optimization | ๊ฐ๋ฏธ์ ๋จน์ด ํ์์ ๋ชจ๋ฐฉํ ์๊ณ ๋ฆฌ์ฆ. |
์ฝ๊ฒ ์ดํดํ๋ TSP์ NP-Hard
๐ง TSP๊ฐ ์ด๋ ค์ด ์ด์
- ๋์๊ฐ ๋ง์์ง์๋ก ๊ฐ๋ฅํ ๊ฒฝ๋ก ์๊ฐ ๊ธ๊ฒฉํ ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ
- ๋จ์ํ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ํ์ํ๋ ๊ฒ์ ํ์ค์ ์ผ๋ก ๋ถ๊ฐ๋ฅ
๐ก ๊ทธ๋๋ ํด๊ฒฐ์ ํด์ผ์ง?
- ์๋ฒฝํ ์ต์ ํด๋ฅผ ์ฐพ๋ ๋์ , ๊ทผ์ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ๋น ๋ฅด๊ฒ ์ข์ ๊ฒฝ๋ก๋ฅผ ์ฐพ๊ธฐ
์ผ์์ ์ธ NP-Hard ๋ฌธ์ ์์
๋ฌธ์ ์ ํ | ์ค๋ช |
---|---|
TSP | ๋ชจ๋ ๋์๋ฅผ ํ ๋ฒ์ฉ ๋ฐฉ๋ฌธํ๊ณ ์ต์ ๊ฒฝ๋ก๋ฅผ ์ฐพ๊ธฐ. |
Job Scheduling | ์์ ์ ๊ฐ์ฅ ํจ์จ์ ์ผ๋ก ๋ฐฐ์นํ๋ ๋ฌธ์ . |
Knapsack Problem | ์ ํ๋ ์ฉ๋ ๋ด์์ ์ต๋ ๊ฐ์น๋ฅผ ์ป๋ ๋ฌธ์ . |
Sudoku | ์ซ์๋ฅผ ์ฑ์์ ํผ์ฆ์ ์์ฑํ๋ ๋ฌธ์ . |
๊ฒฐ๋ก
๊ทธ๋๊น, ์๋ ์๋ ์ฝ๋๋ก ๋๋ฆฌ๋ฉด ํ์ธ์ ๊ฑธ๋ฆดํ
๋
์๊ฐ๋ณต์ก๋์ ์ ๋ต ๋ชจ๋ ์ฑ๊ธด ์ฝ๋๊ฐ ํ์ํ๋ค๋ ๋ป ๊ฐ๋ค.
์ด๋ ต๊ฒ ์ง๋ง ๊ทธ๋งํผ ์ฌ๋ฐ์ ๊ฒ ๊ฐ๋น.