Verzamelingenoverdekking

Gegeven een verzameling U {\displaystyle U} , de universele verzameling, en anderzijds een verzameling S {\displaystyle S} van deelverzamelingen van U {\displaystyle U} , waarvan de vereniging gelijk is aan U {\displaystyle U} . Een verzamelingenoverdekking van U {\displaystyle U} bestaat uit een of meer verzamelingen uit S {\displaystyle S} zodanig dat hun vereniging ook gelijk is aan U {\displaystyle 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 {\displaystyle k} mogelijk is om met k {\displaystyle k} of minder verzamelingen uit S {\displaystyle S} een overdekking van U {\displaystyle U} te maken. Het is een NP-volledig probleem.

Geformuleerd als wiskundige optimalisatie gaat het er om wat het kleinste aantal verzamelingen uit S {\displaystyle S} is, die een overdekking van U {\displaystyle U} vormen Dit probleem is NP-moeilijk.

Het kan ook zo zijn dat aan iedere verzameling uit S {\displaystyle S} een gewicht worden verbonden. Het gewogen overdekkingsprobleem wordt dan een overdekking van U {\displaystyle U} te vinden waarvan het totale gewicht zo klein mogelijk is.

Voorbeeld

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

Lineair programmeren

Veronderstel dat de universele verzameling bestaat uit m {\displaystyle m} elementen: U = { u 1 u m } {\displaystyle U=\{u_{1}\dots u_{m}\}} en dat er n {\displaystyle n} verzamelingen zijn in S {\displaystyle S} : S = { S 1 S n } {\displaystyle S=\{S_{1}\dots S_{n}\}} .

De verzameling S {\displaystyle S} kan door een matrix A {\displaystyle A} worden voorgesteld van m {\displaystyle m} rijen en n {\displaystyle n} kolommen, waarbij het element op rij i {\displaystyle i} en kolom j {\displaystyle j} een 1 is als u i {\displaystyle u_{i}} een element is van S j {\displaystyle S_{j}} en anders 0. Men zegt dat S j {\displaystyle S_{j}} het element u i {\displaystyle u_{i}} 'overdekt'. De j {\displaystyle j} -de kolom in A {\displaystyle A} komt dus overeen met de verzameling S j {\displaystyle S_{j}} .

De eventuele kosten zijn reële getallen c 1 {\displaystyle c_{1}} ... c n {\displaystyle c_{n}} , behorend bij de verzamelingen S 1 {\displaystyle S_{1}} ... S n {\displaystyle S_{n}} .

De overdekking wordt voorgesteld door beslissingsvariabelen x 1 , , x n {\displaystyle x_{1},\ldots ,x_{n}} , een per verzameling uit S {\displaystyle S} . Die zijn ofwel 0 ofwel 1; x j = 1 {\displaystyle x_{j}=1} betekent dat de j {\displaystyle j} -de verzameling deel uitmaakt van de overdekking.

Het ongewogen probleem is een 0-1-lineair programmeringsprobleem:

[1] minimiseer i = 1 n x i {\displaystyle \sum _{i=1}^{n}x_{i}}

met als beperkingen:

[2] x i { 0 , 1 } {\displaystyle x_{i}\in \{0,1\}} en

[3] j = 1 n a i , j x j 1 {\displaystyle \sum _{j=1}^{n}a_{i,j}x_{j}\geqslant 1} voor i = 1 m {\displaystyle i=1\dots m} .

Deze laatste uitdrukking betekent: de kolommen in A {\displaystyle A} van de verzamelingen die niet geselecteerd zijn voor de overdekking, worden op nul gezet. Er moet echter in elke rij van A {\displaystyle A} minstens een element 1 staan, met andere woorden elk element uit U {\displaystyle U} moet overdekt zijn door minstens een verzameling uit S {\displaystyle S} .

Voor het gewogen probleem wordt de doelfunctie [1]:

[4] minimiseer i = 1 n c i x i {\displaystyle \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

Wat is het minimumaantal voorzieningen dat alle behoeften dekt?
  • 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 {\displaystyle U} de verzameling die de vraag bepaald. Er zijn n {\displaystyle n} mogelijke locaties beschikbaar voor de voorzieningen, die tezamen de hele vraag kunnen dekken. S j {\displaystyle S_{j}} is de vraag die voorziening j {\displaystyle 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 {\displaystyle c_{j}} de kosten kunnen zijn om de voorziening j {\displaystyle j} op te richten. Een meer complexe vorm van het probleem houdt ook rekening met de kosten om vanuit voorziening V {\displaystyle V} te voldoen aan behoefte B {\displaystyle 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 {\displaystyle U} is de verzameling van alle mogelijke ingrepen. Er zijn n {\displaystyle n} dokters. S j {\displaystyle S_{j}} is de verzameling van ingrepen die dokter j {\displaystyle j} mag uitvoeren. Wat is het kleinst aantal dokters dat moet aanwezig zijn, opdat elke ingreep kan uitgevoerd worden door minstens een dokter? In een "gewogen" versie is zijn "kosten" van een dokter zijn/haar salaris en het probleem is die dokters 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 {\displaystyle U} . Er zijn n {\displaystyle n} terreinen beschikbaar, die elk een of meer van die soorten herbergen. Wat is het minimaal aantal terreinen dat alle beoogde soorten omvat? (In de gewogen versie kleven aan elk terrein kosten, bijvoorbeeld voor aankoop en onderhoud)[1]

Algoritmen

Een algemeen algoritme om een overdekking C {\displaystyle C} te maken, voor het niet-gewogen overdekkingsprobleem, is:

(1) begin met C {\displaystyle C} als lege verzameling

(2) vind een element uit U {\displaystyle U} dat nog niet overdekt is door een verzameling uit C {\displaystyle C}

(3) vind een verzameling uit S {\displaystyle S} die nog niet behoort tot C {\displaystyle C} , en die dat element overdekt. Voeg die verzameling toe aan C {\displaystyle C}

(4) herhaal (2) en (3) zolang er niet-overdekte elementen zijn in U {\displaystyle U} .

De selectiestap (3) kan op allerlei manieren gebeuren. Het algoritme kan die verzameling kiezen die zoveel mogelijk elementen uit U {\displaystyle 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 {\displaystyle x_{1}} ... x n {\displaystyle x_{n}} 0 of 1 zijn los en vervangt die door de beperking 0 ≤ xj ≤ 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:
j = 1 n a i , j x j = 1 {\displaystyle \sum _{j=1}^{n}a_{i,j}x_{j}=1}
ontstaat het set partition problem: nu mag ieder element uit U {\displaystyle U} maar door een enkele verzameling uit S {\displaystyle S} worden overdekt. Dat wil zeggen dat de overdekking een partitie van U {\displaystyle 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 {\displaystyle U} kan overdekt worden. Het probleem is dan: selecteer k {\displaystyle k} deelverzamelingen uit S {\displaystyle 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 {\displaystyle U} een gewicht is toegekend: zodanig dat het totale gewicht van de elementen die ze overdekken zo groot mogelijk is.[2]
Voetnoten
  1. 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
  2. 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