Složitost UPR 2008/09 1

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

Download "Složitost UPR 2008/09 1"

Transkript

1 Složitost UPR 2008/09 1

2 Ohodnocení algoritmu Jak porovnávat efektivitu algoritmů? Požadavky na paměť Požadavky na rychlost výpočtu Asymptotická složitost UPR 2008/09 2

3 Měření algoritmu Dvě míry: čas x paměť Jak změřit časovou (paměťovou) náročnost výpočtu? Časová náročnost - délka výpočtu počet kroků (operací) Paměťová náročnost výpočtu - rozsah použité pracovní paměti UPR 2008/09 3

4 Sledované operace Přiřazení Operace porovnávání Logické operace Aritmetické operace Doba trvání jednotlivých operací UPR 2008/09 4

5 Jak analyzovat složitost Závislost času (paměti) Velikost vstupních dat (n) (rozsah použité paměti) Zjednodušení - časovou složitost algoritmu chápeme jako funkci velikosti vstupu UPR 2008/09 5

6 Určení n - velikosti vstupu Vstup - prvky posloupnosti a 1, a 2,..., a n n - počet prvků posloupnosti Vstup čtvercová matice A n - řád matice A UPR 2008/09 6

7 Násobení čtvercových matic for (int i = 0; i < N; i++) { } } for (int j = 0; j < N; j++) { c[i][j] = 0 for (int k = 0; k < N; k++) { c[i][j] = c[i][j]+a[i][k]*b[k][j] } N N * N * N 3 UPR 2008/09 7

8 Počet operací Pro násobení matic (pro předchozí algoritmus) jsme schopni počet operací určit přesně dimenze matic n n počet operací násobení n 3 Je možné vždy určit počet operací? Jak porovnávat algoritmy, kdy neznáme přesný počet operací? UPR 2008/09 8

9 Přístupy k analýze složitosti Nejlepší případ? Průměrný případ? (součet délek výpočtů nad všemi vstupy délky n)/(počet vstupů délky n) Nejhorší případ? (nejdelší výpočet daným algoritmem pro vstup o velikost n) Představuje tedy pouze horní hranici pro nejhorší případ (tato hranice nemusí být vždy nejnižší hranicí). UPR 2008/09 9

10 Asymptotická složitost Chceme porovnávat algoritmy s různými funkcemi časové složitosti a není vymezen rozsah vstupních dat Lepší algoritmus je ten, jehož funkce časové složitosti má pomalejší rychlost růstu Asymptotická časová složitost UPR 2008/09 10

11 Asymptotická složitost Vzorec pro přesný počet provedených sledovaných operací je obtížné Určení řádového odhadu růstu rychlosti funkce časové složitosti Například časová složitost daná předpisem 5n 2 + 8n + 3 má časové nároky úměrné n 2 Říkáme, že funkce je řádu O(n 2 ) UPR 2008/09 11

12 Asymptotická složitost Čas algoritmu neporoste rychleji než funkce t(n) Funkce t(n) je funkcí O(g(n)), pokud c > 0 a n 0 Ν tak, že 0 t(n) c g(n) pro n n 0. Funkce t je funkcí Ω(g(n)), pokud c > 0 a n 0 Ν tak, že 0 c g(n) t(n) pro každé n n 0. Funkce t je funkcí Θ(g(n)), pokud (n) = O(g(n)) a t(n) = Ω(g(n)). UPR 2008/09 12

13 Funkce t(n) UPR 2008/09 13

14 Funkce časové složitosti O(1) O(log n) O(n) O(n log n) O(n 2 ) O(n 3 ) O(2 n ) O(n!) O(n n ) UPR 2008/09 14

15 Funkce časové složitosti n lg n n 7/6 n lg n n UPR 2008/09 15

16 Příklad Počet sledovaných operací C, velikost vstupních dat N C 1 = 1 C N = C N-1 +N pro N > 1 C 2 = C = 1+2; C 3 = C = 1+2+3;... C N = C N-1 + N = N = i = N(1+N)/2 = ½(N +N 2 ) C N = N(N+1)/2 Algoritmus se složitostí O(N 2 ) UPR 2008/09 16

17 Třídění UPR 2008/09 17

18 Třídící problém Je dána množina A = {a 1,a 2,...,a n }. Je potřebné najít permutaci π těchto n prvků, která zobrazuje danou posloupnost do neklesající posloupnosti a π(1), a π(2),...,a π(n) tak, že a π(1) a π(2)... a π(n). Množinu U, ze které vybíráme prvky tříděné množiny, nazýváme univerzum. UPR 2008/09 18

19 Třídící problém Prvky množiny U se nazývají klíče a informace vázaná na klíč spolu s klíčem se nazývá záznam. Jestliže je velikost vázané informace příliš velká je výhodnější utřídit jen klíče s patřičnými odkazy na vázané informace, které se v tomto případě nehýbají. Bez újmy na obecnosti budeme dále předpokládat, že třídíme pouze klíče. UPR 2008/09 19

20 Vlastnosti třídících metod Třídící metoda se nazývá stabilní, když zachovává relativní uspořádání záznamů se stejným klíčem. To znamená, že pro třídící permutaci platí: π(i)<π(j) a π(i) = a π(j) pro 1 i < j n. Stabilita třídění je často důležitá tehdy, když jsou prvky již uspořádané podle určitých sekundárních klíčů, to znamená vlastností, které samotný (primární) klíč neodráží. UPR 2008/09 20

21 Vlastnosti třídících metod Třídící algoritmus nazýváme přirozeným, jestliže jeho složitost roste resp. klesá v závislosti na míře setříděnosti vstupní posloupnosti tj. jestliže doba potřebná k setřídění již setříděné podmnožiny údajů je menší, než doba potřebná na setřídění zbývající nesetříděné podmnožiny. Pokud tato podmínka není splněna, pak se metoda označuje za nepřirozenou. UPR 2008/09 21

22 Vlastnosti třídících metod Třídění se nazývá in situ (neboli na původním místě), jestliže třídící algoritmus vyžaduje, kromě vlastního tříděného pole, pomocnou paměť pouze konstantního rozsahu. Jinými slovy algoritmus nepoužívá žádnou další paměť, jejíž velikost by byla závislá na rozsahu tříděných hodnot (např. další pole rozsahu n). UPR 2008/09 22

23 Klasifikace třídících algoritmů Při vnitřním třídění máme větší volnost při výběru vhodných datových struktur (pole, seznamy, stromy,.) a operací nad nimi. Naopak při vnějším třídění musíme vystačit jen se sekvenčním přístupem k prvkům tříděné množiny, a tedy třída přípustných algoritmů je oproti předcházejícímu případu značně omezená. UPR 2008/09 23

24 Složitost třídících algoritmů Složitost algoritmů bude dána počtem provedených významných operací. Pro vnitřní třídění považujeme za významné operace porovnávání klíčů a přesuny prvků. U vnějšího třídění hrají klíčovou roli operace přístupu do datových souborů. UPR 2008/09 24

25 Asociativní třídění UPR 2008/09 25

26 Třídění přímým vkládáním (Insertion Sort) Tento způsob třídění připomíná řazení karet. Postupně vybíráme jednu kartu za druhou a zařazujeme je na odpovídající místo podle barvy a hodnoty - klíče, ostatní ještě nezatříděné posuneme o jednu pozici. UPR 2008/09 26

27 Třídění přímým vkládáním Algoritmus: 1. První prvek pole ponecháme na svém místě. 2. Vezmeme druhý prvek a porovnáme jej s prvním. Je-li menší, zařadíme ho na první místo a první prvek posuneme, jinak je ponecháme na místě. 3. Vezmeme třetí prvek a porovnáme jej s prvními dvěma prvky. Je-li menší než některý z nich, zařadíme jej na odpovídající pozici a následující prvky podle potřeby posuneme. Jinak je ponecháme na původních místech. 4. Obdobně postupujeme i s ostatními prvky v poli. UPR 2008/09 27

28 Př: Je dána posloupnost čísel Setřiďte ji metodou přímého vkládání UPR 2008/09 28

29 Složitost Nejhorší případ nastává, jestliže zdrojová posloupnost je uspořádána v opačném pořadí. Počet porovnání pro i-tý prvek bude C i = i-1 a počet přesunů M i = C i +2. Celkový počet porovnání C max a přesunů M max pro nejhorší případ bude N 2 N 2 N N N + 3N Cmax = Ci = M max = M i = i= 2 2 i= 2 2 Složitost metody přímým vkládáním je tedy O(N 2 ). 4 UPR 2008/09 29

30 Třídění přímým výběrem (Selection Sort) Pro jednoduchost si představme posloupnost rozdělenou do dvou částí. V jedné části jsou již setříděné prvky, zatímco druhá část je nesetříděná. V nesetříděné části najdeme nejmenší prvek a přesuneme ho na konec setříděné části (vyměníme s posledním prvkem setříděné části). UPR 2008/09 30

31 Třídění přímým výběrem Algoritmus: 1. V posloupnosti najdeme nejmenší prvek a vyměníme ho s prvkem na první pozici. Tím dojde k rozdělení posloupnosti na dvě části. Setříděná část obsahuje pouze jeden prvek, nesetříděná N V nesetříděné části najdeme nejmenší prvek a vyměníme ho s prvním prvkem v nesetříděné části, čímž dojde k zařazení tohoto prvku do setříděné části. 3. Obsahuje-li nesetříděná část více než jeden prvek, pokračujeme bodem 2, jinak je třídění ukončeno. UPR 2008/09 31

32 Př: Je dána posloupnost čísel Setřiďte ji metodou přímého výběru UPR 2008/09 32

33 Složitost C = N 2 2 N M max N ( N 1) Složitost metody přímým výběrem je tedy O(N 2 ). UPR 2008/09 33

34 Bublinkové třídění (Bubble Sort) Třídění přímou výměnou sousedních prvků. Procházíme polem, porovnáváme dva sousední prvky a pokud nejsou v požadovaném pořadí, prohodíme je. UPR 2008/09 34

35 Algoritmus: Bublinkové třídění 1. Posloupnost rozdělíme na dvě části, setříděnou a nesetříděnou.setříděná část je prázdná. 2. Postupně porovnáme všechny sousední prvky v nesetříděné části a pokud nejsou v požadovaném pořadí, prohodíme je. 3. Krok 2 opakujeme tak dlouho, dokud nesetříděná část obsahuje více než jeden prvek. Jinak algoritmus končí. UPR 2008/09 35

36 Př: Je dána posloupnost čísel Setřiďte ji metodou Bubble Sort UPR 2008/09 36

37 Modifikace kroku 3 (Přirozené bublinkové třídění): Pokud nastala v kroku 2 alespoň jedna výměna, došlo ke zmenšení nesetříděné části o jeden prvek, pokračujeme bodem 2. Jinak je třídění ukončeno UPR 2008/09 37

38 Složitost Počet porovnání je v jednotlivých krocích bude C i = N-i a Počet přesunů v i-tém kroku je M i = 3(N-i). Celkem tedy C N = C = N 2 N 2 = M 3( N i i i= 2 i= 2 2 Složitost metody přímým vkládáním je tedy O(N 2 ). M N = 2 N) UPR 2008/09 38

39 Přetřásání (Shaker Sort) Jde o modifikaci algoritmu bublinkového třídění, kdy střídáme porovnávání prvků z hlediska uspořádání. Při průchodu posloupností z jedné strany provádíme porovnávání pro relaci uspořádání, z druhé strany pak pro relaci uspořádání. Ani úpravou bublinkového třídění se nesnížil řádový odhad, složitost zůstává stále O(N 2 ). UPR 2008/09 39

40 Př: Je dána posloupnost čísel Setřiďte ji metodou Shaker Sort UPR 2008/09 40

41 Rychlé třídění (Quick Sort) Metoda Quick-sort je založena na principu rozdělení tříděného pole na dva disjunktní úseky U 1 a U 2 (v souladu s metodou divide-et-impera) přibližně stejné velikosti, pro které musí platit x U 1, y U 2, platí x y v případě vzestupného třídění. Každá množina se potom rekurzívně dotřídí. Závěrečný syntetizační krok je triviální - spočívá ve spojení setříděných posloupností. UPR 2008/09 41

42 Rychlé třídění (Quick Sort) Algoritmus: Zvolíme prvek x (pivot). Pole začneme prohledávat jak od začátku, tak od konce. Pro všechny prvky a i, které porovnáváme s x směrem od začátku musí platit, že a i < x. Naopak, pro všechny prvky a j, které porovnáváme s x směrem od konce musí platit, že a j > x. Jakmile narazíme na dvojici a i a a j, která nesplňuje výše uvedenou podmínku, prvky a i a a j zaměníme. Takto postupujeme dokud i j. Ve chvíli, kdy i > j platí, že pole je rozděleno do dvou úseků U 1 a U 2, přičemž úsek U 1 zahrnuje prvky od začátku pole až po prvek na pozici j, U 2 pokračuje od i až do konce pole. Úseky U 1 a U 2 opět třídíme metodou Quick Sort. Třídění je ukončeno ve chvíli, kdy délka všech setříděných úseků je 1. UPR 2008/09 42

43 Př: Je dána posloupnost čísel Setřiďte ji metodou Quick Sort UPR 2008/09 43

44 Rychlé třídění (Quick Sort) Složitost algoritmu: Značně se liší pro nejlepší a nejhorší případ. Složitost není ovlivněna pořadím prvků před tříděním, ale volbou prvku x. Nejlepší případ nastane tehdy, když volba x vždy padne na tzv. medián, který rozdělí pole na dva stejně velké úseky. Počet dělení pro získání úseků délky 1 je pak přibližně log 2 (N) a složitost celé metody je O(N log 2 (N)). Nejhorší případ nastane, když jako prvek x pokaždé zvolíme nejmenší nebo největší prvek tříděného úseku. Pole se vždy rozdělí na dva úseky - jeden úsek bude obsahovat volený prvek x, druhý ostatní prvky tříděného úseku. V tomto případě se bude provádět N-1 dělení, takže výsledná složitost je řádu O(N 2 ). UPR 2008/09 44

45 Rychlé třídění (Quick Sort) Praktické testy ukázaly, že Quick Sort je velice rychlý při třídění rozsáhlých polí, ale zaostává oproti přirozeným algoritmům třídění Insert Sort a Select Sort při třídění malých polí. Ukazuje se, že složitost Quick Sortu má jistou minimální hodnotu, pod kterou i při třídění malého počtu prvků neklesne. Kdežto složitost přirozených algoritmů roste úměrně s počtem tříděných prvků. Jinými slovy do jistého počtu prvků má Quick Sort větší režii (třídí pomaleji) než např. Insert Sort. Tato hranice byla experimentálně stanovena na asi 12 prvků. Vyplatilo by se tedy Quick Sortem třídit rozsáhlé pole, ale jakmile úseky na než se pole dělí budou kratší než zvolená mez (řekněme zmíněných 12 prvků), tento krátký úsek dotřídit Insert Sortem. UPR 2008/09 45

46 Vlastnosti uvedených algoritmů Selection Sort metoda je stabilní a přitozená Bubble Sort metoda je stabilní a přirozená Insertion Sort metoda je stabilní a přirozená Quick Sort - metoda je nestabilní! UPR 2008/09 46

47 Třídění vkládáním s ubývajícím krokem (Shell Sort) Jednoduchý, ale přitom geniální algoritmus popsal D. L. Shell v roce 1959, když navrhl využít třídění vkládáním ve více chodech. V i-tém chodu se třídí prvky ležící ve vzdálenosti h i, pro i=t, t-1,,0, h i+1 > h i, h 1 = 1, t > 0. Číslo h i se nazývá i-tý krok metody. Takto dostaneme v závislosti na volbě kroků celou třídu třídících algoritmů. Tyto algoritmy fungují efektivně, protože v počátečních chodech se třídí relativně krátké posloupnosti a v dalších chodech se třídí delší, ale utříděnější posloupnosti. UPR 2008/09 47

48 Př: Je dána posloupnost čísel Setřiďte ji metodou Shell Sort UPR 2008/09 48

49 Shell Sort Intuitivně je zřejmé, že složitost Shellova algoritmu bude záviset na volbě posloupnosti kroků. Mezi nejznámější návrhy patří tyto posloupnosti kroků: A. h 1 =1, h i+1 =2*h i +1 B. h 1 =1, h 2 =2, h i+1 =2*h i-1 (pro i > 2), O(N (log N) 2 ). C. h 1 =1, h i+1 =3*h i +1 (364, 121, 40, 13, 4, 1 pro 1000 prvků), O(N 3/2 ). Podrobná matematická analýza volby optimální posloupnosti však patří k nevyřešeným problémům. Jsou známé jen některé částečné výsledky. UPR 2008/09 49

50 Poznámka Algoritmy asociativního třídění používají pro určení pozice prvku v tříděné množině S jen relativní hodnoty prvků, které určují vzájemným porovnáváním těchto prvků. Algoritmy adresního třídění (viz dále) využívají jednoznačný vztah mezi absolutními hodnotami prvků z U a jejich pozicí v uspořádané množině. Pro výpočet tohoto vztahu můžeme použít libovolné operace mimo porovnání tříděných prvků. UPR 2008/09 50

51 Adresní třídící algoritmy Tyto algoritmy nepoužívají při své činnosti žádnou preferovanou operaci. Proto za míru časové efektivnosti zvolíme celkový počet operací vykonaných po dobu třídění. Adresní třídění se podobá uklízení např. rozházených dětských hraček: když o každé hračce víme, na které místo patří, stačí ji jen vzít a dát na své místo. UPR 2008/09 51

52 Přihrádkové třídění Přihrádkové třídění je základním algoritmem adresního třídění. Většinou slouží jako základ pro konstrukci složitějších algoritmů adresního třídění. Nechť a π(1), a π(2),...,a π(n) je posloupnost celých čísel z ohraničeného univerza U={0,,m-1} (některá z čísel a i mohou být stejná). Když m není příliš veliké, potom je možné posloupnost efektivně utřídit touto metodou: UPR 2008/09 52

53 Přihrádkové třídění Algoritmus: 1. Inicializace: inicializuj m prázdných seznamů (přihrádek), pro každé číslo i {0,,m-1} jeden seznam; 2. Distribuce: čti posloupnost zleva doprava, a prvek a i umísti do a i -tého seznamu, na jeho konec (tj. seznamy se chovají jako fronty); 3. Zřetězení: zřetězit všechny seznamy tak, že začátek (i+1)-ního seznamu se připojí na konec i- tého. UPR 2008/09 53

54 Přihrádkové třídění Tak vznikne jediný seznam obsahující prvky v utříděném pořadí. Protože jeden prvek je možné zařadit do i-tého seznamu v konstantním čase, n prvků v čase O(n). Zřetězení m seznamů si vyžaduje čas O(m), takže celková složitost přihrádkového třídění je O(m+n). Tento druh třídění se používá zejména tehdy, když m << n. Potom je jeho složitost lineární. Třídění sice není in situ, ale je stabilní. UPR 2008/09 54

55 Přihrádkové třídění - příklad Mějme například realizovat funkci, která načte jednotlivé znaky ze souboru InputName a vypíše je setříděné do souboru OutputName. Celý problém lze naprogramovat velice jednoduše využitím zjednodušené verze přihrádkového třídění. Vytvoříme pole 256 počítadel - pro každý znak jedno - na počátku je nastavíme na 0. Potom čteme vstupní soubor a příslušné počítadlo inkrementujeme. Nakonec vypíšeme do výstupního souboru tolik znaků, na kolik jsou jednotlivá počítadla nastavena, to znamená, že nejprve vypíšeme například 20 znaků a, potom 10 znaků c, 1 znak f atd. UPR 2008/09 55

56 Přihrádkové třídění - příklad Mějme dánu posloupnost písmen s o r t i n g e x a m p l e Po setřídění dostaneme posloupnost a e e g i l m n o p r s t x UPR 2008/09 56

57 Třídění podle základu (Radix Sort) Klíče užívané k definování pořadí záznamů jsou v mnoha případech velice komplikované. Například klíče užívané pro třídění v katalozích knihoven. Proto je vhodné postavit třídicí metody na porovnání dvou klíčů a výměně dvou záznamů. Pro mnoho aplikací je možno využít faktu, že klíč lze považovat za číslo jistého rozsahu. Třídící metoda založená na této myšlence se nazývá Radix Sort. Tento algoritmus neporovnává dva klíče, nýbrž zpracovává a porovnává části klíčů. UPR 2008/09 57

58 Třídění podle základu (Radix Sort) Radix Sort považuje klíče za čísla zapsaná v číselné soustavě o základu M (radix) a pracuje s jednotlivými číslicemi. Představme si úředníka, který má setřídit hromadu karet, přičemž na každé kartě je natištěno tříciferné číslo. Jeden z rozumných postupů je asi tento: vytvořit deset hromádek, na první dávat karty s čísly menšími než 100, na druhou karty s čísly 100 až 199 atd. Každou z těchto deseti hromádek pak znovu roztřídit stejným způsobem nebo pokud je na hromádce karet málo, setřídit je jednoduchým způsobem. Popsaná metoda, je jednoduchou ukázkou Radix Sortu o základě M=10. Pro počítač je logicky lepší pracovat se základem M=2. UPR 2008/09 58

59 Př.: Je dána posloupnost COW DOG SEA RUG ROW MOB BOX TAR BAR EAR TAB DIG BIG TEA NOW FOX. Setřiďte ji metodou Radix Sort Po 1. kroku setřídění podle 1.znaku (výpis kromě prázdných přihrádek) B: BOX BAR BIG C: COW D: DOG DIG E: EAR F: FOX M: MOB N: NOW R: RUG ROW S: SEA T: TAR TAB TEA Po 2.kroku setřídění podle 2. znaku : B: BAR BIG BOX C: COW D: DIG DOG E: EAR F: FOX M: MOB N: NOW R: ROW RUG S: SEA T: TAR TAB TEA UPR 2008/09 59

60 Po 3. kroku setřídění podle 3. znaku: B: BAR BIG BOX C: COW D: DIG DOG E: EAR F: FOX M: MOB N: NOW R: ROW RUG S: SEA T: TAB TAR TEA BAR BIG BOX COW DIG DOG EAR FOX MOB NOW ROW RUG SEA TAB TAR TEA UPR 2008/09 60

61 Radix sort Princip implementace: Předpokládejme, že přeskupujeme záznamy v poli tak, že záznamy jejichž klíče začínají bitem 0 předcházejí záznamy s klíči začínajícími bitem 1. Tato úvaha vede na rekurzivní třídící algoritmus typu QuickSort: jestliže jsou dvě části pole setříděny, potom je setříděno i celé pole. Při výměnách záznamů v poli postupujeme zleva a hledáme klíč začínající na 1, stejně tak zprava hledáme klíč začínající na 0. Tyto záznamy vyměníme a pokračujeme dokud se indexy testovaných záznamů uprostřed pole nepřekříží. Tato implementace je velice podobná QuickSortu, s tím rozdílem, že jako pivot je použito číslo 2 b místo nějakého prvku z pole. UPR 2008/09 61

62 Radix sort Složitost: určení složitosti v porovnání s asociatvními algoritmy není tak jednoduché. Více než počet klíčů (vstupních dat) nás musí zajímat počet bajtů klíče a základu (čísla 2 b ). Nejhorší případ znamená prozkoumat všechny bajty všech klíčů. UPR 2008/09 62

Algoritmy I. Třídění ALGI 2010/2011

Algoritmy I. Třídění ALGI 2010/2011 Algoritmy I Třídění 1 ALGI 2010/2011 Třídící problém Je dána množina A = {a 1,a 2,...,a n }. Je potřebné najít permutaci π těchto n prvků, která zobrazuje danou posloupnost do neklesající posloupnosti

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

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

DobSort. Úvod do programování. DobSort Implementace 1/3. DobSort Implementace 2/3. DobSort - Příklad. DobSort Implementace 3/3 DobSort Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 V roce 1980 navrhl Dobosiewicz variantu (tzv. DobSort),

Více

Maturitní téma: Programovací jazyk JAVA

Maturitní téma: Programovací jazyk JAVA Maturitní téma: Programovací jazyk JAVA Insert Sort (třídění vkládáním) 1. Jako setříděnou část označíme první prvek pole. Jako nesetříděnou část označíme zbytek pole. 2. Vezmeme první (libovolný) prvek

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

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

A4B33ALG 2010/05 ALG 07. Selection sort (Select sort) Insertion sort (Insert sort) Bubble sort deprecated. Quicksort. A4B33ALG 2010/05 ALG 07 Selection sort (Select sort) Insertion sort (Insert sort) Bubble sort deprecated Quicksort Stabilita řazení 1 Selection sort Neseřazeno Seřazeno Start T O U B J R M A K D Z E min

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

Sada 1 - Základy programování

Sada 1 - Základy programování S třední škola stavební Jihlava Sada 1 - Základy programování 17. Řadící algoritmy Digitální učební materiál projektu: SŠS Jihlava šablony registrační číslo projektu:cz.1.09/1.5.00/34.0284 Šablona: III/2

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

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

Základy řazení. Karel Richta a kol. Základy řazení Karel Richta a kol. Přednášky byly připraveny s pomocí materiálů, které vyrobili Marko Berezovský, Petr Felkel, Josef Kolář, Michal Píše a Pavel Tvrdík Katedra počítačů Fakulta elektrotechnická

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

přirozený algoritmus seřadí prvky 1,3,2,8,9,7 a prvky 4,5,6 nechává Metody řazení se dělí:

přirozený algoritmus seřadí prvky 1,3,2,8,9,7 a prvky 4,5,6 nechává Metody řazení se dělí: Metody řazení ve vnitřní a vnější paměti. Algoritmy řazení výběrem, vkládáním a zaměňováním. Heapsort, Shell-sort, Radix-sort, Quicksort. Řazení sekvenčních souborů. Řazení souborů s přímým přístupem.

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

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

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) {

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) { Vyhledání extrému v poli použito v algoritmech řazení hledání maxima 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) max = pole[i];

