0 / 1X36DSA 2005The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Data Structures and Algorithms Petr Felkel Marko Genyk-Berezovskyj DSA
1 / 1X36DSA 2005The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … INTRO Různé algoritmy mají různou složitost
2/ 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … INTRO The complexity of different algorithms varies X36DSA 2005
3 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … The speed... X36DSA 2005 One algorithm (program, method…) is faster than another one. Jeden algoritmus (program, metoda…) je rychlejší než druhý. What does it this sentence mean ?? Co ta věta znamená ??
4 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Asymptotic complexity X36DSA 2005 Každému algoritmu lze jednoznačně přiřadit rostoucí funkci, zvanou asymptotická složitost, která charakterizuje počet operací algoritmu. Čím pomaleji tato funkce roste, tím je algoritmus rychlejší. Each algorithm can be unambiguously assigned a growing function referred to as asymptotic complexity which characterizes the number of operations of the algorithm. The slower the is growth of this function the faster is the algorithm. y x y x
5 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … INTRO Find max and min in the array –1046 min 3 max –1046 min 3 max 3 if (a[i] < min) min = a[i]; if (a[i] > max) max = a[i]; –1046 min 2 max 3 Find min and max in the array — STANDARD X36DSA 2005
6 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … INTRO min = a[0]; max = a[0]; for ( i = 1; i < a.length; i++) { if (a[i] < min) min = a[i]; if (a[i] > max) max = a[i]; } Find min and max in the array — STANDARD – minmax code finished –1046 min 2 max 7 etc... X36DSA 2005
7 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … INTRO Find max and min in the array –1046 min 3 max –1046 min 3 max 3 if (a[i] < a[i+1]) { if ( a[i] < min) min = a[i]; if (a[i+1] > max) max = a[i+1];} –1046 min 2 max 7 Find min and max in the array — FASTER! X36DSA 2005
8 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … INTRO Find max and min in the array –1046 min 3 max 3 if (a[i] < a[i+1]) { if ( a[i] < min) min = a[i]; if (a[i+1] > max) max = a[i+1];} else { if ( a[i] > max) max = a[i]; if (a[i+1] < min) min = a[i+1];} –1046 min 0 max 10 Find min and max in the array — FASTER! X36DSA 2005
9 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … INTRO min = a[0]; max = a[0]; for (i=1; i < a.length-1; i=i+2 ) { if (a[i] < a[i+1]) { if ( a[i] < min) min = a[i]; if (a[i+1] > max) max = a[i+1];} else { if ( a[i] > max) max = a[i]; if (a[i+1] < min) min = a[i+1];}} Find min and max in the array — FASTER! – minmax code finished X36DSA 2005
10 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … INTRO X36DSA 2005 total number of elementary operations arithmetic operation or compare two numbers or move one number Elementary operation total number of elementary operations on the data Složitost celkový počet elementárních operací nad daty Complexity simplification zjednodušení Complexity Složitost celkový počet elementárních operací A B
11 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … INTRO X36DSA 2005 total number of number (character) comparisons in the data Složitost celkový počet elementárních operací nad daty Complexity further simplification further simplification další zjednodušení další zjednodušení Complexity Složitost celkový počet porovnání čísel (znaků).v datech total number of elementary operations on the data C B
12 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … INTRO X36DSA 2005 Find min and max in the array — STANDARD complexity min = a[0]; max = a[0]; for ( i = 1; i < a.length; i++){ if (a[i] < min) min = a[i]; if (a[i] > max) max = a[i]; } Best N + N–1 + N– N–1 + 0 = 4N+4 ops Worst A All operations All operations 0...N–1 N N–1 0...N–1 N– a.length = N N + N–1 + N–1 +N–1 + N–1 + N–1 = 6N–2 ops
13 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … INTRO X36DSA 2005 Find min and max in the array — STANDARD complexity min = a[0]; max = a[0]; for ( i = 1; i < a.length; i++){ if (a[i] < min) min = a[i]; if (a[i] > max) max = a[i]; } Best N– N–1 + 0 = 2N ops Worst B operations on data operations on data 0...N–1 N–1 0...N–1 N–1 11 a.length = N N–1 + N–1 + N–1 + N–1 = 4N–2 ops
14 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … INTRO X36DSA 2005 Find min and max in the array — STANDARD complexity min = a[0]; max = a[0]; for ( i = 1; i < a.length; i++){ if (a[i] < min) min = a[i]; if (a[i] > max) max = a[i]; } alwaysN–1 + N–1 = 2N–2 tests C tests only on data tests only on data N–1 a.length = N
15 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … INTRO X36DSA 2005 Find min and max in the array — FASTER! always tests only on data tests only on data complexity C –1046 N (N–1)/2 pairsOne pair — 3 tests 3(N–1)/2 = (3N – 3)/2 tests a.length = N Note: (3N – 3)/2 = (3N – 2)/2 if N is odd and “/” is integer division.
16/ 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … INTRO Array size NSTD method comparisons 2 (N – 1) FAST method comparisons (3N – 2)/2 *) ratio STD/FAST *) integer division X36DSA 2005 Tab. 1
17 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … INTRO –10–251 array a: array b: 7 0 How many elements of array a are equal to the sum of array b? –10– array a: array b: sum of b == 4 Result == 3 problem data soution Kolik prvků pole a je rovno součtu prvků pole b? X36DSA 2005
18/ 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … INTRO count = 0; for (int i = 0; i < a.length; i++) if (a[i]==sumArr(b)) count++; return count; SLOW method SLOW method FAST method FAST method int sumArr(int[] arr) {.../*easy*/} function count = 0; sumOf_b = sumArr(b); for (int i = 0; i < a.length; i++) if (a[i]==sumOf_b) count++; return count; X36DSA 2005
19 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … INTRO array a: array b: 7 1–10– array a: array b: 1–10–251 0 sum of b: 4 SLOW method SLOW method FAST method FAST method ≈ n x n operations ≈ 2 x n operations size of a ≈ n size of b ≈ n size of a ≈ n size of b ≈ n size of a ≈ n size of b ≈ n size of a ≈ n size of b ≈ n X36DSA 2005
20 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … INTRO Array size NSLOW method operations N 2 FAST method operations 2N ratio SLOW/FAST X36DSA 2005 Tab. 2
21 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … INTRO sorted array: tests: N tests: X36DSA Search in sorted array — linear, SLOW find 993 find 363 size = N
22 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … INTRO X36DSA Search in sorted array — binary, FAST 2 tests 1 test
23 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … INTRO … k … N = 2 k k = log 2 (N) =>... X36DSA N =2 0 =2 1 =2 2 =2 3 =2 k N
24/ 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … INTRO Array size linear search best caseworst case binary search worst case! avg. case tests ratio X36DSA 2005 Tab. 3
500 9 s 0,5ms 4,5ms 0,25s 125s 17h yrs yrs 25/ 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Order of growth The computation time for various time complexities assuming that 1 operation takes 1 s (10 -6 sec) log 2 n n n log 2 n n 2 n 3 n 4 2 n n! 20 4,3 s 20 s 86 s 0,4ms 8ms 160ms 1s yrs s 1ms 10ms 1s 17min 11,6days yrs yrs 10 3,3 s 10 s 33 s 0,1ms 1ms 10ms 1ms 3,6s 20 4,3 s 20 s 86 s 0,4ms 8ms 160ms 1s yrs 40 5 s 40 s 0,2ms 1,6ms 64ms 2,56s 12,7 days yrs 60 5,8 s 60 s 0,35ms 3,6ms 0,2s 13s yrs yrs X36DSA 2005 Tab. 4
26 / 1 O The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Order of growth X36DSA 2005 Order of growth of functions Řád růstu funkcí
27 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Order of growth p(x) = (x ) 1 16 e(x) = (x+26.44) X36DSA 2005 x y
28 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Order of growth e(x) = (x+26.44) p(x) = (x ) 1 16 Zoom out! : X36DSA 2005 x y
29 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Order of growth e(x) = (x+26.44) p(x) = (x ) 1 16 Zoom out! : X36DSA 2005 x y
30 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Order of growth e(x) = (x+26.44) p(x) = (x ) 1 16 Zoom out! : X36DSA 2005 x y
21 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Order of growth x y f(x) g 1 (x) (f(x)) g 3 (x) (f(x)) g 2 (x) (f(x)) (f(x)) X36DSA 2005
32 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Order of growth X36DSA 2005 V množině (f(x)) se octne každá funkce g(x), která od určitého bodu x 0 (není nijak předem předepsáno, kde by x 0 měl být) a) – je už vždy větší než funkce f(x) b) – sice větší než f(x) není, ale po vynásobení nějakou kladnou konstantou (hodnota konstanty také není nijak předepsána) je už vždy větší než funkce f(x). Takže: pokud najdeme nějaké x 0 a c>0 takové, že c·g(x) > f(x) všude napravo od x 0, (někdy stačí c=1) je jisto, že g(x) (f(x)) (f(x)) Omega
33 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Order of growth X36DSA 2005 Pokud najdeme nějaké x 0 a c>0 takové, že c·g(x) > f(x) všude napravo od x 0, (někdy stačí c=1) je jisto, že g(x) (f(x)) x > 60 e(x) > p(x), tj. takže platí e(x) (p(x)) (ověřte!) x 0 = 60 y x e(x) = (x+26.44) p(x) = (x ) 1 16 (x ) (x+26.44) > c = 1
34 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Order of growth X36DSA 2005 b(x) = x + 3 Pokud najdeme nějaké x 0 a c>0 takové, že c·g(x) > f(x) všude napravo od x 0, je jisto, že g(x) (f(x)) x r(x) = x–1 c = 4 x > 3.1 4·r(x) > b(x), tj. 4(x-1) > x + 3x takže platí r(x) (b(x)) (ověřte!) r(x) = x–1 4·r(x) = 4(x–1) b(x) = x + 3x x 0 = 3.1 y x
35 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Order of growth X36DSA 2005 Typické ukázky 2 x Ω(x 2 ) x 3 Ω(x 2 )x 2 Ω(x) 2 x Ω(x 3 )2 x Ω(x 5000 ) x n+1 Ω(x n ) x Ω(log(x))x log(x) Ω(x)x 2 Ω(x log(x) ) 2 x Ω(x ) x Ω(x)x Ω(1) x Ω(log(x) ) always f(x) Ω(1) hard to believe f(x) > 1
36 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Order of growth x y f(x) g 1 (x) O(f(x)) g 3 (x) O(f(x)) g 2 (x) O(f(x)) O(f(x)) X36DSA 2005
37 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Order of growth X36DSA 2005 V množině O(f(x)) se octne každá funkce g(x), která od určitého bodu x 0 (není nijak předem předepsáno, kde by x 0 měl být) a) – je už vždy menší než funkce f(x) b) – sice menší než f(x) není, ale po vynásobení nějakou kladnou konstantou ( asi < 1 ) (hodnota konstanty také není nijak předepsána) je už vždy menší než funkce f(x). Takže: pokud najdeme nějaké x 0 a c>0 takové, že c·g(x) < f(x) všude napravo od x 0, (někdy stačí c=1) je jisto, že g(x) O(f(x)) O(f(x)) O Omikron
38 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Order of growth X36DSA 2005 Pokud najdeme nějaké x 0 a c>0 takové, že c·g(x) < f(x) všude napravo od x 0, (někdy stačí c=1) je jisto, že g(x) O(f(x)) x > 60 p(x) < e(x), tj. takže platí p(x) O(e(x)) (ověřte!) x 0 = 60 y x e(x) = (x+26.44) p(x) = (x ) 1 16 (x ) 1 16 < (x+26.44) c = 1
39 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Order of growth X36DSA 2005 b(x) = x + 3 x r(x) = x–1 x > 1 r(x) < b(x), tj. x–1 < x + 3x takže platí r(x) O(b(x)) r(x) = x–1 b(x) = x + 3x y x x 0 = 1 Pokud najdeme nějaké x 0 a c>0 takové, že c·g(x) < f(x) všude napravo od x 0, (někdy stačí c=1) je jisto, že g(x) O(f(x))
40 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Order of growth X36DSA 2005 f Ω(g) g O(f) x2 O(2x)x2 O(2x) x2 O(x3)x2 O(x3)x O(x 2 ) x3 O(2x)x3 O(2x)x 5000 O(2 x ) x n O(x n+1 ) log(x) O(x)x O(x log(x))x log(x) O(x 2 ) x O(2 x ) x O(x )1 O(x)1 O(x) always 1 O(f(x)) hard to believe f(x) > 1 x log(x) O( )
41 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Order of growth x y f(x) g 1 (x) (f(x)) g 3 (x) (f(x)) g 2 (x) (f(x)) (f(x)) X36DSA 2005
42 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Order of growth X36DSA 2005 V množině (f(x)) se octne každá funkce g(x), která spadá jak do Ω(f(x)) tak do O(f(x)). (f(x)) = Ω(f(x)) O(f(x)) Theta f(x) (g(x)) g(x) (f(x))
43 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Order of growth X36DSA 2005 b(x) = x + 3 x r(x) = x–1 r(x) O(b(x)) r(x) = x–1 b(x) = x + 3x y x f(x) (g(x)) g(x) (f(x)) e(x) (p(x)) r(x) (b(x))
44 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Order of growth X36DSA 2005 Rules 1.8x log 2 (x) (x) x 3 + 7x 1/2 + 5(log 2 (x)) 4 (x 3 ) 13 3 x + 9x x (3 x ) g(x) O(f(x)) (f(x)) = (f(x) + g(x)) (a > 0) (f(x)) = (a f(x)) 0.1x x 4 + 7x 2 + x - 3 (x 5 ) –’’– O(x 5 ) –’’– (x 5 ) 4 2 n + 3 2 n 2 n/2 (2 n ) Examples
45 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Order of growth (f(x)) = { g(x) ; x 0 >0,c>0 x>x 0 : g(x) < c·f(x) } (f(x)) = { g(x) ; x 0 >0,c>0 x>x 0 : c·f(x) < g(x) } (f(x)) = { g(x) ; x 0 >0,c 1 >0, c 2 >0 x>x 0 : c 1 · f(x) < g(x) < c 2 ·f(x) } X36DSA 2005
46 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Order of growth X36DSA 2005 Řád růstu funkce ff(x) = 4 2 n + 3 2 n 2 n/2 (2 n ) Řád růstu funkce f je taková “co nejjednodušší” funkce g, pro kterou platí g(x) f(x) Řád růstu ff(x) je 2 n
47 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Asymptotic complexity X36DSA 2005 Asymptotická složitost Asymptotická složitost algoritmu A je řád růstu funkce f(n), která charakterizuje počet elementárních operací algoritmu A při zpracování dat o rozsahu n. ( rozsah dat = celkový počet čísel a znaků v nich) A) počet všech elementárních operací B) počet všech elementárních operací nad daty C) počet testů nad daty Ve většině případů nehraje roli, zda uvažujeme Asymptotická složitost vycházívá táž.
48 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Asymptotic complexity X36DSA 2005 Asymptotická složitost Asymptotická složitost hledání minima v poli o n prvcích je n. V obou uvedených případech. Asymptotická složitost pomalého zjišťování, kolik čísel v poli je rovno součtu jiného pole je n 2. Asymptotická složitost rychlého zjišťování, kolik čísel v poli je rovno součtu jiného pole je n. Za předpokladu, že obě pole mají délku n. Asymptotická složitost lineárního hledání prvku v poli je n. Asymptotická složitost hledání prvku uspořádaném poli pomocí půlení intervalu je log(n).
49 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Order of growth Funkce f(x) roste asymptoticky rychleji než funkce g(x), když f(x) Ω(g(x)) & f(x) (g(x)) X36DSA 2005 Algoritmus A je asymptoticky rychlejší než algoritmus B, když f A (n) Ω(f B (n)) & f A (n) (f B (n)), kde f A (n), resp. f B (n) je funkce určující počet operací, které provede algoritmus A, resp. B, při zpracování dat o rozsahu n.
50 / 1The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Order of growth Function f(x) grows asymptotically faster then function g(x) if f(x) Ω(g(x)) & f(x) (g(x)) X36DSA 2005 Algorithm A is asymptotically faster then algorithm B when f A (n) Ω(f B (n)) & f A (n) (f B (n)) where f A (n) resp. f B (n) is the function specifying the number of operations performed by algorithm A resp. B during processing the data of size n.