2012-02-28 2 views
1

(작은) 그리드 그래프에 대해 TSP를 푸는 데 관심이 있습니다. 어떤 종류의 라이브러리 나 나를 위해 할 것이지만, 이것은 예상보다 어려워 보인다. 나는 거기에있는 콩코드 (concorde)를 포함한 몇 가지 솔버를 시도했지만 삼각형 부등식이 유지되지 않을 때 문제가있는 것으로 보입니다.삼각형 부등식이없는 TSP 해석기

예컨대

, I 투어를 출력하는 해석을하고자 (0, 1, 2, 1, 4, 3) 이하 (단위 에지 가중치)를 그래프이 특히

0-1-2 
| | 
3-4 

나는 콩코드에게 엣지 (2, 4)의 무게가 1000이고 콩코드가 비용 1004의 투어 (0, 1, 2, 4, 3)를 즉각 생산했다고 말했다. 이것은 분명히 내가 원하는 것이 아니다.

이상적으로는 Java에서 간단한 구현 (무차별 대입)이 가능하지만 실제로 작동하는 것은 무엇이든해야합니다. 누구든지 어떤 코드를 가르쳐 주시겠습니까? 아니면 정말로 직접 구현해야합니까?

편집 : 또한 정확한 해결책을 얻는 것이 중요하며 근사치는 아닙니다.

편집 2 : 실제로 이것은 TSP로 보이지 않습니다. 내가 찾고자하는 것은 모든 정점을 방문하는 가장 짧은 클로즈드 워크입니다.

+0

Concorde를 올바르게 적용 하시겠습니까? 그것은 대칭 TSP 문제에 대한 정확한 해답이되어야합니다 ... –

+0

@ Li-aungYip : Concorde는 실제로 최적의 TSP 솔루션을 제공합니다. 문제는 OP가 유효한 TSP 투어가 아닌 솔루션을 기대하고 있다는 것입니다. 자세한 내용은 내 대답을 참조하십시오. – NPE

+0

알겠습니다. 사실, 그래프를 보면 모든 노드를 방문하는 다른 닫힌 사이클이 있다고 생각하지 않습니다. (핵심 단어 : 닫음 2-1-0-3-4는 체중이 4이고 모든 노드를 방문하지만 닫히지 않았습니다.) –

답변

5

귀하의 어려움은 삼각형 불평등이 아닙니다. 어려움은 당신이 기대하는 해결책이 유효한 TSP 투어가 아니라는 사실과 관련이 있습니다.

TSP는 Hamiltonian cycle을 찾습니다. 즉, 각 꼭지점을 정확히 한 번 방문하는 사이클입니다. 귀하의 솔루션, (0, 1, 2, 1, 4, 3), 정점 1을 두 번 방문하십시오.

그게 해결책이라면 해결하려는 문제는 여행 세일즈맨 문제가 아닙니다.

+0

지적 해 주셔서 감사합니다! 그래서 저는 먼저 그래프의 모든 정점들 사이의 거리 행렬을 계산하고 TSP를 풀어야한다고 생각합니다. 그렇게하면 내 그리드에서 최적의 투어 길이가 나옵니다. 옳은? – Dino

+0

@Duh : 솔직하게 말해서 문제가 TSP로 변환되는 데 어떻게 도움이되는지 알지 못합니다. 어쨌든, 유용한 첫 단계는 당신이 찾고있는 것이 정확히 무엇인지 알아내는 것입니다 (각 꼭지점을 방문하는 가장 짧은 사이클은 적어도 한번입니까?) – NPE

+0

네, 그게 정확히 제가 찾고있는 것입니다. 그리고이 경우 문제를 정확한 거리로 정확한 그래프로 이동하면 문제가 해결됩니다. - 최적 솔루션의 길이가 동일하다는 것을 보여주기가 쉽습니다. - 내 감각으로 최적의 전체 그래프에서 TSP 둘러보기 – Dino