A halmazcsomagolás egy klasszikus NP-teljes probléma a számítási komplexitáselméletben és a kombinatorikában , és egyike Karp 21 NP-teljes problémájának .
Képzeljük el, hogy van egy véges S halmazunk és az S halmaz részhalmazainak listája . A csomagolási probléma azt kérdezi, hogy van-e k olyan részhalmaz egy listában, amelyek páronként diszjunktak.
Formálisabban, ha egy halmaz és a halmaz részhalmazainak családja adott , akkor a csomagolás a halmazok olyan alcsaládja , amelyben az összes halmaz páronként diszjunkt, és a csomagolás méretének nevezzük. A csomagolási megoldhatósági feladatban a bemenet egy pár és egy szám . A kérdés annak meghatározása, hogy van-e nagyobb vagy nagyobb csomag. A csomagolásoptimalizálási feladatban a bemenet egy pár , és a feladat az, hogy minél több készlet felhasználásával találjunk egy csomagolást.
Nyilvánvaló, hogy a probléma NP -hez tartozik , mivel adott k részhalmazt egyszerűen ellenőrizhetjük, hogy azok páronként diszjunktak-e polinomidőben .
A probléma optimalizálási változata , a halmazok maximális pakolása felteszi a kérdést, hogy a listából hány páronként diszjunkt halmazok maximális száma. Ez a probléma természetesen egészszámú lineáris programozási feladatként is megfogalmazható, a csomagolási feladatok osztályába tartozik, kettős lineáris programozási problémája pedig halmazfedő feladat [1] .
A maximális tömörítés megtalálásának problémája a következő egész lineáris programozási feladatként fogalmazható meg .
maximalizálni | (keresse meg a részhalmazok maximális halmazát) | ||
feltételek mellett | mindenkinek | (a kiválasztott halmazoknak páronként diszjunktnak kell lenniük) | |
mindenkinek . | (bármely készlet be van csomagolva vagy nincs) |
Példaként tegyük fel, hogy van egy gyűjteménye különböző ételekből a konyhájában ( ), és van egy szakácskönyve receptgyűjteményével ( ). Minden recepthez egy bizonyos termékkészlet szükséges. A szakácskönyvből a lehető legtöbb ételt szeretné elkészíteni (feltételezve, hogy a terméket csak egy ételben használják fel). Ebben az esetben egy készletcsomagolást ( ) keres ( ) - olyan receptkészletet, ahol a termék nem szerepel két különböző receptben.
Egy másik példaként képzeljük el a külföldi képviselők találkozóját, akik mindegyike beszél angolul és több más nyelven is. Határozatot szeretne bejelenteni a képviselők valamelyik csoportjának, de nem bízik bennük, és nem akarja, hogy olyan nyelven beszéljék meg a döntést, amelyet Ön nem ért. Ennek eléréséhez úgy kell kiválasztani egy csoportot, hogy két képviselő ne beszéljen az angolon kívül más nyelven. Másrészt döntését a lehető legtöbb képviselőhöz szeretné eljuttatni. Ebben az esetben a halmaz elemei az angoltól eltérő nyelvek, az alhalmazok pedig az egyes képviselők által beszélt nyelvek. Ha a két halmaz nem fedi egymást, a képviselők nem beszélhetnek az angolon kívül más nyelven. A maximális csomagolás a lehető legnagyobb számú képviselőt választja az adott korlátozások mellett. Bár a probléma általában megoldhatatlan, ebben a példában jó heurisztika az lenne, ha olyan képviselőket választanánk ki, akik egyetlen nyelvet beszélnek (az angolon kívül), így nem kell sok mást kizárni.
A halmazcsomagolási problémának létezik egy súlyozott változata, ahol minden részhalmazhoz hozzá van rendelve valamilyen súly (valós szám), és szeretnénk maximalizálni a teljes súlyt:
Az első példában olyan súlyt rendelhetünk a recepthez, amely megegyezik az ételt kedvelő barátok számával, így a vacsora a legtöbb barátnak fog tetszeni.
Úgy tűnik, hogy a súly nehezíti a problémát, de a súlyok nélküli probléma ismert eredményeinek többsége a súlyozott problémára is vonatkozik.
A csomagolási probléma nehéz lehet néhány k esetében, de nem biztos, hogy olyan k -t találni , amelyre bizonyos bemenetek esetén könnyen megoldható. Használhatjuk például a mohó algoritmust , amelyben megkeressük azt a halmazt, amelyik a legkevesebb más halmazzal metszik, hozzáadjuk a megoldáshoz, és eltávolítjuk azokat a halmazokat, amelyekkel metszi. Ugyanezt folytatjuk, amíg vannak készletek. Valamilyen méretű csomagot kapunk, bár nem feltétlenül a maximális méretet. Bár egyetlen algoritmus sem mindig képes a maximális eredmény közelébe adni (lásd a következő részt), sok gyakorlati alkalmazásban ez a heurisztikus algoritmus jó eredményeket ad.
Nem csak a beállított csomagolási probléma NP-teljes, de az optimalizálási verzióról is bebizonyosodott, hogy ugyanolyan nehezen közelíthető meg, mint a maximális kattintás problémájával . Különösen nem közelíthető semmilyen állandó tényezővel [2] . A legismertebb algoritmus egy tényezővel közelít [3] . A súlyozott változat ugyanilyen mértékben közelíthető [4] .
A problémának azonban van egy képlékenyebb változata – ha nem engedjük meg, hogy a részhalmazoknak több mint k ≥ 3 elemük legyen, a válasz k / 2 + ε tényezővel közelíthető bármely ε > 0 esetén. probléma 3 elemű halmazokkal közel 50%-os együtthatóval közelíthető. Egy másik képlékenyebb változatban, azzal a feltétellel, hogy egyetlen elem sem szerepel több mint k részhalmazban, a válasz k faktorral közelíthető . Ugyanez igaz a súlyozott változatra is.
A független halmazprobléma és a halmazcsomagolási probléma között egy az egyhez csökken a polinomiális idő :
A redukció egy kétirányú PTAS redukció , és azt mutatja, hogy a két problémát egyformán nehéz közelíteni.
Az egyeztetés és a 3D illesztés a készletcsomagolás speciális esetei. A maximális méretű illesztés megtalálható polinomidőben, de a legnagyobb 3 dimenziós illesztés vagy a legnagyobb független halmaz megtalálása NP-nehéz feladat.
A készletcsomagolás a készlet elemeinek letakarásával vagy szétválasztásával kapcsolatos problémák családjába tartozik. Az egyik kapcsolódó probléma a halmaz lefedésének problémája . Itt is kapunk egy S halmazt és egy halmazlistát, de a kihívás annak meghatározása, hogy választhatunk -e k olyan halmazt, amelyek együtt tartalmazzák S összes elemét . Ezek a készletek átfedhetik egymást. Az optimalizálási verzió a minimális számú ilyen készletet keresi. A maximális csomagolási probléma nem igényli kivétel nélkül az összes elem lefedését.
Az NP-teljes pontos fedő probléma viszont megköveteli, hogy minden elem pontosan egy részhalmazban legyen. Egy ilyen pontos lefedettség megtalálása mérettől függetlenül NP-teljes feladat.
Karp megmutatta a halmazcsomagolási probléma NP-teljességét a klikkprobléma redukálásával .
Lásd még: Hipergráfok csomagolása .
Csomagolási feladatok | |
---|---|
Csomagolási körök |
|
Léggömb csomagolás |
|
Egyéb csomagok | |
Kirakós játék |