Articles

GeeksforGeeks

gegeven een universum U van n elementen, een verzameling van subsets van u zeggen S = {S1, S2…,Sm} waar elke subset Si heeft een bijbehorende kosten. Zoek een minimale kostensubcollectie van S die alle elementen van U. omvat

voorbeeld:

Waarom is het nuttig?het was een van Karp ‘ s NP-complete problemen, dat bleek in 1972. Andere toepassingen: randafdekking, vertexafdekking
interessant voorbeeld: IBM vindt computervirussen(wikipedia)
elementen – 5000 bekende virussen
Sets – 9000 substrings van 20 of meer opeenvolgende bytes van virussen, niet gevonden in ‘goede’ code.
Een set cover van 180 werd gevonden. Het volstaat om te zoeken naar deze 180 substrings om het bestaan van bekende computervirussen te verifiëren.

een ander voorbeeld: overweeg dat General Motors een bepaalde hoeveelheid gevarieerde leveringen moet kopen en er zijn leveranciers die verschillende deals aanbieden voor verschillende combinaties van materialen (leverancier a: 2 ton staal + 500 tegels voor $x; leverancier B: 1 ton staal + 2000 tegels voor $y; enz.). Je zou set covering kunnen gebruiken om de beste manier te vinden om alle materialen te krijgen terwijl je de kosten minimaliseert
Source: http://math.mit.edu/~goemans/18434S06/setcover-tamara.pdf

Set Cover is NP-Hard:
er is geen polynoom tijd oplossing beschikbaar voor dit probleem omdat het probleem een bekend NP-Hard probleem is. Er is een polynoom tijd hebzuchtige benaderingsalgoritme, het hebzuchtige algoritme biedt een logn benaderingsalgoritme.

voorbeeld:
laten we het bovenstaande voorbeeld overwegen om hebzuchtig algoritme te begrijpen.

eerste iteratie:
I = {}

de kosten per nieuw element voor S1 = kosten(S1)|/S1 – i/ = 5/3

de kosten per nieuw element voor S2 = kosten(S2)|/S2 – i/ = 10/2

de kosten per nieuw element voor S3 = kosten(S3)|/S3 – i / = 3/4

aangezien S3 een minimumwaarde heeft S3 wordt toegevoegd, wordt i {1,4,3,2}.

tweede iteratie:
I = {1,4,3,2}

de kosten per nieuw element voor S1 = kosten(S1)/|S1 – I| = 5/0
merk op dat S1 geen nieuw element toevoegt aan I.

de kosten per nieuw element voor S2 = kosten(S2)| / S2 – i / = 10/1
merk op dat S2 slechts 5 toevoegt aan I.

het hebzuchtige algoritme biedt de optimale oplossing voor bovenstaand voorbeeld, maar het kan niet altijd een optimale oplossing bieden. Neem het volgende voorbeeld.

bewijs dat het bovenstaande hebzuchtige algoritme logn-benadering is.
laat kiezen is de kosten van een optimale oplossing. Laten we zeggen (k-1) elementen worden behandeld voor een iteratie van boven hebzuchtig algoritme. De kosten van het K ‘ TH element i dat niet is gedekt voor de huidige stap van hebzuchtige algoritme en het is er in OPT. Aangezien hebzuchtige algoritme kiest de meest kosteneffectieve Si, per-element-kosten in de geplukt set moet kleiner zijn dan OPT gedeeld door de resterende elementen. Daarom kosten van k ‘ de element kosten van hebzuchtig algoritme = som van kosten van n elementen

bron: