Centro Universitario de Ciencias Exactas e Ingenierías
Tarea 5
Nombre del curso: Seminario de sistemas basados en conocimiento
Nombre del profesor: Julio Esteban Valdez Lopez
Nombre de los alumnos: Isaías Juárez Esparza
Código: 216658022
Carrera: Ingeniería Informática
Clave: I5914
Sección del curso: D02
Fecha:domingo, 26 de febrero del 2023
Contenido
Cortes rojos y verdes 3
Referencias Bibliográficas 5
Cortes rojos y verdes
El corte es un predicado predefinido que no recibe argumentos. Se representa
mediante un signo de admiración. Sin duda, es el predicado más difícil de entender.
El corte tiene la propiedad de eliminar los puntos de elección del predicado que lo
contiene.
Es decir, cuando se ejecuta el corte, el resultado del objetivo (no sólo la cláusula en
cuestión) queda comprometido al éxito o fallo de los objetivos que aparecen a
continuación. Es como si a Prolog "se le olvidase" que dicho objetivo puede tener
varias soluciones. Otra forma de ver el efecto del corte es pensar que solamente
tiene la propiedad de detener el backtracking cuando éste se produce. Es decir, en
la ejecución normal el corte no hace nada. Pero cuando el programa entra en
backtracking y los objetivos se recorren marcha atrás, al llegar al corte el
backtracking se detiene repentinamente forzando el fallo del objetivo.
Algunos usos que se le dan al corte son:
❖ Para implementar algoritmos diferentes según la combinación de argumentos
de entrada. Algo similar al comportamiento de las sentencias case en los
lenguajes imperativos.
❖ Para conseguir que un predicado solamente tenga una solución. Esto nos
puede interesar en algún momento. Una vez que el programa encuentra una
solución ejecutamos un corte. Así evitamos que Prolog busque otras
soluciones aunque sabemos que éstas existen.
❖ Para optimizar la ejecución. El corte sirve para evitar que por culpa del
backtracking se exploren puntos de elección que, con toda seguridad, no
llevan a otra solución (fallan). Para los entendidos, esto es podar el árbol de
búsqueda de posibles soluciones.
❖ Para facilitar la legibilidad y comprensión del algoritmo que está siendo
programado. A veces se sitúan cortes en puntos donde, con toda seguridad,
no van a existir puntos de elección para eliminar, pero ayuda a entender que
la ejecución sólo depende de la cláusula en cuestión.
Los cortes rojos se utilizan para evitar soluciones erróneas, cuando se omite la
comprobación explícita de alguna condición que se sabe que se va a cumplir para
un determinado uso del predicado.
Los cortes rojos funcionan correctamente sólo cuando se instancia el primer
argumento; no funciona bien cuando se instancian los dos.
En el caso de los cortes verdes, no afectan al sentido declarativo del programa,
podan ramas inútiles, redundantes o infinitas; por ejemplo:
Además, se pueden utilizar en situaciones en las que queremos comprometer la
solución con una cláusula completa.
También, para terminar con una generación de valores que puede conducir a una
rama infinita del árbol de búsqueda.
Referencias Bibliográficas
❖ Castellano, E. S. P. L. (s. f.). Curso intermedio de programaciÃ3n en Prolog.
Programación en Castellano.
[Link]
og_88/4
❖ cut. (s. f.). [Link]
❖ Prolog - Examples of Cuts. (s. f.).
[Link]