Nome di questo problema di riorganizzazione / ordinamento?


10

Ti viene data una matrice di lunghezza . Ogni elemento dell'array appartiene a una delle classi K. Dovresti riorganizzare l'array usando il numero minimo di operazioni di scambio in modo che tutti gli elementi della stessa classe siano sempre raggruppati insieme, cioè formino un sottoarray contiguo. Per esempio: nK
Restano altri tre accordi validi.

[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].

Come si chiama questo problema in letteratura? Esiste un algoritmo efficiente per questo?


1
Non sono sicuro che questo problema abbia un nome, sebbene sia certamente possibile. Non tutti i problemi immaginabili hanno nomi.
Yuval Filmus,

2
In pratica, questo si chiamerebbe raggruppamento . Non sono a conoscenza della terminologia degli algoritmi classici. (È certamente un problema interessante e potenzialmente difficile! Ridurre al minimo il numero di swap ha la sensazione di "trovare la migliore permutazione dei gruppi", che a sua volta si sente NP-difficile-ish.)
Raffaello

Bene ragazzi, grazie per ora. Naturalmente sono interessato a risolvere il problema, ma ho pensato che fosse già stato studiato, quindi chiedevo un riferimento.
Marko Bukal,

Risposte:


6

Nota: è una prova di durezza e penso che ci siano algoritmi pratici come la programmazione di interi, ecc.

Kn1,,nKLm1,,mLni=mj=N

  • K+(N+1)(L1)
  • Kn1,,nKN+1
  • 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+1scambia già, quindi non possiamo), o "
fai

N+1N+1N

1

Ho anche il sospetto che questo sia NP-difficile, ma in assenza di un'idea per una prova, qui ci sono un paio di limiti inferiori rapidamente calcolabili che potrebbero essere utili per verificare l'ottimalità di una soluzione euristica o potare una ricerca diramata .

iniijLiijinijLiiO(n)O(Kn)

  1. LiK=2K
  2. Li

Nel tuo esempio questi limiti danno entrambi 1 (0,5 può essere arrotondato per eccesso in quest'ultimo caso), che è ovviamente sciolto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.