Name dieses Umordnungs- / Sortierproblems?


10

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: nK
Drei weitere gültige Vereinbarungen bleiben bestehen.

[2,1,3,3,2,2][2,2,2,1,3,3], or[2,1,3,3,2,2][1,2,2,2,3,3], or[2,1,3,3,2,2][3,3,2,2,2,1].

Wie heißt dieses Problem in der Literatur? Gibt es einen effizienten Algorithmus dafür?


1
Ich bin nicht sicher, ob dieses Problem einen Namen hat, obwohl es sicherlich möglich ist. Nicht alle denkbaren Probleme haben Namen.
Yuval Filmus

2
In der Praxis würde dies als Gruppierung bezeichnet . Die Terminologie in der klassischen Algorithmusik ist mir nicht bekannt. (Es ist sicherlich ein interessantes und möglicherweise schwieriges Problem! Das Minimieren der Anzahl von Swaps hat das Gefühl, "die beste Permutation von Gruppen zu finden", was sich wiederum NP-hart anfühlt.)
Raphael

Na Leute, danke fürs Erste. Natürlich bin ich an einer Lösung des Problems interessiert, dachte aber, dass es bereits untersucht wurde, und bat um eine Referenz.
Marko Bukal

Antworten:


6

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:Kn1,,nKLm1,,mLni=mj=N

  • Es gibt Klassen;K+(N+1)(L1)
  • Die ersten Klassen Größe n 1 , ... , n K sind, und jede der übrigen Klassen Größe N + 1 ;;Kn1,,nKN+1
  • Das Array ist in Schlitze der Größe unterteilt: wobei jeder Schlitz der Größe ( N. + 1 ) 2 ist mit N + 1 Klassen gepackt , die zusammenhängend angeordnet sind, und der Rest ist willkürlich angeordnet.
    m1,(N+1)2,m2,(N+1)2,m3,,(N+1)2,mL
    (N+1)2N+1

(N+1)2N


Nm1,,mL(N+1)2(N+1)N+1tauscht bereits, also können wir nicht) oder "schieben" das Ganze eine Position nach links oder rechts (aber dies bedeutet, dass jeder "
geschoben

N+1N+1N

1

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 .

iniijLiijinijLiiO(n)O(Kn)

  1. LiK=2K
  2. Li

In Ihrem Beispiel ergeben diese Grenzen beide 1 (0,5 kann im letzteren Fall aufgerundet werden), was natürlich locker ist.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.