Motivazione : Durante lo sviluppo di strumenti per il versioning dei dati, abbiamo finito per esaminare gli algoritmi per "diff" due gruppi di numeri interi, presentando una sequenza di trasformazioni che portano un gruppo di numeri interi all'altro. Siamo riusciti a ridurre questo problema al seguente problema molto naturale che sembra avere connessioni per modificare la distanza, il raggruppamento tramite scambio e la partizione di stringa minima comune .
Problema : ci viene fornita una stringa, ovvero una sequenza di lettere, e il nostro obiettivo è omogeneizzare al minimo costo. Cioè, vogliamo una sequenza riorganizzata in modo tale che tutte le lettere simili siano una accanto all'altra.
L'unica operazione consentita è quella di raccogliere una sottosequenza di lettere simili e spostarla ovunque, e ciò mi costa 1 unità.
Qualsiasi aiuto che caratterizzi la complessità di questo problema sarebbe molto apprezzato!
Esempio :
- aabcdab: input
- bcd aa ab: dopo aver spostato il primo aa nella posizione subito dopo "d"
- b bcdaaa: dopo aver spostato il trailing b nella prima posizione
Poiché la stringa risultante è omogenea, abbiamo un costo di 2.
Si noti che non siamo vincolati in alcun modo rispetto all'output: fintanto che è omogeneo, non è necessario garantire alcun ordine specifico.