Vereinfachtes Problem der maximalen Diversität

7

Das Problem der maximalen Diversität erfordert die Auswahl von Elementen aus einer Liste von Elementen, sodass die Diversität, die als metrischer Abstand zwischen Elementen definiert ist, maximiert wird.mn

Ich habe ein einfacheres Problem, von dem ich gehofft hatte, es auf einfachere Weise lösen zu können. In meinem Fall habe ich eine Liste von Elementen mit jeweils einem bestimmten nicht eindeutigen Schlüssel. Ich möchte Elemente aus meiner Liste auswählen, damit die maximale Anzahl von Elementen pro Schlüssel minimiert wird .nm

zB wenn meine Liste ist:

('a', 5), ('b', 4), ('c', 2), ('a', 6), ('b', 5)

und wir müssen Elemente wählen , eine optimale Lösung wäre eine Liste, die ein Element für jeden Schlüssel enthält.m=3

Gibt es dafür einen Algorithmus, der einfacher ist als der für das Problem der maximalen Vielfalt?

nbubis
quelle
1
Was hast du versucht? Wo bist du festgefahren? Wir möchten Ihnen nicht nur die Lösung geben. Wir möchten, dass Sie Verständnis gewinnen. Da wir jedoch nicht wissen, was Ihr zugrunde liegendes Problem ist, können wir nicht anfangen, zu helfen. Sehen Sie hier für eine entsprechende Diskussion. Wenn Sie sich nicht sicher sind, wie Sie Ihre Frage verbessern können, fragen Sie im Computer Science Chat nach . Vielleicht möchten Sie auch unsere Referenzfragen lesen .
Raphael
@Raphael - Ich bin kein CS-Major, daher hat mich meine eigene Forschung dazu gebracht, über das Problem der maximalen Vielfalt zu lesen, aber dies scheint ein bisschen übertrieben zu sein. Ich habe einige Heuristiken, an die ich gedacht habe, aber ich denke nicht, dass sie sehr effizient sind. Dies ist ein echtes Problem, auf das ich stoße, keine Aufgabe jeglicher Art.
Nbubis
Wenn es verschiedene Schlüssel gibt, impliziert das Pigeonhole-Prinzip, dass Ihre maximale Diversität mindestens ; und das ist erreichbar. km/.k
Yuval Filmus
@ Yuvalfilmus - Stimmt. Die Frage ist wie.
Nbubis
Eigentlich nehme ich zurück, dass es immer erreichbar ist. Aber es scheint, dass eine gierige Strategie funktionieren sollte.
Yuval Filmus

Antworten:

3

Der folgende Algorithmus sollte funktionieren.

Der Algorithmus läuft in mehreren Runden ab. In jeder Runde sei die Anzahl der verbleibenden Gegenstände. Nehmen Sie einen Gegenstand pro Schlüssel, bis zu Gegenstände, und entfernen Sie diese Gegenstände. Wenn wir Elemente genommen haben, wird der Algorithmus beendet. Andernfalls fahren Sie mit der nächsten Runde fort.m'm'm'

Wir überlassen den Korrektheitsnachweis (oder ein Gegenbeispiel) dem Leser.

Yuval Filmus
quelle
Vielen Dank! Ich fügte meine eigene Antwort hinzu, die die gleiche Lösung in einem einzigen Durchgang ergeben sollte.
Nbubis
3

Wenn ich ein bisschen mehr darüber nachdenke, denke ich, dass ich einen "One-Pass" -Algorithmus habe, um dies zu lösen.

Lass es sein n Artikel mit k Schlüssel, mit nichElemente für jeden Schlüssel. Wir wollen wählenmichnich, so dass mich=m, und das maxmich wird minimiert.

Klar, wenn für alle nich wir haben nich>m/.kwählen wir einfach mich=m/.k. Andernfalls verwenden wir den folgenden Algorithmus:

  1. Zählen Sie die Anzahl der Elemente für jeden Schlüssel (nich) und sortiere sie in aufsteigender Reihenfolge.
  2. Während nichm/.k einstellen mich=nich
  3. Für alle nich>m/.k, wählen mich=m- -j<ichmjk- -ich+1

Dieser Algorithmus sollte sein Ö(n) In der Länge der Liste ist die Annahme, dass die Anzahl der verschiedenen Schlüssel im Vergleich vernachlässigbar ist, vernachlässigbar.

nbubis
quelle