L' entrée est un univers et une famille de sous - ensembles de U , par exemple, F ⊆ 2 U . Nous supposons que les sous - ensembles de F peuvent couvrir U , c. -à- ⋃ E ∈ F E = U .
Une séquence de recouvrement incrémentielle est une séquence de sous-ensembles dans , disons A = { E 1 , E 2 , … , E | A | } , qui satisfait
1) ,
2) chaque nouveau venu a une nouvelle contribution, c'est-à-dire, , ⋃ i - 1 j = 1 E i ⊊ ⋃ i j = 1 E i ;
Le problème est de trouver une séquence de recouvrement incrémentielle de longueur maximale (c'est-à-dire avec un maximum ). Notez qu'une séquence de longueur maximale doit finalement couvrir U , à savoir, ⋃ E ∈ A E = U .
J'ai essayé de trouver un algorithme ou un algorithme approximatif pour trouver la séquence de recouvrement incrémentielle la plus longue. Je me demandais juste ce que cette variante de problème de couverture d'ensemble connue sous le nom. Je vous remercie!
la source
Réponses:
Ici, je montre que le problème est NP-complet.
Nous convertissons un CNF en une instance de votre problème comme suit. Supposons que les variables du CNF sont x i et les clauses sont m C j , où n < m . Soit U = ∪ i ( A i ∪ B i ∪ Z i ) où tous les ensembles de l'union sont complètement disjoints. En fait, A i = { a i , j ∣ x i ∈ C j } ∪ { a in xi m Cj n<m U=∪i(Ai∪Bi∪Zi) et B i ={ b i , j ∣ x i ∈ C j }∪{ b i , 0 }, tandis que Z i est tout ensemble de cardinaliték=2n+1. Notons égalementZ= ∪ i Z i et fixons pour chaque Z i une famille croissante de longueurk à l'intérieur, notée Z i ,Ai={ai,j∣xi∈Cj}∪{ai,0} Bi={bi,j∣xi∈Cj}∪{bi,0} Zi k=2n+1 Z=∪iZi Zi k pourl=1 ..k. Pour chaque variable x i , on ajoute2kensembles à F , chaque ensemble de la forme A i ∪ Z i , l et B i ∪ Z i , l . Pour chaque clause C j , nous ajoutons un ensemble à F , qui contientZ, et pour chaqueélément x i ∈ C j { a i , j }Zi,l l=1..k xi 2k F Ai∪Zi,l Bi∪Zi,l Cj F Z xi∈Cj {ai,j} et pour chaque élément { b i , j } .x¯i∈Cj {bi,j}
Supposons que la formule soit satisfaisable et corrige une affectation satisfaisante. Ensuite, choisissez les ensembles de la forme A i ∪ Z i , l ou B i ∪ Z i , l , selon que x i est vrai ou non. Ce sont n k ensembles incrémentaux. Ajoutez maintenant les m ensembles correspondant aux clauses. Celles-ci continuent également d'augmenter la taille, car les clauses sont satisfaisables. Enfin, nous pouvons même ajouter k plusieurs ensembles (une pour chaque variable) pour faire la couverture de séquence U .k Ai∪Zi,l Bi∪Zi,l xi nk m k U
Supposons maintenant que ensembles soient placés dans une séquence incrémentale. Notez qu'au plus k + 1 ensembles correspondant à x i peuvent être sélectionnés pour chaque x i . Ainsi, s'il n'y a pas d'ensembles de clauses dans la séquence incrémentale, au plus n ( k + 1 ) peut être sélectionné, ce qui est trop peu. Notez que dès qu'un ensemble de clauses est sélectionné, nous pouvons sélectionner au plus deux ensembles correspondant à chaque x i , soit un total d'au plus 2 n ensembles. Par conséquent, nous devons choisir au moinsn(k+1)+m k+1 xi xi n(k+1) xi 2n ensembles de variables avant de sélectionner un ensemble de clauses. Mais comme nous pouvons choisir au plus k + 1 pour chaque x i , cela signifie que pour chacun, nous avons choisi au moins 1 , comme k = 2 n + 1 . Cela détermine la "valeur" de la variable, nous ne pouvons donc choisir que des clauses "vraies".n(k−1) k+1 xi 1 k=2n+1
Mise à jour: modification de la valeur de de n à 2 n + 1, comme l'a souligné Marzio.k n 2n+1
la source
C'est un problème assez naturel ....
Rappel rapide: Dans le problème de regroupement des ensembles, étant donné une famille d'ensembles, trouvez le sous-ensemble maximal d'ensembles, qui respectent une contrainte supplémentaire (par exemple, aucun élément n'est couvert plus de 10 fois, etc.).
la source