Dynamic programming. Optimal binary search tree

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

R zné algoritmy mají r znou složitost

Dynamické programování

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

Gymnázium, Brno, Slovanské nám. 7 WORKBOOK. Mathematics. Teacher: Student:

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

Stromy. Jan Kybic.

HASHING GENERAL Hashovací (=rozptylovací) funkce

Třídění a vyhledávání Searching and sorting

Transportation Problem

Heuristické řešení problémů. Seminář APS Tomáš Müller

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

PG 9.5 novinky ve vývoji aplikací

Škola: Střední škola obchodní, České Budějovice, Husova 9. Inovace a zkvalitnění výuky prostřednictvím ICT

Compression of a Dictionary

Hledání k-tého nejmenšího prvku

Tento materiál byl vytvořen v rámci projektu Operačního programu Vzdělávání pro konkurenceschopnost.

Střední průmyslová škola strojnická Olomouc, tř.17. listopadu 49

Introduction to MS Dynamics NAV


Využití hybridní metody vícekriteriálního rozhodování za nejistoty. Michal Koláček, Markéta Matulová

Distribuované systémy a výpočty

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.

BINARY SEARCH TREE

BINARY SEARCH TREE

pak celou úlohu. ani Jako obvykle je static int M, N; [] key, L, R; NIL = -1; cost; roota, rootb; throws IOExceptio // tree roots on { static void

Angličtina v matematických softwarech 2 Vypracovala: Mgr. Bronislava Kreuzingerová

HASHING GENERAL Hashovací (=rozptylovací) funkce

TKGA3. Pera a klíny. Projekt "Podpora výuky v cizích jazycích na SPŠT"

STACK

Next line show use of paragraf symbol. It should be kept with the following number. Jak může státní zástupce věc odložit zmiňuje 159a.

1, Žáci dostanou 5 klíčových slov a snaží se na jejich základě odhadnout, o čem bude následující cvičení.

TGH05 - Problém za milion dolarů.

Database systems. Normal forms

Chapter 7: Process Synchronization

Air Quality Improvement Plans 2019 update Analytical part. Ondřej Vlček, Jana Ďoubalová, Zdeňka Chromcová, Hana Škáchová

VY_22_INOVACE_60 MODAL VERBS CAN, MUST

CZ.1.07/1.5.00/

Gymnázium, Brno, Slovanské nám. 7, SCHEME OF WORK Mathematics SCHEME OF WORK. cz

2. Entity, Architecture, Process

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

Semestrální práce z předmětu. Jan Bařtipán / A03043 bartipan@studentes.zcu.cz

GUIDELINES FOR CONNECTION TO FTP SERVER TO TRANSFER PRINTING DATA

Production: The Case of One Producer

Rzné algoritmy mají rznou složitost

2N Voice Alarm Station

Elektroinstalační lišty a tvarovky. Elektroinstalační lišty / Cable trunkings

Gymnázium, Brno, Slovanské nám. 7 WORKBOOK. Mathematics. Student: Draw: Convex angle Non-convex angle

Klepnutím lze upravit styl předlohy. nadpisů. nadpisů.

A4B99RPH: Řešení problémů a hry Čistý kód.

2N LiftIP. Voice Alarm Station. Communicator for Lifts. Version

Standardní řada lisů Standard range of presses: x x x

UŽIVATELSKÁ PŘÍRUČKA

Bioinformatika a výpočetní biologie. KFC/BIN VII. Fylogenetická analýza

UPM3 Hybrid Návod na ovládání Čerpadlo UPM3 Hybrid 2-5 Instruction Manual UPM3 Hybrid Circulation Pump 6-9

PRAVIDLA ZPRACOVÁNÍ STANDARDNÍCH ELEKTRONICKÝCH ZAHRANIČNÍCH PLATEBNÍCH PŘÍKAZŮ STANDARD ELECTRONIC FOREIGN PAYMENT ORDERS PROCESSING RULES

Zvyšování kvality výuky technických oborů

1 st International School Ostrava-mezinárodní gymnázium, s.r.o. Gregorova 2582/3, Ostrava. IZO: Forma vzdělávání: denní

Návrh a implementace algoritmů pro adaptivní řízení průmyslových robotů

