그래서 문제는 다음과 같습니다. 개체의 N 범주 집합이 있으며 각 범주에는 지정된 값과 가중치를 가진 M 개체가 있습니다. 각 카테고리에서 하나의 객체를 선택하여 가중치가 < = 주어진 용량 W이고 값이 최대가되도록해야합니다. 작업은 branch 및 bounds 메서드를 사용하여 해결해야합니다. 나는이 방법이이 상황에서 어떻게 작동해야하는지 이해하기 위해 애 쓰고있다. 설명해 주시겠습니까?분기 및 바운드 방식을 사용하는 수정 된 배낭
0
A
답변
0
알고리즘이 수행해야하는 간단한 예제.
4 개의 아이템이 있다고 가정하십시오. [(weight, value)]= [(3, 5),(8, 10),(1, 2),(4, 5)]
. 무게 = [(1, 2),(12, 20),(4, 5),(9, 10)]
최대 중량 당이 값에 첫 번째 종류의 그 첫 번째 항목에서 시작하여 16
은 나무 당신 광고 중 하나를 만들거나 항목을 삭제할 수 있습니다. 트리의 각 레벨에서 가중치, 값 및 값을 계산합니다.이 값은 여전히 3에 남아 있습니다. 분기의 왼쪽 + 값이 발견 된 최대 값보다 작 으면 해당 분기를 닫습니다. 또한 체중이 소리내어 이상인 경우 지점을 닫습니다.
아래의 그림은 어떻게 작동해야 하는지를 나타낸 것입니다.
(value) (0)
(weight) (0)
(value left) (37)
add drop
(1,2) <------- ------>
(2) (0)
(1) (0)
(35) (35)
(20,12) ---------------------------------------------------------------
(22) (2) (20) (0)
(13) (1) (12) (0)
(15) *(15) (15) *(15)
(4,5) -----------------------------------------------------------------------
(27) (22) (25) (20)
(17) (13) (16) (12)
**(10) (10) (10) (10)
(9,10) ---------------------------------------------------------------------------
(31) (20) (35) (25) (30) (20)
(22) (13) (25) (16) (21) (12)
**(0) (0) **(0) (0) **(0) (0)
win
*
분기 인해 값 + 값은 트리에서 < 다음 최대 값을 남긴
**
분기 인해 중량이 크게 중량 이상이라고 폐쇄되는 폐쇄된다.
이 방법의 장점은 무차별 방식에 비해 계산을 줄이는 것입니다. 가중치가 가장 높은 항목을 시작하면 분기를 신속하게 종료하고 계산 시간을 줄일 수 있습니다.
잘하면
관련 문제
- 1. 분기 및 바운드 배낭 구현시 메모리 초크
- 2. C++ 구현 배낭 분기 및 바인딩
- 3. 분기 및 바운드 알고리즘 구현
- 4. 수정 된 동적 배낭 - 문제가있는 입력?
- 5. 무한 요소로 수정 된 배낭 탐침
- 6. DryadOpt (병렬 분기 및 바운드 라이브러리) - 가용성
- 7. 대기열을 사용하여 TSP (분기 및 바운드) 해결
- 8. 분기 및 바운드 배낭에 포함 된 계산 항목
- 9. 중요성 극대화를위한 분기 및 바운드 알고리즘
- 10. 분기 및 바운드 문제에 대한 C 코드
- 11. 0-1 배낭 제한이있는 배낭
- 12. 동적 프로그래밍을 사용하는 배낭
- 13. 잘못된 부모 분기로 게시 된 분기 수정
- 14. 병합 된 후 원격 분기 수정
- 15. 동적 프로그래밍 (2D 테이블)에서 분기 및 바운드 알고리즘으로 전환 할 때?
- 16. Set Cover 문제에 대한 분기 및 바운드 알고리즘?
- 17. 배타적 아이템이 포함 된 배낭
- 18. 배낭 상한
- 19. Perforce에서 분기 생성 오류 수정
- 20. 배낭
- 21. 0/1 배낭 무게가있는 배낭?
- 22. 소수 배낭
- 23. Git : 수정 된 작업 트리 및 인덱스를 사용하는 git checkout
- 24. 대기 및 신호 방식을 사용하는 동기화
- 25. Git Repo 분기 오류 수정
- 26. 배낭 알고리즘 및 볼록 선체
- 27. QPointer를 사용하는 수정 된 방법입니까?
- 28. 분기 대 태그 대 SVN 용어의 수정
- 29. 커맨드 라인을 통한 Gerrit 분기 액세스 수정
- 30. SVN 분기 및
너무 광범위합니다. 문제가 계속되면 먼저 코드를 찔러야하고 코드를 게시해야합니다. –
그게 문제 야.이 상황에서이 방법이 어떻게 작동하는지 이해할 수 있는지 모르겠다. – Miyavistka
그래서 질문은 파이썬과 관련이 없다. ... – hoefling