1 Test 1 naivní vs standardní

Podobné dokumenty

MI-PAA. úkol č.3. Řešení problému batohu dynamickým programováním, metodou větví a hranic a aproximativním algoritmem

SVD rozklad a pseudoinverse

Časová složitost / Time complexity

10. Předpovídání - aplikace regresní úlohy

Složitost algoritmů. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

Řešení problému batohu dynamickým programováním, metodou větví a hranic a aproximativním algoritmem

Amortizovaná složitost. Prioritní fronty, haldy (binární, d- regulární, binomiální, Fibonacciho), operace nad nimi a jejich složitost

Chyby měření 210DPSM

Vyzařování černého tělesa, termoelektrický jev, závislost odporu na teplotě.

4.2.9 Vlastnosti funkcí sinus a cosinus

Lingebraické kapitolky - Počítání s maticemi

Testování statistických hypotéz

Odhad - Problémy se sdruženým rozdělením pravděpodobnosti

Seznámení se se zvolenou pokročilou iterativní metodou na problému batohu

COMPLEXITY

Porovnání instalací linuxových distribucí Fedora x Debian Administrace počítačových sítí (2010/2011)

2.8.6 Čísla iracionální, čísla reálná

2 Zpracování naměřených dat. 2.1 Gaussův zákon chyb. 2.2 Náhodná veličina a její rozdělení

1.5.1 Číselné soustavy

Algoritmizace. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Posloupnosti a jejich konvergence POSLOUPNOSTI

Metody analýzy modelů. Radek Pelánek

Náhodné (statistické) chyby přímých měření

Diagnostika regrese pomocí grafu 7krát jinak

Algoritmy I, složitost

Experimentální hodnocení kvality algoritmů

Odhad parametrů N(µ, σ 2 )

0.1 Úvod do matematické analýzy

Filmová odparka laboratorní úlohy

Posloupnosti a jejich konvergence

Funkce kotangens

Matematická analýza pro informatiky I. Limita posloupnosti (I)

NPRG030 Programování I 3/2 Z --- NPRG031 Programování II --- 2/2 Z, Zk

13 Měření na sériovém rezonančním obvodu

1. Přednáška. Ing. Miroslav Šulai, MBA

ÚLOHA R1 REGULACE TLAKU V BRÝDOVÉM PROSTORU ODPARKY

Asymptoty funkce. 5,8 5,98 5,998 5,9998 nelze 6,0002 6,002 6,02 6, nelze

Cvičení z matematiky jednoletý volitelný předmět

Náhodné chyby přímých měření

Projekt IMPLEMENTACE ŠVP. pořadí početních operací, dělitelnost, společný dělitel a násobek, základní početní operace

Statistická teorie učení

Matematika (KMI/PMATE)

AVDAT Nelineární regresní model

Báze a dimenze vektorových prostorů

Regrese. 28. listopadu Pokud chceme daty proložit vhodnou regresní křivku, musíme obvykle splnit tři úkoly:

SKLENÍKOVÝ EFEKT. Přečti si text a odpověz na otázky, které jsou za ním uvedeny.

= - rovnost dvou výrazů, za x můžeme dosazovat různá čísla, tím měníme

Řešení problému vážené splnitelnosti booleovské formule pokročilou iterativní metodou

Exponenciální funkce. a>1, pro a>0 a<1 existuje jiný graf, který bude uveden za chvíli. Z tohoto

Digitální učební materiál

3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem

Šum AD24USB a možnosti střídavé modulace

SILOVÉ PŮSOBENÍ MAGNETICKÉHO POLE

Všechno, co jste chtěli vědět z teorie pravděpodobnosti, z teorie informace a

N-trophy. kvalifikace KVÍK! Soòa Dvoøáèková - Kristýna Fousková - Martin Hanžl. Gymnázium, Brno-Øeèkovice.

2.4.7 Omezenost funkcí, maximum a minimum

NÁHODNÁ ČÍSLA. F(x) = 1 pro x 1. Náhodná čísla lze generovat některým z následujících generátorů náhodných čísel:

Testování prvočíselnosti

Občané o Lisabonské smlouvě

Úloha 5: Spektrometrie záření α

Zdůvodněte, proč funkce n lg(n) roste alespoň stejně rychle nebo rychleji než než funkce lg(n!). Symbolem lg značíme logaritmus o základu 2.

ČVUT FEL X36PAA - Problémy a algoritmy. 4. úloha - Experimentální hodnocení algoritmů pro řešení problému batohu

TEST Porozumění kinematickým grafům

