Časová a prostorová složitost algoritmů

Rozměr: px
Začít zobrazení ze stránky:

Download "Časová a prostorová složitost algoritmů"

Transkript

1 .. Časová a prostorová složitost algoritmů Programovací techniky doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz

2 Hodnocení algoritmů Programovací techniky Časová a prostorová složitost algoritmů 2 / 1

3 Hodnocení algoritmů Kromě základních vlastností lze hodnotit kvalitu algoritmů Programovací techniky Časová a prostorová složitost algoritmů 2 / 1

4 Hodnocení algoritmů Kromě základních vlastností lze hodnotit kvalitu algoritmů Stejnou úlohu lze řešit různými přístupy Programovací techniky Časová a prostorová složitost algoritmů 2 / 1

5 Hodnocení algoritmů Kromě základních vlastností lze hodnotit kvalitu algoritmů Stejnou úlohu lze řešit různými přístupy Rozdíl je zejména ve spotřebě klíčových zdrojů paměť, čas Programovací techniky Časová a prostorová složitost algoritmů 2 / 1

6 Hodnocení algoritmů Kromě základních vlastností lze hodnotit kvalitu algoritmů Stejnou úlohu lze řešit různými přístupy Rozdíl je zejména ve spotřebě klíčových zdrojů paměť, čas Pojem složitosti funkce závislosti na N Programovací techniky Časová a prostorová složitost algoritmů 2 / 1

7 Hodnocení algoritmů Kromě základních vlastností lze hodnotit kvalitu algoritmů Stejnou úlohu lze řešit různými přístupy Rozdíl je zejména ve spotřebě klíčových zdrojů paměť, čas Pojem složitosti funkce závislosti na N Znalost složitosti algoritmu je klíčová pro vhodnou aplikaci Programovací techniky Časová a prostorová složitost algoritmů 2 / 1

8 Pojem složitosti Programovací techniky Časová a prostorová složitost algoritmů 3 / 1

9 Pojem složitosti Pojem: matematická funkce představující závislost sledovaného parametru na množství vstupních dat Programovací techniky Časová a prostorová složitost algoritmů 3 / 1

10 Pojem složitosti Pojem: matematická funkce představující závislost sledovaného parametru na množství vstupních dat Složitost prostorová spotřeba paměti, diskového prostoru v závislosti na vstupních datech Programovací techniky Časová a prostorová složitost algoritmů 3 / 1

11 Pojem složitosti Pojem: matematická funkce představující závislost sledovaného parametru na množství vstupních dat Složitost prostorová spotřeba paměti, diskového prostoru v závislosti na vstupních datech Složitost časová spotřeba času v závislosti na vstupních datech Programovací techniky Časová a prostorová složitost algoritmů 3 / 1

12 Pojem složitosti Pojem: matematická funkce představující závislost sledovaného parametru na množství vstupních dat Složitost prostorová spotřeba paměti, diskového prostoru v závislosti na vstupních datech Složitost časová spotřeba času v závislosti na vstupních datech Časová složitost je obvykle kritičtější (prostor si lze koupit, čas nikoliv) Programovací techniky Časová a prostorová složitost algoritmů 3 / 1

13 Pojem složitosti Pojem: matematická funkce představující závislost sledovaného parametru na množství vstupních dat Složitost prostorová spotřeba paměti, diskového prostoru v závislosti na vstupních datech Složitost časová spotřeba času v závislosti na vstupních datech Časová složitost je obvykle kritičtější (prostor si lze koupit, čas nikoliv) Třídy složitosti není podstatná konkrétní přesná závislost, stačí charakterizovat třídu Programovací techniky Časová a prostorová složitost algoritmů 3 / 1

14 Pojem složitosti Pojem: matematická funkce představující závislost sledovaného parametru na množství vstupních dat Složitost prostorová spotřeba paměti, diskového prostoru v závislosti na vstupních datech Složitost časová spotřeba času v závislosti na vstupních datech Časová složitost je obvykle kritičtější (prostor si lze koupit, čas nikoliv) Třídy složitosti není podstatná konkrétní přesná závislost, stačí charakterizovat třídu Sledujeme horní ohraničení O(N) Programovací techniky Časová a prostorová složitost algoritmů 3 / 1

15 Pojem složitosti Pojem: matematická funkce představující závislost sledovaného parametru na množství vstupních dat Složitost prostorová spotřeba paměti, diskového prostoru v závislosti na vstupních datech Složitost časová spotřeba času v závislosti na vstupních datech Časová složitost je obvykle kritičtější (prostor si lze koupit, čas nikoliv) Třídy složitosti není podstatná konkrétní přesná závislost, stačí charakterizovat třídu Sledujeme horní ohraničení O(N) Zanedbáváme implementační konstanty Programovací techniky Časová a prostorová složitost algoritmů 3 / 1

16 Pojem složitosti Pojem: matematická funkce představující závislost sledovaného parametru na množství vstupních dat Složitost prostorová spotřeba paměti, diskového prostoru v závislosti na vstupních datech Složitost časová spotřeba času v závislosti na vstupních datech Časová složitost je obvykle kritičtější (prostor si lze koupit, čas nikoliv) Třídy složitosti není podstatná konkrétní přesná závislost, stačí charakterizovat třídu Sledujeme horní ohraničení O(N) Zanedbáváme implementační konstanty Vyjádření třídy jednoduchá matematická funkce Programovací techniky Časová a prostorová složitost algoritmů 3 / 1

17 Pojem složitosti Pojem: matematická funkce představující závislost sledovaného parametru na množství vstupních dat Složitost prostorová spotřeba paměti, diskového prostoru v závislosti na vstupních datech Složitost časová spotřeba času v závislosti na vstupních datech Časová složitost je obvykle kritičtější (prostor si lze koupit, čas nikoliv) Třídy složitosti není podstatná konkrétní přesná závislost, stačí charakterizovat třídu Sledujeme horní ohraničení O(N) Zanedbáváme implementační konstanty Vyjádření třídy jednoduchá matematická funkce Třídy lze uspořádat Programovací techniky Časová a prostorová složitost algoritmů 3 / 1

18 Třídy složitosti Programovací techniky Časová a prostorová složitost algoritmů 4 / 1

19 Třídy složitosti Ve vyjádření tříd je k implementační konstanta, jejíž vliv na charakter algoritmu je nulový Programovací techniky Časová a prostorová složitost algoritmů 4 / 1

20 Třídy složitosti Ve vyjádření tříd je k implementační konstanta, jejíž vliv na charakter algoritmu je nulový Konstantní O(N) = k Programovací techniky Časová a prostorová složitost algoritmů 4 / 1

21 Třídy složitosti Ve vyjádření tříd je k implementační konstanta, jejíž vliv na charakter algoritmu je nulový Konstantní O(N) = k Logaritmická O(N) = k log N Programovací techniky Časová a prostorová složitost algoritmů 4 / 1

