Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Metody reprezentacji wiedzy – cz. 4. Andrzej Macioł.

Podobne prezentacje


Prezentacja na temat: "Metody reprezentacji wiedzy – cz. 4. Andrzej Macioł."— Zapis prezentacji:

1 Metody reprezentacji wiedzy – cz. 4. Andrzej Macioł

2 Prolog Inference Engine

3 Dialog

4

5

6

7

8

9

10

11 Prolog Wykorzystano materiały z „Programowanie w logice. Prolog” c 2007–2009 by P. Fulmanski (ostatnia modyfikacja: 18 maja 2009) -

12 Proste fakty Spółka A jest rentowna, spółka B jest rentowna …. jest_rentowna(spolka_A). jest_rentowna(spolka_B). jest_rentowna(spolka_C). spolka_A(jest_rentowna). spolka_B(jest_rentowna). spolka_C(jest_rentowna). predykat stała

13 Weryfikacja prostych faktów 1 ?- jest_rentowna(spolka_A). true. 2 ?- spolka_A(jest_rentowna). true. 3 ?- jest_rentowna(spolka_X). false.

14 Zmienne w zapytaniach 4 ?- jest_rentowna(Ktore_spolki). Ktore_spolki = spolka_A ; Ktore_spolki = spolka_B ; Ktore_spolki = spolka_C. 5 ?- spolka_A(Jaka_jest). Jaka_jest = jest_rentowna. 6 ?- spolka_B(Jaka_jest). Jaka_jest = jest_rentowna. Zmienna

15 Więcej predykatów jest_rentowna(spolka_A). jest_rentowna(spolka_B). jest_rentowna(spolka_C). jest_nierentowna(spolka_D). jest_nierentowna(spolka_E). spolka_A(jest_rentowna). spolka_B(jest_rentowna). spolka_C(jest_rentowna). spolka_D(jest_nierentowna). spolka_E(jest_nierentowna).

16 Nowe zapytanie 1 ?- jest_nierentowna(Ktore_spolki). Ktore_spolki = spolka_D ; Ktore_spolki = spolka_E.

17 Predykat dwuargumentowy rentownosc(spolka_A, jest_rentowna). rentownosc(spolka_B, jest_rentowna). rentownosc(spolka_C, jest_rentowna). rentownosc(spolka_D, jest_nierentowna). rentownosc(spolka_E, jest_nierentowna). spolka_A(rentownosc, jest_rentowna). spolka_B(rentownosc, jest_rentowna). spolka_C(rentownosc, jest_rentowna). spolka_D(rentownosc, jest_nierentowna). spolka_E(rentownosc, jest_nierentowna).

18 Predykat dwuargumentowy 2 ?- rentownosc(KtoraSpolka,JakaJest). KtoraSpolka = spolka_A, JakaJest = jest_rentowna ; KtoraSpolka = spolka_B, JakaJest = jest_rentowna ; KtoraSpolka = spolka_C, JakaJest = jest_rentowna ; KtoraSpolka = spolka_D, JakaJest = jest_nierentowna ; KtoraSpolka = spolka_E, JakaJest = jest_nierentowna.

19 Predykat dwuargumentowy 3 ?- spolka_A(CoOceniamy,JakiWynik). CoOceniamy = rentownosc, JakiWynik = jest_rentowna. 4 ?- spolka_A(rentownosc,JakiWynik). JakiWynik = jest_rentowna. 6 ?- spolka_A(CoOceniamy,jest_rentowna). CoOceniamy = rentownosc.

20 Dodajemy fakty zadluzenie(spolka_A, brak). zadluzenie(spolka_B, przecietne). zadluzenie(spolka_C, wysokie). zadluzenie(spolka_D, brak). zadluzenie(spolka_E, brak). spolka_A(zadluzenie, brak). spolka_B(zadluzenie, przecietne). spolka_C(zadluzenie, wysokie). spolka_D(zadluzenie, brak). spolka_E(zadluzenie, brak).

