์ƒˆ์†Œ์‹

์•Œ๊ณ ๋ฆฌ์ฆ˜

[์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ •๋ฆฌ] - ์™ธํŒ์› ์ˆœํšŒ ๋ฌธ์ œ(Traveling Salesperson Problem, TSP)

  • -

 

๐Ÿ’ก์™ธํŒ์› ์ˆœํšŒ ๋ฌธ์ œ(Traveling Salesman Problem, TSP) ๋ž€? 

์–ด๋–ค ๋„์‹œ์—์„œ ์ถœ๋ฐœํ•˜์—ฌ ๋‹ค๋ฅธ ๋ชจ๋“  ๋„์‹œ๋“ค์„ ๋Œ๊ณ 
๋‹ค์‹œ ์ถœ๋ฐœํ–ˆ๋˜ ๋„์‹œ๋กœ ๋Œ์•„์˜ค๋Š”๋ฐ ๋“œ๋Š” ์ตœ์†Œ ๋น„์šฉ์„ ์ฐพ๋Š” ๋ฌธ์ œ

๋ธŒ๋ฃจํŠธ ํฌ์Šค ํ•ด๊ฒฐ๋ฐฉ๋ฒ• ( ์ข‹์€ ๋ฐฉ๋ฒ• x) 

์™ธํŒ์› ์ˆœํšŒ ๋ฌธ์ œ๋ฅผ ๋ง‰์—ฐํ•˜๊ฒŒ ์ƒ๊ฐํ•ด๋ณด๋ฉด, ํŠน์ • ์ถœ๋ฐœ ๋„์‹œ๋ฅผ ๊ฐ€์ •ํ•ด๋†“๊ณ  ๋„์‹œ๋ฅผ ์ˆœํšŒํ•ด๋„ ๊ฒฝ๋กœ์˜ ๊ธธ์ด๋Š” ๋‹ค๋ฅด์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค. ์ถœ๋ฐœ ๋„์‹œ๋ฅผ  A๋กœ ๊ฐ€์ •ํ•ด๋†“๊ณ  ๋‹ค๋ฅธ ๋„์‹œ๋“ค์„ ์ˆœํšŒํ•˜๋Š” ๋ฐฉ์‹์€ (n-1)! ํ˜•์‹์œผ๋กœ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. 

ํ•˜์ง€๋งŒ ์ด ๊ฒฝ์šฐ๋Š” n์ด ์ปค์ง€๋ฉด ์ปค์งˆ์ˆ˜๋ก ๋งŽ์€ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋”ฐ์ ธ์ฃผ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค. 

 

 

DP ์ ์šฉ ๋ฐฉ์‹ (๋„์‹œ๊ฐ€ 16๊ฐœ ์ดํ•˜์ผ ๋•Œ) / ์ตœ์ ์˜ ์ ‘๊ทผ ๋ฐฉ์‹ 

DP ๋ฉ”๋ชจ์ œ์ด์…˜ = (n-1)!์˜ ๋ชจ๋“  ๊ฒฝ๋กœ๋ฅผ ์กฐ์‚ฌํ•˜์ง€ ์•Š๊ณ  ์ค‘๋ณต๋œ ๊ฒฝ๋กœ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ธฐ๋ฒ• 
๋น„ํŠธ๋งˆ์Šคํฌ = ํŠน์ • ๋„์‹œ๋ฅผ ๋ฐฉ๋ฌธํ•œ ์ƒํƒœ๋ฅผ ์ €์žฅํ•  ๋•Œ ์‚ฌ์šฉ 

 

 

DP ๋ฉ”๋ชจ์ œ์ด์…˜ ๊ธฐ๋ฒ•์€ ๋™์ผํ•œ ํ•˜์œ„๋ฌธ์ œ์˜ ๋ฐ˜๋ณต์„ ๋ง‰์•„์คŒ์œผ๋กœ์จ ๋” ๋†’์€ ํšจ์œจ์˜ ์—ฐ์‚ฐ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ค€๋‹ค. 

(๋Œ€ํ‘œ์ ์œผ๋กœ๋Š” ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์„ Top-Down ๋ฐฉ์‹์„ ๊ตฌํ•  ๋•Œ ์‚ฌ์šฉ) 

 

