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

Slides:



Advertisements
Podobné prezentace
Makra v Excelu.
Advertisements

Deduktivní soustava výrokové logiky
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Dualita úloh lineárního programování a analýza citlivosti
Základy informatiky Ing. Roman Danel, Ph.D.
Programovací jazyk Prolog
Výpočetní technika Akademický rok 2006/2007 Letní semestr Mgr. Petr Novák Katedra informatiky a geoinformatiky FŽP UJEP
Databázové systémy 1 Cvičení č. 3 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Fakulta životního prostředí Katedra informatiky a geoinformatiky Přednáška 04 Limity funkcí Matematika II. KIG / 1MAT2.
Přednáška 12 Diferenciální rovnice
Logické programování Úvodní přednáška.
ALGORITMIZACE ÚVODNÍ PŘEDNÁŠKA 2 SLOVO ALGORITMUS VZNIKLO ZE JMÉNA ARABSKÉHO MATEMATIKA AL-KHWARIZMIHO, KTERÝ V DEVÁTÉM STOLETÍ SEPSAL ROZSÁHLOU KOLEKCI.
Algoritmizace a programování
Seminář – Základy programování
Fakulta životního prostředí Katedra informatiky a geoinformatiky
Databázové systémy II Přednáška č. 8 – Pohledy (Views)
D ATOVÉ MODELY Ing. Jiří Šilhán. D ATABÁZOVÉ SYSTÉMY Patří vedle textových editorů a tabulkových kalkulátorů k nejrozšířenějším představitelům programového.
DalšíPředchozíTÉMA: M. K a d l e c o v á M. K a d l e c o v á.
JUI - 9. přednáška Ř ez, negace, práce s databází RNDr. Jiří Dvořák, CSc.
MATEMATIKA I.
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.
Systémy pro podporu managementu 2
Databázové systémy Přednáška č. 7 Uživatelské rozhraní.
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
Jak psát a editovat text
Výroková logika.
Systémy pro podporu managementu 2 Inteligentní systémy pro podporu rozhodování 1 (DSS a znalostní systémy)
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“ !
Úvodní informace Informatika pro ekonomy II ZS 2011/2012.
JUI přednáška Vstup a výstup, cykly RNDr. Jiří Dvořák, CSc.
MS ACCESS Databáze pro každého. Základní pojmy  Data  určitá fakta, vztahující se k objektům z reálného světa, uložená v paměti počítače  Informace.
Univerzita třetího věku kurz Znalci Databáze 1.
Podprogramy (subroutines) Pojmenované kousky programu, které –tvoří logicky ucelené části –se v programu opakují Jsou zapsány na jednom místě a v případě.
TEORIE.  důležitá součást při žádosti o práci či stáž, jedna z prvních informací o vás – pokud se bude líbit, můžete na jeho základě postoupit k pohovoru.
Úvod do databází zkrácená verze.
KURZ ALGORITMIZACE A PROGRAMOVÁNÍ V JAZYCE C Lekce č. 4: Programovací jazyk C Bc. Radek Libovický.
● 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.
BIOSTATISTIKA LS 2016 Garant předmětu: Ing. Martina Litschmannová, Ph.D. Přednášející: Ing. Martina Litschmannová, Ph.D. Cvičící: Ing. Martina Litschmannová,
Inf Webová stránka, princip HTML a CSS. Výukový materiál Číslo projektu: CZ.1.07/1.5.00/ Šablona: III/2 Inovace a zkvalitnění výuky prostřednictvím.
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
Algoritmizace – základní pojmy
Definiční obor a obor hodnot
Vlastnosti souborů Jaroslava Černá.
C# konzole – Podíl dvou čísel, podmínka IF
Výukový materiál zpracován v rámci projektu
Dobývání znalostí z databází znalosti
Výpočetní technika Akademický rok 2008/2009 Letní semestr
Kurz algoritmizace a programování v jazyce C
PROLOG strategie vyhodnocení dotazu
2. Jak si snadno vytvořit nový vzor pomocí bloků.
Predikátová logika.
Grafy kvadratických funkcí
Definiční obory. Množiny řešení. Intervaly.
Grafy kvadratických funkcí
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í 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. Gaudeamus, 2003. Clocksin, W. F., Mellish, C. S.: Programming in Prolog. Springer (5th edition), 2013. Bramer, M.: Logic Programming with Prolog. Springer (2nd edition), 2013. Levesque, H. J.: Thinking as Computation. MIT Press, 2017. Bratko, I.: Prolog – Programming for AI. Addison Wesley (3rd edition), 2000.

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 Barbora.Tesarova@uhk.cz Kryl, R.: Úvod do programovacího jazyka Prolog http://ksvi.mff.cuni.cz/~kryl/prolog.pdf Learn Prolog Now! http://www.learnprolognow.org/ 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

Stručný 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 Je to jazyk minulého století? IEEE Top Programming Languages – 34/50 (2018) Vesmírná stanice NASA, Watson od IBM (Jeopardy), …

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á

Proč se mám učit Prolog? Informatik by měl znát i nějaký neprocedurální jazyk Krátké programy jsou vhodné k hlubšímu pochopení algoritmizace Programování spočívá ve specifikaci problému, což umožňuje snadno měnit program při změně specifikace Logické programování je dobrým základem pro další studium reprezentace znalostí, umělé inteligence a expertních systémů Naučíte se programovat s použitím rekurze, která je dostupná ve většině programovacích jazyků, ale je obvykle považována za pokročilou techniku, a snad i proto je často opomíjena

PROLOG snadno a rychle

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

Programování v Prologu Programování v PROLOGu spočívá v deklarování určitých faktů o objektech a relacích president(trump,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).