sto cercando un algoritmo per risolvere, o almeno un nome proprio per il seguente problema:Minimal unione insieme bitstring con turni algoritmo
Ho una serie B di stringhe di bit. L'algoritmo dovrebbe trovare un minimo (definito come "minor quantità di bit aventi SET") stringa di bit S tale che:
Per tutti b in B, esiste uno spostamento N (in ℤ) tale che
(S << N) & b == b
.
Se aiuta, ogni b si inserisce in una parola della macchina, e | B | è dell'ordine di un paio di centinaia.
credo che possiamo supporre (senza perdita di generalità) che l'LSB di S e ogni b è 1.
Questa mi sembra una sorta di multiple sequence-alignment problema.
se possiamo trovare ogni N i per ogni b i in B (i = 1 .. | B |), sembra che S è solo il bit a bit o tutto (b i >>N i).
mia intuizione è, il primo passo è quello di rimuovere ogni b da B per i quali esiste un'altra stringa di bit c in B e certo spostamento M tale che b & (c << M) == b
. Qual'è il prossimo?
L'importo del turno che si trova in ℤ è interessante, vuol dire che uno spostamento a sinistra negativo funge da spostamento verso destra? – harold
Penso che questo sia uguale a ["Short supersequence common problem"] (https://en.wikipedia.org/wiki/Shortest_common_supersequence_problem) per un insieme di stringhe. In generale è NP-Hard, ma per il tuo caso particolare non dovrebbe essere troppo difficile risolverlo. –
@harold Sì, i turni a sinistra negativi funzionano come turni a destra. – AlliedEnvy