Etwas Hintergrund. Das obige Problem ist das Rucksackproblem mit Einschränkungen. Die effizienteste Rucksack-Problemlösung mit oder ohne Einschränkungen kann in pseudopolynomialer Zeit gelöst werden, immer noch NP-Hard. Für einige Variationen siehe https://en.wikipedia.org/wiki/Knapsack_problem#Definition . Die erste Einschränkung bei dieser Variante besteht darin, dass der Wert von Gegenständen (Bällen), die in den Rucksack (Mülleimer) gelegt werden sollen, keine Rolle spielt. Das Problem beschränkt sich dann auf die Zeit, die benötigt wird, um die Gegenstände in den Rucksack zu legen. Das ursprüngliche Problem erfordert, dass die wertvollsten Gegenstände in möglichst kurzer Zeit abgelegt werden. Eine weitere Einschränkung bei dieser Version ist, dass die Gewichte und alle anderen Argumente Ganzzahlen sind. Und die Einschränkung des Interesses ist, dass die Gewichtewj Teilen wj+1 für alle . Hinweis: Das Fractional-Knapsack-Problem kann in Polynomialzeit gelöst werden, bietet jedoch nicht die praktischste Lösung für das ursprüngliche Problem. Dieses Problem verwendet ganze Zahlen, die sich gleichmäßig teilen (keine rationalen Lösungen). Vielleicht sehen, was die große Sache mit dem Rucksackproblem ist? .j
Die Hauptfrage sollte vielleicht lauten: " dieses Problem immer noch NP-schwer, wenn durch ein Polynom begrenzt ist, das , da das Problem weniger komplex ist (in P), wenn es begrenzt ist? Der Grund, warum ich dies sage, liegt daran, dass das Problem es kann Es wird gezeigt, dass es in P ist, wenn begrenzt ist, und NP-hart, wenn nicht notwendigerweise teilt. i w j w j w j + 1wjiwjwjwj+1Gleichmäßig (die Gewichte sind einfach zufällig) begrenzen alle Einschränkungen die Komplexität dieses Problems auf diese beiden Bedingungen. Diese Bedingungen (1. das Zufallsgewicht-Rucksackproblem ohne die Artikelwertbeschränkung und 2. das teilbare Gewicht-Rucksackproblem ohne die Artikelwertbeschränkung) negieren sich im Hinblick auf die Verringerung der Komplexität, da die Quotienten der Gewichte selbst zufällig sein können ( besonders wenn unbegrenzt), wodurch exponentielle Zeitberechnungen auferlegt werden (dies wird im folgenden Beispiel gezeigt). Darüber hinaus, da dividieren , an Größe zunimmt exponentiell für jedenw j + 1 w j jwjwj+1wjj. Dies liegt daran , anstatt zufällig gewichteten Elemente des Verwendens (Kugeln , deren Gewichtseinheit alle Einheitsgewichte unter 100 oder 50 oder sogar 10 begrenzt sein kann), bewirkt , dass die Beschränkung , anstatt die Zeitkomplexität von der Anzahl der Ziffern des abzuhängen , das gleiche wie Versuchsteilung, die exponentiell ist.wj
Also ja, das obige Integer-Programm bleibt NP-hart, auch wenn für alle dividiertw j + 1 jwjwj+1j . Und das ist leicht zu beobachten.
Beispiel 1: Es sein=1 und Zweierpotenzen. Durch die Konstante 2 wird das gesamte Problem in quadratischer Zeit gelöst, wie Ihr Beispiel zeigt. Die Gewichte sind nicht zufällig und daher wird die Berechnung effizient gelöst.wp
Beispiel 2: Es seials, wobeidie Primzahl ist, die, so dass. Dies gilt alswj+1wj∗ppjp=2,j=1:p=3,j=2,p=5,j=3,p=7,j=4,...,P,Jwj für alle dividiert . Wir bekommen jedes w j ist das Produkt aller Primzahlen bis j . Die Werte der Einheitsgewichte erhöhen als solche: 1 , 2 , 6 , 30 , 210 , 2310 , 30030 , . .wj+1jwjj. Da esüber den Primzahlsatzeine Schranke gibt ( p j ~ j l o g ( j ) ), da die Quotienten alle Primzahlen sind, erhalten wir die Komplexität NP-Intermediate.1,2,6,30,210,2310,30030,...pjjlog(j)
Beispiel 3: Sei definiert als w j ∗ R p , wobei R p eine zufällig gewählte Primzahl von zwei bis unendlich ist, entsprechend j . Dies gilt für dieses Problem, da w j w j + 1 für alle j teilt. Wir erhalten die ersten 5 Quotienten (zufällig von zwei nach unendlich fallend) als 101 , 2657 , 7 , 3169 , 2wj+1wj∗RpRpjwjwj+1j101,2657,7,3169,2. Wir sehen, dass das Gewicht auch beim 5. Ball elf Stellen hat. Glücklicherweise war der fünfte Quotient zwei und keine Primzahl in der Größenordnung von oder mehr. 10100
Beispiel drei oben ist, was passiert, wenn nicht durch ein Polynom entsprechend i begrenzt ist (zufällige Gewichte) . Die zeitliche Komplexität ist exponentiell, NP-schwer. Addieren Sie für eine gewisse Perspektive einfach alle Gewichte und prüfen Sie, ob sie passen. Es gibt jedoch keine Lösung, um das Problem durch Aufteilen der Gewichte erheblich schneller zu lösen, als jede Untergruppe zu testen, ob es funktioniert. Nach ein paar Dutzend Bällen betreten Sie immer noch das Reich der Billionen von Teilmengen oder Billionen von Ziffern.wji