22 Třídy složitosti Ve vyjádření tříd je k implementační konstanta, jejíž vliv na charakter algoritmu je nulový Konstantní O(N) = k Logaritmická O(N) = k log N Lineární O(N) = k N Programovací techniky Časová a prostorová složitost algoritmů 4 / 1

23 Třídy složitosti Ve vyjádření tříd je k implementační konstanta, jejíž vliv na charakter algoritmu je nulový Konstantní O(N) = k Logaritmická O(N) = k log N Lineární O(N) = k N Lineárně logaritmická O(N) = k N log N Programovací techniky Časová a prostorová složitost algoritmů 4 / 1

24 Třídy složitosti Ve vyjádření tříd je k implementační konstanta, jejíž vliv na charakter algoritmu je nulový Konstantní O(N) = k Logaritmická O(N) = k log N Lineární O(N) = k N Lineárně logaritmická O(N) = k N log N Kvadratická O(N) = k N 2 Programovací techniky Časová a prostorová složitost algoritmů 4 / 1

25 Třídy složitosti Ve vyjádření tříd je k implementační konstanta, jejíž vliv na charakter algoritmu je nulový Konstantní O(N) = k Logaritmická O(N) = k log N Lineární O(N) = k N Lineárně logaritmická O(N) = k N log N Kvadratická O(N) = k N 2 Kubická O(N) = k N 3 Programovací techniky Časová a prostorová složitost algoritmů 4 / 1

26 Třídy složitosti Ve vyjádření tříd je k implementační konstanta, jejíž vliv na charakter algoritmu je nulový Konstantní O(N) = k Logaritmická O(N) = k log N Lineární O(N) = k N Lineárně logaritmická O(N) = k N log N Kvadratická O(N) = k N 2 Kubická O(N) = k N 3 Exponenciální O(N) = k Z N Programovací techniky Časová a prostorová složitost algoritmů 4 / 1

27 Třídy složitosti Ve vyjádření tříd je k implementační konstanta, jejíž vliv na charakter algoritmu je nulový Konstantní O(N) = k Logaritmická O(N) = k log N Lineární O(N) = k N Lineárně logaritmická O(N) = k N log N Kvadratická O(N) = k N 2 Kubická O(N) = k N 3 Exponenciální O(N) = k Z N Faktoriální O(N) = k N! Programovací techniky Časová a prostorová složitost algoritmů 4 / 1

28 Složitost v praxi Programovací techniky Časová a prostorová složitost algoritmů 5 / 1

29 Složitost v praxi Testovací množina dat je obvykle podstatně menší než reálná data Programovací techniky Časová a prostorová složitost algoritmů 5 / 1

30 Složitost v praxi Testovací množina dat je obvykle podstatně menší než reálná data Program funguje s malým množstvím dat výborně Programovací techniky Časová a prostorová složitost algoritmů 5 / 1

31 Složitost v praxi Testovací množina dat je obvykle podstatně menší než reálná data Program funguje s malým množstvím dat výborně Při nasazení do provozu nastávají nečekané komplikace Programovací techniky Časová a prostorová složitost algoritmů 5 / 1

32 Složitost v praxi Testovací množina dat je obvykle podstatně menší než reálná data Program funguje s malým množstvím dat výborně Při nasazení do provozu nastávají nečekané komplikace 2 0 k 1 Programovací techniky Časová a prostorová složitost algoritmů 5 / 1

33 Stanovení složitosti Programovací techniky Časová a prostorová složitost algoritmů 6 / 1

34 Stanovení složitosti Metody experimentální, analytické Programovací techniky Časová a prostorová složitost algoritmů 6 / 1

35 Stanovení složitosti Metody experimentální, analytické Experiment vytvoření tabulky s údaji, kde počet hodnot nezávisle proměnné stanovujeme podle vznikajícího charakteru algoritmu Programovací techniky Časová a prostorová složitost algoritmů 6 / 1

36 Stanovení složitosti Metody experimentální, analytické Experiment vytvoření tabulky s údaji, kde počet hodnot nezávisle proměnné stanovujeme podle vznikajícího charakteru algoritmu Možnosti praktických měření jsou omezené (stanovení přesné spotřeby času, stanovení přesné spotřeby prostoru) Programovací techniky Časová a prostorová složitost algoritmů 6 / 1

37 Stanovení složitosti Programovací techniky Časová a prostorová složitost algoritmů 7 / 1

38 Stanovení složitosti Analýza algoritmu Programovací techniky Časová a prostorová složitost algoritmů 7 / 1

39 Stanovení složitosti Analýza algoritmu U prostoru lokální statické proměnné, dynamické proměnné, rekurze Programovací techniky Časová a prostorová složitost algoritmů 7 / 1

40 Stanovení složitosti Analýza algoritmu U prostoru lokální statické proměnné, dynamické proměnné, rekurze Alokace paměti v cyklech, jejichž počet průchodů závisí na vstupních datech Programovací techniky Časová a prostorová složitost algoritmů 7 / 1

41 Stanovení složitosti Analýza algoritmu U prostoru lokální statické proměnné, dynamické proměnné, rekurze Alokace paměti v cyklech, jejichž počet průchodů závisí na vstupních datech Není potřeba sledovat globální statické proměnné Programovací techniky Časová a prostorová složitost algoritmů 7 / 1

42 Stanovení složitosti Analýza algoritmu U prostoru lokální statické proměnné, dynamické proměnné, rekurze Alokace paměti v cyklech, jejichž počet průchodů závisí na vstupních datech Není potřeba sledovat globální statické proměnné Časová složitost cykly a rekurze závisející na vstupních datech Programovací techniky Časová a prostorová složitost algoritmů 7 / 1

43 Stanovení složitosti Analýza algoritmu U prostoru lokální statické proměnné, dynamické proměnné, rekurze Alokace paměti v cyklech, jejichž počet průchodů závisí na vstupních datech Není potřeba sledovat globální statické proměnné Časová složitost cykly a rekurze závisející na vstupních datech Vnoření cyklů násobení závislostí Programovací techniky Časová a prostorová složitost algoritmů 7 / 1

44 Stanovení složitosti Analýza algoritmu U prostoru lokální statické proměnné, dynamické proměnné, rekurze Alokace paměti v cyklech, jejichž počet průchodů závisí na vstupních datech Není potřeba sledovat globální statické proměnné Časová složitost cykly a rekurze závisející na vstupních datech Vnoření cyklů násobení závislostí Následné cykly započítáváme jen horší složitost Programovací techniky Časová a prostorová složitost algoritmů 7 / 1

45 Příklady Programovací techniky Časová a prostorová složitost algoritmů 8 / 1

46 Příklady Hledání sekvenční hledání v neuspořádané lineární struktuře (hledáme hodnotu C v poli P, v němž je naplněno N prvků) Programovací techniky Časová a prostorová složitost algoritmů 8 / 1

