Úvod do umělé inteligence, jazyk Prolog

Podobne dokumenty
v 1 /2 semestru 4. listopadu v rámci přednášky 1 úvod do UI, jazyk Prolog (23.9.) 3 prohledávání stavového prostoru (7.10.)

Obsah: CLP Constraint Logic Programming. Úvod do umělé inteligence 6/12 1 / 17

Komplexní analýza. Martin Bohata. Katedra matematiky FEL ČVUT v Praze Martin Bohata Komplexní analýza Mocninné řady 1 / 18

Logika V. RNDr. Kateřina Trlifajová PhD. Katedra teoretické informatiky Fakulta informačních technologíı BI-MLO, ZS 2011/12

(1) Derivace. Kristýna Kuncová. Matematika B2 17/18. Kristýna Kuncová (1) Derivace 1 / 35

Necht je funkce f spojitá v intervalu a, b a má derivaci v (a, b). Pak existuje bod ξ (a, b) tak, že f(b) f(a) b a. Geometricky

Logický agent, výroková logika

Obsah: Organizace předmětu IB030. Situace na FI MU

Logický agent, výroková logika

MATEMATIKA 3. Katedra matematiky a didaktiky matematiky Technická univerzita v Liberci

Matematika 2, vzorová písemka 1

TGH01 - Algoritmizace


Reprezentace a vyvozování znalostí

Edita Pelantová, katedra matematiky / 16

TGH01 - Algoritmizace

Numerické metody minimalizace

1 Soustava lineárních rovnic

Shrnutí. Vladimír Brablec

Linea rnı (ne)za vislost

Reprezentace a vyvozování znalostí

Reprezentace a vyvozování znalostí

Aproximace funkcí 1,00 0,841 1,10 0,864 1,20 0,885. Body proložíme lomenou čarou.

IB047. Pavel Rychlý. 21. února

Katedra kybernetiky skupina Inteligentní Datové Analýzy (IDA) Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Reprezentace a vyvozování znalostí.

PA152,Implementace databázových systémů 2 / 25

5. a 12. prosince 2018

Úvodní informace. 18. února 2019

Kapitola 4: Soustavy diferenciálních rovnic 1. řádu

Kristýna Kuncová. Matematika B2

Průvodce studiem V této kapitole se budeme zabývat diferenciálním počtem pro funkce více

Numerické metody 8. května FJFI ČVUT v Praze

Matematická analýza II pro kombinované studium. Konzultace první a druhá. RNDr. Libuše Samková, Ph.D. pf.jcu.cz

Martin Pergel. 26. února Martin Pergel

B0B99PRPA Procedurální programování

Kristýna Kuncová. Matematika B3

Funkce zadané implicitně. 4. března 2019

Matematika (KMI/PMATE)

Komplexní analýza. Martin Bohata. Katedra matematiky FEL ČVUT v Praze Martin Bohata Komplexní analýza Úvod 1 / 32

B0B99PRPA Procedurální programování. Stanislav Vítek

Internet a zdroje. (Zdroje na Internetu) Mgr. Petr Jakubec. Katedra fyzikální chemie Univerzita Palackého v Olomouci Tř. 17.

Uvod Symbolick e modelov an ı Neuronov e s ıtˇ e Shrnut ı Modelov an ı myˇslen ı Radek Pel anek

Euklidovský prostor. Funkce dvou proměnných: základní pojmy, limita a spojitost.

Inverzní Z-transformace

podle přednášky doc. Eduarda Fuchse 16. prosince 2010

Kombinatorika a grafy I

Automatové modely. Stefan Ratschan. Fakulta informačních technologíı. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

MATEMATIKA 3 NUMERICKÉ METODY. Katedra matematiky a didaktiky matematiky Technická univerzita v Liberci

Numerické metody a statistika

B0B99PRPA Procedurální programování

Powyższe reguły to tylko jedna z wersji gry. Istnieje wiele innych wariantów, można też ustalać własne zasady. Miłej zabawy!

1. Informace o předmětu, úvod do programování

Vybrané kapitoly z matematiky

3. Problémy s omezujícími podmínkami (CSP Constraint Satisfaction Problems)

(TIL) Obsah: Transparentní intenzionální logika. Úvod do umělé inteligence 9/12 1 / 34

