40 likes | 173 Views
Løsning – mergeSort (Effektivitet af sortering). Definition af t(n): t(n)= 2t(n) + n. Fx: x 1 , x 2 , x 3 :. x 1 <x 2. t. f. x 1 <x 3. x 1 <x 3. t. t. f. f. x 2 <x 3. x 2 <x 3. x 3 , x 1 , x 2. x 2 , x 1 , x 3. t. t. f. f. x 1 , x 2 , x 3. x 1 , x 3 , x 2. x 2 , x 3 , x 1.
E N D
Løsning – mergeSort(Effektivitet af sortering) Definition af t(n): t(n)= 2t(n) + n
Fx: x1, x2, x3: x1<x2 t f x1<x3 x1<x3 t t f f x2<x3 x2<x3 x3, x1, x2 x2, x1, x3 t t f f x1, x2, x3 x1, x3, x2 x2, x3, x1 x3, x2, x1 Nedre grænse for sortering(ved sammenligning) • Enhver sortering baseret på sammenligning kan beskrives ved et (binært) beslutningstræ. • hver indre knude i træet repræsenterer en sammenligning. • hver sti fra roden til et blad repræsenterer et muligt forløb af sorteringsprocessen. • hvert blad repræsenterer en mulig sorteringsrækkefølge. • træet er ikke fuldt.
Fx: x1, x2, x3 (3! = 6) x1<x2 t f x1<x3 x1<x3 t t f f x2<x3 x2<x3 x3, x1, x2 x2, x1, x3 t t f f x1, x2, x3 x1, x3, x2 x2, x3, x1 x3, x2, x1 Nedre grænse for sortering(ved sammenligning) • Sorterer vi n elementer, er der n! permutationer • Dvs. der er n! blade • Et binært træ med n! blade har mindst dybde log2(n!). (Husk: vi har tidligere vist, at antal blade i et fuldt binært træ af dybde n er 2n-1) • Dvs. antal sammenligninger er mindst log2(n!). • Om n! gælder bl.a.:n! ≥ (n/2)(n/2) (n/2) -- n/2 gange = (n/2)n/2 • Dvs. (da log er voksende, kan vi tage log på begge sider af ulighedstegnet): log2(n!) ≥ log2(n/2)n/2 = (n/2) log2(n/2) = (n/2)(log2n - log22) = 0.5nlog2n – 0.5n = O(nlogn) • Heraf følger, at antal sammenligninger er mindst O(nlogn), og dermed at enhver sammenlignings-sortering har mindst O(nlogn) køretid
Nedre og øvre grænsefor sortering • Vi har altså, at ingen sorteringsalgoritme kan være hurtigere end O(nlog(n)) –nedre grænse. • Samtidig kender vi algoritmer (fx mergeSort), som har denne kompleksitet – øvre grænse. • Dvs. vi kan ikke håbe på bedre kompleksiteter end O(nlog(n)), men vi kan selvfølgelig forbedre konstanter mv. • Kompleksitetsmæssigt er sortering et lukket problem