47 Příklady Hledání sekvenční hledání v neuspořádané lineární struktuře (hledáme hodnotu C v poli P, v němž je naplněno N prvků) Časová složitost odvozená z algoritmu: I:=1; while (I<=N) and (P[I]<>C) do Inc(I); Nalezeno:=I<=N Programovací techniky Časová a prostorová složitost algoritmů 8 / 1

48 Příklady Hledání sekvenční hledání v neuspořádané lineární struktuře (hledáme hodnotu C v poli P, v němž je naplněno N prvků) Časová složitost odvozená z algoritmu: I:=1; while (I<=N) and (P[I]<>C) do Inc(I); Nalezeno:=I<=N Cyklus při neúspěšném hledání (nejhorší případ) proběhne N-krát, složitost je tedy O(N) = k N (lineární) Programovací techniky Časová a prostorová složitost algoritmů 8 / 1

49 Příklady Hledání sekvenční hledání v neuspořádané lineární struktuře (hledáme hodnotu C v poli P, v němž je naplněno N prvků) Časová složitost odvozená z algoritmu: I:=1; while (I<=N) and (P[I]<>C) do Inc(I); Nalezeno:=I<=N Cyklus při neúspěšném hledání (nejhorší případ) proběhne N-krát, složitost je tedy O(N) = k N (lineární) Uvažujme průměrně projití 75 % prvků pole, pak O(N) = 0,75 k N = k 1 N Programovací techniky Časová a prostorová složitost algoritmů 8 / 1

50 Příklady Programovací techniky Časová a prostorová složitost algoritmů 9 / 1

51 Modifikovaný algoritmus sekvenčního hledání v uspořádané struktuře: I:=1; while (I<=N) and (P[I]<C) do Inc(I); Nalezeno:=I<=N Příklady Programovací techniky Časová a prostorová složitost algoritmů 9 / 1

52 Modifikovaný algoritmus sekvenčního hledání v uspořádané struktuře: I:=1; while (I<=N) and (P[I]<C) do Inc(I); Příklady Nalezeno:=I<=N Má zcela stejnou složitost, i když neúspěšné hledání je detekováno dříve Programovací techniky Časová a prostorová složitost algoritmů 9 / 1

53 Modifikovaný algoritmus sekvenčního hledání v uspořádané struktuře: I:=1; while (I<=N) and (P[I]<C) do Inc(I); Příklady Nalezeno:=I<=N Má zcela stejnou složitost, i když neúspěšné hledání je detekováno dříve Uvažujme průměrné projití 50 % prvků pole. Pak O(N) = 0,5 k N = k 2 N Programovací techniky Časová a prostorová složitost algoritmů 9 / 1

54 Modifikovaný algoritmus sekvenčního hledání v uspořádané struktuře: I:=1; while (I<=N) and (P[I]<C) do Inc(I); Příklady Nalezeno:=I<=N Má zcela stejnou složitost, i když neúspěšné hledání je detekováno dříve Uvažujme průměrné projití 50 % prvků pole. Pak O(N) = 0,5 k N = k 2 N Zřejmě platí k 1 > k 2, nemění se však charakter algoritmu, ani časová složitost (třída) Programovací techniky Časová a prostorová složitost algoritmů 9 / 1

55 Modifikovaný algoritmus sekvenčního hledání v uspořádané struktuře: I:=1; while (I<=N) and (P[I]<C) do Inc(I); Příklady Nalezeno:=I<=N Má zcela stejnou složitost, i když neúspěšné hledání je detekováno dříve Uvažujme průměrné projití 50 % prvků pole. Pak O(N) = 0,5 k N = k 2 N Zřejmě platí k 1 > k 2, nemění se však charakter algoritmu, ani časová složitost (třída) Jedná se o názornou ukázku velmi neefektivního použití algoritmu v uspořádané struktuře je potřebné hledat v jiné třídě složitosti Programovací techniky Časová a prostorová složitost algoritmů 9 / 1

56 Příklady Programovací techniky Časová a prostorová složitost algoritmů 10 / 1

57 Příklady Binární vyhledávací strom (implementace dynamickou strukturou): U:=Koren; while (U<>nil) and (U^.Data<>C) do if C<U.Data then U:=U^.Vlevo Nalezeno:=U<>nil else U:=U^.Vpravo; Programovací techniky Časová a prostorová složitost algoritmů 10 / 1

58 Příklady Binární vyhledávací strom (implementace dynamickou strukturou): U:=Koren; while (U<>nil) and (U^.Data<>C) do if C<U.Data then U:=U^.Vlevo Nalezeno:=U<>nil else U:=U^.Vpravo; Cyklus závisí na vstupních datech, v jeho těle proběhne rozhodnutí, do kterého podstromu se vydáme Programovací techniky Časová a prostorová složitost algoritmů 10 / 1

59 Příklady Binární vyhledávací strom (implementace dynamickou strukturou): U:=Koren; while (U<>nil) and (U^.Data<>C) do if C<U.Data then U:=U^.Vlevo Nalezeno:=U<>nil else U:=U^.Vpravo; Cyklus závisí na vstupních datech, v jeho těle proběhne rozhodnutí, do kterého podstromu se vydáme Cyklus proběhne nejhůře tolikrát, kolik je hladin stromu Programovací techniky Časová a prostorová složitost algoritmů 10 / 1

60 Příklady Binární vyhledávací strom (implementace dynamickou strukturou): U:=Koren; while (U<>nil) and (U^.Data<>C) do if C<U.Data then U:=U^.Vlevo Nalezeno:=U<>nil else U:=U^.Vpravo; Cyklus závisí na vstupních datech, v jeho těle proběhne rozhodnutí, do kterého podstromu se vydáme Cyklus proběhne nejhůře tolikrát, kolik je hladin stromu V případě vyváženého stromu je počet hladin stromu o N prvcích roven h = log 2 N Programovací techniky Časová a prostorová složitost algoritmů 10 / 1

61 Příklady Binární vyhledávací strom (implementace dynamickou strukturou): U:=Koren; while (U<>nil) and (U^.Data<>C) do if C<U.Data then U:=U^.Vlevo Nalezeno:=U<>nil else U:=U^.Vpravo; Cyklus závisí na vstupních datech, v jeho těle proběhne rozhodnutí, do kterého podstromu se vydáme Cyklus proběhne nejhůře tolikrát, kolik je hladin stromu V případě vyváženého stromu je počet hladin stromu o N prvcích roven h = log 2 N Časová složitost je tedy O(N) = k log 2 N Programovací techniky Časová a prostorová složitost algoritmů 10 / 1

62 Příklady Programovací techniky Časová a prostorová složitost algoritmů 11 / 1

63 Příklady Součet řady čísel ze standardního vstupu prostorová složitost Programovací techniky Časová a prostorová složitost algoritmů 11 / 1

