Diferente pentru rotatie-lexicografic-minima intre reviziile #6 si #7

Nu exista diferente intre titluri.

Diferente intre continut:

Precizam intai ca atat o solutie O(N*lg^2^N) cat si una O(N*lgN) pot fi obtinute folosind structura de date "siruri de sufixe" [1]. Din pacate aceste solutii nu sunt foarte usor de implementat, iar constanta din notatia O este destul de mare cat sa merite cautarea unei solutii alternative. Vom prezenta in continuare o solutie de complexitate O(N*lgN), mult mai usor de implementat odata ce este inteleasa.
Primul pas pentru obtinerea acestei solutii este folosirea unei strategii de tip "turneu", si anume la fiecare iteratie se pastreaza o lista cu rotatiile care ar putea fi minime. Initial lista va avea toate cele N rotaii, iar de fiecare data se iau rotatiile dou cate dou din list i se elimin cea mai mare dintre cele
dou din punct de vedere lexicografic. Procesul se reia pân când se obine o list cu un singur element,
reprezentând rotaia minim. Cum la fiecare pas numrul de elemente din list se înjumtete, este
uor de vzut c procesul nu se va repeta de mai mult de log2 N ori. Dei la prima vedere acest
algoritm are timpul de rulare O(N2*lg N), vom arat în continuare ca sunt suficiente O(N) comparaii de
caractere per total la fiecare repetare:
Primul pas pentru obtinerea acestei solutii este folosirea unei strategii de tip "turneu", si anume la fiecare iteratie se pastreaza o lista cu rotatiile care ar putea fi minime. Initial lista va avea toate cele N rotatii, iar de fiecare data se iau rotatiile doua cate doua din lista si se elimina cea mai mare dintre cele doua din punct de vedere lexicografic. Procesul se reia pana cand se obtine o lista cu un singur element, reprezentand rotatia minima. Cum la fiecare pas numarul de elemente din lista se injumateste, este usor de vazut ca procesul nu se va repeta de mai mult de [log2 N] ori. Desi la prima vedere acest algoritm are timpul de rulare O(N^2^*lg N), vom arata in continuare ca sunt suficiente O(N) comparatii de caractere per total la fiecare repetare:
Fie R ~i~ si R ~j~ doua rotatii (presupunem fara a restrange generalitatea ca i < j) aflate pe pozitii consecutive in lista, care urmeaza sa fie comparate, una din fiind aleasa pentru eliminare. Vom demonstra in continuare ca este suficienta compararea acestor rotatii folosindu-ne doar de primele j - i caractere.

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.