Logické programování Úvodní přednáška.

Slides:



Advertisements
Podobné prezentace
Deduktivní soustava výrokové logiky
Advertisements

J. Pokorný 1 DOTAZOVACÍ JAZYKY slajdy přednášce DBI006 J. Pokorný MFF UK
Pro začátek něco lehčího
Výukový materiál zpracovaný v rámci projektu Registrační číslo projektu: CZ.1.07/1.5.00/ Šablona:* III/2Sada:* I. Ověření ve výuce: oktávaDatum:
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Dualita úloh lineárního programování a analýza citlivosti
Vlastní skript může být umístěn: v hlavičce stránky v těle stránky
Dynamické dokumenty na straně klienta Informatika pro ekonomy II.
Vizuální Systém Fotbal
Cvičení Úloha 1: Rozhodněte zda posloupnost znaků v poli délky n tvoří palindrom (slovo, které je stejné při čtení zprava i zleva). Př.: [a,l,e,l,a] [a,n,n,a]
Téma 3 Metody řešení stěn, metoda sítí.
Základy informatiky Ing. Roman Danel, Ph.D.
Programovací jazyk Prolog
Teorie zpracování dat Ukázková písemka. Kapitola 4 Je dána tabulka Zam (login, jmeno, plat, funkce), implementovaná je v SŘBD používajícím indexové soubory.
Databázové systémy 1 Cvičení č. 4 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy 1 Cvičení č. 3 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Zpracování seminárních a kvalifikačních prací
Přednáška 12 Diferenciální rovnice
Programování v C++ Cvičení.
AZ kvíz Lomené výrazy Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Šárka Macháňová. Dostupné z Metodického portálu
Prvočísla a čísla složená
Základní číselné množiny
Algoritmizace a programování
Tomáš Doseděl, Jak psát práci SOČ Tomáš Doseděl,
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
Fakulta životního prostředí Katedra informatiky a geoinformatiky
Posloupnosti, řady Posloupnost je každá funkce daná nějakým předpisem, jejímž definičním oborem je množina všech přirozených čísel n=1,2,3,… Zapisujeme.
Cvičení I. Ing. Martina Hedvičáková, Ph.D. 16. –
DalšíPředchozíTÉMA: M. K a d l e c o v á M. K a d l e c o v á.
Jak psát práci SOČ Tomáš Doseděl,
A1PRG - Programování – Seminář Ing. Michal Operátory (2. část) 4 Verze
LOGICKÉ ŘÍZENÍ GEORGE BOOLE
Seminář 2. Nabídka a poptávka
Formální jazyky a gramatiky
JUI - 9. přednáška Ř ez, negace, práce s databází RNDr. Jiří Dvořák, CSc.
Mocniny, odmocniny, úpravy algebraických výrazů
Výukový materiál zpracován v rámci projektu EU peníze školám Registrační číslo projektu: CZ.1.07/1.5.00/ Šablona: III/2 č. materiálu: VY_32_INOVACE_PEK248.
Dostupné z Metodického portálu ISSN: , financovaného z ESF a státního rozpočtu ČR. Provozováno Výzkumným ústavem pedagogickým v Praze.
Sémantická analýza Jakub Yaghob
Jemný úvod do MATLABu © Leonard Walletzký, ESF MU, 2000.
Magnetické vlastnosti látek
Databázové systémy I Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Databázové systémy II Přednáška č. X Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky
Predikátová logika.
JUI - 6. přednáška Úvod do jazyka Prolog, struktura programu, datové objekty, unifikace RNDr. Jiří Dvořák, CSc.
Vzorec v buňce v tabulkovém procesoru Vzorec v buňce v tabulkovém procesoru Microsoft ® Excel Zpracovala : Dana Lišková 4.B
Výroková logika.
Tento výukový materiál vznikl v rámci Operačního programu Vzdělávání pro konkurenceschopnost 1. KŠPA Kladno, s. r. o., Holandská 2531, Kladno,
Logické programování Přednáška číslo 2. 2 Programování v Prologu Programování v PROLOGu spočívá v – deklarování určitých faktů o objektech a relacích.
Databázové modelování
Dostupné z Metodického portálu ISSN: , financovaného z ESF a státního rozpočtu ČR. Provozováno Výzkumným ústavem pedagogickým v Praze.
2 Petr Žitný znalosti.vema.cz 3 Báze znalostí Nová služba zákazníkům ▸Báze naplněná informacemi, ke které mají uživatelé přímý přístup Základní cíl ▸Poskytovat.
Karnaughova mapa.
Úvod do logiky (presentace 2) Naivní teorie množin, relace a funkce
Procedurální (klasické) programování Popisuje algoritmus – postup, jak vyřešit úlohu.
Jazyky pro umělou inteligenci RNDr. Jiří Dvořák, CSc.
Predikátová logika1 Predikátová logika 1. řádu Teď „logika naostro“ !
Úvod do databází zkrácená verze.
● Databaze je soubor dat,slouží pro popis reálného světa(např.evidence čkolní knihovny..) ● Relační databaze je databáze založená na relačním modelu.
KURZ ALGORITMIZACE A PROGRAMOVÁNÍ V JAZYCE C Lekce č. 2: Základní pojmy Bc. Radek Libovický.
Funkce. Funkce - definice Funkce je zobrazení, které každému číslu z podmnožiny množiny reálných čísel R přiřazuje právě jedno reálné číslo. Funkci značíme.
NÁZEV ŠKOLY:SOŠ Net Office, spol. s r.o. Orlová Lutyně
Výukový materiál zpracován v rámci projektu
Definiční obor a obor hodnot
C# konzole – Podíl dvou čísel, podmínka IF
Kurz algoritmizace a programování v jazyce C
PROLOG strategie vyhodnocení dotazu
PROLOG PROgramování v LOGice
Predikátová logika.
Logické programování Úvodní přednáška.
Transkript prezentace:

