Logické programování Prezentace číslo 8.

Slides:



Advertisements
Podobné prezentace
Grafové algoritmy.
Advertisements

OZD: Hašování RNDr. Michal Žemlička.
Olomouc, únor 2012.
Stavový prostor. • Existují úlohy, pro které není k dispozici univerzální algoritmus řešení • různé hry • problém batohu, problém obchodního cestujícího.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
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/ Teorie grafů – zadání řešení.
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/ Prezentace zadání a řešení Teorie.
VY_32_INOVACE_In 6.,7.17 PowerPoint – snímky
VY_32_INOVACE_55_MS_Word_IV. Autor : Trýzna Stanislav Školní rok : 2011/2012 Určeno pro : šestý ročník Předmět: informatika Téma : základní orientace.
Databázové systémy Přednáška č. 7 Uživatelské rozhraní.
Bezpečnost na lyžích.
Algoritmizace a programování Třídící algoritmy - 12
VY_32_INOVACE_Čj-Ml 6.,7.04 Anotace: Prezentace obsahuje stručnou definici zájmen a jejich dělení. Žáci si hravou formou procvičí pravidla pro psaní zájmena.
Formátováním odstavce se rozumí změna jeho vlastností jako velikost, barva, typ, podtržení atd. Pokud chceme změnit některou z vlastností již napsaného.
Univerzita Karlova Matematicko-fyzikální fakulta Lukáš Jirovský Teorie grafů – prezentace Bc. Práce Vedoucí práce: RNDr. Pavla Pavlíková, Ph.D.
VY_III/2_INOVACE_38_Malování-nástroje2 Malování – nástroje 2 Miroslav Kaňok.
Název a adresa školy: Střední odborné učiliště stavební, Opava, příspěvková organizace, Boženy Němcové 22/2309, Opava Název operačního programu:OP.
Mgr. Martin Krajíc matematika 3.ročník analytická geometrie
doc. RNDr. Zdeněk Botek, CSc.
Vedení tepla Viktor Sláma SI – I 23. Zadání Vhodné uložení vyhořelého jaderného paliva je úkol pro současnou generaci. Zaměřme se na jednu nepatrnou část.
Matematické metody optimalizace. Příkady grafů Železniční stanice, tratě mezi nimi Města, silnice Křižovatky, ulice Uzly kanalizace, potrubí Místnosti,
Vypracovala: Mgr. Hana Toflová Dne: ICT2/1/3/6.
Procedurální (klasické) programování Popisuje algoritmus – postup, jak vyřešit úlohu.
WORD 2010 Karta Domů, skupina Písmo. Název a adresa školy: Střední odborné učiliště stavební, Opava, příspěvková organizace, Boženy Němcové 22/2309, 746.
Křivky, tvary, výplně VY_32_INOVACE_Mul4a0201Mgr. Jiří Mlnařík.
Moje práva – tvoje práva Petr Machala. tam, kde začíná svoboda druhého vzájemné respektování práv je prospěšné pro obě strany, jinak… Víte, kde končí.
ADRESÁŘ (SLOŽKA). ADRESÁŘ - SLOŽKA „pořádek“ na disku  ukládáni do složek „pořádek“ na disku  ukládáni do složek soubory, které k sobě logicky patří.
GIMP Využití nástroje Cesty Michal Zerzáň
Otevřený systém Střední odborná škola Otrokovice
Řez, návrat. Predikát řez (!) Vždy splněn Není povolen návrat přes něj.
ANOPRESS Databáze TAM TAM (Plné texty českých novin a vybraných časopisů)
Rekurze. volání podprogramu opětovně v jeho těle –v době, kdy předchozí volání ještě nebylo ukončeno Druhy rekurze přímá rekurze nepřímá rekurze.
KURZ ZÁKLADY PRÁCE S POČÍTAČEM 1 Kontakty Autor: Mgr. Aleš Kozák.
Březnová všehochuť Zadání práce pro 1.březnovou hodinu.
Nápověda Jak se jezdí po silnicích v Anglii. Jede na levou stranu protože nejsou vidět dveře.
Kvalita života Chybí zázemí pro setkávání lidí Chybí setkávání a společně trávený čas lidí, jako prostředek komunikace, posilování sociálních vazeb atd.
Matematika 8.ročník Jak vyřeším jednoduchou lineární rovnici.
Uvedení autoři, není-li uvedeno jinak, jsou autory tohoto výukového materiálu a všech jeho částí. Tento projekt je spolufinancován ESF a státním rozpočtem.
Uvedení autoři, není-li uvedeno jinak, jsou autory tohoto výukového materiálu a všech jeho částí. Tento projekt je spolufinancován ESF a státním rozpočtem.
Průřezové úlohy Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Mgr. Milan Pobořil, Ph.D.. Slezské gymnázium, Opava, příspěvková organizace.
SLABIKÁŘ DĚTSKÝCH PRÁV VY_32_INOVACE_01_10
Rekurze.
Překladače 5. Syntaktická analýza
Mikropočítač Soubor instrukcí
Autotest.
  AUTOR: Mgr. Jaromíra Stropková NÁZEV: VY_32_INOVACE_04_Dopravní značky
