Jméno:... St. Sk.:. Cvičící:.. Bodů ze cv.: (Tučná čísla indikují počet neuspěvších (z 50) v jednotlivých otázkách) 1.
|
|
- Vilém Hruda
- před 7 lety
- Počet zobrazení:
Transkript
1 Jméno:... St. Sk.:. Cvičící:.. Bodů ze cv.: (Tučná čísla indikují počet neuspěvších (z 50) v jednotlivých otázkách) Heap sort a) není stabilní, protože halda (=heap) není stabilní datová struktura b) není stabilní, protože žádný rychlý algoritmus ( Θ(n*log(n))) nemůže být stabilní c) je stabilní, protože halda (=heap) je vyvážený strom d) je stabilní, protože to zaručuje pravidlo haldy e) neplatí o něm ani jedno předchozí tvrzení Heap sort není stabilní, c) i d) odpadají. b) není pravda, neboť Merge sort má dotyčnou rychlost a stabilní být může (většinou je). Dělení na stabilní a nestabilní a u datových struktur neexistuje (co by to vůbec bylo?), takže ani a) neplatí a zbývá jen e). Poznámka: Zde bychom ocenili zpětnou vazbu, proč se množství respondentů (35!!) zdála nestabilní datová struktura tak přítažlivá Funkce int ff(int x, int y) { if (x < y) return ff(x+1,y); return x; a) buď hned vrátí první parametr nebo jen do nekonečna volá sama sebe b) vrátí maximální hodnotu z obou parametrů c) vrátí součet svých parametrů d) vrátí x+1 e) neprovede ani jednu z předchozích možností Když je x větším (nebo stejným) z obou parametrů, jeho hodnota je vrácena ihned. V opačném případě se v rekurzivním volání jeho hodnota zvětšuje tak dlouho, dokud nedosáhne hodnoty y tedy původně většího z obou parametrů. Při návratu z rekurze již k žádným změnám nedochází, opět je tedy vrácena hodnota většího z obou parametrů. Platí možnost b) Obsah uzlů daného stromu vypíšeme v pořadí postorder. Vznikne posloupnost a) G F E D C B A b) F C G D B E A c) G C F A E B D d) D E B F G C A Přímo z definice pořadí postorder plyne, že je nutno volit odpověď d) Metoda hashování s vnějším zřetězením a) nemá problém s kolizemi, protože při ní nevznikají
2 b) dokáže uložit pouze předem známý počet klíčů c) ukládá synonyma do samostatných seznamů v dynamické paměti d) ukládá synonyma spolu s ostatními klíči v poli Každý alespoň elementární popis zřetězeného rozptylování vede na odpověď b). Kolize vznikají vždy, pole se tu nepoužívá a počet klíčů není teoreticky omezen V určitém problému je velikost zpracovávaného pole s daty rovna rovna 3n 2 log(n 2 ) kde n charakterizuje velikost problému. Pole se řadí pomocí Insert sort-u. Asymptotická složitost tohoto algoritmu nad uvedeným polem je tedy a) Ο(n 2 log(n)) b) Ο(n 2 log(n 2 )) c) Ο(n 4 log 2 (n)) d) Ο(n 2 log(n) + n 2 ) e) Ο(n 2 ) Máme-li velikost pole rovnu k, Insert sort jej zpracuje v čase Ο(k 2 ). Velikost našeho pole je k = 3n 2 log(n 2 ), takže bude zpracováno v čase Ο(k 2 ) = Ο((3n 2 log(n 2 )) 2 ) = = O(9n 4 log 2 (n 2 )) = O(9n 4 4 log 2 (n)) = O(n 4 log 2 (n)). Platí tedy možnost c) Uvedený konečný automat se startovním stavem S přijme slovo a) aaaa b) ba c) bab d) bbb e) žádné z předchozích Slovo bab je to pravé. Posloupnost přechodů je tato: (S), b --> (B), b --> (A), b --> (B). (B) je koncový stav, takže slovo bab je přijato. Žádné jiné slovo z nabízených přijato nebude, takže platí možnost c). Poznámka: Redakčním nedopatřením vznikly dva přechody ze stavu C označené písmenem b. Přechod ze stavu C po přečtení symbolu b je tedy nejednoznačný, naštěstí to však nemá na řešení celé otázky 6 žádný vliv. Objekt na obrázku kromě toho zůstává i nadále řádným konečným automatem, jen se stal nedeterministickým, ale o tom až v dalších semestrech Datový typ a) je plně popsán soustavou axiomů b) je určen druhy dat a typickými operacemi c) je určen typickými operacemi d) je určen druhy dat
3 To je otázka pamatování si definice. Pro datový typ musí být známo, s jakými vůbec hodnotami může pracovat (= druhy dat) a také musí být známo, jaké operace nad těmito hodnotami lze v rámci datového typu provádět (= typické operace). Platí b) Levá rotace v a) v podstromu s kořenem u přemístí pravého syna u p do kořene. Přitom se uzel u stane levým synem p a levý podstrom p se stane pravým podstromem b) v podstromu s kořenem u přemístí levého syna u l do kořene. Přitom se uzel u stane pravým synem l a levý podstrom l se stane pravým podstromem c) v podstromu s kořenem u přemístí pravého syna u p do kořene. Přitom se uzel u stane levým synem p a pravý podstrom p se stane levým podstromem d) v podstromu s kořenem u přemístí levého syna u l do kořene. Přitom se uzel u stane pravým synem l a pravý podstrom l se stane levým podstromem Zde můžeme jen doporučit nakreslení obrázku, případně nahlédnutí do vhodné publikace, možnost a) se ukáže být jedinou správnou Vyvážení BVS některou z operací rotace a) je nutno provést po každé operaci Insert b) je nutno provést po každé operaci Delete c) je nutno provést po každé operaci Insert i Delete d) snižuje hloubku stromu e) není pro udržování BVS nezbytné Binární vyhledávací stromy se vyvažovat mohou a také nemusí. Možnosti a) b) c) tedy opadají a zřejmě platí možnost e). Možnost d) neplatí, protože rotace nemusí snížit hloubku stromu, je-li provedena dostatečně vysoko ve stromu v některé z kratších větví (jednoduché cvičení najděte na to příklad, budete potřebovat pět pater stromu) V následující datové struktuře lze maximálně třemi operacemi přečíst poslední prvek a) fronta b) zásobník c) tabulka d) strom e) žádná z uvedených V tabulce ani ve stromu žádný poslední prvek definován není, možnosti c) a d) odpadají. Poslední prvek ve frontě obsahující alespoň pět prvky se na začátek dostane po nejméně čtyřech operacích Delete a žádný jiný přístup k němu není, takže možnost a) odpadá také. V zásobníku je naopak poslední prvek na vrcholu, takže je pomocí operací Pop či Top snadno přístupný i ke čtení. Platí možnost b)
4 Jméno:... St. Sk.:. Cvičící:.. Bodů ze cv.: (Tučná čísla indikují počet neuspěvších (z 45) v jednotlivých otázkách) Merge sort a) lze napsat tak, aby nebyl stabilní b) je stabilní, protože jeho složitost je Θ (n*log(n)) c) je nestabilní, protože jeho složitost je Θ(n*log(n)) d) je rychlý ( Θ(n*log(n))) právě proto, že je stabilní e) neplatí o něm ani jedno předchozí tvrzení Rychlost a stabilita řazení nejsou v žádné příčinné souvislosti, odpovědi b), c), d) jsou pouhá mlha. Při slévání (vemte si k ruce kód!) můžeme jednoduchou záměnou ostré a neostré nerovnosti v porovnávání prvků způsobit, že při stejných porovnávaných prvcích dostane přednost buď prvek z levé nebo z pravé části řazeného úseku. Když dostanou přednost prvky z pravé části, octnou se nakonec v seřazeném poli před těmi prvky, které byly v levé části a měly stejnou hodnotu. To je ovšem projev nestability. Platí možnost a) Funkce int ff(int x, int y) { if (y>0) return ff(x, y-1)+1; return x; a) sečte x a y, je-li y nezáporné b) pro kladná y vrátí y, jinak vrátí x c) spočte rozdíl x y, je-li y nezáporné d) spočte rozdíl y x, je-li y nezáporné e) vrátí hodnotu svého většího parametru Pro y záporné nebo nulové vrátí fukce hodnotu x, Pro kladné y volá sama sebe. Počet volání je roven hodnotě y (neboť tento parametr se při každém volání o jedničku zmenší) a při návratu z rekurze se návratová hodnota z většuje pkaždé o 1. Počet volání je y, nejvnitřnější volání vrátí hodnotu x, takže návrat z rekurze přičte k x ještě hodnotu y. Správná odpověď je a) Obsah uzlů daného stromu vypíšeme v pořadí preorder. Vznikne posloupnost a) A B C D E F G H b) D B E A F C G c) A B D E C F G d) D E F G B C A Přímo z definice pořadí postorder plyne, že je nutno volit odpověď c) Metoda otevřeného rozptylování
5 a) generuje vzájemně disjunktní řetězce synonym b) dokáže uložit pouze předem známý počet klíčů c) zamezuje vytváření dlouhých clusterů ukládáním synonym do samostatných seznamů v dynamické paměti d) dokáže uložit libovolný předem neznámý počet klíčů Varianty a), c), d) platí zřejmě pro zřetězené rozptylování, což vyplývá bezprostředně již z jakéhokoli jednoduchého popisu zřetězeného rozptylování. Zbývá jen správná možnost b) V určitém problému je velikost zpracovávaného pole s daty rovna rovna 2n 3 log(n) kde n charakterizuje velikost problému. Pole se řadí pomocí Select sort-u. Asymptotická složitost tohoto algoritmu nad uvedeným polem je tedy a) Θ(n 2 ) b) Θ(n 6 log 2 (n)) c) Θ(n 3 log(n)) d) Θ(n 3 log(n) + n 2 ) e) Θ(n 5 log(n)) Máme-li velikost pole rovnu k, Select sort jej zpracuje v čase Θ(k 2 ). Velikost našeho pole je k = 2n 3 log(n), takže bude zpracováno v čase Θ (k 2 ) = Θ((2n 3 log(n)) 2 ) = = Θ(4n 6 log 2 (n)) = Θ(n 6 log 2 (n)). Platí tedy možnost b) Uvedený konečný automat se startovním stavem S přijme slovo a) babb b) ba c) aaa d) aba e) žádné z předchozích Slovo aba je to pravé. Posloupnost přechodů je tato: (S), a --> (A), b --> (S), b --> (A). (A) je koncový stav, takže slovo aba je přijato. Žádné jiné slovo z nabízených přijato nebude, takže platí možnost d) Druh dat a) popisuje syntaxi datového typu b) popisuje sémantiku datového typu c) je povolená množina hodnot d) lze popsat graficky pomocí oválů, malých kroužků a spojovacích čar a písmen Toto je otázka směrem do definic druh dat je to, co se zmiňuje ve variantě c).
6 8. 13 Pravá rotace v a) v podstromu s kořenem u přemístí pravého syna u p do kořene. Přitom se uzel u stane levým synem p a levý podstrom p se stane pravým podstromem b) v podstromu s kořenem u přemístí levého syna u l do kořene. Přitom se uzel u stane pravým synem l a levý podstrom l se stane pravým podstromem c) v podstromu s kořenem u přemístí pravého syna u p do kořene. Přitom se uzel u stane levým synem p a pravý podstrom p se stane levým podstromem d) v podstromu s kořenem u přemístí levého syna u l do kořene. Přitom se uzel u stane pravým synem l a pravý podstrom l se stane levým podstromem Zde můžeme stejně jako ve vedlejším oddělení jen doporučit nakreslení obrázku, případně nahlédnutí do vhodné publikace, možnost d) se ukáže být jedinou správnou Binární vyhledávací strom: a) musí splňovat podmínku haldy b) udržuje v každém uzlu referenci na uzel s nejbližším větším klíčem c) udržuje v každém uzlu referenci na uzel s nejbližším větším i s nejbližším menším klíčem d) po každém vložení prvku do BVS musí proběhnout vyvážení stromu e) po průchodu v pořadí inorder vydá seřazenou posloupnost klíčů Podmínku haldy musí splňovat pouze halda, která ani není BVS. Reference na jiné uzly než jen bezprostřední potomky nejsou v BVS povinností a vyvažování BVS také není povinné. Zbývá tak jen možnost e), o níž se hovoří i při výkladu pořadí inorder jako takového Následující datová struktura má definován index a) fronta b) tabulka c) strom d) množina e) žádná z uvedených Ze základních ADT má index definováno jen pole. To se v nabízeném seznamu nevyskytuje, takže platí možnost e) žádná z uvedených.
7 Jméno:... St. Sk.:. Cvičící:.. Bodů ze cv.: 1. (5 b.) Deklarujte uzel binárního stromu, který bude obsahovat celočíselné složky výška a hloubka. Ve složce hloubka bude uložena hloubka daného uzlu ve stromu, ve složce výška jeho výška. Výška uzlu X je definována jako vzdálenost od jeho nejvzdálenějšího potomka (= počet hran mezi uzlem X a jeho nejvzdálenějším potomkem). Napište funkci, která každému uzlu ve stromu přiřadí korektně hodnotu jeho hloubky a výšky Při počítaní hloubky stačí každému potomku uzlu X přiřadit o 1 větší hloubku než má uzel X. Sama rekurzivní procedura mluví za dlouhé výklady: void sethloubka(node x, int depth) { if (x == null) return; x.hloubka = depth; sethloubka(x.left, depth+1); sethloubka(x.right,depth+1); Přiřazení hloubky každému uzlu ve stromu pak provedeme příkazem sethloubka(ourtree.root, 0); Všimněte si, že hloubky se uzlům přiřazují celkem logicky v pořadí preorder. Při přiřazování výšky uzlu X musíme naopak znát výšku jeho potomků, takže se nabízí zpracování v pořadí postorder: void setvyska(node x) { int vyskal = -1; // nejprve predpokladejme, ze uzel nema potomky. int vyskar = -1; // dtto if (x.left!= null) { setvyska(x.left); vyskal = x.left.vyska; if (x.right!= null) { setvyska(x.right); vyskar = x.right.vyska; x.vyska = max(vyskal, vyskar) + 1; Přiřazení výšky každému uzlu ve stromu pak provedeme příkazem if (ourtree.root!= null) setvyska(ourtree.root); Celý proces s výškou lze zachytit ještě úsporněji: int setvyska(node x) { if (x == null) return -1; x.vyska = 1+ max(setvyska(x.left), setvyska(x.right)); Přiřazení výšky každému uzlu ve stromu pak provedeme např. příkazem zbytecnaprom = setvyska(ourtee.root);
8 2. (5 b.) Implementujte nerekurzivní variantu Merge sortu s využitím vlastního zásobníku. Vaše implementace nemusí usilovat o maximální rychlost, stačí, když dodrží asymptotickou složitost Merge sortu. Jednotlivé operace zásobníku neimplementujte, předpokládejte, že jsou hotovy, a pouze je vhodně volejte. Merge sort řeší svou úlohu pomocí procházení stromu rekurze v pořadí postorder. Je to zřejmé, protože k tomu, aby mohl být zpracován (=seřazen) některý úsek pole, musí být jïž seřazeny obě jeho poloviny, tj řazení muselo proběhnout v potomcích uzlu, který reprezentuje aktuální úsek. Musíme tedy umět zpracovat uzly stromu v pořadí postorder bez rekurze. Na zásobník si budeme ukládat jednotlivé uzly spolu s informací koikrát byly již navštíveny. Do zpracování uzlu se dáme až tehdy, když ze zásobníku vyzvedneme uzel s informací že do něho již vstupujeme potřetí (tj přicházíme z jeho již zpracovaného pravého podstromu). Průchod stromem může proto vypadat např. takto: if (ourtree.root == null) return; stack.init(); stack.push(ourtree.root, 1) while (stack.empty() == false) { (nodex, time) = stack.pop(); if (isleaf(nodex) == true) continue; // Listy ve stromu merge sortu // budou úseky o délce jedna, // ty nijak zpracovávat (= řadit) nebudeme if( time == 1) { stack.push(nodex, time+1); // počet návštěv akt. uzlu vzrostl stack.push(nodex.left, 1) // a doleva jdeme poprvé if( time == 2) { stack.push(nodex, time+1); stack.push(nodex.right, 1) // počet návštěv akt. uzlu vzrostl // a doprava jdeme poprvé if( time == 3) { zpracuj(nodex); // end of while // zpracování = sloučení úseku pole //odpovídajícího uzlu nodex. Uvedenou kostru algoritmu je jen nutno doplnit: -- uzel stromu odpovídá řazenému úseku pole, nodex tedy bude charakterizován a nahrazen dvojicí (horní mez, dolní mez) určující úsek pole. -- test isleaf(nodex) nahradíme testem, zda horní a dolní mez jsou si rovny -- vÿpočteme střed řazeného úseku. Levý následník pak bude charakterizován dvojicí čísel (dolní mez, střed), pravý následník dvojicí čísel (střed+1, horní mez) -- zpracuj (nodex) nebude nic jiného, než obyčejné slévání obou polovičních úseků (dolní mez, střed) a (střed+1, horní mez) do úseku (dolní mez, horní mez) stejně jako je tomu v rekurzivním Merge sort-u. Budeme jen potřebovat pomocné pole pro slévání (to v rekurzivní variantě také potřebujeme). Slévání v nejjednodušší variantě sleje oba úseky do pomocného pole a odtud je zkopíruje zpět do řazeného pole.
9 3. (5 b.) Implementujte operace Init, Search, Insert pro rozptylovací tabulku s otevřeným rozptylováním, do níž se ukládají celočíselné klíče. Předpokládejte, že rozptylovací funkce je již implementována a Vám stačí ji jen volat. Použijte strategii Linear probing. Zde pokud se nevyskytne přímá žádost řešení prozatím neuvádím, jedná se jen o přímou implementaci standardní situace popsané v přednášce i literatuře, nic se tu nemusí vymýšlet, předpokládáme tedy, že si zájemci mohou (příp. s knihou či obrazovkou) tamtéž uvedené kódy projít.
10 Jméno:... St. Sk.:. Cvičící:.. Bodů ze cv.: 1. (5 b.) Na vstupu je neseřazené pole prvků pole[počet]. Bez toho, abyste toto pole seřadili, napište funkci, která v něm nalezne nalezne k-tý nejmenší prvek (= k-tý v seřazeném poli). Použijte metodu rozděl a panuj jako při řazení Quick-sortem, ale celé pole neřaďte. Hodnota k bude vstupním parametrem Vašeho algoritmu. Postup, který ve Quick sort-u dělí úsek pole na malé a velké hodnoty můžeme beze zbytku využít i zde. Dejme tomu, že máme pole prvků [1..n]. Nechť po rozdělení na malé a velké má poslední prvek v oddílu malých index m. Nyní můžeme usuzovat takto: Pokud je k <= m, znamená to, že hledaný k-tý nejmenší prvek se nalézá mezi prvními (nejmenšími!!) m prvky v poli, čili jej budeme dále hledat pouze v úseku [1..m] a úsek [m+1..n] můžeme zcela zanedbat. Pokud naopak k > m, znamená to, že úsek [1..m] je zcela nezajímavý a hledat dále musíme již jen v úseku [m+1..n]. Ve vybraném úseku pak budeme dále tuto myšlenku aplikovat zcela identicky pomocí rekurze na čím dál menší úseky, tak dlouho, dokud nebude aktuální úsek obsahovat jen jeden prvek. To bude právě k-tý nejmenší prvek v celém poli. Postup dělení na malé a velké okopírujeme z Quick sort-u a umístíme pro přehlednost do jedné funkce, která vrátí hodnotu m, tj index posledního prvku v úseku malých hodnot. int maxindexsmall(int [ ] array, int Lo, int Hi); S využitím této funkce můžeme pak celý postup zapsat takto: int k_min (int [ ] array, int Lo, int Hi, int k) { if (Lo == Hi) return array[lo]; int m = maxindexsmall(array, Lo, Hi); if (k <= m) return k_min(array, Lo, m, k); if (k > m) return k_min(array, m+1, Hi, k); Hledanou k-tou nejmenší hodnotu celého pole pak získáme příkazem k_nejm_hodnota = k_min(array, 1, n, k); Poznámka: Jo, jo, rekurze (5 b.) Implementujte cyklickou frontu v poli pole[délka]. Dokud není pole zcela naplněno, musí být fronta stále funkční, tzn. musí být možné do ní stále přidávat i z ní ubírat. Narazí-li konec nebo začátek fronty na konec nebo začátek pole, neposunujte všechny prvky v poli, zvolte výhodnější cyklickou strategii, která zachová konstantní složitost operace Vlož a Vyjmi. Myšlenka cyklické fronty je velmi jednoduchá. Připojíme první pozici pole ihned za poslední pozici a poslední pozici ihned před první. Tak se nám celé pole zacyklí neboť při postupu stále doprava dojdeme nakonec na začátek pole. Nejsnáze se to implementuje pomocí indexů pole. Dejme tomu, že máme pole array[n]. int nextindex(int i) { if (i < n-1) return (i+1); else return 0;
11 int previndex(int i) { if (i > 0) return (i-1); else return (n-1); Budeme-li pro pohyb v poli užívat pouze uvedené funkce, nemůžeme se dostat mimo meze pole. Protože se snadno stane, že po určité době života fronty se i při neprázdné frontě octne konec fronty před jejím začátkem v poli (namaluje si příslušný obrázek!), bude vhodné pro kontrolu prázdnosti či přeplnění fronty registrovat zvlášť počet prvků ve frontě Vložení prvku do fronty pak proběhne například takto: boolean insert(int key) { if (fronta.pocetprvku == n) return false; fronta.konec = nextindex(fronta.konec); array[fronta.konec] = key; fronta.pocetprvku++; return true; Obdobně bude implementována operace Delete, operace Init a Empty jsou již snad příliš jednoduché na to, aby tu musely být uvedeny. 3. (5 b.) Implementujte operace Init, Search, Insert a Delete pro rozptylovací tabulku se zřetězeným rozptylováním, do níž se ukládají celočíselné klíče. Předpokládejte, že rozptylovací funkce je již implementována a Vám stačí ji jen volat. Zde pokud se nevyskytne přímá žádost řešení prozatím neuvádím, jedná se jen o přímou implementaci standardní situace popsané v přednášce i literatuře, nic se tu nemusí vymýšlet, předpokládáme tedy, že si zájemci mohou (příp. s knihou či obrazovkou) tamtéž uvedené kódy projít.
12 Statistika Test A, první v tomto souboru, Typická náročná otázka: Halda není stabilní datová struktura.... Respondentů: 50 Otázka Počet chybných odpovědí lebková X X X X Test B, druhý v tomto souboru, Typická náročná otázka: Žádná z uvedených datových struktur nemá definován index Respondentů: 45 Otázka Počet chybných odpovědí lebková X X X X
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íceSTACK
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í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íceBINARY SEARCH TREE
---------------------------------------- BINARY SEARCH TREE --------------------------------------------------- Je dán BVS s n uzly. Máme za úkol spočítat hodnotu součtu všech klíčů v tomto stromě. Když
VíceStromy. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.
Stromy Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol., 2018, B6B36DSA 01/2018, Lekce 9 https://cw.fel.cvut.cz/wiki/courses/b6b36dsa/start
VíceSTACK
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í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íceBINARY SEARCH TREE
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í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í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í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í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íceStromy. Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy
Stromy úvod Stromy Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy Neorientovaný strom Orientovaný strom Kořenový orientovaný
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íceRekurzivní algoritmy
Rekurzivní algoritmy 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 (BI-EFA) ZS
VíceA4B33ALG 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íceStromy, 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íceZáklady algoritmizace c2005, 2007 Michal Krátký, Jiří Dvorský1/39
Základy algoritmizace Michal Krátký 1, Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Základy algoritmizace, 2006/2007 Základy algoritmizace c2005, 2007 Michal Krátký, Jiří Dvorský1/39
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íceReprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz
Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz (2 + 5) * (13-4) * + - 2 5 13 4 - listy stromu obsahují operandy (čísla) - vnitřní uzly obsahují operátory (znaménka)
VíceZá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í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ícebin 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
binární vyhledávání a bst Karel Horák, Petr Ryšavý 23. března 2016 Katedra počítačů, FEL, ČVUT Příklad 1 Naimplementujte binární vyhledávání. Upravte metodu BinarySearch::binarySearch. 1 Příklad 2 Mysĺım
VíceVolné stromy. Úvod do programování. Kořenové stromy a seřazené stromy. Volné stromy
Volné stromy Úvod do programování Souvislý, acyklický, neorientovaný graf nazýváme volným stromem (free tree). Často vynecháváme adjektivum volný, a říkáme jen, že daný graf je strom. Michal Krátký 1,Jiří
Vícea) b) c) Radek Mařík
2012-03-20 Radek Mařík 1. Čísla ze zadané posloupnosti postupně vkládejte do prázdného binárního vyhledávacího stromu (BVS), který nevyvažujte. Jak bude vypadat takto vytvořený BVS? Poté postupně odstraňte
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í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íceSORT STABILITY
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í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íceRECURSION
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íceDynamické datové struktury IV.
Dynamické datové struktury IV. Prioritní fronta. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra
VíceProgramová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íceDobSort. Ú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í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íceNEJKRATŠÍ 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ˇ 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íceRekurze a zásobník. Jak se vypočítá rekurzivní program? volání metody. vyšší adresy. main(){... fa(); //push ret1... } ret1
Rekurze a zásobník Jak se vypočítá rekurzivní program? volání metody vyšší adresy ret1 main(){... fa(); //push ret1... PC ret2 void fa(){... fb(); //push ret2... return //pop void fb(){... return //pop
VíceAmortizovaná 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íceBinární vyhledávací stromy II
Binární vyhledávací stromy II doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 19. března 2019 Jiří Dvorský (VŠB TUO) Binární vyhledávací
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í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í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í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íceAVL stromy. pro každý uzel u stromu platí, že rozdíl mezi výškou jeho levého a pravého podstromu je nejvýše 1 stromy jsou samovyvažující
Stromy 2 AVL AVL stromy jména tvůrců stromů: dva Rusové Adelson-Velskii, Landis vyvážené binární stromy pro každý uzel u stromu platí, že rozdíl mezi výškou jeho levého a pravého podstromu je nejvýše 1
Vícepř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íceStromy. Jan Hnilica Počítačové modelování 14
Stromy Jan Hnilica Počítačové modelování 14 1 Základní pojmy strom = dynamická datová struktura, složená z vrcholů (uzlů, prvků) propojených hranami hrany chápeme jako orientované, tzn. vedou z uzlu A
Vícebfs, dfs, fronta, zásobník, prioritní fronta, halda
bfs, dfs, fronta, zásobník, prioritní fronta, halda Petr Ryšavý 20. září 2016 Katedra počítačů, FEL, ČVUT prohledávání grafů Proč prohledávání grafů Zkontrolovat, zda je sít spojitá. Hledání nejkratší
Více1 2 3 4 5 6 součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů:
Úloha č.: max. bodů: skut. bodů: 1 2 3 4 5 6 součet cvičení celkem 20 12 20 20 14 14 100 známka UPOZORNĚNÍ : a) Písemná zkouška obsahuje 6 úloh, jejichž řešení musí být vepsáno do připraveného formuláře.
VíceDatový typ prioritní fronta Semestrální práce z předmětu 36PT
Datový typ prioritní fronta Semestrální práce z předmětu 36PT Martin Tůma Cvičení 113, Út 18:00 22. května 2004 Specifikace problému Často potřebujeme přístup k informacím, tak aby tyto byly seřazeny podle
VíceProgramování v C++ 1, 16. cvičení
Programování v C++ 1, 16. cvičení binární vyhledávací strom 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é
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í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íceProtože pi každém volání funkce ff se zavolá funkce abc() práv jednou, je poet volání funkce abc() práv 7. Platí varianta d).
1. void ff(int x) { if (x > 0) ff(x 1) ; abc(x); if (x > 0) ff(x 1) ; Daná funkce ff je volána s parametrem 2: ff(2);. Funkce abc(x) je tedy celkem volána a) 1 krát b) 3 krát c) 5 krát d) 7 krát e) 8 krát
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íceVyhledá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íceTGH07 - Chytré stromové datové struktury
TGH07 - Chytré stromové datové struktury Jan Březina Technical University of Liberec 5. dubna 2017 Prioritní fronta Datová struktura s operacemi: Odeber Minum (AccessMin, DeleteMin) - vrat prvek s minimálním
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íceAlgoritmizace ř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íceSTROMOVE ALGORITMY Prohledavani do sirky (level-order) Po vodorovnejch carach fronta
STROMOVE ALGORITMY Prohledavani do sirky (level-order) Po vodorovnejch carach vlož do fronty kořen opakuj, dokud není fronta prázdná 1. vyber uzel z fronty a zpracuj jej 2. vlož do fronty levého následníka
VíceImplementace LL(1) překladů
Překladače, přednáška č. 6 Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz Poslední aktualizace: 30. října 2007 Postup Programujeme syntaktickou analýzu: 1 Navrhneme vhodnou LL(1) gramatiku
VíceVzdálenost uzlů v neorientovaném grafu
Vzdálenosti a grafy Vzdálenost uzlů v neorientovaném grafu Je dán neorientovaný neohodnocený graf G = (V,E,I) vzdálenost uzlů u a v v neorientovaném souvislém grafu G je délka nejkratší cesty spojující
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íceIB108 Sada 1, Příklad 1 Vypracovali: Tomáš Krajča (255676), Martin Milata (256615)
IB108 Sada 1, Příklad 1 ( ) Složitost třídícího algoritmu 1/-Sort je v O n log O (n.71 ). Necht n = j i (velikost pole, které je vstupním parametrem funkce 1/-Sort). Lehce spočítáme, že velikost pole předávaná
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í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ícebfs, dfs, fronta, zásobník, prioritní fronta, halda
bfs, dfs, fronta, zásobník, prioritní fronta, halda Petr Ryšavý 19. září 2017 Katedra počítačů, FEL, ČVUT prohledávání grafů Proč prohledávání grafů Zkontrolovat, zda je sít spojitá. Hledání nejkratší
VícePrioritní 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íceRadek Mařík
2012-03-20 Radek Mařík 1. Pravá rotace v uzlu U a) v podstromu s kořenem U přemístí pravého syna U.R uzlu U do kořene. Přitom se uzel U stane levým synem uzlu U.R a levý podstrom uzlu U.R se stane pravým
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íceALG 04. Zásobník Fronta Operace Enqueue, Dequeue, Front, Empty... Cyklická implementace fronty. Průchod stromem do šířky
LG 04 Zásobník Fronta Operace nqueue, equeue, Front, mpty... yklická implementace fronty Průchod stromem do šířky Grafy průchod grafem do šířky průchod grafem do hloubky Ořezávání a heuristiky 1 Zásobník
VícePokročilé haldy. prof. Ing. Pavel Tvrdík CSc. Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010
Pokročilé 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í algoritmy (I-EFA) ZS 2010/11,
VíceInformatika navazující magisterské studium Přijímací zkouška z informatiky 2018 varianta A
Informatika navazující magisterské studium Přijímací zkouška z informatiky 2018 varianta A Každá úloha je hodnocena maximálně 25 body. Všechny své odpovědi zdůvodněte! 1. Postavte na stůl do řady vedle
VíceStromy. Příklady. Rekurzivní datové struktury. Základní pojmy
Základní pojmy Stromy doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Graf uzly hrany orientované / neorientované Souvislý
VíceBinární vyhledávací stromy
Binární vyhledávací stromy Definice: Binární vyhledávací strom (po domácku BVS) je buďto prázdná množina nebo kořen obsahující jednu hodnotu a mající dva podstromy (levý a pravý), což jsou opět BVS, ovšem
Více1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) 759 10 b) 2578 10
Úlohy- 2.cvičení 1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) 759 10 b) 2578 10 2. Převeďte dané desetinné číslo do dvojkové soustavy (DEC -> BIN): a) 0,8125 10 b) 0,35 10
VíceDynamicky vázané metody. Pozdní vazba, virtuální metody
Dynamicky vázané metody Pozdní vazba, virtuální metody Motivace... class TBod protected: float x,y; public: int vrat_pocet_bodu() return 1; ; od třídy TBod odvodíme: class TUsecka: public TBod protected:
VíceSlož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íceAlgoritmy 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íceDatové struktury Úvod
Datové struktury Úvod Navrhněte co nejjednodušší datovou strukturu, která podporuje následující operace: 1. Insert a Delete v O(n), Search v O(log n); Datové struktury Úvod Navrhněte co nejjednodušší datovou
VíceV případě jazyka Java bychom abstraktní datový typ Time reprezentující čas mohli definovat pomocí třídy takto:
20. Programovací techniky: Abstraktní datový typ, jeho specifikace a implementace. Datový typ zásobník, fronta, tabulka, strom, seznam. Základní algoritmy řazení a vyhledávání. Složitost algoritmů. Abstraktní
VíceSelect 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í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íceDynamické datové struktury I.
Dynamické datové struktury I. Seznam. Fronta. Zásobník. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz
VíceDSA, První krok: máme dokázat, že pro left = right vrátí volání f(array, elem, left, right)
Indukcí dokažte následující výrok: pokud lef t a right jsou parametry funkce f a platí left right, pak volání f(array, left, right) vrátí minimální hodnotu z hodnot všech prvků v poli array na indexech
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íceNá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í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íceProhledá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íceTest 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í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íceŘešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C
Hanojské věže - 3 kolíky A, B, C - na A je N disků různé velikosti, seřazené od největšího (dole) k nejmenšímu (nahoře) - kolíky B a C jsou prázdné - úkol: přenést všechny disky z A na B, mohou se odkládat
VíceNPRG030 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ícePředmět: Algoritmizace praktické aplikace
Předmět: Algoritmizace praktické aplikace Vytvořil: Roman Vostrý Zadání: Vytvoření funkcí na stromech (reprezentace stromu haldou). Zadané funkce: 1. Počet vrcholů 2. Počet listů 3. Součet 4. Hloubka 5.
VíceCílem kapitoly je seznámit studenta se seznamem a stromem. Jejich konstrukci, užití a základní vlastnosti.
Seznamy a stromy Cílem kapitoly je seznámit studenta se seznamem a stromem. Jejich konstrukci, užití a základní vlastnosti. Klíčové pojmy: Seznam, spojový seznam, lineární seznam, strom, list, uzel. Úvod
VíceIB111 Ú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íceVyhledávací stromy. Slouží jako pomůcka pro organizaci dat umožňující efektivní vyhledávání.
Vyhledávací stromy Slouží jako pomůcka pro organizaci dat umožňující efektivní vyhledávání. Vytvářejí se vždy nad již existující datovou strukturou (zpravidla tabulkou). Vyhledávací stromy můžeme rozdělit
Víceprohled av an ı graf u Karel Hor ak, Petr Ryˇsav y 16. bˇrezna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT
prohledávání grafů Karel Horák, Petr Ryšavý 16. března 2016 Katedra počítačů, FEL, ČVUT Příklad 1 Nad frontou (queue) byly provedeny následující operace: push(1) push(2) print(poll()) print(peek()) print(peek())
VíceAlgoritmy výpočetní geometrie
Algoritmy výpočetní geometrie 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 (BI-EFA)
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 Třídění, vyhledávání Daniela Szturcová
VíceHledá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