64 Příklady Součet řady čísel ze standardního vstupu prostorová složitost Iterativní algoritmus: var C, Soucet: real; begin Soucet:=0; end. while not SeekEof do begin end; read(c); Soucet:=Soucet+C writeln(soucet) Programovací techniky Časová a prostorová složitost algoritmů 11 / 1

65 Příklady Součet řady čísel ze standardního vstupu prostorová složitost Iterativní algoritmus: var C, Soucet: real; begin Soucet:=0; end. while not SeekEof do begin end; read(c); Soucet:=Soucet+C writeln(soucet) Cyklus neobsahuje alokaci paměti, prostorová složitost je tedy rovna O(N) = k (konstantní) Programovací techniky Časová a prostorová složitost algoritmů 11 / 1

66 Příklady Programovací techniky Časová a prostorová složitost algoritmů 12 / 1

67 Příklady Součet řady řešený rekurzivním algoritmem: function Soucet: real; var C: real; begin if not SeekEof then begin read(c); Soucet:=C+Soucet else Soucet:=0 end; begin writeln(soucet) end. Programovací techniky Časová a prostorová složitost algoritmů 12 / 1

68 Příklady Programovací techniky Časová a prostorová složitost algoritmů 13 / 1

69 Příklady Rekurze vyvolaná v hlavním programu je závislá na počtu vstupních dat Programovací techniky Časová a prostorová složitost algoritmů 13 / 1

70 Příklady Rekurze vyvolaná v hlavním programu je závislá na počtu vstupních dat S každým zpracovaným číslem se volá funkce, na systémový zásobník se ukládá její návratová adresa a lokální proměnná C Programovací techniky Časová a prostorová složitost algoritmů 13 / 1

71 Příklady Rekurze vyvolaná v hlavním programu je závislá na počtu vstupních dat S každým zpracovaným číslem se volá funkce, na systémový zásobník se ukládá její návratová adresa a lokální proměnná C Prostorová složitost je lineární O(N) = k N Programovací techniky Časová a prostorová složitost algoritmů 13 / 1

72 Příklady Rekurze vyvolaná v hlavním programu je závislá na počtu vstupních dat S každým zpracovaným číslem se volá funkce, na systémový zásobník se ukládá její návratová adresa a lokální proměnná C Prostorová složitost je lineární O(N) = k N Jedná se o ukázku neefektivního algoritmu Programovací techniky Časová a prostorová složitost algoritmů 13 / 1

Rekurze. Pavel Töpfer, 2017 Programování 1-8 1

Rekurze. Pavel Töpfer, 2017 Programování 1-8 1 Rekurze V programování ve dvou hladinách: - rekurzivní algoritmus (řešení úlohy je definováno pomocí řešení podúloh stejného charakteru) - rekurzivní volání procedury nebo funkce (volá sama sebe přímo

Více

Časová složitost / Time complexity

Časová složitost / Time complexity Časová složitost / Time complexity Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 2018 1 / 24 Složitost algoritmů Algorithm complexity Časová a paměťová složitost Trvání výpočtu v závislosti

Více

Obecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012

Obecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012 Obecná informatika Přednášející Putovních přednášek Matematicko-fyzikální fakulta Univerzity Karlovy v Praze Podzim 2012 Přednášející Putovních přednášek (MFF UK) Obecná informatika Podzim 2012 1 / 18

Více

Binární vyhledávací stromy pokročilé partie

Binární vyhledávací stromy pokročilé partie Binární vyhledávací stromy pokročilé partie KMI/ALS lekce Jan Konečný 30.9.204 Literatura Cormen Thomas H., Introduction to Algorithms, 2nd edition MIT Press, 200. ISBN 0-262-5396-8 6, 3, A Knuth Donald

Více

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem Test prvočíselnosti Úkol: otestovat dané číslo N, zda je prvočíslem 1. zkusit všechny dělitele od 2 do N-1 časová složitost O(N) cca N testů 2. stačí zkoušet všechny dělitele od 2 do N/2 (větší dělitel

Více

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Dynamické programování Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Rozděl a panuj (divide-and-conquer) Rozděl (Divide): Rozděl problém na několik podproblémů tak, aby tyto podproblémy odpovídaly původnímu

Více

Dynamické datové struktury IV.

Dynamické datové struktury IV. Dynamické datové struktury IV. Prioritní fronta. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra

Více

Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz

Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz (2 + 5) * (13-4) * + - 2 5 13 4 - listy stromu obsahují operandy (čísla) - vnitřní uzly obsahují operátory (znaménka)

Více

Dynamické datové typy a struktury

Dynamické datové typy a struktury .. a Programovací techniky doc. Ing. Jiří Rybička Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Programovací techniky a 2 / 18 Uchovávají adresu v paměti Programovací techniky a 2 / 18 Uchovávají

Více

Stromy, haldy, prioritní fronty

Stromy, haldy, prioritní fronty Stromy, haldy, prioritní fronty prof. Ing. Pavel Tvrdík CSc. Katedra počítačů FEL České vysoké učení technické DSA, ZS 2008/9, Přednáška 6 http://service.felk.cvut.cz/courses/x36dsa/ prof. Pavel Tvrdík

Více

SII - Informatika. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá:

SII - Informatika. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá: SII - Informatika Způsob vyhodnocení: Při vyhodnocení budou za nesprávné odpovědi strhnuty body. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá: a) sekundární klíč b)

Více

Binární soubory (datové, typované)