Výukový materiál zpracován v rámci projektu
Odstavec a jeho formát Autor: Mgr. Jiří Maršík
Boží vůle IV. – Vstup a vytrvání v Boží vůli
Rekurze.
Kurz algoritmizace a programování v jazyce C
Operace s vektory Znázornění vektoru koncový bod vektoru
AUTOR: Jiří Toman NÁZEV: VY_32_INOVACE_06_02 Objem
Název školy: ZŠ a MŠ Unkovice, příspěvková organizace
Cesta do školy NÁZEV ŠKOLY: ZŠ a MŠ Osoblaha
NÁZEV ŠKOLY: ZŠ Pardubice - Spořilov
Karta Domů, karta Rozložení stránky
Optimalizace SQL dotazů
Malování - nástroje grafického editoru
Logické programování Prezentace číslo 7.
WELLNESS POBYTY LÁZEŇSKÉ POBYTY. WELLNESS POBYT  Vhodný jako dárek pro: rodiče milence partnery manžele novomanžele důchodce a další kdo potřebuje trochu.
Logické programování Prezentace číslo 6.
DENNÍ BRIEFING DEN 6 ( ).
Logické programování Prezentace číslo 9.
DENNÍ BRIEFING DEN 9 ( ).
Prohledávání stavového prostoru
Prohledávání grafů.
Vánoční přání pro radost
Algoritmizace a datové struktury (14ASD)
Transkript prezentace:

Logické programování Prezentace číslo 8

Stavový prostor Program k procházení bludiště je obecnější Můžeme hledat cestu nejen v „mapě”, která je dána, ale i ve stavovém prostoru, který je popsán pravidly, podle nichž lze přecházet mezi jednotlivými stavy. % hledej(Cil,[Seznam-proslych-mist/stavu]) hledej(S,[S|T]) :- write([S|T]), nl, fail. hledej(S,[X|T]) :- p(X,Y), not(clen(Y,[X|T])), hledej(S,[Y,X|T]).

Stavový prostor Přelévání vody Máme k dispozici nádoby o velikosti 5 a 3 litry (bez dalšího dělení), ale potřebujeme odměřit 4 litry vody Možné akce: naplň nádobu vyprázdni nádobu přelij jednu do druhé Reprezentace pomocí stavů: s(Velka,Mala) % s(0,0). - obě nádoby jsou prázdné % s(2,3). - ve velké jsou 2 litry, v malé 3 litry

Stavový prostor Přelévání vody p(s(V,M), s(5,M)). % napln velkou % prechod(Aktualni-stav, Novy-stav) p(s(V,M), s(5,M)). % napln velkou p(s(V,M), s(V,3)). % napln malou p(s(V,M), s(0,M)). % vyprazdni velkou p(s(V,M), s(V,0)). % vyprazdni malou p(s(V,M), s(V1,M1)):- % prelij velkou do male Pom is V+M, min(3,Pom,M1), V1 is Pom-M1. p(s(V,M), s(V1,M1)):- % prelij malou do velke Pom is V+M, min(5,Pom,V1), M1 is Pom-V1.

