PROLOG strategie vyhodnocení dotazu

Slides:



Advertisements
Podobné prezentace
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Nalezení nejkratší vzdálenosti mezi uzly dopravní sítě Předmět: Teorie dopravy - cvičení.
Advertisements

Ekonomicko-matematické metody č. 11 Prof. RNDr. Jaroslav Ramík, CSc.
Redukce lůžek Existuje prostor pro redukci lůžek akutní péče?
Využití informačních technologií při řízení obchodního řetězce Interspar © Ing. Jan Weiser.
Operační program Vzdělávání pro konkurenceschopnost Název projektu: Inovace magisterského studijního programu Fakulty ekonomiky a managementu Registrační.
Experimentální metody oboru – Pokročilá tenzometrie – Měření vnitřního pnutí Další využití tenzometrie Měření vnitřního pnutí © doc. Ing. Zdeněk Folta,
Systém správy dokumentace akreditované zkušební laboratoře Bc. Jan Randl, 4912.
NÁZEV ŠKOLY: Masarykova základní škola a mateřská škola Melč, okres Opava, příspěvková organizace ČÍSLO PROJEKTU:CZ.1.07/1.4.00/ AUTOR:Mgr. Vladimír.
Principy Základních registrů Ing. Ondřej Felix, CSc.
©Ing. Václav Opatrný. V úvodních hodinách elektrotechniky jsou žáci seznamováni s veličinami, které popisují známý fyzikální svět, získávají představu.
Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Mgr. Vladimír Mikulík. Slezské gymnázium, Opava, příspěvková organizace. Vzdělávací materiál.
Rozhodčí řízení Přednáška 5-6 VŠFS Rozhodčí soudy /RS/ stálé rozhodčí instituce -rozhodčí soudy (RS) Zřízeny podle právních předpisů státu, kde.
Mnohočleny Gymnázium a Jazyková škola s právem státní jazykové zkoušky Zlín Tematická oblast Matematika – výrazy s proměnnými Datum vytvoření
Kalkulátor emisí skleníkových plynů
Číselné množiny - přehled
Zajištění obsluhy všech úseku dopravní sítě Předmět: Teorie dopravy - cvičení Ing. František Lachnit, Ph.D.
Slovní úlohy o společné práci
Název prezentace (DUMu): Elektrický obvod, napětí, proud
Řešení nerovnic Lineární nerovnice
ČÍSLO PROJEKTU CZ.1.07/1.5.00/ ČÍSLO MATERIÁLU 1 – Množiny – teorie
Lineární rovnice a nerovnice I.
Model důchod-výdaje.
Výukový materiál zpracován v rámci projektu
Dělení mnohočlenů mnohočlenem
Algoritmizace - opakování
Algoritmizace - opakování
Financováno z ESF a státního rozpočtu ČR.
Lineární rovnice Ekvivalentní úpravy
8.1 Aritmetické vektory.
8.1.2 Podprostory.
ADT zásobník - příklad Prakticky aplikovatelný příklad využití ADT zásobník je vyhodnocování aritmetických výrazů v Postfixové notaci: Pro zápis aritmetických.
Databáze MS ACCESS 2010.
Procvičení vzorců a funkcí v rámci jednoho i více listů
Maďarská metoda Kirill Šustov Michal Bednář Stanislav Běloch
PROLOG strategie vyhodnocení dotazu
Poměr v základním tvaru.
Schvalovací proces + hodnoticí kritéria
Formální úprava rešerše
ArchiCAD nástroj Deska
Kvadratické nerovnice
Schvalovací proces + hodnoticí kritéria
Slovní úlohy o společné práci stejný čas
ČÍSLO PROJEKTU CZ.1.07/1.5.00/ ČÍSLO MATERIÁLU
Obchodní akademie, Střední odborná škola a Jazyková škola s právem státní jazykové zkoušky, Hradec Králové Autor: Mgr. Lenka Marková Název materiálu:
VY_32_INOVACE_62.
Řešení nerovnic Lineární nerovnice
Stavební fakulta ČVUT, B407
8.1.3 Lineární obal konečné množiny vektorů
DIGITÁLNÍ UČEBNÍ MATERIÁL
Překladače Syntaktická analýza
Rovnice základní pojmy.
NÁZEV ŠKOLY: Základní škola Josefa Bublíka, Bánov
Výroková logika Analyzuje způsoby skládání jednoduchých výroků do výroků složených pomocí logických spojek. 1.
Digitální gramotnost Informatické myšlení
Slovní úlohy o společné práci
Jiří Vyskočil, Marko Genyg-Berezovskyj 2010
Základní statistické pojmy
Fronta (1) Dynamická datová struktura typu FIFO (First In First Out)
Poměr v základním tvaru.
Název operačního programu: OP Vzdělávání pro konkurenceschopnost
Rozoluiční princip.
KOMBINACE BEZ OPAKOVÁNÍ
Dynamické programování Úloha batohu neomezená
Základní algoritmy Prologu
Lineární funkce a její vlastnosti
Základy infinitezimálního počtu
Grafy kvadratických funkcí
Teorie chyb a vyrovnávací počet 2
Dělitelnost přirozených čísel
Slovní úlohy o společné práci − 3
Transkript prezentace:

PROLOG strategie vyhodnocení dotazu

Program v PROLOGu Konečná uspořádaná množina faktů a pravidel (klauzulí), která se týkají téhož predikátu (t.j. predikátu uvedeného jako hlava pravidla), se nazývá definice predikátu. Program tvoří množina definic všech použitých predikátů. Pro názornost budeme dále předpokládat, že klauzule v programu jsou vzestupně očíslovány, a to vždy od čísla 1. Jak popíšeme vztahy v grafu g0? Použijme označení hrana(Od,Do) cesta(Odkud,Kam) a b d e c g0

Příklad „graf g0“, hledání cesty hrana(a,b). hrana(a,c). hrana(c,d). hrana(c,e). c1(Y,Y). c1(Z,K):-hrana(Z,M),c1(M,K). c2(Y,Y). c2(Z,K):-c2(Z,M),hrana(M,K). c3(Z,K):-hrana(Z,M),c3(M,K). c3(Y,Y). c4(Z,K):-c4(Z,M),hrana(M,K). c4(Y,Y). Existuje cesta mezi uzly b a d nebo mezi a a c? Které z řešení c1, c2, c3 a c4 je nejlepší? a c b d e

Vyhodnocení dotazu Vyhodnocení dotazu ?-d1,...,dn. programem P probíhá tak, že se program snaží postupně „zjednodušovat“ výchozí dotaz opakovaným využíváním svých klauzulí s cílem vytvořit dotaz prázdný. Jakmile se podaří dotaz redukovat na prázdný, vyhodnocení dotazu končí úspěchem: znamená to, že formule $ (d1 & ... & dn) je logickým důsledkem programu P. Při postupném „zjednodušování“ výchozího dotazu je nutné postupovat systematicky. Postup definuje strategie PROLOGu

Zpracování log. programu (= vytváření derivačního grafu podle SLD resoluce) obsahuje 2 zdroje nedeterminismu: který podcíl rozvíjet? výběrové pravidlo – „zleva-do-prava“ které pravidlo použít? prohledávání derivačního grafu do hloubky 3 způsoby ukončení algoritmu při zpracování dotazu (odpovídají situaci, kdy není důvod/zdroje pokračovat): dotaz byl redukován na prázdný, tj. výchozí dotaz byl splněn …ÚSPĚCH (success) všechny možnosti, jak řešit výchozí dotaz byly použity a selhaly … KONEČNÉ SELHÁNÍ (finite failure), neukončený výpočet …

?-d1,...,dn. Pro vyhodnocování dotazu je vytvářen zásobník - aktuální verze dotazu je přidána na jeho vrch a s tou se dále pracuje: Aktuální dotaz a jeho jednotlivé podcíle se zpracovávají zleva-doprava (nejdřív se zcela “vyřeší“ čili „odstraní“ d1, ...). Výsledkem je upřesněná informace o hodnotě proměnných z řešeného dotazu získaná pomocí unifikace. Pro „zjednodušení“ podcíle d1 (i dalších) se vždy postupně zkoušejí všechny klauzule z definice odpovídajícího predikátu (vychází se z jejich pevně daného uspořádání). Pro názornost budeme dále předpokládat, že každý atom dotazu je doplněn o informaci o čísle poslední klauzule dosud použité pro jeho řešení. Pro výchozí dotaz je to číslo 0: ?-d1{0},...,dn {0}.

Strategie Prologu ?- rodic(ludmila,vaclav){0}. ?- matka(X,václav). {0} 1 ?- matka(X,václav). {0} Program „rodič“ zena(drahomira). zena(ludmila). rodic(ludmila,vaclav). rodic(ludmila,boleslav). matka(X,Y):- zena(X),rodic(X,Y). Dotaz: ?- matka(X,vaclav). X=ludmila Yes 2 ?- zena(X){0}, rodic(X,vaclav){0}. ?- matka(X,václav){5}. Slepá cesta 2 ?- rodic(drahomira,vaclav){0}. X=drahomira ?- zena(X){1}, rodic(X,vaclav){0}. ?- matka(X,václav). {5} Zpětný chod 4 ?- . ?- rodic(ludmila,vaclav){0}. X=ludmila ?- zena(X){2}, rodic(X,vaclav){0}. ?- matka(X,václav). {5} 3

