Diskrétní kombinatorické úlohy. Týden 12. Diskrétní kombinatorické úlohy. Příklady úloh. Typy úloh. Typ 2: Problém 0/1-lineárního programování

Podobné dokumenty
Cvičení předmětu MI-PAR P. Tvrdík, I. Šimeček, M. Šoch

Evoluční algoritmy. Podmínka zastavení počet iterací kvalita nejlepšího jedince v populaci změna kvality nejlepšího jedince mezi iteracemi

Vzdálenost uzlů v neorientovaném grafu

Algoritmizace prostorových úloh

Numerické metody a programování. Lekce 8

State Space Search Step Run Editace úloh Task1 Task2 Init Clear Node Goal Add Shift Remove Add Node Goal Node Shift Remove, Add Node

4EK213 Lineární modely. 10. Celočíselné programování

Optimalizace & soft omezení: algoritmy

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.

Metody lineární optimalizace Simplexová metoda. Distribuční úlohy

Genetické algoritmy. Informační a komunikační technologie ve zdravotnictví

Úvod do teorie grafů

Evoluční výpočetní techniky (EVT)

Obsah prezentace. Základní pojmy v teorii o grafech Úlohy a prohledávání grafů Hledání nejkratších cest

Jak se matematika poučila v biologii

1 Úvod do celočíselné lineární optimalizace

"Agent Hledač" (3. přednáška)

Základy informatiky. Teorie grafů. Zpracoval: Pavel Děrgel Úprava: Daniela Szturcová

Třídy složitosti P a NP, NP-úplnost

Paralelní grafové algoritmy

12. Globální metody MI-PAA

Úloha ve stavovém prostoru SP je <s 0, C>, kde s 0 je počáteční stav C je množina požadovaných cílových stavů

OPTIMALIZAČNÍ ÚLOHY. Modelový příklad problém obchodního cestujícího:

Grafové algoritmy. Programovací techniky

Grafové algoritmy. Programovací techniky

11. Tabu prohledávání

Dynamické programování

ČVUT FEL X36PAA - Problémy a algoritmy. 5. úloha - Seznámení se se zvolenou pokročilou iterativní metodou na problému batohu

Základy informatiky. 07 Teorie grafů. Kačmařík/Szturcová/Děrgel/Rapant

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

bfs, dfs, fronta, zásobník, prioritní fronta, halda

3. Třídy P a NP. Model výpočtu: Turingův stroj Rozhodovací problémy: třídy P a NP Optimalizační problémy: třídy PO a NPO MI-PAA

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

ALGORITMY A DATOVÉ STRUKTURY

PŘEDNÁŠKA 03 OPTIMALIZAČNÍ METODY Optimization methods

OPTIMALIZACE A MULTIKRITERIÁLNÍ HODNOCENÍ FUNKČNÍ ZPŮSOBILOSTI POZEMNÍCH STAVEB D24FZS

Hledáme efektivní řešení úloh na grafu

Stromy, haldy, prioritní fronty

07 Základní pojmy teorie grafů

Metaheuristiky s populacemi

jednoduchá heuristika asymetrické okolí stavový prostor, kde nelze zabloudit připustit zhoršují cí tahy Pokročilé heuristiky

Matice sousednosti NG

bfs, dfs, fronta, zásobník, prioritní fronta, halda

Genetické programování

TGH05 - aplikace DFS, průchod do šířky

Modely teorie grafů, min.kostra, max.tok, CPM, MPM, PERT

Rekurzivní algoritmy

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

Projekční algoritmus. Urychlení evolučních algoritmů pomocí regresních stromů a jejich zobecnění. Jan Klíma

Úvod do optimalizace, metody hladké optimalizace

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

Použití dalších heuristik

TGH05 - aplikace DFS, průchod do šířky

Algoritmus pro hledání nejkratší cesty orientovaným grafem

Markov Chain Monte Carlo. Jan Kracík.

Seminář z umělé inteligence. Otakar Trunda

Základy umělé inteligence

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

OSA. maximalizace minimalizace 1/22

u odpovědí typu A, B, C, D, E: Obsah: jako 0) CLP Constraint Logic Programming

Datové struktury 2: Rozptylovací tabulky

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

Standardní algoritmy vyhledávací.

7. Heuristické metody

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

Algoritmy na ohodnoceném grafu

Přednáška 3. Rekurze 1

Implementace LL(1) překladů

10. Složitost a výkon

6. Tahy / Kostry / Nejkratší cesty

4. Úvod do paralelismu, metody paralelizace

