TSP가 반복 된 도시의 가능성을 부인하는 것이 이상하게 보입니다. 이 여행하는 세일즈맨의 목표는 가능한 한 빨리 가서 모든 도시를 방문하는 것입니다. 이미 가본 도시를 더 빨리 여행한다면 어떨까요?
TSP가 반복 된 도시의 가능성을 부인하는 것이 이상하게 보입니다. 이 여행하는 세일즈맨의 목표는 가능한 한 빨리 가서 모든 도시를 방문하는 것입니다. 이미 가본 도시를 더 빨리 여행한다면 어떨까요?
답변:
실제 문제를 모델링하는 방법 일 뿐이므로 정확하게 정의하는 것은 중요하지 않습니다. TSP에는 도시 세트와 각 도시 사이를 이동하는 비용이 있습니다. 실제 상황에서 B와 C 사이의 최상의 경로가 A를 통과 할 가능성을 배제하지는 않습니다. 그렇다면, 예, TSP에서 ABCA로 모델링 된 경로는 B에서 C로가는 길에 A를 추가로 운전하는 것이 매우 중요하지만 TSP 모델에서는 이러한 세부 사항이 추상화되어 있습니다.
제약 조건이 이상하게 보이며 많은 실제 상황에서는 관련이 없다는 데 동의합니다. David의 대답에서 지적했듯이 모델링을 직접 변경할 수 있다면 실제로 중요하지 않습니다. 그러나 수정할 수없는 인스턴스가 주어지면이 제약 조건을 가진 일반 TSP는 상수 요소 내에서 근사치가 아니며 단일 방문 제약 조건을 완화하면 요소 2 내에서 근사치가 될 수 있기 때문에 (메트릭이 아니더라도) ). 표준 인수에 의해 내가 뭔가를 그리워하지 않는 한, 먼저 최소 스패닝 트리를 만들 수 있습니다 (비용)), 오일러 여행 기술로이 나무를 방문하십시오. 분명히, 총 여행 비용은 (모든 모서리에서 두 번). 모순에 비해 비용이 저렴한 투어가 있다면,이 투어는보다 적은 비용의 MST를 유추하는 데 사용될 수 있습니다. 모순입니다.
반복되는 투어가 있으면 도시를 반복하지 않는 짧은 투어를 만들 수 있습니다. 예를 들어, 양식 둘러보기를 고려하십시오.
가장 짧은 방법 일 수 있습니다. 에 통과하다 하지만 이미 가장자리에 캡슐화되어 있습니다. . 당신은 언급을 생각할 수 있습니다 "통과"가 아닌 오히려 "중지" . 당신은에 중지해야합니다 한 번은 통과 할 수 있지만 여러번.
TSP에 대한 실제 알고리즘은 Christofides의 알고리즘과 같은 "바로 가기"단계를 가질 수 있습니다. 예 를 들어이 설명 또는 더 짧은 계정을 참조하십시오 .
반복이 허용되면 모든 연결 X-> A-> Y를 검사하고 X-> Y보다 짧은 경우 X-> Y의 길이를 X-> A->의 길이로 바꿉니다. Y, 표준 알고리즘으로 결과 문제를 해결하십시오. 더 짧은 연결 X-> Y를 찾으면 이제 X-> Y-> Z가 X-> Y보다 짧을 수 있기 때문에 변경 사항이 없을 때까지 교체 프로세스를 반복해야한다고 생각합니다.
어떤 연결을 변경했는지 추적하고 솔루션의 연결을 통과 한 다음 솔루션에 X-> Y가 포함 된 경우이를 X-> A-> Y로 바꾸십시오.
추신. 내 생각이 훌륭하다고 생각하지만, 그것이 올바른지 지금은 잘 모르겠습니다. X-> Y 대신 X-> A-> Y는 바로 가기가 아니기 때문에 도시 A에도 적용됩니다.