Katedra kybernetiky laboratoř Inteligentní Datové Analýzy (IDA) Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Co nám prozradí derivace? 21. listopadu 2018

Petr Křemen FEL ČVUT. Petr Křemen (FEL ČVUT) Vysvětlování modelovacích chyb 133 / 156

Obsah. Limita posloupnosti a funkce. Petr Hasil. Limita posloupnosti. Pro a R definujeme: Je-li a < 0, pak a =, a ( ) =. vlastní body.

Vladimír Ulman Centre for Biomedical Image Analysis. 10th October, 2007 FI MU, Brno

kontaktní modely (Winklerův, Pasternakův)

ČVUT FEL, K Radek Mařík Strukturované testování 20. října / 52

Definice Řekneme, že PDA M = (Q,Σ,Γ,δ,q 0,Z 0,F) je. 1. pro všechna q Q a Z Γ platí: kdykoliv δ(q,ε,z), pak δ(q,a,z) = pro všechna a Σ;

(2) Funkce. Kristýna Kuncová. Matematika B2. Kristýna Kuncová (2) Funkce 1 / 25

CA CZ, s.r.o. May 21, Radek Mařík Testování řídicích struktur May 21, / 45

IEL Přechodové jevy, vedení

Kristýna Kuncová. Matematika B2 18/19

Expresivní deskripční logiky

Obsah: Rozhodovací stromy. Úvod do umělé inteligence 11/12 2 / 41. akce

vystavit agenta realitě místo přepisování reality do pevných pravidel

Cauchyova úloha pro obyčejnou diferenciální rovnici

Programowanie w Logice

GEM a soustavy lineárních rovnic, část 2

Diferenciální rovnice základní pojmy. Rovnice se

Hry. šachy, backgammon, poker

Paradoxy geometrické pravděpodobnosti

Obsah. Zobrazení na osmistěn. 1 Zobrazení sféry po částech - obecné vlastnosti 2 Zobrazení na pravidelný konvexní mnohostěn

Obsah: Komunikace Gramatiky. PA026 Projekt z umělé inteligence.

Přirozený jazyk prostředek komunikace

Programowanie deklaratywne

Reprezentace dat. BI-PA1 Programování a Algoritmizace I. Ladislav Vagner

ggplot2 Efektní vizualizace dat v prostředí jazyka R Martin Golasowski 8. prosince 2016

Stavový popis Stabilita spojitých systémů (K611MSAP) Katedra aplikované matematiky Fakulta dopravní ČVUT. čtvrtek 20. dubna 2006

Rovnice proudění Slapový model

PARADIGMATA PROGRAMOVÁNÍ 1B

Laplaceova transformace

FAKULTA STAVEBNÍ. Stavební statika. Telefon: WWW:

Zásuvný modul QGISu. QGIS plugin pro práci s katastrálními daty

(a). Pak f. (a) pro i j a 2 f

z geoinformatických dat

GENETICKÉ PROGRAMOVÁNÍ S JAZYKEM BRAINFUCK

Anna Kratochvílová Anna Kratochvílová (FJFI ČVUT) PDR ve zpracování obrazu / 17

Biosignál II. Lékařská fakulta Masarykovy univerzity Brno

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 13.2.

DFT. verze:

Programowanie w logice

Výzvy, které před matematiku staví

Katedra aplikované matematiky FEI VŠB Technická univerzita Ostrava

Elementární funkce. Edita Pelantová. únor FJFI, ČVUT v Praze. katedra matematiky, FJFI, ČVUT v Praze

Transkrypt:

Úvod do umělé inteligence, jazyk Prolog Aleš Horák E-mail: hales@fi.muni.cz http://nlp.fi.muni.cz/uui/ Obsah: Organizace předmětu PB016 Co je umělá inteligence Úvod do umělé inteligence 1/12 1 / 21

