Pagini recente » Diferente pentru 2-sat intre reviziile 80 si 81 | Istoria paginii utilizator/raressarb | Monitorul de evaluare | Istoria paginii utilizator/ultras86 | Diferente pentru onis-2015/solutii-runda-1 intre reviziile 46 si 45
Nu exista diferente intre titluri.
Diferente intre continut:
Daca avem textul T: aaaaaaa
si un cuvant un dictionar C: aaaaaaa
numarul de aparitii ale lui C in T este 1 dar numarul de aparitii ale unui prefix al lui C in T este <tex>O(L^2^)</tex> unde L este lungimea lui C. Urmarind procedeul de mai sus putem da peste o explozie in vectorii $matches$, dimensiunea lor find de ordinul <tex>O(Nr.aparitii.cuvinte*L^2^)</tex>. Pentru a remedia acest lucru, vom mentine in fiecare nod o valoare booleana care ne spune daca urmarind pointerul _fail_ mai putem ajunge la un nod terminal. Daca aceasta valoare este false, nu mai copiem continutul vectorului _matches_ al nodului curent mai departe.
numarul de aparitii ale lui C in T este 1 dar numarul de aparitii ale unui prefix al lui C in T este <tex>O(L^2^)</tex> unde L este lungimea lui C. Urmarind procedeul de mai sus putem da peste o explozie in vectorii $matches$, dimensiunea lor find de ordinul <tex>O(Nr.aparitii.cuvinte*L^2^)</tex>. Pentru a remedia acest lucru, vom mentine in fiecare nod o valoare booleana care ne spune daca urmarind pointerul _fail_ mai putem ajunge la un nod terminal. Daca aceasta valoare este *false*, nu mai copiem continutul vectorului _matches_ al nodului curent mai departe.
Pana acum avem complexitate <tex>O(N + Nr.cuvinte*L + Nr.aparitii.cuvinte*L)</tex>.
Nu exista diferente intre securitate.
Topicul de forum nu a fost schimbat.