여러분은리스트 나 벡터 또는 무엇이든, 3 개의 튜플 또는 그 밖의 무엇이든, 처음 두 가지는 문자열이고, 세 번째는 숫자입니다. 끈은 도시이며 숫자는 그 사이의 거리입니다. 튜플의 도시 순서는 각 방향과 동일한 거리이므로 임의적입니다 (즉, 어느 것이 먼저 오는지, 어떤 것이 먼저 오는지는 중요하지 않습니다). 또한 연결된 인용의 각 쌍마다 정확히 하나의 튜플이 있습니다. 모든 도시가 연결된 것은 아닙니다. 또한 거리는 항상 양수입니다.0
). 이러한 조건을 확인할 필요는 없으며 입력이 제대로 구성되어 있다고 가정 할 수 있습니다. 당신의 임무는 도시를 주기적으로 반환하는 것입니다. 따라서 어떤 도시에서 시작하여 같은 도시로 다시 돌아 가면 도시 사이의 총 거리가 최소가됩니다 (정확하고 전체적으로) 경우) 솔루션이 있다고 가정 할 수 있습니다. 예를 들어, 당신이 주어진다고 말합시다
[("New York", "Detroit", 2.2), ("New York", "Dillsburg", 3.7), ("Hong Kong", "Dillsburg", 4), ("Hong Kong", "Detroit", 4), ("Dillsburg", "Detroit", 9000.1), ("New York", "Hong Kong", 9000.01)]
다음 중 하나를 출력 할 수 있습니다 (단 하나만 출력하면 됨).
["Detroit","Hong Kong","Dillsburg","New York"]
["Hong Kong","Dillsburg","New York","Detroit"]
["Dillsburg","New York","Detroit","Hong Kong"]
["New York","Detroit","Hong Kong","Dillsburg"]
["Dillsburg","Hong Kong","Detroit","New York"]
["New York","Dillsburg","Hong Kong","Detroit"]
["Detroit","New York","Dillsburg","Hong Kong"]
["Hong Kong","Detroit","New York","Dillsburg"]
가장 짧은 여행이기 때문에 : 13.9
하지만
["Dillburg","Detroit","New York","Hong Kong"]
가장 짧지 않기 때문입니다.
en.wikipedia.org/wiki/Travelling_salesman_problem을 참조하십시오
채점
이것이 흥미로운 곳입니다. 당신은 당신이 가진 문자의 수를 취한 다음 맨 최악의 경우 O 표기법에 연결합니다. 예를 들어 42자인 무차별 대입 프로그램을 작성한다고 가정하겠습니다. 우리 모두가 알다시피, 최악의 경우는 n!
어디 n
도시의 수입니다. 42! = 1405006117752879898543142606244511569936384000000000, 이것이 당신의 점수입니다. 낮은 점수 승리 .
참고 : 나중에이 문제를 완화했지만 해결 방법을 모르고 아무도 눈치 채지 않기를 바랐습니다. 사람들은 그렇게 했으므로 issacg의 제안을 따르겠습니다.
유일한 옵션은 O (n!) 및 O (b ^ n n ^ a ln (n) ^ k)이며, 모든 경계는 표기법에 따라 가능한 한 단단해야합니다.
O(n!)
and 라고 말하고 O(b^n*n^a*ln(n)^k)
모든 경계는 표기법에 따라 가능한 한 엄격해야합니다. 그러나 OP는 분명히해야합니다.
O(n^2*2^n)
보다 훨씬 적습니다 O(n!)
.
O(n!)
수 있지만O(sqrt(n)*n^n/e^n)
나O(n!/100000000000000000000)
?