최적의 배낭 솔루션에서 품목 결정
총 가치를 극대화하기 위해 품목을 최적으로 포장하는 배낭 알고리즘을 고려할 때 이 문서에서는 추가 사항을 다룹니다. 최적의 솔루션에 포함된 특정 항목을 식별하는 과제입니다.
시작하려면 Knapsack 알고리즘 구현을 자세히 살펴보세요.
int Knapsack::knapsack(std::vector<Item>& items, int W) {...}
최적 솔루션과 관련된 항목을 검색하기 위해 계산된 행렬에 저장된 정보를 활용할 수 있습니다.
std::vector<vector<int>> dp(W + 1, std::vector<int>(n + 1, 0));
의사 코드:
line = W i = n while (i > 0): if dp[line][i] - dp[line - weight(i)][i-1] == value(i): // Item 'i' is in the knapsack i-- line -= weight(i) else: i--
이 반복 프로세스는 행렬을 통해 반복됩니다. 무게 차이가 품목의 크기와 일치하면 해당 품목은 최적 솔루션의 일부로 간주됩니다. 항목은 고려 대상에서 제외되고 프로세스는 계속됩니다.
이 기술을 사용하면 추가 데이터 저장 없이 어떤 항목이 배낭 내에서 가장 가치 있는 조합을 구성하는지 결정할 수 있습니다. 이러한 접근 방식은 효율적일 뿐만 아니라 최적의 솔루션 구성에 대한 귀중한 통찰력을 제공합니다.
위 내용은 최적의 배낭 솔루션에 포함된 항목을 어떻게 식별할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!