Suche nach Algorithmus
-
Hallo,
ich bin auf der Suche nach nem Algorithmus...
Und zwar geht es darum, aus ner Menge von Zahlen beliebig viele Zahlen so auszuwählen, dass ihre Summe möglichst nah an einer anderen Zahl liegt.Beispiel:
M = {2;5;7;8;13}
Für n = 19 wäre 13+5=18 die Lösung.Ich hoffe ihr versteht was ich meine
MfG Mathias
-
Hi
Ich formalisiere das mal.
Gegeben:
Entscheidungsproblem:
Gibt es ein
derart, dass
Optimierungsproblem:
Gesucht ist
derart, dass
Das Entscheidungsproblem ist NP-Vollständig.
D.h. grob gesagt, dass kein effizienter Algorithmus bekannt ist um dieses Problem zu lösen. Gleiches gilt für das Optimierungsproblem was genau deiner Aufgabe entspricht.D.h. du kannst dir selbst einen Algorithmus schreiben, der alle Teilmengen durchprobiert. Der wird exponentielle Laufzeit haben und nur für kleine Mengen verwendbar sein aber etwas wesentlich besseres gibt es einfach nicht.
Alternativ gibt es für das Untermengen-Summen-Problem aber auch Approximations-Algorithmen die vielleicht für deine Zwecke reichen könnten.
Google sollte dazu mehr wissen.
Gruß, space
-
Schade dass es dafür keine Lösung gibt.
Teilmengen durchprobieren ist da ja der erste Gedanke, aber wie schon gesagt zu aufwändig.
-
space schrieb:
Ich formalisiere das mal.
Gegeben:
Entscheidungsproblem:
Gibt es ein
derart, dass
Optimierungsproblem:
Gesucht ist
derart, dass
Falsch formalisiert! Das war nicht die Aufgabe.
-
Wie ich solch klugscheißerische Ausrufe ohne Begründung hasse.
Hässliche Marotte die sich da in Foren entwickelt...Dann ersetz eben die zweite Bedinung im Optimierungsproblem durch
Weniger NP-Vollständig wirds dadurch wohl nicht.
EDIT:
Hab grad bemerkt, dass dann die Maximierung keinen Sinn mehr macht.
Also entweder die beiden obigen Bedingungen oder die Umkehrung. D.h. Summe minimieren und von unten mit t beschränken.
-
space schrieb:
Wie ich solch klugscheißerische Ausrufe ohne Begründung hasse.
Hässliche Marotte die sich da in Foren entwickelt...So ärgert sich der, der auf einen Fehler aufmerksam gemacht wurde.
space schrieb:
Dann ersetz eben die zweite Bedinung im Optimierungsproblem durch
Dein EDIT hab ich nicht verstanden, aber das hier ist genau das richtige. Aber ein hätte doch auch gereicht, nicht wahr?
space schrieb:
Weniger NP-Vollständig wirds dadurch wohl nicht.
Ist mir völlig egal.