당신은 세트 커버 문제를 줄일 수 있습니다. 즉, 문제는 NP가 어렵다는 것을 의미하며 일반적으로 효율적인 솔루션을 찾으려고해서는 안됩니다.
즉, 파트너십의 수가 적기를 희망하고, 아마도 비 단통 도로/도시 파트너십의 모든 가능한 하위 집합을 고려하고 각 경로에 대한 최단 경로를 찾는 것으로 벗어날 수 있습니다 (경로 고려중인 특정 하위 집합의 도로/도시 만 통과하게됩니다.) 그런 다음 알고리즘은 2^P * (N + M) 시간에 실행됩니다. 여기서 P는 파트너쉽의 수이고 N과 M은 각각 도시와 도로의 수입니다.
세트 커버 문제는 당신이 n은 유한 집합 S = {S [1], ...,들 [부여하고 있다는 것입니다 : 완성도를 들어
, 여기 그래프 문제에 세트 덮개에서 감소의 ]} 및 S : S [1], S [1], S [2], ..., S [N]의 서브 세트로 구성된다.
최소한의 커버를 찾기 위해 도시 문제를 사용하려면 다음과 같은 그래프를 작성하십시오. 그래프의 꼭짓점을 START, END 및 쌍 (S [i], t)으로하고 t는 S [i]에 놓습니다. 간의 그래프에서 에지를 추가
- START과 (S [I], S [1])은 각각 초 동안 [I]과 S [1]과 S [I]
- (S [I] , s [n]) 및 S [i]의 s [n]을 가진 각 S [i]에 대한 END. 1 ... n-1의 각 k 및 각각의 S [i] 및 S [k]에 대한 (S [i], s [k]) 및 (S [i], s [k] i ']가 포함되어 있습니다.
에지 가중치를 모두 1로하고 입력 비용 (S [i], s)도 1로합시다. 모든 도시/정점 (S [i], s) , t)는 동일한 비용을 공유한다. 두 개의 도로/가장자리가 비용을 공유하지 않습니다.
이제 START에서 END까지의 최저 비용 경로는 S를 포함하는 S [i]의 최소 집합을 찾는 것과 같습니다. 경로의 비용은 1 + n + p가됩니다. 여기서 p는 최소 덮개.
이 문제를 해결 했습니까? 나는 할 일이 동일합니다. – lida