Logické programování Úvodní přednáška

Průběh výuky Přednášky Cvičení Přednášky/cvičení - 2/2 prof. RNDr. Josef Hynek, MBA, Ph.D. Cvičení Doc. RNDr. Kamila Olševičová, Ph.D. Ing. Barbora Tesařová, Ph.D.

Ukončení předmětu Zápočet Zkouška - písemná a ústní, 4 úlohy - dva písemné testy (polovina a konec semestru) - podmínky budou specifikovány na cvičeních Zkouška - písemná a ústní, 4 úlohy Vzorové zadání Zadaný seznam reálných čísel S rozdělte na dvě části (libovolným způsobem) tak, aby součet čísel v obou částech byl stejný (např. pro seznam S=[1,3,2,4] bude výsledek S1 = [1,4], S2 = [3,2] ). Napište program, který navrhne obarvení zadané mapy čtyřmi barvami (viz. skripta str. 199). Logický problém (viz. přednáška nebo skripta str. 213). Napište program, který rozhodne, zda zadané číslo N je prvočíslo.

Literatura Hynek,J., Mikulecký,P.: Logické programování a Prolog. (1995, 2003) Kolář,J.: Jazyky pro umělou inteligenci. (1998) Jirků,P.: Programování v jazyku Prolog. (1991) Polák,J.: Prolog. (1995) Clocksin,W.F., Mellish, C.S.: Programming in Prolog. (2003) Bratko,I.: Prolog – programming for AI. (2000) Censki, A.: Prolog Techniques. (http://bookboon.com)

Další zdroje kurz Logické programování I. http://oliva.uhk.cz Nemáte-li do kurzu přístup, zašlete svůj login na adresu kamila.olsevicova@uhk.cz Programování v Prologu (Filip Rubáček) http://iris.uhk.cz/logpro/ Kryl, R.: Úvod do programovacího jazyka Prolog http://ksvi.mff.cuni.cz/~kryl/prolog.pdf Learn Prolog Now! http://www.coli.uni-sb.de/~kris/learn-prolog-now/ Amzi! Prolog, Arity Prolog, B-Prolog, Strawberry Prolog, SWI – Prolog, Visual Prolog … lze najít a stáhnout z webu

Úvod Logické programování = disciplína matematické informatiky Prolog = PROgramování v LOGice jazyk pro programování symbolických výpočtů, založený na matematické logice vhodný k řešení problémů z oblasti umělé inteligence

Pohled do historie 1972 - 1. verze, A.Colmerauer na univerzitě v Marseilles 1974 - R.Kowalski vytvořil teoretický model jazyka, na který navázaly další implementace 1977 - nejúspěšnější verze D.H.D.Warrena, popsaná v učebnici W.F.Clocksina a C.S.Mellishe "Programming in Prolog" 1981 - v Japonsku byl Prolog zvolen za základní jazyk centrální jednotky počítače páté generace

Prolog je jazyk... neprocedurální - postup řešení problému není to, co by nás nejvíc zajímalo deklarativní - při psaní programu deklarujeme fakta a pravidla, jimiž popíšeme vlastnosti a vztahy mezi objekty konverzační - uživatel klade dotazy, na které mu Prolog odpovídá interaktivní - pokud uživatel dotazy neklade, Prolog nepracuje a čeká

Formální skutečnosti (fakta) Příklad Textový editor kral('Premysl Otakar I.',1197,1230). kral('Vaclav I.',1230,1253). kral('Premysl Otakar II.',1253,1278). predchudce(Prvni, Druhy):-kral(Prvni,_,Do),kral(Druhy,Do,_). naslednik(A,B):-predchudce(B,A). ?- kral('Vaclav I.',1230,1253). yes ?- kral(X, 1253,Rok). X = 'Premysl Otakar II.‚, Rok = 1278 Formální skutečnosti (fakta) Relace (pravidla) Konzole Konverzace s Prologem

LPA Prolog

LPA Prolog

PROLOG snadno a rychle

Programování v Prologu Programování v PROLOGu spočívá v deklarování určitých faktů o objektech a relacích president(obama,usa). definování pravidel vztahujících se k objektům a relacím vip(Person):-president(Person,Country). kladení otázek na objekty a relace ?-president(Who,czech_republic).

Deklarování faktů Tom má rád Janu. Jana má ráda Toma. Jednodušší gramatika AJ: Tom likes Jane. Jane likes Tom. Přepis v PROLOGu: likes(tom, jane). likes(jane, tom). Jména relací (predikáty) i objektů (argumenty) začínají malým písmenem Každý predikát má pevně danou aritu (počet argumentů) – predikát likes má aritu 2

Deklarování faktů Argumenty jsou uvedeny v závorce a na konci sdělení je tečka Pořadí argumentů má obvykle svůj význam a je třeba jej zachovávat likes(tom, jane). často neznamená likes(jane, tom). Jména relací mohou být libovolná, ale lépe je používat s rozmyslem a udržet si přehled likes(jane,tom). jistě může být totéž co li34(t6, j_1). Lze deklarovat i zjevné nepravdy king(obama, china).

Deklarování faktů Další příklady girl(jane). father(george, lisa). parents(george, mary, lisa). friends(angel, mary, lisa, laura, barbara). president(`Putin`,`Russia`). president(putin, russia). % POZOR- jiné objekty!!! king(carlos, spain). /* soubor deklarovaných faktů a pravidel se v PROLOGu nazývá databáze */

Kladení otázek ?-father(george, lisa). Položíme-li nějaký dotaz, PROLOG hledá odpověď v databázi, kterou jsme mu předtím poskytli Databáze je prohledávána shora dolů s cílem nalézt fakta a pravidla, která s dotazem souvisí Mluvíme o tzv. unifikaci (matching) Dvě fakta lze unifikovat, jestliže jejich predikáty jsou stejné, mají stejnou aritu a korespondující argumenty jsou také stejné Pokud PROLOG nalezne skutečnost, kterou lze unifikovat se zadaným dotazem, odpoví YES, jinak odpoví NO

Kladení otázek Předpokládejme, že máme zadanou následující databázi: likes(tom, mary). likes(tom, jane). likes(mary, money). likes(tom, food). Nyní můžeme klást dotazy ?-likes(tom, jane). yes % proběhne unifikace s 2. řádkem ve výše uvedené databázi ?-likes(peter, jane). no % nelze unifikovat s žádným faktem ve výše uvedené databázi ?-animal(dog).

Kladení otázek Důležité je správně chápat odpověď na položenou otázku: YES znamená „na základě mých informací je to pravda“ ?-likes(tom, jane). yes NO má ale hned několik významů není to pravda (skutečně NE) nepodařilo se ověřit „na základě mých informací“ = nevím ?-animal(dog). no Váš program nefunguje („nepodařilo se dojít k cíli“)

Kladení obecnějších otázek Je možné využít proměnných Who likes Mary? přepíšeme v PROLOGu jako ?-likes(Who, mary). Jméno proměnné začíná velkým písmenem: Who, Mary, Someone_who_likes_someone_else Proměnná může být specifikovaná (nabývá konkrétní hodnotu) nebo nespecifikovaná (hodnota proměnné není dosud známa) Zadáme-li dotaz obsahující proměnnou, PROLOG prohledává databázi s cílem nalézt objekt, který by mohl stanout na místě proměnné

Otázka obsahující proměnnou Předpokládejme, že máme zadanou následující databázi: likes(tom, mary). likes(tom, jane). likes(mary, money). likes(tom, food). Předpokládejme dotaz „Co či koho má Tom rád?“ ?-likes(tom, X). X = mary; X = jane; X = food; no

Kladení ještě obecnějších otázek Často chceme položit dotaz, který vyžaduje ověření více podmínek Konjunkce cílů – pomocí symbolu čárka Má Tom rád Mary a má Mary ráda Toma? přepíšeme v PROLOGu jako ?-likes(tom, mary), likes(mary, tom). Disjunkce cílů – pomocí symbolu středník ?-likes(X, mary); likes(X, lisa). lze interpretovat jako „má někdo rád Mary nebo Lisu?“

Splňování cílů v konjunkci Každý cíl v konjunkci má vlastní značku (marker) Cíle se splňují zleva doprava Pokud se některý cíl nepodaří splnit jinak, PROLOG se vrací k cíli předchozímu, příslušnou proměnnou udělá nespecifikovanou a pokračuje od příslušné značky v dalším prohledávání databáze tzv. BACKTRACKING

Příklad Předpokládejme, že máme zadanou následující databázi: likes(jane, food). likes(jane, wine). likes(tom, jane). likes(tom, wine). Předpokládejme následující dotazy ?-likes(tom, jane), likes(jane, tom). no ?-likes(jane, X), likes(tom, X). X = wine;

Pravidla Pravidla popisují skutečnosti, které závisí na jiných skutečnostech likes(tom, X) :- girl(X). Pravidlo se skládá z hlavy, definičního symbolu „:-“ a těla Hlava pravidla popisuje to, co chceme definovat Tělo určuje cíle, které musí být splněny, aby byla splněna hlava pravidla Platnost proměnné je omezena pouze na příslušné pravidlo. likes(jane, M) :- male(M), likes(M, wine), play(M, tennis). likes(jane, M) :- animal(M), friendly(M).