Problema rucsacului (sau rucsacului) este una dintre problemele de optimizare combinatorie . Și-a luat numele de la problema maximizării de a împacheta cât mai multe lucruri într-un rucsac, cu condiția ca volumul total (sau greutatea) tuturor articolelor care pot încăpea într-un rucsac să fie limitat. Prin urmare, sarcina are mai multe varietăți.
Comun tuturor tipurilor este prezența unui set de articole, cu doi parametri - greutate și valoare . Există un rucsac de o anumită capacitate . Sarcina este de a asambla un rucsac cu valoarea maximă a articolelor din interior, respectând în același timp limita de greutate a rucsacului. De obicei, toți parametrii sunt numere întregi, nu numere negative.
Acesta este cel mai comun tip de rucsac. Lăsați să ia două valori: dacă încărcătura este ambalată și , în caz contrar, unde . O sarcină:
maximiza
dacă există o limită a capacității rucsacului [1] [2] .
Fiecare articol poate fi selectat de un număr limitat de ori. O sarcină:
maximiza
astfel încât să fie îndeplinită condiția de capacitate
și pentru toți [3] .
Numărul se numește graniță [3] .
Fiecare articol poate fi selectat de un număr nelimitat de ori. O sarcină:
maximiza
astfel încât să fie îndeplinită condiția de capacitate
și un număr întreg pentru toate [4] .
Toate articolele sunt împărțite în clase . Este obligatoriu să selectați un singur subiect din fiecare clasă. ia doar 0 și 1. Sarcină:
maximiza
astfel încât condiția de capacitate să fie îndeplinită,
pentru toți
Să presupunem că avem articole și rucsacuri ( ). Fiecare articol, ca și până acum, are o greutate și o valoare , fiecare rucsac, respectiv, are propria capacitate la . . O sarcină:
maximiza
astfel încât condiția să fie îndeplinită pentru toți ,
pentru toți [5] .
Dacă există mai mult de o constrângere asupra rucsacului, cum ar fi volumul și greutatea, problema se numește o problemă de rucsac m-dimensională. De exemplu, pentru opțiunea nerestricționată:
maximiza
astfel încât ,
și pentru toți [4] .
Problema rucsacului pătratic este o modificare a problemelor clasice de rucsac cu o valoare care este o formă pătratică a . Să fie un vector care specifică câte copii ale fiecărui articol vor fi în rucsac. O sarcină:
maximiza
în condițiile , , sau
minimiza
in conditii , .
În același timp , o matrice definită nenegativă de mărime stabilește restricții asupra numărului de articole [6] .
Problema rucsacului | |
---|---|
Aplicații | |
Criptosisteme bazate pe problema rucsacului |
|
În plus |