Aplikace matematiky. Dana Lauerová A note to the theory of periodic solutions of a parabolic equation

Uživatelská příručka. Xperia P TV Dock DK21

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

USING VIDEO IN PRE-SET AND IN-SET TEACHER TRAINING

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

Střední průmyslová škola strojnická Olomouc, tř.17. listopadu 49


Problém identity instancí asociačních tříd

CZ.1.07/1.5.00/

Uni- and multi-dimensional parametric tests for comparison of sample results

Aktivita CLIL Chemie I.

kupi.cz Michal Mikuš

Datablades včera, dnes a zítra

Počítačové šachy. Otakar Trunda

VOŠ, SPŠ automobilní a technická. Mgr. Marie Šíchová. At the railway station

WORKSHEET 1: LINEAR EQUATION 1

Postup objednávky Microsoft Action Pack Subscription

f(x,y) = max ( f(x 1, y 1)+ f(x 1,y) ) + f(x,y 1) +1 jinak f(x,y,z) = f(x 1, y 1, z 1)+ f(x 1,y,z) + f(x,y 1,z) + f(x,y,z 1)+1 jinak

2011 Jan Janoušek BI-PJP. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Tento materiál byl vytvořen v rámci projektu Operačního programu Vzdělávání pro konkurenceschopnost.

Entrance test from mathematics for PhD (with answers)

Spojový seznam. Jan Kybic.

Téma 8. Náklady kapitálu. Kapitálová struktura a její optimalizace

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

Střední odborná škola stavební a Střední odborné učiliště stavební Rybitví

How to get to Hotel Step (venue of WWP AW 2018)

COMPETENT AUTHORITY responsible for ensuring compliance with Regulation (EC) No 21/2004:

PACIFIC AEROSPACE CORPORATION letadlo model PAC 750 XL Tento PZZ je vydáván pro výrobek transferovaný pod působnost EASA

Samas Česká republika spol. s r. o Krouna 322 T F

SSOS_AJ_3.18 British education

Abstraktní datové typy

O makrech, která umí aritmetiku s velkými čísly. Macros Which Handle Arithmetics with Big Numbers. Jan Šustek KMa PřF OU. Brejlov

TechoLED H A N D B O O K

Stromy, haldy, prioritní fronty

Litosil - application

VYUŽITÍ DATA DRIVEN PAGES

Úvod do datového a procesního modelování pomocí CASE Erwin a BPwin

PITSTOP VY_22_INOVACE_26

PART 2 - SPECIAL WHOLESALE OFFER OF PLANTS SPRING 2016 NEWS MAY 2016 SUCCULENT SPECIAL WHOLESALE ASSORTMENT

obal manuálu, asi něco podobného jako u LC 100 asi by to chtělo lepší obrázek!!! FYTOSCOPE FS130 Instruction Guide

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

Transkript:

The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Dynamic programming Optimal binary search tree Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),

The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Optimal binary search tree Balanced but not optimal. Dana.4 Hugo.9 Lea.8 Ben.5 Fred.5 Jack. Nick Ann Cole Edna Gene Irma Ken Mark Orrie...4..6.5.. Key Query probability Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),

The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Optimal binary search tree Node costs in a BST Node cost = probability depth.4 Hugo.4 =.4. Dana. =..5 Fred.5 =.5 Gene 4. depth. 4 =.88 Node cost = average no. of tests in one operation Find. Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),

X6DSA 5 Θ(n log (n)), Cost of balanced search tree key probab. p k depth d k p k d k Ann Ben Cole Dana Edna Fred Gene Hugo Irma Jack Ken Lea..8...4.5..4.6.5.5.9 4 4 4 4 4 4. 4 =..8 =.4. 4 =.48. =..4 4 =.6.5 =.5. 4 =.88.4 =.4.6 4 =.4.5 =.5.5 4 =.6.9 =.8 Mark Nick Orrie... 4 4. 4 =.8. =.9. 4 =.4 Total cost:.47 Total cost = avg. no. of tests in all operatios Find. Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),

The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Optimal binary search tree Optimal BST with specific query probabilities. Cole. Gene.5 Ken.8 Ben.5 Fred.6 Irma.9 Lea Ann.4 Edna Hugo Jack. Nick..4.5 Dana Mark Orrie... Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),

