ๆผธๅ…ฅไฝณๅขƒ

NP Hard

DevLog

๐ŸŽ…ํฅ๋ฏธ๋กœ์šด ์ฃผ์ œ ๋ฐœ๊ฒฌ

Dacon์—์„œ ํฅ๋ฏธ๋กœ์šด ์ฃผ์ œ๋กœ ๋Œ€ํšŒ๋ฅผ ์—ด์—ˆ๊ธธ๋ž˜, ์ด๋ฒˆ์— ์ฐธ์—ฌํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.
๋Œ€ํšŒ๋งํฌ
๋Œ€ํšŒ ์ด๋ฆ„์€ ์‚ฐํƒ€ ๋ฐฐ์†ก ๊ฒฝ๋กœ ์ตœ์ ํ™”

๋‚ด์šฉ์„ ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜์ž๋ฉด

(0,0) ์— ์œ„์น˜ํ•œ ์‚ฐํƒ€๊ฐ€ (100,100) ์ขŒํ‘œ ์œ„์˜ ๋ชจ๋“  ๋งˆ์„์— ์„ ๋ฌผ์„ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋‹จ๊ฒฝ๋กœ ๋งˆ์„ ๋ฐฉ๋ฌธ์ˆœ์„œ ๊ตฌํ•˜๊ธฐ!
โš ๏ธ ๐ŸฆŒ๊ฐ€ ํž˜๋“ค๊ธฐ ๋•Œ๋ฌธ์— ํ•œ๋ฒˆ์— ์„ ๋ฌผ 25๊ฐœ๋งŒ ์‹ค์„ ์ˆ˜ ์žˆ๊ณ , ํ•œ๋ฒˆ ๋ฐฉ๋ฌธํ•œ ๋งˆ์„์€ ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•  ์ˆ˜ ์—†์Œ.
โš ๏ธ ์ ์ˆ˜๋Š” ์ฐธ๊ฐ€์ž๊ฐ€ ๋„์ถœํ•œ ๋ฐฐ๋‹ฌ ์ˆœ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์œ ํด๋ฆฌ๋“œ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ์‚ฐ์ •

TSP ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์นดํ…Œ๊ณ ๋ฆฌ๋กœ ์„ค์ •๋˜์–ด ์žˆ์—ˆ๋‹ค.
์™ธํŒ์› ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๊ณ  ์˜ˆ์ „์— ์ฝ”ํ…Œ ์Šคํ„ฐ๋””ํ•  ๋•Œ ์ž ๊น ๋“ค์—ˆ๋˜ ๊ธฐ์–ต์ด ์žˆ๊ธดํ•œ๋ฐ,
๋‹น์‹œ์— ๋„ˆ๋ฌด ์–ด๋ ค์› ์–ด์„œ ๊ทธ๋ƒฅ ํŒจ์Šคํ–ˆ์—ˆ๋‹ค. ์ž๋ž‘์Šค๋Ÿฝ๋‹ค.

๊ทธ๋ž˜์„œ ๋Œ€ํšŒ์— ๋ณธ๊ฒฉ์ ์œผ๋กœ ์ฐธ์—ฌํ•˜๊ธฐ ์•ž์„œ ์—ฌ๋Ÿฌ ๊ฐœ๋…๋“ค์„ ๊ณต๋ถ€ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹น.

์ด๋ฒˆ ์ฃผ์ œ๋Š” NP-Hard ~
๋ญ”์ง„ ๋ชฐ๋ผ๋„ ์ƒ๋‹นํžˆ Hard ํ•œ ๊ธฐ์šด์ด ๋Š๊ปด์ง„๋‹ค.

NP-Hard


NP-Hard์˜ ์ •์˜

NP-Hard(Non-deterministic Polynomial-time Hard)๋Š” ๊ณ„์‚ฐ ๋ณต์žก๋„ ์ด๋ก ์—์„œ ์•„์ฃผ ์–ด๋ ค์šด ๋ฌธ์ œ์˜ ์ง‘ํ•ฉ

NP-Hard ๋ฌธ์ œ์˜ ํŠน์ง•

  1. ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๋งค์šฐ ์˜ค๋ž˜ ๊ฑธ๋ฆผ(๊ธฐ์กด์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ๋Š” ๋‹คํ•ญ ์‹œ๊ฐ„ ์•ˆ์— ํ•ด๊ฒฐ ๋ถˆ๊ฐ€๋Šฅ).
  2. ๋ฌธ์ œ์˜ ํ•ด๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ทธ๊ฒƒ์ด ๋งž๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ๋„ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆผ.
  3. 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 ์ˆซ์ž๋ฅผ ์ฑ„์›Œ์„œ ํผ์ฆ์„ ์™„์„ฑํ•˜๋Š” ๋ฌธ์ œ.

๊ฒฐ๋ก 

๊ทธ๋‹ˆ๊นŒ, ์›๋ž˜ ์•Œ๋˜ ์ฝ”๋“œ๋กœ ๋Œ๋ฆฌ๋ฉด ํ•œ์„ธ์›” ๊ฑธ๋ฆดํ…Œ๋‹ˆ ์‹œ๊ฐ„๋ณต์žก๋„์™€ ์ •๋‹ต ๋ชจ๋‘ ์ฑ™๊ธด ์ฝ”๋“œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๋œป ๊ฐ™๋‹ค.
์–ด๋ ต๊ฒ ์ง€๋งŒ ๊ทธ๋งŒํผ ์žฌ๋ฐŒ์„ ๊ฒƒ ๊ฐ™๋‹น.