?? - PowerPoint PPT Presentation

1 / 107
About This Presentation
Title:

??

Description:

. – PowerPoint PPT presentation

Number of Views:26
Avg rating:3.0/5.0
Slides: 108
Provided by: abc106
Category:
Tags: algebra | history

less

Transcript and Presenter's Notes

Title: ??


1
???????????? ?? ??????
  • ???. ?????? ???????
  • ???????? ?? ?????????? ? ???????????
  • ?? ??. ??????? ????????

2
??????????? ?????????
  • ???? 11

3
????????
4
?????????? ?? ??????????
  • ????, ????? ???????? ?????????? ? ????? ?????? ??
    ??????????? ?????? ????? ?? ??????? ????? ??
    ????? ?? ????? ??????? ?? ???????????, ? ?????
    ??? ?? ??????? ?????? ?????????, ????? ??????????
    ??????? ??????? ?? ???????? ? ??? ?????????.
  • ? ????? ????, ?????????? ?????? ? ??????? ??????
    ??????? ??? ?????? ??????, ????? ?? ????????? ??
    ????? ?? ??????????? ??? ???????????? ??????.

5
?????????? ?? ??????????
  • ??-?????? ? ?? ?? ??????? ??????????? ??
    ?????????? ? ????????? ?? ??????? ??
    ?????????????.
  • ?????????? ??????? ???????????? ????? ?????? ??
    ??????????? ?????

6
?????? 3
  • p-q,!.
  • p-r.
  • q-s.
  • q-t.
  • s.

7
?????? 3
?-p
?-r
?-q,!
?-s,!
?-t,!
?-!
8
?????????? ?? ??????????
  • ???? ?? ??????????? ??????????, ???? ????????,
    ????? ???????? ??? ????????
  • ????????? ?? ????????????/ ?????? ?????? ??
    ??????, ?? ?? ????????? ?????? ?????? ?? ???? ???
  • ????????? ???????? ?????? ???????????? ???????,
    ????? ??????? ?? ?????

9
?????????? ?? ??????????
  • ??? ??? ??????? ???? ????????
  • red cuts- ???????? ?????????, ????? ?
    ???????????????
  • grue cuts - ???????? ???????????????, ?? ?? ?
    ?????????

10
???????? ?? ??????
  • ??????????, ????? ??? ?? ??? ?? ?????? (???????
    ????????????) ?? ?????? ?? ??????? ? ???????
    ????????
  • Head-
  • Test 1,
  • Test n,
  • !,
  • Rest_of_clause.

11
?????? 4
  • p(X,args)-var(X),!.
  • /? ? ?????????? ??????????/
  • p(X,args)-number(X),!.
  • /? ? ?????/
  • p(X,args).
  • /? ? ???????? ????/

12
???????? ?? ?????????????? ???????
  • ??????????, ????? ??? ?? ??? ?? ???????
    ?????????????? ??????? ?? ?????????? ??? ??
    ??????? ? ??????? ????????
  • Head-
  • Goal,
  • !,
  • Rest_of_clause.

13
???????? ?? ?????????????? ???????
  • ??? ???????????? ?? ???? ??? ???????? ??????
    ????? ?? ?? ??????? ?? ?? ?? ???????? ??
    ?????????? ?? ?? ??????? ???????????? ?? ?????
    ??????.
  • ??? ???????? ?????? ?? ?????????? ???? ???
    ???????? ???-????? ? ?? ?? ????????? ????????????
    ???????.

14
???????? ?? ?????????????? ???????
  • ?????????? ?? ????????? ???????????? ?????? once.
  • Head-
  • once(Goal),
  • Rest_of_clause.

15
???????? ?? ?????????????? ???????
  • ?????????? ?? if-then ?????
  • Head-
  • (Goal-gttrue),
  • Rest_of_clause.

16
???????? ?? ?????????????? ???????
  • ????, ????? ?? ????? ?? ??? ???? ?? ????????????.
  • ???-????? ? ??? ???? ???????? ?????? ?? ?
    ?????????, ?? ??? ?? ?? ?????? ?? ???? ?????

17
???????? ?? ?????????????? ???????
  • ?????????? ?????? ?? ?????, ??????? ? ????????
    ??-??????? ??? ???? ?????
  • ??? ?????? ???? ???????? ?? ???? ???? ??????????
    ???????, ?? ?????? ?????????? ?? ?? ??????? ?
    ?????????, ? ?? ? ??????????? ??? ????
  • ?????????? ?????? ?? ?? ??????? ? ??????, ????
    ??? ?????? ?? ???????? ??????? ??????????
    ???????? ????????????, ? ?? ?? ???????? ???????
    ???? ?????????????.