Organizace předmětu PB016 Organizace předmětu PB016 Hodnocení předmětu: průběžná písemka (max 32 bodů) v 1 /2 semestru v rámci 6. přednášky, pro všechny jediný termín závěrečná písemka (max 96 bodů) dva řádné a jeden opravný termín hodnocení součet bodů za obě písemky (max 128 bodů) známka A za více než 115 bodů známka E za více než 63 bodů rozdíly zk, k, z různé limity někteří můžou získat body za studentské referáty až 20 bodů za kvalitní text (cca 5 stran) + 10 20 minut referát nutné před průběžnou písemkou domluvit téma projekt/program, algoritmus z Náplně předmětu domluva e-mailem návrh tématu, který musí projít schválením kdo opraví chybu nebo vylepší demo příklady, může dostat 1 5 bodů (celkem max 5) až 20 bodů za přepis všech demo příkladů do funkční podoby v Pythonu Úvod do umělé inteligence 1/12 2 / 21

Základní informace Organizace předmětu PB016 Základní informace přednáška je nepovinná cvičení samostudium, v rámci třetího kreditu web stránka předmětu http://nlp.fi.muni.cz/uui/ http://nlp.fi.muni.cz/uui/priklady/ demo příklady slajdy průběžně doplňovány na webu předmětu kontakt na přednášejícího Aleš Horák <hales@fi.muni.cz> (Subject: PB016...) literatura: Russell, S. a Norvig, P.: Artificial Intelligence: A Modern Approach, 3rd ed., Prentice Hall, 2010. (prezenčně v knihovně) Bratko, I.: Prolog Programming for Artificial Intelligence, Addison-Wesley, 2001. (prezenčně v knihovně) slajdy na webu předmětu Jirků, Petr: Programování v jazyku Prolog, Praha : Státní nakladatelství technické literatury, 1991. Úvod do umělé inteligence 1/12 3 / 21

Náplň předmětu Organizace předmětu PB016 Náplň předmětu 1 úvod do UI, jazyk Prolog (26.9.) 2 operace na datových strukturách (3.10.) 3 prohledávání stavového prostoru (10.10.) 4 heuristiky, best-first search, A* search (17.10.) 5 dekompozice problému, AND/OR grafy (24.10.) 6 hry a základní herní strategie, průběžná písemka (31.10.) 7 problémy s omezujícími podmínkami (7.11.) 8 logický agent, výroková logika (14.11.) 9 logika prvního řádu a transparentní intenzionální logika (21.11.) 10 reprezentace a vyvozování znalostí (28.11.) 11 učení, rozhodovací stromy, neuronové sítě (5.12.) 12 zpracování přirozeného jazyka (12.12.) Úvod do umělé inteligence 1/12 4 / 21

Obsah Co je umělá inteligence 1 Organizace předmětu PB016 Základní informace Náplň předmětu 2 Co je umělá inteligence Čím se budeme zabývat? 3 Principy Syntax jazyka Prolog Strom výpočtu Rozdíly od procedurálních jazyků Programujeme Fibonacciho čísla Úvod do umělé inteligence 1/12 5 / 21

Co je umělá inteligence Co je umělá inteligence systém, který se chová jako člověk Turingův test (1950) zahrnuje: zpracování přirozeného jazyka (NLP) reprezentaci znalostí (KRepresentation) vyvozování znalostí (KReasoning) strojové učení (počítačové vidění) (robotiku) od 1991 Loebnerova cena (Loebner Prize) každý rok $4.000 za nejlidštější program, nabízí $100.000 a zlatá medaile za složení celého Turingova testu Úvod do umělé inteligence 1/12 6 / 21

Co je umělá inteligence systém, který mysĺı jako člověk snaha porozumět postupům lidského myšlení kognitivní (poznávací) věda využívá poznatků neurologie, neurochirurgie,... např. COLING 2000 Angela Friederici: Language Processing in the Human Brain Max Planck Institute of Cognitive Neuroscience, Leipzig měření Event Related Potentials (ERP) v mozku jako potvrzení oddělení syntaxe a sémantiky při zpracování věty Úvod do umělé inteligence 1/12 7 / 21

Co je umělá inteligence systém, který mysĺı rozumně od dob Aristotela (350 př.n.l.) náplň studia logiky problém umět najít řešení teoreticky prakticky (složitost a vyčíslitelnost) problém neúplnost a nejistota vstupních dat systém, který se chová rozumně inteligentní agent systém, který jedná za nějakým účelem jedná samostatně jedná na základě vstupů ze svého prostředí pracuje delší dobu adaptuje se na změny Úvod do umělé inteligence 1/12 8 / 21

