Logikai programozás 2..

Slides:



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

T ESZTELÉS. C ÉLJA Minél több hibát találjunk meg! Ahhoz, hogy az összes hibát fölfedezzük, kézenfekvőnek tűnik a programot az összes lehetséges bemenő.
Sor láncolt ábrázolással
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.
Adatelemzés számítógéppel
A rendszerszintű diagnosztika alapjai
3. A programozás eszközei, programozás-technikai alapismeretek
Determinisztikus programok. Szintaxis: X : Pvalt program változók E : Kifkifejezések B : Lkiflogikai kifejezések C : Utsutasítások.
Rekurzió (Horváth Gyula és Szlávi Péter előadásai felhasználásával)
Kétértékűség és kontextusfüggőség Kijelentéseink igazak vagy hamisak (mindig az egyik és csak az egyik) Kijelentés: kijelentő mondat (tartalma), amivel.
Kocsisné Dr. Szilágyi Gyöngyi. Elérehet ő ség: aszt.inf.elte.hu/~szilagyi/ aszt.inf.elte.hu/~szilagyi Fogadó óra: hétf ő
5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.
MI 2003/ Alakfelismerés - még egy megközelítés: még kevesebbet tudunk. Csak a mintánk adott, de címkék nélkül. Csoportosítás (klaszterezés, clustering).
Minimax és problémaredukció, egyszerű példák INCK431 Előadó: Dr. Nagy Benedek Norbert Gyakorlatvezető: Kovács Zita 2011/2012. II. félév A MESTERSÉGES INTELLIGENCIA.
Szimmetrikus Programozás, AZ ALAPOK
Logikai programozás Prolog.
„Országos” feladat. Feladat: Egy tetszőleges, színes országokat tartalmazó térképen akar eljutni egy kommandós csapat egy országból egy másikba. Viszont.
Programozás I. Ciklusok
PROLOG PROGRAMOZÁSI NYELV
Ismeretalapú rendszerek alaptechnikái I. Szabályalapú rendszerek.
Ismeretalapú rendszerek alaptechnikái
Ismeretalapú rendszerek alaptechnikái I. Szabályalapú rendszerek.
Hálózati architektúrák
Modelltranszformációs szabályok automatikus generálása példák alapján Balogh Zoltán IV. évf. informatikus Konzulens: Dr. Varró Dániel Méréstechnika és.
Lénárt Szabolcs Páll Boglárka
Természetes és formális nyelvek Jellemzők, szintaxis definiálása, Montague, extenzió - intenzió, kategóriákon alapuló gramatika, alkalmazások.
Gépi tanulás Tanuló ágens, döntési fák, általános logikai leirások tanulása.
Tömbök és programozási tételek
Összetett adattípusok
Ekvivalenciák nyitott mondatok között Két nyitott mondatot ekvivalensnek mondunk, hha tetszőleges világban ugyanazok az objektumok teszik őket igazzá.
Atomi mondatok FOL-ban Atomi mondat általában: amiben egy vagy több dolgot megnevezünk, és ezekről állítunk valamit. Pl: „Jóska átadta a pikk dámát Pistának”
Függvényjelek (function symbols) (névfunktorok) FOL-ban Névfunktor: olyan kifejezés, amelynek argumentumhelyeire neveket vagy in- változókat lehet írni.
SICStus Objects Objektum orientált kiterjesztés a SICStus Prolog nyelvhez Pereszlényi Attila Az előadás.
Algoritmusok.
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 9.. Programok: EGY KIS ISMERET-TÁGÍTÁS – struktura.pl – operatorok.pl, precedencia.pl – útvonaltervezés – send_more_money (smm1.pl,
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..
Adatbázis-technológia
Mélységi bejárás Az algoritmus elve: Egy kezdőpontból kiindulva addig megyünk egy él mentén, ameddig el nem jutunk egy olyan csúcsba, amelyből már nem.
Objektum orientált programozás
Az algoritmuskészítés alapjai
Logikai programozás 3.. ISMÉTLÉS Elágazás-szervezés: a/ B :- A 11, A 12, …, A 1n. B :- A 21, A 22, …, A 2k. … B :- A m1, A m2, …, A mr. b/ B :- (A 11,
Algoritmizálás, adatmodellezés tanítása 8. előadás.
Logikai programozás BEVEZETÉS.
Programozás III KOLLEKCIÓK.
ProgramozásProgramozás célja hosszabb számítások elvégzése ill. kiíratása akkor érdemes programot írni, ha sok számolni való van illetve ha ugyanazt az.
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.
Algoritmusok és Adatszerkezetek Egy kifejezés lengyelformára hozása - bemutató.
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ő.
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.
Programozási nyelvek csoportosítása.
Programozás alapjai Készítette: Csiszár Nóra Anita
Programozási alapok.
Analitikus fák kondicionálissal
BFák Kiegyensúlyozott keresőfák
Logikai programozás 4..
Compiler illetve interpreter nyelvek
A házi feladatokhoz: 1.5: Azonosság Jelölések a feladatszám alatt:
Atomi mondatok Nevek Predikátum
Programozás C# -ban Elágazások.
Meta-programozás (von) Neumann-elv Program-programozás (vírusok)
Logikai programozás 2..
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Cím elrendezése képpel
Depth First Search Backtracking
Algoritmus készítés.
Előadás másolata:

Logikai programozás 2.

BEMELEGÍTŐ Definiáljuk a testvér (minimum féltestvér) fogalmát! testvere(A,B) :- szuloje(C,A), szuloje(C,B) , A \= B. szuloje(Idos, Fiatal) :- anyja(Idos, Fiatal) ; apja(Idos, Fiatal). anyja(Idos, Fiatal) , apja(Idos, Fiatal). vagy: szuloje(Idos, Fiatal) :- anyja(Idos, Fiatal). szuloje(Idos, Fiatal) :- apja(Idos, Fiatal).

MÉG EGYSZER A KOLLÉGISTÁK Valaki kollégista, ha vidéki és jó tanuló.

MÉG EGYSZER A KOLLÉGISTÁK videki(Diak,Kozpont) :- lakik(Diak, Varos), Varos \= Kozpont. jotanulo(Diak,Hatar) :- atlag(Diak, Atl), Atl >= Hatar. kollegista(Diak,Kozpont,Hatar) :- videki(Diak,Kozpont), jotanulo(Diak,Hatar). kollegista(Diak,Kozpont,Hatar) :- lakik(Diak, Varos), Varos \= Kozpont, atlag(Diak, Atl), Atl >= Hatar.

HF MEGBESZÉLÉSE Beolvasás/kiíratással : start :- write('Kérem a központot: '), read(Kozpont), write('Kérem az átlaghatárt: '), read(Hatar), kollegista(Diak, Kozpont, Hatar), writef('%w kollégista \n', [Diak]). Hátrány: csak egyetlen megoldást ír ki. Megoldás: A Prolog háttéralgoritmusa + némi „kényszer”

ELŐBB: A PROLOG MEGKÖZELÍTÉSI MÓDJAI A Prolog logikai (deklaratív nyelv), szabályaira mégis tekinthetünk deklaratív és procedurális módon is: Deklaratív szemlélet: Egy szabály egy logikai következtetés: a szabályfej pontosan akkor lesz igaz, ha bizonyos feltételek ÉS kapcsolata (szabálytörzs) igaz. Az azonos fejű szabályok vagy kapcsolatban állnak.

ELŐBB: A PROLOG MEGKÖZELÍTÉSI MÓDJAI B :- A11, A12 , …, A1n. B :- A21, A22 , …, A2m. … B :- Ar1, Ar2 , …, Ark. szabály-együttes a következő logikai állítással egyenértékű: A B állítás igaz, ha vagy az A11, A12 , …, A1n állítások mindegyike, vagy az A21, A22 , …, A2m állítások mindegyike, … vagy az Ar1, Ar2 , …, Ark állítások mindegyike igaz.

ELŐBB: A PROLOG MEGKÖZELÍTÉSI MÓDJAI Procedurális szemlélet: Egy szabály eljáráshívások sorozatának is tekinthető. Pontosabban: egy szabály egy eljárásnak felel meg. A szabályfejben szereplő predikátumnév az eljárás neve, argumentumai az eljárás paraméterei. Az eljárásban további eljárásokat hívunk meg, mégpedig a szabály-törzsben szereplő predikátumnevekkel azonosítható eljárásokat. Az azonos szabályfejű szabályok együttese ugyanilyen módon eljárásnak tekinthető, csak ez az eljárás elágazást is tartalmaz, melyben az elágazás egyes ágai az egyes szabálytörzsek. Belépési pont: A lekérdezés.

A PROLOG (egyik) HÁTTÉRALGORITMUSA Visszalépéses algoritmus: A kiértékelés elindul egy útvonalon, és addig tart, ameddig csak lehet: a/ sikeresen véget ért az útvonal; b/ hibás eredményhez jutunk. A b/ esetben az algoritmus egyetlen lépést visszalép, és ha az előző hívásnak van alternatívája, akkor végrehajtja azt.

A PROLOG (egyik) HÁTTÉRALGORITMUSA Visszalépéses algoritmus:  Pl.: B :- A11, A12, …A1k-1, A1k, A1k+1, …, A1n. B :- A21, A22, …, A2m. …

A KIÍRATÁSI PROBLÉMA MEGOLDÁSA Visszalépésre kényszerítés: start :- write('Kérem a központot: '), read(Kozpont), write('Kérem az átlaghatárt: '), read(Hatar), kollegista(Diak, Kozpont, Hatar), writef('%w kollégista \n', [Diak]), fail. start. Más írásmóddal: start :- write('Kérem a központot: '), read(Kozpont), write('Kérem az átlaghatárt: '), read(Hatar), kollegista(Diak, Kozpont, Hatar), writef('%w kollégista \n', [Diak]), fail; start.

CSALÁDFA Tegyük fel, hogy csak apák és fiúk vannak. Ismerjük az apa-fiú kapcsolatokat, írjuk fel: nagyapja(Idos, Fiatal) :- apja(Idos, Z), apja(Z, Fiatal). dedapja(Idos, Fiatal) :- apja(Idos, Z), nagyapja(Z, Fiatal). ukapja(Idos, Fiatal) :- apja(Idos, Z), dedapja(Z, Fiatal). szepapja(Idos, Fiatal) :- … ose(Idos, Fiatal) :- apja(Idos, Z), ose(Z, Fiatal).

CSALÁDFA Rekurzió: A szabálytörzs a szabályfejben lévő predikátumra hivatkozik. A rekurzió mindig két részből áll: rekurzív szabály megállító feltétel. ose(Idos, Fiatal) :- apja(Idos, Fiatal). ose(Idos, Fiatal) :- apja(Idos, Z), ose(Z, Fiatal).

CSALÁDFA - PÉLDA Írjuk fel a mellékelt családfát! apja(a,c). apja(a,b). apja(a,c). apja(b,d). apja(b,e). apja(e,f). ose(X,Y) :- apja(X,Y). ose(X,Y) :- apja(X,Z), ose(Z,Y).

KIÉRTÉKELÉS: ILLESZTÉSSEL Az illesztés feltételei: – Csak azonos nevű predikátumok illeszthetőek. – Csak azonos argumentumszámú predikátumok illeszthetőek. – Konstans saját magával illeszthető. – Változó konstanssal vagy másik változóval illeszthető.

ŐSE PÉLDA

CSALÁDFA - MÓDOSÍTÁS apja(a,c). apja(b,d). apja(b,e). apja(e,f). apja(a,b). apja(a,c). apja(b,d). apja(b,e). apja(e,f). ose(X,Y) :- apja(X,Y). ose(X,Y) :- apja(X,Z), ose(Z,Y). Jó-e így a második szabály?: ose(X,Y) :- ose(X,Z), apja(Z,Y).

CSALÁDFA - MÓDOSÍTÁS apja(a,c). apja(b,d). apja(b,e). apja(e,f). apja(a,b). apja(a,c). apja(b,d). apja(b,e). apja(e,f). ose(X,Y) :- apja(X,Y). ose(X,Y) :- apja(X,Z), ose(Z,Y). És mi történik, ha a szabályok sorrendjét is felcseréljük?: ose(X,Y) :- ose(X,Z), apja(Z,Y). ose(X,Y) :- apja(X,Y).