2013-10-04 1 views
3

프로젝트에서 작업하면서 그래프 알고리즘 문제가 발생했습니다. 을 풀지 못했습니다. 다음 문제는 :이송 에지에 제약 조건이있는 최단 경로

당신은 감독, 가중 그래프를 가지고 있고 시작 노드와 (매우 Find the shortest path in a graph which visits certain nodes 같은) 노드를 지정 방문하는 동안 끝 노드 사이의 최단 경로를 찾고 싶어요. 그러나 노드와 가장자리와 함께이 그래프에는 노드에있는 "항목"이라는 개념 ( )이 있으며 해당 노드를 입력 할 때 "픽업"합니다. 이제 해당 가장자리에 대해 이라는 필요한 항목을 얻은 경우에만 가장자리가 이 될 수있는 추가 제한 조건이 있습니다. 문을위한 열쇠라고 생각하십시오. 너는 이 문을 통과하기 전에 열쇠를 얻어야한다.

나는 급격하게 폭발하는 무차별 방식 만 생각할 수 있습니다. 누구든지 더 나은 점을 생각하거나이 문제가 해결되는 곳으로 안내 할 수 있습니까? 아니면 이것이 "어렵다"(Computational Speaking)라고 나에게 확신시켜 주겠습니까? 어떤 도움을 주셔서 감사합니다!

+0

얼마나 많은 항목이 있습니까? – templatetypedef

+0

게임의 종류는 게임에 따라 다르지만 (비디오 게임을 탐색하는 데 사용되는 것으로 짐작할 수 있겠지만) 30-40 정도라고합니다. – maxnelso

+0

항목에 좋은 일종의 주문이 있습니까? 즉, 항목은 대략 선형 진행을 따릅니 까? – templatetypedef

답변

2

이 문제는 최적으로 해결할 수있는 NP-HARD입니다. 해밀턴 경로 문제로부터 간단한 감소가 있습니다 :

원본 그래프의 각 정점에 고유 항목을 넣으십시오. 목적지 버텍스에만 연결된 싱크 버텍스를 생성합니다. 이 두 꼭지점 사이의 모서리에 모든 항목이 필요합니다.

+0

어떻게 작동합니까? 코드 예제를 게시 할 수 있습니까? – Bytemain

+0

tskuzzy는 처음부터 끝까지 모든 정점을 방문해야하는 그래프를 구성합니다. 모든 모서리의 무게가 같다고 가정합니다. 그래프에 해밀 토니안주기가 있으면 그주기가 최적의 솔루션입니다. 최적 해가 해밀 토니안주기가 아니라면, 그래프에는 해밀턴주기가 없습니다. 따라서 알고리즘을 알려 주면 모든 그래프의 HC를 푸는데 사용할 수 있습니다. – DanielV

+0

흠, 결과는 조금 실망 스럽지만 감사합니다! – maxnelso

1

수정 알고리즘을 사용해 볼 수 있습니다. 차량 라우팅 문제를 해결하는 방법은 경험적입니다. 어쩌면 당신은 그것을 되돌릴 수 있고 원하는 키를위한 픽업 기능을 만들 수 있습니다. 배달 및 최단 경로 문제에 사용됩니다.