Binární soubory (datové, typované) Binární soubory (datové, typované) - na rozdíl od textových souborů data uložena binárně (ve vnitřním tvaru jako v proměnných programu) není čitelné pro člověka - všechny záznamy téhož typu (může být i

Více

Základní datové struktury III: Stromy, haldy

Základní datové struktury III: Stromy, haldy Základní datové struktury III: Stromy, haldy prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní

Více

Digitální učební materiál

Digitální učební materiál Digitální učební materiál Číslo projektu: CZ.1.07/1.5.00/34.0548 Název školy: Gymnázium, Trutnov, Jiráskovo náměstí 325 Název materiálu: VY_32_INOVACE_145_IVT Autor: Ing. Pavel Bezděk Tematický okruh:

Více

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21. Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 21. září 2018 Jiří Dvorský (VŠB TUO) Vyhledávání 242 / 433 Osnova přednášky

Více

IB111 Úvod do programování skrze Python

IB111 Úvod do programování skrze Python Vyhledávání, řazení, složitost IB111 Úvod do programování skrze Python 2012 Otrávené studny 8 studen, jedna z nich je otrávená laboratorní rozbor dokáže rozpoznat přítomnost jedu ve vodě je drahý (je časově

Více

Složitost algoritmů. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

Složitost algoritmů. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Složitost algoritmů doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 27. prosince 2015 Jiří Dvorský (VŠB TUO) Složitost algoritmů

Více

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky Vyučovací hodina 1vyučovací hodina: Opakování z minulé hodiny Nová látka Procvičení nové látky Shrnutí 5 min 20 min 15 min 5 min 2vyučovací hodiny: Opakování z minulé hodiny Nová látka Procvičení nové

Více

Náplň. v.0.03 16.02.2014. - Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění

Náplň. v.0.03 16.02.2014. - Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění Náplň v.0.03 16.02.2014 - Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění Spojení dvou samostatně setříděných polí void Spoj(double apole1[], int adelka1, double

Více

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12. Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 12. září 2016 Jiří Dvorský (VŠB TUO) Vyhledávání 201 / 344 Osnova přednášky

Více

Rekurzivní algoritmy

Rekurzivní algoritmy Rekurzivní algoritmy prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA) ZS

Více

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu. Informatika 10. 9. 2013 Jméno a příjmení Rodné číslo 1) Napište algoritmus pro rychlé třídění (quicksort). 2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus

Více

Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C

Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C Hanojské věže - 3 kolíky A, B, C - na A je N disků různé velikosti, seřazené od největšího (dole) k nejmenšímu (nahoře) - kolíky B a C jsou prázdné - úkol: přenést všechny disky z A na B, mohou se odkládat

Více

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Třídění, vyhledávání Daniela Szturcová

Více

Stromy. Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy

Stromy. Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy Stromy úvod Stromy Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy Neorientovaný strom Orientovaný strom Kořenový orientovaný

Více

O datových typech a jejich kontrole

O datových typech a jejich kontrole .. O datových typech a jejich kontrole Programovací techniky doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Typová kontrola Programovací techniky O datových typech

Více

Prohledávání do šířky = algoritmus vlny

Prohledávání do šířky = algoritmus vlny Prohledávání do šířky = algoritmus vlny - souběžně zkoušet všechny možné varianty pokračování výpočtu, dokud nenajdeme řešení úlohy průchod stromem všech možných cest výpočtu do šířky, po vrstvách (v každé

Více

Datové struktury 2: Rozptylovací tabulky

Datové struktury 2: Rozptylovací tabulky Datové struktury 2: Rozptylovací tabulky prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy

Více

NPRG030 Programování I, 2018/19 1 / :03:07

NPRG030 Programování I, 2018/19 1 / :03:07 NPRG030 Programování I, 2018/19 1 / 20 3. 12. 2018 09:03:07 Vnitřní třídění Zadání: Uspořádejte pole délky N podle hodnot prvků Měřítko efektivity: * počet porovnání * počet přesunů NPRG030 Programování

Více

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Maturitní otázky z předmětu PROGRAMOVÁNÍ Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace Maturitní otázky z předmětu PROGRAMOVÁNÍ 1. Algoritmus a jeho vlastnosti algoritmus a jeho vlastnosti, formy zápisu algoritmu ověřování správnosti

Více

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7 Pascal Katedra aplikované kybernetiky Ing. Miroslav Vavroušek Verze 7 Proměnné Proměnná uchovává nějakou informaci potřebnou pro práci programu. Má ve svém oboru platnosti unikátní jméno. (Připadne, musí

Více

Algoritmizace. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Algoritmizace. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Úvod stránky předmětu: https://cw.felk.cvut.cz/doku.php/courses/a4b33alg/start cíle předmětu Cílem je schopnost samostatné implementace různých variant základních

Více

NPRG030 Programování I, 2018/19 1 / :25:37

NPRG030 Programování I, 2018/19 1 / :25:37 NPRG030 Programování I, 2018/19 1 / 26 24. 9. 2018 10:25:37 Čísla v algoritmech a programech 10 26 Poloměr vesmíru 2651 studujících studentů MFF UK 3.142857... Ludolfovo číslo 10 16 stáří vesmíru v sekundách!!!

Více

Struktura programu v době běhu

Struktura programu v době běhu Struktura programu v době běhu Miroslav Beneš Dušan Kolář Struktura programu v době běhu Vztah mezi zdrojovým programem a činností přeloženého programu reprezentace dat správa paměti aktivace podprogramů

Více

Algoritmy I, složitost

Algoritmy I, složitost A0B36PRI - PROGRAMOVÁNÍ Algoritmy I, složitost České vysoké učení technické Fakulta elektrotechnická v 1.01 Rychlost... Jeden algoritmus (program, postup, metoda ) je rychlejší než druhý. Co ta věta znamená??

Více

V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2

V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2 Euklidův algoritmus Doprovodný materiál pro cvičení Programování I. NPRM044 Autor: Markéta Popelová Datum: 31.10.2010 Euklidův algoritmus verze 1.0 Zadání: Určete největšího společného dělitele dvou zadaných

Více

VYŠŠÍ ODBORNÁ ŠKOLA a STŘEDNÍ PRŮMYSLOVÁ ŠKOLA Mariánská 1100, 407 47 Varnsdorf PROGRAMOVÁNÍ FUNKCE, REKURZE, CYKLY

VYŠŠÍ ODBORNÁ ŠKOLA a STŘEDNÍ PRŮMYSLOVÁ ŠKOLA Mariánská 1100, 407 47 Varnsdorf PROGRAMOVÁNÍ FUNKCE, REKURZE, CYKLY Jméno a příjmení: Školní rok: Třída: VYŠŠÍ ODBORNÁ ŠKOLA a STŘEDNÍ PRŮMYSLOVÁ ŠKOLA Mariánská 1100, 407 47 Varnsdorf 2007/2008 VI2 PROGRAMOVÁNÍ FUNKCE, REKURZE, CYKLY Petr VOPALECKÝ Číslo úlohy: Počet

Více

Binární vyhledávací strom pomocí směrníků Miroslav Hostaša L06620

Binární vyhledávací strom pomocí směrníků Miroslav Hostaša L06620 Binární vyhledávací strom pomocí směrníků Miroslav Hostaša L06620 1. Vymezení pojmů Strom: Strom je takové uspořádání prvků - vrcholů, ve kterém lze rozeznat předchůdce - rodiče a následovníky - syny.

Více

Dynamické datové struktury III.

Dynamické datové struktury III. Dynamické datové struktury III. Halda. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované

Více

Obsah přednášky. Analýza algoritmu Algoritmická složitost Návrhy algoritmů Urychlování algoritmů 1/41

Obsah přednášky. Analýza algoritmu Algoritmická složitost Návrhy algoritmů Urychlování algoritmů 1/41 Obsah přednášky Analýza algoritmu Algoritmická složitost Návrhy algoritmů Urychlování algoritmů 1/41 Analýza algoritmu Proč vůbec dělat analýzu? pro většinu problémů existuje několik různých přístupů aby

Více

Úvod do programování

Úvod do programování Úvod do programování Základní literatura Töpfer, P.: Algoritmy a programovací techniky, Prometheus, Praha učebnice algoritmů, nikoli jazyka pokrývá velkou část probíraných algoritmů Satrapa, P.: Pascal

Více

Grafové algoritmy. Programovací techniky

Grafové algoritmy. Programovací techniky Grafové algoritmy Programovací techniky Grafy Úvod - Terminologie Graf je datová struktura, skládá se z množiny vrcholů V a množiny hran mezi vrcholy E Počet vrcholů a hran musí být konečný a nesmí být

Více

10. Složitost a výkon

10. Složitost a výkon Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 10 1 Základy algoritmizace 10. Složitost a výkon doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Jiří

Více

Grafové algoritmy. Programovací techniky

Grafové algoritmy. Programovací techniky Grafové algoritmy Programovací techniky Grafy Úvod - Terminologie Graf je datová struktura, skládá se z množiny vrcholů V a množiny hran mezi vrcholy E Počet vrcholů a hran musí být konečný a nesmí být

Více

Složitost. Teoretická informatika Tomáš Foltýnek

Složitost. Teoretická informatika Tomáš Foltýnek Složitost Teoretická informatika Tomáš Foltýnek foltynek@pef.mendelu.cz Teoretická informatika 2 Opakování z minulé přednášky Co říká Churchova teze? Jak lze kódovat Turingův stroj? Co je to Univerzální

Více

Anotace. Informace o praktiku z programování!!! Direktivy překladače Soubory (textové) Quicksort Metoda rozděl a panuj

Anotace. Informace o praktiku z programování!!! Direktivy překladače Soubory (textové) Quicksort Metoda rozděl a panuj Anotace Informace o praktiku z programování!!! Direktivy překladače Soubory (textové) Quicksort Metoda rozděl a panuj Direktivy překladače Překladač kontroluje plno věcí, například: zda nekoukáme za konec

Více

Algoritmy na ohodnoceném grafu

Algoritmy na ohodnoceném grafu Algoritmy na ohodnoceném grafu Dvě základní optimalizační úlohy: Jak najít nejkratší cestu mezi dvěma vrcholy? Dijkstrův algoritmus s t Jak najít minimální kostru grafu? Jarníkův a Kruskalův algoritmus

Více

Úvod. Programovací paradigmata

Úvod. Programovací paradigmata .. Úvod. Programovací paradigmata Programovací techniky doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Cíl: programování efektivně a bezpečně Programovací techniky

Více

Programy v prostředí operačního systému

Programy v prostředí operačního systému .. Programy v prostředí operačního systému Programovací techniky doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Standardní soubory Programovací techniky Programy v

Více

Je n O(n 2 )? Je n 2 O(n)? Je 3n 5 +2n Θ(n 5 )? Je n 1000 O(2 n )? Je 2 n O(n 2000 )? Cvičení s kartami aneb jak rychle roste exponenciála.

Je n O(n 2 )? Je n 2 O(n)? Je 3n 5 +2n Θ(n 5 )? Je n 1000 O(2 n )? Je 2 n O(n 2000 )? Cvičení s kartami aneb jak rychle roste exponenciála. Příklady: Je n O(n 2 )? Je n 2 O(n)? Je 3n 5 +2n 3 +1000 Θ(n 5 )? Je n 1000 O(2 n )? Je 2 n O(n 2000 )? Cvičení s kartami aneb jak rychle roste exponenciála. Další pojmy složitosti Složitost v nejlepším

Více

4. Rekurze. BI-EP1 Efektivní programování Martin Kačer

4. Rekurze. BI-EP1 Efektivní programování Martin Kačer 4. Rekurze BI-EP1 Efektivní programování 1 ZS 2011/2012 Ing. Martin Kačer, Ph.D. 2010-11 Martin Kačer Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v Praze

Více

TGH09 - Barvení grafů

TGH09 - Barvení grafů TGH09 - Barvení grafů Jan Březina Technical University of Liberec 15. dubna 2013 Problém: Najít obarvení států na mapě tak, aby žádné sousední státy neměli stejnou barvu. Motivační problém Problém: Najít

Více

Rekurzivní sledování paprsku

Rekurzivní sledování paprsku Rekurzivní sledování paprsku 1996-2016 Josef Pelikán CGG MFF UK Praha pepca@cgg.mff.cuni.cz http://cgg.mff.cuni.cz/~pepca/ 1 / 21 Model dírkové kamery 2 / 21 Zpětné sledování paprsku L D A B C 3 / 21 Skládání

Více

Digitální učební materiál

Digitální učební materiál Digitální učební materiál Číslo projektu: CZ.1.07/1.5.00/34.0548 Název školy: Gymnázium, Trutnov, Jiráskovo náměstí 325 Název materiálu: VY_32_INOVACE_148_IVT Autor: Ing. Pavel Bezděk Tematický okruh:

Více

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ 1) PROGRAM, ZDROJOVÝ KÓD, PŘEKLAD PROGRAMU 3 2) HISTORIE TVORBY PROGRAMŮ 3 3) SYNTAXE A SÉMANTIKA 3 4) SPECIFIKACE