Konfigurace DHCP serveru a překladu adres na směrovačích Cisco

Jan Škoda. 29. listopadu 2013

4EK211 Základy ekonometrie

Matematika PRŮŘEZOVÁ TÉMATA

2.8.6 Parametrické systémy funkcí

Lineární datové struktury

Texty k přednáškám z MMAN3: 4. Funkce a zobrazení v euklidovských prostorech

CZ 1.07/1.1.32/

Odhad parametrů N(µ, σ 2 )

[ 5;4 ]. V intervalu 1;5 je funkce rostoucí (její první derivace je v tomto intervalu

Maturitní témata z matematiky

Odhady - Sdružené rozdělení pravděpodobnosti

Digitální učební materiál

4. Stanovení teplotního součinitele odporu kovů

x 0; x = x (s kladným číslem nic nedělá)

EXTRÉMY V TEPLOTNÍCH ŘADÁCH

Tematický plán Obor: Informační technologie. Vyučující: Ing. Joanna Paździorová

Bodové odhady parametrů a výstupů

1. Proveďte energetickou kalibraci gama-spektrometru pomocí alfa-zářiče 241 Am.

Asymptotická složitost algoritmů

Zadání Máme data hdp.wf1, která najdete zde: Bodová předpověď: Intervalová předpověď:

Přednáška 6, 6. listopadu 2013

Pearsonův korelační koeficient

MATURITNÍ TÉMATA Z MATEMATIKY

Bodové a intervalové odhady parametrů v regresním modelu

Moment hybnosti motorové pily a gyroskop. mechanika tuhého tělesa, stav beztíže

z nich byla poprvé dokázána v 19. století velikány analytické teorie čísel (Pafnutij Lvovič Čebyšev, Charles-Jean de la Vallée Poussin a další).

Jak jsem měřil teplotu v termosce pomocí bezdrátového teploměru

Praktikum II Elektřina a magnetismus

7.5.3 Hledání kružnic II

8 Střední hodnota a rozptyl

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

HYDROSTATICKÝ PARADOX

Základní datové struktury

Obsah přednášky Jaká asi bude chyba modelu na nových datech?

Histogram. 11. února Zadání

Transkript:

. DÚ Nafukovací pole Datové Struktury I Studentus Maximus Takto jsou zobrazeny poznámky cvičících k tomu, co a jak je tu napsáno, skutečný text je mimo oranžové rámečky. Počítač, na kterém byly provedeny testy: Procesor Intel(R) Core(TM) i7-5557u CPU @ 3.GHz, RAM 6GB. Operační systém: Debian 8 Překlad: clang++ verze 3.8, optimalizace -O. Konfigurace počítače je důležitá zejména pro měření času. Důležitými parametry jsou: verze procesoru a velikost RAM. Model procesoru můžete na linuxu zjistit příkazem cat /proc/cpuinfo. Tyto parametry uvádíme proto, aby všechny testy byly opakovatelné. Test naivní vs standardní. Standardní implementace Je povoleno kouknout se do zdrojového kódu nebo výstupu generátoru a zjistit, co měříme. První graf (Obrázek ) zobrazuje průměrný počet kroků na jednu operaci pro různé typy testů a standardní implementaci vektoru. V sekvenčním testu jsme postupně vložili n prvků a následně jsme je zase všechny odebrali. Ve zbývajících dvou testech jsme nejprve vložili n (respektive nejbližší nižší mocninu dvojky) prvků a poté jsme udělali n náhodných operací v případě náhodného testu nebo jsme n-krát provedli posloupnost dvou vložení a dvou odebrání prvků v případě extrémního testu. Z přednášky víme, že amortizovaná cena jedné operace je konstantní. Odhadneme asymptotickou složitost operace. Z grafu naměřených hodnot můžeme vidět, že u všech typů a všech provedených měření můžeme průměrný počet kroků na jednu operaci shora odhadnout konstantou, což souhlasí s tvrzením z přednášky. Pozor, že děláme odhady toho, co jsme naměřili. V žádném případě z naměřených dat nedostáváme důkaz, že se datová struktura bude chovat dle našich představ i pro vyšší, než námi naměřené hodnoty. Dokonce ani pro měřené velikosti nedostáváme horní odhad chovaní datové struktury. Takové tvrzení by bylo třeba zdůvodnit (důkazem z přednášky, intuicí... ). Odhadneme multiplikativní konstantu. Z grafu můžeme shora odhadnout multiplikativní konstantu okolo.5 kroku na operaci, která vychází pro sekvenční test. Povšimněme si, že vektor dosahoval mnohem lepších výsledků pro náhodný a extrémní test, kde bylo průměrně na operaci potřeba udělat. kroky. Konstanta nám vychází menší než, protože do kroků nezapočítáváme vložení prvků, ale pouze každé překopírování prvku, při změně velikosti vektoru. Všimneme si, co je v grafech za zvláštnosti a pokusíme se je zdůvodnit. U všech tří křivek si můžeme všimnout, že přibližně na mocninách dvojky dojde k prudkému nárustu počtu kroků, který se potom postupně snižuje k další mocnině dvojky. Nejvíce se toto chování projevuje u sekvenčního testu. Domnívám se, že je to způsobeno tím, že pro tuto velikost dojde k naalokování většího pole a překopírování prvků mezi novým a starým polem. Při vkládání více prvků do již alokované volné paměti není potřeba alokovat více místa a proto se průměrný počet kroků na operaci snižuje. U náhodného a extrémního testu nejsou tyto skoky tak výrazné a domnívám se, že jsou způsobeny úvodní inicializační fází a poté se udělá spousta operací, které nevyvolají realokaci.

. DÚ Nafukovací pole Datové Struktury I Studentus Maximus. Naivní implementace Přidáváme i graf s logaritmickou škálou, protože nárust počtu kroků v extrémním případě způsobí, že nevíme jak vypadají ostatní křivky. Na dalších třech grafech (Obrázek, 3 a ) můžeme pozorovat chování naivní implementace. V prvním grafu můžeme vidět, že na rozdíl od správné implementace průměrný počet kroků na jednu operaci v našem měření roste v extrémním testu lineárně s velikostí držené množiny. Multiplikativní konstanta se pohybuje mezi jednou polovinou a jednou čtvrtinou (viz Obrázek ). Myslím si, že k lineárnímu nárustu dochází díky tomu, že struktura je nucena často přealokovávat celé pole. Domnívám se, že k tomu dochází díky vhodně zvolené velikosti držené množiny (vždy držíme množinu velikosti nejbližší menší mocniny dvojky) a posloupnosti příkazů (střídání operace push a pop). Rozdílné je také chování u náhodného testu, ve kterém se v případě naivní implementace objevují mnohem větší peaky, pokud velikost držené množiny je přibližně mocnina dvojky. Výšku peaků bychom z grafu mohli odhadnout pomocí odmocniny z n s multiplikativní konstantou 3. Tato funkce je znázorněna v grafu (Obrázek ) šedou křivkou. Toto celkem sedí s teorií náhodných procházek na celých číslech. Všimnout si jevu je třeba a je třeba to napsat! Zdůvodnění mimo selského rozumu a znalostí z přednášek třeba není, tedy odhad rychlosti růstu jako odmocnina a zmínka o náhodných procházkách není nutná. Ideální by nejspíš bylo změřit tyto hodnoty i okolo větších mocnin dvojky, ale bylo by velmi časově náročné to udělat pro více než dvě další. Další možností by bylo udělat více testů pro stejnou velikost a udělat průměr (případně zkusit, jestli je správná distribuce hodnot dle teorie náhodných procházek). Návrh dalších experimentů testujících naše hypotézy také není špatný. Dále si můžeme všimnout, že pro velmi malé velikosti množiny standardní implementace v sekvenčním i extrémním testu o trošku roste, ale na druhou stranu v náhodném testu trošku klesá. Myslím, že je to dané jednak tím, že jsme úvodní velikost vektoru zvolili osm, to se projeví zejména v testech, při kterých se velikost vektoru jen zvětšuje a pak jen zmenšuje. Dalším vlivem může být to, že pro malé vektory je větší pravděpodobnost několika operací push a několika operací pop tak, že se velikost vektoru změní (pokud stojíme v nule a podle hodu mincí jdeme o krok vpravo nebo vlevo, pak v krocích častěji dojdeme do než do 8). Znovu zdůvodnění nad rámec znalostí z přednášky a základní pochopení chování datové struktury není nutné. Dále si můžeme všimnout drobného nárůstu naivní implementace viditelného na Obrázku. Nevím, čím je toto způsobené. Není třeba zdůvodnit naprosto všechno, jen to, co se přímo týká teorie nebo je jednoduše vymyslitelné..3 Shrnutí V sekvečních testech vykazovaly obě struktury podobné vlastnosti, ale v ostatních testech se chovala standardní struktura lépe. Nejvýraznější byl rozdíl v extrémním testu, ve kterém standardní implementace dosahovala konstantní složitosti okolo.6, zatímco naivní implementace roste lineárně v závislosti na velikosti držené množiny. V náhodném testu dosahovaly obě struktury shodných výsledků, vyjma případů, kdy velikost držené mocniny byla okolo mocniny. V těchto případech si správná struktura udržovala konstantní průměr počtu kroků na jednu operaci, zatímco v případě naivní struktury průměr rostl s odmocninou velikosti množiny.

. DÚ Nafukovací pole Datové Struktury I Studentus Maximus Test push s různými c Z grafů znovu pozorujeme kolísání na mocninách nafukovacího parametru c (předtím bylo pozorováno na mocninách c = ) a pak pozvolné klesání. Vysvětlení je obdobné, na mocnině c znovu alokujeme a pak přidáváme další prvky do prázdného místa, ale nic za ně nealokujeme, pouze jejich počtem dělíme. Dále si můžeme všimnout, že zdola jsou křivky odhadnuté zhruba c a shora + c, což odpovídá právě alokaci na mocninách c a větě z přednášky. Všimneme si také, že pro c =., pro které by mělo platit předchozí pozorujeme drobný nárůst. Ze začátku grafu je nárůst výrazný, pak se zmenšuje. Z grafů nedokážu poznat, jestli se konverguje k nějaké hodnotě nebo ne. Na přednášce jsme dokázali, že křivka konverguje ke konstantě. Na grafech je hezky vidět, že čísla, která jsou svými mocninami mají některé skoky společné (například,,8 nebo 3,9). To odpovídá tomu, že mocnina 8 je také mocninou. Pozorování byla provedena na základě Obrázku 7 a Obrázku 8. Logaritmické měřítko uvádíme jen pro ukázku. 3 Grafy 3. Grafy Test Standardní implementace.6...8.6.. sekvenční náhodný extrémní 6 8 6 Obrázek : Správná implementace. 3

. DÚ Nafukovací pole Datové Struktury I Studentus Maximus Naivní implementace 35 3 5 5 5 sekvenční náhodný extrémní 6 8 6 Obrázek : Naivní vs správná implementace. Naivní implementace -- logaritmická škála na ose y (logaritmická škála) 96 56 6 6.5 sekvenční, naivní náhodný, naivní extremní, naivní.65 6 8 6 Obrázek 3: Naivní vs správná implementace s logaritmickou škálou.

. DÚ Nafukovací pole Datové Struktury I Studentus Maximus Naivní implementace -- odhady -- logaritmická škála na ose y (logaritmická škála) 638 96 56 6 6.5 extremní, naivní.5*n.5*n náhodný, naivní.3*sqrt(n).65 6 8 6 Obrázek : Naivní vs správná implementace s logaritmickou škálou. Standardní a naivní implementace 35 3 5 5 5 sekvenční, standardní náhodný, standardní extrémní, standardní sekvenční, naivní náhodný, naivní extrémní, naivní 6 8 6 Obrázek 5: Naivní vs správná implementace. 5

. DÚ Nafukovací pole Datové Struktury I Studentus Maximus Standardní a naivní implementace -- logaritmická škála na ose y (logaritmická škála) 96 56 6 6.5.65 sekvenční, standardní náhodný, standardní extremní, standardní sekvenční, naivní náhodný, naivní extremní, naivní.565 6 8 6 Obrázek 6: Naivní vs správná implementace. 3. Grafy Standardní implementace, různé multiplikativní konstanty pro změnu velikosti 6 5 3 c =. c = c = 6 8 6 Obrázek 7: Různé zvětšování alokovaného prostoru. 6

. DÚ Nafukovací pole Datové Struktury I Studentus Maximus Standardní implementace, různé multiplikativní konstanty pro změnu velikosti 3.5 3.5.5.5 c = c = 6 8 6 Obrázek 8: Různé zvětšování alokovaného prostoru. Standardní implementace, různé multiplikativní konstanty pro změnu velikosti -- logaritmická škála na ose y 8.5 c =. c = c =.5 6 8 6 Obrázek 9: Různé zvětšování alokovaného prostoru. 7

. DÚ Nafukovací pole Datové Struktury I Studentus Maximus Standardní implementace, různé multiplikativní konstanty pro změnu velikosti -- logaritmická škála na ose x 6 5 3 c =. c = c = 6 3 6 8 56 5 8 96 89 638 Obrázek : Různé zvětšování alokovaného prostoru. Standardní implementace, různé multiplikativní konstanty pro změnu velikosti -- logaritmická škála na ose x i y 8.5 c =. c = c =.5 6 3 6 8 56 5 8 96 89 638 Obrázek : Různé zvětšování alokovaného prostoru. 8