Θ(n log (n)), Cost of optimal BST key probab. p k depth d k p k d k. 4. 4 =..8.8 =.4.. =.4. 5. 5 =.5.4 4.4 4 =.6.5.5 =.5.. =..4 4.4 4 =.6.6 Ann Ben Cole Dana Edna Fred Gene Hugo Irma Jack Ken Lea Mark Nick Orrie.5.5.9... Speedup.47 :.56 = :.74.6 =.8.5 4 =..5 =..9 =.7. 5 =.. 4 =.. 5 =.5 Total cost.56 Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)), 4 5 4 5

The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Computing the cost of optimal BST Xyz p k C k C k cost of the left subtree of node k cost of the right subtree of node k C k C k L k- k k+ R Recursive idea k- cost = C k + p i + C k + i=l R i=k+ p i p k + p k Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),

X6DSA 5 The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Computing the cost of optimal BST Small optimal subtrees L R N Surely, there exists an optimal subtree containing keys with indices ranging from L to R. Subtree size = no. of nodes = L R+ There are N optimal subtrees of size N N subtree N In total, there are N * (N+) / different optimal subtrees. Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),

The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Minimizing the cost of optimal BST Idea of recursive solution:. Assumption: All smaller optimal subtrees are known.. Try all possibilities: k = L, L+, L+,..., R k=l k=l+ k=l+... k=r. Register the index k, which minimizes the cost expressed as k- C k + p i + C k + i=l R i=k+ p i + p k 4. The key with index k is the root of the optimal subtree. Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),

X6DSA 5 The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Minimizing the cost of optimal BST C(L,R)... Cost of optimal subtree containig keys with indices: L, L+, L+,..., R-, R C(L,R) = k- p i i=l min { C(L, k-) + L k R + C(k+,R) + R p i i=k+ + p k } = = min { C(L, k-) + L k R C(k+,R) + R p i i=l } = (*) = min { C(L, k-) + L k R C(k+,R) } + R p i i=l The value minimizing (*) is the index of the root of the optimal subtree Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),

X6DSA 5 The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Data structures for computing optimal BST Costs of optimal subtrees array C [L][R] (L R) Roots of optimal subtrees array roots [L][R] (L R) L R 4 N L R L R L R N+ N+ diagonal... L= R diagonal... L= R Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),

The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Computing optimal BST The cost of a particular optimal subtree p p L=, R=9 p a b c d e p 4 p 5 p 6 p7 x y z C(L,R) = min { C(L, k-) + C(k+,R) } L k R R + p i i=l t p 8 w p9 C(L,R) = min{ +x, p +y, a+z, b+t, c+w, d+p 9, e+ } p N Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),

The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Computing optimal BST Dynamic programming strategy First process the smallest subtrees, then the bigger ones, then still more bigger ones, etc... Stop Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),

The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Computing optimal BST Computing arrays of costs and roots def optimaltree( Prob, N ): Costs = [[]*N for i in range(n)] Roots = [[]*N for i in range(n)] # size =, main diagonal for i in range(n): Costs[i][i] = Prob[i]; Roots[i][i] = i # size >, diagonals above main diagonal for size in range(, N): L = ; R = size while R < N: Costs[L][R] = min(costs[l][k-] + Costs[k+][R], k = L..R) roots[l][r] = k minimizing previous line Costs[L][R] += sum(costs[l:r+]) L += ; R += return Costs, Roots Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),

The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Computing optimal BST Building optimal BST using the array of subtree roots # standard BST insert def buildtree( Tree, L, R, Roots, Nodes ): if R < L: return rootindex = Roots[L][R] # standard BST insert # nodes in Nodes have to be sorted in increasing # order of their key values Tree.insert( Nodes[rootindex].key ) buildtree( Tree, L, rootindex-, Roots, Nodes ) buildtree( Tree, rootindex+, R, Roots, Nodes ) } Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),

The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Computing optimal BST Roots of optimal subtrees 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 4 5 6 7 7 7 7 7 7 7 7 7 5 6 7 7 7 7 7 7 7 7 7 6 7 7 7 7 7 7 7 7 7 7 7 7 8 9 9 9 9 4 4 4 4 5 Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),

