문제

배열이 있습니다 (arr요소의) 및 함수 (f) 2 개의 요소가 필요하고 숫자를 반환합니다.

배열의 순열이 필요합니다. f(arr[i], arr[i+1]) 각각에 대해 가능한 한 적습니다 i 안에 arr. (그리고 그것은 루프해야합니다. 즉, 또한 최소화해야합니다. f(arr[arr.length - 1], arr[0]))

또한, f 거리처럼 작동합니다 f(a,b) == f(b,a)

너무 비효율적이라면 최적의 솔루션이 필요하지 않지만 합리적으로 잘 작동하고 실시간으로 거의 계산해야하므로 빠릅니다 (길이가 무엇인지 모르겠습니다. arr 그렇습니다.하지만 나는 그것이 약 30 일이 될 수 있다고 생각합니다)

도움이 되었습니까?

해결책

"arr의 각 i에 대해 f (arr [i], arr [i+1])가 가능한 한 적은 의미는 무엇입니까? 당신은 최소화하고 싶습니까? 합집합? 그 중 가장 큰 것을 최소화하고 싶습니까? F (ARR [0], ARR [1])를 먼저 최소화하고,이를 최소화하는 모든 솔루션 중에서 F (ARR [1], ARR [2]) 등을 최소화하는 솔루션을 선택하십시오. 에?

최소화하려면 합집합, 이것은 바로 그거죠 여행 세일즈맨은 전체 일반성에서 문제가됩니다 (음, "메트릭 TSP", 아마도 F가 실제로 메트릭을 형성하는 경우). 순진한 솔루션에 대한 영리한 최적화가있어 정확한 최적을 제공하고 약 n = 30 동안 합리적인 시간에 실행됩니다. 근사치를 제공하는 휴리스틱 중 하나 또는 휴리스틱 중 하나를 사용할 수 있습니다.

최소화하려면 최고, 여전히 NP-HARD에도 불구하고 간단한 문제입니다. 답변에서 이진 검색을 수행 할 수 있습니다. 특정 값 D의 경우 f (x, y)가있는 쌍의 가장자리를 그립니다.

최소화하려면 렉시오 그래프, 그것은 사소한 일입니다 : 가장 짧은 거리로 쌍을 골라 ARR [0], ARR [1]로 넣은 다음 ARR [1]에 가장 가까운 ARR [2] 등을 선택하십시오.

F (,)가 어디에서 왔는지에 따라 TSP보다 훨씬 쉬운 문제 일 수 있습니다. 당신이 그것을 언급하는 것이 유용 할 것입니다.

다른 팁

당신은 당신이 무엇을 최적화하는지 완전히 명확하지 않습니다 - f (a [i], a [i+1]) 값, 최대 또는 다른 것의 합계입니까?

어쨌든 속도 제한으로 Greedy는 아마도 최선의 방법 일 것입니다. [0]을 만들기위한 요소를 선택하십시오 (랩 어라운드로 인해 중요하지 않음). 그런 다음 각 연속 요소 a [i+1]을 선택하십시오. f (a [i], a [i+1])를 최소화하는 사람이어야합니다.

그것은 O (n^2)가 될 것이지만, 내부 루프 나 괜찮은 것이 아니라면 30 개의 항목이 있습니다. 당신의 f ()가 실제로 연관적이고 통근 적이라면 O (n log n)에서 그것을 할 수 있습니다. 정렬을 줄임으로써 분명히 더 빠릅니다.

이 형태로 문제가 잘 정의되어 있다고 생각하지 않습니다.

대신 n fcns g_i : perms-> real을 정의하자

g_i(p) = f(a^p[i], a^p[i+1]), and wrap around when i+1 > n

최소화하고 싶다고 말합니다 에프 모든 순열을 통해 실제로 값을 선택할 수 있음을 의미합니다. 그리고 최소화하십시오 미군 병사 모든 순열을 통해 최소화됩니다 미군 병사, 관련이지만 다른 투과가 최소화됩니다 g_j (순열을 활용하십시오). 따라서 각각의 순열보다 F를 최소화하는 것은 의미가 없습니다. .

F (x, y)의 구조에 대해 더 많이 알지 않는 한 이것은 NP-Hard 문제입니다. 그래프 G와 모든 정점 x가 주어지면, y 가장자리가 없으면 f (x, y)가 1이되고 가장자리가있는 경우 0이됩니다. 문제가 요구하는 것은 최대 f (ARR [i], ARR [i+1]) 값을 최소화하도록 정점의 순서입니다. 이 기능의 경우 0 또는 1 일 수 있으므로 0을 반환하는 것은 G에서 해밀턴 경로를 찾는 것과 같습니다. 1은 그러한 경로가 존재하지 않는다고 말합니다.

이 기능은이 예제가 트랙 가능한 것으로 무력화하는 일종의 구조를 가져야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top