Finden Sie die maximale Anzahl von Paaren in einer Liste von Paaren


Mathochist

Ich habe eine Liste von Paaren, die ich aus bestimmten Zahlen generiert habe. Meine Frage bezieht sich nicht darauf, wie meine Paare berechnet werden, wie ich das herausgefunden habe, sondern auf die Maximierung der insgesamt möglichen Anzahl von Paaren.
Beispielsweise:

[1,3,7,19,13,21] 

ergibt sich

{1:[19,13,21],  
 3:[7,19],  
 7:[3,19,13],  
 19:[1,3,7,21],  
 13:[1,7,21],  
 21:[1,19,13]}  

1 kann mit 19, 13 oder 21 gepaart werden. 3 kann mit 7 oder 19 gepaart werden, und so weiter. Mein Ziel ist es, die einzigartige Paarung so zu maximieren, dass ich ohne Paar am wenigsten Punkte übrig habe. In diesem Fall können Sie 1-13, 3-7 und 19-21 haben, was 0 Reste ergibt. Du könntest aber auch 1-19, 7-13 machen, was 3 und 21 ohne Partner übrig lässt.

Gibt es einen Algorithmus, der dieses Problem schon einmal behandelt hat? Ich dachte darüber nach, sie in ein Diagramm einzufügen und zu versuchen, den größten Hamilton-Pfad zu finden, aber das scheint praktisch unmöglich zu sein. Ich mache dies in Python, also habe ich Wörterbücher und Listen, die ich als Container verwendet habe.

Bearbeiten: Die Bedingungen dafür, ob eine Zahl gepaart werden kann, ist, ob sie mit dem Paar ein bestimmtes Muster bilden. Bei zwei Zahlen x und y folgen sie diesem Muster bis x == y oder es dauert ewig. Wenn x < y, y = y - x und x = 2 * x. Dann geht es wieder usw...

Miriam Farber

Das Problem, das Sie beschreiben, besteht darin, das maximale Matching in einem Graphen zu finden (in Ihrem Beispiel ist if imit jdann jauch mit gepaart i, sodass Sie sie durch eine Kante verbinden können). Das folgende Python-Paket sowie dieser Code enthalten relevante Implementierungen.

Verwandte Artikel


Maximale Anzahl von Paaren

Lerner Ich muss die maximale Anzahl von Paaren von Einsen und Nullen herausfinden, die durch einfaches Ändern einer einzelnen Zahl in einem bestimmten Array gefunden werden können. Beispielsweise: Wenn mein Eingang ist {1,0,0,1,0,0}, hier an der Indexposition

Entfernen Sie Duplikate von Paaren in einer Liste

SergeantSalty Ich bin mit der nubFunktion in Listen vertraut, die Zahlen, Zeichen oder Zeichenfolgen enthalten. Kann mir jemand erklären, wie ich die nubFunktion Data.Listin einer Liste von Paaren verwenden kann? Beispiel: [('a', 3),( 'b', 2),('a', 1),('b', 4)

Finden der Häufigkeit von Paarelementen in einer Liste von Paaren

Morteza R. Angenommen, ich habe eine lange Liste dieses Typs: text = [ ['a', 'b'], ['a', 'd'], ['w', 'a'], ['a', 'b'], ... ] Angesichts der ersten Elemente möchte ich ein Wörterbuch erstellen, das die Anzahl der zweiten Elemente anzeigt. Zum Beispiel möchte i

QNAmaker maximale Anzahl von QNA-Paaren

stilllearning Ich erstelle ein großes PDF mit Fragen für Multi-Turn. Ich mache das über den Browser, das Update dauert eine ganze Weile und am Ende heißt es, dass es immer noch im Hintergrund läuft. Um zu überprüfen, wann es fertig ist, habe ich einen API-Anru

Destrukturieren einer Liste von Paaren

Holli In Betracht ziehen .say for (1,2,2).rotor(2=>-1).map( -> ($a, $b) { $a - $b }) was wie erwartet funktioniert. Jedoch, .say for (1,2,2).pairs.rotor(2=>-1).map( -> ($a, $b) { $a.value - $b.value }) wirft Too few positionals passed to '<anon>'; expected 2