18
???????? ?? ?????????????? ???????
  • ????? ???????, ????? ?????? ?? ?? ?????? ?, ??
    ??? ????? ?????? ?? ???? ???????? ? ??????, ????
    ???????? ?? ??????? ???? ???????? ????? ???????,
    ? ?????? ?? ???????? ?????? ?? ?????????? ?????
    ?? ???????????
  • ???? ?? ????????? ??????, ????? ??? ???? ?? ?????
    ?????? ?? ???? ???????? ? ?????? ? ?? ?????
    ?????? ?? ???? ????????? ??? ?????????? ????????

19
?????????
  • ???????, ????? ?????? ?? ?? ????????, ? ??
    ?????????? ? ???????, ??? ????? ???? ? ?????????
    (????????????)
  • ??? ????????????? ? ????????????????? ?? ???????
    ????? ?? ?????? ????????, ? ??? ??? ?????? ??
    ????????? ?????? ?? ???????? ?????????, ?? ???
    ?????? ?? ??????? ??? ???????? ???? ??? ????????
    ????????? ?? ????????????? ? ?? ?????????
    ????????? ? ???? ?? ?????????? ?? ?? ???? ????,
    ?? ?? ?? ??????? ???? ????? ??? ?? ? ????????????

20
???????? ?? ?????????????? ???????
  • ??? ????? ???????
  • !, determinate_goal,,determinate_goal,!
  • ??????? ???????? ?????? ? ???????

21
RED Cuts
  • RED Cuts ???????? ??????????? ???????
  • ??????, ? ????? ??? RED Cut ???? ?????????
    ?????????
  • RED Cuts ?? ????????? ??????? ?? ??? ????
  • ?? ?? ?????? ??????? ??????? ?? ???
  • ?? ?????? ????? ?? if-thenelse

22
RED Cuts
  • once(Goal)-
  • call(Goal),
  • !.
  • ?????? ?? ????????? RED Cuts, ? ??? ?? ?? ??????
    ??????? ???????? ??????? ? ????? ?? ?? ????????
    ?????????, ???? ???? ? ??????????

23
?????? 8
  • max(X,Y,X)-XgtY.
  • max(X,Y,Y)-XltY.
  • max(X,Y,X)-XgtY,!. blue cut
  • max(X,Y,Y)-XltY.
  • / if-thenelse effect/
  • max(X,Y,Z)-XgtY,!,ZX. red cut
  • max(X,Y,Z)-ZY. / X lt Y /
  • ????????? ???????? ? ?? ??????? ??????
    ????????, ????????
  • ?-max(10,0,0).
  • yes

24
?????????
  • ?????? ?????? ???????? ?? ? ???????????
  • ???????, ?? ??????? ???????? ? ????? ??? ??????
    ?? ???????? ???????
  • ?????? ?????? ?? ????????? ??? ??-????? ???
    ??-????? ????????? ?? ?????????? ?????? ??
    ???????????? ?????

25
?????? 8a
  • max(X,Y,Z)-XgtY,!,ZX. red cut
  • max(X,Y,Y). / X lt Y /
  • ??????? - ????????? ???????????? ?? ??????,
    ?????? ?? ?? ??????? ??????????.
  • ???????? ?????????, ?????? ?????? ?????????
    ???????? ?? ?????????? ????? ??-????, ????????? ?
    ??????????
  • ????????? ??????? ??????? ?? ????? ????? ? ?????
    ??????? ?? ????????

26
RED Cuts
  • ???????? ????-????????? ???? ????
  • p(Var,args)-
  • var(Var),
  • !,
  • fail.
  • p(,)-
  • ?????????? ????, ?????? ?????? ? ????????
  • ??? ????? ??????????? ???? ??????? ?? ??????????,
    ???? ? ?????????

27
RED Cuts
  • ???? ???????? ?????????? ?? ???????? ?
  • p(,args)-
  • !,
  • fail.
  • p(,)-
  • ?????? ? ?????????, ????? ? ???????, ???? ??
    ?? ?? ? ????????? ?? ????? ?? ?????????? ??????

28
?????? 10
  • is_proper_list(0)-!,fail.
  • ????? ????????????
  • is_proper_list().
  • is_proper_list(_L)-
  • is_proper_list(L).

29
?????? 10
  • ?- is_proper_list().
  • yes
  • ?- is_proper_list(X).
  • yes
  • ?- is_proper_list(a,b).
  • yes
  • ?- is_proper_list(X).
  • no

30
GRUE Cuts
  • Grue cuts ????? ????? ????? ???????? ??
    ??????????, ?? ????????? ??????? ???????????
  • ???? ?? ???????? Grue cuts ?? ??? ??????? ????
  • Blue cuts - ???????????? ????????? ??
    ???????????????, ????? ?????? ?? ???? ??????????,
    ?? ?? ? ????. ?? ?? ???????? ???????? ?????????
    ?? ??????????. ??????, ????? ?????? ? ?? ? ??????
    ???????????
  • Green cuts - ???????? ??????? ?? ??-?????????
    ?????????????, ????? ????? ?? ?????? ?? ?? ?????
    ???????????, ??? ?? ????? ???????? ? ???????, ?
    ?? ????? ?????? ?????? ?? ????? ????? ???????

