Deli in vladaj

Iz E-študij, proste zakladnice študentskega znanja

Skoči na: navigacija, iskanje

tehnika reševanja problemov, kjer glavni problem razbijes na manjše podprobleme, ki jih rešuješ

neodvisno od glavnega, iz njihovih rešitev pa sestaviš rešitev glavnega problema,

V praksi so ti podproblemi ponavadi enaki glavnemu, resujemo jih lahko rekurzivno z enakim algoritmom,

ki kliče samega sebe.


Formula za izračun časovne zahtevnosti glavnega problema pa je:

T(n)=b pri n=1

sicer

a* T(n/c) + f(n),

kjer je funcija f(n) čas razbitja/sestavljanja delnih rešitev skupaj ter je v praksi polinomska oblike

b*n^r, kjer je b pač neka konstanta...


Ker je natačna rešitev rekurivne enačbe T(n) "preveč" natančna, jo lahko opišemo glede na asimptotično

vedenje in sicer a, c in r:

a= število podproblemov ki jih moramo izračunat, c pa število vseh podproblemov... r pa je tista potenca

polinoma za časovni zahtevnost razbitja/sestavljanja.


Pol pa mamo tiste 3 primere(Master theorem):

a<c^r T(n)=O(n^r)---polinomski čas

a=c^r T(n)=O(n^r*logn)---- log-polinomski čas

a>c^r T(n)=O(n^(logc(a)))------eksponentni

Primeri: Quicksort, iskanje k, binarno iskanje, Strauss, Rekurzini DFT

Osebna orodja
Imenski prostori
Različice
Dejanja
navigacija

Tiskanje/izvoz
orodja