Autor Beitrag
Thorsten83
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 191
Erhaltene Danke: 1



BeitragVerfasst: Di 13.04.10 14:28 
Hey,
mal eine blöde Frage...
Ich hab eine Multimenge von ganzen Zahlen und möchte die so in disjunkte Teilmengen aufteilen, dass die maximale Summe über die Elemente einer Teilmenge minimal wird...

Dachte eigentlich das ginge relativ einfach, indem man die Zahlen absteigend sortiert und dann der Reihe nach jeweils in die Teilmenge einfügt, deren Summe von Elementen minimal ist.

Damit wäre dann aber auch Partition gelöst, was ja wohl eher nicht der Fall ist... :D

Wo liegt der Denkfehler?
Habt ihr ein Beispiel, bei dem das nicht funktioniert?
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Di 13.04.10 14:40 
Beispiel: 1,1,1,2,3 auf zwei Teilmengen. Dein "Sortier-Algorithmus" teilt die drei einser zuerst auf zwei Haufen auf
ausblenden Quelltext
1:
2:
1, 1
1
und fügt dann die zwei in den kleinen Haufen ein
ausblenden Quelltext
1:
2:
1, 1
1, 2

Zuletzt kommt die drei auf den ersten Haufen
ausblenden Quelltext
1:
2:
1, 1, 3 (= 5)
1, 2    (= 3)

Optimal wäre aber
ausblenden Quelltext
1:
2:
1, 1, 2 (=4)
1, 3    (=4)


Edit: Merke grade, dass du absteigend sortieren willst. Ok, ist bei dem Besipiel besser, aber dann nimm halt z.B. 10, 10, 10, 8, 8, 8, 6. Dabei findet dein Verfahren auch nicht das Optimum, da alle drei 10er auf einen Haufen müssen, um zweimal 30 zu bekommen. ;-)

_________________
We are, we were and will not be.
Thorsten83 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 191
Erhaltene Danke: 1



BeitragVerfasst: Di 13.04.10 15:58 
Hey,
danke für die schnelle Antwort :)

Ich wollte aber zuerst die großen Jobs bearbeiten bzw. die großen Zahlen zuweisen, damit wäre die Reihenfolge dann:

{3}, {}
{3}, {2}
{3}, {2, 1}
{3, 1}, {2, 1, 1} <-- Optimum...
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Di 13.04.10 16:21 
Ja, deswegen habe ich zwischendurch meiner Antwort was hinzugefügt. Nimm 10, 10, 10, 8, 8, 8, 6. Eine optimale Aufteilung wäre 10+10+10=30 und 8+8+8+6=30. Dein Algorithmus liefert 10+10+8=28 und 10+8+8+6=32.

_________________
We are, we were and will not be.
Thorsten83 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 191
Erhaltene Danke: 1



BeitragVerfasst: Di 13.04.10 17:39 
Subbi, danke!