31
GRUE Cuts
  • ????????? ?, ?? ?????? ????????? ?? ?????????? ??
    ??????????? ???? blue cuts.
  • capital(britain, london)-!.
  • capital(australia, canbera)-!.
  • capital(new_zealand, wellington)-!.
  • ?????? ???????? ???? capital(Country,Capital) ???
    ???????? ????????? ?? Country ??? Capital, ????
    ?? ??????????? ?? ?????? ??????????.
  • ???? ????????? ?? blue cuts, ???? ?? ??? ????????
    ?????? ?? ???? ?? ?? ?????? ? ??? ???.

32
?????? 11
  • capital(Country,Capital)-
  • ( nonvar(Country) -gt
  • cap(Country,Capital),
  • !
  • nonvar(Capital)-gt
  • cap(Country,Capital),
  • !
  • cap(Country,Capital)
  • ).
  • cap(britain, london).
  • cap(australia, canbera).
  • cap(new_zealand, wellington).

33
GRUE Cuts
  • ?????????? ?????? ?? ???? ????????? ? ??????????
    ????? ?? ??????????, ?? ?? ??? ??????? ?? ??
    ??????? ????????? ???? ?? ??????? ??
    ?????????????.
  • ?????? ????? ?????????? ? ?? ????????????
    ?????????? ???? ??????????, ??? ???? ?? ????? ??
    ????????? ? ?? ??????? ?? ???????? ? ?? ???????.

34
?? ???? ?? ??????????? ???????????
  • ?????????? ???????? ?????? ????? ?? ?????
    ???????? ???? ???? ? ???? ??????????
    ???????????? ?? ???????? ?????????? ??????
  • ? ??-??????? ?????? ???????????? ?????? ?
    ?????? ??????? ?? ????????, ? ????? ???????? ??
    ???????? ? ??? ???????
  • ??????, ????? ?????????? ?? ????? ????? ???
    ???????? ????????? ???? call/1, setof/3 ??? ?????
    ???????? ????????? ?????????, ?? ????????
    ???????? ? ??????? ?? ???? ???? ?????????

35
?? ???? ?? ??????????? ???????????
  • p(L)-
  • ( a,! / 1 /
  • c, (d,! / 2 /,e),f
  • ),
  • call((g,! / 3 /)),
  • not (h,! / 4 /, i),
  • findall(X,(j(X),! / 5 /),L).

36
?? ???? ?? ??????????? ???????????
  • ?????????? ?????????? ? 1, 2 ? 4 ???? ?? ????
    ??????? ?? ???????? p(L) ???? ???? ??????????
    ???, ?????? ?????????? ?????????? ? 3 ? 5 ??
    ??????? ?? call/1, ? findall/3 ?????????.

37
?? ???? ?? ??????????? ???????????
  • ??? ???? ?? ?? ???????? ???????? ?? ???????? ??
    ??????????.
  • ??????????, ????? ?? ???????? ? ?? ??????????
    ???? ?? ????? ???? ????? ?????????, ?.?. ?? ??
    ?????????, ? ????? ????????? ?? ???????????.

38
?? ???? ?? ??????????? ???????????
  • ???? ?????? ??????? ?, ?? ?????????? ?? ???? ??
    ????? ???? ?????.
  • ???????????? (A,B), (AB), (A-gtBC), (A) ??
    ????????? ?? ?????????? (?.?. ?????????? ????? ?
    ?????? ????????? ?? ?????? ??????? ???? ??? ??
    ???-???????? ??????????? ?????????)
  • call(A), not(A), findall(A,B,C), setof(A,B,C),
    bagof(A,B,C), once(A), forall(A,B) ?? ???????????.

39
p(X) - a(X). p(X) - b(X),c(X),d(X),e(X). p(X
) - f(X). a(1).b(1).c(1). b(2).c(2).d(2).
e(2). f(3).
40
?- p(X). X  1  X  2  X  3  no
41
(No Transcript)
42
p(X) - a(X). p(X) - b(X),c(X),!,d(X),e(X). p
(X) - f(X). a(1).b(1).c(1). b(2).c(2).d(2
).e(2). f(3).
43
?- p(X). X  1 no
44
(No Transcript)
45
s(X,Y) - q(X,Y).s(0,0). q(X,Y) - i(X),j(Y). 
i(1).i(2).j(1).j(2).j(3).
46
s(X,Y) - q(X,Y).s(0,0). q(X,Y) - i(X),!,j(Y).
 i(1).i(2).j(1).j(2).j(3).
47
p(1).p(2) - !.p(3). ?- p(X). ?- p(X),p(Y).
 ?- p(X),!,p(Y).
48
class(0,zero)-!.class(Number,positive) - Number
 gt 0,!.class(Number,negative)- Number lt 0.
