Algoritmizace prostorových úloh

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

Maturitní téma: Programovací jazyk JAVA

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

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

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

Algoritmizace řazení Bubble Sort

Základy algoritmizace a programování

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

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

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

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

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

Sada 1 - Základy programování

IB111 Úvod do programování skrze Python

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

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

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

Složitost UPR 2008/09 1

Algoritmizace a programování

Časová složitost algoritmů

V případě jazyka Java bychom abstraktní datový typ Time reprezentující čas mohli definovat pomocí třídy takto:

Rekurze a rychlé třídění

Algoritmizace prostorových úloh

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

IB111 Úvod do programování skrze Python

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh

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

Prioritní fronta, halda

vyhledávací stromové struktury

Algoritmizace prostorových úloh

Anotace. pointery (pars prima). Martin Pergel,

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

Pole a kolekce. v C#, Javě a 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

Algoritmy vyhledávání a řazení. Zatím nad lineární datovou strukturou (polem)

Algoritmizace prostorových úloh

Datové struktury 2: Rozptylovací tabulky

Robert Haken [MVP ASP.NET/IIS, MCT] software architect, HAVIT, Základní algoritmy v praxi

Technické informace. PA152,Implementace databázových systémů 4 / 25. Projekty. pary/pa152/ Pavel Rychlý

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

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

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

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

Časová a prostorová složitost algoritmů

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

Algoritmizace prostorových úloh

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

Zadání k 2. programovacímu testu

TGH07 - Chytré stromové datové struktury

Universita Pardubice Fakulta elektrotechniky a informatiky. Mikroprocesorová technika. Semestrální práce

Stromové struktury v relační databázi

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

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

IB111 Úvod do programování 1 / 62

ˇ 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

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

Digitální učební materiál

Datový typ prioritní fronta Semestrální práce z předmětu 36PT

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

ALGORITMY A DATOVÉ STRUKTURY

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í

Praktická cvičení algoritmů

Na začátku rozdělíme práci a určíme, které podproblémy je potřeba vyřešit. Tyto

Algoritmy I, složitost

Bubble sort. příklad. Shaker sort

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

Maturitní témata Školní rok: 2015/2016

ALG 14. Vícedimenzionální data. Řazení vícedimenzionálních dat. Experimentální porovnání řadících algoritmů na vícedimenzionálních datech

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

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

v nichž byly zadány, s možnou výjimkou konstantně mnoha tzv. pracovních

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

PROGRAMOVÁNÍ. Cílem předmětu Programování je seznámit posluchače se způsoby, jak algoritmizovat základní programátorské techniky.

1. Vyhledávání a tøídìní

Dynamické datové struktury III.

Techniky návrhu algoritmů

IB111 Základy programování Radek Pelánek 1 / 61

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

TGH05 - Problém za milion dolarů.

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

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

každého programátora, a tak není divu, že třídicí algoritmy jsou jedny z nejstudovanějších.

1 Úvod do Turbo Pascalu

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

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

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

Úvod do programování

1. Databázové systémy (MP leden 2010)

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

Stromové struktury v relační databázi

TGH07 - Chytré stromové datové struktury

Algoritmy na ohodnoceném grafu

ZÁKLADNÍ ALGORITMY ARNOŠT VEČERKA KATEDRA INFORMATIKY PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITA PALACKÉHO

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

SQL tříhodnotová logika

Vysvětlete funkci a popište parametry jednotlivých komponent počítače a periferních zařízení.

Maturitní témata. IKT, školní rok 2017/18. 1 Struktura osobního počítače. 2 Operační systém. 3 Uživatelský software.

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

PARALELNÍ PROCESY A PROGRAMOVÁNÍ

Transkript:

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á Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. ESF napomáhá rozvoji lidských zdrojů a podnikatelského ducha.

Základní úlohy Velmi často využívanými algoritmy se ukazují algoritmy pro úlohy třídění, vyhledávání, indexace.

Třídění Třídící (řadící) algoritmy slouží k setřízení prvků ze vstupního souboru podle určitého kriteria (například dle velikosti) vzestupně nebo sestupně. Důvod třídění data uspořádat, efektivnější vyhledávání. Kritéria výběru vhodného algoritmu je dáno vlastnostmi algoritmu: Složitost algoritmu (paměťová, časová), charakter vstupních dat, stabilita algoritmu, chování na částečně seřazených datech.

Třídění vstupní data Vstupní data jejich velikost ovlivňují volbu metody. Vnitřní algoritmy data jsou uložena v operační paměti. InsertSort, 2 BubbleSort, SelectSort O(N ) Vnější algoritmy rozsáhlá data se načítají z disku QuickSort, MergeSort O(N log N)

