1 2 3 4 5 6 součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů:



Podobné dokumenty
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Abstraktní datové typy: zásobník

Implementace abstraktních datových typů. Zásobník (Stack) Fronta (Queue) Obousměrná fronta (Dequeue) Vektor (Vector) Seznam (List)

5 Rekurze a zásobník. Rekurzivní volání metody

Datové struktury. alg12 1

Algoritmizace prostorových úloh

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

ADT/ADS = abstraktní datové typy / struktury

Konstruktory a destruktory

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

Úvod do programovacích jazyků (Java)

Dynamické datové struktury I.

Iterator & for cyklus

Kolekce, cyklus foreach

Algoritmizace prostorových úloh

Zadání k 2. programovacímu testu

ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)

Rekurze a zásobník. Jak se vypočítá rekurzivní program? volání metody. vyšší adresy. main(){... fa(); //push ret1... } ret1

Datové struktury. Obsah přednášky: Definice pojmů. Abstraktní datové typy a jejich implementace. Algoritmizace (Y36ALG), Šumperk - 12.

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

ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)

Abstraktní datové typy

Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4

Principy objektově orientovaného programování

1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) b)

Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy

Algoritmizace a programování

Základní datové struktury

Paměť počítače. alg2 1

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

ABSTRAKTNÍ DATOVÉ TYPY (ADT)

Stromy. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.

Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz

Rozklad problému na podproblémy

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.

Výčtový typ strana 67

Standardní algoritmy vyhledávací.

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Generické programování

Algoritmy a datové struktury

Metodický koncept k efektivní podpoře klíčových odborných kompetencí s využitím cizího jazyka ATCZ62 - CLIL jako výuková strategie na vysoké škole

Programování v C++, 2. cvičení

1. Téma 12 - Textové soubory a výjimky

Třetí skupina zadání projektů do předmětu Algoritmy II, letní semestr 2017/2018

X36UNX 16. Numerické výpočty v sh příkazy expr, bc, dc. Zdeněk Sojka

Základy algoritmizace. Pattern matching

boolean hasnext() Object next() void remove() Kolekce

Datové struktury obsah přednášky 1. Úvod 2. Třídy Type-wrapper (obalový typ) pro primitivní typy automatické převody 3. Automatické převody mezi

2 Datové struktury. Pole Seznam Zásobník Fronty FIFO Haldy a prioritní fronty Stromy Hash tabulky Slovníky

Lineární datové struktury

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

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

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Spojové struktury. Spojová struktura (linked structure):

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

Soubor jako posloupnost bytů

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Úvod do programování - Java. Cvičení č.4

DSA, První krok: máme dokázat, že pro left = right vrátí volání f(array, elem, left, right)

Da D to t v o é v ty t py IB111: Datové typy

KTE / ZPE Informační technologie

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

Algoritmy II. Otázky k průběžnému testu znalostí

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Programování v C++ 2, 4. cvičení

Textové soubory. alg9 1

1 Nejkratší cesta grafem

Prioritní fronta, halda

Dynamické datové struktury III.

Tematický celek 03 - Cvičné příklady

7. Datové typy v Javě

int t1, t2, t3, t4, t5, t6, t7, prumer; t1=sys.readint();... t7=sys.readint(); prume pru r = r = ( 1+t 1+t t3+ t3+ t4 t5+ t5+ +t7 +t7 )/ ;

Více o konstruktorech a destruktorech

Bakalářská práce Výukový program pro předmět KIV/PT Programovací techniky

ALG 04. Zásobník Fronta Operace Enqueue, Dequeue, Front, Empty... Cyklická implementace fronty. Průchod stromem do šířky

11 VYPOČITATELNOST A VÝPOČTOVÁ SLOŽITOST

Java a XML. 10/26/09 1/7 Java a XML

Základy programování (IZP)

Programování v C++ 1, 5. cvičení

Správa paměti. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Základy algoritmizace. Hašování

Programování v Javě I. Leden 2008

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

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Semestrální práce 2 znakový strom

AVL 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í

Řídicí struktury. alg3 1

a) b) c) Radek Mařík

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

Programování v Javě I. Únor 2009

Maturitní téma: Programovací jazyk JAVA

