Está en la página 1de 26

Paradigmas de Programacin 2011

Paradigmas de programacin- 2c 2011


Promocin Directa (PD) Condiciones para acceder: a (Plan ISI 1995. - Ord. 764/1994) tener aprobada Sintaxis y Semntica de los Lenguajes (Plan ISI 2008. Ord. 1150/2007) tener aprobada Algoritmos y Estructuras de Datos y Matemtica Discreta.

Turno Maana
Teora:
Docente: Marcela Vegetti Horario: Lunes 8:45 a 12

Prctica
Docentes: Dardo Kuttel Horario: Martes de 8 a 11.15

Promocin y Regularidad
Condiciones de Promocin
Aprobar 3 parciales (uno por paradigma) con el 60% Aprobar 3 trabajos prcticos (uno por paradigma) 80% de asistencia a las clases

Condiciones de Regularidad
Aprobar 2 parciales con el 40% Aprobar 3 trabajos prcticos (uno por paradigma) 80% de asistencia a las clases

Paradigmas de Programacin
Expresa una manera de entender el mundo y de pensar la solucin a los problemas Paradigmas:
Imperativo (o procedural) Lgico estudiados en Funcional esta materia Orientado a Objetos

Cronograma tentativo de parciales


Paradigma Lgico:
Parcial: 8-9 Entrega TP: 13-9

Paradigma Funcional
Parcial: 20-10 Entrega TP: 25-10

Paradigma Orientado a Objetos


Parcial: 01-12 Entrega TP: 29-11

Programacin declarativa
Prog. Imperativa Programa: expresa una secuencia de acciones para solucionar un problema Enfoque: Cmo la mquina a partir de la formulacin del problema puede encontrar la solucin Prog. Declarativa Programa: expresa el conocimiento del problema Com expresar la descripcin del problema para que la mquina encuentre la solucin

Programacin declarativa
ALGORITMOS = Lgica + Control
Especificacin del problema Clculo de Predicados de 1er orden
1

Bsqueda de la solucin

Clculo

Programacin LOGICA
1 Kowalski,R. Algorithm = Logic + control. CACM, 22(7) 424-436

Programacin FUNCIONAL

Programacin Lgica
Bibliografa
Programacion Logica y funcional: Tasistro A., J. Vidart; EBAI; 1988. The art of Prolog: Advanced Programming Techniques: Sterling L. , E. Shapiro; The MIT Press; 1994. Logic for Problem Solving: Kowalski R. A.; North Holland, Amsterdam; 1979

Programacin Lgica
Otros Recursos
SWI Prolog: entorno de programacin http://www.swi.psy.uva.nl/projects/SWI-Prolog/

SLD Draw: Representacin de rboles LSD http://www.lcc.uma.es/~pacog/sldDrawb

Prog. Logica vs procedural


PROBLEMA: Determinar si un elemento X pertenece a una lista L
En el paradigma Procedural

int miembro(int elemento, int listaNros[], int cantElem) { int i=0; while (i <=cantElem and elemento != listaNros[i]) i++; if (i>cantElem) return FALSO; else return VERDADERO ; }

