Diferente pentru suffix-array-liniar intre reviziile #73 si #74

Nu exista diferente intre titluri.

Diferente intre continut:

Impartim sirul in bucati de cate trei astfel:
{$[0, 1, 2][3, 4, 5][6, 7, 8][9,10,11]$}
{$[y  a  b][b  a  d][a  b  b][a  d  o]$|
{$[y  a  b][b  a  d][a  b  b][a  d  o]$}
(in functie de restul impartirii la 3 al pozitiilor sufixelor)
h3. Pas 1:
Sortam sufixele de tip 1 si 2
Pentru aceasta formam sirul
R = abbadabbado0bbadabbado00
{$R = abbadabbado0bbadabbado00$}
ale carui caractere sunt tripletele:
R = [abb][ada][bba][do0][bba][dab][bad][o00] (fiecare grup de 3 litere este luat ca un singur caracter)
{$R = [abb][ada][bba][do0][bba][dab][bad][o00]$} (fiecare grup de 3 litere este luat ca un singur caracter)
Mai explicit vom imparti sirul S in felul urmator:
( [C1 C2 C3][C4 C5 C6][C7 C8 C9] ... ) + ( [C2 C3 C4][C5 C6 C7][C8 C9 C10] ... ) (unde A + B este concatenarea sirului A cu sirul B)
{$( [C1 C2 C3][C4 C5 C6][C7 C8 C9] ... )$} + {$( [C2 C3 C4][C5 C6 C7][C8 C9 C10] ... )$} (unde {$A$} + {$B$} este concatenarea sirului {$A$} cu sirul {$B$})
Pentru Ci cu i mai mare ca lungimea sirului Ci este un caracter minim din punct de vedere lexicografic cu celelalte caractere (in cazul de fata 0).
Pentru codificarea tripletelor in caractere, se poate folosi radix sort pentru sortarea tripletelor si apoi inlocuirea fiecaruia cu numarul care corespunde cu pozitia lui in sortare (se normalizeaza). Se obtine astfel sirul R'.
**Exemplu:**
R' = { 1, 2, 4, 6, 4, 5, 3, 7 }
SR' = {0, 1, 6, 7, 2, 5, 3, 7 }
{$R' = { 1, 2, 4, 6, 4, 5, 3, 7 }$}
{$SR' = {0, 1, 6, 7, 2, 5, 3, 7 }$}
h3. Pas 2:
Sortam sufixele de tip 0.
Pentru aceasta ne folosim de rezultatele obtinute la pasul anterior.
Orice sufix de tip 0 poate fi considerat ca o pereche (caracter, sufix de tip 1): S0,i = Ci + S1,i+1
Orice sufix de tip 0 poate fi considerat ca o pereche (caracter, sufix de tip 1): {$S[~0,i~]$} = [$C{~i~}$] + {$S{~1,i+1~}$}
Se poate folosi radix sort pentru a sorta aceste perechi.
h3. Pas 3:
Interclasam cei doi vectori sortati de sufixe. Avem doua cazuri la comparare. Acestea pot fi reduse la compararea sufixelor de tip 1 cu sufixe de tip 2 astfel:
# sufix de tip 0 (Si) cu sufix de tip 1 (Sj) -> (caracter, sufix de tip 1) - (caracter, sufix de tip 2) : (Ci + S1,i+1) - (Cj + S2,j+1)
# sufix de tip {$0$} ({$S{~i~}$}) cu sufix de tip {$1$} ({$S[~j~]$}) -> (caracter, sufix de tip {$1$}) - (caracter, sufix de tip {$2$}) : ({$C{~i~}$} + {$S{~1,i+1~}$}) - ({$C{~j~}$} + {$S{~2,j+1~}$})
# sufix de tip 0 (Si) cu sufix de tip 2 (Sj) -> (caracter, caracter, sufix de tip 2) - (caracter, caracter, sufix de tip 1) : (Ci + Ci+1 + S2,i+2) - (Cj + Cj+1 + S1,j+2)
h2. Analiza complexitatii:

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.