Esiste un algoritmo per generare tutte le possibili combinazioni di stringhe di una stringa (sequenza DNA) con un numero determinato di posizioni massime consentite che possono variare (errore massimo , massima distanza di Hamming)?Ottenere tutte le combinazioni di stringhe in base alla distanza massima di Hamming (numero di disallineamenti) in Java
L'alfabeto è {A, C, T, G}.
Esempio per una stringa AGCC
e il numero massimo dei disallineamenti 2
:
Hamming distance is 0
{AGCC}
Hamming distance is 1
{CGCC, TGCC, GGCC, AACC, ACCC, ATCC, AGAC, AGTC, ..., AGCG}
Hamming distance is 2
{?}
Un possibile approccio sarebbe quello di generare un insieme di tutte le permutazioni di una stringa, scorrere su di essi e rimuovere tutte le stringhe con maggiore Hamming distanza che dovrebbe essere.
Questo approccio è molto ressource-mangiare, da una data stringa di 20 caratteri e la massima distanza di Hamming di 5.
c'è un altro, più efficienti approcahes/implementazioni per questo?
chiama in modo ricorsivo la funzione che genera combinazioni per la distanza 1 per tutti i valori restituiti e inseriti nel set per evitare duplicazioni –
Grazie, proverò anche questo tipo di soluzione. –