21 Wnioskujemy 1 ?- spolka_A(zadluzenie, JakieJestZadluzenie). JakieJestZadluzenie = brak. 2 ?- spolka_A(Atrybut, Wartosc). Atrybut = rentownosc, Wartosc = jest_rentowna ; Atrybut = zadluzenie, Wartosc = brak. 4 ?- zadluzenie(Spolka,brak). Spolka = spolka_A ; Spolka = spolka_D ; Spolka = spolka_E.

22 Wnioskujemy 3 ?- zadluzenie(Spolka,JakieJestZadluzenie). Spolka = spolka_A, JakieJestZadluzenie = brak ; Spolka = spolka_B, JakieJestZadluzenie = przecietne ; Spolka = spolka_C, JakieJestZadluzenie = wysokie ; Spolka = spolka_D, JakieJestZadluzenie = brak ; Spolka = spolka_E, JakieJestZadluzenie = brak.

23 Predykat, w którym argumentami są predykaty kredyt(zadluzenie(spolka_A,brak), rentownosc(spolka_A, jest_rentowna)). 1 ?- kredyt(JakieJestZadluzenie, JakaJestRentownosc). JakieJestZadluzenie = zadluzenie(spolka_A, brak), JakaJestRentownosc = rentownosc(spolka_A, jest_rentowna).

24 Reguły zdolnosc_kredytowa_OK(Spolka):- zadluzenie(Spolka,brak), rentownosc(Spolka,jest_rentowna). IF AND 1 ?- zdolnosc_kredytowa_OK(spolka_A). true. 2 ?- zdolnosc_kredytowa_OK(ZdolnoscKredyto waMaja). ZdolnoscKredytowaMaja = spolka_A ; false.

25 Dodatkowa reguła zdolnosc_kredytowa_OK(Spolka):- zadluzenie(Spolka, przecietne), rentownosc(Spolka,jest_rentowna). 1 ?- zdolnosc_kredytowa_OK(ZdolnoscKredytowaMaja). ZdolnoscKredytowaMaja = spolka_A ; ZdolnoscKredytowaMaja = spolka_B. 2 ?- zdolnosc_kredytowa_OK(spolka_C). false. 3 ?- zdolnosc_kredytowa_OK(spolka_B). true.

26 Zastosowanie predykatu dwuargumentowego zdolnosc_kredytowa(Spolka,ok):- zadluzenie(Spolka,brak), rentownosc(Spolka,jest_rentowna). zdolnosc_kredytowa(Spolka,ok):- zadluzenie(Spolka, przecietne), rentownosc(Spolka,jest_rentowna). zdolnosc_kredytowa(Spolka,warunkowo):- zadluzenie(Spolka,brak), rentownosc(Spolka,jest_nierentowna).

27 Wnioskowanie 2 ?- zdolnosc_kredytowa(Spolka, Ocena). Spolka = spolka_A, Ocena = ok ; Spolka = spolka_B, Ocena = ok ; Spolka = spolka_D, Ocena = warunkowo ; Spolka = spolka_E, Ocena = warunkowo.

28 Wnioskowanie 3 ?- zdolnosc_kredytowa(Spolka, ok). Spolka = spolka_A ; Spolka = spolka_B. 4 ?- zdolnosc_kredytowa(Spolka, warunkowo). Spolka = spolka_D ; Spolka = spolka_E. 5 ?- zdolnosc_kredytowa(spolka_A, Ocena). Ocena = ok ; false. 6 ?- zdolnosc_kredytowa(spolka_C, Ocena). false.

29 Nowe fakty i reguły obroty_mln(spolka_A, 0.1). obroty_mln(spolka_B, 1.5). obroty_mln(spolka_C, 2). obroty_mln(spolka_D, 5). obroty_mln(spolka_E, 12). zdolnosc_kredytowa(Spolka,ok):- zadluzenie(Spolka, przecietne), rentownosc(Spolka,jest_rentowna), obroty_mln(Spolka,X), X>1, X<3.