Metody návrhu algoritmů, příklady. IB111 Programování a algoritmizace


Algoritmy a datové struktury

Prioritní fronta, halda

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

Oborové číslo Hodnocení - část A Hodnocení - část B Hodnocení - část A+B. 1. úloha (4 body) Kolik existuje cest délky 4 v grafu K11? 2.

Časová a prostorová složitost algoritmů

Dynamické programování

TGH06 - Hledání nejkratší cesty

TGH06 - Hledání nejkratší cesty

Dynamické programování

Algoritmizace prostorových úloh

Dynamické rozvrhování

ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ

Paralení programování pro vícejádrové stroje s použitím OpenMP. B4B36PDV Paralelní a distribuované výpočty

Algoritmy a datové struktury

Obsah: Problém osmi dam

4EK311 Operační výzkum. 1. Úvod do operačního výzkumu

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2016

Datové typy a struktury

13. Lineární programování

MOŽNOSTI OPTIMALIZACE VE STAVEBNICTVÍ

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

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Teorie grafů. zadání úloh. letní semestr 2008/2009. Poslední aktualizace: 19. května First Prev Next Last Go Back Full Screen Close Quit

Dynamické datové struktury III.

Genetické algoritmy. Vysoká škola ekonomická Praha. Tato prezentace je k dispozici na:

1. Úvod do genetických algoritmů (GA)

Přijímací zkouška - matematika

Transkript:

Diskrétní kombinatorické úlohy Týden Diskrétní kombinatorické úlohy lze řešit prohledáváním stavového prostoru reprezentovaného grafem (strom, acyklický graf). Prohledávání = rozvinutí stavového prostoru do tzv. prohledávacího stromu s (větším) počtem stavů: - počáteční stav, -přípustné mezistavy (částečná řešení) a nepřípustné mezistavy -přípustné koncové stavy (řešení) a nepřípustné koncové stavy. Prohledávání definuje pořadí stavů. Prohledávání nejdříve do hloubky (DFS) Prohledávání nejdříve do šířky (BFS) Příklady úloh Typy úloh úlohy z teorie grafů návrh obvodů VLSI (členění, rozmisťování, propojování) generování testů VLSI robotika, plánování trajektorie celočíselné a / lineární programování dopravní problémy (problém obchodního cestujícího TSP) hádanky a hlavolamy (8 a více dam, 9 kamenů...) síťová analýza časové rozvrhování ( v ekonomice, OS, multiprocesorech) scheduling Vesměs NP-úplné úlohy, není lehké nalézt dostatečně efektivní metody řešení.. Všechna řešení mají stejnou cenu, dosažitelná stejným počtem kroků. Hledáme první řešení.. Řešení (množina S) mají různou cenu, hledáme řešení s minimální cenou (cenová funkce f). Hloubka prohledávání je omezená a známá. (Diskrétní optimalizační problémy, DOP). Hloubka prohledávání není známá ani omezená. Hledáme řešení v minimální hloubce prohledávacího stromu. Typ : problém 8 královen S pokračujícím prohledáváním stromu je na šachovnici přidáváno víc královen Typ : Problém /-lineárního programování Vstup: int A [m][n], sloupcové vektory int b [m], c [n]; Problém: Najít sloupcový binární vektor int x [n] takový, že Ax b a c T x = min A =, b =, T c = [ ] každý krok = sestup o jednu úroveň Např. x = [ ] T vyhovuje, je to optimum? Zde n T S = { x B ; Ax b} f ( x) = c x 6

