Rzné algoritmy mají rznou složitost

Podobné dokumenty
Složitost algoritmů. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.

Algoritmizace složitost rekurzivních algoritmů. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Dynamické programování. Optimální binární vyhledávací strom

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

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.

COMPLEXITY

Mimo samotné správnosti výsledku vypočteného zapsaným algoritmem je ještě jedno

Vyvažování a rotace v BVS, všude se předpokládá AVL strom

Doba běhu daného algoritmu/programu. 1. Který fragment programu z následujících dvou proběhne rychleji?

TGH05 - Problém za milion dolarů.

Každý datový objekt Pythonu má minimáln ti vlastnosti. Identitu, datový typ a hodnotu.

Algoritmická matematika 3 Mgr. Petr Osička, Ph.D. ZS Rozděl a panuj

Různé algoritmy mají různou složitost

Cykly Intermezzo. FOR cyklus

Časová složitost / Time complexity

Stromy, haldy, prioritní fronty

Základní datové struktury III: Stromy, haldy

Algoritmy I, složitost

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

IB108 Sada 1, Příklad 1 Vypracovali: Tomáš Krajča (255676), Martin Milata (256615)

Dynamické datové struktury III.

Časová a prostorová složitost algoritmů

R O V N O B Ž N Í K (2 HODINY)

R zné algoritmy mají r znou složitost

KMI/ALM3 Mgr. Petr Osička, Ph.D. ZS ANO je slovo 1 a kódováním NE je slovo 0, pak je problém popsán pomocí dvojice L, R takové, že:

Příklad 1/23. Pro rostoucí spojité fukce f(x), g(x) platí f(x) Ω(g(x)). Z toho plyne, že: a) f(x) Ο(g(x)) b) f(x) Θ(g(x)) d) g(x) Ω(f(x))

Anotace. Informace o praktiku z programování!!! Direktivy překladače Soubory (textové) Quicksort Metoda rozděl a panuj

OCR (optical character recognition) - rozpoznávání textu v obraze

V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2

Protož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).

MIDTERM D. Příjmení a jméno:

ˇ 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

Ukážeme si lineární algoritmus, který pro pevné k rozhodne, zda vstupní. stromový rozklad. Poznamenejme, že je-li k součástí vstupu, pak rozhodnout

Zpracoval: 7. Matematická indukce a rekurse. Řešení rekurentních (diferenčních) rovnic s konstantními koeficienty.

Dynamic programming. Optimal binary search tree

NPRG030 Programování I, 2018/19 1 / :25:37

10. Složitost a výkon

IB111 Úvod do programování skrze Python

Na začátku rozdělíme práci a určíme, které podproblémy je potřeba vyřešit. Tyto

1 Sémantika a její vztah k syntaxi

STACK

Rekurentní rovnice, strukturální indukce

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

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

Číselné posloupnosti

Splajny a metoda nejmenších tverc

( ) ( ) 2 2 B A B A ( ) ( ) ( ) B A B A B A

Algoritmus Minimax. Tomáš Kühr. Projektový seminář 1