30 Wnioskowanie 8 ?- zdolnosc_kredytowa(X,Y). X = spolka_B, Y = ok. 9 ?- zdolnosc_kredytowa(Spolka,ok). Spolka = spolka_B.

31 Prolog – baza danych

32 Studenci - przedmioty jest_na_liscie('Jan Kot', 'TSI'). jest_na_liscie('Ala Osa', 'TSI'). jest_na_liscie('Adam Pies', 'TSI'). jest_na_liscie('Jan Słoń', 'TSI'). jest_na_liscie('Ewa Mysz', 'TSI'). jest_na_liscie('Jan Kot', 'BD'). jest_na_liscie('Ala Osa', 'BD'). jest_na_liscie('Adam Pies', 'BD'). jest_na_liscie('Jan Słoń', 'BD').

33 Prowadzący zjęcia egzaminuje('Andrzej Macioł', 'TSI'). egzaminuje('Jurek Duda', 'BD').

34 Reguła - zapisy zapisy(Prowadzacy,Przedmiot,Student):- jest_na_liscie(Student,Przedmiot), egzaminuje(Prowadzacy,Przedmiot).

35 Pełne listy zapisów 8 ?- zapisy(Prowadzacy,Przedmiot,Student). Prowadzacy = 'Andrzej Macioł', Przedmiot = 'TSI', Student = 'Jan Kot' ; Prowadzacy = 'Andrzej Macioł', Przedmiot = 'TSI', Student = 'Ala Osa' ; Prowadzacy = 'Andrzej Macioł', Przedmiot = 'TSI', Student = 'Adam Pies' ; Prowadzacy = 'Andrzej Macioł', Przedmiot = 'TSI', Student = 'Jan Słoń' ; Prowadzacy = 'Andrzej Macioł', Przedmiot = 'TSI', Student = 'Ewa Mysz' ……………..

36 Pytania szczegółowe 9 ?- zapisy(Prowadzacy,Przedmiot, 'Ala Osa'). Prowadzacy = 'Andrzej Macioł', Przedmiot = 'TSI' ; N Prowadzacy = 'Jurek Duda', Przedmiot = 'BD'. 10 ?- zapisy(_,'TSI',Student). Student = 'Jan Kot' ; Student = 'Ala Osa' ; Student = 'Adam Pies' ; Student = 'Jan Słoń' ; Student = 'Ewa Mysz' wszystko jedno co

37 Dodatkowe dane egzamin(' ', 'Jan Kot', 'TSI', 3.0). egzamin(' ', 'Ala Osa', 'TSI', 3.5). egzamin(' ', 'Adam Pies', 'TSI', 4.0). egzamin(' ', 'Jan Słoń', 'TSI', 2.0). egzamin(' ', 'Ewa Mysz', 'TSI', 5.0). egzamin(' ', 'Jan Słoń', 'TSI', 3.0). egzamin(' ', 'Jan Kot', 'BD', 5.0). egzamin(' ', 'Ala Osa', 'BD', 4.0). egzamin(' ', 'Adam Pies', 'BD', 3.0). egzamin(' ', 'Jan Słoń', 'BD', 3.5).

38 Reguły – wyniki egzaminu uzyskal_ocene(Student, Przedmiot, Prowadzacy, Data, Ocena):- egzaminuje(Prowadzacy, Przedmiot), egzamin(Data, Student, Przedmiot, Ocena).

39 Pełny przegląd 7 ?- uzyskal_ocene(Student,Przedmiot,Prowadzacy,Data,Ocena). Student = 'Jan Kot', Przedmiot = 'TSI', Prowadzacy = 'Andrzej Macioł', Data = ' ', Ocena = 3.0 ; Student = 'Ala Osa', Przedmiot = 'TSI', Prowadzacy = 'Andrzej Macioł', Data = ' ', Ocena = 3.5 ; Student = 'Adam Pies', Przedmiot = 'TSI', Prowadzacy = 'Andrzej Macioł', Data = ' ', Ocena = 4.0 ………..

