Topics. Vyhledávání, zejména rozptylování. Slovník - Dictionary. Vyhledávání. Rozptylování - Hashing. Rozptylování - Hashing
|
|
- Magdalena Vítková
- před 7 lety
- Počet zobrazení:
Transkript
1 Datové struktury a algoritmy Vyhlednávání Topics ást Vyhledávání, zejména rozptylování Petr Felkel Rozptylování (hashing) Rozptylovací funkce ešení kolizí Z et zené rozptylování Otev ené rozptylování Linear Probing Double hashing DSA Slovník - Dictionary ada aplikací pot ebuje dynamickou množinu s operacemi: Search, Insert, Delete = slovník P. Tabulka symbol p eklada e identifikátor typ adresa suma int 0xFFFFDC DSA Vyhledávání Porovnáváním klí (log n) Nalezeno, když klí _prvku = hledaný klí nap. sekven ní vyhledávání, BVS,... Indexováním klí em (p ímý p ístup) () klí je p ímo indexem (adresou) rozsah klí ~ rozsahu index Rozptylováním pr m rn () výpo tem adresy z hodnoty klí e DSA asociativní adresní vyhledávání Rozptylování - Hashing = kompromis mezi rychlostí a spot ebou pam ti asu - sekven ní vyhledávání pam ti - p ímý p ístup (indexování klí em) málo asu i pam ti - hashing - velikost tabulky reguluje as vyhledání Rozptylování - Hashing Konstantní o ekávaný as pro vyhledání a vkládání (search and insert)!!! N co za n co: as provád ní ~ délce klí e není vhodné pro operace výb ru podmnožiny a azení (select a sort) DSA 5 DSA 6
2 použité klí e 0 Rozptylování Rozptylování vhodné pro K << U K K množina použitých klí U universum klí možné klí e = Universum klí DSA 7 U U 0 K Rozptylování h(0) h() h()? h(k) h() Dv fáze M-. Výpo et rozptylovací funkce h(k) (h(k) vypo ítá adresu z hodnoty klí e). Vy ešení kolizí h()... kolize: index již obsazen DSA 8 Rozptylovací funkce h(k). Výpo et rozptylovací funkce h(k) Zobrazuje množinu klí K U do intervalu adres A = <a min, a max >, obvykle <0,M-> U >> K ~= A (h(k) Vypo ítá adresu z hodnoty klí e) Synonyma: k k, h(k ) = h(k ) = kolize DSA 9 DSA 0 Rozptylovací funkce h(k) Je siln závislá na vlastnostech klí a jejich reprezentaci v pam ti Ideáln : výpo etn co nejjednodušší (rychlá) aproximuje náhodnou funkci využije rovnom rn adresní prostor generuje minimum kolizí proto: využívá všechny složky klí e Rozptylovací funkce h(k) Každá hashovací funkce má slabá místa, kdy pro r zné klí e dává stejnou adresu Univerzální hashování Místo jedné hashovací funkce h(k) máme kone nou množinu H funkcí mapujících U do intrervalu 0,,, m- P i spušt ní programu jednu náhodn zvolíme Tato množina je univerzální, pokud pro r zné klí e x,y U vrací stejnou adresu h(x) = h(y) p esn v H /m p ípadech Pravd podobnost kolize p i náhodném výb ru funkce h(k) je tedy p esn /m DSA DSA
3 Rozptylovací funkce h(k) -p íklady P íklady fce h(k) pro r zné typy klí reálná ísla celá ísla bitová et zce Chybná rozptylovací funkce Rozptylovací funkce h(k)-p íklady Pro reálná ísla 0.. multiplikativní: h(k,m) = round( k * M ) (neodd lí shluky blízkých ísel) M = velikost tabulky (table size) DSA DSA Rozptylovací funkce h(k)-p íklady Pro celá ísla (w-bitová) - for w-bit integers multiplikativní: (kde M je prvo íslo) h(k,m) = round( k / w * M ) modulární: h(k,m) = k % M kombinovaná: h(k,m) = round( c * k ) % M, c <0,> h(k,m) = (int)(0.666 * (float) k ) % M h(k,m) = (66 * (unsigned) k) % M Rozptylovací funkce h(k)-p íklady Hash functions h(k) - examples Rychlá, siln závislá na reprezentaci klí h(k) = k & (M-) pro M = x (není prvo íslo), a & = bitový sou in DSA 5 DSA 6 Rozptylovací funkce h(k)-p íklady Rozptylovací funkce h(k)-p íklady Pro et zce (for strings): Pro et zce: (pseudo-) randomizovaná int hash( char *k, int M ) int h = 0, a = 7; for( ; *k!= 0; k++ ) h = ( a * h + *k ) % M; return h; Hornerovo schéma: k * a + k *a + k 0 * a 0 = ((k * a) + k )*a + k 0 int hash( char *k, int M ) int h = 0, a = 5; b = 78; for( ; *k!= 0; k++, a = a*b % (M-) ) h = ( a * h + *k ) % M; return h; Univerzální rozptylovací fce kolize s pravd podobností /M odlišná náhodná konstanta pro r zné pozice v et zci DSA 7 DSA 8
4 Rozptylovací funkce h(k)-chyba astá chyba: funkce vrací stále stejnou hodnotu chyba v konverzi typ funguje, ale vrací blízké adresy proto generuje hodn kolizí => aplikace je extrémn pomalá Rozptylovací funkce h(k) Shrnutí -po ítá adresu z hodnoty klí e DSA 9 DSA 0 a) Z et zené rozptylování /5 Chaining. Vy ešení kolizí h(k) = k mod posloupnost :, 5,, 0, 7 heads link 0 \ 7 5 \ 0 Vkládá se na za átek \ seznamy synonym DSA DSA a) Z et zené rozptylování /5 private: link* heads; int N,M; [Sedgewick] public: init( int maxn ) // initialization N=0; // No.nodes M = maxn / 5; // table size heads = new link[m]; // table with pointers for( int ; i < M; i++ ) heads[i] = null;... a) Z et zené rozptylování /5 Item search( Key k ) return searchlist( heads[hash(k, M)], k ); void insert( Item item ) // Vkládá se na za átek int i = hash( item.key(), M ); heads[i] = new node( item, heads[i] ); N++; DSA DSA
5 a) Z et zené rozptylování /5 et z synonym má ideáln délku =n/m, > (pln ní tabulky) (n = po et prvk, m = velikost tabulky, m<n) velmi nepravd podobný Insert I(n) = t hash + t link = O() extrém Search Q(n) = t hash + t search pr m rn = t hash + t c * n/(m) = O(n) O( + ) Delete D(n) = t hash + t search + t link = O(n) O( + ) a) Z et zené rozptylování 5/5 Praxe: volit m = n/5 až n/0 => pln ní = 0 prvk / et z vyplatí se hledání sekven n neplýtvá nepoužitými ukazateli Shrnutí: + nemusíme znát n p edem pot ebuje dynamické p id lování pam ti pot ebuje pam na ukazatele a na tabulku[m] pro malá (velká m) se hodn blíží O()!!! pro velká (malá m) m-násobné zrychlení x seq. s. DSA 5 DSA 6 b) Otev ené rozptylování (open-address hashing) Znám p edem po et prvk (odhad) nechci ukazatele (v prvcích ani tabulku) => posloupnost do pole Podle tvaru hashovací funkce h(k) p i kolizi. lineární prohledávání (linear probing). dvojí rozptylování (double hashing) 0 DSA 7 b) Otev ené rozptylování h(k) = k mod 5 (h(k) = k mod m, m je rozm r pole) Problém: kolize - blokuje místo pro. linear probing. double hashing Pozn.: a jsou synonyma asto ale blokuje nesynonymum. Kolize je blokování libovolným klí em DSA 8 Test - Probe = ur ení, zda pozice v tabulce obsahuje klí shodný s hledaným klí em search hit = klí nalezen search miss = pozice prázdná, klí nenalezen Jinak = na pozici je jiný klí, hledej dál b) Otev ené rozptylování (open-addressing hashing) Metoda ešení kolizí (solution of collisions) Lineární prohledávání Dvojí rozptylování DSA 9 DSA 0
6 h(k) = [(k mod 5) + i ] mod 5 = (k + i) mod 5 kolize - blokuje =>. linear probing vlož o pozici dál (i++ => i = ) 0 h(k) = (k + i) mod 5. kolize - 5 blokuje - vlož dál. kolize - blokuje - vlož dál. kolize - blokuje - vlož dál vloženo o pozice dál (i = ) DSA DSA h(k) = (k + i) mod kolize - vlož dál (i++). kolize - vlož dál (i++) vlož o pozice dál (i = ) h(k) = (k + i) mod 5 i = 0 i = 7 i = DSA DSA private: Item *st; int N,M; [Sedgewick] Item nullitem; public: init( int maxn ) // initialization N=0; // Number of stored items M = *maxn; // load_factor < / st = new Item[M]; for( int ; i < M; i++ ) st[i] = nullitem;... void insert( Item item ) int i = hash( item.key(), M ); while(!st[i].null() ) i = (i+) % M; // Linear probing st[i] = item; N++; DSA 5 DSA 6
7 Item search( Key k ) int i = hash( k, M ); while(!st[i].null() ) //!cluster end // zarážka (sentinel) if( k == st[i].key() ) return st[i]; else i = (i+) % M; // Linear probing return nullitem; b) Otev ené rozptylování (open-addressing hashing) Metoda ešení kolizí (solution of collisions) Lineární prohledávání Dvojí rozptylování DSA 7 DSA 8 Hash function h(k) = [h (k) + i.h (k) ] mod m h (k) = k mod m // initial position h (k) = + (k mod m ) // offset Both depend on k => Each key has different probe sequence m = prime number or m = power of m = slightly less m = odd If d = greatest common divisor => search /d slots only Ex: k = 56, m = 70, m = 700 h (k) = 80, h (k) = 57 Starts at 80, and every 57 % 70 DSA 9 h(k) = k mod 5 kolize - blokuje (collision-blocks) =>. double hashing DSA 0 Nebo zjednodušen (or simplified) h(k) = [(k mod 5) + i.h (k) ] mod 5, h(k) = (k + i.) mod 5 sta í prvo íslo m kolize - blokuje (collision blocks) =>. double hashing vlož o pozice dál (i++ => i = ) (i je íslo pokusu) h(k) = (k + i.) mod 5 (P. velmi zjednodušené h(k)) 0 kolize - 5 blokuje - vlož dál (vlož o pozice dál (i = ) DSA DSA
8 h(k) = (k + i.) mod 5 (P. velmi zjednodušené h(k)) 7 0 h(k) = (k + i.) mod 5 (P. velmi zjednodušené h(k)) 7 0 i = i = DSA DSA Linear probing x Double hashing h(k) = (k + i) mod 5 h(k) = (k + i.) mod i = i =! i = 7 0 i = i = void insert( Item item ) Key k = item.key(); int i = hash( k, M ), j = hashtwo( k, M );// different for k!= k while(!st[i].null() ) i = (i+j) % M; //Double Hashing st[i] = item; N++; dlouhé shluky (long clusters) vno ené sekvence (mixed probe sequences) DSA 5 DSA 6 Item search( Key k ) int i = hash( k, M ), j = hashtwo( k, M );// different for k!= k while(!st[i].null() ) if( k == st[i].key() ) return st[i]; else i = (i+j) % M; // Double Hashing return nullitem; Double hashing - example h(k) = [h (k) + i.h (k) ] mod m Input h (k)= k % 9 h (k)= +k %0 6 6 i 0 0 0, 0, 0, 0 h(k),5,7, h (k) = k % h (k) = + (k % 0) DSA 7 DSA 8
9 Item removal (delete) Item x removal x replaced by null null breaks cluster(s)!!! => do not leave the hole after delete k k k x \ before \ \ break cluster Unreachable cluster parts Correction different for linear probing and double hashing b) in linear probing \ \ => reinsert the items after x (to the first null = to cluster end) b) in double hashing = \ => fill the hole up by a special sentinel skipped by search, replaced by insert Item removal (delete) k k k b) in linear probing \ \ Unreachable cluster parts => reinsert the items behined the cluster break (to the null) \ \ Remained => avoid simple move of cluster tail Reinserted to different place it can make other keys not accessible!!! k k k X DSA 9 DSA 50 Linear-probing Item Removal // do not leave the hole - can break a cluster void remove( Item item ) Key k = item.key(); int i = hash( k, M ), j; while(!st[i].null() )// find item to remove if( item.key() == st[i].key() ) break; else i = (i+) % M; if( st[i].null() ) return; // not found st[i] = nullitem; N--; //delete,reinsert for(j = i+;!st[j].null(); j=(j+)%m, N--) Item v = st[j]; st[j] = nullitem; insert(v); //reinsert elements after deleted DSA 5 Item removal (delete) h(k) = [h (k) + i.h (k) ] mod m null breaks paths to and 0? ? h (k) = k % h (k) = + (k % 0) Remove 5 Sentinel is correct = DSA 5 Double-hashing Item Removal // Double Hashing - overlapping search sequences // - fill up the hole by sentinel // - skipped by search, replaced by insert void remove( Item item ) Key k = item.key(); int i = hash( k, M ), j = hashtwo( k, M ); while(!st[i].null() ) // find item to remove if( item.key() == st[i].key() ) break; else i = (i+j) % M; if( st[i].null() ) return; // not found st[i] = sentinelitem; N--; // delete = replace b) Otev ené rozptylování (open-addressing hashing) = pln ní tabulky (load factor of the table) = n/m, 0, n = po et prvk (number of items in the table) m = velikost tabulky, m>n (table size) DSA 5 DSA 5
10 b) Otev ené rozptylování (open-addressing hashing) Average number of probes [Sedgewick] Linear probing: Search hits 0.5 ( + / ( - ) ) found Search misses 0.5 ( + / ( - ) ) not found Double hashing: Search hits ( / ) ln ( / ( - ) ) + ( / ) Search misses / ( - ) = n/m, 0, b) O ekávaný po et test Linear probing: Pln ní / / / 9/0 Search hit Search miss více test Double hashing: Pln ní / / / 9/0 Search hit Search miss Tabulka m že být více zapln ná než za ne klesat výkonnost. K dosažení stejného výkonu sta í menší tabulka. DSA 55 DSA 56 References [Cormen] Cormen, Leiserson, Rivest: Introduction to Algorithms, Chapter, McGraw Hill, 990 DSA 57
Vyhledávání, zejména rozptylování
Datové struktury a algoritmy Část 11 Vyhledávání, zejména rozptylování Petr Felkel 16.5.2016 Topics Vyhledávání Rozptylování (hashing) Rozptylovací funkce Řešení kolizí Zřetězené rozptylování Otevřené
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
HASHING GENERAL Hashovací (=rozptylovací) funkce
Níže uvedené úlohy představují přehled otázek, které se vyskytly v tomto nebo v minulých semestrech ve cvičení nebo v minulých semestrech u zkoušky. Mezi otázkami semestrovými a zkouškovými není žádný
Abstraktní datové typy II.
Datové struktury a algoritmy Abstraktní datové typy II. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol., 2012 Datové struktury a algoritmy,
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í
Návrh designu: Radek Mařík
Návrh designu: Radek Mařík 1. Hashovací (=rozptylovací) funkce a) převádí adresu daného prvku na jemu příslušný klíč b) vrací pro každý klíč jedinečnou hodnotu c) pro daný klíč vypočte adresu d) vrací
HASHING GENERAL Hashovací (=rozptylovací) funkce
Níže uvedené úlohy představují přehled otázek, které se vyskytly v tomto nebo v minulých semestrech ve cvičení nebo v minulých semestrech u zkoušky. Mezi otázkami semestrovými a zkouškovými není žádný
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ě
Algoritmizace Hashing II. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010
Hashing II Jiří Vyskočil, Marko Genyg-Berezovskyj 010 Srůstající hashování (coalesced hashing) Znám předem počet prvků (odhad) Z důvodů efektivity nechci ukazatele (mezi prvky). Na jednu pozici tabulky
Rozptylovací tabulky
Rozptylovací tabulky Hash tables Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 1 / 31 Rozptylovací tabulka Hash table Rozptylovací tabulka = implementace množiny / asociativního pole
POZOR klíč NENÍ index (adresa), ale podle klíče se hodnoty ukládají na indexy (adresy).
Hashovací tabulka = Hash table Hashovací tabulka (hash table, rozptýlená tabulka, hešovací tabulka) je datová struktura, která slouží k ukládání dvojic klíč-hodnota. kombinuje výhody vyhledávání pomocí
Úvod. Úvod do programování. Úvod. Hashovací tabulky
do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava do programování, 2004/2005 Mnohé aplikace nepotřebují ke svému provozu celou škálu operací podporovaných
R zné algoritmy mají r znou složitost
/ / zné algoritmy mají r znou složitost Dynamické programování / / Definice funkce Otázka Program f(x,y) = (x = ) (y = ) f(x, y-) + f(x-,y) (x > ) && (y > ) f(,) =? int f(int x, int y) { if ( (x == ) (y
2 Datové struktury. Pole Seznam Zásobník Fronty FIFO Haldy a prioritní fronty Stromy Hash tabulky Slovníky
Pole Seznam Zásobník Fronty FIFO Haldy a prioritní fronty Stromy Hash tabulky Slovníky 25 Pole Datová struktura kolekce elementů (hodnot či proměnných), identifikovaných jedním nebo více indexy, ze kterých
Soubory a databáze. Soubor označuje množinu dat, která jsou kompletní k určitému zpracování a popisují vybrané vlastnosti reálných objektů
Datový typ soubor Soubory a databáze Soubor označuje množinu dat, která jsou kompletní k určitému zpracování a popisují vybrané vlastnosti reálných objektů Záznam soubor se skládá ze záznamů, které popisují
Šablony, kontejnery a iterátory
7. října 2010, Brno Připravil: David Procházka Šablony, kontejnery a iterátory Programovací jazyk C++ Šablony Strana 2 / 21 Šablona funkce/metody Šablona je obecný popis (třídy, funkce) bez toho, že by
Abstraktní datové typy
Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní datové typy BI-PA2, 2011, Přednáška 10 1/27 Abstraktní datové typy Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky,
Spojová implementace lineárních datových struktur
Spojová implementace lineárních datových struktur doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 13. března 2017 Jiří Dvorský (VŠB
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é
2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.
Informatika 10. 9. 2013 Jméno a příjmení Rodné číslo 1) Napište algoritmus pro rychlé třídění (quicksort). 2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus
a) Θ(1) b) závislou na hloubce uzlu u c) mezi O(1) a Ω (log n) Jméno:... St. Sk.:. Cvičící:.. Bodů ze cv.: a) Ο(n) b) Θ(n) d) Ο(n 2 )
Jméno:... St. Sk.:. Cvičící:.. Bodů ze cv.: A 1. ( úspěšnost: 39 z 49 = 80%) Insert sort řadí do neklesajícího pořadí pole o n prvcích, v němž jsou stejné všechny hodnoty kromě první a poslední, které
C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++
C++ Akademie SH 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory Za áte níci C++ 20. b ezna 2011 Obsah 1 Prom nné - primitivní typy Celá ísla ƒísla s pohyblivou desetinnou árkou, typ bool 2 Podmínka
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
ABALG 5/ ALG Vícedimenzionální data Řazení vícedimenzionálních dat Experimentální porovnání řadících algoritmů na vícedimenzionálních datech ABALG 5/ Vícedimenzionální data..7.. -.. d = 6 5 6.....7.. -.....9
Dynamické programování. Optimální binární vyhledávací strom
The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Dynamické programování Optimální binární vyhledávací strom Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)), The
brmiversity: Um lá inteligence a teoretická informatika
brmiversity: Um lá inteligence a teoretická informatika P edná²ka. 6 Petr Baudi² pasky@ucw.cz brmlab 2011 Outline 1 Pravd podobnost 2 Um lá inteligence 3 Sloºitost 4 Datové struktury Pravd podobnost Pravd
ALS1 Přednáška 1. Pravěpodobnost, náhodná proměnná, očekávaná hodnota náhodné proměnné, harmonická čísla
ALS Přednáška Pravěpodobnost, náhodná proměnná, očekávaná hodnota náhodné proměnné, harmonická čísla Prostor elementárních jevů S je množina, jejíž prvky se nazývají elementární jev. Jev je podmnožina
Tabulka. Často jde nejenom o dynamickou množinu, ale i statickou množinu. Matematické tabulky statická množina
Tabulka Často jde nejenom o dynamickou množinu, ale i statickou množinu Matematické tabulky statická množina x cos x 0,0 1,000 0,1 0,995 0,2 0,980 0,3 0,955 0,4 0,921 0,5 0,878 0,6 0,825 0,7 0,765 0,8
4IT218 Databáze. 4IT218 Databáze
4IT218 Databáze Pátá přednáška Dušan Chlapek (katedra informačních technologií, VŠE Praha) 4IT218 Databáze Pátá přednáška SQL - DDL - dokončení SQL - DCL Vlastnosti relačních databázových systémů. Princip
Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce
Databázové systémy 2 Jméno a příjmení: Jan Tichava Osobní číslo: Studijní skupina: čtvrtek, 4 5 Obor: ININ SWIN E-mail: jtichava@students.zcu.cz Databázové systémy II. KIV/DB2 LS 2007/2008 Zadání semestrální
5 Rekurze a zásobník. Rekurzivní volání metody
5 Rekurze a zásobník Při volání metody z metody main() se do zásobníku uloží aktivační záznam obsahující - parametry - návratovou adresu, tedy adresu, kde bude program pokračovat v metodě main () po skončení
Šablony, kontejnery a iterátory
11. března 2015, Brno Připravil: David Procházka Šablony, kontejnery a iterátory Programovací jazyk C++ Šablony Strana 2 / 31 Obsah přednášky 1 Šablony 2 Abstraktní datové struktury 3 Iterátory 4 Array
Třetí skupina zadání projektů do předmětu Algoritmy II, letní semestr 2017/2018
Třetí skupina zadání projektů do předmětu Algoritmy II, letní semestr 2017/2018 doc. Mgr. Jiří Dvorský, Ph.D. 24. dubna 2018 Verze zadání 24. dubna 2018 První verze 1 1 Hašovací tabulka V tomto zadání
P íklad 1 (Náhodná veli ina)
P íklad 1 (Náhodná veli ina) Uvaºujeme experiment: házení mincí. Výsledkem pokusu je rub nebo líc, ºe padne hrana neuvaºujeme. Pokud hovo íme o náhodné veli in, musíme p epsat výsledky pokusu do mnoºiny
Vyhledávací algoritmy
Vyhledávací algoritmy Sekvenční hledání, binární hledání, indexace klíče, BST, hashing. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš
B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11
333LP - lgoritmy a programování - Zkouška z předmětu 333LP Jméno Příjmení Už. jméno Marek oháč bohacm11 Zkouškový test Otázka 1 Jaká je hodnota proměnné count po vykonání následujícího kódu: data=[4,4,5,5,6,6,6,7,7,7,7,8,8]
PES lib (C + PASCAL) KNIHOVNY KOMUNIKAÈNÍCH FUNKCÍ 03/2000. 1 PESlib KOMUNIKAČNÍ KNIHOVNY C, PASCAL 03/2000 13 stran 1
PES lib (C + PASCAL) KNIHOVNY KOMUNIKAÈNÍCH FUNKCÍ 03/2000 1 PESlib KOMUNIKAČNÍ KNIHOVNY C, PASCAL 03/2000 13 stran 1 PESlib Popis knihoven PASCAL a C 03.2000 2. verze dokumentu Zmìny a doplòky proti 1.
Algoritmy a datové struktury
Algoritmy a datové struktury Stromy 1 / 32 Obsah přednášky Pole a seznamy Stromy Procházení stromů Binární stromy Procházení BS Binární vyhledávací stromy 2 / 32 Pole Hledání v poli metodou půlení intervalu
B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11
Jméno Příjmení Už. jméno Marek oháč bohacm11 Zkouškový test Otázka 1 Jaká je hodnota proměnné count po vykonání následujícího kódu: data=[4,4,5,5,6,6,6,7,7,7,7,8,8] count=0 for i in range(1,len(data)):
Dynamic programming. Optimal binary search tree
The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Dynamic programming Optimal binary search tree Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)), The complexity
Úvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
Binární vyhledávací stromy pokročilé partie
Binární vyhledávací stromy pokročilé partie KMI/ALS lekce Jan Konečný 30.9.204 Literatura Cormen Thomas H., Introduction to Algorithms, 2nd edition MIT Press, 200. ISBN 0-262-5396-8 6, 3, A Knuth Donald
Abstraktní datové typy
Datové struktury a algoritmy Část 4 Abstraktní datové typy Petr Felkel Data structures and algorithms Part 4 Abstract data types Petr Felkel Abstraktní datové typy Zdůrazňují vnější chování datové struktury
Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4
Fronta (Queue) Ú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 Fronta uplatňuje mechanismus přístupu FIFO first
Kolekce, cyklus foreach
Kolekce, cyklus foreach Jen informativně Kolekce = seskupení prvků (objektů) Jednu již známe pole (Array) Kolekce v C# = třída, která implementuje IEnumerable (ICollection) Cyklus foreach ArrayList pro
Dotazování nad stromem abstraktní syntaxe
Fakulta jaderná a fyzikáln inºenýrská ƒeské vysoké u ení technické v Praze 3.6.2010 Osnova while 1 Reprezentace programu 2 AST a Java 3 Vyhledávání v AST 4 Aplikace body if expr Jak reprezentovat program
ADT/ADS = abstraktní datové typy / struktury
DT = datové typy obor hodnot, které může proměnná nabývat, s operacemi na tomto oboru určen: obor hodnot + výpočetní operace např. INT = { 2 147 483 648 až +2 147 483 647} + {+,,*,/,} ADT/ADS = abstraktní
Programování v C++, 2. cvičení
Programování v C++, 2. cvičení 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 Operátory new a delete 2 3 Operátory new a delete minule
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 Datové struktury Daniela Szturcová
Úvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
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
Programování v C++ 2, 8. cvičení
Programování v C++ 2, 8. cvičení návrhový vzor iterátor 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 Shrnutí minule procvičené látky
MySQL sežere vaše data
MySQL sežere vaše data David Karban @davidkarban AWS Certified http://davidkarban.cz/ It s not a bug, it s a feature syndrome Pravděpodobně znáte indexy. Urychlují dotazy. Mohou být řazené, vzestupně i
Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy
Ú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 Procesor Procesorem je objekt, který vykonává algoritmem popisovanou
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
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 Datové struktury Daniela Szturcová
PB161 Programování v jazyce C++ Přednáška 3
PB161 Programování v jazyce C++ Přednáška 3 Kontejnery Iterátory Algoritmy Nikola Beneš 4. října 2016 PB161 přednáška 3: kontejnery, iterátory, algoritmy 4. října 2016 1 / 25 Standardní knihovna C++ Už
Lineární Regrese Hašovací Funkce
Hašovací Funkce Mgr. Rudolf B. Blažek, Ph.D. prof. RNDr. Roman Kotecký, DrSc. Katedra počítačových systémů Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v
Algoritmizace a programování
Algoritmizace a programování V algoritmizaci a programování je důležitá schopnost analyzovat a myslet. Všeobecně jsou odrazovým můstkem pro řešení neobvyklých, ale i každodenních problémů. Naučí nás rozdělit
Hašování (Vyhledávání metodou transformace klíče)
Hašování (Vyhledávání metodou transformace klíče) Velmi účinnou vyhledávací metodou je hašování. Pro její anglický název hashing se poměrně obtížně hledá vhodný překlad do českého jazyka, proto zůstaneme
Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář
Vazba (binding) Tabulka symbolů Miroslav Beneš Dušan Kolář vazba = spojení mezi entitou a vlastností okamžik vazby (binding time) při návrhu jazyka při implementaci jazyka během překladu/spojování/zavádění
Základní datové struktury
Základní datové struktury Martin Trnečka Katedra informatiky, Přírodovědecká fakulta Univerzita Palackého v Olomouci 4. listopadu 2013 Martin Trnečka (UPOL) Algoritmická matematika 1 4. listopadu 2013
Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15
Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal
Databázové systémy - SQL * definice dat * aktualizace * pohledy Tomáš Skopal Osnova přednášky definice dat definice (schémat) tabulek a integritních omezení CREATE TABLE změna definice schématu ALTER TABLE
int => unsigned int => long => unsigned long => float => double => long double - tj. bude-li:
13.4.2010 Typová konverze - změna jednoho datového typu na jiný - známe dva základní implicitní ("sama od sebe") a explicitní (výslovně vyžádána programátorem) - C je málo přísné na typové kontroly = dokáže
Část I Spojové struktury
Část 1 Spojové struktury (seznamy) Spojové struktury Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 10 A0B36PR1 Programování 1 Spojové struktury Spojový
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é
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
Abstraktní datové typy
Datové struktury a algoritmy Abstraktní datové typy Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol., 2013 Datové struktury a algoritmy,
Karel Kohout 18. května 2010
Karel (karel.kohout@centrum.cz) 18. května 2010 1 2 3 4 Hašovací funkce = Message-Digest algorithm 5, vychází z MD4 (podobně jako SHA-1), autor prof. Ronald Rivest (RSA) Řetězec livobovolné délky na řetězec
Spojové struktury. Jan Faigl. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 10 A0B36PR1 Programování 1
Spojové struktury Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 10 A0B36PR1 Programování 1 Jan Faigl, 2015 A0B36PR1 Přednáška 10: Spojové struktury
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
ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)
ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK) Strom / tree uzel, vrchol / node, vertex hrana / edge vnitřní uzel
PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.
PL/SQL Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd. Rozšířením jazyka SQL o proceduralitu od společnosti ORACLE je jazyk
Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo
Datové typy v Javě Tomáš Pitner, upravil Marek Šabo Úvod k datovým typům v Javě Existují dvě základní kategorie datových typů: primitivní a objektové Primitivní v proměnné je uložena přímo hodnota např.
Programování v C++ 1, 5. cvičení
Programování v C++ 1, 5. cvičení konstruktory, nevirtuální dědění 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 3 Shrnutí minule procvičené
Informační systémy 2008/2009. Radim Farana. Obsah. Skripty a dávky. Nastavení aktuální databáze. USE DatabaseName
8 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah MS SQL Server 2005, Jazyk Transact-SQL, syntaxe, proměnné, struktury,
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
Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června 2007. krovacek@students.zcu.cz
Databáze čajových sáčků Martina Málková Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky Databázové systémy 2 9. června 2007 krovacek@students.zcu.cz 1 1 Datová analýza V původním
Aplikace pravd podobnostních model v kurzovém sázení
Aplikace pravd podobnostních model v kurzovém sázení 28.4.2016 Obsah 1 Kurzové sázení Tenis Kurz jako odhad pravd podobnosti Hodnocení kvality odhadu pravd podobnosti 2 Predikce pr b hu utkání Základní
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
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ě
Konstruktory a destruktory
Konstruktory a destruktory Nedostatek atributy po vytvoření objektu nejsou automaticky inicializovány hodnota atributů je náhodná vytvoření metody pro inicializaci, kterou musí programátor explicitně zavolat,
Tabulka. Datová struktura, která umožňuje vkládat a později vybírat informace podle identifikačního klíče. Mohou být:
ADT Tabulka Datová struktura, která umožňuje vkládat a později vybírat informace podle identifikačního klíče. Mohou být: pevně definované (LUT Look Up Table) s proměnným počtem položek Konvence: Tabulka
Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií
1 Fakulta elektrotechniky a informatiky Katedra softwarových technologií 12. října 2009 Organizace výuky Přednášky Teoretické základy dle normy jazyka C Cvičení Praktické úlohy odpřednášené látky Prostřední
PG 9.5 novinky ve vývoji aplikací
PG 9.5 novinky ve vývoji aplikací P2D2 2016 Antonín Houska 18. února 2016 Část I GROUPING SETS, ROLLUP, CUBE Agregace Seskupení řádků tabulky (joinu) do podmnožin podle určitého kĺıče. Za každou podmnožinu
Odpov di na dotazy uchaze e k ve ejné zakázce. 2/2015-53-28
Odpov di na dotazy uchaze e k ve ejné zakázce. 2/2015-53-28 Rámcová smlouva o vývoji a údržb aplika ního programového vybavení pro oblast Správy údajové základny - II A. Z popisu modelového požadavku v
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
Robert Haken [MVP ASP.NET/IIS, MCT] software architect, HAVIT, Základní algoritmy v praxi
Robert Haken [MVP ASP.NET/IIS, MCT] software architect, HAVIT, s.r.o. haken@havit.cz, @RobertHaken Základní algoritmy v praxi Agenda Intro Řazení Vyhledávání Datové struktury LINQ to Objects Intro Asymptotická
Spojový seznam. Jan Kybic.
Spojový seznam Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 2017 1 / 25 Složitost operací u lineárních datových struktur v Pythonu operace zásob. fronta pole pole řetězce přidej na začátek
Pokročilá algoritmizace amortizovaná složitost, Fibonacciho halda, počítačová aritmetika
amortizovaná složitost, Fibonacciho halda, počítačová aritmetika Jiří Vyskočil, Marko Genyg-Berezovskyj 2009 Amortizovaná složitost Asymptotická složitost často dostatečně nevypovídá o složitosti algoritmů,
HLEDÁNÍ WIEFERICHOVÝCH PRVOČÍSEL. 1. Úvod
Kvaternion 2/2013, 103 109 103 HLEDÁNÍ WIEFERICHOVÝCH PRVOČÍSEL PETR LEŽÁK Abstrakt. Článek pojednává o současném stavu hledání Wieferichových prvočísel. Jsou zde navrženy metody, jak toto hledání urychlit,
Algoritmizace a programování
Pátek 14. října Algoritmizace a programování V algoritmizaci a programování je důležitá schopnost analyzovat a myslet. Všeobecně jsou odrazovým můstkem pro řešení neobvyklých, ale i každodenních problémů.
for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }
5. Operátor čárka, - slouží k jistému určení pořadí vykonání dvou příkazů - oddělím-li čárkou dva příkazy, je jisté, že ten první bude vykonán dříve než příkaz druhý. Např.: i = 5; j = 8; - po překladu
Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)
Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Enterprise Java
Základní stavební prvky algoritmu
Základní stavební prvky algoritmu Podmínka. Cyklus for, while, do-while. Funkce, metody. Přetěžování. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká
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
Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný
Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný typem proměnné - ukazatel je tedy adresa společně s
Generování vnitřní reprezentace programu
Generování vnitřní reprezentace programu Miroslav Beneš Dušan Kolář Možnosti překladu Interpretace Okamžité provádění programu Překlad do instrukcí procesoru Závislost na konkrétním typu procesoru Překlad
Digitální podepisování pomocí asymetrické kryptografie
Digitální podepisování pomocí asymetrické kryptografie Jan Máca, FJFI ČVUT v Praze 26. března 2012 Jan Máca () Digitální podepisování 26. března 2012 1 / 22 Obsah 1 Digitální podpis 2 Metoda RSA 3 Metoda