Časová a prostorová složitost algoritmů

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

Časová složitost / Time complexity

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

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

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

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

Dynamické datové struktury IV.

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

Dynamické datové typy a struktury

Stromy, haldy, prioritní fronty

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

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

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

Digitální učební materiál

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

IB111 Úvod do programování skrze Python

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

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

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

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

Rekurzivní algoritmy

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.

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

Algoritmizace prostorových úloh

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

O datových typech a jejich kontrole

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

Datové struktury 2: Rozptylovací tabulky

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

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

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

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

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

Struktura programu v době běhu

Algoritmy I, složitost

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

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

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

Dynamické datové struktury III.

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

Úvod do programování

Grafové algoritmy. Programovací techniky

10. Složitost a výkon

Grafové algoritmy. Programovací techniky

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

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

Algoritmy na ohodnoceném grafu

Úvod. Programovací paradigmata

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

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.

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

TGH09 - Barvení grafů

Rekurzivní sledování paprsku

Digitální učební materiál

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

NMIN102 Programování /2 Z, Zk

IB111 Úvod do programování skrze Python

Základy algoritmizace, návrh algoritmu

12. Globální metody MI-PAA

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

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

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

Použití dalších heuristik

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

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

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

Dynamické programování

Úvod do teorie grafů

Rekurze a rychlé třídění

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

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

Algoritmy a datové struktury

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

Elegantní algoritmus pro konstrukci sufixových polí

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

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

Úvod do programování 10. hodina

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

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

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

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

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

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

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

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

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

Poslední nenulová číslice faktoriálu

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

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

Úvod do informatiky. Miroslav Kolařík

Základy algoritmizace a programování

Algoritmizace řazení Bubble Sort

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

Dynamické programování

Programovací jazyk Pascal

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

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

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

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

PROGRAMOVÁNÍ V JAZYCE C V PŘÍKLADECH 11 Dynamické datové struktury 11.1 Spojové struktury Příklad PROG_

Transkript:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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