Více

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

Pole a kolekce. v C#, Javě a C++ Pole a kolekce v C#, Javě a C++ C# Deklarace pole typ_prvku_pole[] jmeno_pole; Vytvoření pole jmeno_pole = new typ_prvku_pole[pocet_prvku_pole]; Inicializace pole double[] poled = 4.8, 8.2, 7.3, 8.0; Java

Více

Třídění a vyhledávání Searching and sorting

Třídění a vyhledávání Searching and sorting Třídění a vyhledávání Searching and sorting Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 1 / 33 Vyhledávání Třídění Třídící algoritmy 2 / 33 Vyhledávání Searching Mějme posloupnost (pole)

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

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

Složitost 1.1 Opera ní a pam ová složitost 1.2 Opera ní složitost v pr rném, nejhorším a nejlepším p ípad 1.3 Asymptotická složitost

Složitost 1.1 Opera ní a pam ová složitost 1.2 Opera ní složitost v pr rném, nejhorším a nejlepším p ípad 1.3 Asymptotická složitost 1 Složitost 1.1 Operační a paměťová složitost Nezávislé určení na konkrétní implementaci Několik typů operací = sčítání T+, logické T L, přiřazení T A(assign), porovnání T C(compare), výpočet adresy pole

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

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace Vektory a matice Aplikovaná matematika I Dana Říhová Mendelu Brno Obsah 1 Vektory Základní pojmy a operace Lineární závislost a nezávislost vektorů 2 Matice Základní pojmy, druhy matic Operace s maticemi

