L'ensemble est donné. Pour chaque élément , nous avons le poids et le coût . Le but est de trouver le sous-ensemble de taille qui maximise la fonction objectif suivante: .e i w i > 0 c i > 0 M k ∑ e
Le problème est-il NP-difficile?
Puisque la fonction objectif semble étrange, il est utile d'expliquer une application de la fonction objectif.
Supposons que nous ayons n articles à et qu'il y ait copies de chaque objet dans notre inventaire. Nous avons quelques clients et ils sont intéressés par ces objets en proportion de leur poids , ce qui signifie que l'objet avec le plus grand est plus populaire. Nous avons un système de vente en ligne et nous devons répondre correctement aux demandes de nos clients. Nous ne pouvons pas reconnaître les objets par leurs formes (ils se ressemblent tous!). Mais nous avons un classificateur pour les trouver. Chaque classificateur peut être utilisé pour détecter des copies d'un objet. Nous visons à exécuter k classifier afin de maximiser la satisfaction de nos clients.c i e i w i w i
PS: Il peut être utile de penser au cas où pour tout ; cependant, je ne suis pas sûr. [ J'avais tort à ce sujet! C'est en P par cette hypothèse ]i ≤ n
la source
Réponses:
La réponse ci-dessous observe qu'un cas particulier du problème est résoluble en temps polynomial. Cela ne répond pas entièrement à la question dans le message, mais peut donner un aperçu de ce qui pourrait être nécessaire pour une preuve de dureté NP, et peut susciter un intérêt supplémentaire pour le message ...
Observation. Le problème dans la publication a un algorithme qui, étant donné toute instance où chaque est un entier, s'exécute en polynôme temporel en et . n D = ∑ i c ici n D=∑ici
Croquis de preuve. Fixez toute entrée où et (WLOG) . En reformulant légèrement le problème, le but est de trouver de taille maximisant .w , c ∈ R n + S = { 1 , 2 , … , n } M ⊆ S K ∑ i ∈ M w i c i(S,w,c,K) w,c∈Rn+ S={1,2,…,n} M⊆S K ∑i∈Mwici∑i∈Mci−∑i∈Mwi
Considérez le programme dynamique suivant. Pour tout entier avec , et , définissez La solution souhaitée est .0 ≤ d 1 ≤ d 2 ≤ D 0 ≤ k ≤ K k ≤ m ≤ n ϕ ( d 1 , d 2 , k , m ) = max {(d1,d2,k,m) 0≤d1≤d2≤D 0≤k≤K k≤m≤n max d ϕ(d,d,K,n)
En partitionnant les solutions possibles pour entre celles qui contiennent et celles qui n'en contiennent pas, nous obtenons la récurrence Nous quittons les cas limites comme un exercice.m ϕ ( d 1 , d 2 , k , m ) = max {ϕ(d1,d2,k,m) m
Le nombre de sous - problèmes est , et pour chacun du côté droit de la récurrence peut être évaluée en temps constant, de sorte que les pistes de l' algorithme en temps polynomial en et . n D ◻O(n2D2) n D □
Corollaire. À moins que P = NP, toute réduction montrant la dureté NP se réduira aux cas où n'est pas polynomial dans .nD n
Remarque. Sauf erreur, il existe également un PTAS pour le problème dans le message, basé sur l'arrondi des puis en utilisant la programmation dynamique. Cependant, l'existence d'un PTAS n'a aucune incidence directe sur la question de savoir si le problème est NP-difficile, comme demandé dans la publication.wi
Je suis également curieux --- est-ce que quelqu'un sait si le cas spécial où (pour chaque ) a un algorithme poly-temps? (EDIT: c'est le cas, selon le commentaire de Willard Zhan, cela semble être optimisé en prenant pour contenir les plus grands éléments.) i M kwi=ci i M k
la source
Vous vous interrogez sur la maximisation d'une fonction sans aucune restriction?
C'est vraiment simple. Si M est le plus grand ensemble, alors c'est la meilleure solution. Pas besoin de calculer quoi que ce soit.
Ce problème semble similaire au problème du sac à dos, qui est d'ailleurs NP.
la source