Více

NMIN102 Programování /2 Z, Zk

NMIN102 Programování /2 Z, Zk NMIN102 Programování 2 --- 2/2 Z, Zk Pavel Töpfer Katedra softwaru a výuky informatiky MFF UK MFF Malostranské nám., 4. patro, pracovna 404 pavel.topfer@mff.cuni.cz http://ksvi.mff.cuni.cz/~topfer Pavel

Více

IB111 Úvod do programování skrze Python

IB111 Úvod do programování skrze Python Vyhledávání, řazení, složitost IB111 Úvod do programování skrze Python 2014 1 / 48 Otrávené studny 8 studen, jedna z nich je otrávená laboratorní rozbor dokáže rozpoznat přítomnost jedu ve vodě je drahý

Více

Základy algoritmizace, návrh algoritmu

Základy algoritmizace, návrh algoritmu Základy algoritmizace, návrh algoritmu Algoritmus Předpoklady automatického výpočtu: předem stanovit (rozmyslet) přesný postup během opakovaného provádění postupu již nepřemýšlet a postupovat mechanicky

Více

12. Globální metody MI-PAA

12. Globální metody MI-PAA Jan Schmidt 2011 Katedra číslicového návrhu Fakulta informačních technologií České vysoké učení technické v Praze Zimní semestr 2011/12 MI-PAA EVROPSKÝ SOCIÁLNÍ FOND PRAHA & EU: INVESTUJENE DO VAŠÍ BUDOUCNOSTI

Více

Různé algoritmy mají různou složitost

Různé algoritmy mají různou složitost / 1 Různé algoritmy mají různou složitost 1/ 1 Rychlost... Jeden algoritmus (program, postup, metoda ) je rychlejší než druhý. Co ta věta znamená?? 2/ 1 Asymptotická složitost y y x x Každému algoritmu

Více

Činnost: 1) Vyhodnotí se výraz E. 2) Jeho hodnota se uloží do proměnné V.