40 Pytania szczególowe 1 ?- uzyskal_ocene('Adam Pies', 'TSI',_,Data,Ocena). Data = ' ', Ocena = 4.0 ; false. 2 ?- uzyskal_ocene('Ewa Mysz', 'TSI', Prowadzacy,Data,Ocena). Prowadzacy = 'Andrzej Macioł', Data = ' ', Ocena = ?- uzyskal_ocene('Jan Słoń', 'TSI', Prowadzacy,Data,Ocena). Prowadzacy = 'Andrzej Macioł', Data = ' ', Ocena = 2.0 ; Prowadzacy = 'Andrzej Macioł', Data = ' ', Ocena = 3.0 ;

41 Związki między obiektami Wykorzystano źródła: sw.edu.au/~cs9414/Labs/family.pl.solution.html /~cs9414/Labs/lab.html

42 Rodzice - dzieci % parent(Parent, Child) parent(albert, jim). parent(albert, peter). parent(jim, brian). parent(john, darren). parent(peter, lee). parent(peter, sandra). parent(peter, james). parent(peter, kate). parent(peter, kyle). parent(brian, jenny). parent(irene, jim). parent(irene, peter). parent(pat, brian). parent(pat, darren). parent(amanda, jenny ).

43 Płeć % female(Person) female(irene). female(pat). female(lee). female(sandra). female(jenny). female(amanda). female(kate). % male(Person) male(albert). male(jim). male(peter). male(brian). male(john). male(darren). male(james). male(kyle ).

44 Rok urodzenia % yearOfBirth(Person, Year). % yearOfBirth(irene, 1923). yearOfBirth(pat, 1954). yearOfBirth(lee, 1970). yearOfBirth(sandra, 1973). yearOfBirth(jenny, 1996). yearOfBirth(amanda, 1979). yearOfBirth(albert, 1926). yearOfBirth(jim, 1949). yearOfBirth(peter, 1945). yearOfBirth(brian, 1974). yearOfBirth(john, 1955). yearOfBirth(darren, 1976). yearOfBirth(james, 1969). yearOfBirth(kate, 1975). yearOfBirth(kyle, 1976).

45 Szukamy dziadków i babć % grandparent(Grandparent, Grandchild) % means Grandparent is a grandparent of Grandchild % grandparent(Grandparent, Grandchild) :- parent(Grandparent, Child), parent(Child, Grandchild).

46 Wyniki 3 ?- grandparent(Grandparent, Grandchild). Grandparent = albert, Grandchild = brian ; Grandparent = albert, Grandchild = lee ; Grandparent = albert, Grandchild = sandra ; Grandparent = albert, Grandchild = james ; Grandparent = albert, Grandchild = kate ; Grandparent = albert, Grandchild = kyle ; Grandparent = jim, Grandchild = jenny; ……………..

47 Kto jest starszy? % older(A,B) % means A is older than B % older(A,B) :- yearOfBirth(A, Y1), yearOfBirth(B, Y2), Y2 > Y1.

48 Wyniki 5 ?- older(A,B). A = irene, B = pat ; A = irene, B = lee ; A = irene, B = sandra ; A = irene, B = jenny ; ……….. A = kate, B = kyle ; A = kyle, B = jenny ; A = kyle, B = amanda ; false.

49 Rodzeństwo % siblings(A,B) % means A and B are siblings % siblings(A,B) :- parent(X, A), % A & B share a common parent parent(X,B), % A \== B. % A is different from B

50 Wyniki 6 ?- siblings(A,B). A = jim, B = peter ; A = peter, B = jim ; A = lee, B = sandra ; A = lee, B = james ; A = lee, 7 ?- siblings(peter,B). B = jim ; false.

51 Starsi bracia % olderBrother(A,B) % means A is an older brother of B % olderBrother(A,B) :- siblings(A, B), male(A), older(A, B).