49
?- split(3,4,-5,-1,0,4,-9,P,N). P3,4,4 N-5,
-1,-9 ??????? 1 - ? ?????????? split(,,).
split(XL,P,N)- split(L,Pos,Neg),
(Xgt 0, PXPos, NNeg Xlt0, PPos,
NXNeg PPos, NNeg ).
50
?- split(3,4,-5,-1,0,4,-9,P,N). P3,4, N-5,-
1,-9 ??????? 2 - ??? ?????????? split(,,
). split(XL,P,N)- split(L,Pos,Neg),
(Xgt 0, NNeg, (member(X,Pos), PPos P
XPos), Xlt0, PPos,
(member(X,Neg),NNeg NXNeg) PPos,
NNeg ).
51
?- split(3,4,-5,-1,0,4,-9,P,N). P3,4, N-5,-
1,-9 ??????? 2 - ??? ?????????? split(,,
). split(XL,P,N)- split(L,Pos,Neg),
(Xgt 0, NNeg, (member(X,Pos), PPos P
XPos), Xlt0, PPos,
(member(X,Neg),NNeg NXNeg) PPos,
NNeg ).
52
????????? ? If-Then-Else
  • ????????????? ????????? If-Then-Else ??????????
    ?????????? ?? ???????????? ??????? ?? ?????????,
    ????? ????????? ????????
  • ????????? ??????????? ????????? ? ?????? ??
  • ????????? P, Q
  • ????????? P Q
  • ???????? !
  • ?????????? (????-) ?????????, call(X)
  • ????????? ???? ??????? P, (not P, \ P)
  • if-then-else, (P -gt Q R)
  • true, false, otherwise, fail

53
?????????
  • ????????? ?? ????????? ???? G1, G2, , Gn ??
    ???????? ???? ???????
  • G1 G2 Gn
  • ???? ???? ???? ?? ?? ???????? ? ???????
  • G1 G2 Gn
  • ??? ????? ?? ? ?????????? ?? ????? ???????.
  • ? ? ????? ?????? ?? ???????????? ????
  • (G1,( G2, (Gn-1 ,Gn )))
  • ????? ? ???? ????? ?? ?????????

54
?????????
  • ?? ????? ?????? ??????????? ???? ?? ????
    ????????? ?? ????? ?????, ?? ????? ? ????????? ??
    ?? ??????? ?????????? ???.
  • ??? ??-?????? ?????? ?? ???????? ?? ,, ????
    ?? ??? ?????
  • G1,
  • G2 G3 ,
  • G4
  • ?? ?? ? ???????????? ??
  • (G1, G2) (G3 , G4 )

55
?????????
  • ?? ?? ?? ???????? ????????????? ? ????? ?????? ??
    ?? ?????? ????? ????? ???????????, ?? ?????? ??
    ??????????????? ????????
  • ??????
  • (a,b c,d) ????????
  • (a,b) (c,d) ??????????

56
?????????
  • ?????????????? ?????????
  • ( G11,
  • G12,
  • G13
  • G21,
  • G22
  • G13,
  • G32
  • )

57
?????????
  • ??? ??????????? ?? ??????? ????????, ?? ???? ?? ?
    ??????? ???? ??????? ?????? ?? ???????? g(shared
    variables) ??????
  • g(shared variables) -
  • G11,
  • G12,
  • G13.
  • g(shared variables) -
  • G21,
  • G22.
  • g(shared variables) -
  • G13,
  • G32.

58
?????? 1
  • ??????? 1
  • vowel(P)-
  • ( Pa
  • Pe
  • Pi
  • Po
  • Pu
  • )

??????? 2 vowel(P),?????? vowel(a). vowel(e). vow
el(i). vowel(o). vowel(u).
59
????????? ?? ????? ?? ???????????
  • ????? ?????? ?? ????????, ?????? ?? ????
    ?????????????? ???????? ? ??????? ?????????????
    ?????

60
?????? 2
  • between(Lower, Upper, Index)-
  • ( var(Index),integer(Lower),integer(Upper)-gt
  • Lower lt Upper,
  • between1(Lower,Upper,Index)
  • integer(Index),integer(Lower),integer(Upper)-gt
  • Lower lt Index,
  • Index lt Upper
  • / ????????? ????????? /
  • Goal between(Lower, Upper, Index),
  • must_be(integer,Lower,1,Goal),
  • must_be(integer,Upper,2,Goal),
  • must_be(integer,Index,3,Goal)
  • ).

61
?????? 2
  • between1(Lower, Upper, Index)-
  • ( Lower Upper -gt
  • IndexLower
  • Index Lower
  • Next is Lower1, Lower lt Upper
  • between(Next, Upper, Index)
  • ).
  • ?- between(1,4,X).
  • X 1 ?
  • X 2 ?
  • X 3 ?
  • X 4 ?
  • no

