Pages: [1]   Go Down
Print
Author Topic: dubbio sul cut  (Read 560 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Alex_47
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 409


The spiral's King


« on: 30-01-2014, 13:36:56 »

Code:
max(N1,N2,N1):- N1>N2.

max(_,N2,N2).


altezza(X,1):- atom(X).

altezza(node(_,Subtree1,Subtree2),N):- altezza(Subtree1,N1),
                                                                altezza(Subtree2,N2),
                                                                max(N1,N2,M),
                                                                !, <---Cut
                                                                 N is M+1.

Questo spezzone di codice fa in modo che l'interprete prolog, nella ricerca di una soluzione per 'altezza',
non possa andare ad utilizzare l'eventuale seconda soluzione per 'max'.

Ma il cut messo in quella posizione la non dovrebbe bloccare l'esecuzione della procedura non facendo eseguire N is M+1?
Logged
SixArt
Matricola
*
Offline Offline

Gender: Male
Posts: 51



« Reply #1 on: 30-01-2014, 14:18:35 »

Il cut è come se fosse un "true",
Vengono valutate tutte le espressioni prime del cut, arriva al cut ed essendo true va ancora avanti... quindi ti chiedi, ma allora cosa blocca?
Quando finisce la valutazione e il backtracking cerca altre soluzioni, una volta arrivato al cut non va più indietro.
Quindi non blocca quello che c'è dopo ma quello che c'è prima.
Logged
Pages: [1]   Go Up
Print
Jump to: