Die größte Zahl ist die weiche Zahl
Ich behaupte, dass es für jede Instanz Ihres Problems möglich ist, die Instanz unter Verwendung der größten Nummer als einzige weiche Nummer zu lösen, wenn die Instanz lösbar ist (es ist möglich, die Zahlen mit einer weichen Zahl zu partitionieren). Dies ist leicht zu beweisen: Jede Lösung kann in eine Lösung mit der größten Zahl als weicher Zahl geändert werden. Platzieren Sie einfach die Nummer, die derzeit die weiche Nummer ist, in der Partition, die die größte Nummer enthält, und teilen Sie stattdessen die größte Nummer auf die Teile der Partition auf.
Verpackungsproblem
Hier ist ein Problem, das ich das Verpackungsproblem nennen werde:
Die Eingabe besteht aus einer Liste positiver Zahlen ein1, ein2, … , A.k und einer ℓ so dass ℓ ≥ aich für alle ich . Definiere s = 13( ℓ + ∑ki = 1einich). Dann besteht das Problem darin, die Liste voneinichs in drei Teile zu unterteilen, so dass jeder Teil höchstenss.
Ich behaupte, dass das Packungsproblem mit den Eingaben ein1, … , A.k und ℓ Ihrem Problem mit der Eingabeliste ein1, … , A.k, ℓ . Wenn es möglich ist, die Zahlen ein1, … , A.k in drei Gruppen mit jeweils höchstens s zu packen , können Sie ℓ als weiche Zahl verwenden, um jede der Summen auf genau s abzurunden. so haben Sie eine Partition von ein1, … , A.k, ℓ in drei Gruppen von Summens Verwendung einer weichen Zahl. Wenn auf der anderen Seiteein1, … , A.k, ℓ kann in drei Gruppen von Summen- partitioniert wirds unter Verwendung einer weiche Nummer dann kann die Liste in drei Gruppen von Summen- partitioniert wirds unter Verwendungℓ als Weichnummer (durch das Ergebnis aus der vorherige Abschnitt). In diesem Fallerfülltdie Gruppierung dereinich s in drei Teile die Bedingung, dass jeder Teil höchstenss .
Das Verpackungsproblem ohne kleine Stückzahlen
Sprich , dass eine Instanz des Verpackungsproblems „hat keine geringen Mengen“ , wenn für jeden ich , einich> ℓ2 . Ich behaupte, dass Sie das Verpackungsproblem auf das Verpackungsproblem ohne kleine Zahlen reduzieren können.
Nehmen wir an, dass in der Verpackung Probleminstanz ( a1, … , A.k) , ℓ einige einich hat einich≤ ℓ2 . WLOG Angenommen,einkist dieseinich. Dann beanspruche ich die Packprobleminstanz( a1, … , A.k - 1) , ℓ + akentspricht der ursprünglichen Instanz. Beachten Sie, dass der Wertsin beiden Fällen gleich bleibt.
Wenn Sie die Zahlen ein1, … , A.k in drei Gruppen packen können , wobei jede Gruppe höchstens eine Summe s hat, können Sie die Zahlen ein1, … , A.k - 1 in drei Gruppen packen , wobei jede Gruppe höchstens eine Summe hat s .
Nehmen wir andererseits an, Sie können die Zahlen ein1, … , A.k - 1 in drei Gruppen packen , wobei jede Gruppe höchstens s . Berücksichtigen Sie für jede der drei Gruppen den Wert s minus der Summe der Elemente in der Gruppe. Nennen Sie diese Werte e1, e2, e3 ; hier ist eich die Menge an "leerem Raum" in Gruppe ich . Wir wissen, dass e1+ e2+ e3 , der gesamte leere Raum, gleich 3 s - ∑k - 1i = 1einich (Gesamtraum3 s minus verwendeter Raum∑k - 1i = 1einich ). Aber3 s - ∑k - 1i = 1einich= ak+ ℓ nach der Definition vons . Somit haben die drei Gruppen insgesamteink+ ℓ leeren Raum. Dann seiteink< ℓ2 wissen wir, dass der gesamte leere Raum mehr als3 akbeträgt. Nach dem Taubenlochprinzip hat mindestens eine der Gruppeneinkoder mehr Leerzeichen. Somit können wireiner der Gruppen dasElementeinkhinzufügenund am Ende die Zahlenein1, … , A.kin drei Gruppenpacken, wobei jede Gruppe höchstenss.
Um Ihr Problem zu lösen, ist es daher ausreichend, nur das Verpackungsproblem ohne kleine Zahlen zu lösen.
Lemma 1
Lemma Aussage:
Angenommen, wir können ein1, … , A.k in Gruppen 1 und 2 aufteilen, sodass Gruppe 2 eine gerade Anzahl von Elementen hat und die Summe der Elemente in Gruppe 1 im Intervall [ s - ℓ2, s ]. Dann ist es möglich, weiter Partitionsgruppe 2 in zwei Untergruppen 2a und 2bvon denen jede aufweist Summe höchstenss. Beachten Sie, dass die Gruppen 1, 2a und 2b eine Lösung der Instanz des Verpackungsproblems sind.
Hier ist ein Beweis.
Ordnen Sie vorläufig die Hälfte der Elemente der Gruppe 2 der Untergruppe 2a und die andere Hälfte der Untergruppe 2b zu. Erstellen Sie eine Übereinstimmung zwischen den Elementen der beiden Untergruppen. Tauschen Sie diese Paare paarweise zwischen den beiden Gruppen aus. Wenn die Gruppe 2 2 n Elemente enthält, durchläuft dieser Prozess genau n + 1 mögliche Partitionen der Gruppe 2 in die Untergruppen 2a und 2b. Ich behaupte, dass mindestens eine dieser Partitionen beide Untergruppen mit einer Summe von weniger als s .
Sei S2a und S2b die Summe der beiden Untergruppen (wir erlauben diesen Werten, sich zu ändern, wenn sich die Gruppen ändern).
Bei jedem Schritt des obigen Prozesses gewinnt Gruppe 2a ein Element und verliert ein anderes. Da jedes Element einen Wert zwischen ℓ2 undℓkönnen wir schließen, dass sichS2abei jedem Schritt des obigen Prozessesum höchstensℓändertℓ2 .
Auch der Endwert von S2a ist gleich dem Anfangswert von S2b da die Gruppen am Ende des Prozesses vollständig getauscht haben.
Sei A der Mittelwert von S2a und S2b . Beachten Sie, dass dies konstant ist, wenn sich die Gruppen ändern. Wir wissen, dass die Anfangs- und Endwerte von S2a Durchschnitt zu A (da die Anfangs- und Endwerte von S2a den Anfangswerten von S2a und S2b ). Somit muss A zwischen den Anfangs- und Endwerten von S2a . Wenn wir die Gruppen ändern, wird der Wert von S2amacht höchstens Größenschritte ℓ2 von einer Seite vonAzur anderen. Daraus können wir schließen, dass der Wert vonS2airgendwanninnerhalb der Hälfte der maximalen Schrittgröße (ℓ4 ) vonA. DaS2bimmer den gleichen Abstand vonAwieS2a, können wir schließen, dass irgendwann beide SummenS2aundS2binnerhalb vonℓ4 vonA.
3s−ℓ−(S2a+S2b) ist die Summe der Elemente der Gruppe 1; somit ist3s−ℓ−(S2a+S2b)≥s−ℓ2 (durch die Bedingung auf der Summe der Gruppe 1). Neuanordnung haben wir, dass(S2a+S2b)≤2s−ℓ2 . Daher beträgt der Durchschnitt vonS2aundS2bhöchstenss−ℓ4 . Dann zu dem Zeitpunkt, zu dem sowohlS2aals auchS2binnerhalb vonℓ4 vonAwir, dass beide höchstensswie gewünscht sind.
Fall 1: k=3n
Summiere die n kleinsten ai s und auch die n größten ai s.
Wenn das n kleinste ai s mehr als s , kann keine Gruppe n oder mehr Elemente haben (da jede Auswahl von n Elementen dazu führt, dass die Summe zu groß ist). Das Taubenlochprinzip sagt uns jedoch, dass mindestens eine Gruppe mindestens n Elemente hat. Somit gibt es in diesem Fall keine Lösung für die Verpackungsprobleminstanz.
Wenn das n größte ai s höchstens s , dann hat jede Auswahl von n Elementen eine Summe von höchstens s . In diesem Fall löst das einfache Aufteilen der Elemente in drei gleich große Gruppen die Packungsprobleminstanz.
Der einzige verbleibende Fall ist, dass die kleinsten n Elemente höchstens s und die größten n Elemente mehr als s . Wie im Lemma können wir langsam zwischen diesen beiden Mengen wechseln: Beginnen Sie mit einer Gruppe, die mit den kleinsten n Elementen initialisiert wurde, und tauschen Sie die Elemente aus, bis die Gruppe die größten n Elemente hat. Jeder Schritt verschiebt die Summe der Gruppe um höchstens ℓ2 (nach der gleichen Logik wie beim Beweis des Lemmas) und die Summe kreuztirgendwann in diesem Prozessden Werts. Daher istdie Summeentweder unmittelbar vor oder unmittelbar nach dem Überschreiten des Wertesskleiner alssaber höchstens umℓgeringerℓ2 . Mit anderen Worten, irgendwann in diesem Prozess hat die Gruppe eine Summe im Intervall[s−ℓ2,s]. Nehmen Sie diese Gruppe als Gruppe 1 und die verbleibenden2nElemente als Gruppe 2. Das Lemma gilt, sodass wir eine Lösung für die Instanz des Verpackungsproblems finden können.
Fall 2: k=3n+1
Summiere die n+1 kleinsten ai s und auch die n+1 größten ai s.
Wenn die n+1 kleinst ai s Summe auf mehr als s , dann kann keine Gruppe hat n+1 oder mehr Elemente (wie jede Wahl von n+1 Elementen werden in der Summe führen zu groß ist). Das Taubenlochprinzip sagt uns jedoch, dass mindestens eine Gruppe mindestens n+1 Elemente hat. Somit gibt es in diesem Fall keine Lösung für die Verpackungsprobleminstanz.
Wenn das n+1 größte ai s höchstens s , dann hat jede Auswahl von n+1 Elementen eine Summe von höchstens s . In diesem Fall löst das einfache Aufteilen der Elemente in drei Gruppen der Größe n , n und n+1 die Packungsprobleminstanz.
Der einzige verbleibende Fall ist, dass die kleinsten n+1 Elemente höchstens s und die größten n+1 Elemente mehr als s . Wie im vorherigen Fall können wir langsam zwischen diesen beiden Mengen wechseln: Beginnen Sie mit einer Gruppe, die mit den kleinsten n+1 Elementen initialisiert wurde, und tauschen Sie Elemente aus, bis die Gruppe die größten n+1 Elemente hat. Jeder Schritt verschiebt die Summe der Gruppe um höchstens ℓ2 (nach der gleichen Logik wie beim Beweis des Lemmas) und die Summe kreuztirgendwann in diesem Prozessden Werts. Daher istdie Summeentweder unmittelbar vor oder unmittelbar nach dem Überschreiten des Wertesskleiner alssaber höchstens umℓgeringerℓ2 . Mit anderen Worten, irgendwann in diesem Prozess hat die Gruppe eine Summe im Intervall[s−ℓ2,s]. Nehmen Sie diese Gruppe als Gruppe 1 und die verbleibenden2nElemente als Gruppe 2. Das Lemma gilt, sodass wir eine Lösung für die Instanz des Verpackungsproblems finden können.
Fall 3: k=3n+2 erster einfacher Unterfall
Summiere die n kleinsten ai s und die n größten ai s.
Wenn einer der Werte im Intervall [s−ℓ2,s], wenden Sie das Lemma sofort mit dieser Auswahl vonnElementen als Gruppe 1 und den verbleibenden2n+2Elementen als Gruppe 2 an. Dies ermöglicht es uns, eine Lösung für die Instanz des Verpackungsproblems zu finden.
Wenn das n kleinste ai s kleiner als s−ℓ2 und diengrößtenais summieren sich zu mehr alssdann können wir mit dennkleinstenais beginnen und Elemente tauschen, bis wir diengrößtenais erhalten. Bei jedem Schritt bewegt sich die Summe höchstensℓ2 , also haben wir irgendwann in diesem Prozess eine Gruppe vonnElementen, deren Summe im Intervall[s−ℓ2,s]. Nehmen Sie diese Gruppe als Gruppe 1 und die verbleibenden2n+2Elemente als Gruppe 2. Das Lemma gilt, sodass wir eine Lösung für die Instanz des Verpackungsproblems finden können.
Wenn das n kleinste ai s mehr als s , kann keine Gruppe n oder mehr Elemente haben (da jede Auswahl von n Elementen dazu führt, dass die Summe zu groß ist). Das Taubenlochprinzip sagt uns jedoch, dass mindestens eine Gruppe mindestens n+1 Elemente hat. Somit gibt es in diesem Fall keine Lösung für die Verpackungsprobleminstanz.
Der einzige verbleibende Fall ist, dass sowohl das n kleinste als auch das n größte ai s zu weniger als s - ℓ addierens−ℓ2 .
Fall 3: k=3n+2 Sekunden einfacher Unterfall
Summiere die n+2 kleinsten ai s und die n+2 größten ai s.
Wenn einer der Werte im Intervall [s−ℓ2,s], wenden Sie das Lemma sofort mit dieser Auswahl vonn+2Elementen als Gruppe 1 und den verbleibenden2nElementen als Gruppe 2 an. Dies ermöglicht es uns, eine Lösung für die Instanz des Verpackungsproblems zu finden.
Wenn das kleinste n+2ai s kleiner als s−ℓ2 und dien+2größtenais summieren sich zu mehr alssdann können wir mit denn+2kleinstenais beginnen und Elemente tauschen, bis wir dien+2größtenais erhalten. Bei jedem Schritt bewegt sich die Summe höchstensℓ2 , also haben wir irgendwann in diesem Prozess eine Gruppe vonn+2Elementen, deren Summe im Intervall[s−ℓ2,s]. Nehmen Sie diese Gruppe als Gruppe 1 und die verbleibenden2nElemente als Gruppe 2. Das Lemma gilt, sodass wir eine Lösung für die Instanz des Verpackungsproblems finden können.
Wenn das n+2 größte ai s höchstens s , dann hat jede Auswahl von n+2 Elementen eine Summe von höchstens s . In diesem Fall löst das einfache Aufteilen der Elemente in drei Gruppen der Größe n , n+1 und n+1 die Packungsprobleminstanz.
Der einzige verbleibende Fall ist, dass sowohl die n+2 kleinsten als auch die n+2 größten ai s zu mehr als s addieren .
Fall 3: k=3n+2 harter Unterfall
Angenommen, keiner der beiden oben genannten Unterfälle hat die Instanz behandelt. Dann wissen wir folgendes:
- sowohl das n kleinste als auch das n größte ai s addieren sich zu weniger als s−ℓ2 .
- sowohl die n+2 kleinsten als auch die n+2 größten ai s addieren sich zu mehr als s .
Da die n+2 kleinst ai s In der mehr als s , kann keine Gruppe hat n+2 oder mehr Elemente. Dies ist nur möglich, wenn die Gruppen die Größen n , n+1 und n+1 .
Beachten Sie, dass, da die n größten ai s zu weniger als s - ℓ addierens−ℓ2 , es spielt keine Rolle, welche Elemente in der Gruppe der Größen: Diese Gruppe hatsowiesoeine Summe von weniger alss. Natürlich können wir jede Lösung modifizieren, indem wir diengrößtenais in die Gruppe der Größentauschen. Diese Swaps verringern nur die Summen der beiden anderen Gruppen, so dass es nur dann eine Lösung für die Packungsprobleminstanz gibt, wenn es eine Lösung gibt, bei der diengrößtenais eine der Gruppen bilden.
Die vorliegende Aufgabe lautet also einfach: Ist es möglich, die 2n+2 kleinsten ai s in zwei Gruppen der Größe n+1 so dass jede dieser beiden Gruppen höchstens s . WLOG nimmt an, dass die ai s in aufsteigender Reihenfolge sind, so dass die 2n+2 kleinsten ai s a1,…,a2n+2
Sei v der Durchschnitt der n größten ai s. Lassen xi=v−ai für jedes i . Dann ist 3s=ℓ+∑3n+2i=1ai=ℓ+∑2n+2i=1ai+∑3n+2i=2n+2ai=ℓ+∑2n+2i=1(v−xi)+nv=ℓ+(3n+2)v−∑2n+2i=1(xi)=(ℓ−v)+(3n+3)v−∑2n+2i=1(xi) .
Dann ist s=(n+1)v+ℓ−v3−13∑2n+2i=1(xi).
Wenn wir eine Menge I von n+1 Indizes wählen , dann ist die Summe der ai s mit i∈I gleich ∑i∈Iai=∑i∈Iv−xi=(n+1)v−∑i∈Ixi . Ein Satz von Indizes I ist eine gültige Wahl für eine der Gruppen, vorausgesetzt, diese Summe beträgt höchstens s. Mit anderen Worten, unter Verwendung der oben abgeleiteten alternativen Definition von s ist die Bedingung, an der wir interessiert sind, ∑i∈Ixi≥13∑2n+2i=1(xi)−ℓ−v3 . Offensichtlich müssen die verbleibendenn+1IndizesI′={1,…,2n+2}∖Iauch diese Bedingung erfüllen:∑i∈I′xi≥13∑2n+2i=1(xi)−ℓ−v3 . Da∑i∈I′xi=∑2n+2i=1xi−∑i∈Ixi, können wir die zweite Bedingung als∑i∈Ixi≤2umschreiben∑i∈Ixi≤23∑2n+2i=1(xi)+ℓ−v3 .
Daher haben wir dieses Teilproblem mit einer äquivalenten Alternative angepasst: Wir versuchen, eine Menge I von n+1 Indizes unter {1,…,2n+2} so zu wählen, dass 23∑2n+2i=1(xi)+ℓ−v3≥∑i∈Ixi≥13∑2n+2i=1(xi)−ℓ−v3 .
Man beachte, dass ℓ≥v (und daher ℓ−v≥0 ) ist, da v der Durchschnitt einiger ai s ist und ℓ eine Obergrenze für alle ai s ist. Sei X=∑2n+2i=1(xi) . Unsere obige Bedingung kann wie folgt umgeschrieben werden: Wählen Sie eine Menge I von n+1 Indizes unter {1,…,2n+2} so dass∑i∈Ixi im Intervall[cX,(1−c)X] wobeic=13−ℓ−v3X≤13 .
Angenommen, für einige j hat xj einen Wert von mindestens X3 . In diesem Fall besteheIaus dem Indexjund auch aus denn−1Indizes, die den kleinstenxis entsprechen. Wenn diesexizu höchstens(1−c)Xaddieren,erfülltdiese Wahl vonIdie obige Bedingung: Die Summe∑i∈Ixiist mindestensxj≥X3=13X≥cXund höchstens(1−c)X. Somit kann dieser Satz von IndizesIverwendet werden, um eine der Gruppen der Größen+1in einer Lösung für die Packungsprobleminstanzauszuwählen. Auf der anderen Seite, wenn diesexis add mehr als(1−c)Xdann die Instanz nicht gelöst werden kann: eine der beiden Hälften gehörtxjund die Summe dieser Hälfte sein wirdmehr immer als(1−c)X(da es mehr war, selbst wenn wir die kleinsten Elemente mit xj ).
Wir haben also den Fall behandelt, dass einige xj einen Wert von mindestens X3 . Der verbleibende Fall ist, dass jedesxihöchstensX3 . Ordnen Sie dann diexis willkürlich zwei Gruppen zu, 1 und 2. Erstellen Sie eine Übereinstimmung der Elemente der beiden Gruppen und tauschen Sie diese Paare paarweise aus. Im Verlauf dieses Prozesses wird die Summe der Elemente der Gruppe 1 von der Anfangssumme zur Anfangssumme der Elemente der Gruppe 2 verschoben. Mit anderen Worten, die Summe der Gruppe 1 wird den DurchschnittswertXüberschreitenX2xixiX3xiX3X3X2±X6[13X,23X][cX,(1−c)X]xiaiain+1
Fazit
Die obige erschöpfende Fallarbeit kann als Algorithmus verwendet werden, um eine Liste unter Verwendung einer weichen Zahl in drei Gruppen derselben Summe zu unterteilen. Die Fallarbeit wird auch erkennen, wann dies unmöglich ist. Die Laufzeit dieses Algorithmus ist polynomisch.