Problemă maximă de acoperire - Maximum coverage problem
Problema de acoperire maximă este o întrebare clasică în informatică , teoria complexității calculului și cercetarea operațională . Este o problemă care este predată pe scară largă în algoritmii de aproximare .
Ca intrare vi se oferă mai multe seturi și un număr . Seturile pot avea unele elemente în comun. Trebuie să selectați cel mult aceste seturi astfel încât să fie acoperit numărul maxim de elemente, adică unirea seturilor selectate are dimensiunea maximă.
În mod formal, acoperire maximă (neponderată)
- Instanță: un număr și o colecție de seturi .
- Obiectiv: Găsiți un subset de seturi, astfel încât numărul de elemente acoperite să fie maximizat.
Problema de acoperire maximă este NP-hard și nu poate fi aproximată în cadrul ipotezelor standard. Acest rezultat se potrivește în esență cu raportul de aproximare realizat de algoritmul lacom generic utilizat pentru maximizarea funcțiilor submodulare cu o constrângere de cardinalitate .
Formulare ILP
Problema de acoperire maximă poate fi formulată ca următorul program liniar întreg .
| maximiza | (maximizarea sumei elementelor acoperite) | |
| supus | (nu sunt selectate mai mult de seturi) | |
| (dacă este selectat cel puțin un set ) | ||
| (dacă atunci este acoperit) | ||
| (dacă este selectat apoi pentru copertă) |
Algoritm lacom
Algoritmul greedy de acoperire maximă alege seturi în conformitate cu o singură regulă: în fiecare etapă, pentru a alege un set care conține cel mai mare număr de elemente neacoperite. Se poate arăta că acest algoritm atinge un raport de aproximare de . Rezultatele l-aproximabilității arată că algoritmul lacom este în esență cel mai bun algoritm de aproximare a timpului polinomial pentru o acoperire maximă, cu excepția cazului în care .
Extensii cunoscute
Rezultatele de inaproximabilitate se aplică tuturor extensiilor problemei de acoperire maximă, deoarece acestea dețin problema de acoperire maximă ca un caz special.
Problema de acoperire maximă poate fi aplicată situațiilor de trafic rutier; un astfel de exemplu este selectarea rutelor de autobuz dintr-o rețea de transport public care ar trebui instalate cu detectoare de gropi pentru a maximiza acoperirea, atunci când este disponibil doar un număr limitat de senzori. Această problemă este o extensie cunoscută a Problemei de acoperire maximă și a fost explorată pentru prima dată în literatură de Junade Ali și Vladimir Dyo.
Versiune ponderată
În versiunea ponderată fiecare element are o greutate . Sarcina este de a găsi o acoperire maximă care să aibă o greutate maximă. Versiunea de bază este un caz special atunci când toate greutățile sunt .
- maximiza . (maximizarea sumei ponderate a elementelor acoperite).
- supus ; (nu sunt selectate mai mult de seturi).
- ; (dacă este selectat cel puțin un set ).
- ; (dacă atunci este acoperit)
- (dacă este selectat apoi pentru copertă).
Algoritmul lacom pentru acoperirea maximă ponderată la fiecare etapă alege un set care conține greutatea maximă a elementelor neacoperite. Acest algoritm atinge un raport de aproximare de .
Acoperire maximă bugetată
În versiunea de acoperire maximă bugetată, nu numai că fiecare element are o pondere , ci și fiecare set are un cost . În loc să limiteze numărul de seturi din copertă, este dat un buget . Acest buget limitează costul total al acoperirii care poate fi aleasă.
- maximiza . (maximizarea sumei ponderate a elementelor acoperite).
- supus ; (costul seturilor selectate nu poate depăși ).
- ; (dacă este selectat cel puțin un set ).
- ; (dacă atunci este acoperit)
- (dacă este selectat apoi pentru copertă).
Un algoritm lacom nu va mai produce soluții cu o garanție de performanță. Și anume, cel mai rău comportament al acestui algoritm ar putea fi foarte departe de soluția optimă. Algoritmul de aproximare este extins prin următorul mod. Mai întâi, definiți un algoritm lacom modificat, care selectează setul care are cel mai bun raport dintre elementele ponderate descoperite și cost. În al doilea rând, printre coperțile cardinalității , găsiți cea mai bună acoperire care nu încalcă bugetul. Sunați la această acoperire . În al treilea rând, găsiți toate acoperirile cardinalității care nu încalcă bugetul. Folosind aceste acoperiri de cardinalitate ca puncte de plecare, aplicați algoritmul lacom modificat, menținând cea mai bună acoperire găsită până acum. Sunați la această acoperire . La sfârșitul procesului, cea mai bună acoperire aproximativă va fi fie sau . Acest algoritm atinge un raport de aproximare pentru valori de . Acesta este cel mai bun raport de aproximare posibil, cu excepția cazului în care .
Acoperire maximă generalizată
În versiunea de acoperire maximă generalizată, fiecare set are un cost , elementul are o greutate și un cost diferit, în funcție de setul care îl acoperă. Și anume, dacă este acoperit de set , greutatea este și costul său este . Se oferă un buget pentru costul total al soluției.
- maximiza . (maximizarea sumei ponderate a elementelor acoperite în seturile în care sunt acoperite).
- supus ; (costul seturilor selectate nu poate depăși ).
- ; (elementul poate fi acoperit doar de cel mult un set).
- ; (dacă este selectat cel puțin un set ).
- ; (dacă atunci este acoperit de set )
- (dacă este selectat apoi pentru copertă).
Algoritm de acoperire maxim generalizat
Algoritmul utilizează conceptul de cost / greutate reziduală. Costul / greutatea reziduală este măsurat în raport cu o soluție provizorie și este diferența dintre cost / greutate și costul / greutatea câștigată de o soluție provizorie.
Algoritmul are mai multe etape. Mai întâi, găsiți o soluție folosind algoritmul lacom. La fiecare iterație a algoritmului lacom, soluției provizorii se adaugă setul care conține greutatea reziduală maximă a elementelor împărțită la costul rezidual al acestor elemente împreună cu costul rezidual al setului. În al doilea rând, comparați soluția câștigată de primul pas cu cea mai bună soluție care utilizează un număr mic de seturi. În al treilea rând, întoarceți cele mai bune dintre toate soluțiile examinate. Acest algoritm atinge un raport de aproximare de .
Probleme conexe
- Problema setului de acoperire este de a acoperi toate elementele cu cât mai puține seturi.
Note
Referințe
- Vazirani, Vijay V. (2001). Algoritmi de aproximare . Springer-Verlag. ISBN 978-3-540-65367-7.