Typ : Permutační hlavolam Prohledávání grafů do hloubky a návraty zpět Vstup: Mřížka a b, a b, s počáteční konfigurací ab - kamenů očíslovaných,,, ab -. Jedno políčko je prázdné. Problém: Určit nejkratší sekvenci tahů, které povedou od počáteční konfigurace k uspořádání všech kamenů po řádcích,, ab -. S = množina všech sekvencí tahů, které vedou od počáteční ke konečné konfiguraci f (x) = počet potřebných tahů v sekvenci. 7 6 8 6 7 8 7 Vyčerpávající prohledávání do hloubky: jsou vyhodnocována všechna přípustná řešení a je vybráno řešení s minimální cenou. Výpočetně neúnosné s výjimkou nejmenších problémů. Metoda větví a mezí (Branch and Bound search, B&B) : Částečné řešení odmítni a vrať se (backtracking) - pokud není přípustné (nemůže vést k přípustnému řešení) - nebo pokud je přípustné, ale nemůže vést k řešení s cenou nižší než je dosud nejlepší známá cena (zjistíme přesně nebo odhadem). Ušetří se procházení mnoha podstromy. Je-li koncový stav nepřípustný, vrať se; je-li přípustný (řešení): - je-li třeba, aktualizuj současnou nejlepší cenu (rozhlaš ostatním) -ukonči prohledávání, pokud je dosaženo známé dolní meze ceny - pokračuj v prohledávání, když dolní mez ceny není známa. 8 Příklad: problém 8 královen - pokrač. Příklad: /-lineární programování - pokrač. návrat: když na řádku i+ neexistuje žádná možná pozice pro královnu, vezmi královnu ze současné pozice na řádku i a zkus jinou dosud neprozkoumanou pozici na řádku i účinnější prodloužení částečných řešení: umísti královnu do toho řádku, na kterém je nejmenší počet možných pozic. V případě více řádků vezmi jeden náhodně. počet návratů se dramaticky sníží ( pro problém s 9 královnami z, na ), mnohem kratší řešení. paralelizace: - každému procesoru je dána jedna z 8 pozic na prvním řádku pro další průzkum (statická alokace) - generovaná práce je dynamicky přerozdělována mezi procesory (vyvažování zátěže, load balancing) x x x x A - - - Částečné řešení A není třeba rozvíjet, protože cena c T x = [- ] [ * * ] T může být nejméně 9 Proč paralelní DFS? Jaká je režie? Anomálie paralelního DFS Heuristické prohledávací algoritmy mohou najít suboptimální řešení pro specifické (NP-úplné) problémy v polynomiálním čase. Několik řešení se konstruuje nebo zlepšuje současně. Tím lze někdy dosáhnout superlineární zrychlení nebo i vyšší kvalitu suboptimálního řešení (prozkoumáním několika podprostorů) Mnoho DOPs vyžaduje řešení v reálném čase paralelní zpracování může být jediná cesta jak získat výkonnost pro RT. Režie spojená s komunikací. Režie rozdělení práce. Soupeření o sdílené datové struktury. Prostoje kvůli nestejné zátěži. režie s detekcí globálního ukončení P P.. Paralelní prohledávání může vykazovat anomální chování: - na procesorech může trvat stejně dlouho jako na procesorech - na procesorech může trvat méně než % času sekvenčního DFS -obecně, přidání procesoru může zrychlit prohledávání více než úměrně -přidání procesoru může také zpomalit paralelní DFS je třeba zátěž vyvažovat dynamicky. (LB, load balancing) P P

Organizace dat na zásobníku u DFS Dynamické vyvažování zátěže (MP) Init a b c d a b c a b a b c d a b c 6a 6b 6c 6d Dno zásobníku d b c d a b c d c a b c a b c c a b a b b b c d e a b c d e b b c a b c e 6c 6d 6a 6b 6c 6d d c c Pro eliminaci krátkých cyklů se uchovávají rodičovské stavy nebo i již prohledané stavy jednu nebo několik úrovní zpět Na počátku, CPU P přiděluje každému CPU disjunktní část stromu Každý P i, je-li aktivní, provádí DFS ve své části použitím svého zásobníku Když se P i zastaví (má zásobník prázdný), žádá neprozkoumané alternativy ze zásobníku jiných CPU. P j = dárce, P i = příjemce. Stavový diagram obsluhuj čekající zprávy procesoru místní zásobník prázdný vyber dárce a požádej ho o práci vykonej určité množství práce odmítnutí požadavek práce přišla obsluhuj service čekající any pending zprávy message aktivní bez práce Dynamické vyvažování zátěže Simulované žíhání (Simulated annealing, SA) Každý procesor uchovává data v zásobníku = iterativní zlepšovací heuristika užívající posloupnost malých perturbací (vychýlení) Algoritmus hledání dárce - cyklické žádosti, každý procesor udržuje lokální čítač mod P, schopnost stoupat do kopce (hill-climbing) zvyšující cenu umožňuje index potenciálního dárce; každá žádost čítač inkrementuje opustit horší lokálně optimální řešení - globální cyklické žádosti (sdílený čítač, udržuje jej proces) vychýlení, které zlepšuje řešení je vždy akceptováno - náhodné výzvy vychýlení, které zhorší stávající řešení o E je akceptováno s pravděpodobností E / T e, kde T je řídící parametr analogický teplotě Je-li ve frontě k žádostí o práci a žádaný má (a bude mít) při žíhání fyzikálních systémů nadprahové množství práce, rozdělí zásobník postupným T je snižována po skocích: T půlením na k+ částí, část si nechá, další odešle. n + = αt n,.9 α.99 na každé teplotě je proveden předem definovaný počet vychýlení Algoritmus pro dělení zásobníku: -půlení u dna (velké podstromy) Na počátku je T vysoká a většina vychýlení směrem do kopce je -půlení všech neprohledaných stavů akceptována. Jak postupuje žíhání, T je snižována a vychylování Algoritmus pro ukončení paralelního DFS. do kopce bude akceptováno se stále menší pravděpodobností. Netriviální, zejména při dynamickém vyrovnávání zátěže. 6 Sekvenční algoritmus simulovaného žíhání Paralelní simulované žíhání {current_solution := initial_solution; Pracuje se paralelně na několika verzích s různými current_cost := evaluate(current_solution); T:= initial_temp} WHILE (T > T final ) generátory náhodných čísel. Po určité době se zjistí kdo má nejlepší řešení a s tím i:= FOR iteration (T) pokračují všichni dál. new_solution := move (current_solution) Nebo se z několika nejlepších řešení vytvoří nová new_cost := evaluate (new_solution) E := new_cost - current_cost generace genetickým algoritmem if (paralelní genetické simulované žíhání). ( E OR exp(- E /T) > random ( )) current_solution := new_solution current_cost := new_cost T := next_temp (T); 7 8

