# Verzamelingenoverdekking

Gegeven een verzameling $U$, de universele verzameling, en anderzijds een verzameling $S$ van deelverzamelingen van $U$, waarvan de vereniging gelijk is aan $U$. Een verzamelingenoverdekking van $U$ bestaat uit een of meer verzamelingen uit $S$ zodanig dat hun vereniging ook gelijk is aan $U$.
In het vervolg van dit artikel wordt overal overdekking geschreven in plaats van verzamelingenoverdekking.

## Overdekkingsprobleem

Het overdekkingsprobleem is een fundamenteel probleem uit de informatica, waarmee veel plannings- en selectieproblemen kunnen worden gemodelleerd. Het kan als beslissingsprobleem worden geformuleerd, te bepalen dat het voor een gegeven getal $k$ mogelijk is om met $k$ of minder verzamelingen uit $S$ een overdekking van $U$ te maken. Het is een NP-volledig probleem.
Geformuleerd als wiskundige optimalisatie gaat het er om wat het kleinste aantal verzamelingen uit $S$ is, die een overdekking van $U$ vormen. Dit probleem is NP-moeilijk.
Het kan ook zo zijn dat aan iedere verzameling uit $S$ een gewicht wordt verbonden. Het gewogen overdekkingsprobleem wordt dan een overdekking van $U$ te vinden waarvan het totale gewicht zo klein mogelijk is.

## Voorbeeld

Stel $U=\{1,2,3,4,5\}$ en de verzameling van deelverzamelingen $S=\{\{1,2,3\},\{2,4\},\{3,4\},\{4,5\}\}$. De vereniging van $S$ is $U$, dus een overdekking, maar een triviale overdekking. Er bestaat in dit voorbeeld een overdekking met minder verzamelingen uit $S$, namelijk $\{\{1,2,3\},\{4,5\}\}$.

## Lineair programmeren

Veronderstel dat de universele verzameling bestaat uit $m$ elementen: $U=\{u_{1}\dots u_{m}\}$ en dat er $n$ verzamelingen zijn in $S$: $S=\{S_{1}\dots S_{n}\}$.
De verzameling $S$ kan door een matrix $A$ worden voorgesteld van $m$ rijen en $n$ kolommen, waarbij het element op rij $i$ en kolom $j$ een 1 is als $u_{i}$ een element is van $S_{j}$ en anders 0. Men zegt dat $S_{j}$ het element $u_{i}$ 'overdekt'. De $j$-de kolom in $A$ komt dus overeen met de verzameling $S_{j}$.
De eventuele kosten zijn reële getallen $c_{1}$ ... $c_{n}$, behorend bij de verzamelingen $S_{1}$ ... $S_{n}$.
De overdekking wordt voorgesteld door beslissingsvariabelen $x_{1},\ldots ,x_{n}$, één per verzameling uit $S$. Die zijn ofwel 0 ofwel 1; $x_{j}=1$ betekent dat de $j$-de verzameling deel uitmaakt van de overdekking.
Het ongewogen probleem is een 0-1 lineair-programmeringsprobleem:
[1] minimaliseer $\sum _{i=1}^{n}x_{i}$
met als beperkingen:
[2] $x_{i}\in \{0,1\}$ en
[3] $\sum _{j=1}^{n}a_{i,j}x_{j}\geqslant 1$ voor $i=1\dots m$.
Deze laatste uitdrukking betekent: de kolommen j in $A$ van de verzamelingen die niet geselecteerd zijn voor de overdekking, worden op nul gezet. Er moet echter in elke rij i van $A$ minstens een element 1 staan, met andere woorden: elk element uit $U$ moet overdekt zijn door minstens een verzameling uit $S$.
Voor het gewogen probleem wordt de doelfunctie [1]:
[4] minimaliseer $\sum _{i=1}^{n}c_{i}x_{i}$
Het ongewogen probleem is dus slechts een bijzonder geval hiervan, namelijk wanneer alle gewichten even groot zijn; dan kunnen ze geschrapt worden uit de doelfunctie.

## Toepassingsvoorbeelden

