2017-12-26 14 views
0

Ich bin für einen Algorithmus sucht, die in einer Menge der natürlichen Zahlen, zum Beispiel nehmen:Algorithmen für die natürlichen Zahlen in gleich Haufen zu verteilen

S = {1, 3, 4, 2, 9, 34, 432, 43} 

Dann sie in so gleich Pfähle wie möglich teilen. Die Anzahl der Pfähle ist als n vordefiniert.

Das Ziel ist es, die Summe der Differenz zwischen jedem Stapel und dem niedrigsten Stapel, um den kleinsten zu haben.

Hier kommt ein Beispiel.

Sagen wir, Sie haben:

S = { 1, 2, 2, 3, 1, 2, 3 } 
n = 3 

Dann wurde eine Lösung

N1 = { 1, 2 } 
N2 = { 2, 3 } 
N3 = { 1, 2, 3 } 

Die Summe dieser Pfähle wäre 3 sein könnte, 5 und 6. Der Fehler wäre: (5 - 3) + (6 - 3) = 5.

Der Algorithmus muss die Lösung mit dem niedrigsten Fehler finden.

Jede Hilfe wird geschätzt. Bitte kommentieren Sie, wenn etwas unklar ist.

+1

Was haben Sie bisher versucht? –

+0

Ich habe über eine Art von Handel nachgedacht, wo Sie zwischen den Pfählen handeln, aber ich weiß nicht, wann die Stapel optimiert sind. –

+0

Sie dürfen die Zahlen nicht neu verteilen wie N1 = {1,3} N2 = {1, 3} N3 = {1,2,2}? – rcgldr

Antwort

1

Ich würde argumentieren, dass es keine effiziente Möglichkeit gibt, dieses Problem zu lösen, weil es ein NP-schweres Problem ist.

Beweis:

Lassen Sie uns das Problem bezeichnen Sie als P * vorgeschlagen,

Wir können, indem Sie folgende Bei einer beliebigen Partition Problem P1 die Partition Problem (bekannt NP-hard) in P * reduzieren , wir bitten die Blackbox, die P * löst, um P1 mit N = 2 zu lösen (dh, teile die Menge in 2 Haufen auf, die den Unterschied minimieren).

Wenn die Differenz Rückkehr von der Blackbox Null ist, -> gibt es eine Lösung für P1

Wenn die Differenz Rückkehr von der Blackbox nicht Null ist, -> gibt es keine Lösung für P1 ist

Daher ist P * NP-hart

1

Das klingt wie eine Variante des https://en.m.wikipedia.org/wiki/Bin_packing_problem. Allerdings ist die Größe der Bins nicht gegeben und somit ist es mindestens so hart wie Bin Packing. Somit ist das Problem NP-schwer.

Für eine ungefähre Lösung könnten Sie zum Beispiel die durchschnittliche Behältergröße berechnen und eine Anpassung der Erstanpassung oder der besten Anpassung durchführen, um eine kleine Überverpackung zu ermöglichen.

Verwandte Themen