Více

Vyvažování a rotace v BVS, všude se předpokládá AVL strom

Vyvažování a rotace v BVS, všude se předpokládá AVL strom Vyvažování a rotace v BVS, všude se předpokládá AVL strom 1. Jednoduchá levá rotace v uzlu u má operační složitost a) závislou na výšce levého podstromu uzlu u b) mezi O(1) a Θ(n) c) závislou na hloubce

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

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

3 Algoritmy řazení. prvku a 1 je rovněž seřazená.

3 Algoritmy řazení. prvku a 1 je rovněž seřazená. Specifikace problému řazení (třídění): A... neprázdná množina prvků Posl(A)... množina všech posloupností prvků z A ... prvky množiny Posl(A) q... délka posloupnosti Posl(A), přičemž Delka()

Více

Select sort: krok 1: krok 2: krok 3: atd. celkem porovnání. výběr nejmenšího klíče z n prvků vyžaduje 1 porovnání

Select sort: krok 1: krok 2: krok 3: atd. celkem porovnání. výběr nejmenšího klíče z n prvků vyžaduje 1 porovnání Select sort: krok 1: výběr klíče z n prvků vyžaduje 1 porovnání krok 2: výběr klíče z 1 prvků vyžaduje 2 porovnání krok 3: výběr klíče z 2 prvků vyžaduje 3 porovnání atd. celkem porovnání Zlepšení = použít