En el paradigma Lgico
miembro(X, [X|Xs]). miembro(X,[Y|Xs]:- miembro(X,Xs), distinto(X,Y).

Paradigma Lgico
Se basa en la idea de que un problema puede ser descrito definiendo relaciones entre los objetos de un determinado conjunto, y que a partir de stas, nuevas relaciones pueden ser calculadas mediante una regla de inferencia.

La lgica formal provee el basamento para este paradigma.

Lgica Formal
Estudia los principios de los razonamientos correctos, es decir, las relaciones de implicancia entre afirmaciones (o

suposiciones) y conclusiones.
Todos los hombres son mortales Todos los investigadores son hombres Todos los investigadores son mortales Juan es hijo de Pedro Juan es hermano de alguien que es hijo de Pedro Juan es hermano de si mismo

La lgica no se preocupa por la verdad, falsedad o aceptabilidad de expresiones individuales, sino de las relaciones que existen entre ellas.

Mecanismo de Inferencia
Todos los hombres son mortales Todos los investigadores son hombres Todos los investigadores son mortales
Afirmaciones implican Conclusin

Para poder demostrar que un conjunto de afirmaciones implican una conclusin se necesitar de un mecanismo de inferencia ( MI ). El MI requerir de un lenguaje que exprese en una forma sencilla y sin ambigedades las expresiones que representen las afirmaciones y conclusiones.

Formas Clausales
Un lenguaje que satisface estas restricciones es el de las Formas Clausales de la Lgica. Las expresiones ms simples se denominan expresiones-atmicas y son las que identifican relaciones-entre-individuos
smbolo predicado: nombre de la relacin

expresiones atmicas

juan es hijo de pedro. 2 es mayor que 1.

Formas Clausales
Es posible representar expresiones complejas que establecen que: condiciones implican conclusiones

(expresiones-atmicas)

(expresin-atmica)

juan es hermano de jos jos es hijo de pedro juan es hermano de X X es hijo de pedro X es una variable que referencia a cualquier individuo

Formas Clausales
CLUSULA un nmero (cero o ms) de condiciones (conectadas por AND) implican nmero (cero o ms) de conclusiones (conectadas por OR).

Tipos de entidades vinculadas por las relaciones: constantes simblicas (se representarn con minsculas) variables (comienzan con mayscula)

Formas Clausales. Notacin


Expresiones Atmicas nombre de la relacin ( individuos ) juan es hermano de jos ~ es hermano de (juan , jos) 3 es menor que X ~ es menor que (3 , X)

Expresiones Complejas conclusin SI condicin SI puede set , if, :conclusin condicin conclusin if condicin conclusin :- condicin

Sintaxis
<formula-atomica> ::= <simbolo-predicado>(<lista-termino>) <lista-termino> ::= <termino> | <termino> , <lista-termino> <termino> ::= <constante-simblica> | <variable> | <funcin> <funcin> ::= <simbolo-funcional> ( <lista-termino> ) <formula-atomica> <constante-simblica> es_menor_que ( 3 , X ) <simbolo-predicado> <termino> <variable>

servicio(trans002 , conductor(luis) , auto(aea735)) <simbolo-funcional>

Sintaxis
Una frmula bien conformada (fbc) - del clculo de predicado de primer orden se define como: < fbc > ::= <formula-atomica> | <formula-atomica> < fbc > ::= <formula-atomica> < fbc > < fbc > ::= <formula-atomica> < fbc > < fbc > ::= <formula-atomica> < fbc > < fbc > ::= <formula-atomica> < fbc > < fbc > ::= <variable>( < fbc > ) | V <variable>( <fbc>) arco (origen(1) , destino(2)) arco (origen(2) , destino(5)) frmula bien conformada o clusula X (arco (origen(1) , X) arco (X , destino(5))

Formas Clausales Restringidas


Forma Clausal de Skolem

Xi : <variable> ; Ai , Bi : <formula-atmica>

Xi (A1 A2 ..... An B1 ......... Bm) Xi (B1 ......... Bm) A1 A2 ..... An Xi (B1 ......... Bm) A1 A2 ..... An

Forma Clausal de Horn


Una fbc del clculo de predicados de primer orden est en Forma Clausal de Horn si: 1. est en Forma Clausal de Skolem 2. tiene a lo sumo una frmula atmica no negada i. Xi A.

ii. Xi (B1 .... Bm) A1 ~ Xi (B1 ... Bm) A1

iii. Xi (B1 ..... Bm) ~ Xi (B1 ..... Bm). Formas empleadas para escribir un programa lgico

Programa Lgico
Es un conjunto de clusulas de Horn del tipo i. y ii. Programa P 1. persona(juan). 2. persona(maria). 3. equipo(pc-800). 4. equipo(impre-5L). 5. persona(X) recurso_humano(X). 6. equipo(Y) recurso_fisico(Y). ii. Xi (B1 ... Bm) A1 i. Xi A.

Semntica
Cul es el significado de un Programa Lgico? DEFINICIN DE INTERPRETACIN

LGICA PROPOSICIONAL:
Sea L un lenguaje proposicional, A el conjunto de tomos de L. Luego una interpretacin de L es una funcin de A en {T, F} I : A {T, F}

Interpretacin.
Sea A = {P, Q, R} el conjunto de todos los tomos del lenguaje L. interpretacin I1 es: I1(P) = T, I1(Q) = F, I1(R) = T. interpretacin I2 es: I2(P) = F, I2(Q) = F, I2(R) = T. I2= {R} I1= {P, R}

Numero de interpretaciones
Si el alfabeto contiene n tomos, entonces existen 2n interpretaciones posibles. Sea A = {P, Q, R} el conjunto de todos los tomos del lenguaje. El conjunto de interpretaciones posibles es:

{{},{P}, {Q}, {R}, {P, Q}, {P, R}, {Q, R}, {P, Q, R}} (solo se mencionan los smbolos asociados a T)

que contiene 8 = 23 interpretaciones posibles.

Valor de verdad de una fbc


Depende exclusivamente de los conectivos y de los valores de verdad de los tomos que contiene. La relacin entre los valores de verdad de una frmula compuesta y sus componentes est dada por la siguiente tabla de verdad:

T T F F

T F T F

F F T T

T F F F

T T T F

T F T T

T F F T

T T F F

T F T F

F F T T

T F F F

T T T F

T F T T

T F F T

Ejemplo: Sea la interpretacin I = {P, R} = (( Q Q) (P R)) 1. P y R tienen el valor T y Q el valor F 2. Q tiene el valor T 3. ( Q Q) tiene el valor F 4. (P R) tiene el valor T 5. tiene el valor T

Interpretacin en LPO

Una interpretacin de un conjunto de clusulas P puede considerarse como la asignacin de los valores de Verdad (TRUE) o Falsedad (FALSE) a cada predicado que se puede construir a partir del universo de discurso y el conjunto de smbolos predicativos que ocurren en el conjunto de clusulas.

Clusulas bsicas
Definicin: Un trmino o una clusula es bsica (ground) si en ella no ocurren variables
No bsica (no ground) persona(X) numero_real(X) suma(X , 2 , Y) persona(X) recurso_humano(X) bsica (ground) persona(juan) numero_real(s(0)) suma(2 , 2 , 4) persona(juan) recurso_humano(juan)

Universo de un programa
Sea un programa lgico P, el universo de P, U(P), es el conjunto de trminos bsicos (ground) que pueden ser construdos a partir de las constantes y smbolos funcionales que ocurren en P
Programa P1 1. libro(redes). 2. apunte(logica). 3. publicacion(X) libro(X). 4. publicacion(X) apunte(X). Programa P2 1. int(0). 2. int(X) int(s(X)) Constantes y Smbolos Funcionales de P1 {redes ; logica} U(P1) ={redes ; logica} Constantes y Smbolos Funcionales de P2 {0 ; s} U(P2) ={0 ; s(0) ; s(s(0)) ; s(s(s(0))) ; . .}

Base de un programa
Sea un programa lgico P, la base de P, B(P) es el conjunto de predicados bsicos (ground) que pueden ser construdos a partir de los smbolos predicados que ocurren en P y los trminos de U(P).
Programa P1 1. libro(redes). 2. apunte(logica). 3. publicacion(X) libro(X). 4. publicacion(X) apunte(X). Predicados de P1 {libro ; apunte ; publicacion} Constantes y Smbolos Funcionales de P1 {redes ; logica} U(P1) ={redes ; logica} B(P1) ={libro(redes) ; libro(logica) ; apunte(redes) ; apunte(logica) ; publicacion(redes) ; publicacion(logica)}

Interpretacin en LPO
Una interpretacin de un conjunto de clusulas P puede considerarse como la asignacin de los valores de Verdad (TRUE) o Falsedad (FALSE) a cada predicado que se puede construir a partir del universo de discurso y el conjunto de smbolos predicativos que ocurren en el conjunto de clusulas.

Base del programa (B(P)).

Una Interpretacin I de un programa lgico P, es un subconjunto del conjunto Base del programa (B(P)).
Programa P1 1. libro(redes). 2. apunte(logica). 3. publicacion(X) libro(X). 4. publicacion(X) apunte(X). I1 ={libro(redes) ; apunte(redes) ; apunte(logica) ; publicacion(logica)} I2 ={libro(redes) ; apunte(logica) ; publicacion(redes) ; publicacion(logica)} B(P1) ={libro(redes) ; libro(logica) ; apunte(redes) ; apunte(logica) ; publicacion(redes) ; publicacion(logica)} I5={ ..} I4={publicacion(redes) ; publicacion(logica)}

I3 ={libro(redes) ; libro(logica) ; publicacion(logica)}

Un elemento p del conjunto base, B(P), tiene asociado un valor de verdad verdadero con respecto a una interpretacin I, si p pertenece a I. De lo contrario posee asociado un valor de verdad falso, con respecto a I.
B(P1) ={libro(redes) ; libro(logica) ; apunte(redes) ; apunte(logica) ; publicacion(redes) ; publicacion(logica)} I1 ={libro(redes) ; apunte(redes) ; apunte(logica) ; publicacion(logica)} libro(redes) verdadero libro(logica) falso apunte(logica) verdadero I4={publicacion(redes) ; publicacion(logica)} .... libro(logica) falso

publicacion(logica) verdadero

publicacion(logica) verdadero

Una clusula c construida a partir de elementos de B(P), tambin tendr un valor de verdad asociado, con respecto a I. El valor de verdad asociado a c resultar de combinar los valores de verdad de los componentes utilizando las tabla de verdad de los conectivos lgicos involucrados.
B(P1) ={libro(redes) ; libro(logica) ; apunte(redes) ; apunte(logica) ; publicacion(redes) ; publicacion(logica)} I1 ={libro(redes) ; apunte(redes) ; apunte(logica) ; publicacion(logica)} publicacion(redes) apunte(redes). falso libro(redes). verdadero publicacion(logica) apunte(logica). verdadero
1. publicacion(logica) en I1, verdadero 2. apunte(logica) en I1, verdadero 1. 2. = verdadero

Una interpretacin I es un modelo para una clusula, si: cada instancia bsica (ground) de la misma (considerando un dado U(P)) tiene asociada un valor de verdad verdadero en I.
U(P1) ={redes ; logica} 3. publicacion(X) libro(X). publicacion(logica) libro(logica).

es modelo?
I5 ={libro(redes) ; apunte(redes) ; apunte(logica) ; publicacion(redes)}

publicacion(redes) libro(redes).
valor de verdad en I5: verdadero valor de verdad en I5: verdadero

I5 es modelo de la clusula 3.

Una interpretacin I es un modelo para un programa lgico P, si: I es un modelo (considerando un dado U(P)) para cada clusula del programa P.
libro(redes). Programa P3 1. libro(redes). 2. apunte(logica). 3. publicacion(X) libro(X). 4. publicacion(X) apunte(X). apunte(logica). publicacion(logica) libro(logica). publicacion(redes) libro(redes).

es modelo?
I5 ={libro(redes) ; publicacion(logica) ; apunte(logica) ; publicacion(redes)}

publicacion(logica) apunte(logica). publicacion(redes) apunte(redes).

I5 es modelo de P3

Consecuencia Lgica
Una clusula f es consecuencia lgica, o se deduce, de un programa lgico P si y solo si toda interpretacin I que es modelo de P tambin es modelo de f P |= f

Consecuencia Lgica
La ejecucin de un programa lgico P consiste en demostrar que P |= f, es decir, que toda interpretacin I, que es modelo de P, tambin lo es de f. Por lo tanto, dada una f, para demostrar que P |= f se debera inspeccionar toda I que sea modelo de P, y verificar que tambin lo sea de f

I1 es modelo de P4
Programa P4 1. libro(redes). 2. apunte(logica). 3. publicacion(X) libro(X).

I1 ={libro(redes) ; apunte(logica) ; publicacion(redes)}

Toda interpretacin que sea modelo de P4 debe incluir I1

P4 |= libro(redes) ? Si, ya que I1 es modelo de la clusula P4 |= apunte(logica) ? Si, ya que I1 es modelo de la clusula P4 |= publicacion(redes) ? Si, ya que I1 es modelo de la clusula P4 |= publicacion(logica) ? P4 |= libro(logica) ? No, ya que I1 es modelo de P4 pero no de la clusula.

Consecuencia Lgica
En una primera aproximacin se observa que a medida que crezca el programa, y consiguientemente U(P), el nmero de interpretaciones es enorme.
Surge otra pregunta: En la Lgica de Predicados de 1er Orden, el conjunto de interpretaciones es finito?

No necesariamente

Consecuencia Lgica
U(P2) ={0 ; s(0) ; s(s(0)) ; s(s(s(0))) ; . .} Programa P2 1. int(0). 2. int(X) int(s(X))

B(P2) es infinito El conjunto de interpretaciones es infinito

Es necesario buscar otra forma de determinar si una clusula es consecuencia lgica de un programa

Inferencia Lgica: mecanismo de derivacin sintctica que, a partir de P, permite derivar nuevas clusulas c usando reglas de inferencia. Demostracin: sucesin de frmulas f1, f2, ...... fn tal que cada una es un axioma, o se obtiene de las frmulas anteriores en la sucesin por la aplicacin de alguna regla de inferencia. Sistema formal consistente Un sistema formal, en el que existe la negacin , se dice que es consistente, si no existe un fbc f en el sistema, tal que pueda deducirse f y f. De lo contrario se lo denomina inconsistente.

Consecuencia Lgica
Sea un programa R una fbc f que corresponde a una invocacin de R Q una regla de inferencia Se dice que Q es completa si se cumple que : f es deducible lgicamente de R usando Q, si y solo si, R |= f. Luego, si se dispone de reglas de inferencia que cumplan con la propiedad de completitud, es suficiente demostrar la deducibilidad de una fbc para demostrar que la misma es consecuencia lgica del programa.

Regla de Resolucin
Una regla de inferencia que es completa dados los predicados A1, ...... An y B1,.......... Bm, la regla consiste en (A1, ... Ak ... An) Ak B1,.......... Bm (A1, ... Ak-1, B1,.......... Bm, Ak+1,... An)

A partir de la Regla de Resolucin puede concebirse un sistema de demostracin automtica que evale los programas en lgica , mediante la aplicacin reiterada de la Regla de Resolucin.

Se realiza una prueba por contradiccin o reduccin al absurdo basndose en que Dado f y R , f es deducible lgicamente a partir de R si y solo si el conjunto de R { f } es inconsistente

Un sistema formal S es inconsistente si de l se deducen f y f Si 1. un sistema R es consistente 2. R {f} es inconsistente Luego 3. R |= f

Se debe demostrar que R {f} es inconsistente

Aplicacin de la Regla de Resolucin


Programa R 1.- juan-es-mortal . 2.- juan-piensa . 3.- juan-come-carne . 4.- juan-es-humano juan-es-mortal juan-piensa. 5.- juan-es-carnivoro juan-es-humano juan-come-carne.
R |= juan-es-carnivoro ? SI

(R {juan-es-carnivoro}) es inconsistente Consulta 6.- ( juan-es-carnivoro )

Aplicacin de la Regla de Resolucin


De 6.- y 5.- se deduce 6.- ( juan-es-carnivoro ) 5.- juan-es-carnivoro juan-es-humano juan-come-carne. -------------------------------------------------------------------------7.- ( juan-es-humano juan-come-carne )

De 7.- y 4.- se deduce 7.- ( juan-es-humano juan-come-carne ) 4.- juan-es-humano juan-es-mortal juan-piensa. -------------------------------------------------------------------------8.- ( juan-es-mortal juan-piensa juan-come-carne )

Aplicacin de la Regla de Resolucin


De 8.- y 1.- se deduce 8.- ( juan-es-mortal juan-piensa juan-come-carne ) 1.- juan-es-mortal . --------------------------------------------------------------------9.- ( juan-piensa juan-come-carne ) De 9.- y 2.- se deduce 9.- ( juan-piensa juan-come-carne ) 2.- juan-piensa . --------------------------------------------------------------------10.- ( juan-come-carne) (R {juan-es-carnivoro}) es inconsistente ya que 3.- juan-come-carne . se pueden deducir 10.- ( juan-come-carne).

Por lo tanto R |= juan-es-carnivoro