PROLOG PROGRAMOZÁSI NYELV

Slides:



Advertisements
Hasonló előadás
Deduktív adatbázisok.
Advertisements

MESTERSÉGES INTELLIGENCIA (ARTIFICIAL INTELLIGENCE)
Definíciók: Algoritmus: bármely véges sok lépéssel leírható tevékenység. Olyan pontos előírás, amely megmondja, hogy egy adott típushoz tartozó feladat.
Diagnosztika szabályok felhasználásával, diagnosztikai következtetés Modell alapú diagnosztika diszkrét módszerekkel.
Számítástechnika I. 2.konzultáció
Determinisztikus programok. Szintaxis: X : Pvalt program változók E : Kifkifejezések B : Lkiflogikai kifejezések C : Utsutasítások.
1 Előhang Világunk dolgainak leírásához gyakran használunk kijelentő mondatokat. Pl. Minden anya szereti gyerekeit. Júlia anya és Júlia gyereke Máté. Következmény:
Rekurzió (Horváth Gyula és Szlávi Péter előadásai felhasználásával)
Programozás alapjai A programozás azt a folyamatot jelenti, melynek során a feladatot a számítógép számára érthető formában írjuk le. C++, Delphi, Java,
Rekurzív SQL Rekurzió: Hierarchikus lekérdezések
Erősen összefüggő komponensek meghatározása
MI 2003/5 - 1 Tudásábrázolás (tudásreprezentáció) (know- ledge representation). Mondat. Reprezentá- ciós nyelv. Tudás fogalma (filozófia, pszichológia,
MI 2003/7 - 1 Az egyesítési algoritmus Minden kapitalista kizsákmányoló. Mr. Smith kapitalista. Mr. Smith kizsákmányoló.
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
Ág és korlát algoritmus
Szimmetrikus Programozás, AZ ALAPOK
Logikai programozás Prolog.
Logika 5. Logikai állítások Miskolci Egyetem Állam- és Jogtudományi Kar Jogelméleti és Jogszociológiai Tanszék március 10.
A digitális számítás elmélete
Reprezentációs függvény. Adva egy adattípus absztrakt és konkrét specifikációja: d a = ( A, F, E a ); d c = ( C, G, E c ); A = {A 0,..., A n };C = {C 0,...,
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Vizuális és web programozás II.
LOGIKA (LOGIC).
ISMERETALAPÚ RENDSZEREK SZAKÉRTŐ RENDSZEREK
MYCIN szakértői rendszer. MYCIN modell szakértői rendszer vér fertőzéseinek, gyógykezeléseknek meghatározását támogató orvosi diagnosztikai rendszer célvezérelt,
Ismeretalapú rendszerek alaptechnikái I. Szabályalapú rendszerek.
Ismeretalapú rendszerek alaptechnikái
LOGIKA (LOGIC).
Ismeretalapú rendszerek alaptechnikái I. Szabályalapú rendszerek.
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
Ismétlés A pascal program szerkezete: program programnev; Programfej
Kombinatorikus Programozás TDK vagy Szakdolgozat Téma Készítette: Kusper Gábor Minden jog fenntartva!
1 AAO folytatás ++ Csink László. 2 Rekurzív bináris keresés (rendezett tömbben) public static int binker(int[] tomb, int value, int low, int high) public.
Henkin-Hintikka játék (részben ismétlés) Alapfelállás: -Két játékos van, Én és a Természet (TW képviseli). - A játék tárgya egy zárt mondat: P. - Választanom.
Logikai programozás 6.. Problémafelvetés: diak(jani, 3.3, pecs). diak(laci, 3.7, kaposvar). diak(matyi, 4.1, pecs). diak(kati, 2.3, barcs). diak(jeno,
Logikai programozás 2..
Logikai programozás 9.. Programok: EGY KIS ISMERET-TÁGÍTÁS – struktura.pl – operatorok.pl, precedencia.pl – útvonaltervezés – send_more_money (smm1.pl,
Előadó: Nagy Sára Mesterséges intelligencia Kereső rendszerek.
Logikai programozás 8.. Adatok: ISMÉTLÉS: ADATBÁZISKEZELÉS A külső adatok a hatására bekerülnek a memóriába Lekérdezés: Ahogy eddig – pl.: szereti(jani,
Logikai programozás 5..
MI 2003/ Mi lenne a b legjobb választása? Statisztikai eljárásoknál az un. Fisher féle lineáris diszkriminancia függvény adja a legjobb szétválasztási.
Algoritmizálás, adatmodellezés tanítása 8. előadás.
Logikai programozás BEVEZETÉS.
MI 2003/6 - 1 Elsőrendű predikátumkalkulus (elsőrendű logika) - alapvető különbség a kijelentéslogikához képest: alaphalmaz. Objektumok, relációk, tulajdonságok,
Henkin-Hintikka-játék szabályai, kvantoros formulákra, még egyszer: Aki ‘  xA(x)’ igazságára fogad, annak kell mutatnia egy objektumot, amire az ‘A(x)’
Török Katalin és Marosi Nóra 11/c. Pascal: Az es években megjelent magas szintű programozási nyelv, közel áll az emberi gondolkodáshoz. Nevét.
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Korlátkielégítési problémák Autonóm és hibatűrő információs.
LOGIKA (LOGIC).
Útkeresések.
Deduktiv adatbázisok. Normál adatbázisok: adat elemi adat SQL OLAP adatbázisok: adat statisztikai adat OLAP-SQL … GROUP BY CUBE(m1,m2,..)
Algoritmizálás, adatmodellezés
Diszjunkt halmazok adatszerkezete A diszjunkt halmaz adatszerkezet diszjunkt dinamikus halmazok S={S 1,…,S n } halmaza. Egy halmazt egy képviselője azonosít.
1.  Szerzői:  Panagiotis Bouros (University of Hong Kong),  Shen Ge (University of Hong Kong),  Nikos Mamoulis (University of Hong Kong)  Esemény:
Iteráció, rekurzió, indukció. Iteráció iterációs módszer –egy adott műveletsort egymás után, többször végrehajtani megvalósítás –ciklusokkal pl. –hatványozás.
1 Relációs kalkulusok Tartománykalkulus (DRC) Sorkalkulus (TRC) - deklaratív lekérdezőnyelvek - elsőrendű logikát használnak - relációs algebra kifejezhető.
Félcsoport (semigroup) = ({s},{ *: s s  s [infix]}. semigroup is a type specification = sorts: s oprs: *: s s  s [infix] eqns: m 1, m 2, m 3  s (m 1.
Adatszerkezetek és algoritmusok 2008/ Algoritmus Az algoritmus szó eredete a középkori arab matematikáig nyúlik vissza, egy a i.sz. IX. században.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Utasítás és blokk. Elágazás típusai, alkalmazása Kovács.
Készítette: Weigel Szilvia számítástechnika szak III. évfolyam, Budapest – ADU A Logo programozási nyelv X.
Programozási nyelvek csoportosítása.
Kifejezések C#-ban.
Programozás C# -ban Elágazások.
Bevezetés a programozásba Algoritmikus gondolkodás
Mesterséges intelligencia
Nem módosítható keresések
ÍTÉLETKALKULUS (NULLADRENDŰ LOGIKA)
Algoritmus készítés.
Előadás másolata:

PROLOG PROGRAMOZÁSI NYELV

LOGIKAI PROGRAMOZÁS, PROLOG Logikai programozás alapgondolata: program megírása a logika nyelvén program végrehajtása tételbizonyítási algoritmussal Hagyományos programnyelvek/ logikai programozás Prolog: Programming in Logic 70-es évek, Európa logika, predikátumkalkulus, Horn klóz, rezolúció, lineáris input stratégia keresés, célvezérelt, mélységi keresés/visszalépéses keresés probléma redukció (és-vagy gráf) – összefüggések a részfák megoldásai között! – illesztés

PROLOG PROGRAM ELEMEI alap adatstruktúrák termek konstansok (atomok, ~ objektumkonstansok) a, a17, 127 változók (~ objektumváltozók) X, X23 funkcionális termek (~ függvények) a(X, Y), a(a(1), a(2)), a(d(X, Z), u) funktor + argumentumok (termek) A(X, Y) listák [1, 2, 3], [X| Y], [a(1), a(3)], [[1], [2, 3, 4]], [ ] fej (head), farok (tail)

PROLOG PROGRAM ELEMEI Horn klózok (formulák) A  B1  B2  . . .  Bn A, Bi: predikátumok következmény (fej, head) feltétel (törzs, body) következmény részben egy predikátum feltétel részben predikátumok "és" kapcsolata nem lehet tagadás A : B1, B2, . . . , Bn. feltételes állítás A. tényállítás B1, B2, . . . , Bn. célállítás

Elsőrendű logika jelöléseivel: PROLOG PROGRAM ELEMEI Példa: Elsőrendű logika jelöléseivel: x l eleme(x, [x|l]) x y l eleme(x, l)  eleme(x, [y|l]) Prolog jelöléssel: eleme(X, [X|L]). eleme(X, [Y|L]) : eleme(X, L). Prolog program impliciten összekapcsolt mondatok (klózok) minden változóhoz impliciten univerzális kvantor különböző klózok, különböző változók nincs globális változó (értékek illesztéssel)

PÉLDA: ÚTKERESÉS IRÁNYÍTOTT GRÁFON él(a, b). tények él(b, d). él(d, f). . . . (1) út(X, Y) : él(X, Y). szabályok (2) út(X, Y) : klózok között vagy él(X, Z), klóz törzs predikátumai között és út(Z, Y). Rekurzív szabály: fej predikátumszimbóluma a törzs predikátumszimbólumai között problémamegoldáshoz szükséges: triviális eset, amelyre a megoldás létezik (1) általános eset redukálása a triviális esetre (2) tail rekurzió – legkevesebb stack

PÉLDA: ÚTKERESÉS IRÁNYÍTOTT GRÁFON él(a, b). él(b, d). él(d, f). . . . (1) út(X, Y) : él(X, Y). (2) út(X, Y) : él(X, Z), út(Z, Y). ? - út(a, e) út/1 {X=a, Y=e} él(a, e)  út/2 {X=a, Y=e} él(a, b)  {Z=b} út(b, e) út/1 {X=b, Y=e} él(b, e)  út/2 {X=b, Y=e} él(b, d)  {Z=d} út(d, e) út/1 {X=d, Y=e} él(d, e)  út/2 {X=d, Y=e} él(d, f)  {Z=f} út(f, e) …. él(g, e)  él(g, Z)  KÖTÉSI LISTA STACK él(d, c) {Z=c} …. VISSZALÉPÉS

KLÓZOK KEZELÉSE visszalépés (retry) sikertelen kilépés (fail) sikeres kilépés (success) belépés (enter)

KÖVETKEZTETÉS PROLOGBAN mélységi keresés (nem teljes) célállítás igazolása részcélok igazolásával (probléma redukció) visszalépéses keresés (időben meghatározott visszalépés) klózok feltételrészének vizsgálata: balról jobbra klózok alkalmazása: leírási sorrend szerint

ILLESZTÉS (UNIFIKÁCIÓ) Nincs kitűntetett input/output – stack: illesztési lista két konstans illeszthető, ha azonosak a  a a  a1 a  17 változó bármivel illeszthető X  18 a  Y Z  a(13) X  Y két funkcionális term illeszthető, ha funktoruk azonos argumentumszámuk azonos argumentumaik illeszthetők a(17)  a(18) a(X)  a(7) a(S, 3)  a(Z) a(A, B)  a(3, 4) a(A, A)  a(t, u) a(X)  a(a(a(7)))

ILLESZTÉS (UNIFIKÁCIÓ) X f(X)  occur check kihagyva az unifikációból nem helyes mintaillesztés szerepe: kiválasztódik az adott eljáráshívásra alkalmazható eljárásdefiníció paraméterátadás stack: kötési lista döntési helyek

A PROLOGRÓL … összes megoldás előállítása kör a gráfban célállítás, fail. út(a, X), fail. X?? út(a, X), write("Út vezet a-ból ", X, "-be.\n"), fail. kör a gráfban végtelen út kiküszöbölése: már vizsgált pontok megőrzése út(X, Y, P) : él(X, Y), not(eleme(Y, P)). út(X, Y, P) : él(X, Z), not(eleme(Z, P), út(Z, Y, [Z|P]).

A PROLOGRÓL … legjobb megoldás open lista ?? megoldások gyűjtése ?? – globális változó nincs – dinamikus adatbáziskezelő predikátumok értékelés open lista ?? egy lehetséges válasz + választási (visszatérési) pontok mindig egyetlen megoldási úttal foglalkozik (megfelelő helyettesítésekkel) visszalépésnél: bizonyos kötések megszűntetése

beépített predikátumok A PROLOGRÓL … beépített predikátumok aritmetikai predikátumok +, , *, , abs, sin, . . . = (is) összehasonlítás X = 3+4, Y = X*15, X = X+1, 7 = X /2 ki- és bevitel write, read, . . . kifejezéskezelő predikátumok concat, fronttoken, str_int, . . . dinamikus adatbáziskezelő predikátumok assert, retract, . . . vezérlési predikátumok cut - ! fail

A PROLOGRÓL … cut - ! (/) mindig igaz predikátum backtrack során a cut-ot tartalmazó részcél hamis lesz „felégeti a hidat maga mögött” Ae, A, Au részcélok A :- B1, B2, B3, … A :- … cut nélküli visszalépés Ae, A, Au részcélok A :- B1, B2, !, B3, … A :- … visszalépés korlátozása 1 1 FAIL FAIL 2

PÉLDA: ÚTKERESÉS IRÁNYÍTOTT GRÁFON él(a, b). él(b, d). él(d, f). . . . út(X, Y) : él(X, Y). út(X, Y) : él(X, Z), út(Z, Y). ?- út(a,X). ! nélkül – összes út a-ból (10 megoldás) ! használatával: első megtalált út (1 megoldás) – (a, b) 1 él hosszú utak a-ból (2 megoldás) – (a, b), (a, c)  + első 2 él hosszú út a-ból (3 megoldás) –  + (a, d)  + első ágon levő utak + ág csomópontjaiból 1 élhosszal tovább – (7 megoldás) -  + (a, f), (a, g), (a, c), (a, c) összes út (10 megoldás)     

program végrehajtásának irányítása A PROLOGRÓL … tagadás tagadás, mint fail operátor not P  nincs elég információ P bizonyításához meta-programok program végrehajtásának irányítása klózok sorrendje – irányítja az elágazásokat klózokon belüli predikátumok sorrendje – meghatározza a részcélok sorrendjét kérdésben levő klózok sorrendje – meghatározza a részcélok sorrendjét visszalépésre kényszerítés (fail) visszalépés korlátozása (cut, !) – fa egy részének letiltása

program módosítása futás közben A PROLOGRÓL … program módosítása futás közben adat/program: klóz retract(klóz/tény), assert(klóz/tény), . . . programstruktúrák metaprogramok not(A) : A, !, fail. not(A). if(A, B, C) : A, !, B. if(A, B, C) : C. then(A, B) : A, B. else(A, B) : not(A), B. párhuzamos prologok klózok kiosztása a processzorok között CSProlog

A PROLOGRÓL … előnyök: hátrányok: jól-olvashatóság („beszédes” predikátum- és változónevek) könnyű módosíthatóság a problémát nem nekünk kell megoldani (beépített tételbizonyító algoritmus) hátrányok: nem minden probléma fejezhető ki jól logikai formalizmussal (pl. numerikus számítások) hiányos ismeretek kezelésére nem képes (monoton logikát használ)

EGY DEKLARATÍV PROLOG PROGRAM Három zenész problémája egy nemzetközi zenekar 3 zenésze szólót játszik egy darabban, mindenki egyszer a zongorista játszik először John szaxofonon játszik az ausztrál előtt Márk – aki az USA-ból jött – a hegedűs előtt játszik egy szólista Japánból jött egy szólistát Sam-nek hívnak Ki honnan jött, milyen hangszeren és milyen sorrendben játszik?

EGY DEKLARATÍV PROLOG PROGRAM 1. 2. 3. Ausztrália USA Japán zongora szaxofon hegedű John - + Márk Sam

EGY DEKLARATÍV PROLOG PROGRAM S a probléma megoldása ha S három szólistából áll és S első tagja X zongorán játszik és S-nek van két rendezett tagja Y, Z és Y neve John és Y szaxofonon játszik és Z Ausztráliából jött és S-nek van két rendezett tagja Y1, Z1 és Y1 neve Márk és Y1 az USA-ból jött és Z1 hegedűn játszik és S egy tagja U Japánból jött és S egy tagjának V neve Sam. megoldás(S) if szólisták(S), első(X,S), játszik(X,zongora), rendezett_tag (Y,Z,S), név(Y,john), játszik(Y,szaxofon), ország(Z,ausztrália), rendezett_tag (Y1,Z1,S), név(Y1,márk), ország(Y1,usa), játszik(Z1,hegedű), tag(U,S), ország(U,japán), tag(V,S), név(V,sam).

EGY DEKLARATÍV PROLOG PROGRAM megoldás(S) if szólisták(S), első(X,S), játszik(X,zongora), rendezett_tag (Y,Z,S), név(Y,john), játszik(Y,szaxofon), ország(Z,ausztrália), rendezett_tag (Y1,Z1,S), név(Y1,márk), ország(Y1,usa), játszik(Z1,hegedű), tag(U,S), ország(U,japán), tag(V,S), név(V,sam). szólisták(sz(_,_,_)). első(X,sz(X,_,_)). rendezett_tag(X,Y,sz(X,Y,_)). rendezett_tag(X,Y,sz(_,X,Y)). rendezett_tag(X,Y,sz(X,_,Y)). tag(X,sz(X,_,_)). tag(X,sz(_,X,_)). tag(X,sz(_,_,X)). név(szólista(N,_,_),N). játszik(szólista(_,H,_),H). ország(szólista(_,_,O),O).