Více

ALGORITMY A DATOVÉ STRUKTURY

ALGORITMY A DATOVÉ STRUKTURY Název tématického celku: Cíl: ALGORITMY A DATOVÉ STRUKTURY Metodický list č. 1 Časová složitost algoritmů Základním cílem tohoto tematického celku je vysvětlení potřebných pojmů a definic nutných k popisu

Více

Zdůvodněte, proč funkce n lg(n) roste alespoň stejně rychle nebo rychleji než než funkce lg(n!). Symbolem lg značíme logaritmus o základu 2.

Zdůvodněte, proč funkce n lg(n) roste alespoň stejně rychle nebo rychleji než než funkce lg(n!). Symbolem lg značíme logaritmus o základu 2. 1 3 4 5 6 7 8 9 10 11 1 13 14 15 16 17 18 19 0 1 3 4 5 6 7 8 9 30 31 3 Zdůvodněte, proč funkce f(n) = n log(n) 1 n 1/ roste rychleji než funkce g(n) = n. Zdůvodněte, proč funkce f(n) = n 3/ log(n) roste

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

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_146_IVT Autor: Ing. Pavel Bezděk Tematický okruh:

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

Třídící algoritmy. Insert Sort. Bubble Sort. Select Sort. Shell Sort. Quick Sort. Merge Sort. Heap Sort.