Poslední nenulová číslice faktoriálu

Dynamicky vázané metody. Pozdní vazba, virtuální metody

Vyhledávání řetězců. a b a c a a b. a b a c a b. a b a c a b

prohled av an ı graf u Karel Hor ak, Petr Ryˇsav y 16. bˇrezna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT

Časová složitost algoritmů

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

Šablony, kontejnery a iterátory

Programování v C++ 1, 16. cvičení

Transkript:

Ú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. Pokud někomu nebude vymezený prostor dostačovat, lze využít též druhé (čisté) strany formulářů s tím, že bude zřetelně vyznačeno, ke které úloze řešení přísluší. b) Do obrázku napravo doplňte jména sousedů sedících okolo Vás v naznačených směrech: 1. Implementace datových typů [ 20 bodů ]] Mějme v jazyce Java definovanou třídu Node, která implementuje obecný prvek jednosměrně zřetězeného seznamu. public class Node { private Node next; private Object element; // ukazatel na nasledujici prvel // ukazatel na datovy objekt public Node() { next=null; element=null; // vytvori prazdny prvek public Node(Object elm) { next=null; element=elm; public void set_next(node snext) { next=snext; // nastavi ukazatel next na snext public void set_elm(object elm) { element=elm; // nastavi element na elm public Node get_next() { return next; // vraci ukazatel next; public Object get_elm() {return element; // vraci ukazatel na dat. objekt Dále mějme definovanou třídu Stack implementující zásobník jako seznam jednosměrně zřetězených prvků typu integer. Do níže uvedené kostry třídy Stack doplňte: 1. konstruktor Stack, který vytvoří prázdný zásobník [ 5 bodů ] 2. metodu push, která vloží prvek na zásobník [ 5 bodů ] 3. metodu pop, která vybere prvek ze zásobníku a vrátí odkaz na tento prvek [ 5 bodů ] Co se vypíše na obrazovku po spuštění metody main?... [ 5 bodů ] 1

public class StackL { private Node top; // ukazatel na vrchol zasobniku private int sz; // pocet objektu v zasobniku // konstruktor tridy - vytvori prazdny zasobnik //!!!!!!!!!!!!! DOPLNIT!!!!!!!!!!!!!!!!!!!!! public StackL() { // Metoda vlozi prvek na zasobnik //!!!!!!!!!!!!! DOPLNIT!!!!!!!!!!!!!!!!!!!!! public void push(object o){ //Metoda vybere prvek ze zasobniku a vrati ukazatel na tento prvek // je-li zasobnik prazdny vyvola vyjimku StackEmptyException //!!!!!!!!!!!!! DOPLNIT!!!!!!!!!!!!!!!!!!!!! public Node pop()throws StackEmptyException { //Metoda testuje zda je zásobník prázdný a pokud ano vrací true // opačném případě vrací false public boolean isempty() { return(top==null); public int size(){ return(sz); // vraci pocet objektu v zasobniku //Metoda vraci hodnotu prvku z vrcholu zasobniku, prvek zustava na zasobniku public Object top() throws StackEmptyException {... public class StackEmptyException extends RuntimeException { public StackEmptyException(String err) { super(err); public static void main(string[] args) { StackL st=new StackL(); int [] a={10, 12, 15, 21, 33; for (int i=0; i<a.length; i++) st.push(new Integer(a[i])); int n=st.size(); System.out.print(n+" "); while (!st.isempty()) System.out.print(st.pop().getElm().toString()+" "); 2

2. Řídicí struktury programovacích jazyků [ 12 bodů ] Na protilehlou volnou zadní stranu předchozího listu zapište v programovacím jazyce Java funkční metodu (public static) Fakt(n), která a) bez rekurze (iteračně) [ 5 bodů ] b) rekurzivně [ 5 bodů ] vyčíslí faktoriál čísla n 0, 20. c) Do níže uvedené tabulky slovně i O-notací vyjádřete, jaká je algoritmická i paměťová složitost výše uvedeného výpočtu faktoriálu: [ 2 body ] ad a) algoritmická - slovně algoritmická - O-notací paměťová - slovně paměťová - O- notací ad b) 3. Vyhledávání dat A) Určete, kolik operací porovnávání znaků musí provést [ 20 bodů ] a) jednoduchý algoritmus přímého vyhledávání (brute-force) [ 2 body ] b) Boyer - Mooreův algoritmus [ 5 bodů ] c) Knuth - Moris - Prattův algoritmus [ 5 bodů ] pro nalezení slova MALEBNOU ve znakovém řetězci (prohledávaném textu): MALIR_MALOVAL_MALEBNOU_KRAJINU i)... porovnání ii)... porovnání iii)... porovnání B) Do předtištěného pole doplňte pro uvedené znaky hodnotu funkce Last(x) použité u Boayer - Moorova algoritmu [ 4 body ] x _ A B E I J K L M N O R U V Last(x) C) Do předtištěného pole doplňte hodnoty chybové funkce F(k) KMP algoritmu pro hledané slovo MALEBNOU [ 4 body ] k 0 1 2 3 4 5 6 7 F(k) 4. Stromové struktury Mějte dánu následující posloupnost datových položek identifikovatelných celočíselnými klíči: [ 20 bodů ] 92, 16, 56, 74, 12, 49, 89, 68, 82, 58, 33, 99, 62, 80, 25, 39, 21 Posloupnost položek reprezentujte zadanými typy stromů (pro jednoduchost znázornění reprezentujte položky jen uvedenými hodnotami klíčů, tam, kde je to nutné, dodržte výše zadané pořadí položek). Po vytvoření stromu odeberte v uvedeném pořadí prvky s klíči 92, 74, 12. (Při rušení prvku ve vnitřním uzlu BVS a AVL stromu nahrazujte rušený prvek jeho symetrickým předchůdcem). 3