๋น„ํŠธ๋งˆ์Šคํ‚น์€ bit ์—ฐ์‚ฐ์œผ๋กœ ์˜ˆ๋ฅผ ๋“ค์–ด 16๊ฐœ์˜ ๋„์‹œ๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ ์œ„์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ํ‘œํ˜„ํ•˜๋ ค๋ฉด 2^16๊ฐ€์ง€์˜ ๊ฒฝ์šฐ๋ฅผ ์ผ์ผ์ด ๋‹ค ํ‘œํ˜„ํ•ด์•ผํ•˜๋Š”๋ฐ ๋น„ํŠธ๋งˆ์Šคํ‚น์œผ๋กœ๋Š” 16bit์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. 

์˜ˆ๋ฅผ ๋“ค์–ด 16๊ฐœ์˜ ๋„์‹œ๋“ค ์ค‘ 1๋ฒˆ, 2๋ฒˆ, 6๋ฒˆ ๋„์‹œ๋ฅผ ๋ฐฉ๋ฌธ ํ–ˆ๋‹ค๊ณ  ํ•˜๋ฉด 0000 0000 0010 0011 ์ด๋Ÿฐ์‹์œผ๋กœ ๊ฐ ์ž๋ฆฌ์— 1๋กœ ๋ฐฉ๋ฌธ ํ‘œ์‹œ๋ฅผ ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค. 

 

๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด 1๋ฒˆ~5๋ฒˆ ๋„์‹œ๋“ค๊ณผ ์ด๋™ ๊ฐ€๋Šฅํ•œ ๊ฒฝ๋กœ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณธ๋‹ค. 

์ถœ๋ฐœ ๊ฒฝ๋กœ๋ฅผ 1์ด๋ผ๊ณ  ์ง€์ •ํ–ˆ์„ ๋•Œ ,

์™ผ์ชฝ ๊ทธ๋ฆผ์€ 1-> 2-> 3-> 5-> 4 ์ˆœ์œผ๋กœ ์ˆœํšŒ๋ฅผ ํ•˜๊ณ  ์˜ค๋ฅธ์ชฝ๊ทธ๋ฆผ์€ 1-> 3-> 2-> 5-> 4 ์ˆœ์œผ๋กœ ์ˆœํšŒ๋ฅผ ํ•œ๋‹ค. 

์œ„ ๋‘ ๋ฐฉ์‹์€ 5->4 ์˜ ๊ฒฝ๋กœ๊ฐ€ ์ค‘๋ณต๋˜์–ด ๊ตฌํ•ด์ง„๋‹ค. 

์ด๋ฏธ ๋ฐฉ๋ฌธํ•œ ๋„์‹œ๋“ค๊ณผ ํ˜„์žฌ ์œ„์น˜ํ•œ ๋„์‹œ๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์ตœ์†Œ ๋น„์šฉ์ด ์ผ์ •ํ•˜๋ฏ€๋กœ 5๋ฒˆ ๋„์‹œ์—์„œ์˜ ์ตœ์†Œ๋น„์šฉ์€ ๊ฐ™๋‹ค. ๋”ฐ๋ผ์„œ ์ค‘๋ณต๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋‘๋ฒˆ ๊ตฌํ•˜๋Š”๊ฑด ํšจ์œจ์ ์ด์ง€ ์•Š๋‹ค.

์ด๋Ÿด ๋•Œ  DP ๋ฉ”๋ชจ์ œ์ด์…˜ ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์†Œ๋น„์šฉ์„ ์ €์žฅํ•ด๋‘์–ด ์ค‘๋ณตํ•˜์—ฌ ๊ตฌํ•˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค. 

 

 

์ตœ์†Œ๋น„์šฉ์€ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ํ‘œํ˜„ํ•˜๋Š”๋ฐ, ์ตœ์†Œ๋น„์šฉ์ด ๊ฐ™์„ ์กฐ๊ฑด ์ฆ‰ , ํ–‰์€ ์ด๋ฏธ ๋ฐฉ๋ฌธํ•œ ๋„์‹œ๋“ค์˜ ์ง‘ํ•ฉ, ์—ด์€ ํ˜„์žฌ ์žˆ๋Š” ๋„์‹œ๋ฒˆํ˜ธ๋ฅผ ํ‘œ์‹œํ•œ๋‹ค. 