Třídící algoritmy. Insert Sort. Bubble Sort. Select Sort. Shell Sort. Quick Sort. Merge Sort. Heap Sort. Třídící algoritmy. Insert Sort. Bubble Sort. Select Sort. Shell Sort. Quick Sort. Merge Sort. Heap Sort. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká

Více

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

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 Střední průmyslová škola a Vyšší odborná škola technická Brno, Sokolská 1 Šablona: Název: Téma: Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Třídění dat Autor:

Více

Prioritní fronta, halda

Prioritní fronta, halda Prioritní fronta, halda Priority queue, heap Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 2018 1 / 26 Prioritní fronta Halda Heap sort 2 / 26 Prioritní fronta (priority queue) Podporuje

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 Grafové úlohy Daniela Szturcová Tento

Více

0. ÚVOD - matematické symboly, značení,

0. ÚVOD - matematické symboly, značení, 0. ÚVOD - matematické symboly, značení, číselné množiny Výroky Výrok je každé sdělení, u kterého lze jednoznačně rozhodnout, zda je či není pravdivé. Každému výroku lze proto přiřadit jedinou pravdivostní

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

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

Determinanty. Obsah. Aplikovaná matematika I. Pierre Simon de Laplace. Definice determinantu. Laplaceův rozvoj Vlastnosti determinantu.

