• No se han encontrado resultados

Fundamentos de la proramaci!n l!ica

de la programación lógica

Fundamentos de la proramaci!n l!ica

&epaso de la lógica de primer orden

'nifcación y resolución

Cl(usulas de )orn* &esolución +LD*

Programación lógica con cl(usulas de )orn

+em(ntica de los programas lógicos

&epresentación clausada del conocimiento

Consulta de una $ase de cl(usulas

Espacios de $,s-ueda

Programación lógica con n,meros. listas y (r$oles

Control de $,s-ueda en programas lógicos /anipulación de t%rminos* Predicados metalógicos

Competencia :eneral de la Unidad=

− Conocer las ventajas y desventajas del paradigma de programación lógica. − Identificar los elementos de la programación lógica.

−  Aplicar la programación lógica en la resolución de problemas reales. − Diseñar sistemas expertos con programación lógica.

,cti$idades de ,prendi0a@e

• Identificar los conceptos b"sicos de la programación lógica!

• (escribir las clausulas de 1orn y resolución SL(, para identificar reglas

de inferencia lógica y emplearlas en la representación del conocimiento!

• 8econocer los elementos de la sem"ntica de la programación lógica para

interpretar el conocimiento y aplicarlo en su representación!

• Investigar, al menos, un lenguaje de programación lógica diferente al

establecido para la materia!

•  )plicar la programación lógica para resolver un problema real,

Uni'icaci!n 2 Resoluci!n

La (educción 'atural consiste en un sistema de reglas de inferencia, es decir, a partir de <algo< podemos deducir o <llegar a< <otra cosa<, hasta #ue encontramos una conclusión

0$2G(G ($ 8$SGL&CIG'

$l 0todo de 8esolución, es un intento de mecanizar el proceso de

deducción natura! Las demostraciones se consiguen utilizando el mtodo refutativo 3reducción al absurdo4, es decir lo #ue intentamos es encontrar contradicciones!

$l mtodo de resolución es una regla de inferencia #ue toma dos clausulas y produce una tercera #ue es consecuencia lógica de estas! $l proceso consiste en identificar y borrar parejas complementarias de dos clausulas, una de cada clausula y luego, combinar las otras literales para formar una clausula nueva!

0$2G(G ($ &'IFIC)CIG'

La &nificación es un procedimiento de emparejamiento #ue compara dos literales y descubre si e:iste un conjunto de sustituciones #ue los haga idnticos!

La idea b"sica de la unificación es muy sencilla!

− $n primer lugar se comprueba si los predicados coinciden! Si es as%,

seguimos adelante9 si no es #ue no son unificables!

− Si el predicado concuerda, comenzamos a comparar los argumentos! Si

el primero de ellos coincide en ambos literales, continuamos con el siguiente!!! y as% hasta completar todos los argumentos!

Proramaci!n l!ica con cl3usulas de 4orn

,o-n Clau"" and P-olo/

Prueba por la resolución consist%a en encontrar la forma normal conjuntiva, #ue inclu%a cl"usulas unidos, cada uno de los cuales era una disyunción de literales  J

ie,

71 72 7CGGG

&na ligeramente forma de esta es una cl"usula 1orn, donde la restricción es #ue sólo uno de los literales es en negativo! Por ejemplo.

1G 71 72 7C GGG

2G 71 72 7C GGG U

CG U

4G 71

Son todas las cl"usulas de 1orn! $s f"cil demostrar #ue, por ejemplo, 3+4 es e#uivalente a

71 72 7C GGGA U

or in goalJdirected form:

U A 71 72 7CGGG

$sta es la forma t%pica de una declaración en el lenguaje de programación lógica Prolog! 1ay dos modos en Prolog! $n el modo de consultar, uno suministra el sistema con

a:iomas! 32enga en cuenta #ue el  ⇐ JJ se sustituye por JJ. H JA, Kue capitalizan s%mbolos

son variables, y #ue el ! JJ es importante4 Lbuelos(*%V)@ hiWo(*%X)%"ariente(V%X)G MiWos(charles%eliYabeth)G

Harientes(george%eliYabeth)G

$n el modo de consulta podr%amos preguntar  Z@ Lbuelos(eliYabeth%charles)G

no

con prólog nos dice #ue no hay hechos de base de datos para verificar el comunicado! G podr%amos preguntar 

Z@ nieto([%george)G

 ) partir de esta consulta, Prolog trata de justificar cada literal en el lado derecho mediante la b6s#ueda de una coincidencia literal en la L1S de otra cl"usula en la base de datos! $n nuestro ejemplo, se encontrar%a declaración de dbase * y llevar a cabo la unificación 3B = , Meorge = @4! (e modo #ue el lado derecho se convierte en hijo 3, N4, el padre 3Meorge, N4! ) continuación, utiliza la declaración de dbase + para llevar a cabo la unificación 3 = charles, N = $lizabeth4, dejando padre 3Meorge, $lizabeth4 para ser verificada! Gbviamente, d5ase

statement # does t)is it) no unification. ")e system returns t)e unification for Z )ic) is -Z1[1c)arles, ie c)arles.

Z@ grandson([%george)G [  charles Z

es

).(. Consulta de una ase de cl3usulas

))..**.. CCoonnssuulltta a dde e uunna a aasse e ddee cl3usulas

cl3usulas ).

).7. Proramaci!n l!ica con n5meros8 listas 2 3roles.

emos %isto ya un +uen n&mero de con%enciones que de+emos utili0ar para escri+ir   programas en Prolog . La &ltima parte de este tema la dedicaremos a conocer

detalladamente las reglas sintácticas que )emos de seguir para que nuestras +ases de conocimientos sean reconocidas porVisual Prolog .

Como ya )emos estudiado, un programa Prolog  no es más que la especificaci(n de una

 +ase de conocimientos l(gica con las caracter7sticas siguientes:

• Eonsta de una secuencia de oraciones% todas ellas

Jerdaderas% ue e?"resan un conWunto de realidades sobre los obWetos del mundo re"resentado% as\ como sobre sus relacionesG :odas las Jariables tienen cuantificaci,n uniJersal im"l\cita  cuando las Jariables a"arecen en oraciones distintas se consideran tambiQn distintasG

• Ke ace"tan ]nicamente oraciones en forma de Cláusula

de Horn% es decir% las oraciones son at,micas% o bien

una im"licaci,n con un antecedente no negado  un consecuente generalmente "expresiones" se"arados "or comas o "or "untos  comasG 7as comas significan

conWunci,n  los "untos  comas significan disunci,nG

• n JeY de utiliYar antecedentes negados en sus

im"licaciones% en Prolog  se em"lea un o"erador de

negaci,n basado en el fallo una meta no H se considera demostrada si el sistema no logra demostrar HG

Documento similar