Co je umělá inteligence Čím se budeme zabývat? Čím se budeme zabývat? základní struktury a algoritmy běžně používané při technikách programovaní pro inteligentní agenty strategie řešení, prohledávání stavového prostoru, heuristiky,... s příklady v jazyce Prolog Úvod do umělé inteligence 1/12 9 / 21

Obsah 1 Organizace předmětu PB016 Základní informace Náplň předmětu 2 Co je umělá inteligence Čím se budeme zabývat? 3 Principy Syntax jazyka Prolog Strom výpočtu Rozdíly od procedurálních jazyků Programujeme Fibonacciho čísla Úvod do umělé inteligence 1/12 10 / 21

Historie: 70. l. Colmerauer, Kowalski; D.H.D. Warren (WAM); CLP, paralelní systémy PROgramování v LOGice; část predikátové logiky prvního řádu (logika Hornových klauzuĺı) deklarativnost (specifikace programu je přímo programem) řešení problémů týkajících se objektů a vztahů mezi nimi Prology na FI: SICStus Prolog (modul sicstus) SWI (modul pl) ECLiPSe (modul eclipse) stroje aisa, erinys, oreias, nymfe verze Úvod do umělé inteligence 1/12 11 / 21

Principy Principy backtracking řízený unifikací, hojně využívá rekurzi spojitost s logikou: důkaz pravdivosti cíle; cíl je dokázán, unifikuje-li s hlavou nějaké klauzule a všechny podcíle v těle této klauzule jsou rovněž dokázány. Strategie výběru podcíle: shora dolů, zleva doprava. unifikace: řídicí mechanismus, hledání nejobecnějšího unifikátoru dvou termů. info(manzel,dana,deti,svatba( 20.12.1940 )) = info(petr,dana,[jan,pavel],info). po unifikaci: Manzel=petr, Deti=[jan,pavel], Info=svatba( 20.12.1940 ) backtracking: standardní metoda prohledávání stavového prostoru do hloubky (průchod stromem nesplnitelný cíl návrat k nejbližšímu minulému bodu s alternativní volbou) rekurze potomek(x,y):- rodic(y,x). potomek(x,y):- rodic(z,x), potomek(z,y). Úvod do umělé inteligence 1/12 12 / 21

Příklad Principy jednoduchý příklad DB rodinných vztahů: otec(milan,dana). otec(milan,petr). otec(jan,david). matka(pavla,dana). matka(pavla,petr). matka(jana,david). rodic(x,y):- otec(x,y). rodic(x,y):- matka(x,y). Úvod do umělé inteligence 1/12 13 / 21

Příklad Principy jednoduchý příklad DB rodinných vztahů: otec(milan,dana). otec(milan,petr). otec(jan,david). matka(pavla,dana). matka(pavla,petr). matka(jana,david). fakty (DB) rodic(x,y):- otec(x,y). rodic(x,y):- matka(x,y). Úvod do umělé inteligence 1/12 13 / 21

Příklad Principy jednoduchý příklad DB rodinných vztahů: otec(milan,dana). otec(milan,petr). otec(jan,david). matka(pavla,dana). matka(pavla,petr). matka(jana,david). rodic(x,y):- otec(x,y). rodic(x,y):- matka(x,y). fakty (DB) pravidla Úvod do umělé inteligence 1/12 13 / 21

Příklad Principy jednoduchý příklad DB rodinných vztahů: otec(milan,dana). otec(milan,petr). otec(jan,david). matka(pavla,dana). matka(pavla,petr). matka(jana,david). rodic(x,y):- otec(x,y). rodic(x,y):- matka(x,y). fakty (DB) pravidla? otec(x,dana). X = milan Yes Úvod do umělé inteligence 1/12 13 / 21

Příklad Principy jednoduchý příklad DB rodinných vztahů: otec(milan,dana). otec(milan,petr). otec(jan,david). matka(pavla,dana). matka(pavla,petr). matka(jana,david). rodic(x,y):- otec(x,y). rodic(x,y):- matka(x,y). fakty (DB) pravidla? otec(x,dana).? rodic(x,david). X = milan X = jan ; Yes X = jana ; Úvod do umělé inteligence 1/12 13 / 21