Determinanty. Obsah. Aplikovaná matematika I. Pierre Simon de Laplace. Definice determinantu. Laplaceův rozvoj Vlastnosti determinantu. Determinanty Aplikovaná matematika I Dana Říhová Mendelu Brno Obsah 1 Determinanty Definice determinantu Sarrusovo a křížové pravidlo Laplaceův rozvoj Vlastnosti determinantu Výpočet determinantů 2 Inverzní

Více

Základy algoritmizace. Hašování

Základy algoritmizace. Hašování Základy algoritmizace Hašování Problematika hašování Hašování - nástroj na jednoduchý způsob "zakódování vstupních dat. Vstupní data jsou zpracována hašovací funkcí jsou jistým způsobem komprimována. Relativně

Více

Časová složitost algoritmů

Časová složitost algoritmů Časová složitost algoritmů Důležitou vlastností algoritmu je časová náročnost výpočtů provedené podle daného algoritmu Ta se nezískává měřením doby výpočtu pro různá data, ale analýzou algoritmu, jejímž

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

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

Michal Krátký. Úvod do programování. Cíl kurzu. Podmínky získání zápočtu III/III Michal Krátký Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 tel.: +420 596 993 239 místnost: A1004 mail: michal.kratky@vsb.cz

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

Hledání k-tého nejmenšího prvku

Hledání k-tého nejmenšího prvku ALG 14 Hledání k-tého nejmenšího prvku Randomized select CLRS varianta Partition v Quicksortu 0 Hledání k-tého nejmenšího prvku 1. 2. 3. Seřaď seznam/pole a vyber k-tý nejmenší, složitost (N*log(N)). Nevýhodou

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 Orientované grafy, Toky v sítích

5 Orientované grafy, Toky v sítích Petr Hliněný, FI MU Brno, 205 / 9 FI: IB000: Toky v sítích 5 Orientované grafy, Toky v sítích Nyní se budeme zabývat typem sít ových úloh, ve kterých není podstatná délka hran a spojení, nýbž jejich propustnost

Více

Návrh Designu: Radek Mařík

Návrh Designu: Radek Mařík 1. 7. Najděte nejdelší rostoucí podposloupnost dané posloupnosti. Použijte metodu dynamického programování, napište tabulku průběžných délek částečných výsledků a tabulku předchůdců. a) 5 8 11 13 9 4 1

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

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

NEJKRATŠÍ CESTY I. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

NEJKRATŠÍ CESTY I. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze NEJKRATŠÍ CESTY I Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2010/2011, Lekce 7 Evropský sociální fond Praha & EU: Investujeme do vaší

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

ˇ 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

ˇ 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 řazení rychlejší než kvadratické Karel Horák, Petr Ryšavý 20. dubna 2016 Katedra počítačů, FEL, ČVUT Příklad 1 Která z následujících posloupností představuje haldu uloženou v poli? 1. 9 5 4 6 3 2. 5 4

Více

(Cramerovo pravidlo, determinanty, inverzní matice)

(Cramerovo pravidlo, determinanty, inverzní matice) KMA/MAT1 Přednáška a cvičení, Lineární algebra 2 Řešení soustav lineárních rovnic se čtvercovou maticí soustavy (Cramerovo pravidlo, determinanty, inverzní matice) 16 a 21 října 2014 V dnešní přednášce

Více

Definice. Vektorový prostor V nad tělesem T je množina s operacemi + : V V V, tj. u, v V : u + v V : T V V, tj. ( u V )( a T ) : a u V které splňují

Definice. Vektorový prostor V nad tělesem T je množina s operacemi + : V V V, tj. u, v V : u + v V : T V V, tj. ( u V )( a T ) : a u V které splňují Definice. Vektorový prostor V nad tělesem T je množina s operacemi + : V V V, tj. u, v V : u + v V : T V V, tj. ( u V )( a T ) : a u V které splňují 1. u + v = v + u, u, v V 2. (u + v) + w = u + (v + w),

Více

Co je obsahem numerických metod?

Co je obsahem numerických metod? Numerické metody Úvod Úvod Co je obsahem numerických metod? Numerické metody slouží k přibližnému výpočtu věcí, které se přesně vypočítat bud nedají vůbec, nebo by byl výpočet neúměrně pracný. Obsahem

Více

13. Třídící algoritmy a násobení matic

13. Třídící algoritmy a násobení matic 13. Třídící algoritmy a násobení matic Minulou přednášku jsme probírali QuickSort, jeden z historicky prvních třídících algoritmů, které překonaly kvadratickou složitost aspoň v průměrném případě. Proč

Více

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

Složitosti základních operací B + stromu Složitosti základních operací B + stromu Radim Bača VŠB Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Katedra informatiky ŠKOMAM 2010-1- 28/1/2010 Složitosti základních operací B +

