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

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

Digitální učební materiál

Úvod do programování

Základy algoritmizace a programování

Digitální učební materiál

IB111 Úvod do programování skrze Python

Digitální učební materiál

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

Časová a prostorová složitost algoritmů

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

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

Algoritmy I, složitost

Algoritmizace řazení Bubble Sort

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

IB111 Úvod do programování skrze Python

Sada 1 - Základy programování

Digitální učební materiál

Složitosti základních operací B + stromu

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

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 12.

Časová složitost algoritmů

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Třídění dat. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_26 04

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

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

Informatika navazující magisterské studium Přijímací zkouška z informatiky 2018 varianta A

Algoritmus pro hledání nejkratší cesty orientovaným grafem

Algoritmizace prostorových úloh

Pole a kolekce. v C#, Javě a C++

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

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

3 Co je algoritmus? Trocha historie Definice algoritmu Vlastnosti algoritmu... 3

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

Vzdálenost uzlů v neorientovaném grafu

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

bin arn ı vyhled av an ı a bst Karel Hor ak, Petr Ryˇsav y 23. bˇrezna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT

NMIN102 Programování /2 Z, Zk

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

Cvičení Programování I. Stručné poznámky ke cvičení ze

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

ˇ razen ı rychlejˇ s ı neˇ z kvadratick e Karel Hor ak, Petr Ryˇsav y 20. dubna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT

A4B33ALG 2010/05 ALG 07. Selection sort (Select sort) Insertion sort (Insert sort) Bubble sort deprecated. Quicksort.

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly.

Algoritmy a datové struktury

Programování: základní konstrukce, příklady, aplikace. IB111 Programování a algoritmizace

Algoritmizace. 1. Úvod. Algoritmus

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

Hledáme efektivní řešení úloh na grafu

Časová složitost algoritmů, řazení a vyhledávání

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

INFORMATIKA. Vybrané podposloupnosti

1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1

NPRG030 Programování I 3/2 Z --- NPRG031 Programování II --- 2/2 Z, Zk

DobSort. Úvod do programování. DobSort Implementace 1/3. DobSort Implementace 2/3. DobSort - Příklad. DobSort Implementace 3/3

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

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

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

NMIN101 Programování 1 2/2 Z --- NMIN102 Programování /2 Z, Zk

Digitální učební materiál

10. Složitost a výkon

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

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

Závěrečná zkouška z informatiky 2011

Aproximace funkcí. x je systém m 1 jednoduchých, LN a dostatečně hladkých funkcí. x c m. g 1. g m. a 1. x a 2. x 2 a k. x k b 1. x b 2.

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

Základní informace o předmětu Otázka:

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

Pojem algoritmus. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

66. ročník Matematické olympiády 2016/2017

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

bfs, dfs, fronta, zásobník, prioritní fronta, halda

bfs, dfs, fronta, zásobník, prioritní fronta, halda

Rekurzivní algoritmy

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

Poslední nenulová číslice faktoriálu

Standardní algoritmy vyhledávací.

Dynamické programování

