Problém kontejnerizace je NP - těžký kombinatorický problém. Úkolem je zabalit předměty předdefinovaného tvaru do konečného počtu kontejnerů předem definovaného tvaru tak, aby počet použitých kontejnerů byl nejmenší nebo počet nebo objem předmětů (toho balíčku) byl největší.
Existuje mnoho variant tohoto problému ( dvourozměrné balení , lineární balení , balení podle hmotnosti , balení podle hodnoty atd.), které lze použít v různých oblastech, jako je optimální plnění kontejnerů, nakládání kamionů s omezením hmotnosti, vytváření redundantní kopie na vyměnitelná média atd. Protože problém je NP-hard , je použití přesného výčtového algoritmu možné pouze pro malé rozměry. Obvykle se k řešení problému používají heuristické přibližné polynomiální algoritmy.
Nechť existuje množina nádob o velikosti a množina objektů o velikosti . Je potřeba najít celočíselný počet kontejnerů a rozdělení množiny do podmnožin tak, aby pro všechny . Řešení se nazývá optimální, pokud je minimální. Minimum je dále označeno OPT .
Problém kontejnerizace lze formulovat jako problém celočíselného programování takto:
Minimalizovat | ||
pod omezeními | ||
kde , pokud je kontejner použit a pokud je položka umístěna v kontejneru . [jeden]
Nejjednoduššími polynomiálními algoritmy balení jsou Best Fit Decreasing - BFD (Best Fit Descending) a First Fit Decreasing - FFD (First Fit Descending). Položky jsou roztříděny v nezvětšujících se rozměrech a následně baleny buď do kontejneru, ve kterém po zabalení zbývá nejmenší volný objem - BFD, nebo do prvního kontejneru, kde je umístěn - FFD. Tyto algoritmy se osvědčily nanejvýš
kontejnery [2] .
Existují však také asymptoticky ε -optimální polynomiální algoritmy pro problém balení.
Problém určení, zda je OPT dva nebo tři, je NP-těžký. Proto je pro jakékoli ε > 0 obtížné zabalit položky do (3/2 − ε)OPT kontejnerů. (Pokud takový polynomiální algoritmus existuje, pak v polynomiálním čase je možné určit, zda se n nezáporných čísel dělí na dvě množiny se stejným součtem prvků. Je však známo, že tento problém je NP-těžký.) P se neshoduje s NP, pak pro problém s balením neexistuje žádný algoritmus (PTAS)přibližného polynomického časového schématu . Na druhou stranu, pro jakékoli ε >0 lze najít řešení s nejvýše (1 + ε)OPT + 1 kontejnery v polynomiálním čase. Takové algoritmy patří mezi asymptotické PTAS. [3] Protože však obě konstanty libovolně závisí na ε při odhadu složitosti této třídy algoritmů, mohou být takové algoritmy na rozdíl od FFD a BFD prakticky nepoužitelné.
Pro určitou třídu rozdělení pravděpodobnosti velikostí zabalených položek, včetně distribučních funkcí konvexních nahoru a dolů, existuje praktický polynomiální balicí algoritmus, který je téměř jistě asymptoticky optimální , když se počet položek neomezeně zvyšuje. Pro distribuce, která nejsou zahrnuta v této třídě, lze konstruovat jednotlivé polynomické asymptoticky optimální algoritmy. [čtyři]
Balicí úkoly | |
---|---|
Balící kruhy |
|
Balení balónků |
|
Další balíčky | |
Hádanka |
NP-úplné problémy | |
---|---|
Maximalizační problém stohování (balení) |
|
teorie grafů teorie množin | |
Algoritmické problémy | |
Logické hry a hádanky | |