Více

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru: 3 Maticový počet 3.1 Zavedení pojmu matice Maticí typu (m, n, kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru: a 11 a 12... a 1k... a 1n a 21 a 22...

Více

Řazení. Uspořádat množinu prvků obsahujících klíč podle definovaného kriteria.

Řazení. Uspořádat množinu prvků obsahujících klíč podle definovaného kriteria. Řazení Problém řazení: Uspořádat množinu prvků obsahujících klíč podle definovaného kriteria. Až 30% času běžného počítače. Příklad: Mějme zjistit zda jsou v posloupnosti prvků, například celých čísel,

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

Připomenutí co je to soustava lineárních rovnic

Připomenutí co je to soustava lineárních rovnic Připomenutí co je to soustava lineárních rovnic Příklad 2x 3y + z = 5 3x + 5y + 2z = 4 x + 2y z = 1 Soustava lineárních rovnic obecně Maticový tvar: a 11 x 1 + a 12 x 2 + + a 1n x n = b 1 a 21 x 1 + a

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

PŘEDNÁŠKA 2 POSLOUPNOSTI

PŘEDNÁŠKA 2 POSLOUPNOSTI PŘEDNÁŠKA 2 POSLOUPNOSTI 2.1 Zobrazení 2 Definice 1. Uvažujme libovolné neprázdné množiny A, B. Zobrazení množiny A do množiny B je definováno jako množina F uspořádaných dvojic (x, y A B, kde ke každému

Více

Úvod do informatiky. Miroslav Kolařík. Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008.

Úvod do informatiky. Miroslav Kolařík. Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008. Úvod do informatiky přednáška čtvrtá Miroslav Kolařík Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008. Obsah 1 Pojem relace 2 Vztahy a operace s (binárními) relacemi

Více

5. Náhodná veličina. 2. Házíme hrací kostkou dokud nepadne šestka. Náhodná veličina nabývá hodnot z posloupnosti {1, 2, 3,...}.

5. Náhodná veličina. 2. Házíme hrací kostkou dokud nepadne šestka. Náhodná veličina nabývá hodnot z posloupnosti {1, 2, 3,...}. 5. Náhodná veličina Poznámka: Pro popis náhodného pokusu jsme zavedli pojem jevového pole S jako množiny všech možných výsledků a pravděpodobnost náhodných jevů P jako míru výskytů jednotlivých výsledků.

Více

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň

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

10. Soustavy lineárních rovnic, determinanty, Cramerovo pravidlo

10. Soustavy lineárních rovnic, determinanty, Cramerovo pravidlo 0. Soustavy lineárních rovnic, determinanty, Cramerovo pravidlo (PEF PaA) Petr Gurka aktualizováno 9. prosince 202 Obsah Základní pojmy. Motivace.................................2 Aritmetický vektorový

Více

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

Algoritmus pro hledání nejkratší cesty orientovaným grafem 1.1 Úvod Algoritmus pro hledání nejkratší cesty orientovaným grafem Naprogramoval jsem v Matlabu funkci, která dokáže určit nejkratší cestu v orientovaném grafu mezi libovolnými dvěma vrcholy. Nastudoval

Více

II. Úlohy na vložené cykly a podprogramy

II. Úlohy na vložené cykly a podprogramy II. Úlohy na vložené cykly a podprogramy Společné zadání pro příklady 1. - 10. začíná jednou ze dvou možností popisu vstupních dat. Je dána posloupnost (neboli řada) N reálných (resp. celočíselných) hodnot.

Více

Základy algoritmizace. Pattern matching

Základy algoritmizace. Pattern matching Základy algoritmizace Pattern matching 1 Pattern matching Úloha nalézt v nějakém textu výskyty zadaných textových vzorků patří v počítačové praxi k nejfrekventovanějším. Algoritmy, které ji řeší se používají

Více

Uspořádanou n-tici reálných čísel nazveme aritmetický vektor (vektor), ā = (a 1, a 2,..., a n ). Čísla a 1, a 2,..., a n se nazývají složky vektoru

Uspořádanou n-tici reálných čísel nazveme aritmetický vektor (vektor), ā = (a 1, a 2,..., a n ). Čísla a 1, a 2,..., a n se nazývají složky vektoru 1 1. Lineární algebra 1.1. Lineární závislost a nezávislost vektorů. Hodnost matice Aritmetické vektory Uspořádanou n-tici reálných čísel nazveme aritmetický vektor (vektor), ā = (a 1, a 2,..., a n ).

Více

Modely teorie grafů, min.kostra, max.tok, CPM, MPM, PERT

Modely teorie grafů, min.kostra, max.tok, CPM, MPM, PERT PEF ČZU Modely teorie grafů, min.kostra, max.tok, CPM, MPM, PERT Okruhy SZB č. 5 Zdroje: Demel, J., Operační výzkum Jablonský J., Operační výzkum Šubrt, T., Langrová, P., Projektové řízení I. a různá internetová

Více

Mimo samotné správnosti výsledku vypočteného zapsaným algoritmem je ještě jedno

Mimo samotné správnosti výsledku vypočteného zapsaným algoritmem je ještě jedno 12 Délka výpočtu algoritmu Mimo samotné správnosti výsledku vypočteného zapsaným algoritmem je ještě jedno neméně důležité hledisko k posouzení vhodnosti algoritmu k řešení zadané úlohy. Jedná se o čas,

Více

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij]

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij] MATICE Matice typu m/n nad tělesem T je soubor m n prvků z tělesa T uspořádaných do m řádků a n sloupců: a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij] a m1 a m2 a mn Prvek a i,j je prvek matice A na místě

Více

1 Linearní prostory nad komplexními čísly

1 Linearní prostory nad komplexními čísly 1 Linearní prostory nad komplexními čísly V této přednášce budeme hledat kořeny polynomů, které se dále budou moci vyskytovat jako složky vektorů nebo matic Vzhledem k tomu, že kořeny polynomu (i reálného)

Více

ALGORITMY. 0. krok (inicializace algoritmu): položme a 0 = a, b 0 = b. 2. krok: určíme zbytek r 1 (a 1, b 1 ) při dělení a 1

