prezentacja wyklad 2


(1) Bez cut-a
program:-
wykonaj(X),write(" ",X," "),
wykonaj(Y),write(" ",Y," "),
write(" <- "),fail.
program.
wykonaj(0).
wykonaj(1).
Fail i cut
wykonaj(X):-wykonaj_dalej(X).
wykonaj_dalej(2).
wykonaj_dalej(3).
na przykładzie programu w2_3
3
(1) Bez cut-a
Fail  predykat standardowy, bezargumentowy, deterministyczny
program:-
i zawsze fałszywy.
wykonaj(X),write(" ",X," "),
W obrębie jednej klauzuli nigdy nie przejdziemy poza fail-a, wykonaj(Y),write(" ",Y," "),
write(" <- "),fail.
wobec czego stosuje się go jako ostatni predykat przed kropką.
program.
Służy do wymuszania nawrotów.
wykonaj(0).
wykonaj(1).
wykonaj(X):-wykonaj_dalej(X).
wykonaj_dalej(2).
wykonaj_dalej(3).
! (cut)  predykat standardowy, bezargumentowy, deterministyczny,
zawsze prawdziwy, o szczególnych właściwościach
odcinania możliwości powrotu przed cut-a w obrębie danej
klauzuli. W konsekwencji wszelkie alternatywy klauzul
znajdujących się przed cut-em są  zapominane .
Służy głównie do sterowania liczbą rozwiązań.
2 4
(1) Bez cut-a (1) Bez cut-a
program:- program:-
wykonaj(X),write(" ",X," "), X = 0 wykonaj(X),write(" ",X," "),
wykonaj(Y),write(" ",Y," "), wykonaj(Y),write(" ",Y," "),
write(" <- "),fail. write(" <- "),fail.
program. program.
wykonaj(0). wykonaj(0).
wykonaj(1). wykonaj(1).
wykonaj(X):-wykonaj_dalej(X). wykonaj(X):-wykonaj_dalej(X).
wykonaj_dalej(2). wykonaj_dalej(2).
wykonaj_dalej(3). wykonaj_dalej(3).
0 0
0 0
0 0
0 0
5 7
(1) Bez cut-a (1) Bez cut-a
program:- program:-
wykonaj(X),write(" ",X," "), wykonaj(X),write(" ",X," "),
wykonaj(Y),write(" ",Y," "), wykonaj(Y),write(" ",Y," "),
X = 0 X = 0, Y = 0
write(" <- "),fail. write(" <- "),fail.
program. program.
wykonaj(0). wykonaj(0).
wykonaj(1). wykonaj(1).
wykonaj(X):-wykonaj_dalej(X). wykonaj(X):-wykonaj_dalej(X).
wykonaj_dalej(2). wykonaj_dalej(2).
wykonaj_dalej(3). wykonaj_dalej(3).
0 0 0
0 0 0
0 0 0
0 0 0
6 8
(1) Bez cut-a (1) Bez cut-a
program:- program:-
wykonaj(X),write(" ",X," "), wykonaj(X),write(" ",X," "),
wykonaj(Y),write(" ",Y," "), wykonaj(Y),write(" ",Y," "),
X = 0, Y = 0
write(" <- "),fail. write(" <- "),fail.
X = 0, Y = 0
program. program.
wykonaj(0). wykonaj(0).
wykonaj(1). wykonaj(1).
wykonaj(X):-wykonaj_dalej(X). wykonaj(X):-wykonaj_dalej(X).
wykonaj_dalej(2). wykonaj_dalej(2).
wykonaj_dalej(3). wykonaj_dalej(3).
0 0 <- 0 0 <-
0 0 <- 0 0 <-
0 0 <- 0 0 <-
0 0 <- 0 0 <-
9 11
(1) Bez cut-a (1) Bez cut-a
program:- program:-
wykonaj(X),write(" ",X," "), wykonaj(X),write(" ",X," "),
wykonaj(Y),write(" ",Y," "), wykonaj(Y),write(" ",Y," "),
X = 0, Y = 0 X = 0, Y = 1
write(" <- "),fail. write(" <- "),fail.
program. program.
wykonaj(0). wykonaj(0).
wykonaj(1). wykonaj(1).
wykonaj(X):-wykonaj_dalej(X). wykonaj(X):-wykonaj_dalej(X).
wykonaj_dalej(2). wykonaj_dalej(2).
wykonaj_dalej(3). wykonaj_dalej(3).
0 0 <- 0 0 <- 1
0 0 <- 0 0 <- 1
0 0 <- 0 0 <- 1
0 0 <- 0 0 <- 1
10 12
(1) Bez cut-a (1) Bez cut-a
program:- program:-
wykonaj(X),write(" ",X," "), wykonaj(X),write(" ",X," "),
wykonaj(Y),write(" ",Y," "), wykonaj(Y),write(" ",Y," "),
X = 0, Y = 1
write(" <- "),fail. write(" <- "),fail.
X = 0, Y = 1
program. program.
wykonaj(0). wykonaj(0).
wykonaj(1). wykonaj(1).
wykonaj(X):-wykonaj_dalej(X). wykonaj(X):-wykonaj_dalej(X).
wykonaj_dalej(2). wykonaj_dalej(2).
wykonaj_dalej(3). wykonaj_dalej(3).
0 0 <- 1 <- 0 0 <- 1 <-
0 0 <- 1 <- 0 0 <- 1 <-
0 0 <- 1 <- 0 0 <- 1 <-
0 0 <- 1 <- 0 0 <- 1 <-
13 15
(1) Bez cut-a (1) Bez cut-a
program:- program:-
wykonaj(X),write(" ",X," "), wykonaj(X),write(" ",X," "),
wykonaj(Y),write(" ",Y," "), wykonaj(Y),write(" ",Y," "),
X = 0, Y = 1 X = 0, Y = 1
write(" <- "),fail. write(" <- "),fail.
program. program.
wykonaj(0). wykonaj(0).
wykonaj(1). wykonaj(1).
wykonaj(X):-wykonaj_dalej(X). wykonaj(X):-wykonaj_dalej(X).
wykonaj_dalej(2). wykonaj_dalej(2).
wykonaj_dalej(3). wykonaj_dalej(3).
0 0 <- 1 <- 0 0 <- 1 <-
0 0 <- 1 <- 0 0 <- 1 <-
0 0 <- 1 <- 0 0 <- 1 <-
0 0 <- 1 <- 0 0 <- 1 <-
14 16
(1) Bez cut-a (1) Bez cut-a
program:- program:-
wykonaj(X),write(" ",X," "), wykonaj(X),write(" ",X," "),
wykonaj(Y),write(" ",Y," "), wykonaj(Y),write(" ",Y," "),
X = 0, Y = 2 X = 0, Y = 3
write(" <- "),fail. write(" <- "),fail.
program. program.
wykonaj(0). wykonaj(0).
wykonaj(1). wykonaj(1).
wykonaj(X):-wykonaj_dalej(X). wykonaj(X):-wykonaj_dalej(X).
wykonaj_dalej(2). wykonaj_dalej(2).
wykonaj_dalej(3). wykonaj_dalej(3).
0 0 <- 1 <- 2 0 0 <- 1 <- 2 <- 3
0 0 <- 1 <- 2 0 0 <- 1 <- 2 <- 3
0 0 <- 1 <- 2 0 0 <- 1 <- 2 <- 3
0 0 <- 1 <- 2 0 0 <- 1 <- 2 <- 3
17 19
(1) Bez cut-a (1) Bez cut-a
program:- program:-
wykonaj(X),write(" ",X," "), wykonaj(X),write(" ",X," "),
wykonaj(Y),write(" ",Y," "), wykonaj(Y),write(" ",Y," "),
X = 0, Y = 2 X = 0, Y = 3
write(" <- "),fail. write(" <- "),fail.
program. program.
wykonaj(0). wykonaj(0).
wykonaj(1). wykonaj(1).
wykonaj(X):-wykonaj_dalej(X). wykonaj(X):-wykonaj_dalej(X).
wykonaj_dalej(2). wykonaj_dalej(2).
wykonaj_dalej(3). wykonaj_dalej(3).
0 0 <- 1 <- 2 <- 0 0 <- 1 <- 2 <- 3 <-
0 0 <- 1 <- 2 <- 0 0 <- 1 <- 2 <- 3 <-
0 0 <- 1 <- 2 <- 0 0 <- 1 <- 2 <- 3 <-
0 0 <- 1 <- 2 <- 0 0 <- 1 <- 2 <- 3 <-
18 20
(1) Bez cut-a (1) Bez cut-a
program:- program:-
wykonaj(X),write(" ",X," "), X = 1, Y = 3 wykonaj(X),write(" ",X," "), To samo powtarza się
wykonaj(Y),write(" ",Y," "), wykonaj(Y),write(" ",Y," "),
dla X = 2 oraz X = 3
write(" <- "),fail. write(" <- "),fail.
program. program.
wykonaj(0). wykonaj(0).
wykonaj(1). wykonaj(1).
wykonaj(X):-wykonaj_dalej(X). wykonaj(X):-wykonaj_dalej(X).
wykonaj_dalej(2). wykonaj_dalej(2).
wykonaj_dalej(3). wykonaj_dalej(3).
0 0 <- 1 <- 2 <- 3 <- 1 0 0 <- 1 <- 2 <- 3 <- 1 0 <- 1 <-
0 0 <- 1 <- 2 <- 3 <- 1 0 0 <- 1 <- 2 <- 3 <- 1 0 <- 1 <-
0 0 <- 1 <- 2 <- 3 <- 1 0 0 <- 1 <- 2 <- 3 <- 1 0 <- 1 <-
0 0 <- 1 <- 2 <- 3 <- 1 0 0 <- 1 <- 2 <- 3 <- 1 0 <- 1 <-
2 <- 3 <- 2 0 <- 1 <- 2 <- 3 <- 3
2 <- 3 <- 2 0 <- 1 <- 2 <- 3 <- 3
2 <- 3 <- 2 0 <- 1 <- 2 <- 3 <- 3
2 <- 3 <- 2 0 <- 1 <- 2 <- 3 <- 3
0 <- 1 <- 2 <- 3
0 <- 1 <- 2 <- 3
0 <- 1 <- 2 <- 3
0 <- 1 <- 2 <- 3
21 23
(1) Bez cut-a (1) Bez cut-a
program:- program:-
wykonaj(X),write(" ",X," "), wykonaj(X),write(" ",X," "),
wykonaj(Y),write(" ",Y," "), wykonaj(Y),write(" ",Y," "),
X = 1, Y = 0
write(" <- "),fail. write(" <- "),fail.
X = 1, Y = 1
program. program.
Zawsze prawdziwe.
X = 1, Y = 2
wykonaj(0). X = 1, Y = 3 wykonaj(0).
wykonaj(1). wykonaj(1).
wykonaj(X):-wykonaj_dalej(X). wykonaj(X):-wykonaj_dalej(X).
wykonaj_dalej(2). wykonaj_dalej(2).
wykonaj_dalej(3). wykonaj_dalej(3).
0 0 <- 1 <- 2 <- 3 <- 1 0 <- 1 <- 0 0 <- 1 <- 2 <- 3 <- 1 0 <- 1 <-
0 0 <- 1 <- 2 <- 3 <- 1 0 <- 1 <- 0 0 <- 1 <- 2 <- 3 <- 1 0 <- 1 <-
0 0 <- 1 <- 2 <- 3 <- 1 0 <- 1 <- 0 0 <- 1 <- 2 <- 3 <- 1 0 <- 1 <-
0 0 <- 1 <- 2 <- 3 <- 1 0 <- 1 <- 0 0 <- 1 <- 2 <- 3 <- 1 0 <- 1 <-
2 <- 3 2 <- 3 <- 2 0 <- 1 <- 2 <- 3 <- 3
2 <- 3 2 <- 3 <- 2 0 <- 1 <- 2 <- 3 <- 3
2 <- 3 2 <- 3 <- 2 0 <- 1 <- 2 <- 3 <- 3
2 <- 3 2 <- 3 <- 2 0 <- 1 <- 2 <- 3 <- 3
0 <- 1 <- 2 <- 3 <- yes
0 <- 1 <- 2 <- 3 <- yes
0 <- 1 <- 2 <- 3 <- yes
0 <- 1 <- 2 <- 3 <- yes
22 24
(2) Z cut-em  pozycja 1 (3) Z cut-em  pozycja 2
program:-!,write(" ! "), program:-
wykonaj(X),write(" ",X," "), wykonaj(X),write(" ",X," "),!,write(" ! "),
wykonaj(Y),write(" ",Y," "), wykonaj(Y),write(" ",Y," "),
write(" <- "),fail. write(" <- "),fail.
program. program.
wykonaj(0). wykonaj(0).
O tych alternatywach
wykonaj(1). wykonaj(1).
wykonaj(X):-wykonaj_dalej(X). wykonaj(X):-wykonaj_dalej(X). kompilator  zapomni tylko dla tego
wywołania wykonaj()
wykonaj_dalej(2). wykonaj_dalej(2).
wykonaj_dalej(3). wykonaj_dalej(3).
! 0 ! 0 <- 1 <- 2 <- 3 <- no
! 0 ! 0 <- 1 <- 2 <- 3 <- no
! 0 ! 0 <- 1 <- 2 <- 3 <- no
! 0 ! 0 <- 1 <- 2 <- 3 <- no
25 27
(2) Z cut-em  pozycja 1 (4) Z cut-em  pozycja 3
program:-!,write(" ! "), program:-
wykonaj(X),write(" ",X," "), wykonaj(X),write(" ",X," "),
wykonaj(Y),write(" ",Y," "), wykonaj(Y),write(" ",Y," "),!,write(" ! "),
write(" <- "),fail. write(" <- "),fail.
program. program.
wykonaj(0). wykonaj(0).
O tych alternatywach
wykonaj(1). wykonaj(1).
wykonaj(X):-wykonaj_dalej(X). wykonaj(X):-wykonaj_dalej(X). kompilator  zapomni dla obu
wywołań wykonaj()
wykonaj_dalej(2). wykonaj_dalej(2).
wykonaj_dalej(3). wykonaj_dalej(3).
! 0 0 <- 1 <- 2 <- 3 <- 1 0 <- 1 <- 0 0 ! <- no
! 0 0 <- 1 <- 2 <- 3 <- 1 0 <- 1 <- 0 0 ! <- no
! 0 0 <- 1 <- 2 <- 3 <- 1 0 <- 1 <- 0 0 ! <- no
! 0 0 <- 1 <- 2 <- 3 <- 1 0 <- 1 <- 0 0 ! <- no
2 <- 3 <- 2 0 <- 1 <- 2 <- 3 <- 3
2 <- 3 <- 2 0 <- 1 <- 2 <- 3 <- 3
2 <- 3 <- 2 0 <- 1 <- 2 <- 3 <- 3
2 <- 3 <- 2 0 <- 1 <- 2 <- 3 <- 3
0 <- 1 <- 2 <- 3 <- no
0 <- 1 <- 2 <- 3 <- no
0 <- 1 <- 2 <- 3 <- no
0 <- 1 <- 2 <- 3 <- no
26 28
(5) Z cut-em  pozycja 4 (7) Z cut-em  pozycja 6
program:- program:-
wykonaj(X),write(" ",X," "), wykonaj(X),write(" ",X," "),
wykonaj(Y),write(" ",Y," "), wykonaj(Y),write(" ",Y," "),
write(" <- "),fail. write(" <- "),fail.
program. program.
wykonaj(0):-!,write(" ! "). wykonaj(0).
O tych alternatywach
wykonaj(1). wykonaj(1).
wykonaj(X):-wykonaj_dalej(X). kompilator  zapomni w każdym wykonaj(X):-wykonaj_dalej(X),!,write(" ! ").
wywołaniu wykonaj(0)
wykonaj_dalej(2). wykonaj_dalej(2).
wykonaj_dalej(3). wykonaj_dalej(3). O tej alternatywie kompilator  zapomni w tym
wywołaniu wykonaj_dalej()
! 0 ! 0 <- yes 0 0 <- 1 <- ! 2 <- 1 0 <- 1 <- !
! 0 ! 0 <- yes 0 0 <- 1 <- ! 2 <- 1 0 <- 1 <- !
! 0 ! 0 <- yes 0 0 <- 1 <- ! 2 <- 1 0 <- 1 <- !
! 0 ! 0 <- yes 0 0 <- 1 <- ! 2 <- 1 0 <- 1 <- !
2 <- ! 2 0 <- 1 <- ! 2 <- yes
2 <- ! 2 0 <- 1 <- ! 2 <- yes
2 <- ! 2 0 <- 1 <- ! 2 <- yes
2 <- ! 2 0 <- 1 <- ! 2 <- yes
29 31
(6) Z cut-em  pozycja 5
program:-
wykonaj(X),write(" ",X," "),
wykonaj(Y),write(" ",Y," "),
write(" <- "),fail.
program.
wykonaj(0).
wykonaj(1):-!,write(" ! ").
O tej alternatywie
wykonaj(X):-wykonaj_dalej(X).
kompilator  zapomni w każdym
wywołaniu wykonaj(1)
wykonaj_dalej(2).
wykonaj_dalej(3).
0 0 <- ! 1 <- ! 1 0 <- ! 1 <- yes
0 0 <- ! 1 <- ! 1 0 <- ! 1 <- yes
0 0 <- ! 1 <- ! 1 0 <- ! 1 <- yes
0 0 <- ! 1 <- ! 1 0 <- ! 1 <- yes
30


Wyszukiwarka

Podobne podstrony:
Prezentacja Wykład nr 5
PREZENTACJA wyklad TI 2
prezentacja wyklad 4
PREZENTACJA wyklad TI 4
prezentacja wyklad 9
prezentacja wyklad 3
6?resowanie tcpip prezentacja wykladowa
prezentacja wyklad 8
PREZENTACJA wyklad TI 1
Prezentacja Wykład nr 3 Zdolność do bycia stroną
prezentacja wyklad 5
prezentacja wyklad 1
prezentacja wyklad 1
wyklad11 prezentacja
Wyklad5 Studium wykonalnosci prezentacja
MNUM wykład1 prezentacja
prezentacja do wykladu obliczenia PCR i startery optymalizacja
wyklad04 prezentacja
Prezentacja do wykladu 1 2 15 cel

więcej podobnych podstron