Naar inhoud springen

Verzamelingenoverdekking

Uit Wikipedia, de vrije encyclopedie

Gegeven een verzameling , de universele verzameling, en anderzijds een verzameling van deelverzamelingen van , waarvan de vereniging gelijk is aan . Een verzamelingenoverdekking van bestaat uit een of meer verzamelingen uit zodanig dat hun vereniging ook gelijk is aan .

In het vervolg van dit artikel wordt overal overdekking geschreven in plaats van verzamelingenoverdekking.

Overdekkingsprobleem

[bewerken | brontekst bewerken]

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 mogelijk is om met of minder verzamelingen uit een overdekking van te maken. Het is een NP-volledig probleem.

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

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

Stel en de verzameling van deelverzamelingen . De vereniging van is , dus een overdekking, maar een triviale overdekking. Er bestaat in dit voorbeeld een overdekking met minder verzamelingen uit , namelijk .

Lineair programmeren

[bewerken | brontekst bewerken]

Veronderstel dat de universele verzameling bestaat uit elementen: en dat er verzamelingen zijn in : .

De verzameling kan door een matrix worden voorgesteld van rijen en kolommen, waarbij het element op rij en kolom een 1 is als een element is van en anders 0. Men zegt dat het element 'overdekt'. De -de kolom in komt dus overeen met de verzameling .

De eventuele kosten zijn reële getallen ... , behorend bij de verzamelingen ... .

De overdekking wordt voorgesteld door beslissingsvariabelen , een per verzameling uit . Die zijn ofwel 0 ofwel 1; betekent dat de -de verzameling deel uitmaakt van de overdekking.

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

[1] minimiseer

met als beperkingen:

[2] en

[3] voor .

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

Voor het gewogen probleem wordt de doelfunctie [1]:

[4] minimiseer

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

[bewerken | brontekst bewerken]
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 de verzameling die de vraag bepaald. Er zijn mogelijke locaties beschikbaar voor de voorzieningen, die tezamen de hele vraag kunnen dekken. is de vraag die voorziening kan dekken. Het (ongewogen) probleem is: wat is het kleinst aantal voorzieningen dat de hele vraag dekt? Bij een gewogen variant zou de kosten kunnen zijn om de voorziening op te richten. Een meer complexe vorm van het probleem houdt ook rekening met de kosten om vanuit voorziening te voldoen aan behoefte , 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 is de verzameling van alle mogelijke ingrepen. Er zijn dokters. is de verzameling van ingrepen die dokter 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 . Er zijn 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]

Een algemeen algoritme om een overdekking te maken, voor het niet-gewogen overdekkingsprobleem, is:

(1) begin met als lege verzameling

(2) vind een element uit dat nog niet overdekt is door een verzameling uit

(3) vind een verzameling uit die nog niet behoort tot , en die dat element overdekt. Voeg die verzameling toe aan

(4) herhaal (2) en (3) zolang er niet-overdekte elementen zijn in .

De selectiestap (3) kan op allerlei manieren gebeuren. Het algoritme kan die verzameling kiezen die zoveel mogelijk elementen uit 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 ... 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.

  • Wanneer men in de voorwaarden van het probleem (formule [3]) de ongelijkheid ≥ vervangt door gelijkheid:
ontstaat het set partition problem: nu mag ieder element uit maar door een enkele verzameling uit worden overdekt. Dat wil zeggen dat de overdekking een partitie van 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 kan overdekt worden. Het probleem is dan: selecteer deelverzamelingen uit , 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 een gewicht is toegekend: zodanig dat het totale gewicht van de elementen die ze overdekken zo groot mogelijk is.[2]