![]() |
Erkennen von Zahlenpaaren
Folgende Problematik stellt sich:
Eingabe:
Ausgabe:
Wie kann ein Lösungansatz aussehen? Bin für jeden Tipp dankbar! |
AW: Erkennen von Zahlenpaaren
Falls es da nicht irgendeine ausgefeilte mathematische Herangehensweise gibt, die mir unbekannt ist, würde ich auf Bruteforce (Erzeugen sämtlicher Permutationen) zurückgreifen. Soll es möglichst performant sein, kannst du auch Backtracking verwenden.
|
AW: Erkennen von Zahlenpaaren
Zitat:
|
AW: Erkennen von Zahlenpaaren
Zitat:
Wenn ich mich nicht ganz täusche, ist das Problem NP-vollständig, d.h. eine "einfache, schnelle" Lösung gibts nicht. Brute-Force ist die wahrscheinlich einfachste Variante, die für kleine Mengen auch kein Problem darstellen sollte. |
AW: Erkennen von Zahlenpaaren
Zitat:
|
AW: Erkennen von Zahlenpaaren
Mhm, auf den ersten Blick sah es nach
![]() EDIT: JasonDX hat recht; das Partitionsproblem sollte sich darauf reduzieren lassen. Eingabe von Partition wird M1, M2 hat zwei Elemente: jeweils die Hälfte der Summe aller Elemente in M1. Ich verstehe das Problem so: finde für jedes Element aus Menge2 eine Summe aus Elementen aus Menge1, sodass kein Element aus Menge1 doppelt verwendet wird (?) Klar ist, dass dann immer alle Elemente von Menge1 benutzt werden müssen, da die Summe der Elemente gleich ist. Was heißt also ein "kurzes Ergebnis"? Es gibt nicht immer ein Ergebnis. Beispiel: M1 = 2, 4, 6 M2 = 3, 9 Es kann unterschiedliche Ergebnisse geben (welches ist hier besser/kürzer?): M1 = 1, 2, 2, 3 M2 = 5, 3 5 = 1 + 2 + 2 und 3 = 3 5 = 2 + 3 und 3 = 2 + 1 |
AW: Erkennen von Zahlenpaaren
Korrigiert mich bitte, aber wenn es hier um Teilmengen (nicht Partitionen) geht, dann ist das doch popelig. ;-)
Also: Gegeben zwei Mengen A und B. Gesucht ist die Menge aller Teilmengen T, sodass für jedes t aus T gilt: Es existiert ein Element b aus B mit b=Summe der Elemente aus t. Beispiel: A = (1,2,3,4). B=(5,7,10) Teilmengen = (1),(2),(3),(4), (1,2),(1,3),(1,4), (2,3),(2,4),(3,4), (1,2,3),(1,2,4),(2,3,4), (1,2,3,4) Die Teilmengen 't', deren Summe entweder 5,7 oder 10 ist, sind fett markiert. Ich muss also nur alle Teilmengen aus A bilden, summieren und schauen, ob der Wert in B vorkommt. Ganz einfach. Dauert nur. Denn es gibt 2^n Teilmengen einer n-elementigen Menge. |
AW: Erkennen von Zahlenpaaren
Zitat:
Ich wäre schon neugierig, was das für ein echtes Problem ist, das lowmax da lösen möchte :stupid: |
AW: Erkennen von Zahlenpaaren
Zitat:
|
AW: Erkennen von Zahlenpaaren
Zitat:
1. Bilde Summen Menge1 und und Menge2 ==> Wenn gleich, mache weiter 2. Nun alle Permutationen aus Menge1 erzeugen und Summen bilden 3. Ist die Summe der Permutation in Menge2 enthalten => Wenn Ja=gültig, wenn Nein dann löschen 4. Nun alle Kombinationen bilden, die auf die Gesamtsumme kommen. ==> Diese Kombinationen markieren 5. Sortieren nach den einfachsten Kombinationen ( Am wenigsten summierende Elemente) Fertig! Kann das funktionieren? Was meint Ihr dazu? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz