A független halmazprobléma a gráfelmélet területén az NP-teljes feladatok osztályába tartozik . Egyenértékű a klikk problémával .
Egy gráf csúcshalmazát függetlennek nevezzük, ha ennek a halmaznak nincs két csúcsa összekötve éllel. Más szóval, a halmaz által indukált részgráf izolált csúcsokból áll. Néha azt is mondják, hogy a gráf minden éle egy független halmaz legfeljebb egy csúcsára esik. A felismerési probléma (decidability problem) így néz ki: van-e egy adott G gráfnak független k méretű halmaza ? A hozzá tartozó optimalizálási feladat, más néven független halmazprobléma a következőképpen fogalmazódik meg: egy adott G gráfban meg kell találni egy maximális méretű független halmazt. Ezt a méretet függetlenségi számnak , belső sűrűségszámnak vagy lazaságnak nevezik, és [1] [2] -ként jelöljük .
Ezt a problémát néha a legnagyobb független halmaz megtalálásának nevezik . Ezt a fogalmat nem szabad összetéveszteni a maximális független halmazzal , vagy a maximális független halmazzal , amely a csúcsok olyan független halmazaként van definiálva, hogy ha az eredeti gráf még egy (bármely) csúcsát hozzáadjuk hozzá, az megszűnik függetlenek legyenek (általában több és különböző méretű ilyen halmazok létezhetnek). Egy befogadó-maximális független halmaz semmiképpen sem mindig a legnagyobb. Ugyanakkor minden legnagyobb független halmaz definíció szerint a befogadás által is maximális. A befogadás (valamilyen) maximális független halmazának megtalálásához egy mohó algoritmus használható , amely polinomiális időben fut, míg a legnagyobb független halmaz problémája az NP-teljes feladatok osztályába tartozik.
A befogadás-maximális független halmaz egy domináns halmaz . Bármely gráf maximum 3 n /3 zárványmaximális független halmazt tartalmaz [3] , de a legtöbb gráfban jóval kevesebb van belőlük.
Az n csúcsú ciklusokban a befogadás-maximális független halmazok száma Perrin-szám , az n csúcsú utak zárvány-maximális független halmazainak számát pedig a Padovan sorozat [4] adja meg . Így mindkét szám arányos 1,324718, a képlékeny szám hatványával .
A gráf legkisebb független részhalmaza a gráf bármely csúcsa.
Egy halmaz akkor és csak akkor független, ha egy klikk a gráf komplementerében , tehát a két fogalom kiegészíti egymást. A kellően nagy gráfok nagy klikkek nélkül nagy független halmazokkal rendelkeznek, ami a Ramsey-elmélet tanulmányozásának tárgya .
Egy halmaz akkor és csak akkor független, ha komplementere csúcsfedő . A függetlenségi szám és a csúcsfedő szám összege megegyezik a gráf csúcsainak számával (az első Gallai azonosság ).
A gráf csúcsainak színezése megfelel a csúcsok független részhalmazokra való felosztásának . Ezért a csúcsok színezéséhez szükséges minimális színszám, a kromatikus szám nem kisebb, mint a csúcsok számának és a függetlenségi számnak a hányadosa .
Az izolált csúcsokkal nem rendelkező kétrészes gráfokban a legnagyobb független halmaz csúcsainak száma megegyezik a legkisebb élfedő éleinek számával (a König-tétel következménye ).
A számítástechnikában számos független halmazhoz kapcsolódó számítási problémát
Az első három probléma a gyakorlati alkalmazásokban fontos, míg az utolsó az NP-teljesség elmélete szempontjából a független halmazokkal kapcsolatos problémák esetében.
A független halmazprobléma és a klikk probléma kettős: a klikk G -ben független halmaz G komplementerében és fordítva. Így számos számítási eredmény egyformán jól alkalmazható mindkét problémára. Például a klikkproblémával kapcsolatos eredmények a következő következményekkel járnak:
Ezt a problémát néha " csúcscsomagolásnak " is nevezik.
A legnagyobb független halmazprobléma és a legnagyobb klikkprobléma polinomiálisan ekvivalens – a legnagyobb független halmazt úgy találhatjuk meg, ha a gráf komplementerében megtaláljuk a maximális klikket, így sok szerző nem különösebben törődik a két probléma szétválasztásával. Mindkét probléma NP-teljes, így nem valószínű, hogy polinomiális időben megoldhatóak. A legnagyobb független halmazprobléma azonban hatékonyabban megoldható, mint O( n 2 2 n ) idő alatt, ami egy kimerítő keresést eredményez, amely megvizsgálja a csúcsok összes részhalmazát, hogy kiderüljön, független halmazokról van-e szó. A Robson-algoritmus [6] O(2 0,276 n ) időben oldja meg a feladatot az exponenciális tér felhasználásával. Ha van korlát a méretben (polinom tér), akkor van egy algoritmus az O*(1,2127 n ) időbeli megoldására [7] .
Annak ellenére, hogy egy tetszőleges gráfban szoros kapcsolat van a legnagyobb klikk és a legnagyobb független halmaz között, a független halmaz és a klikk megtalálásának problémái jelentősen eltérhetnek, ha egy speciális gráfosztályon oldjuk meg. Például ritka gráfok esetén (olyan gráfok, amelyekben az élek száma egy részgráfban nem nagyobb, mint a csúcsok számának szorzata valamilyen konstanssal) a legnagyobb klikk korlátozott méretű, és lineáris időben pontosan megtalálható [8] . Azonban ugyanazon gráfosztályok esetén, vagy akár szigorúbb korlátozások esetén egy korlátos fokozatú gráfosztályra a legnagyobb független halmaz keresése MAXSNP-teljes , ami azt jelenti, hogy valamilyen c állandóra (attól függően fokon) NP - nehéz olyan közelítő megoldást találni, amely c tényezővel különbözik az optimálistól [9] . Hatékony közelítő algoritmusok azonban ismertek, de garantált hatékonyságuk rosszabb, mint ez a küszöb. Például egy mohó algoritmus egy befogadás-maximális független halmazt hoz létre úgy, hogy minden lépésben kiválaszt egy csúcsot a minimális fokszámmal, és eltávolítja a szomszédait. Ez az algoritmus garantált hatékonyságot (Δ+2)/3 ér el maximum Δ [10] fokú gráfokon .
A gráfok egyes osztályaiban (beleértve a karmok nélküli gráfokat [11] és a tökéletes gráfokat [12] ; a fák is ez utóbbi osztályba tartoznak ) a legnagyobb független halmaz polinomidőben található. Síkgráfok esetén a legnagyobb független halmazprobléma NP-teljes marad a pontos megoldáshoz, de bármilyen garantált hatékonysággal közelíthető, ha c < 1 polinomidőben. Hasonló közelítő polinomiális idősémák léteznek bármely kis mértékben zárt gráfcsaládban [ 13] [14] .
A kétrészes gráfokban minden olyan csúcs, amely nincs a legkisebb csúcsfedőben, a legnagyobb független halmazba foglalható (lásd König tételét ). Ezért a legnagyobb független halmazt megtalálhatjuk a kétrészes gráfokban a legnagyobb egyezések megtalálására szolgáló algoritmus segítségével.
Minden zárvány-maximális független halmaz megtalálható O(3 n /3 ) időben.
Név | Engedély | API nyelv | Leírás |
---|---|---|---|
igraph | GPL | C, Python, R, Ruby | pontos megoldás |
NetworkX | BSD | Piton | közelítő megoldás, lásd a maximum_independent_set eljárást |
openopt | BSD | Piton | pontos és közelítő megoldások, a beszámítandó / kizárandó csúcsok megadásának képessége. Részletekért és példákért lásd a STAB osztályt |
Ha az adott gráf egy fa , akkor a független halmazprobléma hatékonyan megoldható dinamikus programozással .
Maga a fa szerkezete sugallja a probléma megoldását. Ugyanis bármely csúcsot a fa gyökereként jelöljük, és nevezzük . Jelölje annak a részfa legnagyobb független csúcshalmazának méretét, amelynek gyökere a csúcs . Akkor az lesz a válasz a problémára .
Könnyen belátható, hogy ha a legnagyobb független halmazba belevesszük az u csúcsot , akkor annak számossága 1-gyel nő, de gyermekeit nem vehetjük (hiszen éllel kapcsolódnak az u csúcshoz ); ha ezt a csúcsot nem vesszük figyelembe, akkor a legnagyobb független halmaz számossága megegyezik az e csúcshoz tartozó független gyermekhalmazok méreteinek összegével. Csak a két lehetőség közül a maximumot kell kiválasztani a probléma megoldása érdekében:
ahol az unoka a csúcs bármely "unokáját", a gyermek pedig a csúcs bármely leszármazottját jelöli.
Úgy gondoljuk, hogy a tetején az u található :
függvény get_independent_set(u csomópont) { ha az I(u)-t már kiszámoltuk, akkor adja vissza az I(u)-t // a halmaz számossága, amelyet akkor kaphatunk, ha nem vesszük fel az u csúcsot gyermekek_összege = 0 // a halmaz számossága, amelyet az u csúcs felvételével kaphatunk unokák_összege = 0 // hurok az összes gyermeken keresztül for i := 1 - gyermek_szám do children_sum = children_sum + get_independent_set(childs[i]) // hurok az összes unokán keresztül i:= 1-től unokák_számához unokák_összege = unokák_összege + get_independent_set(unokák[i]) // ne feledje, hogy ne számolja újra I(u) = max(1 + unokák_összege, gyermekek_összege) visszatérés I(u) }A get_independent_set( r ) meghívása megadja a választ a problémára. Az algoritmus végrehajtási ideje nyilvánvalóan O (|V| + |E|).
NP-teljes problémák | |
---|---|
A halmozás (csomagolás) maximalizálási problémája |
|
gráfelmélet halmazelmélet | |
Algoritmikus problémák | |
Logikai játékok és rejtvények | |