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

Podobné dokumenty
Ú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ů

Základy umělé inteligence

Základy umělé inteligence

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

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

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

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

Prohledávání do šířky = algoritmus vlny

Binární soubory (datové, typované)

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

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

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

ALGORITMY A DATOVÉ STRUKTURY

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

Neinformované metody prohledávání stavového prostoru. Gerstner Laboratory Agent Technology Group, Czech Technical University in Prague

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

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

Dokumentace programu piskvorek

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

Obsah: Problém osmi dam

Modulární systém dalšího vzdělávání pedagogických pracovníků JmK. v přírodních vědách a informatice CZ.1.07/1.3.10/

Prohledávání do šířky a do hloubky. Jan Hnilica Počítačové modelování 15

Algoritmizace prostorových úloh

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

Aproximativní algoritmy UIN009 Efektivní algoritmy 1

IB111 Úvod do programování skrze Python

IB111 Úvod do programování skrze Python

A4B33ZUI Základy umělé inteligence

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

SEMESTRÁLNÍ ÚLOHY S PROGRAMY V PROLOGU (zadání úloh)

Úvod do teorie grafů

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

Návrh Designu: Radek Mařík

Prohledávání stavového prostoru

Modulární systém dalšího vzdělávání pedagogických pracovníků JmK. v přírodních vědách a informatice CZ.1.07/1.3.10/

Grafové algoritmy. Programovací techniky

bfs, dfs, fronta, zásobník

Grafové algoritmy. Programovací techniky

vhodná pro strojové dokazování (Prolog) metoda založená na vyvracení: dokazuje se nesplnitelnost formulí

11. Tabu prohledávání

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

Modulární systém dalšího vzdělávání pedagogických pracovníků JmK. v přírodních vědách a informatice CZ.1.07/1.3.10/

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

Časová a prostorová složitost algoritmů

Rekurze. IB111 Úvod do programování skrze Python

Varianty Monte Carlo Tree Search

Graf. Uzly Lokality, servery Osoby fyzické i právní Informatické objekty... atd. Hrany Cesty, propojení Vztahy Informatické závislosti... atd.

Anotace. Středník II!! programování her.

V ypoˇ cetn ı sloˇ zitost v teorii graf u Martin Doucha

Optimalizace & soft omezení: algoritmy

Umělá inteligence a rozpoznávání

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

Dynamické programování

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

PROBLÉM OSMI DAM II. Problém osmi dam. Obsah:

Dynamické programování

Složitost her. Herní algoritmy. Otakar Trunda

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Dynamické programování

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

Datové struktury 2: Rozptylovací tabulky

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

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

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

07 Základní pojmy teorie grafů

Neinformované metody prohledávání stavového prostoru Michal Pěchouček, Milan Rollo. Department of Cybernetics Czech Technical University in Prague

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.

7. Heuristické metody

Vraťme se k základům: DFS = Depth First Search

Rekurzivní algoritmy

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

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

Zadání soutěžních úloh

Neuronové časové řady (ANN-TS)

Algoritmy pro hraní tahových her

Zadání semestrálního projektu Algoritmy I. zimní semestr 2018/2019

Cílem kapitoly je seznámit studenta se seznamem a stromem. Jejich konstrukci, užití a základní vlastnosti.

Vysvětlete funkci a popište parametry jednotlivých komponent počítače a periferních zařízení.

Hledání správné cesty

Stromy, haldy, prioritní fronty

Algoritmy a datové struktury

Výroková a predikátová logika - II

2. Mřížky / Záplavové vyplňování

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

10. Složitost a výkon

Dynamické datové struktury I.

SEMESTRÁLNÍ ÚLOHY S PROGRAMY V PROLOGU (zadání úloh)

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

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

Cvičení Programování I. Stručné poznámky ke cvičení ze

12. Globální metody MI-PAA

Dynamické programování

Hranová konzistence. Arc consistency AC. Nejprve se zabýváme binárními CSP. podmínka odpovídá hraně v grafu podmínek

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

