Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Veamos entonces cmo podemos encuadrar la resolucin de problemas en una perspectiva de Lgica. En el paradigma lgico, en general usamos soluciones declarativas. Para qu se invent la Lgica? Para poder hacer razonamientos correctos sin necesidad de saber de lo que ests hablando (casi un precursor de la televisin). Qu declaro? Lo que hago a continuacin es declarar conocimiento a travs de predicados (afirmaciones que hago respecto a algo). Tenemos un silogismo tpico de los primeros cursos de Lgica Proposicional Todo hombre es mortal. (cuantificacin universal) Scrates es humano (cuantificacin particular) Ergo, Scrates es mortal. (cuantificacin particular) Esto en lgica, se escribe: V(x)(humano(x)=>mortal(x)) > humano(socrates) > entonces mortal (socrates) Esto va a formar parte de nuestra base de conocimientos de PROLOG: mortal(X):-humano(X). Regla humano(socrates). Hecho Fjense que lo que en lgica se escribe p => q, en sintaxis PROLOG se escribe al revs: q := p.
consecuente antecedente(s). Si se cumplen los antecedentes, entonces se cumple el consecuente. Esta notacin lleva el nombre clusulas de Horn. Qu preguntas puedo hacer? Scrates, es mortal? ?- mortal(socrates). Yes Maradona, es mortal?
?- mortal(maradona). No Qu mortales conocs? ?- mortal(X). X = socrates Yes Hay algn mortal en la sala? ?- mortal(_). Yes Ahora, Dnde hago las preguntas y dnde pongo el conocimiento?
Dnde escribo la base de conocimientos? En un archivo .pl1 Adems de un lugar donde guardar los conocimientos, en un lenguaje lgico yo puedo efectuar consultas (preguntas, objetivos). Esas consultas pueden involucrar variables o no. Qu es una variable? Dentro del paradigma lgico una variable es una incgnita, algo que est sin resolver. Es el caso de mortal(X). X comienza con mayscula, lo que me indica que no es un valor fijo. Podra hacer mortal(Quien) si lo quisiera hacer ms legible. Quin termina resolviendo que Scrates es mortal? Un motor de inferencia que trabaja con algn tipo de algoritmo mgico (ese algoritmo tiene un nombre y es el Principio de Resolucin de Robinson, para que le pregunten a Google si estn interesados). Durante la cursada vamos a evitar saber qu pasa ah abajo, de la misma manera que no intentamos saber cmo se terminan reduciendo las expresiones en funcional. En Lgico lo nico que necesitamos saber es que si yo le hago una consulta
1
mortal(Quien) y en la base de conocimientos adems de Scrates tengo a Platn, entonces la consulta me devolver: Quien = socrates Quien = platon Recordamos: Platn con mayscula es una variable (una incgnita) platon con minscula es un valor (un individuo) Cmo encuentra las soluciones? No nos interesa. Slo vamos a decir que con un mecanismo que se llama backtracking, as es como encuentra todas las unificaciones posibles para una variable. Unificacin de una variable = ligar un valor a esa incgnita X = socrates, X es la incgnita, socrates el valor. Vamos a volver con este concepto en breve. Dos cosas: La declaratividad: no vamos a tener un algoritmo, sino que va a estar implcito en un motor (cuando yo hago las consultas no tengo que programar la lgica que encuentra el conjunto de soluciones posibles). No existe la asignacin / no hay efecto colateral: una vez ms una variable no es una posicin de memoria que almacena estados intermedios. Una variable es una incgnita, no tiene sentido que yo le haga X = X + 1, porque esa condicin nunca se puede cumplir (es una contradiccin en s misma como regla lgica). Dentro de la base de conocimientos ya hemos visto dos tipos de clusulas: Los hechos, que son axiomas (son ciertos porque existen, si no existen se presumen falsos) Las reglas (p => q, que se escriben con la forma clausal de Horn como q :- p).
Variable annima
en la cuarta consulta, yo pregunt si alguien era mortal. La traduccin para la consulta lgica: x / p(x) (existe x tal que p de x se cumple, donde p(x) significa que x es mortal) se traduce a mortal(_).
Cuando yo pregunte: culpable(leo), me va a decir que no. Toda persona es inocente hasta que se demuestre lo contrario. Claro, que ud. no sabrn si Leo es el asesino hasta que termine la cursada. Bueno, por ah un poquito antes2
Atributos y relaciones
Tanto los hechos como las reglas son predicados. Un predicado puede tener: 1 slo argumento (mondico): representa una propiedad o una cualidad. gracioso(krusty). animal(abeja). Varios argumentos (polidicos): representan relaciones. gusta(juan, morocha). ingrediente(pollo, 1).
ANIMALES
Es como decir Animales = { tigre, oso, elefante } planeta(venus). planeta(tierra). Cul es la desventaja de este tipo de definicin? Requiere la enumeracin de todos los elementos que componen el conjunto. Para conjuntos con muchos elementos es cuanto menos incmodo. Otra desventaja que presenta es que no brinda informacin referente al conjunto ms all de la que el observador le puede dar. Una regla forma la definicin por comprensin del predicado.
Disyunciones (OR)
Un grosso es un tipo que es fsico nuclear, o sale con una modelo, o ayuda a los pobres. grosso(X):-fisicoNuclear (X). grosso(X):-saleCon(X, Mujer), modelo(Mujer). (recordamos predicados polidicos que expresan relaciones) grosso(X):-ayudaA(X, Y), pobre(Y).
Esta definicin tiene de bueno que me permite definir una relacin en funcin de otras; pero tiene de malo que no me deja saber en funcin de cul fue. En principio si slo me importa la grositud de una persona, es una buena regla. La decisin de qu tan importante es tener el detalle de grositud es la que va a determinar cmo modelo mi base de conocimientos. Para dar un ejemplo: fjense que una persona que ayuda a los pobres puede definirse como ayudaA(X, Y), pobre(Y) o ayudaAPobres(X). Nosotros definimos los individuos que componen cada predicado y en qu forma se relacionan entre s; tambin nosotros le damos el sentido a los predicados: ayudaA(X, Y) implica que X es el ayudador e Y el ayudado por convencin nuestra, pero podramos haberlo definido al revs.