JUI - 9. přednáška Ř ez, negace, práce s databází RNDr. Jiří Dvořák, CSc.

Slides:



Advertisements
Podobné prezentace
DOTAZOVACÍ JAZYKY slajdy přednášce DBI006
Advertisements

Sestavení kombinační logické funkce
DOTAZOVACÍ JAZYKY slajdy přednášce DBI006
Dualita úloh lineárního programování a analýza citlivosti
Ladění, pred. vyšších řádů (7)  Jan Hric, KTI MFF UK, a
Pascal - příklady.
JUI - 3. přednáška Zpracování seznamů, predikátové a vyhodnocovací funkce RNDr. Jiří Dvořák, CSc.
JUI přednáška Příklad využití Prologu pro tvorbu expertních systémů RNDr. Jiří Dvořák, CSc.
Databázové systémy Přednáška č. 2 Proces návrhu databáze.
Programovací jazyk Prolog
JUI - 1. přednáška Funkcionální programování Úvod do jazyka Lisp RNDr. Jiří Dvořák, CSc.
Fakulta životního prostředí Katedra informatiky a geoinformatiky
Komunikace v DS Přednášky z distribuovaných systémů Ing. Jiří Ledvina, CSc.
Objekty v CLIPSu RNDr. Jiří Dvořák, CSc.
Databáze Jiří Kalousek.
Informatika I 3. přednáška
Informatika I 2. přednáška
A1PRG - Programování – Seminář Ing. Michal Operátory (2. část) 4 Verze
Databázové systémy I Cvičení č. 9 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Formulace a vlastnosti úloh lineárního programová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.
Operační systémy Přednášky pro výuku předmětu Operační systémy Ing. Antonín Vaněk, CSc. DFJP, Univerzita Pardubice září 2003.
Vícekriteriální rozhodování
JUI - 2. přednáška Základní funkce, definice funkcí RNDr. Jiří Dvořák, CSc.
Predikátová logika.
Počítače a programování 1
Cvičení.
3. Příkazy  Příkazy dělíme na jednoduché a strukturované.  Jednoduché příkazy - žádnou jejich dílčí částí neni příkaz - přiřazovací, vstupu a výstupu,
JUI - 6. přednáška Úvod do jazyka Prolog, struktura programu, datové objekty, unifikace RNDr. Jiří Dvořák, CSc.
Reprezentace (6)  Jan Hric, KTI MFF UK, a
Přednáška 10 Logické programování, PROLOG (PROgramming in LOGic)
Informatika I 7. přednáška RNDr. Jiří Dvořák, CSc.
Informatika I 8. přednáška RNDr. Jiří Dvořák, CSc.
Algoritmizace a programování Objektově orientované programování - 16 Mgr. Josef Nožička IKT Algoritmizace a programování
Systém CLIPS RNDr. Jiří Dvořák, CSc.
Jazyk XML Jazyk pro tvorbu strukturovaných dokumentů Syntaxí velmi podobný HTML Hlavní cíle návrhu: Snadná editace - jazyk je textový Snadné strojové zpracování.
Informatika I 1. přednáška
Ukládání heterogenních dat pomocí rozvolněných objektů Michal Žemlička.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
Milan Kryl(c) 2004 MFF UK Databáze Caché NLS national language settings.
Přednáška 10 Logické programování, PROLOG (PROgramming in LOGic)
Algoritmizace a programování Textové soubory - 13 Mgr. Josef Nožička IKT Algoritmizace a programování
Zpracování neurčitosti Fuzzy přístupy RNDr. Jiří Dvořák, CSc.
Marie Duží vyučující: Marek Menšík Logika: systémový rámec rozvoje oboru v ČR a koncepce logických propedeutik pro mezioborová studia.
STRING A UKAZATELE. Co to je řetězec? Řetězec v Javě je samostatný objekt. Je konstantní, co znamená, že jednou vytvořený řetězec nelze změnit. Chceme-li.
Procedurální (klasické) programování Popisuje algoritmus – postup, jak vyřešit úlohu.
Simplexová metoda pro známé počáteční řešení úlohy LP
Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.
Vestavěné predikáty a jejich použití (5) Jan Hric, KTI MFF UK, a
Jazyky pro umělou inteligenci RNDr. Jiří Dvořák, CSc.
Predikátová logika1 Predikátová logika 1. řádu Teď „logika naostro“ !
sestavení 1. kanonického tvaru kombinační logické funkce
Sestavení kombinační logické funkce
Řez, návrat. Predikát řez (!) Vždy splněn Není povolen návrat přes něj.
JUI přednáška Vstup a výstup, cykly RNDr. Jiří Dvořák, CSc.
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ě.
Databázové systémy I Cvičení č. 8 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2015.
Algoritmizace a programování Soubory. Oč jde? Vytvoření externího souboru Vytvoření externího souboru Tento soubor může být: Tento soubor může být: Textový.
Programování OPERÁTOR SIZEOF, FUNKCE, POLE JAKO PARAMETRY FUNKCÍ ERIK KRÁL.
Definiční obor a obor hodnot
Vytváření dokumentace algoritmů
Logické programování, PROLOG (PROgramming in LOGic)
PROLOG strategie vyhodnocení dotazu
PROLOG PROgramování v LOGice
Jak vytvořit výstupní bezpečnostní předpis k řízení rizik
Sémantika PL1 Interpretace, modely
Predikátová logika.
Základní algoritmy Prologu
Prohledávání stavového prostoru
Prohledávání grafů.
Transkript prezentace:

JUI - 9. přednáška Ř ez, negace, práce s databází RNDr. Jiří Dvořák, CSc.