Syntax jazyka Prolog Syntax jazyka Prolog logický (prologovský) program seznam klauzuĺı (pravidel a faktů) nikoli množina klauzule seznam literálů Literál před :- je hlava, ostatní literály tvoří tělo klauzule. Význam klauzule je implikace: hlava:-tělo1, tělo2,... tělo1 tělo2... hlava Pokud je splněno tělo1 a současně tělo2 a současně..., pak platí také hlava. 3 možné typy klauzuĺı: fakt: hlava bez těla. Zápis v Prologu: p(x,y). (ekv. p(x,y):-true.) pravidlo: hlava i tělo. Prolog: p(z,x) :- p(x,y), p(y,z). cíl: tělo bez hlavy. Prolog:?- p(g,f). predikát seznam (všech) klauzuĺı se stejným funktorem a aritou v hlavovém literálu. Zapisuje se ve tvaru funktor/arita potomek/2. Úvod do umělé inteligence 1/12 14 / 21

Syntax jazyka Prolog literál atomická formule, nebo její negace atomická formule v Prologu zcela odpovídá složenému termu (syntaktický rozdíl neexistuje) term: konstanta: a, 1,., [], sc2 atomic/1 (metalogické testování na konstantu) atom/1, number/1 proměnná: X, Vys, var/1 (metalogické testování na proměnnou) složený term: f(a,x) funktor, argumenty, arita functor/3 dává funktor termu, arg/3 dává n-tý argument zkratka pro zápis seznamů: [1,a,b3] odpovídá struktuře. (1,. (a,. (b3, []))) Úvod do umělé inteligence 1/12 15 / 21

Příklad Syntax jazyka Prolog predikát sourozenci(x,y) je true, když X a Y jsou (vlastní) sourozenci. Úvod do umělé inteligence 1/12 16 / 21

Příklad Syntax jazyka Prolog predikát sourozenci(x,y) je true, když X a Y jsou (vlastní) sourozenci. sourozenci(x,y):- otec(o,x), otec(o,y), X\=Y, matka(m,x), matka(m,y). Úvod do umělé inteligence 1/12 16 / 21

Příklad Syntax jazyka Prolog predikát sourozenci(x,y) je true, když X a Y jsou (vlastní) sourozenci. sourozenci(x,y):- otec(o,x), otec(o,y), X\=Y, matka(m,x), matka(m,y). 1 otec(milan,dana). 2 otec(milan,petr). 3 otec(jan,david). 4 matka(pavla,dana). 5 matka(pavla,petr). 6 matka(jana,david). 7 rodic(x,y):- otec(x,y). 8 rodic(x,y):- matka(x,y).? sourozenci(dana,y). 1, otec(o,dana) % O = milan Úvod do umělé inteligence 1/12 16 / 21

Příklad Syntax jazyka Prolog predikát sourozenci(x,y) je true, když X a Y jsou (vlastní) sourozenci. sourozenci(x,y):- otec(o,x), otec(o,y), X\=Y, matka(m,x), matka(m,y). 1 otec(milan,dana). 2 otec(milan,petr). 3 otec(jan,david). 4 matka(pavla,dana). 5 matka(pavla,petr). 6 matka(jana,david). 7 rodic(x,y):- otec(x,y). 8 rodic(x,y):- matka(x,y).? sourozenci(dana,y). 1, otec(o,dana) % O = milan 2, otec(milan,y) % Y = dana Úvod do umělé inteligence 1/12 16 / 21

Příklad Syntax jazyka Prolog predikát sourozenci(x,y) je true, když X a Y jsou (vlastní) sourozenci. sourozenci(x,y):- otec(o,x), otec(o,y), X\=Y, matka(m,x), matka(m,y). 1 otec(milan,dana). 2 otec(milan,petr). 3 otec(jan,david). 4 matka(pavla,dana). 5 matka(pavla,petr). 6 matka(jana,david). 7 rodic(x,y):- otec(x,y). 8 rodic(x,y):- matka(x,y).? sourozenci(dana,y). 1, otec(o,dana) % O = milan 2, otec(milan,y) % Y = dana 3, dana \= dana % fail backtracking Úvod do umělé inteligence 1/12 16 / 21

