Traveling Salesman Problem (외판원 문제)
v1 개정 2025.02.03

외판원 문제(Traveling Salesman Problem; TSP)는 컴퓨터 과학 및 수학 분야에서 잘 알려진 조합 최적화 문제입니다. 이 문제의 핵심은 주어진 각 도시(노드)를 정확히 한 번만 방문하고 시작 도시로 돌아가는 가능한 최단 경로를 찾는 것입니다. 이때, A도시에서 B도시로 가는 거리(d)는 가중치가 존재합니다. 문제의 경우에 따라서 시작점으로 돌아가지 않을 수도 있는데, 이 제약 조건이 없다고 해도 계산 복잡도는 변하지 않습니다.
어쨌든 TSP는 대표적인 NP-난해(NP-hard) 문제로 모든 문제에 대해서 다항식 시간에 해결할 수 있는 알려진 알고리즘은 없습니다. 대신 작은 N의 경우(일반적으로 N ≤ 16)에는 분기한정법(Branch and Bound; B&B; 가지치기)이나 DP로 풀 수 있습니다. 또, N이 큰 경우에는 1.5의 근사비를 가지는 크리스토피데스 알고리즘과 같은 근사 알고리즘으로 풀 수 있습니다.
외판원 문제는 택배 기사님들의 효율적인 방문 순서나 회로 기판를 만드는 기계의 효율적인 이동과 같이 현실에서 적용될 수 있습니다. 이러한 경우 N의 크기가 커질 수 있기 때문에 근사 알고리즘을 사용합니 다. 정확한 답은 아니더라도 결과를 빠르게 낼 수 있다면 택배 기사님들이 한 두번 비효율적인 경로로 가시더라도 화내시지는 않겠죠?
외판원 순회의 일반적인 문제를 가지고 한번 개선해 가면서 문제를 풀어보겠습니다. 풀 문제는 다음과 같습니다. 외판원 순회(백준 2098)