2 Řez Řez je standardní predikát, který se zapisuje jako znak ! (vykřičník) jako jeden z podcílů v těle pravidla. Pomocí řezu můžeme zabránit tomu, aby se při vyhodnocení cíle zbytečně zkoušela použít pravidla, o nichž je předem známo, že již k řešení nevedou. Řez tedy redukuje prohledávací prostor prologovského programu tak, že dynamicky odřezává celé neužitečné podstromy. Význam řezu je možné popsat pouze pomocí procedurální sémantiky programu, takže jeho použitím se od sebe může velmi nebezpečně vzdálit deklarativní a procedurální sémantika. Zelený řez neovlivňuje výslednou množinu řešení cíle a odřezává tedy jen větve neobsahující potenciální řešení, Červený řez zvyšuje efektivnost programu za cenu nesouladu mezi deklarativní a procedurální sémantikou.

3 Sémantika řezu Řez má následující sémantiku:  bezpodmínečně uspěje  fixuje všechny vazby proměnných provedené od unifikace nadřazeného cíle s hlavou pravidla, v němž se řez nachází  dojde-li v těle pravidla za řezem k selhání nějakého podcíle, které nejde napravit návraty do podcílů vpravo od řezu, znamená to současně i selhání nadřazeného cíle – žádná další pravidla se pro něj již neuplatní Působením řezu se tedy odstřihnou všechna možná řešení podcílů nacházejících se nalevo od něj a možnost použití všech pravidel dané procedury, která následují za pravidlem obsahujícím řez. Na druhé straně se jím neovlivňuje možné navracení v podcílech nacházejících se napravo od něj. Jakmile by však mělo dojít ke zpětnému návratu před řez, provede se výstup z celé procedury se signalizací neúspěchu cíle.

4 Negace Negace je v Prologu vyjádřena standardním predikátem not a její význam můžeme ilustrovat takto: not(X):- call(X),!,fail. not(X). kde fail je standardní predikát, který nelze splnit. Cíl not (X) tedy selže, pokud je cíl X prologovsky splnitelný, a naopak cíl not (X) bude úspěšný, pokud cíl X splnit nelze. Nemožnost splnění cíle může ovšem v Prologu vyvolat zacyklení a pak se zacyklí i vyhodnocení negace, místo aby uspělo. K potížím s negací nedojde, pokud se při vyhodnocení nevyskytují v negovaném cíli nenastavené proměnné. Pozn.: Funktor not je standardně definován jako unární prefixový operátor se stejnou preferencí jakou mají binární operátory + a –, takže není třeba jeho argument dávat do závorek.

5 Predikáty consult a reconsult Tyto predikáty zajišťují vstup programu ze souboru. consult(F) Vyhodnocení tohoto cíle způsobí načtení klauzulí všech procedur ze souboru F a jejich uložení do databáze. Stejným způsobem lze načíst procedury z několika souborů, pravidla se ukládají do databáze v tom pořadí, v jakém se četla. Namísto několika volání predikátu consult je možné uvést v jeho argumentu seznam jmen souborů obsahujících program. reconsult(F) Vyhodnocení tohoto cíle má podobný účinek s tím rozdílem, že všechny procedury predikátů uvedené v souboru F nahradí případné dosud platné procedury z databáze.

6 Predikáty assert a retract Tyto predikáty umožňují explicitní práci s databází. assert(C) Tento cíl uspěje pouze jednou a jako vedlejší efekt doplní klauzuli C do databáze a to v závislosti na implementaci buď jako první nebo jako poslední v odpovídající proceduře. Predikát asserta doplňovanou klauzuli umístí jako první klauzuli příslušné procedury a predikát assertz ji umísí jako poslední. retract(C) Tento cíl uspěje při nalezení prvé klauzule v databázi, která se unifikuje s klauzulí C, a z databáze ji vypustí. Při opakovaném vyhodnocení uspěje, pokud se v databázi nachází další taková klauzule. Predikát retractall vypustí všechny takové klauzule najednou. Klauzule C se zapisuje takto: fakt nebo (pravidlo)

7 Predikát clause Predikát clause zajišťuje nedestruktivní přístup ke klauzulím databáze. Při vyhodnocení cíle clause(Hlava,Tělo) s nastavenou hodnotou proměnné Hlava se hledá v databázi klauzule, jejíž hlava se unifikuje s hodnotou prvního argumentu. Tělo této klauzule se pak unifikuje s druhým argumentem. Při unifikaci faktů se za tělo považuje predikát true. Klauzule z databáze nelze hledat pomocí jejich těla. Při zpětném navracení uspěje predikát clause tolikrát, kolikrát je možné unifikovat klauzuli z databáze se dvojicí argumentů. Při každé unifikaci klauzule se vytváří nová sada proměnných.

8 Predikáty bagof, setof a findall Tyto predikáty umožňují získat všechna možná řešení současně. bagof(X,P,L) Vyhodnocením tohoto cíle se vytvoří seznam L všech objektů X takových, že je cíl P splněn (mezi X a P by měla existovat nějaká vazba vyjádřená společnými proměnnými). setof(X,P,L) Funguje podobně jako bagof, avšak seznam L je uspořádaný a bez případných duplicit. Uspořádání je pro atomy abecední, pro čísla podle hodnoty, a pro složené termy se řídí hlavním funktorem (případně nejvyšším rozdílným funktorem nebo argumentem zleva). findall(X,P,L) Funguje podobně jako bagof s tím rozdílem, že do seznamu L se dostanou všechny hodnoty X, které splňují cíl P pro libovolné hodnoty jeho volných proměnných.