Stavový prostor prelevani:- write('Cilove mnostvi vody:'), nl, write('Velka:'), read(V), write('Mala:'), read(M), hledej(s(V,M),[s(0,0)]). % hledej(Cil,[Seznam-proslych-stavu]) hledej(S,[S|T]) :- write([S|T]), nl, fail. hledej(S,[X|T]) :- p(X,Y), not(clen(Y,[X|T])), hledej(S,[Y,X|T]). clen(H,[H|_]). clen(X,[_|T]) :- clen(X,T). min(A,B,A):-A<B, !. min(A,B,B).

Přelévání vody ?- prelevani. 16 řešení Cilove mnostvi vody: Velka:|: 4. Mala:|: 0. [s(4,0),s(1,3),s(1,0),s(0,1),s(5,1),s(3,3),s(3,0),s(0,3),s(5,3), s(5,0),s(0,0)] [s(4,0),s(1,3),s(1,0),s(0,1),s(5,1),s(3,3),s(3,0),s(0,3),s(5,3), s(2,3),s(5,0),s(0,0)] [s(4,0),s(1,3),s(1,0),s(0,1),s(5,1),s(3,3),s(3,0),s(0,3),s(2,3), s(5,0),s(0,0)] [s(4,0),s(1,3),s(1,0),s(0,1),s(5,1),s(3,3),s(3,0),s(0,3),s(5,3), s(5,2),s(0,2),s(2,0),s(2,3),s(5,0),s(0,0)] [s(4,0),s(1,3),s(1,0),s(0,1),s(5,1),s(3,3),s(3,0),s(0,3),s(5,3), s(4,3),s(5,2),s(0,2),s(2,0),s(2,3),s(5,0),s(0,0)] [s(4,0),s(1,3),s(1,0),s(0,1),s(5,1),s(3,3),s(3,0),s(0,3),s(4,3), s(5,2),s(0,2),s(2,0),s(2,3),s(5,0),s(0,0)] [s(4,0),s(4,3),s(5,2),s(0,2),s(2,0),s(2,3),s(5,0),s(0,0)] .... 16 řešení

Stavový prostor Přelévání vody – lepší pravidla % prechod(Aktualni-stav, Novy-stav) p(s(V,M), s(5,M)):-V<5, M<3. % nepln plnou a obe naraz p(s(V,M), s(V,3)):-M<3, V<5. % nepln plnou a obe naraz p(s(V,M), s(0,M)):-V>0. % je co vylevat? p(s(V,M), s(V,0)):-M>0. % je co vylevat? p(s(V,M), s(V1,M1)):- V>0,M<3, % je co a kam prelevat? Pom is V+M, min(3,Pom,M1), V1 is Pom-M1. p(s(V,M), s(V1,M1)):- M>0,V<5, % je co a kam prelevat? Pom is V+M, min(5,Pom,V1), M1 is Pom-V1.

Přelévání vody ?- prelevani. % lepsi pravidla 8 řešení Cilove mnostvi vody: Velka:|: 4. Mala:|: 0. [s(4,0),s(1,3),s(1,0),s(0,1),s(5,1),s(3,3),s(3,0),s(0,3),s(5,3), s(5,0),s(0,0)] [s(4,0),s(1,3),s(1,0),s(0,1),s(5,1),s(3,3),s(3,0),s(0,3),s(4,3), s(5,2),s(0,2),s(2,0),s(2,3),s(5,0),s(0,0)] [s(4,0),s(4,3),s(5,2),s(0,2),s(2,0),s(2,3),s(5,0),s(0,0)] [s(4,0),s(1,3),s(1,0),s(0,1),s(5,1),s(3,3),s(3,0),s(0,3),s(0,2), s(2,0),s(2,3),s(5,0),s(0,0)] [s(4,0),s(4,3),s(5,2),s(0,2),s(2,0),s(2,3),s(5,0),s(3,0),s(0,3), s(0,0)] [s(4,0),s(4,3),s(5,2),s(0,2),s(2,0),s(2,3),s(5,0),s(1,0),s(0,1), s(5,1),s(3,3),s(3,0),s(0,3),s(0,0)] [s(4,0),s(1,3),s(1,0),s(0,1),s(5,1),s(3,3),s(3,0),s(0,3),s(0,0)] [s(4,0),s(4,3),s(5,2),s(0,2),s(2,0),s(2,3),s(5,0),s(5,1),s(3,3), s(3,0),s(0,3),s(0,0)] no 8 řešení