DP[i][j] = ์ด๋ฏธ ๋ฐฉ๋ฌธํ•œ ๋„์‹œ๋“ค์˜ ์ง‘ํ•ฉ์ด i, ํ˜„์žฌ ์žˆ๋Š” ๋„์‹œ๋ฅผ j๋กœ ๋‘์–ด, ์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๋‚˜๋จธ์ง€ ๋„์‹œ๋“ค์„ ๋ชจ๋‘ ๋ฐฉ๋ฌธํ•œ ๋’ค ์ถœ๋ฐœ ๋„์‹œ๋กœ ๋Œ์•„์˜ฌ ๋•Œ ๋“œ๋Š” ์ตœ์†Œ ๋น„์šฉ์„ ๊ตฌํ•œ๋‹ค. 

์ด๋•Œ i์˜ ๋ฒ”์œ„๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜ 0<=i<=2^n , j์˜ ๋ฒ”์œ„๋Š” 0<=j<=5์ด๋‹ค. 

 

์™ผ์ชฝ ๊ทธ๋ฆผ์„ DP ๋ฉ”๋ชจ์ œ์ด์…˜ ๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•ด๋ณด๋ฉด 1->2->3->5->4 ์ˆœ์œผ๋กœ ๋„์‹œ๋ฅผ ์ง€๋‚  ๋•Œ, DP[00001][1], DP[00011][2], DP[00111][3] , DP[10111][5] , DP[11111][4] ์ˆœ์œผ๋กœ ๊ฐฑ์‹ ๋œ๋‹ค. 

1->3->2->5->4 ์ˆœ์œผ๋กœ ๋„์‹œ๋ฅผ ์ง€๋‚  ๋•Œ๋Š” DP[00001][1], DP[000101][3], DP[00111][2] , DP[10111][5], DP[11111][4] ์ˆœ์œผ๋กœ ๊ฐฑ์‹ ๋˜๋Š”๋ฐ, 5๋ฒˆ ๋„์ฐฉํ–ˆ์„ ์‹œ [10111][5]์— ๊ฐ’(=3)์ด ์ด๋ฏธ ์žˆ์œผ๋ฏ€๋กœ ๊ทธ ์ดํ›„๋ฅผ ๊ตฌํ•  ํ•„์š” ์—†์ด ํ•ด๋‹น ๋ฐฐ์—ด์˜ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

์ด๋ ‡๋“ฏ DP๋ฉ”๋ชจ์ œ์ด์…˜ ๊ธฐ๋ฒ•๊ณผ ๋น„ํŠธ๋งˆ์Šคํ‚น์„ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์†Œ ๋น„์šฉ์„ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์™ธํŒ์› ์ˆœํšŒ ๋ฌธ์ œ์— ์ตœ์ ํ™”๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํƒ์ƒ‰ ๊ธฐ๋ฒ•์ด๋‹ค. 

 

 

 

 

๋ฐฑ์ค€ ์™ธํŒ์› ์ˆœํšŒ ๋ฌธ์ œ ํ’€์–ด๋ณด๊ธฐ : https://www.acmicpc.net/problem/2098

 

2098๋ฒˆ: ์™ธํŒ์› ์ˆœํšŒ

์ฒซ์งธ ์ค„์— ๋„์‹œ์˜ ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. (2 ≤ N ≤ 16) ๋‹ค์Œ N๊ฐœ์˜ ์ค„์—๋Š” ๋น„์šฉ ํ–‰๋ ฌ์ด ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ–‰๋ ฌ์˜ ์„ฑ๋ถ„์€ 1,000,000 ์ดํ•˜์˜ ์–‘์˜ ์ •์ˆ˜์ด๋ฉฐ, ๊ฐˆ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๋Š” 0์ด ์ฃผ์–ด์ง„๋‹ค. W[i][j]๋Š” ๋„์‹œ i์—์„œ j

www.acmicpc.net

 

Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.