Diferente pentru siruri-de-sufixe intre reviziile #13 si #12

Nu exista diferente intre titluri.

Diferente intre continut:

Dat fiind un string $A$ = $a{~0~}a{~1~}...a{~n-1~}$, notam cu $A{~i~}$ = $a{~i~}a{~i+1~}...a{~n-1~}$ sufixul lui $A$ care incepe la pozitia $i$. Fie $n$ = lungimea lui $A$. Trie-ul de sufixe este format prin comprimarea tuturor sufixelor $A{~1~}...A{~n-11~}$ Intr-un trie, ca in figura de mai jos.
Trie-ul de sufixe corespunzator stringului $abac$ este:
p=. !siruri-de-sufixe?fig01v.png!
p=. !siruri-de-sufixe?fig01.png!
Operatiile pe aceasta structura se realizeaza extrem de usor:
Pentru a trece de la pasul $k$ la pasul $k+1$ se concateneaza toate secventele $A{~i~}^k^$ cu $A{~i+2^k^~}^ k^$, obtinandu-se astfel substringurile de lungime $2k+1$. Pentru stabilirea ordinii se folosesc informatiile obtinute la pasul anterior. Pentru fiecare indice $i$ se pastreaza o pereche de intregi formata din $P{~(k,i)~}$ si $P{~(k,i+2^k^)~}$. Nu trebuie sa ne preocupe faptul ca $i+2k$ poate pica in afara sirului, deoarece vom completa sirul cu pseudocaracterul {@$@}, despre care vom considera ca este lexicografic mai mic decat oricare alt caracter. In urma sortarii, perechile vor fi aranjate conform ordinii lexicografice a substringurilor de lungime $2k+1$ corespunzatoare. Un ultim lucru care mai trebuie notat este ca la un anumit pas $k$, pot exista doua (sau mai multe) substringuri $A{~i~}^k^$ = $A{~j~}^k^$, iar acestea trebuie etichetate identic ({$P{~(k,i)~}$} trebuie sa fie egal cu {$P{~(k,j)~}$}). O imagine spune mai mult decat o mie de cuvinte:
p=. !siruri-de-sufixe?fig02.png!
|_. b |_. o |_. b |_. o |_. c |_. e |_. l |
Pasul 0:
p=. !siruri-de-sufixe?fig03.png!
|_. $0$ |_. $4$ |_. $0$ |_. $4$ |_. $1$ |_. $2$ |_. $3$ |
| b | o | b | o | c | e | l |
Pasul 1:
p=. !siruri-de-sufixe?fig04.png!
|_. $0$ |_. $4$ |_. $0$ |_. $5$ |_. $1$ |_. $2$ |_. $3$ |
| b | o | b | o | c | e | l |
| o | b | o | c | e | l | {@$@} |
Pasul 2:
p=. !siruri-de-sufixe?fig05.png!
|_. $0$ |_. $5$ |_. $1$ |_. $6$ |_. $2$ |_. $3$ |_. $4$ |
| b | o | b | o | c | e | l |
| o | b | o | c | e | l | {@$@} |
| b | o | c | e | l | {@$@} | {@$@} |
| o | c | e | l | {@$@} | {@$@} | {@$@} |
Pasul 3:
Pasul 2:
p=. !siruri-de-sufixe?fig06.png!
|_. $0$ |_. $5$ |_. $1$ |_. $6$ |_. $2$ |_. $3$ |_. $4$ |
| b | o | b | o | c | e | l |
| o | b | o | c | e | l | {@$@} |
| b | o | c | e | l | {@$@} | {@$@} |
| o | c | e | l | {@$@} | {@$@} | {@$@} |
| c | e | l | {@$@} | {@$@} | {@$@} | {@$@} |
| e | l | {@$@} | {@$@} | {@$@} | {@$@} | {@$@} |
| l | {@$@} | {@$@} | {@$@} | {@$@} | {@$@} | {@$@} |
| {@$@} | {@$@} | {@$@} | {@$@} | {@$@} | {@$@} | {@$@} |
Iata un pseudocod ce sugereaza pasii principali ce trebuie urmati:

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.