Qual è la variante di questo problema di set cover noto come?


12

Input è un universo U e una famiglia di sottoinsiemi di U , ad esempio, F2U . Assumiamo che i sottoinsiemi F possono coprire U , cioè, EFE=U .

Una sequenza di copertura incrementale è una sequenza di sottoinsiemi in F , diciamo A={E1,E2,,E|A|} , quello soddisfa

1) EA,EF ,

i>1j=1i1Eij=1iEi

Il problema è trovare una sequenza di copertura incrementale della lunghezza massima (ovvero, con il massimo ). Si noti che una sequenza di lunghezza massima deve infine coprire , cioè, .|A|UEAE=U

Ho tentato di trovare un algoritmo o un algoritmo approssimativo per trovare la sequenza di copertura incrementale più lunga. Mi stavo solo chiedendo come fosse conosciuta questa variante del problema di set cover. Grazie!


Hai bisogno della tua famiglia di sottoinsiemi per coprire l'universo ? Perché, ovviamente, è possibile che si verifichi un problema con la copertura del set più difficile poiché si sta cercando una copertura del set con proprietà aggiuntive. In altre parole, impostare la copertura si riduce al problema. Nella wiki di set cover sono presenti anche i risultati di innapproximability per set cover. AU
Harry,

1
Solo un'osservazione (troppo piccola per essere una risposta): quando i tuoi sottoinsiemi hanno la dimensione due, allora quello che stai cercando è essenzialmente una foresta che si estende.
David Eppstein,

Probabilmente non è nuovo per l'OP, ma qui ci sono alcune osservazioni. (1) Il valore ottimale è sempre al massimo | U |. Se il valore ottimale è uguale a | U | o no può essere deciso in modo efficiente dall'algoritmo avido che cerca di ridurre al minimo il numero di elementi coperti. (2) Lo stesso algoritmo avido funziona anche se tutti gli insiemi in F sono della taglia due, vedi il commento di David Eppstein. (3) Lo stesso algoritmo avido non funziona in generale (sospiro). Un controesempio: F = {{1,2,3}, {1,4,5,6}, {2,4,5,6}, {3,4,5,6}}.
Tsuyoshi Ito,

1
Il problema in realtà non sembra affatto un problema di copertura impostato ... Più come un ibrido tra corrispondenza e corrispondenza indotta nei grafici bipartiti. Una buona riformulazione equivalente è che una famiglia è cattiva se nessun elemento è coperto esattamente da un insieme nella famiglia. Il problema è trovare una sottofamiglia più grande di tale che non abbia una sottofamiglia negativa. AFA
daniello,

1
@Neal Young non è male perché è coperto esattamente da un set (ovvero ). Fb{a,b}
daniello,

Risposte:


4

Qui mostro che il problema è NP-completo.

Convertiamo un CNF in un'istanza del tuo problema come segue. Supponiamo che le variabili del CNF siano e che le clausole siano , dove . Lascia cui tutti i set nell'unione sono completamente disgiunti. In effetti, e , mentre è un insieme di cardinalità . anche e fissa per ogni una famiglia crescente di lunghezza al suo interno, indicata da pern xim Cjn<mU=i(AiBiZi)Ai={ai,jxiCj}{ai,0}Bi={bi,jxiCj}{bi,0}Zik=2n+1Z=iZiZikZi,ll=1..k . Per ogni variabile , aggiungiamo set a , ogni set del modulo e . Per ogni clausola , aggiungiamo un set a , che contiene , e per ogni elemento e per ogni elemento .xi2kFAiZi,lBiZi,lCjFZxiCj{ai,j}x¯iCj{bi,j}

Supponiamo che la formula sia soddisfacente e fissi un compito soddisfacente. Quindi scegli i set di del modulo o , a seconda che sia vero o meno. Questi sono set incrementali. Ora aggiungi i set corrispondenti alle clausole. Anche questi continuano ad aumentare le dimensioni, in quanto le clausole sono soddisfacenti. Infine, si può anche aggiungere più insiemi (uno per ogni variabile) per fare la copertina sequenza .kAiZi,lBiZi,lxinkmkU

