Backtracking
Ahora probemos con dos variables diferentes.
Nuevamente tenemos la misma pregunta, lo único que hemos variado es la decisión de cambiar
la variable de la segunda meta. Por lo que ls valores que tomaran serán
independientes. Puesto que son diferentes variables.
Respecto a la figura anterior. Se ejecutara la pregunta que en realidad es una combinación de dos
metas.
La primera meta se trata de satisfacer y encuentra en la línea 1, un valor para X.
Se toma como verdadera la meta.
La segunda meta se vuelve a entrar a la base de conocimiento. Y encuentra un valor para Y.
Enambos casos el valor encontrado será chocolate. A pesar de que es el mismo
concepto. Físicamente se encuentran ubicados en diferentes localidades de
memoria X y Y.
Sin embargo Prolog, realiza un proceso que se le conoce como igualdad y unificación. En el cual, descubre que X es igual Y y el valor de Y es “chocolate”.
Por eso el valor que devuelve es X=Y=chocolate
El proceso aun no concluye. Observamos que de la imagen anterior. La variable Y se
queda apuntando a la línea 2 de la base de conocimiento. Como es la variable
que se encuentra después X, Prolog buscara si hay mas valores para esa
variable.
Para completar la respuesta Prolog
volverá a acceder a la base de conocimiento para resolver la segunda meta.
Encontrará ahora el valor que esta en la línea 2 Y=chocolate.
Si el usuario quiere resatisfacer la meta, volverá a realizarse el ciclo. X será igual a “vino” y Y
igual a “vino”.
Finalmente los últimos resultados serán.
X=chocolate
Y=chocolate
X=chocolate
Y=vino