Meta-programozás (von) Neumann-elv Program-programozás (vírusok)

Slides:



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

HTML enhanced for web apps! Fodor Krisztián
Összefoglalás Hardver,szoftver,perifériák Memóriák fajtái
Diagnosztika szabályok felhasználásával, diagnosztikai következtetés Modell alapú diagnosztika diszkrét módszerekkel.
NEMMONOTON KÖVETKEZTETÉS (NONMONOTONIC REASONING).
Hálózati architektúrák
Az első program, avagy ismerkedés a nyelvvel
Bevezetés a Java programozásba
11. előadás (2005. május 10.) A make segédprogram Alacsony szintű műveletek és bitmezők Fájl, katalógus rendszer hívások 1.
7. előadás (2005. április 12.) Láncolt lista File kezelés 1.
A CLIPS keretrendszer CLIPS "C" Language Integration Production System.
Logikai programozás Prolog.
Az UML 4 rétegű metamodell szerkezete
Ficsor Lajos Template-ek CPP8/ 1 Template-ek. Ficsor Lajos Template-ek CPP8/ 2 A template fogalma Kiindulási probléma: tetszőleges típusokon kellene ugyanolyan.
Bevezetés a C++ programozási nyelvbe
PROLOG PROGRAMOZÁSI NYELV
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
Ismeretalapú rendszerek alaptechnikái I. Szabályalapú rendszerek.
MYCIN Szakértői rendszer.
A számítógép működése TAKÁCS BÉLA
A programozás alapjai A számítógép számára a feladat meghatá- rozását programozásnak nevezzük. Ha a processzor utasításait használjuk a feladat meghatározásához,
Access XP Kifejezés-szerkesztő Összehasonlító operátorok:
Grafikus tervezőrendszerek programozása 8. előadás.
Alprogramok deklarációja, definíciója és meghívása Páll Boglárka.
Feladat: 1.Írjunk eljárást amely egy paraméterként megadott stringből kitörli az összes ‘b’ betűt. 2.Írjunk eljárást amely beolvassa egy személy adatait.
Félévin szereplő tipusfeladatok
Természetes és formális nyelvek Jellemzők, szintaxis definiálása, Montague, extenzió - intenzió, kategóriákon alapuló gramatika, alkalmazások.
Fájlkezelés Pascalban
Összetett adattípusok
1.4. Fordítás, szerkesztés, az objektumkönyvtár használata.
Turbo Pascal Indítás: C:\LANGS\Turbo Pascal Turbo Pascal.
Fák.
SICStus Objects Objektum orientált kiterjesztés a SICStus Prolog nyelvhez Pereszlényi Attila Az előadás.
Ciao prolog Kontra Gergely 2 Ciao prolog komponensek ciaoc prolog fordító ciaosh interaktív prolog debugger 4-kapus nyomkövetés, beágyazható.
Keresőrendszerek.
A gyakorlatok munkakörnyezete
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,
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..
HF MINTA 2012/2013. ősz. HF Minta  Objektum-orientált program  „Adatvezérelt” alkalmazás írása  Fájl kezelés (olvasás, írás)  Menü készítése  5-6.
HTML ÉS PHP (Nagyon) rövid áttekintés. ADATBÁZISRENDSZEREK MŰKÖDÉSI SÉMÁJA Felh. interakció DB Connector MySQL ? A gyakorlaton:
Logikai programozás. ISMÉTLÉS Fibonacci sorozat: a/ fibonacci(1,1). fibonacci(2,1). fibonacci(N,F) :- N > 1, N1 is N - 1, N2 is N - 2, fibonacci(N1, F1),
Mesterséges Intelligencia 1. Eddig a környezet teljesen megfigyelhető és determinisztikus volt, az ágens tisztában volt minden cselekvésének következményével.
Algoritmusok és Adatszerkezetek Egy kifejezés lengyelformára hozása - bemutató.
Intelligens Mérnöki Rendszerek Laboratórium Alkalmazott Matematikai Intézet, Neumann János Informatikai Kar, Óbudai Egyetem Mielőtt a virtuális térbe lépnénk.
PÁRHUZAMOS ARCHITEKTÚRÁK – 13 INFORMÁCIÓFELDOLGOZÓ HÁLÓZATOK TUDÁS ALAPÚ MODELLEZÉSE Németh Gábor.
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.
Fájlkezelés Programozási tételek
Felhasználók, felhasználócsoportok, jogosultságok.
Programok készítése és futtatása. Integrált fejlesztői környezet (IDE) tartalmaz:  szövegszerkesztőt a program forráskódjának szerkesztésére,  fordítóprogramot.
Könyvtárstruktúra, felhasználói és rendszerkönyvtárak Fájlkiterjesztések, attribútumok és engedélyek Takács Béla 2016.
Adatstruktúrák Algoritmusok Objektumok
Logikai programozás 7..
Logikai programozás 10..
Logikai programozás 8..
Neumann János Informatikai Kar
Logikai programozás 4..
Compiler illetve interpreter nyelvek
Beépített függvények használata programozáskor
A CLIPS keretrendszer
Bevezetés a programozásba Algoritmikus gondolkodás
Logikai programozás 2..
Hálózati architektúrák
ÍTÉLETKALKULUS (NULLADRENDŰ LOGIKA)
1 Tudásbázis követelmények a digitális korszakban Gyulay Tibor tudásmenedzsment szakértő előadása „A tacit (avagy a hallgatólagos tudás) jövője a negyedik.
Előadás másolata:

