(. 13.6) AND/OR. , .
, 1, 2 3, , , ( - - ). 1. , 3. .
1 2 3
. 13.6.
.
II. Prolog
1. 3.
2. 3.
3. 3.
, . , 3, . ( ). , , , . : 3 ( 3) , . , , , . , ( , ), , .
, , , :
" 3"; .
: , . .
1. 1 3 .
2. 1 3 .
3. 3 3.
1 3, , , 2. 1 3 a, b .
1 3 , , .
1. 1 2 .
2. 1 3 .
3. 2 3 .
2 ( ). 2, b . 1 3, ( ). 1 .
|
|
1 2 , .
1. 1 3 .
2. 1 2 to.
3. 3 2 .
13.2.3. AND/OR
, , , AND/OR. , , ,
13. AND/OR
. ( , : .) , , , . , : ) . , ?. , Qi, .... (. 13.7). , Qi
Rn, ............. AND/OR (. 13.7) ,
. . , , , Qi, i, , Qi . , Qi, , .... , OR. i Q* , , , , . Q] , , J^i, R;?, .... AND. , ; , , . , , . , , . , : , , , .
. 13.7. AND/OR;
13.3. AND/OR
, . AND/OR.
|
|
II. Prolog
AND/OR Prolog Prolog. , , Prolog , AND/OR. , AND/OR, . 13.4 ( ) : :- . % - OR , b :- . b:- d, e. % b - AN D , d
:- 1, . f:- h, i.
d. . h, i d, h
, , :?- .
Prolog , . 13.4, "yes", , . 13.4, .
AND/OR . .
"yes" "", . , , , .
, .
AND/OR , , Prolog .
. AND/OR.
AND/OR .
,
"----- >". , ,
OR,
:
----- > or:[b,c].
, "------ >" ":", ,
:
:- [ 600, :■-■■■,-------- >).
:- [ 500, xfx,:).
AMD/OR, . 13.4, :
------ > or: [b,].
b> and: [d,e].
---- > and: !t, g].
G---- > or:[h].
t > or:[h,i].
goalt d). goal(g>. goal! h).
AND/OR .
13. AND/OR
, N, .
1. N , .
2. OR, ( , , ).
3. N AND, ( , , , ).
, , .
:
solvet Mode):-goal! Node).
solvet Bode):-
Node--- > or:Nodes, % Node - OR
member(Nodel, Nodes), % Model Node solve (Nodel).
|
|
Solvef Node):-
Node------? and:Modes, % Mode - AND
SOlvealK Nodes). % Node soivealKM).
SOlvealK [Node 1 Nodes]):-
solvet Node), solvealK Nodes).
member . .
;
,
AND/OR ( ).
, . solve, : solve( Node, Solutio.nTree)
. .
1. Mode , Node.
2. Node OR, : Node > Subtree
Subtree Node.
3. Node AND,
Node ------ > and:Subtrees
Subtrees Node.
, AND/OR (. . 13.4)
:
----- > b------ > and:[d, ---- > h]
286 II. Prolog
, solve. solve , ; , solve . 13.1. show . , (. . 13.4) show : > b > d
>h
13.1 . , . , solve: solve! Node, SolutionTree, MaxDepth)
, , Mode , , a SolutionTree , MaxDepth. , MaxDepth . , MaxDepth = 0, ; , MaxDepth > 0, Kode , MaxDepth - 1. , 13.1. , , solve, .
solve: Mode, Node---- > Tree, MaxDepth!:-
HassDepth > 0,
Node------ > or:Modes, Node - OR
raembec(Model, Nodes), % Model Node
Depthi is MaxDepth - 1, %
solver wodei, Tree, Depthl). i ,
<t
, . , , , . , 0, 1, 2 .. .
|
|
13.1, AND/OR. . solve , show . show ,
'*..... AND/OR
% solve (Node, SolutionTree):
% Hode AND/OR
:- (500, xfx,:).
:- { 600, xfx,-- >!.
solve(Mode, Node):- S
i Node goal(Node).
solve (Mode, Node--------- > Tree):-
Mode ------ > or:Nodes, % Node - OR
13. AND/OR
member; Nodel, Nodes), solvet Nodel, Tree).
* Nodel Node
solve< Mode, Node- > and:Trees>:-
Node-- > and:Nodes, % Node - AMD
SOlvealM Nodes, Trees). * Node
% solveall{ (Model,Node2,... ], [SolutionTreel,SolutionTree2,...])
solvealK [], [)).
SOlvealK [Node! Modes], [Tree| Trees] ]:-
solve(Node, Tree),
solvealK Modes, Trees).
%
show(Tree):- %
show(Tree,0),!. % 0
% show(Tree, H): 3
show! Node-- > Tree, H):-!,
write(Mode), write('- > '),
HI Is H + 7, showf Tree, HI). show(and: IT], B):- ], % AMD show [T, ).
show (and:[TITS], H):-!, % AND
show!T, ), tab(H), show{ and;Ts, H!.
show(Node, H):-write (Node), jil.
(. 11), , . , .
13.1. AND/OR , .
13.2. Prolog AND/OR , .
13.3. - , , AND/OR AND/OR AND/OR.
II. Prolog
13.4. AND/OR