Rekurze. Jan Hnilica Počítačové modelování 12

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

Metoda hrubé sily, backtracking a branch-and-bound

Hodnocení soutěžních úloh

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

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

Transkript:

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

Návrhu algoritmů vybrané metody: hladové algoritmy dynamické programování rekurze hrubá síla tato přednáška: především ilustrativní ukázky na hrách, log. úlohách,...

Rozměňování peněz vstup: částka X výstup: kolik nejméně mincí (bankovek) potřebujeme k vyplacení částky varianty: 1 klasické hodnoty peněz: 1, 2, 5, 10, 20, 50, 100,... 2 libovolné (zadané) hodnoty

Rozměňování peněz I hladový algoritmus: použij vždy nejvyšší minci, která je menší než cílová částka funguje pro klasické hodnoty nefunguje pro obecný případ najděte konkrétní příklad

Rozměňování peněz II dynamické programování vyplňování tabulky, budujeme řešení od spodu pro hodnoty mincí 1, 3, 4 částka 1 2 3 4 5 6 7 8 9 10 počet mincí

Rozměňování peněz II dynamické programování vyplňování tabulky, budujeme řešení od spodu pro hodnoty mincí 1, 3, 4 částka 1 2 3 4 5 6 7 8 9 10 počet mincí 1 2 1 1 2 2 2 2 3 3

Hra Nim máme n sirek (např. 20) povolený tah: odebrat 1, 2 nebo 3 sirky hráči se střídají kdo nemůže táhnout (nejsou žádné sirky), prohrává jaká je vítězná strategie? který hráč si může zaručit vítězství?

Hra Nim II varianty: tahy: 1, 3 nebo 4 sirky tahy: 1, 2 nebo 3 sirky; ale zakázáno odebrat tolik, kolik sebral oponent v posledním tahu najděte vítěznou strategii pomocí dynamického programování

Nejdelší rostoucí úsek, podposloupnost Nejdelší rostoucí úsek vstup: posloupnost čísel výstup: nejdelší rostoucí úsek (po sobě jdoucí čísla) Nejdelší rostoucí podposloupnost vstup: posloupnost čísel výstup: nejdelší rostoucí podposloupnost (čísla nemusí jít po sobě)

Nejdelší rostoucí úsek, podposloupnost příklad: 4, 1, 8, 6, 5, 11, 2, 4, 9, 12, 5, 13, 7, 8, 12, 10, 11

Nejdelší rostoucí úsek, podposloupnost příklad: 4, 1, 8, 6, 5, 11, 2, 4, 9, 12, 5, 13, 7, 8, 12, 10, 11 nejdelší rostoucí úsek: 2, 4, 9, 12 nejdelší rostoucí podposloupnost: 1, 2, 4, 5, 7, 8, 10, 11

Nejdelší rostoucí úsek řešení jeden průchod pole, lineární složitost O(n) pamatuji si aktuální délku rostoucí podposloupnosti + dosavadní maximum

Nejdelší rostoucí podposloupnost naivně vyzkoušet všechny možné podposloupnosti exponenciální časová složitost O(2 n ) dynamické programování pro každou pozici si pamatuji délku nejdelší podposloupnosti končící v tom místě přímočaře: kvadratická složitost O(n 2 ) efektivní implementace O(n log n)

Nejdelší společný podřetězec, podposloupnost vstup: dva řetězce s 1, s 2 výstup: nejdelší společný úsek/podposloupnost (rozdíl podobně jako u předchozího) příklad: BDCABA ABCBDAB další podobný problém: editační vzdálenost (Levenshtein distance)

Nejdelší společná podposloupnost

Nejdelší společná podposloupnost dynamické programování

Aplikace společné podposloupnosti, editační vzdálenost variace těchto problémů se vyskytují např: analýzy DNA sekvencí detekce (opravování) překlepů

Hrubá síla Vyzkoušej všechny možnosti. kdy použít: problém relativně malý, možností málo i když by to šlo chytřeji, nemá cenu tomu věnovat úsilí (např. Sudoku) nic lepšího prostě neznáme ( NP-úplné problémy )