Promnné. [citováno z

1. Signatura datového typu

Příklady z Kombinatoriky a grafů I - LS 2015/2016

Pravdpodobnost výskytu náhodné veliiny na njakém intervalu urujeme na základ tchto vztah: f(x)

DRUHY ROVNOBŽNÍK A JEJICH VLASTNOSTI 1 HODINA

Rekurze. Pavel Töpfer, 2017 Programování 1-8 1

Algoritmy a datové struktury

Programovací jazyky, syntaxe, sémantika, zpsoby popisu

Rekurentní rovnice, strukturální indukce

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE REALIZACE PŘEKLADAČE I

Dynamické programování

přirozený algoritmus seřadí prvky 1,3,2,8,9,7 a prvky 4,5,6 nechává Metody řazení se dělí:

Jednoznačné a nejednoznačné gramatiky

LABORATORNÍ CVIENÍ Stední prmyslová škola elektrotechnická

Je n O(n 2 )? Je n 2 O(n)? Je 3n 5 +2n Θ(n 5 )? Je n 1000 O(2 n )? Je 2 n O(n 2000 )? Cvičení s kartami aneb jak rychle roste exponenciála.

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

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr

VYŠŠÍ ODBORNÁ ŠKOLA a STŘEDNÍ PRŮMYSLOVÁ ŠKOLA Mariánská 1100, Varnsdorf PROGRAMOVÁNÍ FUNKCE, REKURZE, CYKLY

Tabulkový procesor Excel

Prioritní fronta, halda

RECURSION

27. asové, kmitotové a kódové dlení (TDM, FDM, CDM). Funkce a poslání úzkopásmových a širokopásmových sítí.

Konzistentnost. Pro a proti replikaci. Vztah ke škálovatelnosti (1)

IB002 Algoritmy a datové struktury I

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

edokumentace: Simulátor investiního rozhodování

1. Predikátová logika jako prostedek reprezentace znalostí

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

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

Dynamické programování

1 Píklady popisu typických konstrukcí

1. Exponenciální rst Spojitý pípad. Rstový zákon je vyjáden diferenciální rovnicí

Rekurzivní algoritmy

Složitosti základních operací B + stromu

DMA Přednáška Rekurentní rovnice. takovou, že po dosazení odpovídajících členů do dané rovnice dostáváme pro všechna n n 0 + m pravdivý výrok.

Obecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012

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

Informatika navazující magisterské studium Přijímací zkouška z informatiky 2018 varianta A

Binární vyhledávací stromy pokročilé partie

NÁVRH ALGORITMŮ. poznámky pro Algoritmickou matematiku 3. Petr Osička

Digitální učební materiál

Rozvrhování na více procesorech

Anotace. pointery (pars prima). Martin Pergel,

Vztah teorie vyčíslitelnosti a teorie složitosti. IB102 Automaty, gramatiky a složitost, /31

Návrh Designu: Radek Mařík

Náplň. v Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění

Lineární algebra Petriho sítí

FIT ČVUT MI-LOM Lineární optimalizace a metody. Dualita. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

KMI/ALM3 Mgr. Petr Osička, Ph.D. Update: 15. listopadu 2016

VYTVÁENÍ VÝBROVÝCH DOTAZ

Definice : Jsou li povrchové pímky kolmé k rovin, vzniká kolmá kruhová válcová plocha a pomocí roviny také kolmý kruhový válec.

Dlitel, násobek Znak dlitelnosti Prvoíslo, íslo složené, rozklad na prvoinitele Nejvtší spolený dlitel, nejmenší spolený násobek

Transkript:

X36DSA 25 / 3 DSA Rzné algoritmy mají rznou složitost

X36DSA 25 2 / 3 DSA The complexity of different algorithms varies

X36DSA 25 3 / 3 Abeceda Jazyk Abeceda konená (neprázdná) množina symbol A mohutnost abecedy A Píklady: A = { A, D, G, O, U }, A = 5 A = {,}, A = 2 A = {,, }, A = 3 Slovo Slovo (nad abecedou A) konená (píp. prázdná) také etzec posloupnost symbol abecedy (A) w délka slova w Píklady: w = OUAGADOUGOU, w = w =, w = 4 w =, w = 5

X36DSA 25 4 / 3 Jazyk Jazyk Jazyk množina slov (=etzc) (ne nutn konená, mže být prázdná) L mohutnost jazyka L Specifikace jazyka -- Výtem všech slov jazyka (jen pro konený jazyk) Píklady: A = { A, D, G, O, U } L = {ADA, DOG, GOUDA, D, GAG}, L = 5 A 2 = {,} L 2 = {,,,,, }, L 2 = 6 A 3 = {,, } L 3 = {,, }, L 2 = 3

X36DSA 25 5 / 3 Jazyk 2 Specifikace jazyka -- Volný (ale jednoznaný) popis v pirozeném jazyce (obvykle pro nekonený jazyk) Píklady: A = { A, D, G, O, U } L : Množina všech slov nad A, která zaínají na DA, koní na G a neobsahují podposloupnost AA. L = {DAG, DADG, DAGG, DAOG, DAUG, DADAG, DADDG } L = A 2 = {,} L 2 : Množina všech slov nad A 2, která obsahují více než a za každou jsou alespo dv. L 2 = {,,,,,,,,, } L 2 =

X36DSA 25 6 / 3 Konený automat 3 Specifikace jazyka -- koneným automatem Konený automat (finite automaton) je ptice (A, Q,, S, Q F ), kde: A Q S Q F abeceda konená množina symbol A... mohutnost abecedy... množina stav (mnohdy oíslovaných) (co je to stav?)... pechodová funkce... : Q A Q... poátení stav S Q neprázdná množina koncových stav Q F Q

X36DSA 25 7 / 3 Konený automat Automat FA: A Q S Q F abeceda {,}, A = 2... množina stav {S, A, B, C, D }... pechodová funkce... : Q A Q : { (S,) = S, (A,) = B, (B,) = C, (C,) = C, (D,) = D, (S,) = A, (A,) = D, (B,) = D, (C,) = A, (D,) = D }... poátení stav S Q neprázdná množina koncových stav { C } Q Pechodový diagram automatu FA S A B C FA D,

X36DSA 25 8 / 3 Konený automat FA S A B C D, FA S A B C D,

X36DSA 25 9 / 3 Konený automat FA S A B C D, FA S A B C D,

X36DSA 25 / 3 Konený automat FA S A B C D, FA S A B C D,

X36DSA 25 / 3 Konený automat FA S A B C D, Po petení posledního symbolu je automat FA v koncovém stavu Slovo je pijímáno automatem FA

X36DSA 25 2 / 3 Konený automat FA S A B C D, FA S A B C D,

X36DSA 25 3 / 3 Konený automat FA S A B C D, FA S A B C D,

X36DSA 25 4 / 3 Konený automat FA S A B C D, FA S A B C FA D,

X36DSA 25 5 / 3 Konený automat FA S A B C D, Po petení posledního symbolu je automat FA ve stavu, který není koncový Slovo není pijímáno automatem FA

X36DSA 25 6 / 3 Konený automat FA... S A B C D, FA... S A B C D,

X36DSA 25 7 / 3 Konený automat FA... S A B C D, FA... S A B C D,

X36DSA 25 8 / 3 Konený automat FA... S A B C D, Žádné slovo zaínající Žádné slovo obsahující Žádné slovo obsahující............... není pijímáno automatem FA není pijímáno automatem FA není pijímáno automatem FA Automat FA pijímá pouze slova -- obsahující alespo jednu jedniku -- obsahující za každou jednikou alespo dv nuly Jazyk píjímaný automatem = množina všech slov pijímaných automatem

X36DSA 25 9 / 3 Konený automat innost automatu: Na zaátku je automat ve startovním stavu. Pak te zadané slovo znak po znaku a pechází do dalších stav podle pechodové funkce. Když dote slovo, nachází se opt v nkterém ze svých stav. Pokud je v koncovém stavu, ekneme, že dané slovo pijímá, pokud není v koncovém stavu, ekneme, že dané slovo nepijímá. Všechna slova pijímaná automatem tvoí dohromady jazyk pijímaný (rozpoznávaný) automatem

X36DSA 25 2 / 3 Konený automat Jazyk nad abecedou {,} : Pokud slovo zaíná, koní, pokud slovo zaíná, koní. S A C B D Automat FA2 Ukázka analýzy slov automatem FA2: : (S), (A), (B), (A), (B), (A) (A) není koncový stav, slovo automat FA2 nepijímá. : (S),(C),(D),(C), (C), (D) (D) je koncový stav, slovo automat FA2 pijímá.

X36DSA 25 2 / 3 Konený automat Jazyk: {,,,,,... } S A B D,, C Automat FA3 Ukázka analýzy slov automatem FA3 : (S), (A), (B), (C), (D), (D) (D) není koncový stav, slovo automat FA3 nepijímá. : (S), (A), (B),(B), (B), (C) (C) je koncový stav, slovo automat FA3 pijímá.

X36DSA 25 22 / 3 Konený automat, S A B C Automat FA4 Automat FA4 píjme každé slovo nad abecedou {,} obsahující podposloupnost...... Ukázka analýzy slov automatem FA4 : (S), (A),(A),(B),(C),(C) (C) je koncový stav, slovo automat FA4 pijímá. : (S), (A), (B),(S), (S), (A) (A) není koncový stav, slovo automat FA4 nepijímá.

X36DSA 25 Konený automat 23 / 3 Jazyk nad abecedou { +, -,.,,,, 8, 9, } jehož slova pedstavují zápis desetinného ísla v desítkové soustav,,...,9,,...,9 +,-,,...,9.,,...,9 2 3 4,,...,9 jinak jinak jinak jinak jinak 5 jakýkoli symbol Automat FA5 Ukázka analýzy slov +87.9: (),+ (),8 (2),7 (2),. (3), (4),9 (4) (4) je koncový stav, slovo +87.5 automat pijímá. 76+2: (),7 (2),6 (2),+ (5),2 (5) (5) není koncový stav, slovo 76+2 automat nepijímá.

X36DSA 25 24 / 3 Implementace koneného automatu +,-. 2 jinak,,...,9,,...,9,,...,9,,...,9 jinak jinak jinak 5 3 jakýkoli symbol jinak 4,,...,9 FA5 Kód koneného automatu (tená posloupnost znak je uložena v poli arr[ ]): int isdecimal(int arr[], int length) { int i; int state = ; for(i = ; i < length; i++) { // check each symbol switch (state) {...

X36DSA 25 25 / 3 Implementace koneného automatu +,-. 2 jinak,,...,9,,...,9,,...,9,,...,9 jinak jinak jinak 5 3 jakýkoli symbol jinak 4,,...,9 FA5 case : if ((arr[i] == '+') (arr[i] == '-')) state = ; else if ((arr[i] >= '') && (arr[i] <= '9')) state = 2; else state = 5; break;

X36DSA 25 26 / 3 Implementace koneného automatu +,-. 2 jinak,,...,9,,...,9,,...,9,,...,9 jinak jinak jinak 5 3 jakýkoli symbol jinak 4,,...,9 FA5 case : if ((arr[i] >= '') && (arr[i] <= '9')) state = 2; else state = 5; break;

X36DSA 25 27 / 3 Implementace koneného automatu +,-. 2 jinak,,...,9,,...,9,,...,9,,...,9 jinak jinak jinak 5 3 jakýkoli symbol jinak 4,,...,9 FA5 case 2: if ((arr[i] >= '') && (arr[i] <= '9')) state = 2; else if (arr[i] == '.') state = 3; else state = 5; break;

X36DSA 25 28 / 3 Implementace koneného automatu,,...,9,,...,9,,...,9,,...,9 +,-. 2 jinak jinak jinak jinak 5 3 jakýkoli symbol jinak 4,,...,9 FA5 3 case 3: if ((arr[i] >= '') && (arr[i] <= '9')) state = 4; else state = 5; break; 4 case 4: if ((arr[i] >= '') && (arr[i] <= '9')) state = 4; else state = 5; break; 5 case 5: break; // no need to react anyhow default : break; } // end of switch

X36DSA 25 29 / 3 Implementace koneného automatu +,-. 2 jinak,,...,9,,...,9,,...,9,,...,9 jinak jinak jinak 5 3 jakýkoli symbol jinak 4,,...,9 FA5 } // end of for loop -- word has been read 2 4 if ((state == 2) (state == 4)) // final states!! return ; // success - decimal OK else return ; // not a decimal } // end of function isdecimal()

X36DSA 25 3 / 3 Složitost rekurzivních algoritm Metoda stromu rekurze substituní mistrovská

X36DSA 25 3 / 3 Složitost rekurzivních algoritm T(n) -- asymptotická složitost algoritmu pi vstupu o velikosti n P.: Merge sort Asymptotická složitost vyešení triviální úlohy T(n) = Θ() pro n = 2T(n/2) + Θ(n) pro n > Jak asymptotická složitost pi vstupu o velikosti n závisí na asymptotické složitosti pi vstupu o velikosti n/2 Složitost rozdlení problému a spojení dílích ešení (polovin pole v Merge sortu)

X36DSA 25 32 / 3 Složitost rekurzivních algoritm Co lze zanedbat! typickou hodnotu n si vhodn zvolíme (v Merge sortu mocninu 2)! konkrétní konstanta neovlivní výslednou asymptotickou složitost T(n) = Θ() pro n = 2T(n/2) + Θ(n) pro n >! n/2 a obecn n/konst není celé íslo, mysleme si však, že (vícemén) je, a použijme jej místo správného n/2i n/2 apod.

X36DSA 25 33 / 3 Pro algoritmus A platí Složitost rekurzivních algoritm Píklad T(n) = Θ() pro n = 3T(n/4) + Θ(n 2 ) pro n > Rozdlí data na tvrtiny. Vyešení tvrtinové úlohy trvá T(n/4). Jedna tvrtina se nezpracovává 3 se zpracují v ase 3T(n/4). as potebný na rozdlení na tvrtiny a na spojení tvrtinových úloh je Θ(n 2 ).

X36DSA 25 34 / 3 Složitost rekurzivních algoritm Píklad T(n) = Θ() pro n = 3T(n/4) + Θ(n 2 ) pro n > Vztah pro výpoet T(n) = 3T(n/4) + c n 2

X36DSA 25 35 / 3 Strom rekurze T(n) = 3T(n/4) + c n 2 c n 2 as na dlení problému na dílí problémy a pak spojení dílích ešení T (n/4) T (n/4) T (n/4) as na vyešení jednoho dílího problému Strom rekurze je ale vtší...

X36DSA 25 36 / 3 Strom rekurze T(n) = 3T(n/4) + c n 2 c n 2 Strom rekurze c (n/4) 2 c (n/4) 2 c (n/4) 2 n 6 2 c ( ) n 6 2 c ( ) n 6 2 c ( ) n 6 2 c ( ) n 6 2 c ( 2 ) c ( ) n 6 2 c ( ) n 6 2 c ( ) T() T() T() T() T() T() T()

X36DSA 25 37 / 3 Strom rekurze Prbh výpotu. Nakresli strom rekurze 2. Spoti jeho hloubku 3. Spoti jeho šíku v pate k 4. Spoti cenu uzlu v pate k 5. Seti ceny uzl v pate k 6. Seti ceny všech pater k cena uzlu = asymptotická složitost zpracování podproblému odpovídajícího uzlu ve stromu rekurze. cena stromu = asymptotická složitost zpracování celé úlohy.

X36DSA 25 38 / 3 Strom rekurze Prbh výpotu T(n) = 3T(n/4) + c n 2. Nakresli strom rekurze 2. Spoti jeho hloubku... k V hloubce k je velikost podproblému = n/4 k. Velikost podproblému je tedy =, když n/4 k =, tj k = log 4 (n). Takže strom má log(4) + pater.

X36DSA 25 39 / 3 Strom rekurze T(n) = 3T(n/4) + c n 2 Prbh výpotu... 3. Spoti jeho šíku v pate k... k. patro uzel. patro 3 uzly 2. patro 3 3 = 9 uzl 3. patro 3 3 3 = 27 uzl... k. patro 3 3... 3 3 = 3 k uzl

X36DSA 25 4 / 3 Strom rekurze T(n) = 3T(n/4) + c n 2 Prbh výpotu... 4. Spoti cenu uzlu v pate k... k. patro c n 2. patro c (n/4) 2 2. patro c (n/6) 2 3. patro c (n/64) 2... k. patro c (n/4 k ) 2

X36DSA 25 4 / 3 Strom rekurze T(n) = 3T(n/4) + c n 2 Prbh výpotu... 5. Seti ceny uzl v pate k... V pate k je 3 k uzl, každý má cenu c (n/4 k ) 2. k Celková cena patra k je 3 k c (n/4 k ) 2 = (3/6) k c n 2 Pozor na poslední patro:

X36DSA 25 42 / 3 Strom rekurze T(n) = 3T(n/4) + c n 2 Prbh výpotu... 5. Seti ceny uzl v pate k... Poslední patro je v hloubce log 4 (n) a má tedy k 3 log (n) = n log (3) uzl. 4 4 Každý pispívá konstantní cenou, takže cena posledního patra je n log (3) konst = Θ(n log (3) ) 4 4

X36DSA 25 43 / 3 Strom rekurze Prbh výpotu... 6. Seti ceny všech pater T(n) = 3T(n/4) + c n 2 Celková cena = cn 2 + 3/6 cn 2 + (3/6) 2 cn2 +... + (3/6) log (n ) cn 2 + Θ (n log (3) 4 ) 4 = ( + 3/6 + (3/6) 2 +... + (3/6) log (n ) ) cn 2 + Θ (n log (3) ) 4 4 = Geometrickou posloupnost nahradíme pibližn geometrickou adou (zbytek ady je zanedbatelný). Získáváme horní odhad soutu. ( + 3/6 + (3/6) 2 + (3/6) 3 +... ad inf. ) cn 2 + Θ (n log 4(3) ) = ( / ( 3/6) ) cn 2 + Θ (n log 4(3) ) = 6/3 cn 2 + Θ (n log 4 (3) ) =

X36DSA 25 44 / 3 Strom rekurze Prbh výpotu... 6. Seti ceny všech pater T(n) = 3T(n/4) + c n 2 k 2 > log 4 (3) 6/3 cn 2 + Θ (n log 4 (3) ) = Θ (n 2 ) Asymptotická složitost celého algoritmu A.

X36DSA 25 45 / 3 Substituní metoda Píklad Rekurentní vztah popisující asymptotickou složitost algoritmu B Náš odhad složitosti T(n) = 2T(n/2) + n T(n) = O(n log 2 (n)) Zdroj odhadu: zkušenost, podobnost s jinými úlohami úvaha, intuice... :-) Chceme dokázat: Náš odhad platí Metoda: Bžná matematická indukce, do níž dosadíme (substituujeme) daný rekurentní vztah

X36DSA 25 46 / 3 Substituní metoda Chceme dokázat : T(n) = O(n log 2 (n)), to jest : T(n) c n log 2 (n), pro vhodné c > Krok II (obecný krok) matematické indukce: Dokážeme, že pokud nerovnost platí pro n/2, platí i pro n. Víme: Pedpokládáme: T(n) = 2T(n/2) + n T(n/2) c n/2 log 2 (n/2) Substituce: úpravy: T(n) 2 c n/2 log 2 (n/2) + n cn log 2 (n/2) + n = cn log 2 (n) cn log 2 (2) +n = cn log 2 (n) cn +n cn log 2 (n), pokud c

X36DSA 25 47 / 3 Substituní metoda Krok I matematické indukce: nerovnost T(n) c n log 2 (n), platí pro njaké konkrétní malé n. Nelze dokazovat pro n =, nebo bychom dokazovali T() c log 2 () =, což neplatí, protože jist je T() >. Pozorování T(n) = 2T(n/2) + n Pokud n > 3, v rekurentním vztahu se T() neobjeví, tedy pokud dokážeme indukní krok I pro n = 2 a n = 3, je dkaz hotov pro všechna n 2. Jde nám ale o asymptotickou složitost, tudíž dkaz pro n 2 staí.

X36DSA 25 48 / 3 Substituní metoda Krok I matematické indukce pro n = 2 a n = 3 A T() = k. T(n) = 2T(n/2) + n Z rekurentního vztahu plyne T(2) = 2k+2 T(3) = 2k+3 Chceme mít: T(2) c 2 log 2 (2) T(3) c 3 log 2 (3) Staí tedy volit c max { (2k+2)/2, (2k+3)/(3 log 2 (3)) }.

X36DSA 25 49 / 3 Mistrovská metoda Pímoará aplikace vty: Nech a a b > jsou konstanty, f(n) je funkce a nech asymptotická složitost daného algoritmu je definována rekurentním vztahem T(n) = at(n/b) + f(n), kde podíl n/b lze libovoln interpretovat jako n/b nebo n/b. Potom platí. Pokud f(n) = O(n log (a) e b ) pro njakou konstantu e >, pak T(n) = Θ(n log (a) ). // // b Podmínka. íká, že f(n) musí rst polynomiáln pomaleji než funkce n log (a). b

X36DSA 25 5 / 3 Mistrovská metoda 2. Pokud f(n) = Θ(n log (a) ), pak T(n) = Θ(n log (a) b b ). 3. Pokud f(n) = Ω(n log b (a) +e ) pro njakou konstantu e >, a pokud a f(n/b) c f(n) pro pro njaké c < a pro všechna dostaten velká n, pak T(n) = Θ(f(n)). // // Podmínka 3. íká, že f(n) musí rst polynomiáln rychleji než funkce n log (a). b

X36DSA 25 5 / 3 Mistrovská metoda.... Pokud f(n) = O(n log (a) e b ) pro njakou konstantu e >, pak T(n) = Θ(n log (a) b ).... Píklad. T(n) = 9T(n/3) + n a = 9, b = 3, f(n) = n. Platí n log (a) n log (9) b = 3 = Θ(n 2 ) f(n) = O(n log (9) e ), kde e = 3 Celkem tedy T(n)= Θ(n 2 )

X36DSA 25 52 / 3 Mistrovská metoda... 3. Pokud f(n) = Ω(n log b (a) +e ) pro njakou konstantu e >, a pokud a f(n/b) c f(n) pro pro njaké c < a pro všechna dostaten velká n, pak T(n) = Θ(f(n)). Píklad. T(n) = 2T(n/2) + n log 2 (n) a = 2, b = 2, f(n) = n log 2 (n). Platí = n n log (a) b f(n) = n log 2 (n) roste asymptoticky rychleji než n log (a) b = n. Pozor, neroste ale polynomiáln rychleji. Pomr n log 2 (n) / n = log 2 (n) roste pomaleji než každá rostoucí polynomiální funkce. n log2(n) Ω(n+e) pro každé kladné e. Pedpoklad 3. není splnn.

X36DSA 25 53 / 3 DSA Rzné algoritmy mají rznou složitost