a) Reprezentace BVS stromem: ( 5 bodů ) b) Reprezentace AVL stromem (prvky vkládejte postupně a pokud je to nutné provádějte vyvážení stromu po každé operaci vložení): ( 5 bodů ) 4

c) Reprezentace B stromem řádu m=3 ( uzel obsahuje 3 ukazatele) ( 5 bodů ) d) Reprezentace B stromem řádu m=5 (uzel obsahuje 5 ukazatelů): ( 5 bodů ) 5

5. Tabulky s rozptýlenými položkami [ 14 bodů ] a) Do níže vyobrazené struktury, která implementuje hash-tabulku s vnějším zřetězením s ukládáním synonymických položek do seznamů zřetězených prvků (metoda "scattered index"), zařaďte (zakreslete naznačeným způsobem) položky s níže uvedenými celočíselnými klíči v pořadí: ( 6 bodů ) 134 196 275 313 415 422 460 563 630 738 783 857 Jako rozptylovou funkci pro prvotní přístup do jednotlivých seznamů použijte zbytek po celočíselném dělení hodnoty klíče příslušným základem. b) vyčíslete střední algoritmickou složitost vyhledávání položek (v počtu operací porovnání klíčů potřebných pro vyhledání položky) v takto vytvořené implemetaci tabulky: střední počet operací porovnání klíčů:..................... ( 3 body ) c) Lze v tabulkách s rozptýlenými položkami vyhledávat položky metodou binárního vyhledávání? Vhodnou odpověď zakroužkujte, nehodící se zřetelně škrtněte! ( 2 body ) Svoji odpověď patřičně zdůvodněte: ano ne 6

6. Komprese dat a) Pro znakový řetězec HRADEC _ KRALOVE [ 14 bodů ] kde znak _ značí mezeru, vytvořte Huffmanův kódovací strom; aby Vámi vytvořený strom byl jednoznačný, důsledně dodržujte řazení znaků vkládaných do stromu podle četností jejich výskytu v řetězci a uvnitř tříd znaků se stejnou četností pak dodržujte abecední řazení znaků s tím, že _ (mezeru) řaďte na začátek abecedy, jak je dáno kódovou tabulkou ASCII kódu: ( 10 bodů ) b) Vámi vytvořeným Huffmanovým kódovacím stromem zakódujte slovo DRAHA : ( 2 body ) Zakódovaná posloupnost:................................. c) Tímtéž stromem dekódujte komprimovaný řetězec (bankovní operace) ( 2 body ) 1011100010011100110 Originální posloupnost:.................................. 7