Supponiamo ora che set siano inseriti in una sequenza incrementale. Si noti che è possibile selezionare al massimo set corrispondenti a per ogni . Pertanto, se non ci sono insiemi di clausole nella sequenza incrementale, è possibile selezionare al massimo , che è troppo pochi. Si noti che non appena viene selezionato un set di clausole, possiamo scegliere al massimo due set corrispondenti a ciascun , per un totale di massimo set. Pertanto, dobbiamo selezionare almeno set di variabili prima di scegliere qualsiasi set di clausole. Ma poiché possiamo scegliere al massimo per ogni , ciò significa che per ciascuno di essi abbiamo scelto almenon(k+1)+mk+1xixin(k+1)xi2nn(k1)k+1xi1 , come . Questo determina il "valore" della variabile, quindi possiamo scegliere solo clausole "vere".k=2n+1

Aggiornamento: modificato il valore di da a come sottolineato da Marzio.kn2n+1


1
Un chiarimento: ho verificato rapidamente la costruzione per la formula insoddisfacente ( ) ma sembra che possiamo costruire una sequenza di di aumentando set di . Probabilmente commetto un errore: abbiamo ? x1¬x1n=k=1,m=2n(k+1)+m=4FF={{a1,0,a1,1,a1,2,z1},{b1,0,b1,1,b1,2,z1},{a1,1,z1},{b1,2,z1}}
Marzio De Biasi,

Conoscendo te stesso e me stesso, sono sicuro che l'errore sia mio ... Penso che dovremmo ottenere , ma ovviamente è ancora un problema. OK, vedo dove ho fatto l'errore, lo risolvo in un minuto, grazie! F={{a1,0,a1,1,z1},{b1,0,b1,2,z1},{a1,1,z1},{b1,2,z1}}
domotorp,

Ok, lo guarderò domani! Solo una nota, puoi scrivere (in un commento) che cosa è per e qual è il "valore target" per la lunghezza della sequenza di copertura (è k)? Perché, nella risposta modificata si imposta prima , quindi si parla di insiemi vengono inseriti in una sequenza incrementale ; è corretto (non ho ancora provato la riduzione)? Fxi¬xik=2n+1n(k+1)+m=2n2+2n+m
Marzio De Biasi,

F={{a1,0,a1,1,z1,},{a1,0,a1,1,z1,z2},{a1,0,a1,1,z1,z2,z3},{b1,0,b1,2,z1},{b1,0,b1,2,z1,z2},{b1,0,b1,2,z1,z2,z3},{a1,1,z1,z2,z3},{b1,2,z1,z2,z3}}
domotorp

Penso che questo sia corretto come , ma abbiamo solo sequenze incrementali di lunghezza . n(k+1)+m=65
domotorp,

0

Questo è un problema di impacchettamento sotto il vincolo che per la soluzione , per qualsiasi sottoinsieme , abbiamo che c'è sempre un elemento in , che viene coperto esattamente una volta.ABAXBX

Prova: data una soluzione al tuo problema, ha immediatamente questa proprietà. In effetti, se è la soluzione ottimale al tuo problema, allora considera un sottoinsieme di questi insiemi, e supponi che sia l'ultimo insieme in questa sequenza che appare in . Dalla proprietà richiesta che la soluzione è incrementale, ne consegue che copre un elemento che nessun set precedente copre, il che implica la proprietà di cui sopra.E1,,EmBEiBEi

Per quanto riguarda l'altra direzione, è anche facile. Inizia dalla soluzione , trova l'elemento coperto esattamente una volta, impostalo come l'ultimo set della sequenza, rimuovi questo set e ripeti. QED.A


Questo è un problema abbastanza naturale ....


Promemoria rapido: nel problema dell'imballaggio degli insiemi, data una famiglia di insiemi, trova il sottoinsieme massimo di insiemi, che soddisfa alcuni vincoli aggiuntivi (ad esempio, nessun elemento viene coperto più di 10 volte, ecc.).


Questa risposta sta solo provando che la domanda è naturale o c'è qualcos'altro che rivendichi?
domotorp,

Lo sta affermando in un modo più semplice. No?
Sariel Har-Peled,

Sì, sono d'accordo.
domotorp,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.