ALGORITMY. 0. krok (inicializace algoritmu): položme a 0 = a, b 0 = b. 2. krok: určíme zbytek r 1 (a 1, b 1 ) při dělení a 1 ALGORITMY V této části si přiblížíme jeden ze základních pojmů informatiky, a to pojem algoritmus. Vyhneme se přesné definici, vystačíme s intuitivní definicí pojmu algoritmus tak, že se konstatujeme,

Více

ALG 09. Radix sort (přihrádkové řazení) Counting sort. Přehled asymptotických rychlostí jednotlivých řazení. Ilustrační experiment řazení

ALG 09. Radix sort (přihrádkové řazení) Counting sort. Přehled asymptotických rychlostí jednotlivých řazení. Ilustrační experiment řazení ALG Radix sort (přihrádkové řazení) Counting sort Přehled asymptotických rychlostí jednotlivých řazení Ilustrační experiment řazení Radix sort Neseřazeno Řaď podle. znaku Cbb DaD adb DCa CCC add DDb adc

Více

TÉMATICKÝ OKRUH Počítače, sítě a operační systémy

TÉMATICKÝ OKRUH Počítače, sítě a operační systémy TÉMATICKÝ OKRUH Počítače, sítě a operační systémy Číslo otázky : 12. Otázka : Metody fyzické organizace dat Obsah : 1.Úvod 2.Vnější paměti 3.Sekvenční soubory 3.1 Setříděné sekvenční soubory 4.Zřetězené

Více

TGH07 - Chytré stromové datové struktury

TGH07 - Chytré stromové datové struktury TGH07 - Chytré stromové datové struktury Jan Březina Technical University of Liberec 1. dubna 2014 Prioritní fronta Datová struktura s operacemi: Odeber Minum (AccessMin, DeleteMin) - vrat prvek s minimálním

Více

1 Báze a dimenze vektorového prostoru 1

1 Báze a dimenze vektorového prostoru 1 1 Báze a dimenze vektorového prostoru 1 Báze a dimenze vektorového prostoru 1 2 Aritmetické vektorové prostory 7 3 Eukleidovské vektorové prostory 9 Levá vnější operace Definice 5.1 Necht A B. Levou vnější

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

1 Vektorové prostory.

1 Vektorové prostory. 1 Vektorové prostory DefiniceMnožinu V, jejíž prvky budeme označovat a, b, c, z, budeme nazývat vektorovým prostorem právě tehdy, když budou splněny následující podmínky: 1 Je dáno zobrazení V V V, které

Více

Cvičení z Numerických metod I - 12.týden

Cvičení z Numerických metod I - 12.týden Máme systém lineárních rovnic Cvičení z Numerických metod I - týden Přímé metody řešení systému lineárních rovnic Ax = b, A = a a n a n a nn Budeme hledat přesné řešení soustavy x = x x n, b = b b n, x

Více

Zadání druhého zápočtového projektu Základy algoritmizace, 2005

Zadání druhého zápočtového projektu Základy algoritmizace, 2005 Zadání druhého zápočtového projektu Základy algoritmizace, 2005 Jiří Dvorský 2 května 2006 Obecné pokyny Celkem je k dispozici 8 zadání příkladů Každý student obdrží jedno zadání Vzhledem k tomu, že odpadly

Více

0.1 Úvod do lineární algebry

0.1 Úvod do lineární algebry Matematika KMI/PMATE 1 01 Úvod do lineární algebry 011 Vektory Definice 011 Vektorem aritmetického prostorur n budeme rozumět uspořádanou n-tici reálných čísel x 1, x 2,, x n Definice 012 Definice sčítání

Více

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

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly. Kapitola Reprezentace grafu V kapitole?? jsme se dozvěděli, co to jsou grafy a k čemu jsou dobré. rzo budeme chtít napsat nějaký program, který s grafy pracuje. le jak si takový graf uložit do počítače?

Více

Diskrétní matematika. DiM /01, zimní semestr 2016/2017

Diskrétní matematika. DiM /01, zimní semestr 2016/2017 Diskrétní matematika Petr Kovář petr.kovar@vsb.cz Vysoká škola báňská Technická univerzita Ostrava DiM 470-2301/01, zimní semestr 2016/2017 O tomto souboru Tento soubor je zamýšlen především jako pomůcka

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

Modely Herbrandovské interpretace

Modely Herbrandovské interpretace Modely Herbrandovské interpretace Petr Štěpánek S využitím materialu Krysztofa R. Apta 2006 Logické programování 8 1 Uvedli jsme termové interpretace a termové modely pro logické programy a také nejmenší

Více

Základní pojmy teorie množin Vektorové prostory

Základní pojmy teorie množin Vektorové prostory Základní pojmy teorie množin Přednáška MATEMATIKA č. 1 Katedra ekonometrie FEM UO Brno kancelář 69a, tel. 973 442029 email:jiri.neubauer@unob.cz 7. 10. 2010 Základní pojmy teorie množin Základní pojmy

Více

vyhledávací stromové struktury

vyhledávací stromové struktury vyhledávací algoritmy Brute Force Binary Search Interpolation Search indexové soubory Dense index, Sparse index transformační funkce Perfect Hash, Close Hash Table, Open Hash Table vyhledávací stromové

Více

Amortizovaná složitost. Prioritní fronty, haldy (binární, d- regulární, binomiální, Fibonacciho), operace nad nimi a jejich složitost

Amortizovaná složitost. Prioritní fronty, haldy (binární, d- regulární, binomiální, Fibonacciho), operace nad nimi a jejich složitost Amortizovaná složitost. Prioritní fronty, haldy binární, d- regulární, binomiální, Fibonacciho), operace nad nimi a jejich složitost 1. Asymptotické odhady Asymptotická složitost je deklarována na základě

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

Základy programování (IZP)

Základy programování (IZP) Základy programování (IZP) Osmé počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 20.11.2017,

Více

Diskrétní matematika. DiM /01, zimní semestr 2018/2019

Diskrétní matematika. DiM /01, zimní semestr 2018/2019 Diskrétní matematika Petr Kovář petr.kovar@vsb.cz Vysoká škola báňská Technická univerzita Ostrava DiM 470-2301/01, zimní semestr 2018/2019 O tomto souboru Tento soubor je zamýšlen především jako pomůcka

Více