Állítsa be a fedési problémát

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2022. június 28-án felülvizsgált verziótól ; az ellenőrzéshez 1 szerkesztés szükséges .

A problémahalmaz a számítástechnika és a komplexitáselmélet klasszikus kérdése . Ez a probléma általánosítja az NP-teljes csúcsfedő problémát (és ezért NP-nehéz). Bár a csúcslefedési probléma hasonló ehhez, a közelítő algoritmusban alkalmazott megközelítés itt nem működik. Ehelyett egy mohó algoritmust veszünk figyelembe. Az általa adott megoldás logaritmikusan sokszor rosszabb lesz az optimálisnál. A probléma méretének növekedésével a megoldás minősége romlik, de még mindig meglehetősen lassan, így ez a megközelítés hasznosnak tekinthető.

Problémafelvetés

A halmazfedő probléma kiindulási adata egy véges halmaz és részhalmazainak egy családja . A borító a legkisebb kardinalitású család, melynek uniója . A belépési engedéllyel kapcsolatos kérdés esetén egy pár és egy egész szám kerül megadásra ; a kérdés a kardinalitás (vagy kevesebb) fedőhalmazának megléte.

Példa

Példaként egy halmazt lefedő problémára tekintsük a következő problémát: képzeljük el, hogy egy feladat elvégzéséhez egy bizonyos készségkészletre van szükség . Van egy olyan embercsoport is, akik mindegyike rendelkezik ezekből a képességekből. Meg kell alkotni a feladat elvégzéséhez elegendő legkisebb alcsoportot, azaz. beleértve az összes szükséges készség hordozóit.

Megoldási módszerek

Mohó közelítő algoritmus

A mohó algoritmus a következő szabály szerint választ ki halmazokat: minden szakaszban kiválasztanak egy halmazt, amely lefedi a még le nem fedett elemek maximális számát.

Greedy-Set-Cover(U,F), ahol  az összes elem adott halmaza,  részhalmazok családja

  1. while do
    1. válassza a legmagasabbat
  2. return

Megmutatható, hogy ez az algoritmus pontossággal működik , ahol  a legnagyobb halmaz hatványa, és a harmonikus sorozat  első tagjainak összege .

Más szóval, az algoritmus olyan fedelet talál, amelynek mérete legfeljebb a minimális fedő méretének a mérete.

Feige tétele azt mondja, hogy a halmazlefedési feladathoz nincs közelítő tényezővel rendelkező algoritmus , mert különben az NP komplexitási osztály egyenlő lenne a TIME( ) összetettségi osztállyal. [1] Így a mohó algoritmus a legjobb közelítő algoritmus a halmazlefedési problémára.

Van egy szabványos példa, ahol a mohó algoritmus pontosan működik .

Az univerzum elemekből áll. A halmazok halmaza páronkénti diszjunkt halmazokból áll , amelyeknek a számossága rendre. Két diszjunkt halmaz is létezik , amelyek mindegyike tartalmazza az elemek felét . Egy ilyen halmazon a mohó algoritmus kiválasztja a halmazokat , míg az optimális megoldás a halmazok kiválasztása és A jobb oldali ábrán látható példa hasonló bemeneti adatokra .

Genetikai algoritmus

A genetikai algoritmus egy heurisztikus véletlenszerű keresési módszer, amely egy biológiai populáció evolúciójának szimulációján alapul.

Általános esetben az algoritmus működése során a populációk egymás utáni változása történik, amelyek mindegyike egy fedőcsalád, amelyet populáció egyedeinek nevezünk. A kezdeti sokaság fedőit véletlenszerűen állítjuk össze. A leggyakoribb és legjobban bevált a genetikai algoritmus stacionárius sémája, amelyben a következő populáció csak egy-két új egyeddel tér el az előzőtől. Amikor a jelenlegi populációból új egyedet állítunk össze, a lefedettségek súlyát figyelembe véve, kiválasztunk egy „szülő” egyedpárt , és ezek alapján a keresztezési eljárásban (véletlenszerűen vagy determinisztikusan) egy bizonyos fedezeti halmazt. halmazok alakulnak ki . Ezután egy mutáción megy keresztül , amely után egy egyed épül fel belőle, amely az új populációban a legnagyobb súllyal helyettesíti a borítást. A sokaság bizonyos (meghatározott) számú alkalommal frissül, és az algoritmus eredménye a talált legjobb lefedettség.

Pontos megoldás

A halmazlefedési feladatot gyakran egészszámú programozási feladatként fogalmazzák meg [2] :

Meg kell találni , ahol  egy mátrix, és = 1, ha , és = 0 egyébként;  az egyesek vektorát jelöli ; ;  egy vektor, ahol , ha benne van a lefedettségben, egyébként .

A pontos megoldást polinomiális időben kaphatjuk meg, ha a mátrix teljesen unimoduláris . Ez magában foglalja a csúcsok lefedésének problémáját is egy bipartit gráfon és fán . Különösen, ha a mátrix minden oszlopa pontosan két 1-est tartalmaz, a probléma a gráf éllefedési problémájaként fogható fel, ami gyakorlatilag a maximális egyezés megtalálására redukálódik . Azokon a feladatosztályokon, ahol vagy amelyeket konstans határol, a feladatot polinomiális időben, kimerítő felsorolási módszerekkel oldják meg.

Kapcsolódó feladatok

Irodalom


Jegyzetek

  1. Uriel Feige. Ln n küszöbérték a fedőkészlet közelítéséhez  //  Journal of the ACM. - 1998-07. — Vol. 45 , iss. 4 . — P. 634–652 . — ISSN 1557-735X 0004-5411, 1557-735X . - doi : 10.1145/285055.285059 .
  2. A. V. Eremejev, L. A. Zaozerszkaja, A. A. Kolokolov. A PROBLÉMÁT FEDEZŐ BEÁLLÍTÁS: KOMPLEXITÁS, ALGORITMUSOK, KÍSÉRLETI TANULMÁNYOK  // DISZKRÉT ELEMZÉS ÉS MŰVELETKUTATÁS. - 2000. - július-december ( 7. köt. 2. szám ). - S. 22-46 . Archiválva az eredetiből 2021. január 25-én.

Linkek