Genetické algoritmy (GA) Genetické algoritmy (GA) - pokrač. = stochastická metoda globálního prohledávání a optimalizace pracuje s populací potenciálních řešení založena na principech přírodního vývoje (přežití jedinců nejvíce fit) jedinci reprezentováni řetězci, chromozomy abeceda řetězců = geny (binární, int, real) vhodnost (fitness) i-tého jedince v populaci x je určována použitím cenové funkce c(x i ) fitness je základem pro výběr dvojic jedinců kteří se budou účastnit reprodukce - jsou vybíráni z populace s pravděpodobností úměrnou jejich relativní fitness fitness se odvodí z cenové funkce: fitness f = a*c(x i )+ b max cost = = a + b min cost = = a + b f = - * c(x), rel.fitness = f (x i ) / Σ f (x i ) [%] 9 Výběr ruletovým kolem: obvod i = = Σ f (xi) i. Generuj náhodné číslo v intervalu <, Σ f (x i ) >. Najdi je na obvodu, urči i. Vyber chromosom ( i ). Vyber chromosom ( j ). Vytvoř nový chromosom rekombinací i a j f (xi) Rekombinace: dva potomci vzniknou - jedním překřížením - vícebodovým překřížením Mutace - aplikována náhodně s nízkou pravděpodobností (. -.), změna jednoho bitu, výměna hodnot atp. Genetické algoritmy - pokrač. Genetické algoritmy - pokrač. -- sekvenční algoritmus t = initialize P(t) -- random gen. evaluate P(t) WHILE (NOT finished) t = t + select P(t) from P(t-) reproduce pairs in P(t) Vícebodové překřížení Multipoint crossover (m=) Inicializace GA: počáteční populace je generována náhodně Vložení nových jedinců do staré generace: nemají-li nová a stará generace stejnou velikost, potřebujeme strategii nahrazování (replacement strategy): - jedinci nejméně fit jsou nahrazováni deterministicky - nejstarší jedinci jsou rušeni - - jedinci nejvíc fit jsou vždy drženi v nové generaci (tzv. elitářská strategie (elitist strategy) Zakončení GA: - po daném počtu generací - jakmile je f(x) < ε Paralelní genetické algoritmy Difuzní genetické algoritmy (DT). Globální GA - jedna populace GA farmář: výběr dvojic ruletou a odesílání GA dělník: rekombinace, mutace, vyhodnocení ceny. Migrační GA - několik sub-populací, čas od času nejlepší jedinci migrují mezi sub-populacemi: WHILE NOT finished Selection Reproduction Evaluation PAR Send emigrants Receive immigrants. Difuzní GA, sousedské GA, buňkové GA Také známé jako sousedské GA, buňkové GA -- každý uzel ( i, j ) na D-toru: WHILE NOT finished Vyhodnoť PAR Pošli sebe sousedům Přijmi sousedy Vyber partnera Reprodukuj Použití: vyvíjející se hardware, http://www.cellmatrix.com

Příklad na GA: návrh zásobníkového filtru Zpracování D-signálu zásobníkovým filtrem Aplikace: potlačení šumu v to D nebo D signálech zásobníkové filtry jsou adaptivní a nelineární užívají tzv. pozitivní bool. funkce pbf (které mohou být vyjádřeny v CNF bez negovaných proměnných, např. f = x x + x x + x x (majorita) filtrační vlastnost pbf (vyhlazování obrazů) vychází z jejich monotonicity x y f(x) f(y) [ (x y) i ( x i = y i = ) ] S, počet pbf of n = 9 proměnných: pro filter D je : 6 < S <. Problém: najít pbf 9 proměnných s nejlepší filtrační schopností. Celkem je součinů 9 proměnných = genů v chromozomu 9 9 9 9 + + +... + = 9 9 = signál práh f (,,) = práh f (,,) = práh f (,,) = aritm.sum výstup Threshold Práh Práh Práh f f f Σ 6 Podrobnosti návrhu zásobníkového filtru Problém nejkratších cest mezi všemi páry uzlů Rozměr obrazu: 6 6 Okénko pro vyhodnocování fitness: nejdůležitější výřez pixelů Podrobnosti implementace GA: - chromosomů/ populaci - generací, rekombinace: jedno- a dvou-bodové překřížení - cenová funkce vrací údaj, jak blízko je restaurovaný obraz původnímu obrázku bez šumu: střední absolutní chyba MAE = I i, j) I ( i, j) n - vyhodnocení fitness =. s na SparcStation / ( hodina/k pixelů) - paralelní implementace: globální GA + lokální gradientové hledání po bitech (sekvence mutací); nejlepší chromosom se hledá lokálně každých generací (poprvé gen.) - COW: doba řešení pro P = 6 byla min, pro P = jedna hodina. image ( 7 Obecná formulace (orientovaný graf, plně propojený) 7 8 6 Graf G(V,E) E 8 6 7 hrana D 6 cesta 8 Nejkratší cesty z jednoho uzlu grafu Nejkratší cesty z jednoho uzlu grafu (Dijkstrův sekvenční algoritmus) Neorientovaný graf prohledávání do šířky, O(n ) 6 9 Neorientovaný graf Efektivní prohledávání, O(n ) min(, +) min(, +) Minimum v řádku: udává určený uzel (known). Je-li vzdálenost dosud neurčených uzlů od src přes poslední určený uzel kratší, je třeba ji v dalším kroku aktualizovat.

Nejkratší cesty z jednoho uzlu grafu (src) (paralelně) Deklarace a inicializace: int n, # počet uzlů grafu; indexy uzlů: (src),,,..., n- P, # počet procesorů, indexy,,..., P lastknown = ; # index uzlu, jehož min. vzdálenost od src # byla určena v předchozím cyklu bool known[:n-]; # true, když min. vzdálenost uzlu od src byla určena, jinak false; inicializován na [true, false, false,..., false] int minx[:p]; # indexy uzlů nejbližších k src nahlášené jednotlivými procesory int E[:n-,:n-]; #matice hran, váha hrany mezi uzly int D[:n-]; # hledaný vektor min. vzdáleností uzlů od src (), inicializován na E[,*] Nejkratší cesty v grafu - SV program (SPMD) process worker [id = to P] { npp = n/p; base = npp*(id-); for [i = to n-] {# pro každý uzel kromě src for [j=base to base+npp-] { # u svých neurčených uzlů if (Not known[j]) # aktualizuj min.vzdálenosti: D[j]= min(d[j],d[lastknown]+e[lastknown,j]); bariéra(id); ze svých zbývajících neurčených uzlů najdi stromovou redukcí index lokálního uzlu nejbližšího k src a ulož jej do minx[id]; bariéra(id); index uzlu minx[id] s globálně nejmenší D[id]do minx[]; bariéra(id); if (id = ) {# jen procesor provede aktualizaci lastknown=minx[]; known[lastknown]= true; } } } Největší známé prvočíslo Elektronický časopis HPCwire, 7.prosince Nejnovější prvočíslo lze zapsat ve tvaru ^,66,97 -, obsahuje,,96 číslic a jeho ruční zápis by trval kolem týdnů. (Na nalezení prvočísla s více než 7 číslic je vypsána odměna USD $ ). bylo objeveno Michaelem Cameronem, -letým účastníkem projektu Great Internet Mersenne Prime Search (Gimps)., dobrovolníků z řad domácích uživatelů, studentů, škol, univerzit a podniků z celého světa přispělo do Gimps; nalezení nového prvočísla spotřebovalo, roků strojového času během dvou let nepřetržité práce. Mersennova prvočísla jsou důležitá pro teorii čísel a mohou napomoci při vývoji neporazitelných kódů a šifrování zpráv. 6