62
?????? 2
  • ?- between(0a,0z,X).
  • X 97 ?
  • X 98 ?
  • X 99 ?
  • X 100 ?
  • yes
  • ?- between(0'A,0'Z,X).
  • X 65 ?
  • X 66 ?
  • yes

63
????????
  • ??? ????????? ????????? ?? ?????????? ?????????
  • 0'A 0'\x41 0'\101
  • ? ??????? ?????? ????????? ?? ???????????? ?? 65
    (???? ?? A). 0' ???????? ?? ??? ?? ? ???? ?
    ?????????? ?? \ (backslash) ???? ???????? ????
    ?????.

64
????? repeat
  • ??????? repeat ?????? ?? ??? ???????
  • p(args)-
  • initialise,
  • repeat,
  • obtain_next_datum(Datum),
  • do_something_with_the_datum(Datum),
  • fail_unless_this_is_the_last_datum(Datum),
  • !,
  • shut_down.

65
?????? 3
  • read_and_print(File)-
  • open(File,read,S),
  • set_input(S), initialise
  • repeat,
  • read(Term), obtain next datum
  • write(Term),
  • nl, do something
  • Term end_of_file, fail unless last
  • !,
  • close(S). shut down

66
????? repeat
  • ????? ????? repeat ?????? ?? ???? ????????? ?
    ????????
  • ?????? ?????? ?? ?? ??? ???????, ?? ?????????,
    ????? ?????? ???? repeat ???? ?? ???????? ? ??
    ?? ?????????? ?????????????????? ?? repeat
    ??????

67
?????? 4 (?? ????????? ?????????? ?? repeat)
  • p(args)-
  • initialise,
  • repeat,
  • obtain_next_datum(D),
  • do_something_with_the_datum(D),
  • fail_if_not_last(D).
  • q(stuff)-
  • p(args),
  • !,

68
If-Then-Else
  • If-Then-Else ??? ???????
  • ( Test1 -gt
  • WhenTrue1
  • TestN-gt
  • WhenTrueN
  • / ? ???????? ?????? /
  • WhenAllElseFails
  • ).

69
?????? 5
  • pos_and_neg_sums(Nums,Pos,Neg)-
  • pos_and_neg_sums(Nums,0,Pos,0,Neg).
  • pos_and_neg_sums(,Pos,Pos,Neg,Neg).
  • pos_and_neg_sums(NumNums,Pos0,Pos,Neg0,Neg)-
  • ( Num gt 0 -gt
  • Pos1 is Pos0Num,
  • pos_and_neg_sums(Nums,Pos1,Pos,Neg0,Neg)
  • / Num lt 0 /
  • Neg1 is Neg0Num,
  • pos_and_neg_sums(Nums,Pos0,Pos,Neg1,Neg)
  • ).

70
?????? 5
  • ?- pos_and_neg_sums(1,2,0,-3,5,-2,6,-7,-8,P,N)
    .
  • N -20,
  • P 14 ?
  • yes
  • ?- pos_and_neg_sums(1,2,0,P,N).
  • N 0,
  • P 3 ?
  • yes

71
??????
  • ???????? ?? ??????? ???? ??????? ??
    ???????????
  • ????????? ?? ???? ? ?? ????????? ?? ?? ????????
    ??-????? ????????? ???????? ??????????? ??
    ????????
  • ?? ?? ?? ?? ?????????? ? ?? ?? ??????? ??-?????
    ?????? ? ?????????????? ?? ?????????? ????
    ??? ?????? ??? ???????, ? ?? ?????????

72
??????
  • ?????? ?? ?????????? ??????? ?? ????????? ? ????
    ????
  • ?????????????? ? ?????? ?? ????????? ?? ??
    ??????? ? ???????? ?? ????, ??? ???? ??? ??????
    ?? ????? ??? ? ?????? ?????? ?? ?? ????????
  • p, ? p
  • q q
  • ??-????? ? ?? ?? ?????? ????
  • p
  • q

73
??????
  • ?????????????? ? ?????? ???????? ?? ????????
    ???? ????????? ?? ?? ??????? ?? ???? ????????
    ????? ? ???? ????, ? ?????? ?? ???????? ???
    ??????? ?? ?? ?? ???????? ?????????
  • p(XY)-
  • p((X Y))-

74
??????
  • ?????????????? ? ?? ?? ?? ???????? false ???
    ???? ? ????? ?????? ??????? ?? ? ??????????.
    ??????????? ?? ??? ?????????? ?? fail
  • ?????????? ? ?????????????? ?? ?? ?? ????????
    otherwise . ???? ?? ????????? ? ?? ? ?????
    ?????? ??????? ?? ? ?????????, ? ????? ??????? ?
    ?? ???? ? ?? ? ????????? ???? ?? ??? ??????
    ???????? ???????? ?? ??????????