Činnost: 1) Vyhodnotí se výraz E. 2) Jeho hodnota se uloží do proměnné V. Přiřazovací příkaz V := E, V jednoduchá nebo indexovaná proměnná, E výraz, jehož typ je kompatibilní podle přiřazení s typem proměnné V. 1) Vyhodnotí se výraz E. 2) Jeho hodnota se uloží do proměnné V.

Více

1. D Y N A M I C K É DAT O V É STRUKTUR Y

1. D Y N A M I C K É DAT O V É STRUKTUR Y 1. D Y N A M I C K É DAT O V É STRUKTUR Y Autor: Petr Mik Abychom se mohli pustit do dynamických datových struktur, musíme se nejdřív podívat na datový typ ukazatel. 1. D AT O V Ý TYP U K A Z AT E L Datové

Více

Použití dalších heuristik

Použití dalších heuristik Použití dalších heuristik zkracování cesty při FIND-SET UNION podle hodností Datové struktury... p[x] - předchůdce uzlu x MAKE-SET(x) p[x] := x hod[x] := 0 hod[x] - hodnost (aprox. výšky) UNION(x,y) LINK(FIND-SET(x),

Více

TGH05 - aplikace DFS, průchod do šířky

TGH05 - aplikace DFS, průchod do šířky TGH05 - aplikace DFS, průchod do šířky Jan Březina Technical University of Liberec 31. března 2015 Grafová formulace CPM (critical path method) Orientovaný acyklický graf (DAG) je orientovaný graf neobsahující

Více

Pracovní listy - programování (algoritmy v jazyce Visual Basic) Algoritmus

Pracovní listy - programování (algoritmy v jazyce Visual Basic) Algoritmus Pracovní listy - programování (algoritmy v jazyce Visual Basic) Předmět: Seminář z informatiky a výpočetní techniky Třída: 3. a 4. ročník vyššího stupně gymnázia Algoritmus Zadání v jazyce českém: 1. Je

Více

Programování 3. hodina. RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015

Programování 3. hodina. RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015 Programování 3. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015 Umíme z minulé hodiny Implementace zásobníku a fronty pomocí

Více

Dynamické programování

Dynamické programování Dynamické programování prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA)

Více

Úvod do teorie grafů

Úvod do teorie grafů Úvod do teorie grafů Neorientovaný graf G = (V,E,I) V množina uzlů (vrcholů) - vertices E množina hran - edges I incidence incidence je zobrazení, buď: funkce: I: E V x V relace: I E V V incidence přiřadí

Více

Rekurze a rychlé třídění

Rekurze a rychlé třídění Rekurze a rychlé třídění Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 2017 1 / 54 Rekurze Rychlé třídění 2 / 54 Rekurze Recursion Rekurze = odkaz na sama sebe, definice za pomoci sebe

Více

Vyhodnocování dotazů slajdy k přednášce NDBI001. Jaroslav Pokorný MFF UK, Praha

Vyhodnocování dotazů slajdy k přednášce NDBI001. Jaroslav Pokorný MFF UK, Praha Vyhodnocování dotazů slajdy k přednášce NDBI001 Jaroslav Pokorný MFF UK, Praha pokorny@ksi.mff.cuni.cz Časová a prostorová složitost Jako dlouho trvá dotaz? CPU (cena je malá; snižuje se; těžko odhadnutelná)