Heuristiky heuristika = přístup, který většinou pomůže, ale nemusí fungovat vždy dobrá heuristika může řádově zlepšit hrubou sílu

Prohledávání stavového prostoru připomenutí: stavový prostor = graf použití např.: Good Old-Fashioned Artificial Intelligence (GOFAI) verifikace protokolů

Logická úloha: Misionáři a kanibalové 3 misionáři, 3 kanibalové řeka, 1 loďka (max 2 lidé) víc kanibalů jak misionářů na jednom místě problém

Vlk, koza, zelí klasická úloha typu převážení přes řeku zakreslit stavový prostor co úloha koza a 2 zelí?

Vlk, koza, zelí klasická úloha typu převážení přes řeku zakreslit stavový prostor co úloha koza a 2 zelí? izomorfní úlohy

Vlk, koza, zelí

Verifikace protokolů

Počet stavů zmíněné úlohy mají jen pár stavů lze nakreslit celý stavový prostor i ručně praktické problémy mnoho stavů nelze vygenerovat ani počítačem heuristiky

Sokoban

Sokoban

Základní algoritmus stavový prostor = graf prohledávání grafu pomocí klasických prohledávání: BFS, DFS trochu sofistikovanější prohledávání: IDA iterative deepening obousměrné hledání

Praktické poznámky reprezentace co je jeden stav (viz Sokoban) co potřebuji umět: generování následníků stavu ukládání stavů, test na přítomnost stavu (datový typ množina)

A* search úprava prohledávání do šířky (BFS) BFS postupuje rovnoměrně (povodeň) A* upřednostňuje nadějnější stavy heuristické ohodnocení stavů

Heuristika příklad Sokoban

Heuristika příklad Sokoban Vzdálenosti od cílových políček: Ohodnocení: 16 = 1+4+5+6 Ohodnocení: 1 = 0+0+0+1 Ohodnocení: 11 = 0+1+4+6

Heuristika příklad Sokoban příklady: napočítat staticky vzdálenosti jednotlivých políček k cílovým polím, sečíst hledat minimální párování bedna cílové pole brát v potaz polohu beden trade-offÿ přesnost heuristiky a časová náročnost jejího výpočtu

Ořezávání neperspektivních stavů dokážu rozhodnout, že ze stavu se nedá dostat do cíle netřeba z tohoto stavu dál prohledávat příklad Sokoban: bedna v rohu bedna u zdi, od které se nemůže dostat

Ořezávání neperspektivních stavů

Problém splnění podmínek Constraint satisfaction problem (CSP) množina proměnných domény hodnot podmínky

Sudoku proměnné: a, b, c, d,... domény hodnot: {1, 2, 3, 4} podmínky (pro j): j b, j h, j i, j k, j 3, j 1

Backtracking systematické hledání řešení metodou pokus-omyl začít s prázným přiřazením hodnot proměnným postupně přiřazujeme proměnným hodnoty (systematicky) porušení podmínek vrátit se zpět (backtrack) a zkusit jinou hodnotu podmínky kontrolujeme průběžně prohledávání do hloubky (DFS)

Backtracking a Sudoku

Heuristiky forward checking, back jumping pořadí výběru proměnných

Příklad: dámy na šachovnici rozmístit n dam na šachovnici n n nesmí se vzájemně ohrožovat klasické zadání n = 8 zkuste vyřešit pro n = 4 zakreslete strom prohledání při bactrackingu

Čtyři dámy

Propagace podmínek pokus o inteligentní řešení množina kandidátů pro každou proměnnou odvozování nutných hodnot efektivnější, ale nezaručuje řešení praxe: kombinace propagace podmínek a backtrackingu

Propagace podmínek

Další problémy CSP SAT splnitelnost logických formulí obarvení grafu rozvrhování

Shrnutí hladový algoritmus dynamické programování vyplňování tabulky hrubá síla prohledávání stavového prostoru, backtracking heuristiky ohodnocení stavů, ořezávání neperspektivních,...