Příklad Syntax jazyka Prolog predikát sourozenci(x,y) je true, když X a Y jsou (vlastní) sourozenci. sourozenci(x,y):- otec(o,x), otec(o,y), X\=Y, matka(m,x), matka(m,y). 1 otec(milan,dana). 2 otec(milan,petr). 3 otec(jan,david). 4 matka(pavla,dana). 5 matka(pavla,petr). 6 matka(jana,david). 7 rodic(x,y):- otec(x,y). 8 rodic(x,y):- matka(x,y).? sourozenci(dana,y). 1, otec(o,dana) % O = milan 2, otec(milan,y) % Y = dana 3, dana \= dana % fail backtracking 2, otec(milan,y) % Y = petr Úvod do umělé inteligence 1/12 16 / 21

Příklad Syntax jazyka Prolog predikát sourozenci(x,y) je true, když X a Y jsou (vlastní) sourozenci. sourozenci(x,y):- otec(o,x), otec(o,y), X\=Y, matka(m,x), matka(m,y). 1 otec(milan,dana). 2 otec(milan,petr). 3 otec(jan,david). 4 matka(pavla,dana). 5 matka(pavla,petr). 6 matka(jana,david). 7 rodic(x,y):- otec(x,y). 8 rodic(x,y):- matka(x,y).? sourozenci(dana,y). 1, otec(o,dana) % O = milan 2, otec(milan,y) % Y = dana 3, dana \= dana % fail backtracking 2, otec(milan,y) % Y = petr 3, dana \= petr % true Úvod do umělé inteligence 1/12 16 / 21

Příklad Syntax jazyka Prolog predikát sourozenci(x,y) je true, když X a Y jsou (vlastní) sourozenci. sourozenci(x,y):- otec(o,x), otec(o,y), X\=Y, matka(m,x), matka(m,y). 1 otec(milan,dana). 2 otec(milan,petr). 3 otec(jan,david). 4 matka(pavla,dana). 5 matka(pavla,petr). 6 matka(jana,david). 7 rodic(x,y):- otec(x,y). 8 rodic(x,y):- matka(x,y).? sourozenci(dana,y). 1, otec(o,dana) % O = milan 2, otec(milan,y) % Y = dana 3, dana \= dana % fail backtracking 2, otec(milan,y) % Y = petr 3, dana \= petr % true 4, matka(m,dana) % M = pavla Úvod do umělé inteligence 1/12 16 / 21

Příklad Syntax jazyka Prolog predikát sourozenci(x,y) je true, když X a Y jsou (vlastní) sourozenci. sourozenci(x,y):- otec(o,x), otec(o,y), X\=Y, matka(m,x), matka(m,y). 1 otec(milan,dana). 2 otec(milan,petr). 3 otec(jan,david). 4 matka(pavla,dana). 5 matka(pavla,petr). 6 matka(jana,david). 7 rodic(x,y):- otec(x,y). 8 rodic(x,y):- matka(x,y).? sourozenci(dana,y). 1, otec(o,dana) % O = milan 2, otec(milan,y) % Y = dana 3, dana \= dana % fail backtracking 2, otec(milan,y) % Y = petr 3, dana \= petr % true 4, matka(m,dana) % M = pavla 5, matka(pavla,petr) % true Úvod do umělé inteligence 1/12 16 / 21

Příklad Syntax jazyka Prolog predikát sourozenci(x,y) je true, když X a Y jsou (vlastní) sourozenci. sourozenci(x,y):- otec(o,x), otec(o,y), X\=Y, matka(m,x), matka(m,y). 1 otec(milan,dana). 2 otec(milan,petr). 3 otec(jan,david). 4 matka(pavla,dana). 5 matka(pavla,petr). 6 matka(jana,david). 7 rodic(x,y):- otec(x,y). 8 rodic(x,y):- matka(x,y).? sourozenci(dana,y). 1, otec(o,dana) % O = milan 2, otec(milan,y) % Y = dana 3, dana \= dana % fail backtracking 2, otec(milan,y) % Y = petr 3, dana \= petr % true 4, matka(m,dana) % M = pavla 5, matka(pavla,petr) % true Y = petr Yes Úvod do umělé inteligence 1/12 16 / 21