Stavový prostor Převozník, koza, vlk a zelí % reprezentace stavu % stav(Prevoznik&lodka,Koza,Vlk,Zeli) % lodka musi byt tam, kde je prevoznik % s(l,l,l,l). - pocatecni stav - vsichni vlevo % s(p,p,p,p). - koncovy stav - vsichni vpravo % bezpecne stavy % stav je bezpecny, pokud prevoznik hlida kozu bezpecny(s(X,X,_,_)) :- !. % stav je bezpecny, pokud prevoznik hlida vlka a zeli bezpecny(s(X,_,X,X)).

Převozník, koza, vlk a zelí % prechod(Aktualni-stav, Novy-stav) % prevoznik jede sam p(s(P,K,V,Z),s(P1,K,V,Z)):-opacny_breh(P,P1). % prevoznik a koza p(s(P,P,V,Z),s(P1,P1,V,Z)):-opacny_breh(P,P1). % prevoznik a vlk p(s(P,K,P,Z),s(P1,K,P1,Z)):-opacny_breh(P,P1). % prevoznik a zeli p(s(P,K,V,P),s(P1,K,V,P1)):-opacny_breh(P,P1). opacny_breh(l,p). opacny_breh(p,l).

Převozník, koza, vlk a zelí % hledej(Poc_stav, [Plan]) hledej(X,[X|T]):-vypis([X|T]),nl,fail. % mam reseni hledej(X,[S|T]):-p(S,S1),    bezpecny(S1),    not(clen(S1,[S|T])),    hledej(X,[S1,S|T]). clen(X,[X|_]). clen(X,[_|T]) :- clen(X,T). vypis([]). vypis([H|T]) :- write(H), nl, vypis(T).

Převozník, koza, vlk a zelí ?- hledej(s(l,l,l,l), [s(p,p,p,p)]). s(l,l,l,l) s(p,p,l,l) s(l,p,l,l) s(p,p,l,p) s(l,l,l,p) s(p,l,p,p) s(l,l,p,p) s(p,p,p,p) s(p,p,p,l) s(l,l,p,l) no P K V Z V Z P K P V Z K V P K Z P K V Z K P V Z P K V Z P K V Z

Stavový prostor N misionářů a N kanibalů Napište program, který bude řešit analogickou úlohu pro N misionářů a N kanibalů (N>=3) Do loďky se vejdou maximálně 2 osoby Vždy musí jet alespoň jedna osoba Počet kanibalů nesmí nikdy převýšit počet misionářů Pozor na vhodnou volbu reprezentace

Rozděl a panuj Hanojské věže hanoi:-write('Zadej pocet disku:'), read(N), N >= 1, presun(N,leva,prava,prostredka). % presun(Odkud,Kam,S-pomoci) presun(0,_,_,_):-!. presun(N,A,C,B):-N1 is N-1, presun(N1,A,B,C), write('presun disk z '), write(A), write(' do '), write(C), nl, presun(N1,B,C,A).

Rozděl a panuj Hanojské věže ?- hanoi. Zadej pocet disku:|: 3. presun disk z leva do prava presun disk z leva do prostredka presun disk z prava do prostredka presun disk z prostredka do leva presun disk z prostredka do prava yes