Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilEllen Kašparová
1
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)), … http://service.felk.cvut.cz/courses/X36DSA Data Structures and Algorithms Petr Felkel felkel@fel.cvut.cz Marko Genyk-Berezovskyj berezovs@fel.cvut.cz DSA
2
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
3
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
4
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á ??
5
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
6
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 3271005–1046 min 3 max 3 3271005–1046 min 3 max 3 if (a[i] < min) min = a[i]; if (a[i] > max) max = a[i]; 3271005–1046 min 2 max 3 Find min and max in the array — STANDARD X36DSA 2005
7
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 3271005–1046 10 minmax code finished 3271005–1046 min 2 max 7 etc... X36DSA 2005
8
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 3271005–1046 min 3 max 3 3271005–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];} 3271005–1046 min 2 max 7 Find min and max in the array — FASTER! X36DSA 2005
9
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 3271005–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];} 3271005–1046 min 0 max 10 Find min and max in the array — FASTER! X36DSA 2005
10
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! 3271005–1046 10 minmax code finished X36DSA 2005
11
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
12
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
13
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 1 + 1 + 1 + N + N–1 + N–1 +0 + N–1 + 0 = 4N+4 ops Worst A All operations All operations 0...N–1 N N–1 0...N–1 N–1 1 11 a.length = N 1 + 1 + 1 + N + N–1 + N–1 +N–1 + N–1 + N–1 = 6N–2 ops
14
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]; } Best1 + 1 + N–1 +0 + 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 1 + 1 + N–1 + N–1 + N–1 + N–1 = 4N–2 ops
15
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
16
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 3271005–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.
17
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 1018141.29 2038291.31 5098741.32 1001981491.33 2003982991.33 5009987491.33 1 0001 9981 4991.33 2 0003 9982 9991.33 5 0009 9987 4991.33 1 000 0001 999 9981 499 9991.33 Array size NSTD method comparisons 2 (N – 1) FAST method comparisons (3N – 2)/2 *) ratio STD/FAST *) integer division X36DSA 2005 Tab. 1
18
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 424342 1–10–251 array a: array b: 7 0 How many elements of array a are equal to the sum of array b? 424342 1–10–251 7 0 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
19
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
20
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 424342 array a: array b: 7 1–10–2510 4243427 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
21
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 10100205 4004010 502 50010025 10010 00020050 20040 000400100 500250 0001 000250 1 0001 000 0002 000500 2 0004 000 0004 0001 000 5 00025 000 00010 0002 500 2 000 0004 000 000 000 0004 000 000 1 000 000 Array size NSLOW method operations N 2 FAST method operations 2N ratio SLOW/FAST X36DSA 2005 Tab. 2
22
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: 1 693803833836860863938939966968983993638603388369363839 X36DSA 2005 693803833836860863938939966968983993638603388369363839 693803833836860863938939966968983993638603388369363839 Search in sorted array — linear, SLOW find 993 find 363 size = N
23
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 2005 693803833836860863938939966968983993638603388369363839 693803833860863938939966968983993638603388369363839 860863938939966968983993839 860863938966968983993839 860863938839 863938839 863938 Search in sorted array — binary, FAST 2 tests 1 test
24
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 … 2 3 1 0 N = 2 k k = log 2 (N) =>... X36DSA 2005 2 4 8 1 N =2 0 =2 1 =2 2 =2 3 =2 k 1 2 4 8 N
25
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 515350.6 101 5.570.79 201 10.591.17 501 25.5112.32 1001 50.5133.88 2001 100.5156.70 5001 250.51714.74 1 0001 500.51926.34 2 0001 1000.52147.64 5 0001 2500.525100.02 1 000 0001 500 000.5598 474.58 Array size linear search best caseworst case binary search worst case! avg. case tests ratio X36DSA 2005 Tab. 3
26
500 9 s 0,5ms 4,5ms 0,25s 125s 17h 10 137 yrs 10 1110 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 77000 yrs 1000 10 s 1ms 10ms 1s 17min 11,6days 10 287 yrs 10 2554 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 77000 yrs 40 5 s 40 s 0,2ms 1,6ms 64ms 2,56s 12,7 days 10 34 yrs 60 5,8 s 60 s 0,35ms 3,6ms 0,2s 13s 36000 yrs 10 68 yrs X36DSA 2005 Tab. 4
27
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í
28
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 2 +100) 1 16 e(x) = 1.072 (x+26.44) X36DSA 2005 x y
29
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) = 1.072 (x+26.44) p(x) = (x 2 +100) 1 16 Zoom out! : X36DSA 2005 x y
30
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) = 1.072 (x+26.44) p(x) = (x 2 +100) 1 16 Zoom out! : X36DSA 2005 x y
31
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) = 1.072 (x+26.44) p(x) = (x 2 +100) 1 16 Zoom out! : X36DSA 2005 x y
32
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
33
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
34
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) = 1.072 (x+26.44) p(x) = (x 2 +100) 1 16 (x 2 +100) 1 16 1.072 (x+26.44) > c = 1
35
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
36
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 20000 ) x 20000 Ω(x)x Ω(1) x 200000 Ω(log(x) 20000 ) always f(x) Ω(1) hard to believe f(x) > 1
37
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
38
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
39
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) = 1.072 (x+26.44) p(x) = (x 2 +100) 1 16 (x 2 +100) 1 16 < 1.072 (x+26.44) c = 1
40
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))
41
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 20000 O(2 x ) x O(x 20000 )1 O(x)1 O(x) always 1 O(f(x)) hard to believe f(x) > 1 x 200000 log(x) 20000 O( )
42
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
43
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))
44
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))
45
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 + 600 log 2 (x) (x) x 3 + 7x 1/2 + 5(log 2 (x)) 4 (x 3 ) 13 3 x + 9x 12 + 42x -4 + 29 (3 x ) g(x) O(f(x)) (f(x)) = (f(x) + g(x)) (a > 0) (f(x)) = (a f(x)) 0.1x 5 + 200x 4 + 7x 2 + x - 3 (x 5 ) –’’– O(x 5 ) –’’– (x 5 ) 4 2 n + 3 2 n-1 + 5 2 n/2 (2 n ) Examples
46
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
47
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-1 + 5 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
48
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áž.
49
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).
50
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.
51
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.
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.