Třídění stabilita algoritmu Třídící algoritmy pracují se strukturovanými prvky, porovnávacím parametrem třídění je klíč. Stabilní algoritmy uchovávají pořadí prvků podle klíče Nestabilní algoritmy pořadí se během zpracování může měnit Snahou je volit strukturu dat tak, aby bylo možné použít stabilní algoritmy. Stabilita algortimu je užitečná při třídění podle dvou (či více) parametrů.

Třídění seřazení dat Vstupní data obsahují část dat již uspořádaných podle kritéria. Přirozené algoritmy vykazují rychlejší průběh. Nepřirozené uspořádanost vstupních dat neprokazuje vliv na rychlost algoritmu.

Třídění Bubble Sort Metoda bublinkového 2 třídění. Složitost O(N ). Prvky probublávají tak dlouho, až jsou ve výsledku data setříděna. Popis Bubble Sort: 1. Porovnáváme sousední prvky. 2. V případě splnění podmínky je vyměníme mezi sebou. 3. Opakujeme, dokud průchod celou sadou je bez výměny sousedních prvků.

Třídění Bubble Sort Ukázka bublinkového třídění na stránkách http://algoritmy.net.

Třídění Insert Sort Metoda přímého vkládání. Složitost O(N 2 ). Data rozdělíme na "setříděnou" a nesetříděnou část. Prvky z nesetříděné části vložíme na odpovídající místo do setříděné části. Popis Insert Sort: 1. První prvek z nesetříděné části vložíme na pozici dle velikosti. 2. Prvky ze setříděné části ležící za vloženým prvkem posuneme o jednu pozici dozadu. 3. Opakujeme, dokud je v nesetříděné části alespoň jeden prvek.

Třídění Insert Sort Ukázka přímého třídění na stránkách http://algoritmy.net.

Třídění Select Sort Metoda třídění výběrem. Složitost O(N 2 ). Princip je postaven na výběru prvku a jeho uložení na odpovídající pozici (v případě sestupného třídění největší prvek na první pozici). Popis Select Sort: 1. Posloupnost prvků rozdělíme na setříděnou a nesetříděnou část. 2. V nesetříděné části vyhledáme největší prvek a uložíme jej na poslední pozici v setříděné části. 3. Proces opakujeme, doku nesetříděná část obsahuje alespoň jeden prvek.

Třídění Insert Sort Ukázka třídění výběrem na stránkách http://algoritmy.net.

Třídění Quick Sort Metoda rychlého třídění. 2 Složitost O(N log N), nejhorší případ O(N ). Využívá princip rozděl a panuj (Divide & Conquere), implementace často s rekurzí. Popis Quick Sort: 1. Volíme prvek pivota. 2. Podle pivota rozdělíme posloupnost prvků do dvou částí, v jedné jsou menší a v druhé větší než pivot. 3. Opakujeme princip na každou vzniklou část, dokud bude obsahovat více než jeden prvek.

Třídění Quick Sort Ukázka rychlého třídění na stránkách http://algoritmy.net.

Třídění Merge Sort Metoda slévání. Složitost O(N log N). Principem je slévání dvou setříděných posloupností prvků do jedné výsledné. Využívá principu rozděl a panuj (Divide & Conquere), implementace využívá pomocné pole. Popis Merge Sort: 1. Vstupní posloupnost prvků rozdělíme na dvě stejně velké části. 2. Dělení (rekurze) skončí při jednotkové velikosti pole triviálně setříděné. 3. Sléváme dvě vedlejší pole tak, že do výstupního vkládáme prvky podle výsledku porovnání. 4. Opakujeme, až je výstupem slévání celá posloupnost prvků.

Třídění Merge Sort Ukázka třídění sléváním na stránkách http://algoritmy.net.

Třídění výběr algoritmu Výběr vhodného algoritmu ovlivní řada kritérií. Struktura vstupních dat. Velikost operační paměti. Znalost/náročnost implementace. Který algoritmus je nejlepší?

Vyhledávání Základní úlohou je najít prvek při shodě klíče vyhledávací kriterium. Množina klíčů S vyhledávací prostor vliv na výběr algoritmu.

Sekvenční vyhledávání Postupně procházíme všechny prvky prostoru S a porovnáváme je s klíčem, dokud nenajdeme hledaný prvek. Na vstupu jsou neuspořádaná data. Složitost O(N).

Binární vyhledávání Lze najít i pod označením vyhledávání pomocí půlení intervalu. Data na vstupu musí být uspořádána. Používá se rekurze. Složitost O(log N).

Literatura http://www.algoritmy.net/ Korespondenční seminář z programování, https://ksp.mff.cuni.cz/