52 Wyniki 8 ?- olderBrother(A,B). A = peter, B = jim ; A = james, B = lee ; A = james, B = sandra ; A = james, B = kate ; A = james, B = kyle ; A = peter, B = jim ; A = brian, B = darren ; false.

53 Potomkowie % descendant(Person, Descendant) % means Descendant is a descendant of Person. % descendant(Person, Descendant) :- parent(Person, Descendant). descendant(Person, Descendant) :- parent(Person, Child), descendant(Child, Descendant).

54 Wyniki 9 ?- descendant(Person, Descendant). Person = albert, Descendant = jim ; Person = albert, Descendant = peter ; Person = jim, Descendant = brian ; Person = john, Descendant = darren ; Person = peter, Descendant = lee ; …………….. Person = irene, Descendant = kate ; Person = irene, Descendant = kyle ; Person = pat, Descendant = jenny ; false.

55 Przodkowie % ancestor(Person, Ancestor) % means Ancestor is an ancestor of Person. % % This is functionally equivalent to descendant(Ancestor, Person). % ancestor(Person, Ancestor) :- parent(Ancestor, Person). ancestor(Person, Ancestor) :- parent(Parent, Person), ancestor(Parent, Ancestor).

56 Wyniki 10 ?- ancestor(jenny, Ancestor). Ancestor = brian ; Ancestor = amanda ; Ancestor = jim ; Ancestor = pat ; Ancestor = albert ; Ancestor = irene ; false.

57 Sieć powiązań własnościowych Nazwa córki Udział matki

58 Baza wiedzy i fakty jest_spolka_zalezna(Matka,Zalezna):- jest_spolka_matka(Matka,Zalezna). jest_spolka_zalezna(Matka,Zalezna):- jest_spolka_matka(Matka,Corka), jest_spolka_zalezna(Corka,Zalezna). jest_spolka_matka(Matka,Corka):- udzial(Matka,Corka,X), X>50. udzial(ambergold,spolkaA,55). udzial(ambergold,spolkaB,60). udzial(spolkaA,spolkaC,90). udzial(spolkaA,spolkaD,60). udzial(spolkaC,spolkaE,75). udzial(spolkaC,spolkaF,51). udzial(spolkaB,spolkaG,23). udzial(spolkaB,spolkaH,71 ).

59 Wyniki 20 ?- jest_spolka_zalezna(Matka,Corka). Matka = ambergold, Corka = spolkaA ; Matka = ambergold, Corka = spolkaB ; Matka = spolkaA, Corka = spolkaC ; Matka = spolkaA, Corka = spolkaD ; Matka = spolkaC, Corka = spolkaE ; Matka = spolkaC, Corka = spolkaF ; Matka = spolkaB, Corka = spolkaH ; Matka = ambergold, Corka = spolkaC ; Matka = ambergold, Corka = spolkaD ; Matka = ambergold, Corka = spolkaE ; Matka = ambergold, Corka = spolkaF ; Matka = ambergold, Corka = spolkaH ; Matka = spolkaA, Corka = spolkaE ; Matka = spolkaA, Corka = spolkaF ; false.

60 Wyniki szczegółowe 21 ?- jest_spolka_zalezna(ambergold,Cor ka). Corka = spolkaA ; Corka = spolkaB ; Corka = spolkaC ; Corka = spolkaD ; Corka = spolkaE ; Corka = spolkaF ; Corka = spolkaH ; false.

61 Wyniki szczegółowe 22 ?- jest_spolka_zalezna(spolkaB,Corka). Corka = spolkaH ; false. 23 ?- jest_spolka_zalezna(Matka,spolkaE). Matka = spolkaC ; Matka = ambergold ; Matka = spolkaA ; false.


Pobierz ppt "Metody reprezentacji wiedzy – cz. 4. Andrzej Macioł."

Podobne prezentacje


Reklamy Google