The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Computing optimal BST Tree and array correspondence.8 Ben Ann.. Cole.4 Edna Dana..5 Fred. Gene.6 Irma Hugo.4 Jack.5.5 Ken.9 Lea. Nick Mark. Orrie. 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 4 5 6 7 7 7 7 7 7 7 7 7 5 6 7 7 7 7 7 7 7 7 7 6 7 7 7 7 7 7 7 7 7 7 7 7 8 9 9 9 9 4 4 4 4 5 Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),

The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Computing optimal BST Costs of optimal subtrees -A -B -C 4-D 5-E 6-F 7-G 8-H 9-I -J -K -L -M 4-N 5-O -A..4.7.9.48.6.7.6.4.57..9.7.5.56 -B.8.8..9.54.6.4..45.9.7.5.9.44 -C..4..8.8.9.6..66.9..5. 4-D..6.6.48.56.7.87..59.67.8.86 5-E.4..44.5.68.8.8.55.6.77.8 6-F.5..4.56.7.6.4.5.6.67 7-G...46.6.6..7.48.5 8-H.4.4.4.54.7.78.89.9 9-I.6.6.4.6.66.77.8 -J.5.5.4.49.6.64 -K.5..9.5.54 -L.9...4 -M..7.9 4-N..5 5-O. Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),

The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Dynamic programming Longest common subsequence (LCS) Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),

The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Longest common subsequence Two sequences A: C B E A D D E A A = 8 B: D E C D B D A B = 7 Common subsequence A: C B E A D D E A B: D E C D B D A C: C D A C = Longest common subsequence (LCS) A: C B E A D D E A B: D E C D B D A C: E D D A C = 4 Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),

The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Longest common subsequence A n : (a, a,..., a n ) B m : (b, b,..., b m ) C k : (c, c,..., c k ) C k = LCS(A n, B m ) A 8 : B 7 : C 4 : 4 5 6 7 8 C B E A D D E A D E C D B D A E D D A Recursive rules: ( a n = b m ) ==> (c k = a n = b m ) & (C k- = LCS (A n-, B m- ) ) 4 5 6 7 8 4 5 6 7 8 A 8 : C B E A D D E A A 7 : C B E A D D E A B 7 : D E C D B D A B 6 : D E C D B D A C 4 : E D D A C : E D D A Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),

The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Longest common subsequence ( a n!= b m ) & (c k!= a n ) ==> (C k = LCS (A n-, B m ) ) 4 5 6 7 8 4 5 6 7 8 A 7 : C B E A D D E A 6 : C B E A D D E B 6 : D E C D B D B 6 : D E C D B D C : E D D C : E D D ( a n!= b m ) & (c k!= b m ) ==> (C k = LCS (A n, B m- ) ) 4 5 6 7 8 4 5 6 7 8 A 5 : C B E A D A 5 : C B E A D B 5 : D E C D B B 4 : D E C D B C : E D C : E D Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),

The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Longest common subsequence Recursive function c(m, n) computes LCS length C(n,m) = C(n-, m-) + max{ C(n-, m), C(n, m-) } n = or m = n >, m >, a n =b m n >, m >, a n b m Dynamic programming strategy C[n][m] n m for a in range(, n+ ): for b in range(, m+ ): C[a][b] =... } Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),

The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Longest common subsequence Construction of D LCS array def findlcs(): for a in range(, n+ ): for b in range(, m+ ): if A[a] == B[b]: C[a][b] = C[a-][b-]+ arrows[a][b] = DIAG else: if C[a-][b] > C[a][b-]: C[a][b] = C[a-][b]; arrows[a][b] = UP else: C[a][b] = C[a][b-]; arrows[a][b] = LEFT Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),

The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)), 4 5 6 7 C B E A D D E A 4 4 5 6 7 8 C D B D A D E C A: B: LCS array for CBEADDEA and DECDBDA Longest common subsequence

The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Longest common subsequence LSC printout -- recursively :) def outlcs(a, b) { if a == or b == return if arrows[a][b] == DIAG: outlcs(a-, b-); // recursion... print(a[a]) //... reverses the sequence! else: if arrows[a][b] == UP: outlcs(a-,b); else: outlcs(a,b-); } Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),