Meta-programozás (von) Neumann-elv Program-programozás (vírusok) Programállapotot befolyásoló (önprogramozó) beépített eljárások

Beépített eljárások: dinamikus programkezelés Dinamikus predikátum direktíva : :- dynamic(NAME/NARGS). Új klózok felvétele: asserta(CLAUSE), assertz(CLAUSE) Példa: ?-assertz((p(1,X):-q(X))), asserta(p(2,0)), assertz((p(2,Z):-r(Z))), listing(p). p(2,0). p(1,A):-q(A). p(2,A):-r(A).

retract(CLAUSE) kitörli a CLAUSE mintára illeszkedő klózt retract(CLAUSE) kitörli a CLAUSE mintára illeszkedő klózt. Nemdeterminisztikus!! ?-retract((p(2,_):-_)), listing(p), write(----------), nl, fail. p(1,A):-q(A). p(2,A):-r(A). ------------- p(1,A):-q(A). ------------- retractall(HEAD) kitörli a HEAD-fejre illeszkedő összes klózt retractall(HEAD):- retract((HEAD:-_)), fail. retractall(_).

Klóz keresése/lekérdezése programból… clause(+HEAD,?BODY). Megvizsgálja, hogy létezik-e HEAD fejű és BODY testű klóz. Nemdeterminisztikus!! PÉLDA: Metainterpreter (Prolog interpreter Prologban)… %mode meta(:GOAL). meta(true):- !. meta((G1,G2)):- !, G1, G2. meta((G1;G2)):- !, (G1; G2). meta(G):- clause((G,GS)), meta(GS). Megjegyzések: 1. Nem kezel beépítetteket 2. Nem definiált predikátumokra hamisat ad 3. Nem kezel vágót 4. Csak dinamikusokra működik

Meta-példa: nyomkövetés trac(GOAL):- trac(GOAL,1). %trac(:GOAL,+INDENT) trac(true,_):- !. trac((G1,G2),I):- !, trac(G1,I), trac(G2,I). trac((G1;G2),I):- !, (trac(G1,I); trac(G2,I)). trac(G,I):- ( trac(GOAL,I,'>'); trac(GOAL,I,'-'), fail ), I2 is I+2, clause(G,GS), trac(GS,I2), ( trac(GOAL,I,'+'); trac(GOAL,I,'<'), fail ). ÉS, VAGY, true nincs nyomkövetve

%mode trac(?GOAL,+INDENT,+PORT). trac(GOAL,INDENT,PORT):- tab(INDENT), write(PORT), write(GOAL), nl.

Összes megoldás keresése Tiszta Prologban (nem korlátozott számú) alternatív megoldások nem foghatók listába (Tiszta SQL-ben (nem korlátozott számú) külön sorokban levő adat nem fogható egy rekordba) mocskos Prolog (programkezelő beépítettekkel) magasabb rendű eljárások (amikor az eljárás maga is paraméter) findall(?Template,:Goal,?Bag). - Template: a Goal része - Goal: meghívható hívás-sorozat - Bag: Template alternatív lekötéseiből alkotott lista (Bag!)