75
?????? 6
  • ????? ?? ????? ?? otherwise ??????????? ??
    default
  • p(I,Result)-
  • ( otherwise -gt Result 1
  • I1 -gt Result 0
  • I2 -gt Result -1
  • ).
  • ???? ???????? ????? ???? ?? ?????? ????????
    (?.?. ?????? ??????????? ??), ?????? otherwise
    ??????????? ?? true

76
?????? 6?
  • p(I,Result)-
  • ( I1 -gt Result 0
  • I2 -gt Result -1
  • / else / Result 1
  • ).

77
????????? ?? "????????" ?? ?????
  • ???? 12

78
?????????? ?? ?????? ???????
  • ????? ??? ???????? ?? ?????? ?? ?????? ?? ??
    ????????? ?????? ??????? ?? ??? ? ?? ??
    ?????????? ? ???????? ????????? ?? ?????
  • ???? ????????? ?? ?? ??????????? ????????? ?
    ??????? ????? (backtracking) ? ???????? ? ??????
    ???? ???????? ??????? ??? backtracking ? ?????
    ?????? ?? ?? ??????? ?????????? ?? ????
    ???????? ?? backtracking ??? ????????

79
?????????? ?? ?????? ???????
  • ?????????, ????? ?? ????? ?????? ???? ?? ??? ??
    ??????? ?? ??????????? ?? ?????????? ?? ??????
    ??????? ?? ???????
  • ? ???? ??????? ?? ???? ????????? ????????????
    ??????? ???????? setof/3, ????? ?? ???? ?????????
    ???????? ??-???????
  • ? ??????? ?????
  • setof(X, p(X), L)
  • ??????? L ? ??????????? ?? ?????? ?????????? ??
    X, ?? ????? ? ?????? ????????? p(X) ??????

80
?????? 1
  • ?? ??????????? ?? ????? ????? ???? ?? ?????
    ?????????? ????? ?????? ? ?????? ?? ??????????
    ??????? ?? ?????? ????, ????? ?? ?????? ????
  • ???? ?? ???????????, ?? ?????? ?? ????? ???????
    ?????????
  • debt(Debtor, Invoice, AmountUnpaid)
  • ?????? Debtor ? ??? ?? ?????, Invoice ? ??????
    ?? ?????????? ????? Debtor ?? ? ??? ?? ???????,
    ????? ??? ??? ?? ?????????, ? AmountUnpaid ?
    ??????, ????? ??? ??? ??? ?? ????? ?? ???? ?????

81
?????? 1
  • ?????? ? ????????? ??? ?? ?????? ????????? ????
    ?? ???????
  • ?- debt(Debtor,_,_),write(Debtor),nl,fail.
  • ????????? ????? ??? ??????? ????????
  • ??? ????? ??????? ??? ???????, ????? ?? ????????
    ??? ??? ???????, ??? ?? ?? ????? ? ??????? ??
    ?????????? ??? ????
  • ??? ???? ???????? - ???? ???? ?? ?? ????????.
    ???? ??????? ?? ?????, ?? ??? ? ???? ????? ????
    ????? ?? ?? ?????? ?? ???? ?????? ??????? ?? ??
    ?????? ?????? ?? ?? ?? ?????? ????

82
?????? 1
  • ????, ????? ?? ?????????? ? ?? ???????
    ??????????? ?? ??????????.
  • ?????????? setof/3 ???????, ?????? ???????????,
    ????? ?? ???????? ? ??????. ???? ?????? ????????
    ? ?????????? ?? ???????? ??????? ????????? ?
    ?????? ???????? ? ? ????? ???????. ???? ????????
    ?? ???? ???????? ?? ??????? ?? ?? ?????
    ???????????? ? ????? ?? ??????? ????????

83
?????? 1
  • print_debtor_report-
  • setof(Debtor,debtor(Debtor),Debtors),
  • !, / ??? ???? ???? ??????? /
  • print_debtor_report_header,
  • print_debtor_lines(Debtors),
  • print_debtor_report_footer.
  • print_debtor_report-
  • print_null_debtor_report.

84
?????? 1
  • print_debtor_lines().
  • print_debtor_lines(DebtorDebtors) -
  • print_debtor_line(Debtor),
  • print_debtor_lines(Debtors).
  • debtor(Debtor)-
  • debtor(Debtor,_,_).

85
?????? 2
  • ?????? ????? ?? ???????? ???? ?? ?????? ??
    ?????????? ?? ????? ??????? ??????? ??? ????.
  • total_debt(Debtor, Debt)-
  • setof( Invoice-AmounUnpaid,
  • debt(Debtor,Invoice,AmounUnpaid),
  • InvoiceAmounts),
  • total_sum(InvoiceAmounts,0,Debt).

