Скачиваний:
13
Добавлен:
01.05.2014
Размер:
34.3 Кб
Скачать

Программа определения живности с показателями достоверности

vesh('Кошка',D):-przn('Любит воду',D1),

przn('Быстро бегает',D2),

przn('Любит рыбу',D3),

przn('Любит свободу',D4),

dost([D1,D2,D3,D4],[0.1,0.5,0.9,0.5],0.9,D).

vesh('Собака',D):- przn('Любит воду',D1),

przn('Быстро бегает',D2),

przn('Любит рыбу',D3),

przn('Любит свободу',D4),

dost([D1,D2,D3,D4],[0.5,0.9,0.3,0.3],0.9,D).

vesh('Утка',D):- przn('Любит воду',D1),

przn('Быстро бегает',D2),

przn('Любит рыбу',D3),

przn('Любит свободу',D4),

dost([D1,D2,D3,D4],[0.9,0.1,0.8,0.9],0.9,D).

vesh('Мышь',D):- przn('Любит воду',D1),

przn('Быстро бегает',D2),

przn('Любит рыбу',D3),

przn('Любит свободу',D4),

dost([D1,D2,D3,D4],[0.1,0.4,0.1,0.9],0.8,D).

przn(X,D):-xprzn(X,D),!.

przn(X,D):-write('Насколько достоверно, что - '),tab(2),write(X),

tab(2),read(D),assert(xprzn(X,D)).

dost(Sp1,Sp2,K,D):-vagnst(Sp1,Sp2,Sp3),min(Sp3,Min),D is Min*K.

vagnst([X|X2],[Y|Y2],[Z|Z2]):-Z is (1-X*(1-Y)),vagnst(X2,Y2,Z2).

vagnst([],[],[]).

min([],1).

min([X|X2],Min):-min(X2,Min2),

((X < Min2,Min is X);(not(X < Min2),Min is Min2)).

go:-assert(name([])),assert(dost([])),call(vesh(Name,D)),

retract(name(Names)),assert(name([Name|Names])),

retract(dost(Dosts)),assert(dost([D|Dosts])),fail.

go:-retract(name(Names)),tab(2),retract(dost(Dosts)),max(Dosts,D,N),

getname(Names,Name,N),write('Это '),tab(2),write(Name),tab(2),

write('с достоверностью'),tab(2),write(D),write('.'),clearbase.

max(L,Dmax,N):-getmax(L,Dmax,N,1).

getmax([],0,0,Num).

getmax([X|X2],Max,N,Number):-Num2 is Number+1,getmax(X2,Max2,N2,Num2),

((X>Max2,Max is X,N is Number);(not(X>Max2),Max is Max2,N is N2)).

getname(L,Res,N):-assert(schet(1)),find(L,Res,N).

find([X|X2],Res,N):-retract(schet(S)),S2 is S+1,

(((S=N),Res=X);(assert(schet(S2)),find(X2,Res,N))).

clearbase:-retractall(xprzn(_,_)).

retractall(X):-repeat,not(retract(X)).

Примеры:

?- go.

Насколько достоверно, что - Любит воду 0.9.

Насколько достоверно, что - Быстро бегает 0.1.

Насколько достоверно, что - Любит рыбу 0.9.

Насколько достоверно, что - Любит свободу 0.9.

Это Утка с достоверностью 0.738.

yes

?- go.

Насколько достоверно, что - Любит воду 0.5.

Насколько достоверно, что - Быстро бегает 0.9.

Насколько достоверно, что - Любит рыбу 0.3.

Насколько достоверно, что - Любит свободу 0.2.

Это Собака с достоверностью 0.675.

yes

Соседние файлы в папке ARI_DOC