2014-07-23 2 views
2

루트 그래프가 제공됩니다. 여기서 노드는 가치있는 항목을 포함하는 "집"입니다. 엔트리 노드, 즉 그래프의 루트가 주어진다.주어진 경로 비용에서 최대 이익 계산

한 노드에서 다른 노드로 이동하기위한 비용, 즉 Egde 가중치도 부여됩니다.

질문 -

당신은 최대 가치있는 아이템을 수집해야하고, 총 비용은 주어진 비용을 초과하지 않아야합니다.

제한 - 1. 사이클이 없습니다. 2. 또한 adjancency 행렬을 사용할 수 있습니다 (정점의 총 개수는 1000 개까지입니다).

그들의 무게와 목적지 노드에서 본 값으로 주어진 가장자리.

0 1 10 1 
0 2 10 15 
1 3 50 10 
1 4 30 30 

을 감안할 때 비용 = 70

솔루션 - 당신은 노드 1, 2, 최대 방법 4의 항목을 수집합니다. [1 + 15 + 30 = 46]

내 노력

I 생각 모든 노드에서 어떤 상태를 유지하여, DP에 의해 해결할 문제점이. 하지만 일부 알고리즘을 만들 수 없습니다. 도와주세요. 1

  1. 편집이 질문은 각 노드에 몇 가지 상태를 ading에 의해 원래의 그래프를 사용하여 특수 그래프를함으로써 해결 될 수있다 생각합니다.

  2. 두 번째 방법은 동적 프로그래밍입니다.
+0

이것은 숙제 솔루션 사이트가 아닙니다. 무언가를 시도했지만 작동하지 않는 이유를 알 수없는 경우 코드를 게시하면 부족한 부분을 강조 표시 할 수 있습니다. – PaulProgrammer

+0

@PaulProgrammer 이것은 내 숙제가 아닙니다. 코드를 작성하기 전에 구체적인 알고리즘을 작성하려고했습니다. 그러나 나는 그것에 실패했다. 편집 1을 확인하십시오. – himanshu098

+0

** 힌트 : ** 여행 판매원 문제에 대해 들어 보셨습니까? [http://en.wikipedia.org/wiki/Travelling_salesman_problem]? 이것은 단지 변형 일뿐입니다. – noMAD

답변

1

나는이 문제에 대한 쉬운 해결책을 찾지 못할 것이라고 생각합니다.

루트 노드가 N 잎에 연결된 그래프를 생각 해보자. 각 잎의 값은 1이고 가장자리의 비용은 c1, c2, ... cN입니다.

이 그래프에서 볼 수 있듯이 문제는 배낭 문제가 특별한 경우입니다.

+0

나는 당신의 요점을 이해했으나 여기에는 내부 노드도있다. 어떻게 그걸 처리 할 수 ​​있니? – himanshu098

+0

내부 노드는 문제를 더 복잡하게 만들지 만 어렵지 않게 만듭니다. 결정 버전 (최소한 X 개의 귀중품을 얻을 수 있습니까?)은 내부 노드가 있는지 여부에 관계없이 NP 완료입니다. –