86
?????? 2
  • total_sum(,Sum,Sum).
  • total_sum(Invoice-AmounUnpaidInvoiceAmounts,Sum
    0,Sum)-
  • Sum1 is Sum0AmountUnpaid,
  • total_sum(InvoiceAmounts,Sum1,Sum).
  • print_debtor_line(Debt)-
  • total_debt(Debtor, Debt),
  • write(Debtor),write( owes ),write(Debt),nl.

87
?????????? ?????????
  • ??????????? ??? ?????????? ????????? ??
    ?????????? ?? ?????? ???????
  • findall/3 ?????? ?????? ?????????? ? ????, ?
    ????? ?? ?? ????????, ?? ?? ????????? ????????
    ?????????? ??????
  • setof/3 ????? ????????? ?? ?????????? (?????? ?
    ?????????? ??? ??? ??????????) ? ?????????
    ???????? ?????????? ??????
  • bagof/3 ?????? ????? findall/3 ? setof/3

88
?????? 3
  • likes(bill, cider).
  • likes(dick, beer).
  • likes(harry, beer).
  • likes(jan, cider).
  • likes(tom, beer).
  • likes(tom, cider).
  • ?- setof(X, likes(X,Y), S).
  • S dick,harry,tom,
  • Y beer ?
  • S bill,jan,tom,
  • Y cider ?
  • ?- setof((Y,S), setof(X, likes(X,Y), S), SS).
  • SS (beer,dick,harry,tom), (cider,bill,ja
    n,tom)

89
?????? 3
  • ?- findall(X,likes(X,Y),S).
  • S bill,dick,harry,jan,tom,tom ?
  • yes
  • ?- bagof(X,likes(X,Y),S).
  • S dick,harry,tom,
  • Y beer ?
  • S bill,jan,tom,
  • Y cider ?
  • no

90
?????? 3
  • ???????????? ? Goal ????? ?? ?? ?????? ??
    ????????, ????? ??? ?? ??????? ?? ?? ???????? ?
    Goal ??????????? ???????? ?? ????????????
  • YQ
  • ???????? ?? ?????????? Y ?????? ?? Q ? true,
    ?????? Y ? ??????? ?????????? ? ??????.
  • ?- setof(X, Y(likes(X,Y)), S).
  • S bill,dick,harry,jan,tom
  • ?- bagof(X,Ylikes(X,Y),S).
  • S bill,dick,harry,jan,tom,tom ?
  • no
  • ?- findall(X,likes(X,Y),S).
  • S bill,dick,harry,jan,tom,tom ?
  • yes

91
?????????? ?????????
  • ?????????? findall/3 ? ?????? ?? ClocksinMelish
    ? ???? ?? ???????? ????? ??????
  • ??????????? bagof/3 ? setof/3 ?? ???????? ??
    ???? ??? ?? David H. Warren ? ???????? ??????
    Higher-Order Extensions to Prolog, Are They
    Needed?
  • ????? ?????? ??????? ?????? ?? ???????? bagof/3 ?
    setof/3. ???? ???????? ?? ?? ???????? ????,
    ?????? ????? ?? ???? ????????? ? ????????
    ????????? ?? ??????? ??????
  • ?? ? ?????????? ?? ?? ???????? ? findall/3 ,
    ?????? bagof/3 ???? ?? ?? ????????

92
?????????? ?????????
  • findall(Template, Enumerator, Solutions)-
  • bagof(Template, EnumeratorEnumerator, X),
  • !,
  • SolutionsX.
  • findall(_,_,).

93
?????????? ?????????
  • findall(Template,Enumerator,List)
  • ?????? ?????? ?????????? ?? Template, ?? ?????
    Enumerator ? ????????????, ? ?? ???????? ?
    ?????? ?? ????, ? ????? ?? ?? ???????? (?.?.
    ??????? ??????? ????????? ?? ??????? ???? ?????
    ??????? ?? ???????, ? ?????????? - ???? ????????
    ??????? ?? ???????) ? ??????? List ? ???? ??????.
    ?????????? List ? ??????????, ? Template ?
    ?????????? ??? ????, ????? ????????? ??
    ??????????, ?? ????? ?? ????? ? ??????????

94
????????????? ????????? ?? ???????????? ?????????
  • findall_1(Template,Enumerator,List)-
  • L ,
  • ( call(Enumerator),
  • L TemplateL,
  • fail
  • reverse(List)
  • ).
  • ?????? ???? ??? ????? ?????? ???????

95
????????????? ????????? ?? ???????????? ?????????
  • findall_1(Template,Enumerator,List)-
  • L ,
  • ( call(Enumerator),
  • L TemplateL,
  • fail
  • reverse(L,List)
  • ).
  • ?????? ???? ??? ????? ?????? ???????

96
????????????? ????????? ?? ???????????? ?????????
  • findall_2(Template,Enumerator,List)-
  • assert(l()),
  • ( call(Enumerator),
  • retract(l(L)),
  • assert(l(TemplateL)),
  • fail
  • retract(l(L)),
  • reverse(L,List)
  • ).

