Articulo de referencia

Cortar (programación lógica)

El corte , en Prolog , es un objetivo , escrito como ! , que siempre tiene éxito pero no se puede volver atrás. Los cortes pueden evitar retrocesos no deseados , que podrían agr...

El corte , en Prolog , es un objetivo , escrito como !, que siempre tiene éxito pero no se puede volver atrás. Los cortes pueden evitar retrocesos no deseados , que podrían agregar soluciones no deseadas y/o sobrecarga de espacio/tiempo a una consulta.

El corte debe utilizarse con moderación. Si bien los cortes pueden insertarse en código que contiene errores, si una prueba es innecesaria porque un corte ha garantizado que es verdadera, es una buena práctica indicarlo en un comentario en el lugar apropiado. [1]

Algunos programadores llaman al corte una función de control controvertida [2] porque se agregó solo por razones de eficiencia y no es una fórmula lógica .

Tipos

Corte verde

El uso de un corte que solo mejora la eficiencia se denomina corte verde. Los cortes verdes se utilizan para hacer que los programas sean más eficientes sin cambiar el resultado del programa. Por ejemplo:

 apostar ( X )  :-  tengo dinero ( X ),!. 
 apostar ( X )  :-  tengo crédito ( X ),  \+  tengo dinero ( X ).

Esto se denomina operador de corte verde . El ! indica al intérprete que deje de buscar alternativas; sin embargo, si falla, comprobará la segunda regla. Aunque la comprobación de la segunda regla puede parecer redundante, ya que la apariencia de Prolog depende de que haya fallado antes, de lo contrario la segunda regla no se evaluaría en primer lugar. Agregar garantiza que la segunda regla siempre funcionará, incluso si la primera regla se elimina por accidente, se cambia o se mueve después de la segunda. gotmoney(X)gotmoney(X)gotmoney(X)\+ gotmoney(X)

Corte rojo

Un corte que no es un corte verde se denomina corte rojo , por ejemplo:

 apostar ( X )  :-  tengo dinero ( X ),!. 
 apostar ( X )  :-  tengo crédito ( X ).

La colocación correcta del operador de corte y el orden de las reglas son necesarios para determinar su significado lógico. Si por alguna razón se elimina la primera regla (por ejemplo, por un accidente de cortar y pegar ) o se mueve después de la segunda, la segunda regla se romperá, es decir, no garantizará la regla \+ gotmoney(X).

Corte dañino

Un corte que afecta la corrección del programa es un corte perjudicial. Por ejemplo:

min ( X , Y , X )  :-  !,  X  =<  Y .  % el ! es perjudicial porque si Y<X 
min ( X , Y , Y )  :-  Y  <  X .   % no permitirá continuar con la segunda regla y fallará

Referencias

  1. ^ Dyckhoff, Roy (20 de mayo de 1994). Extensiones de programación lógica: 4.º taller internacional, ELP '93, St Andrews, Reino Unido, 29 de marzo - 1 de abril de 1993. Actas. Springer Science & Business Media. ISBN 978-3-540-58025-6.
  2. ^ Fundamentos de la programación lógica , Springer (2012).
Obtenido de "https://es.wikipedia.org/w/index.php?title=Corte_(programación_lógica)&oldid=1236739848"