2013-06-06 3 views
2

A *의 로직을 변경하여 최단 경로를 찾는 대신 가장 유용한 경로 (즉, 가장 높은 게인을 가진 경로)를 찾으려고한다고 가정합니다 경로 (즉, 비용이 가장 낮은 경로).A *를 사용하여 가장 높은 게인을 가진 경로를 찾는 방법

필자의 경우 목표는 고유 한 끝 노드로 고정되지 않습니다. 노드는 시작점으로부터 거리가 B 인 노드로 정의됩니다.

바닐라 버전 ("최단 경로 찾기")에서 비용을 과대 평가하지 말아야합니다 (즉, 실제 비용보다 작거나 같은 경험적 발견 방법을 찾아야합니다). 대신 내 수정 된 버전에서

("가장 유용한 경로를 찾는"), 가장자리가 의 최대 겪고의 제약 주어진 유틸리티가 아닌 비용으로 태그, 그리고 최종 이득을 극대화하려는 B 가장자리. A * 작업을하기 위해 유틸리티를 과대 평가해야합니까 (즉, 실제 유틸리티보다 크거나 같은 경험적 발견 방법)?

편집 :

  • g(n) : 더 공식화,

    f(n) = g(n) + h(n) 
    

    에 의해 구성된 노드의 유틸리티하자 n

  • 에 시작 노드에서 갈 때 내가 얻을 무엇을
  • h(n) : 경험적으로, n에서 목표로 갈 때 얻을 수있는 것의 예상치 그 거리의 시작 지점으로부터 노드는이야 B) h(n) 과대 평가되어야하며 f(n)가 가장 좋은 경로를 식별하기 위해 극대화 할

?

B은 예산이므로 완전히 완료 할 수 있습니다. 즉, B 단계보다 짧은 경로를 찾을 필요는 없습니다.

+0

모든 유틸리티를 무효화하고 기존 논리를 사용할 수 있습니까? –

+0

나는 내가 추측 할 수있다. 그러나 내가 다른 길에서하는 것이 더 가치가 있어야한다. 이 경우에 테스트 된 것이 있는지 궁금합니다. – Eleanore

+0

개략적으로 프론티어에서 노드를 최소 (최소가 아닌) 순서에서 큐에서 제거해야합니다. 즉, 확장 할 다음 노드를 선택할 때 가장 높은 값 (유틸리티)으로 선택하십시오. 라이브러리를 사용하고 계시거나 직접 솔루션을 작성하셨습니까? –

답변

1

귀하의 문제는 강하게 NP-하드longest path problem입니다. 이뿐만 아니라이 있다는 것을 의미 (거의 확실) 더 빠른 정확한 알고리즘뿐만 아니라 (거의 확실) 없다 더 좋은 대략 알고리즘입니다.

당신은 불행하게도 @Charles 알 수 있듯이 등 에지 가중치의 부호를 부정하기


, 유전 프로그래밍, 그것 - 무력, 또는 어닐링과 같은 다양한 global optimization 기술에 의존해야 할 것 중 하나, A *는 부 가중치를 처리 할 수 ​​없으므로 작동하지 않습니다. 그리고 other algorithms 어느 네거티브 에지 가중치를 처리 여전히 부정적인 사이클을 처리 할 수 ​​없습니다.

+0

@Elanore : "가장 긴 경로"는 가장 많은 노드를 가진 경로를 의미하지는 않습니다. 가장 큰 총중량을 가진 경로를 의미합니다. 그래서 편집에서 정의한 문제는 실제로 가장 긴 경로 문제입니다. 이것은 당신이 어떤 경험적 방법을 사용 하던지간에 문제를 효율적으로 해결할 수있는 다른 알고리즘이나 * (거의 확실하게) * 변이가 없다는 것을 당신에게 확신시키기에 충분해야합니다. –

+0

네, 맞습니다. 그렇다면 일반적으로 A *가 최대화 문제를 풀 수 없다는 것을 의미합니까? 아니면 내 문제에만 적용됩니까? – Eleanore

+0

@Eleanore : A \ *는 최단 경로 문제 만 해결합니다. 어떤 극대화 문제 * (매우 광범위한 용어 임) *를 사용하면 그래프상의 최단 경로 문제로 문구를 표현할 수 있습니다. 그런 다음 A \ * * (또는 적어도 Djikstra의) *가 작동합니다. 그렇지 않으면 그렇지 않습니다. \ *는 최장 경로 문제를 푸는 데 사용할 수 없습니다. –

관련 문제