Více

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr Seminář z IVT Algoritmizace Slovanské gymnázium Olomouc Tomáš Kühr Algoritmizace - o čem to je? Zatím jsme se zabývali především tím, jak určitý postup zapsat v konkrétním programovacím jazyce (např. C#)

Více

Algoritmy a datové struktury

Algoritmy a datové struktury Algoritmy a datové struktury Stromy 1 / 32 Obsah přednášky Pole a seznamy Stromy Procházení stromů Binární stromy Procházení BS Binární vyhledávací stromy 2 / 32 Pole Hledání v poli metodou půlení intervalu

Více

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2013/2014 Radim Farana. Obsah. Strom

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2013/2014 Radim Farana. Obsah. Strom 8 Podklady ředmětu ro akademický rok 2013/2014 Radim Farana Obsah 2 Dynamické datové struktury. Strom. Binární stromy. Vyhledávací stromy. Vyvážené stromy. AVL stromy. Strom 3 Název z analogie se stromy.

Více

Elegantní algoritmus pro konstrukci sufixových polí

Elegantní algoritmus pro konstrukci sufixových polí Elegantní algoritmus pro konstrukci sufixových polí 22.10.2014 Zadání Obsah Zadání... 3 Definice... 3 Analýza problému... 4 Jednotlivé algoritmy... 4 Algoritmus SA1... 4 Algoritmus SA2... 5 Algoritmus

Více

5. Vyhledávání a řazení 1

5. Vyhledávání a řazení 1 Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 5 1 Základy algoritmizace 5. Vyhledávání a řazení 1 doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze

Více

Anotace. Spojové seznamy, haldy. AVL-stromy, A-B stromy. Martin Pergel,

Anotace. Spojové seznamy, haldy. AVL-stromy, A-B stromy. Martin Pergel, Anotace Spojové seznamy, fronta a zásobník. Vyvážené binární stromy, AVL-stromy, červeno-černé stromy, A-B stromy. Hashování, haldy. Typologie spojových seznamů jednosměrný a obousměrný prvek ukazuje jen

Více

Úvod do programování 10. hodina

Úvod do programování 10. hodina Úvod do programování 10. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015 Umíme z minulé hodiny Syntax Dvojrozměrné pole

Více

Složitost algoritmů. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.

Složitost algoritmů. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol. Složitost algoritmů Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol., 2017 Datové struktury a algoritmy, B6B36DSA 02/2017, Lekce 3

Více

TGH05 - aplikace DFS, průchod do šířky

TGH05 - aplikace DFS, průchod do šířky TGH05 - aplikace DFS, průchod do šířky Jan Březina Technical University of Liberec 28. března 2017 Grafová formulace CPM (critical path method) Orientovaný acyklický graf (DAG) je orientovaný graf neobsahující

Více

NP-ÚPLNÉ PROBLÉMY. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

NP-ÚPLNÉ PROBLÉMY. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze NP-ÚPLNÉ PROBLÉMY Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2010/2011, Lekce 13 Evropský sociální fond Praha & EU: Investujeme do

Více

Náznak ukázky syntaxe a sémantiky pro projekt. 1 Syntaktické prvky. Poslední aktualizace: 8.

Náznak ukázky syntaxe a sémantiky pro projekt. 1 Syntaktické prvky. Poslední aktualizace: 8. Jednoduchý interpretační překladač Náznak ukázky syntaxe a sémantiky pro projekt Šárka Vavrečková Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz Poslední aktualizace: 8. ledna 2008 1 Syntaktické

Více

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik; Vícerozměrné pole type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik; M[2,3] := 3145; - počet indexů není omezen (v praxi obvykle nejvýše tři) - více indexů pomalejší přístup k prvku (počítá

Více

Stromy. Jan Hnilica Počítačové modelování 14

Stromy. Jan Hnilica Počítačové modelování 14 Stromy Jan Hnilica Počítačové modelování 14 1 Základní pojmy strom = dynamická datová struktura, složená z vrcholů (uzlů, prvků) propojených hranami hrany chápeme jako orientované, tzn. vedou z uzlu A

Více

Implementace seznamů do prostředí DELPHI pomocí lineárního seznamu

Implementace seznamů do prostředí DELPHI pomocí lineárního seznamu Implementace seznamů do prostředí DELPHI pomocí lineárního seznamu Ukazatel a dynamické datové struktury v prostředí DELPHI Důležitým termínem a konstrukčním programovým prvkem je typ UKAZATEL. Je to vlastně

Více

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program Denotační sémantika programovacího jazyka doc. Dr. Ing. Miroslav Beneš katedra informatiky, A-1007 59 732 4213 Obsah přednášky Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup

Více

2. úkol MI-PAA. Jan Jůna (junajan) 3.11.2013

2. úkol MI-PAA. Jan Jůna (junajan) 3.11.2013 2. úkol MI-PAA Jan Jůna (junajan) 3.11.2013 Specifikaci úlohy Problém batohu je jedním z nejjednodušších NP-těžkých problémů. V literatuře najdeme množství jeho variant, které mají obecně různé nároky

Více

Poslední nenulová číslice faktoriálu

Poslední nenulová číslice faktoriálu Poslední nenulová číslice faktoriálu Kateřina Bambušková BAM015, I206 Abstrakt V tomto článku je popsán a vyřešen problém s určením poslední nenulové číslice faktoriálu přirozeného čísla N. Celý princip

Více

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje f1(&pole[4]); funkci f1 předáváme hodnotu 4. prvku adresu 4. prvku adresu 5. prvku hodnotu 5. prvku symbolická konstanta pro konec souboru je eof EOF FEOF feof Správné vytvoření a otevření textového souboru

Více

Spojová implementace lineárních datových struktur

Spojová implementace lineárních datových struktur Spojová implementace lineárních datových struktur doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 13. března 2017 Jiří Dvorský (VŠB

Více

Úvod do informatiky. Miroslav Kolařík

Úvod do informatiky. Miroslav Kolařík Úvod do informatiky přednáška desátá Miroslav Kolařík Zpracováno dle R. Bělohlávek, V. Vychodil: Diskrétní matematika 2, http://phoenix.inf.upol.cz/esf/ucebni/dm2.pdf P. Martinek: Základy teoretické informatiky,

Více

Základy algoritmizace a programování

Základy algoritmizace a programování Základy algoritmizace a programování Složitost algoritmů. Třídění Přednáška 8 16. listopadu 2009 Který algoritmus je "lepší"? Různé algoritmy, které řeší stejnou úlohu zbytek = p % i; zbytek = p - p/i*i;

Více

Algoritmizace řazení Bubble Sort

Algoritmizace řazení Bubble Sort Algoritmizace řazení Bubble Sort Cílem této kapitoly je seznámit studenta s třídícím algoritmem Bubble Sort, popíšeme zde tuto metodu a porovnáme s jinými algoritmy. Klíčové pojmy: Třídění, Bubble Sort,

Více

Implementace aritmetického stromu pomocí směrníků

Implementace aritmetického stromu pomocí směrníků Implementace aritmetického stromu pomocí směrníků Úvod Aritmetický strom je binární strom, který má ve vnitřních uzlech matematické operátory (+, -, /, *) a v listech (vrcholech) má operandy (např. čísla

Více

Dynamické programování

Dynamické programování ALG 11 Dynamické programování Úloha batohu neomezená Úloha batohu /1 Úloha batohu / Knapsack problem Máme N předmětů, každý s váhou Vi a cenou Ci (i = 1, 2,..., N) a batoh s kapacitou váhy K. Máme naložit

Více

Programovací jazyk Pascal

Programovací jazyk Pascal Programovací jazyk Pascal Syntaktická pravidla (syntaxe jazyka) přesná pravidla pro zápis příkazů Sémantická pravidla (sémantika jazyka) pravidla, která každému příkazu přiřadí přesný význam Všechny konstrukce

Více

Adresní vyhledávání (přímý přístup, zřetězené a otevřené rozptylování, rozptylovací funkce)

Adresní vyhledávání (přímý přístup, zřetězené a otevřené rozptylování, rozptylovací funkce) 13. Metody vyhledávání. Adresní vyhledávání (přímý přístup, zřetězené a otevřené rozptylování, rozptylovací funkce). Asociativní vyhledávání (sekvenční, binárním půlením, interpolační, binární vyhledávací

Více

Příklady: (y + (sin(2*x) + 1)*2)/ /2 * 5 = 8.5 (1+3)/2 * 5 = /(2 * 5) = 1.3. Pavel Töpfer, 2017 Programování 1-3 1

Příklady: (y + (sin(2*x) + 1)*2)/ /2 * 5 = 8.5 (1+3)/2 * 5 = /(2 * 5) = 1.3. Pavel Töpfer, 2017 Programování 1-3 1 Výraz - syntaxe i sémantika podobné jako v matematice - obsahuje proměnné, konstanty, operátory, závorky, volání funkcí - všechny operátory nutno zapisovat (nelze např. vynechat znak násobení) - argumenty

Více

IB108 Sada 1, Příklad 1 Vypracovali: Tomáš Krajča (255676), Martin Milata (256615)

IB108 Sada 1, Příklad 1 Vypracovali: Tomáš Krajča (255676), Martin Milata (256615) IB108 Sada 1, Příklad 1 ( ) Složitost třídícího algoritmu 1/-Sort je v O n log O (n.71 ). Necht n = j i (velikost pole, které je vstupním parametrem funkce 1/-Sort). Lehce spočítáme, že velikost pole předávaná

Více

5 Rekurze a zásobník. Rekurzivní volání metody

5 Rekurze a zásobník. Rekurzivní volání metody 5 Rekurze a zásobník Při volání metody z metody main() se do zásobníku uloží aktivační záznam obsahující - parametry - návratovou adresu, tedy adresu, kde bude program pokračovat v metodě main () po skončení

Více

PROGRAMOVÁNÍ V JAZYCE C V PŘÍKLADECH 11 Dynamické datové struktury 11.1 Spojové struktury... 11-1 11.2 Příklad PROG_11-01... 11-2 11.

PROGRAMOVÁNÍ V JAZYCE C V PŘÍKLADECH 11 Dynamické datové struktury 11.1 Spojové struktury... 11-1 11.2 Příklad PROG_11-01... 11-2 11. David Matoušek Programování v jazyce C v pøíkladech Praha 2011 David Matoušek Programování v jazyce C v pøíkladech Bez pøedchozího písemného svolení nakladatelství nesmí být kterákoli èást kopírována nebo

Více