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