Strom výpočtu Strom výpočtu Dotaz?- sourozenci(dana,y). 1 otec(milan,dana). 2 otec(milan,petr). 3 otec(jan,david). 4 matka(pavla,dana). 5 matka(pavla,petr). 6 matka(jana,david). 7 rodic(x,y):- otec(x,y). 8 rodic(x,y):- matka(x,y). 9 sourozenci(x,y):- otec(o,x), otec(o,y), 10 X\=Y, 11 matka(m,x), matka(m,y). Úvod do umělé inteligence 1/12 17 / 21

Strom výpočtu Strom výpočtu Dotaz?- sourozenci(dana,y). sourozenci(dana,y) 9 1 otec(milan,dana). 2 otec(milan,petr). 3 otec(jan,david). 4 matka(pavla,dana). 5 matka(pavla,petr). 6 matka(jana,david). 7 rodic(x,y):- otec(x,y). 8 rodic(x,y):- matka(x,y). 9 sourozenci(x,y):- otec(o,x), otec(o,y), 10 X\=Y, 11 matka(m,x), matka(m,y). otec(o,dana), otec(o,y),... otec(milan,y), dana\=y,... dana\=dana, matka(m,dana),... unif fail 1 1 2 dana\=petr, matka(m,dana),... unif matka(m,dana), matka(m,petr) 4 matka(pavla,petr) Úvod do umělé inteligence 1/12 17 / 21 5 true Y=petr

Rozdíly od procedurálních jazyků Rozdíly od procedurálních jazyků single assignment = (unifikace) vs. přiřazovací příkaz, == (identita), is (vyhodnocení aritm. výrazu). rozdíly:? A=1, A=B. % B=1 Yes? A=1, A==B. % No? A=1, B is A+1. % B=2 Yes vícesměrnost predikátů (omezená, obzvláště při použití řezu)? otec(x,dana).? otec(milan,x).? otec(x,y). (rozlišení vstupních/výstupních proměnných: + -?) cykly, podmíněné příkazy tiskniseznam(s) :- write( seznam=[ ),nl,tiskniseznam(s,1). tiskniseznam([], ) :- write( ] ),nl. tiskniseznam([h T],N):- tab(4),write(n),write( : ),write(h),nl,n1 is N+1, tiskniseznam(t,n1). Úvod do umělé inteligence 1/12 18 / 21

Programujeme Programujeme consult( program.pl ). % kompiluj program.pl [ program.pl,program2]. % kompiluj program.pl, program2.pl listing. % vypiš programové predikáty trace, rodic(x,david). % trasuj volání predikátu notrace. % zruš režim trasování halt. % ukonči interpret Úvod do umělé inteligence 1/12 19 / 21

Fibonacciho čísla Fibonacciho čísla Fibonacciho čísla jsou čísla z řady: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55,... Rekurenční vzorec této řady je: fib 0 = 0 fib 1 = 1 fib i = fib i 1 +fib i 2,pro i 2 Úvod do umělé inteligence 1/12 20 / 21

Fibonacciho čísla Fibonacciho čísla Fibonacciho čísla jsou čísla z řady: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55,... Rekurenční vzorec této řady je: fib 0 = 0 fib 1 = 1 fib i = fib i 1 +fib i 2,pro i 2 Přepis do Prologu je přímočarý: fib(0,0). fib(1,1). fib(x,y) :- X1 is X 1, X2 is X 2, fib(x1,y1), fib(x2,y2), Y is Y1+Y2. Úvod do umělé inteligence 1/12 20 / 21

Fibonacciho čísla II Fibonacciho čísla Předchozí program exponenciální časová složitost (konstatní pamět ová) Úvod do umělé inteligence 1/12 21 / 21

Fibonacciho čísla II Fibonacciho čísla Předchozí program exponenciální časová složitost (konstatní pamět ová) Využití extralogických predikátů lineární časová složitost (a lineární pamět ová) fib(0,0). fib(1,1). fib(x,y) :- X1 is X 1, X2 is X 2, fib(x1,y1), fib(x2,y2), Y is Y1+Y2, asserta(fib(x,y)). Úvod do umělé inteligence 1/12 21 / 21