97
????????????? ????????? ?? ???????????? ?????????
  • ??? ???? ????????? ????????? ????? ????????
  • Enumerator ???? ?? ????? ?? ???? ?????? ?????????
    ??? findall , ???????????? ??????????? ??? assert
    ?????? ?? ?? ?????? ? assert?.
  • retract ????? backtrack ?? ???????? ? ????? ???,
    ?????? ?????? ??????, ????? ??????? - ????????
    ???? ??????
  • ???????????? ?? ?????? ?? ???? ????? ?? ??????
    O(N2) ?????, ?????? N ? ???? ?? ??????????
    ???????

98
????????? ?? ???????????? ????????? (Clocksin
Melish)
  • findall_c_and_m(Template,Enumerator,_)-
  • asserta(found(mark)), push mark on stack
    found
  • call(Enumerator),
  • asserta(found(Template)),
  • fail.
  • findall_c_and_m(_,_,List)-
  • collect_found(,L),
  • !, this cut is totally pointless
  • ListL.

99
????????? ?? ???????????? ????????? (Clocksin
Melish)
  • collect_found(S,L)-
  • getnext(X),
  • !, while there is a non-mark on the stack
  • collect_found(XS,L).
  • collect_found(L,L). return L when mark is
    found
  • getnext(X)-
  • retract(found(X)),
  • !, stop retract backtracking
  • X\mark. check for end of list

100
????????? ?? ???????????? ????????? (Clocksin
Melish)
  • ?- findall_c_and_m(X,member(X,tom,dick,harry),L
    ).
  • L tom,dick,harry ?
  • no
  • ?- findall_c_and_m(X,member(X,tom,dick,mark,harr
    y),L).
  • L harry ?
  • yes
  • ?- listing(found).
  • found(dick).
  • found(tom).
  • found(mark).
  • yes
  • ??? Templatemark ?? ???????? ??????. ?????? ??
    ???? ?? ??????????? ????????? ?? ??????????

101
?????????? ?????????
  • bagof/3 ? setof/3 ???? ????? ?????? ????
    findall/3
  • bagof(Template, Enumerator, InstanceList)
  • setof(Template, Enumerator, InstanceSet)
  • bagof/3 ????? ??????? ????? ?????????? ?
    Enumerator, ????? ?? ?????????? ? ?? ?? ????????
    ? Template. ???? ????????, ?? ??? ???? ??
    ????????/???????? ???????????? ?? ???? ??????????

102
?????????? ?????????
  • ??? ??? ??????? ???? ??????????, ????? ????? ??
    ?? ?????? (?? ????? ?? ??????????) ? Enumerator
  • ?????????? ??????? ?? ? Template
  • ??????????, ????? ?????? ?? ????? ???????? ????
    bagof/3 (???????? ??????????)
  • ??????????, ????? ????????? ?? ?? ???????????
    (???????????? ??????????).

103
?????? 4
  • calendar(tom,algebra,monday).
  • calendar(tom,cooking,tuesday).
  • calendar(tom,english,wednesday).
  • calendar(sue,algebra,tuesday).
  • calendar(sue,history,wednesday).
  • calendar(sue,biology,thursday).
  • bagof(Subject,calendar(Person,Subject,_),Subjects)
  • Subject -????????? ?? ? Template
  • Person - ?????? ?? ???????
  • _ - ?????? ?? ??????????

104
?????????? ?????????
  • ??? ?? ???????, ??? ?????????? ??? ??? ???? ??
    ??????????? Template ???? ???????, ???
    ?????????? ?????? ?? ?? ????????? ? ??????? ??
    ??????????
  • ??? ??? ??????, ?? ????? ?? ?? ??????????
    ?????????? ?????????? ?? ???????????? ????????
    ? ???????? ?? ????????????
  • ?? ???????? ?????????? ?? ?? ???????? ? ????????
    ?? ????????????
  • ?? ????????? ?????????? ??????????
  • ?? ????????? ???????????? ???????? ? ???????? ??
    ????????????

105
?????????? ?????????
  • ???? ?? ????????? ???????????? ???????? ?
    ???????? ?? ????????????.
  • ???????? ??
  • X1X2X3Goal
  • ????? ????????
  • X1(X2(X3Goal))

106
?????? 4?
  • ?- bagof(Subject,Daycalendar(Person,Subject,Day
    ),Subjects).
  • Person sue,
  • Subjects algebra,history,biology ?
  • Person tom,
  • Subjects algebra,cooking,english ?
  • no

107
?????? 5
  • ?- setof(X,member(X,A,B),S),Aa,Ba.
  • A a,
  • B a,
  • S a,a ?
  • yes
  • ?- Gp(X,Y),setof(G,GG,Gs).
  • Gsp(_100,a),p(b,_103)
  • Ako _100b, _103a, ??????????
  • Gsp(b,a),p(b,a)
Write a Comment
User Comments (0)
About PowerShow.com