DYNAMICKÉ PROGRAMOVÁNÍ A PROBLÉM BATOHU



Podobné dokumenty
12. Globální metody MI-PAA

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

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

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

Součin matice A a čísla α definujeme jako matici αa = (d ij ) typu m n, kde d ij = αa ij pro libovolné indexy i, j.

Determinant. Definice determinantu. Permutace. Permutace, vlastnosti. Definice: Necht A = (a i,j ) R n,n je čtvercová matice.

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

Lenka Zalabová. Ústav matematiky a biomatematiky, Přírodovědecká fakulta, Jihočeská univerzita. zima 2012

GRAFY A GRAFOVÉ ALGORITMY

Anotace. Dynamické programování, diskrétní simulace.

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

A0M15EZS Elektrické zdroje a soustavy ZS 2011/2012 cvičení 1. Jednotková matice na hlavní diagonále jsou jedničky, všude jinde nuly

12. Aproximační algoritmy

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

Regulární matice. Věnujeme dále pozornost zejména čtvercovým maticím.

Pokroč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

Problém batohu. Zdeněk Hanzálek ČVUT FEL Katedra řídicí techniky. 5. dubna 2011

2. úkol MI-PAA. Jan Jůna (junajan)

zejména Dijkstrův algoritmus pro hledání minimální cesty a hladový algoritmus pro hledání minimální kostry.

VYSOKÁ ŠKOLA EKONOMICKÁ V PRAZE. Optimalizace trasy při revizích elektrospotřebičů


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

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

Umělá inteligence I. Roman Barták, KTIML.

Experimentální hodnocení kvality algoritmů

Rekurzivní algoritmy

4. Rekurze. BI-EP1 Efektivní programování Martin Kačer

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

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

Intervalové stromy. Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme. 1. Změna jednoho čísla v posloupnosti.

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

Teorie informace a kódování (KMI/TIK)

8) Jaké jsou důvody pro použití víceprůchodového překladače Dříve hlavně kvůli úspoře paměti, dnes spíše z důvodu optimalizace

5. Maticová algebra, typy matic, inverzní matice, determinant.

Jednoznačné a nejednoznačné gramatiky

Umělá inteligence. UI (AI) - součást informatiky s průniky mimo obor Stručná historie UI. Letošní cena nadace Vize Joseph Weizenbaum

Matice se v některých publikacích uvádějí v hranatých závorkách, v jiných v kulatých závorkách. My se budeme držet zápisu s kulatými závorkami.

Stromy, haldy, prioritní fronty

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

Dynamické programování

TVORBA VÝROBNÍ DOKUMENTACE CV

Paralelní LU rozklad

Dynamické programování

PROBLÉM ČTYŘ BAREV. Lze obarvit jakoukoliv mapu v rovině čtyřmi barvami tak, aby žádné dvě sousedící oblasti neměly stejnou barvu?

Filtrace snímků ve frekvenční oblasti. Rychlá fourierova transformace

KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO LINEÁRNÍ ALGEBRA 1 OLGA KRUPKOVÁ VÝVOJ TOHOTO UČEBNÍHO TEXTU JE SPOLUFINANCOVÁN

Karnaughovy mapy. Pravdivostní tabulka pro tři vstupní proměnné by mohla vypadat například takto:

y = Spočtěte všechny jejich normy (vektor je také matice, typu n 1). Řádková norma (po řádcích sečteme absolutní hodnoty prvků matice a z nich

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

Semestrální projekt. Předmět: Programování v jazyce C. Zadání: Operace s maticemi. Uživatelský manuál. ver. 1.0

Několik poznámek na téma lineární algebry pro studenty fyzikální chemie

NP-ÚPLNÉ PROBLÉMY. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Katedra kybernetiky skupina Inteligentní Datové Analýzy (IDA) 9. dubna Filip Železný (ČVUT) Vytěžování dat 9.

Hanojská věž. T2: prohledávání stavového prostoru. zadání [1 1 1] řešení [3 3 3] dva možné první tahy: [1 1 2] [1 1 3]

Algoritmizace I. Ak. rok 2015/2016 vbp 1. ze 132

2. Matice, soustavy lineárních rovnic

Algoritmy výpočetní geometrie

Kapitola 11. Vzdálenost v grafech Matice sousednosti a počty sledů

Lineární algebra : Násobení matic a inverzní matice

Slepé prohledávání do šířky Algoritmus prohledávání do šířky Při tomto způsobu prohledávání máme jistotu, že vždy nalezneme koncový stav, musíme ale p

Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C

Matice. Předpokládejme, že A = (a ij ) je matice typu m n: diagonálou jsou rovny nule.

1 / 11. Slovíčka. Jiří Heralt. Dokumentace

Matice. Přednáška MATEMATIKA č. 2. Jiří Neubauer. Katedra ekonometrie FEM UO Brno kancelář 69a, tel

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

DRN: Soustavy linárních rovnic numericky, norma

a n (z z 0 ) n, z C, (1) n=0

2.2. SČÍTÁNÍ A NÁSOBENÍ MATIC

[1] LU rozklad A = L U

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

0. Lineární rekurence Martin Mareš,

5. Dynamické programování

Jednotkové rozhodování v energetice

Gymnázium, Brno. Matice. Závěrečná maturitní práce. Jakub Juránek 4.A Školní rok 2010/11

Teoretická rozdělení

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

Skalár- veličina určená jedním číselným údajem čas, hmotnost (porovnej životní úroveň, hospodaření firmy, naše poloha podle GPS )

Operace s maticemi Sčítání matic: u matic stejného typu sečteme prvky na stejných pozicích: A+B=(a ij ) m n +(b ij ) m n =(a ij +b ij ) m n.

6. T e s t o v á n í h y p o t é z

Biologické a akustické signály

68. ročník Matematické olympiády 2018/2019

Cvičení z Numerických metod I - 12.týden

Dynamické programování

Práce s čísly. Klíčové pojmy: Základní matematické operace, zápis složitějších příkladů, mocniny, odmocniny, zkrácené operátory

Y36BEZ Bezpečnost přenosu a zpracování dat. Úvod. Róbert Lórencz. lorencz@fel.cvut.cz

Skalární součin je nástroj, jak měřit velikost vektorů a úhly mezi vektory v reálných a komplexních vektorových prostorech.

Složitost a NP-úplnost

2 Spojité modely rozhodování

B a k a l ářská práce

PROHLEDÁVÁNÍ GRAFŮ. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Implementace LL(1) překladů

Rozklad problému na podproblémy

Kombinatorická optimalizace

Tento text je stručným shrnutím těch tvrzení Ramseyovy teorie, která zazněla

Kódy pro detekci a opravu chyb. INP 2008 FIT VUT v Brně

12 DYNAMIKA SOUSTAVY HMOTNÝCH BODŮ

VYBRANÉ PARTIE Z NUMERICKÉ MATEMATIKY

Učební texty k státní bakalářské zkoušce Matematika Matice. študenti MFF 15. augusta 2008

Výpočetní složitost I

9. Úvod do teorie PDR

Transkript:

ČVUT V PRAZE FAKULTA INFORMAČNÍCH TECHNOLOGIÍ JAN SCHMIDT A PETR FIŠER MI-PAA DYNAMICKÉ PROGRAMOVÁNÍ A PROBLÉM BATOHU EVROPSKÝ SOCIÁLNÍ FOND PRAHA A EU: INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Dynamické programování Dynamické programování je vždy spojeno s dekompozicí. Pro 0/1 problém batohu i existují nejméně dvě dekompozice: podle celkové ceny podle kapacity batohu Dekompozice podle celkové ceny Označme E(i, c) instanci 0/1 inverzního problému batohu ii se zadanou cenou c, která vznikne z řešené instance omezením na prvých i věcí. Označme dále W(i, c) sumární hmotnost věcí řešené instance. Pak platí W(0,0) = 0 W(0,c) = pro všechna c > 0 W(i+1, c) = min(w(i, c), W(i, c-c i+1)+w i+1) pro všechna i > 0. Z výsledných řešení W(n, c) vybereme řešení, pro které je W(n, c) < M pro největší c. Je zřejmé, že řešení můžeme omezit na c menší nebo rovné součtu cen všech věcí. Výše uvedená závislost je pro dynamické programování charakteristická. Postup řešení lze formulovat buď rekurzí (řešit problémy E(n, c) pro všechna c a rekurzivně potřebné podproblémy) nebo dopředně - začít s E(0, c) pro všechna c a generovat všechna možná řešení problémů E(i, c) pro i = 1,, n. Je třeba zabránit tomu, aby byl jeden a týž problém řešen opakovaně, jinak se ztrácejí přednosti metody. Dekompozice podle kapacity Abychom stanovili optimální řešení pro n věcí, musíme znát 1. optimální řešení problému s vyjmutou n-tou věcí (v případě, že n-tá věc v optimálním řešení není) 2. optimální řešení problému s vyjmutou n-tou věcí a kapacitou batohu sníženou o hmotnost té věci (v případě, že n-tá věc je součástí optimálního řešení). Srovnáme-li obě varianty, zjistíme, zda n-tá věc má být v optimálním řešení. Rekurzivně opakujeme, až dostaneme triviální podúlohy. Řešení podúloh je třeba zaznamenávat k opakovanému použití. Možný algoritmus Nechť (X n, C n, m) = KNAP(V, C, M) je algoritmus řešící instanci problému batohu danou (V, C, M) a vracející vektor X, celkovou cenu C n a celkovou váhu m. Pak můžeme KNAP napsat jako následující pseudokód. Tečka je zde operátor zřetězení: function KNAP (V, C, M) if istrivial(v, C, M) return trivialknap(v, C, M);

// ukončení rekurze, je-li instance triviální (X0, C0, m0) = KNAP(V-{vn}, C-{cn}, M); // vyřeš batoh, ve kterém n-tá věc není (X1, C1, m1) = KNAP(V-{vn}, C-{cn}, M-vn); // vyřeš batoh, ve kterém n-tá věc je if (C1+cn) > C0 return(x1.1, C1+cn, m1+vn); // jaká varianta je lepší? else return(x0.0, C0, m0); function istrivial(v, C, M) return(isempty(v) or M=0 or M<0); Až dosud uvedený algoritmus je prohledáváním do hloubky. Protože pokaždé voláme funkci dvakrát a hloubka rekurze je n, je složitost 2 n. Nicméně, některé instance řešíme vícekrát a můžeme tedy uschovávat řešení. Protože podúlohy pracují vždy s i prvými věcmi a množiny V and C lze považovat za globální, každá podúloha je charakterizována hodnotami n a M. Proto pamět mezivýsledků můžeme uspořádat do dvourozměrného pole indexovaného hodnotami n a M. Pole má n.m prvků a taková je i složitost algoritmu. Je polynomiální ve velikosti instance, nicméně obsahuje parametr, který s velikostí instance nesouvisí. Takové algoritmy se nazývají pseudopolynomiální. Dynamické programování může být buď složeno z dopředné a zpětné fáze nebo může obsahovat jen zpětnou fázi. V dopředné fázi začínáme od původní úlohy v prvku (n, M) pole a rekurzivně označujeme podúlohy, které potřebujeme řešit, až narazíme na triviální podúlohy. Ve zpětné fázi vyřešíme nejprve označené triviální podúlohy (resp. všechny triviální podúlohy, nemáme-li dopřednou fázi). Pak řešíme takové označené (resp. všechny takové) úlohy, které lze řešit pomocí úloh již vyřešených a v tabulce uložených, až dospějeme k celkovému řešení. Detailní příklad dekompozice podle ceny Nechť n = 5, V = (2,6,5,3,4), C = (5,9,20,12,18), a M = 10. Začneme ve sloupci n = 0 a postupně plníme tabulku doprava. Výsledné řešení je určeno polem v posledním sloupci, které obsahuje váhu menší než M a má maximální index. Jestliže pole (n-1, c) obsahuje váhu stejnou jako pole (n, c), pak n-tá věc není součástí optimálního řešení Takto se dá rekonstruovat vektor X z tabulky. W(n, c) 64 20 63 62 61 60

59 18 58 57 56 55 14 54 53 52 17 51 50 12 49 48 47 15 46 16 16 45 44 15 43 11 42 41 14 14 40 39 13 38 9 37 10 10

36 35 9 34 13 13 13 33 32 8 8 31 30 7 29 11 11 11 28 27 10 26 11 11 25 7 7 7 24 23 6 22 21 9 9 20 5 5 5 19 18 4 17 5 5 16 15 14 8 8 8 8

13 12 3 3 11 10 9 6 6 6 6 8 7 6 5 2 2 2 2 2 4 3 2 1 0 0 0 0 0 0 0 n 0 1 2 3 4 5 V 2 6 5 3 4 C 5 9 20 12 18 Optimální řešení je tedy (00101), cena 38, váha 9. i MI-PAAknapsack.pdf ii tamtéž