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 6 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é
VíceDatové 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íceHASHING 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ý
VíceAbstraktní 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,
VíceAdresní 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íceNá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í
VíceHASHING 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ý
VíceZá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íceAlgoritmizace 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
VíceRozptylovací 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
VícePOZOR 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í
VíceÚ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
VíceR 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
Více2 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
VíceSoubory 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í
VíceŠ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
VíceAbstraktní 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,
VíceSpojová 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
VíceDynamické 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íce2) 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
Vícea) Θ(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é
VíceC++ 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
VíceALG 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
VíceDynamické 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
Vícebrmiversity: 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
VíceALS1 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
VíceTabulka. Č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
Více4IT218 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
VíceDatabá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í
Více5 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í
VíceŠ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
VíceTř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í
VíceP í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
VíceVyhledá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áš
VíceB3B33ALP - 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]
VícePES 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.
VíceAlgoritmy 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
VíceB3B33ALP - 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)):
VíceDynamic 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
VíceÚ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
VíceBiná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
VíceAbstraktní 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
VíceFronta (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
VíceKolekce, 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
VíceDotazová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
VíceADT/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í
VíceProgramová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
VíceAlgoritmizace 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á
VíceÚ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
Více5. 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íceProgramová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
VíceMySQL 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
VíceZá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
VíceMichal 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ů
VíceAlgoritmizace 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á
VícePB161 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ž
VíceLineá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
VíceAlgoritmizace 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
VíceHaš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
VíceTabulka 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í
VíceZá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
VíceObsah. 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é
VíceMichal 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ů
VíceDatabá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
Víceint => 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
VíceČá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ý
Vícevyhledá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íceVyhledá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íceAbstraktní 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,
VíceKarel 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
VíceSpojové 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
VíceAlgoritmizace 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íceALGORITMIZACE 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
VícePL/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
VíceDatové 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ř.
VíceProgramová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é
VíceInformač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,
VíceZdů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íceZá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
VíceAplikace 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í
VíceALG 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íceIB111 Ú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íceKonstruktory 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,
VíceTabulka. 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
VíceÚ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í
VícePG 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
VíceOdpov 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
VíceNá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íceRobert 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á
VíceSpojový 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
VícePokroč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ů,
VíceHLEDÁ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,
VíceAlgoritmizace 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ů.
Vícefor (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
VíceEnterprise 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
VíceZá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á
VíceTGH07 - 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íceUkazatel (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
VíceGenerová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
VíceDigitá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
Více