Sistemi veštačke inteligencije primer 1 1. Na jeziku predikatskog računa formalizovati rečenice: a) Miloš je slikar. b) Sava nije slikar. c) Svi slikari su umetnici. Uz pomoć metode rezolucije dokazati da postoji neko ko je umetnik. 2. Odrediti NOU za sledeće skupove literala a) {Q(g(Y), X, a), Q(g(a), f(y,z), a)} b) {P(a, g(y), X), P(X, Z, Y)} c) {S(X, g(z)), S(Y, Z)} Ovde su: X,Y,Z oznake promenljivih; a oznaka konstante; f,g oznake funkcija; Q, P, S oznake predikata. 3. Uz pomoć zaključivanja vođenog ciljem dokazati (nacrtati graf) da program terminira, stanje_programa(end), ako su data pravila i činjenice: Pravila: P1: veće(f,80) manje(g,20) jednako(c,100) P2: manje(d,0) manje(e,3) manje(b,50) P3: veće(h,200) veće(a,30) P4: manje(b,50) veće(a,30) jednako(c,100) stanje_programa(end) Činjenice: C1: veće(h,200) C2: manje(e,3) C3: manje(d,0) C4: manje(g,20) Cilj: stanje_programa(end) 4. Na programskom jeziku PROLOG formalizovati bazu znanja o vlasnicima stanova koja sadrži: naziv vlasnika, kvadraturu stana, cenu po kvadratnom metru, godinu izgradnje stana. Napisati pravilo koje izdvaja nazive vlasnika stanova koji su izgrađeni pre 1970 godine ili posle 2000 godine. Napisati pravilo koje izdvaja nazive vlasnika stanova koji su izgrađeni 1985 godina, a cena je veća od 50000. 5. Na programskom jeziku PROLOG napisati program koji odredjuje treći član rekurzivnog niza: g(0)=1, g(1)=1, g(n)=4*g(n-1)+g(n-2), za n>1. Postaviti test pitanje. 1
REŠENJA primer 1 1. 1. slikar(milos) 2. not(slikar(sava)) 3. ( X)(slikar(X) umetnik(x)) 4 ( X)(umetnik(X)) Tvrđenje 1. slikar(milos) 2. not(slikar(sava)) 3. slikar(x) umetnik(x) 4. umetnik(x) Negacija tvrđenja 5. slikar(x) R:3,4 6. R:1,5 {milos/x} 2. a) A = {Q(g(Y), X, a), Q(g(a), f(y,z), a)} B 0 = {Y, a} θ 1 = θ 0 {a/y} = {a/y} Aθ 1 = {Q(g(a), X, a), Q(g(a), f(a,z), a)} B 1 = {X, f(a,z)} θ 2 = θ 1 {f(a,z)/x} = {a/y, f(a,z)/x} Aθ 2 = {Q(g(a), f(a,z), a), Q(g(a), f(a,z), a)} = {Q(g(a), f(a,z), a)} NOU = θ 2 = {a/y, f(a,z)/x)} b) A = {P(a, g(y), X), P(X, Z, Y)} B 0 = {a, X} θ 1 = θ 0 {a/x} = {a/x} Aθ 1 = {P(a, g(y), a), P(a, Z, Y)} B 1 = {g(y), Z} θ 2 = θ 1 {g(y)/z} = {a/x, g(y)/z} Aθ 2 = {P(a, g(y), a), P(a, g(y), Y)} B 2 = {a,y} k = 3 θ 3 = θ 2 {a/y} = {a/x, g(a)/z, a/y} Aθ 3 = {P(a, g(a), a), P(a, g(a), a)} = {P(a, g(a), a)} NOU = θ 3 = {a/x, g(a)/z, a/y} c) A = {S(X, g(z)), S(Y, Z)} B 0 = {X, Y} θ 1 = θ 0 {X/Y} Aθ 1 = {S(X, g(z)), S(X, Z)} B 1 = {g(z), Z} NOU ne postoji jer funkcija g zavisi od promenljive Z. 2
3. 4. stan( Simic Milos, 58, 1200, 1987). stan( Markovic Ljiljana, 83, 1700, 1992). stan( Milosev Branka, 98, 2100, 1995). izdvoj1(x):-stan(x, _, _, Y), (Y<1970; Y>2000). izdvoj2(x):-stan(x, Y, Z, 1985), C is Y*Z, C>50000. 5. g(0,1). g(1,1). g(n, Rez):- N>1, N1 is N-1, N2 is N-2, g(n2, Rez2), g(n1, Rez1), Rez is 4*Rez1+Rez2.?-g(3, X). 3
Sistemi veštačke inteligencije primer 2 1. Na jeziku predikatskog računa I reda formalizovati rečenice: 1. Dedal je muško. 2. Ikar je Dedalovo dete. 3. Za sve osobe važi da ako je osoba X dete osobe Y i osoba Y je muškog roda, tada je osoba Y otac osobe X. Uz pomoć metode rezolucije dokazati tvrđenje: Dedal je Ikarov otac. 2. Odrediti NOU za sledeće skupove literala: a) {R(f(g(X), X), g(y), f(b,g(a))), R(f(g(b), b), Z, f(x,z))} b) {P(Y, a, h(g(b)),g(a)), P(X, a, h(z), Z)} c) {Q(X, g(y), b, f(g(a), X)), Q(c, Z, b, f(g(a), U))} Ovde su: X,Y,Z,U oznake promenljivih; f,g,h oznake funkcija; a,b,c oznake konstanti i R,P,Q oznake predikata. 3. Uz pomoć zaključivanja vođenog ciljem dokazati (nacrtati graf) da je preduzeće «MegaTrade» u dobitku ako je dato: Baza znanja: P1: ima_sirovina(x) mašine_ispravne(x) ima_radnika(x) u_dobitku(x) P2: obezbedjen_serviser(x) garancija_na_mašine(x) mašine_ispravne(x) P3:obezbedjen_prevoznik(X) obezbedjen_nabavljač(x) ima_sirovina(x) P4:poseduje_sopstveni_prevoz(X) ugovor_sa_transportnim_preduzećem(x) obezbedjen_prevoznik(x) Činjenice: C1: garancija_na_mašine(megatrade) C2: ima_radnika(megatrade) C3: poseduje_sopstveni_prevoz(megatrade) C4: obezbedjen_nabavljač(megatrade) Cilj: u_dobitku(megatrade) 4. Na programskom jeziku Prolog napisati program koji određuje: a) da li su elementi celobrojne liste u opadajućem poretku, b) koja je dužina liste. 5. Na programskom jeziku Prolog napisati program za određivanje proizvoda prvih n prirodnih brojeva. 4
REŠENJA primer 2 1. 1. musko(dedal) 2. dete(ikar,dedal) 3. ( X)( Y) ((dete(x,y) musko(y)) otac(y,x)) 4.otac(dedal,ikar) Tvrđenje 1. musko(dedal) 2. dete(ikar,dedal) 3. (dete(x,y) musko(y)) otac(y,x)) 4. otac(dedal,ikar) Negacija tvrđenja 1. musko(dedal) 2. dete(ikar,dedal) 3. dete(x,y) musko(y) otac(y,x) 4. otac(dedal,ikar) Negacija tvrđenja 5. dete(ikar,dedal) musko(dedal) R:(3,4) {dedal/y, ikar/x} 6. dete(ikar,dedal) R:(1,5) 7. R:(2,6) 2. a) A = {R(f(g(X), X), g(y), f(b,g(a))), R(f(g(b), b), Z, f(x,z))} B 0 = {b, X} θ 1 = θ 0 {b/x} = {b/x} Aθ 1 = {R(f(g(b), b), g(y), f(b,g(a))), R(f(g(b), b), Z, f(b, Z))} B 1 = {g(y), Z} θ 2 = θ 1 {g(y)/z } = {b/x, g(y)/z} Aθ 2 = {R(f(g(b), b), g(y), f(b,g(a))), R(f(g(b), b), g(y), f(b, g(y)))} B 2 = {a, Y} k = 3 θ 3 = θ 2 {a/y} = {b/x, g(a)/z, a/y} Aθ 3 = {R(f(g(b), b), g(a), f(b,g(a))), R(f(g(b), b), g(a), f(b, g(a)))} Aθ 3 = {R(f(g(b), b), g(a), f(b,g(a)))} NOU = θ 3 = {b/x, g(a)/z, a/y} b) A = {P(Y, a, h(g(b)),g(a)), P(X, a, h(z), Z)} B 0 = {X, Y} θ 1 = θ 0 {X/Y} = {X/Y} Aθ 1 = {P(X, a, h(g(b)),g(a)), P(X, a, h(z), Z)} B 1 = {g(b), Z} θ 2 = θ 1 {g(b)/z } = {X/Y, g(b)/z} Aθ 2 = {P(X, a, h(g(b)), g(a)), P(X, a, h(g(b)), g(b))} B 2 = {a, b} NOU ne postoji jer su a i b dve različite konstante. 5
c) A = {Q(X, g(y), b, f(g(a), X)), Q(c, Z, b, f(g(a), U))} B 0 = {c, X} θ 1 = θ 0 {c/x} = {c/x} Aθ 1 = {Q(c, g(y), b, f(g(a), c)), Q(c, Z, b, f(g(a), U))} B 1 = {g(y), Z} θ 2 = θ 1 {g(y)/z} = {c/x, g(y)/z} Aθ 2 = {Q(c, g(y), b, f(g(a), c)), Q(c, g(y), b, f(g(a), U))} B 2 = {c, U} k = 3 θ 3 = θ 2 {c/u} = {c/x, g(y)/z, c/u} Aθ 3 = {Q(c, g(y), b, f(g(a), c)), Q(c, g(y), b, f(g(a), c))} = {Q(c, g(y), b, f(g(a), c))} NOU = θ 3 = {c/x, g(y)/z, c/u} 3. u_dobitku(megatrade) P1 ima_sirovina(megatrade) mašine_ispravne(megatrade) ima_radnika(megatrade) C2, TACNO P3 obezbedjen_prevoznik(megatrade) obezbedjen_nabavljac(megatrade) P2 P4 C4, TACNO poseduje_sopstveni_prevoz(megatrade) obezbedjen_serviser(megatrade) C3, TACNO ugovor_sa_transportnim_preduzecem(megatrade) garancija_na_mašine(megatrade) C1, TACNO 4. 5. poredak([_]). poredak([x,y O]):-X>=Y, poredak([y ]O). duzina([],0). duzina([_ Ost], N):-duzina(Ost, M), N is M+1. proizvod(1,1). proizvod(n,r):-n>1, N1 is N-1, proizvod(n1,r1), R is N*R1. 6