* Een klassieke toepassing is het facility location problem, waarin wordt gezocht hoe met zo min mogelijk voorzieningen aan de vraag van een aantal klanten te voldoen. De voorzieningen dekken de vraag alleen af als ze voldoende dicht in de buurt van de locatie van de klanten liggen, gemeten in afstand of in tijd. Voorzieningen zijn bijvoorbeeld brandweerdepots waarvan wordt verwacht dat de brandweer binnen een bepaalde tijd op de plaats van bijvoorbeeld de brand kan zijn. In dit geval is $U$ de verzameling die de vraag bepaalt. Er zijn $n$ mogelijke locaties beschikbaar voor de voorzieningen, die tezamen de hele vraag kunnen dekken. $S_{j}$ is de vraag die voorziening $j$ kan dekken. Het (ongewogen) probleem is: wat is het kleinst aantal voorzieningen dat de hele vraag dekt? Bij een gewogen variant zou $c_{j}$ de kosten kunnen zijn om de voorziening $j$ op te richten. Een meer complexe vorm van het probleem houdt ook rekening met de kosten om vanuit voorziening $V$ te voldoen aan behoefte $B$, wat meestal een functie is die stijgt met de afstand ertussen.
* In de spoeddienst van een ziekenhuis moet een aantal dokters beschikbaar zijn om elke ingreep te kunnen uitvoeren die nodig kan zijn. Stel $U$ is de verzameling van alle mogelijke ingrepen. Er zijn $n$ dokters. $S_{j}$ is de verzameling van ingrepen die dokter $j$ mag uitvoeren. Wat is het kleinst aantal dokters dat aanwezig moet zijn, opdat elke ingreep kan uitgevoerd worden door minstens één dokter? In een gewogen versie is 'kosten' van een dokter zijn/haar salaris en het probleem is die set dokters (hetzij arts-assistent, specialist/chirurg) te selecteren, die alle ingrepen kunnen uitvoeren en waarvoor de totale salariskosten zo laag mogelijk zijn. Dit soort selectieproblemen stelt zich onder meer ook bij luchtvaartmaatschappijen: welke bemanningen toewijzen aan welke vluchten?
* Een voorbeeld op gebied van natuurbehoud: men wenst een aantal gevoelige of bedreigde soorten (of biotopen...) te beschermen door het inrichten van natuurreservaten. Die soorten vormen de verzameling $U$. Er zijn $n$ terreinen beschikbaar, die elk een of meer van die soorten herbergen. Wat is het minimum aantal terreinen dat alle beoogde soorten omvat? (In de gewogen versie kleven aan elk terrein kosten, bijvoorbeeld voor aankoop en onderhoud.)

## Algoritmen

Een algemeen algoritme om een overdekking $C$ te maken, voor het niet-gewogen overdekkingsprobleem, is:
(1) begin met $C$ als lege verzameling
(2) vind een element uit $U$ dat nog niet overdekt is door een verzameling uit $C$
(3) vind een verzameling uit $S$ die nog niet behoort tot $C$, en die dat element overdekt. Voeg die verzameling toe aan $C$
(4) herhaal (2) en (3) zolang er niet-overdekte elementen zijn in $U$.
De selectiestap (3) kan op allerlei manieren gebeuren. Het algoritme kan die verzameling kiezen die zoveel mogelijk elementen uit $U$ bevat die nog niet overdekt zijn. Maar dit garandeert niet dat de bekomen overdekking minimaal is. Het vinden van het optimum (minimum) is een complex optimalisatieprobleem waarvoor vele algoritmen ontwikkeld zijn, zowel exacte (die echter niet efficiënt zijn voor grote problemen) als benaderende algoritmen die gebruikmaken van heuristieken om in een eindig aantal stappen en in een acceptabele tijd een goede, maar niet noodzakelijk de optimale, oplossing te vinden. Voor realistische problemen met vaak meerdere duizenden variabelen en verzamelingen volstaat dit dikwijls.
Het is mogelijk dit probleem te benaderen met LP-relaxatie. Men laat dan de eis dat de onbekenden $x_{1}$ ... $x_{n}$ 0 of 1 zijn los en vervangt die door de beperking 0≤x$_j$≤1{\textstyle 0\leq x_{j}\leq 1}. Het resulterende probleem voor lineair programmeren kan efficiënt worden opgelost, maar er komen dan in de oplossing waarden voor de variabelen voor, die geen gehele getallen zijn. De optimale waarde van het originele probleem kan uitgaande van die oplossing met een branch and bound-algoritme worden gezocht.

## Varianten

* Wanneer men in de voorwaarden van het probleem (formule [3]) de ongelijkheid '≥' vervangt door gelijkheid '=':
    $\sum _{j=1}^{n}a_{i,j}x_{j}=1$ voor $i=1\dots m$
    ontstaat het set partition probleem: nu mag ieder element uit $U$ maar door een enkele verzameling uit $S$ worden overdekt. Dat wil zeggen dat de overdekking een partitie van $U$ moet zijn; dit is een exacte overdekking.
* Soms wordt geëist dat de bovenstaande som ≥ 2 is in plaats van ≥ 1. In het "facility location"-probleem betekent dit dat elke behoefte door minstens twee voorzieningen moet worden gedekt, met andere woorden er wordt reservecapaciteit of redundantie ingebouwd.
* Het maximum k-coverage-probleem stelt een bovengrens aan het aantal verzamelingen dat kan behoren tot de overdekking. Daardoor kan het zijn dat niet elk element uit $U$ kan overdekt worden. Het probleem is dan:
** selecteer $k$ deelverzamelingen uit $S$, zodanig dat hun vereniging zoveel mogelijk elementen uit de universele verzameling overdekt,
** of in het gewogen geval, waarbij aan elk element uit de universele set $U$ een gewicht is toegekend: selecteer zodanig dat het totale gewicht van de elementen die ze overdekken zo groot mogelijk is.
* ↑ Kantorovich, Leonid (Sovjet-Unie, 1945?)
* ↑ LG Underhill. Optimal and suboptimal reserve selection algorithms, 1994. voor Biological Conservation, 70, 1, blz. 85-87. DOI:10.1016/0006-3207(94)90302-6
* ↑ DS Hochbaum en A Pathria. Analysis of the greedy approach in problems of maximum k-coverage, 1998. voor Naval Research Logistics, 45, 6, blz. 615-67 DOI:10.1002/(SICI)1520-6750(199809)45:6<615::AID-NAV5>3.0.CO;2-5