, . , : " , ?" . (burglary S alarm) =? pf burglary lightning) =? p{ burglary | alarm -lightning) =? p{ alarm -call I burglary) =?
, , .
1. :
(XiAX2 | Cond) = [ Xi I Cond} * { X, I Xi Cond)
2. : pWTfi ,,. X ...) =1
3. :
{ X | Yi ... -X ...) =
4. :
(~ | Cond) = 1 - {| Cond)
5. Cond ,
X, X
:
ccndc - Cond, - ,
X pfXiCoado) = p(XICond) * P(Y|X cond) / p{Y|Cond)
6. Cond ,
X, :
) X , (X | Cond) = (X),
, (X);
) X Parents,
pcssible_states,
piX!Cond) = £ [|} p(S|Cond}
: " , , ?" plburgiaryi alarm) =?
5:
(burglary|alarm) = (burglary) * !alarm|burglary) / (alarm)
6: [ alarm I burglary) = p(alarir,| sensor) p (sensor! burglary)
+ p(alarm|-sensor) p(-sensor|burglary)
6:
(sensor | burglary) = p (sensor i burglary lightning) plburolary
Irghtmng Iburglary) + p (sensor |-burglary lightning)
15.
p(-burglary lightning|burglary) + (sensor|burglary -lightning) pfburglaiy -lightningIburglary) + p(sensor I -burglary -lightning) p(-burglary -lightning burglary)
1-4 , , :
(sensor | burglary) - 0.9 * 0.0 2 + 0 + 0.9 * 0.98 + 0 = 0, pfalarml burglary! = 0.95 * 0. + 0.001 * (1 - 0.) - 0.8551
1, 4, 6, : p(alarm) - 0.00467929
, : (burglary|alarm) - 0.001 + 0.B551 / 0.00467929 - 0.182741
, , 15.8. X: 2 ... [XI, 2,... ]. -X not X Prolog. : prob(Proposition, Cond, P)
|
|
Proposition Cond. , .
parent (ParentNode, Node). .
(X, ParentsState, P}. , ; X , ParentsState.
! X,?!. , ; X - , .
15.9 , . 15.4. , 15.8, 15.9, . , , :
?- prob(burglary, [call], P). F = 0.232137
, , :
?- : burglary, [call, lightning], P).
p = 0.00892857
15.8.
%
% .
parent I ParentNode, Node) % (Node, ParentStates, Prob)
Prob - Node
% ParentStates, :
(alarm, [ burglary, not earthquake], 0.99) % p(Mode, Prob)
,
% prob(Event, Condition, P):
______________________
346 II. Prolog
I
* Event Condition ;
% Event - , ,
prob! [X | Xsj, Cond, ):-!, % X, Cond, Px), prob[ Xs, [X I Cond], PRest], is Px * PRest.
prob! [], _, 1):-!. %
(X, Cond, 1):-
memberf X, Cond),. % Cond
prob(X, Cond, 0):-
member! not X, Cond) r!. % Cond , X -
prob! not X, Cond, P):-!, % prob(X, Cond, P0>, P is 1 - PO.
% , X
probt , CoadO, ):-
delete (Y, CondO, Cond),
predecessor! X, Y),!, $ Y - X
probt X, Cond, Px),
probt Y, [X I Cond], PyGivenX),
prob(Y, Cond, Py>,
P is Px * PyGivenX / Py. % , > 0
,
(X, Cond, P):-
| X, ],!. % X - ,-
X, Cond, ):-!,
findallt [COBDi,Pi), p(X,COHDi,Pi), CPlist), % ,
% sum_probs(CPlist, Cond, P).
* sum_probs (CondsProbs, Cond, WeiothedSum):
% CondsProbs - ,
% WeightedSum - Conds
% Cond
sum_probs([], _, 0).
|
|
sum_probs([ (CONDI,PI) | CondsProbs], COND, P):-prob(CONDI, COND, PCI),
sum_probs(CondsProbs, COND, PRest), P is PI * PCI + PRest.
predecessor(X, not Y):- I, l Y,
% predecessor I X* y).
predecessor! x, Y):-
parent { X, Y).
predecessor! X, Z):-parent! X, Y), predecessor! y, z).
membei X, [X [)).
15.
member [X, [_ I L] }:-member! X, L).
delete! x, [x | L], L).
delete! X, [Y I L], (Y I L2])
delete (JC, l, L2).
15.9. , . 15.4, 15.8
% "sensor"
parent! burglary, sensor). %
parent(lightning, sensor). 3
parent(sensor, alarm).
parent! sensor, call).
p (burglary, 0,001.
p(lightning, 0.02}.
p(sensor, [ burglary, lightning), 0.9).
p{ sensor, [ burglary, not lightning], 0.9).
p(sensor, [ not burglary, lightning], 0.1).
p(sensor, E not burglary, not lightning], .001).
p(alarm, [ sensor], 0.95).
p[ alarm, [ not sensor], 0.001).
p (call, [ sensor], 0.9).
p(call, [ not sensor], 0.0).
, . , , .?- prob(burglary, [call, not lightning), P).
P = 0.473934
, . . , , 15.9, , . ,