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 icinD=∑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⊆SK∑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≤D0≤k≤Kk≤m≤nmax d ϕ(d,d,K,n)
ϕ(d1,d2,k,m)=max{∑i∈Mwi(ci/d1−1) : M⊆[m],|M|=k,∑i∈Mci=d2}.
maxdϕ(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
ϕ(d1,d2,k,m)=max{ϕ(d1,d2−cm,k−1,m−1)+wm(cm/d1−1)ϕ(d1,d2,k,m−1).
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)nD □
Corollaire. À moins que P = NP, toute réduction montrant la dureté NP se réduira aux cas où n'est pas polynomial dans .nDn
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=ciiMk