IAJCE Přednáška č. 9. int[] pole = new int[pocet] int max = pole[0]; int id; for(int i =1; i< pole.length; i++) { // nikoli 0 if (Pole[i] > max) {

Grafové algoritmy. Programovací techniky

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

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.

Rekurzivní sledování paprsku

Michal Krátký. Úvod do programování. Cíl kurzu. Podmínky získání zápočtu III/III

( 2 ) ( 8) Nerovnice, úpravy nerovnic. Předpoklady: 2114, Nerovnice například 2x

Watkinsův algoritmus řádkového rozkladu

Grafové algoritmy. Programovací techniky

Přijímací zkouška z informatiky Dz

Intervalové stromy. Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme. 1. Změna jednoho čísla v posloupnosti.

8. Rekurze. doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze

Elegantní algoritmus pro konstrukci sufixových polí

Jak pracuje internetový vyhledávač

Numerické řešení rovnice f(x) = 0

Digitální učební materiál

Datové struktury 2: Rozptylovací tabulky

Digitální učební materiál

Maturitní téma: Programovací jazyk JAVA

Základy řazení. Karel Richta a kol.

Návrh Designu: Radek Mařík

Přijímací zkouška na navazující magisterské studium 2017

1 Mnohočleny a algebraické rovnice

Transkript:

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

Putovní přednášky Obecná informatika Lineární algebra (Ne)bezpečnost v počítačových sítích Hledání cest Povídání o studiu nejen na MFF Přednášející Putovních přednášek (MFF UK) Obecná informatika Podzim 2012 2 / 18

Cíle přednášek Představit vysokoškolskou informatiku K čemu je dobré učit se matematiku Jak vypadá studium na matfyzu Přednášející Putovních přednášek (MFF UK) Obecná informatika Podzim 2012 3 / 18

Přednáška o obecné informatice Jaké problémy řešíme? Postup řešení algoritmus Porovnávání algoritmů dle rychlosti Příklady Přednášející Putovních přednášek (MFF UK) Obecná informatika Podzim 2012 4 / 18

Problémy v informatice Úloha, kterou lze řešit počítačem Případně provádí řešení robot nebo člověk Počítač dostane vstupní data a má něco spočítat Například: Vypiš číslo na obrazovku Seřad čísla dle velikosti Jaká je nejkratší cesta z Aše do Brna? V jakém pořadí má projít pošt ák vesnicemi? Přednášející Putovních přednášek (MFF UK) Obecná informatika Podzim 2012 5 / 18

Řešení problému Hledáme postup, jak úlohu vyřešit Pro jakákoliv vstupní data Takový postup nazýváme algoritmem Počítačový program je algoritmus zapsaný v programovacím jazyce Přednášející Putovních přednášek (MFF UK) Obecná informatika Podzim 2012 6 / 18

Příklad algoritmu Výpočet faktoriálu čísla n, tedy n! = n (n 1) (n 2)... 3 2 1 Proměnnou faktorial nastavíme na 1 a pak násobíme čísly od 1 do n Zápis v programovacím jazyce Pascal: var i, n, faktorial: integer; begin read(n); faktorial := 1; for i := 1 to n do begin faktorial := faktorial * i; end; writeln(faktorial); end. Přednášející Putovních přednášek (MFF UK) Obecná informatika Podzim 2012 7 / 18

Správnost algoritmu Intuitivně, pokud vydá správný výsledek...... pokud se však zastaví! Správnost je třeba zdůvodňovat, často není vidět řednášející Putovních přednášek (MFF UK) Obecná informatika Podzim 2012 8 / 18

Porovnávání algoritmů Chceme rychlé algoritmy nenáročné na pamět Jak měřit rychlost algoritmů? Stopovat čas běhu na různých vstupních datech Počítat operace, které algoritmus provede Přednášející Putovních přednášek (MFF UK) Obecná informatika Podzim 2012 9 / 18

Časová složitost algoritmu Závislost počtu provedených operací na velikosti vstupu (N) Lze vyjádřit funkcí, např. 10 N 2 + 100 N + 42 Zajímají nás velké vstupy Méně významné členy lze vynechat, zbude 10 N 2 Násobící konstanty také vynecháváme, dostaneme N 2 Získáme asymptotickou časovou složitost, značí se O(N 2 ) Náročnost algoritmu na pamět se měří podobně Přednášející Putovních přednášek (MFF UK) Obecná informatika Podzim 2012 10 / 18

Časová složitost algoritmu Doba běhu algoritmu s časovou složitostí f (N) pro vstupní data velikosti N: Pokud počítač provede 1 milion operací za sekundu f (N) Velikost dat (N) 20 40 60 80 100 500 1000 N 20 µs 40 µs 60 µs 80 µs 0.1 ms 0.5 ms 1 ms N log N 86 µs 0.2 ms 0.35 ms 0.5 ms 0.7 ms 4.5 ms 10 ms N 2 0.4 ms 1.6 ms 3.6 ms 6.4 ms 10 ms 0.25 s 1 s N 3 8 ms 64 ms 0.22 s 0.5 s 1 s 125 s 17 min 2 N 1 s 11.7 dní 36 000 let N! 77 000 let Přednášející Putovních přednášek (MFF UK) Obecná informatika Podzim 2012 11 / 18

Vyhledávání v seznamu čísel Máme dlouhý seznam N čísel, např. 5 1 42 12 7 9 7 2 3 Chceme zjistit, jestli se v ní nachází číslo X Projdeme posloupnost a každé číslo porovnáme s X Co kdyby byla čísla seřazená od nejmenšího po největší? Podíváme se na číslo v půlce seznamu a porovnáme ho s X Je-li např. menší než X, může se X nacházet jen vpravo od půlky Půĺıme úsek seznamu, kde může číslo X být Algoritmus se jmenuje půlení intervalu Časová složitost O(log N) Hodí se tedy umět řadit čísla Přednášející Putovních přednášek (MFF UK) Obecná informatika Podzim 2012 12 / 18

Řazení čísel Chceme seřadit posloupnost N čísel Bublinkový algoritmus: V jednom průchodu polem porovnává sousední prvky od začátku Pokud jsou v opačném pořadí, než mají být, prohodí je Pole projde N-krát Jaká je jeho časová složitost? Jak zdůvodnit správnost? Musíme vždy projít pole N-krát? Přednášející Putovních přednášek (MFF UK) Obecná informatika Podzim 2012 13 / 18

Rekurzivní algoritmus Volá sám sebe typicky na menší data Rekurzivní funkce v programu volá sama sebe Příklad: faktoriál function faktorial(n: integer): integer; begin if n = 1 then return 1 else return n * faktorial(n - 1); end; Přednášející Putovních přednášek (MFF UK) Obecná informatika Podzim 2012 14 / 18

Řazení čísel rekurzivně Třídění sléváním Rozděĺıme pole na dvě poloviny Pokud mají víc než 1 prvek Obě poloviny setřídíme rekurzivně Poloviny pole slijeme do jednoho setříděného pole Odebíráme menší z prvků na začátcích polovin Přednášející Putovních přednášek (MFF UK) Obecná informatika Podzim 2012 15 / 18

Úloha s lyžařem Lyžař sjíždí sjezdovku a sbírá mince 3 5 3 2 1 2 1 3 2 1 4 4 1 4 3 2 1 1 2 4 2 2 2 2 2 3 2 1 Přednášející Putovních přednášek (MFF UK) Obecná informatika Podzim 2012 16 / 18

Shrnutí Máte problém? Vymyslete algoritmus. Zdůvodněte správnost. Určete časovou složitost. Problém vyřešen :-) Přednášející Putovních přednášek (MFF UK) Obecná informatika Podzim 2012 17 / 18

Děkuji za pozornost. Dotazy? Přednášející Putovních přednášek (MFF UK) Obecná informatika Podzim 2012 18 / 18