Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

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.

Podobné prezentace


Prezentace na téma: "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."— Transkript prezentace:

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.


Stáhnout ppt "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."

Podobné prezentace


Reklamy Google