Sie erhalten ein Array der Länge . Jedes Element des Arrays gehört zu einer der K Klassen. Sie sollen das Array mit minimaler Anzahl von Swap - Operationen neu zu ordnen , so dass alle Elemente aus der gleichen Klasse immer zusammen gruppiert sind, dass sie ein zusammenhängendes Sub - Array bilden ist.
Zum Beispiel:
Drei weitere gültige Vereinbarungen bleiben bestehen.
Wie heißt dieses Problem in der Literatur? Gibt es einen effizienten Algorithmus dafür?
terminology
reference-request
sorting
arrays
Marko Bukal
quelle
quelle
Antworten:
Hinweis: Es ist ein Härtebeweis, und ich denke, es gibt praktische Algorithmen wie Ganzzahlprogrammierung usw.
Wenn eine BIN_PACKING-Instanz gegeben ist, in der Sie Zahlen n 1 , … , n K in L Bins der Größe m 1 , … , m L packen möchten und sichergestellt ist, dass ∑ n i = ∑ m j = N ist , können wir entwerfen eine Instanz Ihres Problems wie folgt:K. n1, … , N.K. L m1,…,mL ∑ni=∑mj=N
quelle
Ich vermute auch, dass dies NP-schwer ist, aber da keine Idee für einen Beweis vorliegt, sind hier einige schnell berechenbare Untergrenzen aufgeführt, die nützlich sein könnten, um die Optimalität einer heuristischen Lösung zu überprüfen oder eine verzweigte Suche zu beschneiden .
In Ihrem Beispiel ergeben diese Grenzen beide 1 (0,5 kann im letzteren Fall aufgerundet werden), was natürlich locker ist.
quelle