Problema di copertura massima - Maximum coverage problem
Il problema della copertura massima è una domanda classica nell'informatica , nella teoria della complessità computazionale e nella ricerca operativa . È un problema ampiamente insegnato negli algoritmi di approssimazione .
Come input ti vengono dati diversi set e un numero . I set possono avere alcuni elementi in comune. È necessario selezionare al massimo di questi insiemi in modo tale da coprire il numero massimo di elementi, ovvero l'unione degli insiemi selezionati ha la dimensione massima.
Formalmente, copertura massima (non ponderata)
- Istanza: un numero e una raccolta di insiemi .
- Obiettivo: Trovare un sottoinsieme di insiemi, tale che e il numero di elementi coperti sia massimizzato.
Il problema della copertura massima è NP-hard e non può essere approssimato all'interno di ipotesi standard. Questo risultato corrisponde essenzialmente al rapporto di approssimazione ottenuto dal generico algoritmo greedy utilizzato per la massimizzazione delle funzioni submodulari con un vincolo di cardinalità .
Formulazione ILP
Il problema della copertura massima può essere formulato come il seguente programma lineare intero .
| massimizzare | (massimizzando la somma degli elementi coperti) | |
| soggetto a | (non vengono selezionati più di set) | |
| (se poi almeno un set è selezionato) | ||
| (se poi è coperto) | ||
| (se poi è selezionato per la copertina) |
Algoritmo avido
L' algoritmo greedy per la massima copertura sceglie gli insiemi secondo una regola: in ogni fase, scegli un insieme che contenga il maggior numero di elementi scoperti. Si può dimostrare che questo algoritmo raggiunge un rapporto di approssimazione di . I risultati di approssimabilità ln mostrano che l'algoritmo greedy è essenzialmente il miglior algoritmo di approssimazione del tempo polinomiale per la massima copertura a meno che .
Estensioni conosciute
I risultati di inapprossimabilità si applicano a tutte le estensioni del problema di massima copertura poiché considerano il problema di massima copertura come un caso speciale.
Il problema della massima copertura può essere applicato a situazioni di traffico stradale; un esempio è selezionare quali linee di autobus in una rete di trasporto pubblico dovrebbero essere installate con rilevatori di buche per massimizzare la copertura, quando è disponibile solo un numero limitato di sensori. Questo problema è un'estensione nota del problema della copertura massima ed è stato esplorato per la prima volta in letteratura da Junade Ali e Vladimir Dyo.
Versione ponderata
Nella versione pesata ogni elemento ha un peso . Il compito è trovare una copertura massima che abbia il peso massimo. La versione base è un caso speciale quando tutti i pesi sono .
- massimizzare . (massimizzando la somma ponderata degli elementi coperti).
- soggetto a ; (non vengono selezionati più di set).
- ; (se poi è selezionato almeno un set ).
- ; (se poi è coperto)
- (se poi è selezionato per la copertina).
L'algoritmo greedy per la copertura massima ponderata in ogni fase sceglie un insieme che contiene il peso massimo degli elementi scoperti. Questo algoritmo raggiunge un rapporto di approssimazione di .
Copertura massima preventivata
Nella versione a massima copertura preventivata, non solo ogni elemento ha un peso , ma anche ogni set ha un costo . Invece di limitare il numero di set nella copertina, viene fornito un budget . Questo budget limita il costo totale della copertura che può essere scelta.
- massimizzare . (massimizzando la somma ponderata degli elementi coperti).
- soggetto a ; (il costo dei set selezionati non può superare ).
- ; (se poi è selezionato almeno un set ).
- ; (se poi è coperto)
- (se poi è selezionato per la copertina).
Un algoritmo greedy non produrrà più soluzioni con una garanzia di prestazioni. Vale a dire, il comportamento peggiore di questo algoritmo potrebbe essere molto lontano dalla soluzione ottimale. L'algoritmo di approssimazione viene esteso nel modo seguente. Innanzitutto, definire un algoritmo greedy modificato, che seleziona l'insieme che ha il miglior rapporto tra elementi scoperti ponderati e costo. In secondo luogo, tra le copertine di cardinalità , trova la migliore copertina che non viola il budget. Chiama questa copertina . Terzo, trova tutte le coperture di cardinalità che non violano il budget. Usando queste coperture di cardinalità come punti di partenza, applica l'algoritmo greedy modificato, mantenendo la migliore copertura trovata finora. Chiama questa copertina . Alla fine del processo, la migliore copertura approssimativa sarà o . Questo algoritmo raggiunge un rapporto di approssimazione di per i valori di . Questo è il miglior rapporto di approssimazione possibile a meno che .
Copertura massima generalizzata
Nella versione a massima copertura generalizzata ogni set ha un costo , l'elemento ha un peso e un costo diverso a seconda di quale set lo copre. Vale a dire, se è coperto da set, il peso di è e il suo costo è . Viene fornito un budget per il costo totale della soluzione.
- massimizzare . (massimizzando la somma ponderata degli elementi coperti negli insiemi in cui sono coperti).
- soggetto a ; (il costo dei set selezionati non può superare ).
- ; (l'elemento può essere coperto al massimo da un set).
- ; (se poi è selezionato almeno un set ).
- ; (se poi è coperto da set )
- (se poi è selezionato per la copertina).
Algoritmo di copertura massima generalizzato
L'algoritmo utilizza il concetto di costo/peso residuo. Il costo/peso residuo viene misurato rispetto a una soluzione provvisoria ed è la differenza del costo/peso dal costo/peso ottenuto da una soluzione provvisoria.
L'algoritmo ha diverse fasi. Innanzitutto, trova una soluzione usando l'algoritmo greedy. In ogni iterazione dell'algoritmo greedy alla soluzione provvisoria viene aggiunto l'insieme che contiene il peso residuo massimo degli elementi diviso per il costo residuo di questi elementi insieme al costo residuo dell'insieme. In secondo luogo, confronta la soluzione ottenuta con il primo passaggio con la soluzione migliore che utilizza un numero limitato di insiemi. Terzo, restituisci la migliore tra tutte le soluzioni esaminate. Questo algoritmo raggiunge un rapporto di approssimazione di .
Problemi correlati
- Il problema della copertura dei set è quello di coprire tutti gli elementi con il minor numero possibile di set.
Appunti
Riferimenti
- Vazirani, Vijay V. (2001). Algoritmi di approssimazione . Springer-Verlag. ISBN 978-3-540-65367-7.