Pl: nap(‘hétfő’). nap(kedd). nap(szerda). nap(‘csütörtök’). nap(‘péntek’). nap(szombat). nap(‘vasárnap’). ?-findall(X,nap(X),HET). HET=[‘hétfő’,kedd,szerda,’csütörtök’,’péntek’, szombat,’vasárnap’]

findall/3 megvalósítása %mode forAll(:PRE,:CONS). forAll(PRE,CONS):- \+ (PRE, \+ CONS). :- dynamic all/1. %mode findAll(?VAR,:GOAL,?BAG). findAll(VAR,GOAL,BAG):- forAll(GOAL,assert(all(VAR))), collectAll(BAG). %mode collectAll(?BAG) collectAll(BAG):- retract(all(X))->BAG=[X|TAIL], collectAll(TAIL); BAG=[].

Szakértő rendszerek 1. Tudásvezérelt (knowledge driven) rendszerek. A tudásállomány: a program többi részétől jól elkülönült deklaratív jellegű tudásállomány (az ábrázolt világ vmilyen modellje) a modell eredendően hiányos, esetleg ellentmondásos növelhető/csökkenthető méretű, + Tudás karbantartó alrendszer (szerkesztő, begyűjtő, ellentmondás feloldó stb. „knowledge acquisition”) + kiértékelő/végrehajtó/értelmező /következtető motor (engine) + Magyarázatadó alrendszer (explanation)

Barkochba program: nano szakértő rendszer Tudásállomány: szabályok: állat(X):-nyávog(X) tények: állat(egér). Egy definíció mindig n-1 szabályból+1 tényből áll Motor: metainterpreter, amely a feltételek kérdéseire párbeszédes választ vár utolsó állításnál rákérdez Tudásbegyűjtő: ha a rákérdezés sikertelen volt, akkor újabb feltételekkel bővíti a definíciót…

megkeres(CALL,X):- clause(CALL,BODY), ( BODY=true->write(CALL), write('?'), nl, read(igen), !; write(BODY), write('?'), nl, read(igen), !, megkeres(BODY,X) ); write('Hogy hívják?'), nl, read(X), write('Miben különbözik?'), nl, read(TUL), CALL=..[NAME|_], HEAD=..[NAME,Y], BODY=..[TUL,Y], LASTFACT=..[NAME,_], retract(LASTFACT), assert((HEAD:-BODY)), assert(LASTFACT), FACT=..[TUL,X], assert(FACT). start:- assert(allat(macska)), repeat, megkeres(allat(X),X), write(X), nl, write('Folytassam?'), nl, \+ read(igen), !.

Mi hiányzik a Barkochbából? (1. Kezdeti tudásbázis betöltés/kiírás.) 2. Magyarázatadás. Keresési fa: csomópontjai célsorozatok, élei redukciós műveletek. HOW/Hogyan? magyarázat a keresési fa teljes bejárt részét megjeleníti (gyakorlatilag offline/postmortem trace nem kiírja, hanem összegyűjti… WHY/Miért? Magyarázat  csak a gyökértől a sikeres végpontig vezető utat jeleníti meg…

Programbetöltés consult(FILENAME) fájl klózait betölti Felhasználónak kell definiálnia! term_expansion(+Term1, -Term2) A Term1 beolvasott kifejezés Term2-be történő átalakítását vezérli (Term2 kerül betöltésre). (Prolog makrókifejtés). Ha Term2: :- GOAL vagy ?- GOAL formájú, akkor direktívaként értelmezi. Ha Term2 lista, akkor mindet betölti. goal_expansion(+Goal1, -Goal2) A Goal1 beolvasott kifejezés Goal2-be történő átalakítását vezérli. Csak tényleges célsorozatokra, ill. metahívások argumentumaira van meghíva. Használat: Definite Clause Grammar (DCG) nyelvtandefiníciós eszköz…

(Csatorna) I/O see(FILE) megnyitás olvasásra seen olvasás bezárása tell(FILE) megnyitás írásra told írás bezárása read(EXPR) Prolog kifejezés olvasása write(EXPR) Prolog kifejezés írása nl Soremelés

„Miért” magyarázat… állat(X):-tollas(X). állat(X):-vízbenÉl(X). állat(macska). tollas(X):-repül(X). tollas(X):-fut(X). tollas(tyúk). fut(strucc). Megoldás: a ‘Megkeres’ egy újabb paraméterben gyűjti az elvégzett következtetési lépések listáját. Vigyázat! Tudásbázis kiterjesztéskor is!! EZ A FELADAT!!