Labor at or 1

download Labor at or 1

of 9

Transcript of Labor at or 1

  • 8/6/2019 Labor at or 1

    1/9

    MINISTERUL EDUCAIEI I TINERETULUI AL REPUBLICIIMOLDOVA

    Universitatea Liber Internaional din Moldova

    Facultatea Informatic i Inginerie

    LUCRARE DE LABORATOR Nr.1

    La obiectul: Inteligenta artificiala

    Tema: Arborele Genealogic

    Lector: Obad Olesea

    Realizat: studentul gr. TI-31

    Malancea Denis

    Chiinu 2011

    1

  • 8/6/2019 Labor at or 1

    2/9

    LUCRARE DE LABORATOR Nr.1

    Tema:Arborele Genealogic

    Scopul lucrarii:Realizarea arborelui genealogic al familei noastre in limbajul

    de programare Prolog.

    Aspecte teoretice:

    Limbajul de programare Prologeste cel mai raspindit limbaj de programare astazipentru aplicatia Inteligentei Artificiale.Prolog (programming in logic) in 1972 aaparut ca limbaj de programare, produs al unei scolii franceze de informatica de laUniversitatea Marselle. Initial limbajul Prolog a fost utilizat in special decercetatori din domeniul procesarii limbajului natural.

    Facilitari ale limbajului Prolog:

    O gama larga standart de predicate pentru operatii string, fisiere, grafica,meniuri.

    Interfete cu alte limbaje de programare.

    Artimetica in virgula fixa si mobile.

    Posibilitatea proiectarii bazei de date dinamice si baze de date externe.

    In Prolog sunt doua tipuri de legaturi:

    Legaturi unare : negatia;

    Legaturi binare:

    conjunctiva;

    disjunctia;implicatia;

    echivalenta.

    Principiile programarii logice:

    Disjunct vid - ;

    Strategii de cautare;

    Principiul de rezolutie;

    Principiul de unificare;

    Back tracking.Disjunct vid (se noteaza - ) nu dispune de nici o litera, este unic din multimeadisjunctiilor care este indentificat prin fals.Strategii de cautare a solutiilor:

    cautarea in adincime (de sus in jos, de la stinga la dreapta);

    cautarea in latime (pe orizontala, de la stinga la dreapta);Principiul de rezolutie metoda de inferenta si poate fi defenit astfel: p q si p r, de unde rezulta p r (p r rezolventa). Exemplu: Toti oamenii sunt muritori.

    Denis este om.Denis este muritor.

    2

  • 8/6/2019 Labor at or 1

    3/9

    Principiul de unificare pentru a aplica principiul de rezolutie asupra predicateloreste necesar ca ele in prealabil sa fie unite. Unificatorul a doi termeni numim osubstitutie care transforma acesti termeni in termeni autentici.Exemplu: predicat(mama, copil)

    parinte(ina, lena)In limbaj natural: Care este copilul lui ina?

    In limbajul Prolog: ?parinte(ina, X).Daca o variabila cu valoare se intilneste cu alta variabila care are valoare senumeste comparatie.

    Termenul 1 Termenul 2 Rezultat

    Variabila are valoare Variabila are valoare Comparatite

    Variabila are valoare Variabila n-are valoare Unificare

    Variabila n-are valoare Variabila are valoare Unificare

    Intitatile limbajului Prolog:Sintaxa are doua aspecte:

    descrierea terminologiei; descrierea componentelor.

    Limbajul Prolog deosebeste patru categorii de simboluri:

    minuscule (ex:a, b, c);

    majuscule (ex:A, B, C);

    cifre (ex:1, 2, 3);

    caractere speciale (ex:-, +, &, @, ?).Termenii se divid in simpli si compusi.

    Termen

    Simpla Compusa

    Constante Variabile

    Atom Numere

    Atom se formeaza din combinatia celor patru categorii de simboluri; se incep cu

    litere minuscule, apoi urmata de alti atomi (ex: aTom1).Varialiba se incepe cu litere majuscule (ex:Variabila).

    Constanta descrierea dintre obiecte.In limbajul Prolog sunt trei componente (disjunctii lui Horn):

    fapte(clauze\conditii);

    intrebari(scop);

    reguli.

    Partea practica:

    1. Fapte exprima relatii intre obiecte.Exemplu: In limbajul natural: Ciinele latra.

    In limbajul Prolog: latra(ciinele).Unde sirul de simboluri latra este numele de relatii, care se numeste nume de

    predicatsaufunctor, iar ciinele este obiectulantrenat in aceasta relatie. Predicatul3

  • 8/6/2019 Labor at or 1

    4/9

  • 8/6/2019 Labor at or 1

    5/9

    Goal-aici se scriu intrebarile. Goal este de doua tipuri: intern si extern. 2. Intrebari se mai numesc si scopuri; se deosebesc de unele sisteme prinsimboluri: :-, ?-.A raspunde la o intrebare pusa in program consta in determinarea daca ea poate fidedusa de program utilizind principiul de deductie. Daca programul contine un faptce coincide cu intrebarea, atunci raspunsul va fi YES, in caz contrar ne va afisa

    NO.Exemplu: ?-parinte(maia, zinaida).\\raspunsul v-a fi:YES;

    ?-parinte(eugenia, ana).\\raspunsul v-a fi:NO.

    Raspunsul NO semnifica numai ca faptul nu este in baza de date.Reguli relatii dintre fapte.Prologul permite de-a formula reguli de tipul: un fapt A este adevarat, daca un faptB sau C sunt adevarate.Exemplu: sora(X, Y):- A

    parinte(Z, X), Bparinte(Z, Y),femeie(X), XY. C

    O regula este alcatuita din: cap mama(X, Y):-corp parinte(X, Y),

    femeie(X).Tipuri de intrebari:

    ?-bunica(nume, X)

    ?-bunica(X, nume)

    ?-bunica(nume, nume)

    ?-bunica(X, Y)

    5

  • 8/6/2019 Labor at or 1

    6/9

    Listingul programului:

    predicates

    parinte(symbol,symbol).

    bunel(symbol,symbol).bunica(symbol,symbol).

    femeie(symbol).sora(symbol,symbol).

    mama(symbol,symbol).tata(symbol,symbol).

    casatorit(symbol,symbol).

    surori(symbol,symbol).frate(symbol,symbol).

    frati(symbol,symbol).unchi(symbol,symbol).

    matusa(symbol,symbol).verisor(symbol,symbol).

    verisoara(symbol,symbol).ginere(symbol,symbol).

    nora(symbol,symbol).soacra(symbol,symbol).

    socru(symbol,symbol).

    cumnat(symbol,symbol).cumnata(symbol,symbol).

    cuscri(symbol,symbol).

    mama(X, Y):-

    parinte(X, Y),femeie(X).

    tata(X, Y):-parinte(X, Y),

    not(femeie(X)).sora(X, Y):-

    mama(Z, X),mama(Z, Y),

    femeie(X),XY.

    surori(X, Y):-parinte(Z, X),

    parinte(Z, Y),

    femeie(X),femeie(Y),

    XY.frate(X, Y):-

    tata(Z, X),

    tata(Z, Y),not(femeie(X)),

    XY.frati(X, Y):-

    parinte(Z, X),parinte(Z, Y),

    not(femeie(X)),not(femeie(Y)),

    XY.unchi(X, Y):-

    frate(X, Z),parinte(Z, Y).

    matusa(X,Y):-sora(X,Z),

    6

  • 8/6/2019 Labor at or 1

    7/9

    parinte(Z, Y).

    bunel(X,Y):-

    parinte(X, Z),parinte(Z, Y),

    not(femeie(X)).

    bunica(X, Y):-parinte(X, Z),

    parinte(Z, Y),

    femeie(X).verisoara(X, Y):-parinte(Z, X),

    parinte(W, Y),frate(Z, W),

    femeie(X).

    verisor(X, Y):-parinte(Z, X),

    parinte(W, Y),frate(Z, W),

    not(femeie(X)).

    ginere(X, Y):-

    parinte(Y, Z),

    casatorit(X, Z),

    not(femeie(X)).nora(X, Y):-

    parinte(Y, Z),casatorit(X, Z),

    femeie(X).soacra(X,Y):-

    mama(X, Z),casatorit(Z, Y),

    femeie(X).

    socru(X, Y):-tata(X, Z),casatorit(Z, Y),

    not(femeie(X)).cumnat(X, Y):-

    casatorit(X, Z),sora(Z, Y),

    not(femeie(X)).cumnata(X, Y):-

    casatorit(X, Z),

    frate(Z, Y),femeie(X).

    cuscri(X, Y):-

    parinte(X, Z),parinte(Y, W),

    casatorit(Z, W).

    7

  • 8/6/2019 Labor at or 1

    8/9

    Arborele Genealogic:

    8

  • 8/6/2019 Labor at or 1

    9/9

    Concluzie:

    Realizind lucrarea de laborator numarul 1, cu tema Arborele Genealogic. Undetrebuia sa realizam arborele genealogic al familei noastre in limbajul de

    programare Prolog si sa determinam gradul de rudenie cu ajutorul intrebarilor.Am creat si am verificat cu certitudine ca intradevar arborele functioneazatotalmente dupa cerintele necesare.

    9