Complexité du problème de couverture d'intervalle


17

Considérons le problèmeQ suivant Q : On nous donne un entier et k intervalles [ l i , r i ] avec 1 l ir i2 n . On nous donne également 2 n entiers d 1 , , d 2 n0 . La tâche consiste à sélectionner un nombre minimum d'intervalles [ l i , r i ]nk[li,ri]1liri2n2nd1,,d2n0[li,ri]de telle sorte que pour chaque , au moins d i intervalles contenant l'entier i sont sélectionnés.i=1,,2ndii

Il n'est pas difficile de voir que peut être résolu en temps polynomial (voir ci-dessous).Q

Considérons maintenant le problèmeQ légèrement modifié Q 'suivant : L'entrée du problème est la même que précédemment. Cependant, la tâche consiste maintenant à sélectionner un nombre minimum d'intervalles tel que pour chaque , au moins d 2 i - 1 intervalles contenant l'entier 2 i - 1 ou au moins d 2 i intervalles contenant l'entier 2 i sont sélectionnés (avec «ou» nous entendons le ou logique habituel).i=1,,nd2i12i1d2i2i

Ma question: peut-il être résolu en temps polynomial?Q

Voici deux façons de résoudre efficacement:Q

Un algorithme simple et gourmand: balayez les intervalles de gauche à droite et ne sélectionnez que le nombre d'intervalles nécessaire pour «satisfaire» les nombres . Chaque fois qu'il y a un choix entre différents intervalles, choisissez celui (s) avec le point final droit maximal.di

Un programme entier: pour chaque intervalle introduisez une variable de décision x i{ 0 , 1 } avec x i = 1 si l'intervalle est sélectionné. L'objectif est de minimiser x 1 + + x k , soumis aux contraintes j : i [ l j , r j ] x jd i[li,ri]xi{0,1}xi=1x1++xkj:i[lj,rj]xjdi. La matrice de contraintes de ce programme entier a les propriétés consécutives et donc la relaxation de programmation linéaire de ce programme a une solution optimale entière.

Merci pour toutes les astuces, et aussi pour les références!

Réponses:


-1

Chaque instance de Q peut être transformée en une instance du problème de couverture de plusieurs ensembles, où les emplacements sont les intervalles , couvrant une séquence consécutive de points de demande (= entiers d i ).[li,ri]di


3
G=(V1,V2,E)V1V1V2
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.