Zpracování zásobníku s vrchním prvkem ?- Q1{k1},Q2{k2}, ... , Qm{km}. Existuje v programu P nějaká klauzule s číslem vyšším než k1, kterou lze použít pro řešení cíle Q1? + - (Nejbližší taková klauzule má číslo j a tvar {j} Q1 :- R1,...,Rp.)  Proveď tyto úpravy: Změň odkaz v právě zprac. dotazu ?- Q1{ j },Q2{k2}, ... , Qm{km}. Na vrch zásobníku přidej nový dotaz ?- R1{0},...,Rp{0} , Q2{k2}, ... , Qm{km} Použij zpětný chod, tj. odeber vrchní prvek zásobníku Je zásobník prázdný? - + Je nově přidaný dotaz prázdný? + - Úspěch ! Neúspěch ! Pokračuj ve zpracování zásobníku

Rekurzivní pravidla Nerekurzivní definice: Rekurzivní definice: dědeček(U,Z):-muž(U), rodič(U,V), rodič(V,Z). pradědeček(A,B):-muž(A), rodič(A,C), rodič(C,D), rodič(D,B). rod_linie(P,PP):-rodič(P,PP). rod_linie(P,PP):-dědeček(P,PP). rod_linie(P,PP):-pradědeček(P,PP)... Rekurzivní definice: rod_linie(P,PP):-rodič(P,P1),rod_linie(P1,PP).

g1 a b d e c

Jaké odpovědi dávají různé varianty programu? Log.program g0 Dotaz verze1 verze2 verze3 verze4 ?-ci(a,e). Yes;no Yes;abort abort ?-ci (b,e). no hrana(a,b). hrana(a,c). hrana(c,d). hrana(c,e). c1(Y,Y). c1(Z,K):-hrana(Z,M),c1(M,K). c2(Y,Y). c2(Z,K):-c2(Z,M),hrana(M,K). c3(Z,K):-hrana(Z,M),c3(M,K). c3(Y,Y). c4(Z,K):-c4(Z,M),hrana(M,K). c4(Y,Y). ?- c1(a,e). ?-c2(a,e). ?-c3(a,e). ?-c4(a,e).

Jaké odpovědi dávají různé varianty programu? Po přidání hrany h(b,a). hrana(a,b). hrana(a,c). hrana(c,d). hrana(c,e). hrana(b,a). c1(Y,Y). c1(Z,K):-hrana(Z,M),c1(M,K). c2(Y,Y). c2(Z,K):-c2(Z,M),hrana(M,K). c3(Z,K):-hrana(Z,M),c3(M,K). c3(Y,Y). c4(Z,K):-c4(Z,M),hrana(M,K). c4(Y,Y). ?- c1(a,e). Log.program g1 Dotaz verze1 verze2 verze3 verze4 ?-ci (a,e). abort Yes;yes,… ?-ci (b,e).

Jaké odpovědi dávají různé varianty programu? Log.program g0 Dotaz verze1 verze2 verze3 verze4 ?-ci (a,e). Yes;no Yes;abort abort ?-ci (b,e). no Po přidání hrany h(b,a). Log.program g1 Dotaz verze1 verze2 verze3 verze4 ?-ci (a,e). abort Yes;yes; … ?-ci (b,e).

Způsoby ukončení logického programu Zpracování log. programu = vytváření derivačního grafu podle SLD resoluce – používá prohledávání do hloubky cíl splněn – Yes + substituce za proměnné cíl selhal – No neukončený výpočet – např. zacyklení Krabičkový model výpočtu – predikát a jeho brány Call Exit Fail Redo

Krabičkový model výpočtu – složený predikát Exit Call predikát1 Call predikát2 Exit Fail Redo Fail Fail

Pravidla pro sestavení programu v Prologu Postupujeme od jednoduššího ke složitějšímu: FAKTA PRAVIDLA bez rekurze PRAVIDLA s rekurzí - rekurzi na konec pravidla Operace charakteristické pro Prolog: Srovnávání (matching) Unifikace Zpětný chod

Seznam a jak jej obratit s využitím predikátu spoj(L1,L2, Vysledek) spoj([],S1,S1). spoj([H|T],S1,[H|S]):-spoj(T,S1,S). o1([],[]). o1([X|L],S):-o1(L,L1),spoj(L1,[X],S). S využitím pomocné proměnné (akumulátor) o2([],L,L). o2([H|T],M,V):- o2(T,[H|M],V). Srovnejte délku výpočtu obou řešení!