+ All Categories
Home > Documents > Jaime S anchez Hern andez Horarios, tutor as Programaci on …gpd.sip.ucm.es/jaime/pda/pda.pdf ·...

Jaime S anchez Hern andez Horarios, tutor as Programaci on …gpd.sip.ucm.es/jaime/pda/pda.pdf ·...

Date post: 03-May-2020
Category:
Upload: others
View: 3 times
Download: 0 times
Share this document with a friend
20
Programaci´ on declarativa avanzada Jaime S´ anchez Hern´ andez Universidad Complutense de Madrid Departamento de Sistemas Inform´ aticos y Programaci´on Curso 2014-2015 February 23, 2015 1 / 20 Horarios, tutor´ ıas Horario: L, M de 14:00 a 16:00 Material docente: http://gpd.sip.ucm.es/jaime/pda Ficha de la asignatura: http://www.ucm.es/estudios/ licenciatura-ingenieriainformatica-plan-106169 2 / 20
Transcript
Page 1: Jaime S anchez Hern andez Horarios, tutor as Programaci on …gpd.sip.ucm.es/jaime/pda/pda.pdf · 2015-02-23 · Programaci on declarativa avanzada Jaime S anchez Hern andez ... profundizando

Programacion declarativa avanzada

Jaime Sanchez Hernandez

Universidad Complutense de MadridDepartamento de Sistemas Informaticos y Programacion

Curso 2014-2015

February 23, 2015

1 / 20

Horarios, tutorıas

Horario: L, M de 14:00 a 16:00

Material docente: http://gpd.sip.ucm.es/jaime/pda

Ficha de la asignatura:http://www.ucm.es/estudios/

licenciatura-ingenieriainformatica-plan-106169

2 / 20

Page 2: Jaime S anchez Hern andez Horarios, tutor as Programaci on …gpd.sip.ucm.es/jaime/pda/pda.pdf · 2015-02-23 · Programaci on declarativa avanzada Jaime S anchez Hern andez ... profundizando

Contexto y objetivos

Descripcion de la asignatura: Continuacion de las asignaturasProgramacion Funcional y Programacion Logica,profundizando en los fundamentos, aplicaciones y extensionesde la programacion declarativa.

Contenido: Programacion logica con restricciones en Prolog.Indeterminismo, evaluacion perezosa, orden superior.Paradigma integrado logico-funcional.Programacion funcional concurrente.

EVALUACION: Realizacion una practica no tutorizada (enambas convocatorias, junio y septiembre)

3 / 20

Objetivos

¿Que sabemos?

Logica, Matematica DiscretaProgramacion Logica (Prolog), Programacion Funcional(Haskell)

Profundizamos en:

Sistemas de restricciones en programacion logica (Prolog).Evaluacion perezosa y orden superior en programacionfuncional.Indeterminismo.Integracion de los paradigmas logico y funcional.Programacion funcional concurrente (Erlang).

4 / 20

Page 3: Jaime S anchez Hern andez Horarios, tutor as Programaci on …gpd.sip.ucm.es/jaime/pda/pda.pdf · 2015-02-23 · Programaci on declarativa avanzada Jaime S anchez Hern andez ... profundizando

¿Que es la programacion declarativa (PD)?

La idea es decribir relaciones entre los datos, sin precisar losalgoritmos.Se describe que debe ser computado y no como debe sercomputado.

En consecuencia no hay estructuras de control. Tampoco hayvariables mutables (es decir, no hay asignacion).

Esto contrasta con la programacion imperativa (oprocedimental), en la que hay un flujo de programadeterminado por las acciones del mismo.

¿Que ventajas ofrece la PD?Permite al progrador concentrarse en la formulacion delproblema y lo libera del control del algoritmo.Los programas son mas faciles de manejar, transformar yverificar.

5 / 20

Lenguajes declarativos

Hay multitud de lenguajes declarativos o con inspiraciondeclarativa (como SQL).

Pero tradicionalmente, se consideran dos grandes familias delenguajes declarativos:

Lenguajes logicos, cuyo representante mas conocido es Prolog.Lenguajes funcionales, cuyo representante mas puro es Haskell.

Despues han aparecido otros lenguajes:

Lenguajes logicos con sistemas de restricciones (Prolog conrestricciones aritmeticas o dominios finitos).Lenguajes combinados logico-funcionales: Toy, CurryLenguajes combinados logico-funcionales con restricciones: Toy

6 / 20

Page 4: Jaime S anchez Hern andez Horarios, tutor as Programaci on …gpd.sip.ucm.es/jaime/pda/pda.pdf · 2015-02-23 · Programaci on declarativa avanzada Jaime S anchez Hern andez ... profundizando

En la practica...

La eficiencia tambien importa: la ausencia de control esrelativa y el programador no queda completamente liberadode la algoritmia.

Pero el programador trabaja a un nivel de abstraccion superiory queda liberado de fuentes comunes de error: uso depunteros, pasos por referencia/valor, condiciones de parada debucles, etc.

Estos estilos de programacion enriquecen considerablementelas habilidades del programador, aunque posteriormente utilicealgun lenguaje imperativo. El diseno declarativo esnormalmente mas conciso, elegante, claro y facil de mantener.

7 / 20

Programacion funcional

Desde el punto de vista teorico este estilo enraiza en elλ-calculo y la logica combinatoria.

Historicamente, LISP es el lenguaje pionero de este estilo deprogramacion.

En la actualidad Haskell es el representante mas puro de esteparadigma.

Las cualidades distintivas: programacion mediante definicionde funciones, uso de patrones, sistemas de tipos, pereza...

8 / 20

Page 5: Jaime S anchez Hern andez Horarios, tutor as Programaci on …gpd.sip.ucm.es/jaime/pda/pda.pdf · 2015-02-23 · Programaci on declarativa avanzada Jaime S anchez Hern andez ... profundizando

Programacion funcional. Ejemplo

repeat :: a -> [a]

repeat x = x:repeat x

take :: Int -> [a] -> [a]

take 0 xs = []

take n (x:xs) = x:take (n-1) xs

repeat 1 genera (potencialmente) una lista infinita [1,1,...]take esta definida utilizando patrones. Por ejemplo, x:xs esel patron de una lista con cabeza y resto (lista no vacıa).take 4 (repeat 1) se evalua perezosamente a [1,1,1,1]

El sistema infiere los tipos de las funciones y comprueba quedichos tipos son mas generales que los declarados (ladeclaracion es opcional).Ojo: la definicion de take es correcta? La expresiontake 0 (repeat 1) encaja con la primera regla... perotambien con la segunda!!

9 / 20

Programacion funcional. Ejemplo

map :: (a->b) -> [a] -> [b]

map f [] = []

map f (x:xs) = f x:map f xs

Orden superior: las funciones son ciudadanos de primeraclase, i.e., una funcion puede ser argumento de otra y tambienuna funcion puede devolver otra como resultado.

Por ejemplo:map (+1) [1,2,3]+ aplica la funcion \verb(+1)- a lalista de entrada, obteniendo [2,3,4]

Aplicaciones parciales: (+1) es una aplicacion parcial de lafuncion +: esta aplicada a un solo argumento y es por tantootra funcion, que espera un entero completar su evaluacion.

10 / 20

Page 6: Jaime S anchez Hern andez Horarios, tutor as Programaci on …gpd.sip.ucm.es/jaime/pda/pda.pdf · 2015-02-23 · Programaci on declarativa avanzada Jaime S anchez Hern andez ... profundizando

Programacion Logica

Desde el punto de vista formal surge como una realizacion dela logica, i.e., se intenta ver la logica como un mecanismo decomputo.

Historicamente aparece ligada a la demostracion automaticade teoremas (Robinson).

El algoritmo de unificacion y la resolucion SLD suponen elarranque de este tipo de programacion, que empieza a fraguara partir de 1972 (Prolog).

Cualidades distintivas de Prolog: indeterminismo (busqueda),variables logicas y (a pesar de la reticencia a reconocerlo) elnivel meta.

11 / 20

Prolog

Sintaxis: subconjunto de la logica de primer orden.

Semantica declarativa: basada en la propia logica

Semantica operacional: Unificacion + resolucion SLD

Punto de vista practico: nivel meta (ajeno a la logica)

corte y otros predicados de control (if then else)aritmeticapredicados de busqueda (orden superior)predicados de manipulacion de la base de conocimientoterminos mutables (asignacion)

Enriquecido con multitud de librerıas

12 / 20

Page 7: Jaime S anchez Hern andez Horarios, tutor as Programaci on …gpd.sip.ucm.es/jaime/pda/pda.pdf · 2015-02-23 · Programaci on declarativa avanzada Jaime S anchez Hern andez ... profundizando

Programacion Logica. Ejemplo

Representamos los naturales como c (cero) y s( ) (sucesor), ydefinimos la suma como:

suma(c,X,X).

suma(s(X),Y,s(Z)):- suma(X,Y,Z).

Objetivos:

Modo de uso + + -

?- suma(s(s(c)), s(c), Y).

Y = s(s(s(c))).

13 / 20

Cont

- - +

?- suma(X,Y, s(s(s(c)))).

X = c,

Y = s(s(s(c))) ;

X = s(c),

Y = s(s(c)) ;

X = s(s(c)),

Y = s(c) ;

X = s(s(s(c))),

Y = c ;

false.

14 / 20

Page 8: Jaime S anchez Hern andez Horarios, tutor as Programaci on …gpd.sip.ucm.es/jaime/pda/pda.pdf · 2015-02-23 · Programaci on declarativa avanzada Jaime S anchez Hern andez ... profundizando

Cont

- - -?- suma(X,Y,Z).

X = c,

Y = Z ;

X = s(c),

Z = s(Y) ;

X = s(s(c)),

Z = s(s(Y)) ;

X = s(s(s(c))),

Z = s(s(s(Y))) ;

X = s(s(s(s(c)))),

Z = s(s(s(s(Y))))

...15 / 20

Que ocurre si...

En vez de utilizar esta suma utilizamos la aritmetica:

suma(X,Y,Z):- Z is X+Y.

?- suma2(X,4,7).

ERROR: is/2: Arguments are not sufficiently instantiated

^ Exception: (8) 7 is _G203+4 ?

Solo admite los modos de uso + + - y + + +

Queremos las ternas/suma de sumandos menores o igualesque uno dado:

menIg(c,X).

menIg(s(X),s(Y)):- menIg(X,Y).

Objetivo:

?- suma(X,Y,Z), menIg(X,s(s(c))), menIg(Y,s(s(c))).

Tras varias respuestas... cicla!!!

16 / 20

Page 9: Jaime S anchez Hern andez Horarios, tutor as Programaci on …gpd.sip.ucm.es/jaime/pda/pda.pdf · 2015-02-23 · Programaci on declarativa avanzada Jaime S anchez Hern andez ... profundizando

Pero si hacemos:

?- menIg(X,s(c)), menIg(Y,s(c)), suma(X,Y,Z).

funciona correctamente!!Donde queda la logica?

17 / 20

El hecho de poder resolver los objetivos anteriores tiene un dobleinteres:

Teorico: para dar coherencia al formalismo y que no quedesujeto a una forma concreta de implementarlo... SLD

Practico: poder resolver objetivos como los anteriores tendrıamultitud de aplicaciones en la practica.

18 / 20

Page 10: Jaime S anchez Hern andez Horarios, tutor as Programaci on …gpd.sip.ucm.es/jaime/pda/pda.pdf · 2015-02-23 · Programaci on declarativa avanzada Jaime S anchez Hern andez ... profundizando

Para ello:

Se utilizan explıcitamente las propiedades semanticas de losobjetos manipulados en el programa, es decir, del dominio detrabajo. Por ejemplo, para la suma anterior se utilizan laspropiedades de los enteros. En Prolog, tal como lo conocemossımplemente se hace manipulacion sintactica de dichosobjetos, sin utilizar propiedades semanticas (de dominio) deningun tipo.En concreto, la igualdad se transforma en igualdad semanticaen vez de sintactica. La unificacion pasa a ser un mecanismosemantico de satisfactibilidad (de un conjunto finito derestricciones).El control de Prolog sigue una regla simple y uniforme, que amenudo desemboca en divergencia o busqueda infinita. Ahorase incorporan tecnicas de consistencia para superar laslimitaciones de control (propagacion local de valores, computoguiado por el flujo de datos, comprobacion prematura decondiciones de consistencia).

19 / 20

Ası surge el esquema CLP(X): Constraint Logic Programming,donde X es un parametro instanciable con distintos dominios:

FD: dominos finitos

R: reales

Q: racionales

etc.. Incluso hay un esquema generico (CHR) para que elusuario pueda definir sus propios dominios.

En general, CLP(X ) es un formalismo que permite describir lascondiciones que una solucion debe satisfacer → programaciondeclarativa, no se dice el como.

20 / 20

Page 11: Jaime S anchez Hern andez Horarios, tutor as Programaci on …gpd.sip.ucm.es/jaime/pda/pda.pdf · 2015-02-23 · Programaci on declarativa avanzada Jaime S anchez Hern andez ... profundizando

Restricciones de dominio finito

21 / 20

CSP’s

Un CSP (Constraint Satisfaction Problem) queda definidomediante un conjunto de variables, los dominios asociados acada una de ellas y las restricciones que acotan lascombinaciones validas de valores que pueden tomar.

Hay dos (grupos de) tecnicas para resolver CSP’s:

Tecnicas de busqueda: encontrar valores concretos para lasvariables que satisfagan las restricciones (NP-completo).Tecnicas inferenciales: se deduce nueva informacion delproblema a partir de la que se tiene explıcitamenterepresentada. Estas tecnicas permiten hacer mas eficiente elproceso de busqueda.

22 / 20

Page 12: Jaime S anchez Hern andez Horarios, tutor as Programaci on …gpd.sip.ucm.es/jaime/pda/pda.pdf · 2015-02-23 · Programaci on declarativa avanzada Jaime S anchez Hern andez ... profundizando

Tecnicas de busqueda

Exploran el espacio de estados del problema.

Pueden ser completos (exploran todo el espacio) oimcompletos (solo parte de ese espacio).

Si son completos garantizan encontrar una solucion (si existe)o demuestran que no existe solucion.

Los mas usuales son:

Generate & Test: genera todas las posibles tuplas de valorespara las variables y luego comprueba las restricciones.Backtraking Cronologico: explora el espacio de busqueda enprofundidad, instanciando las variables y comprobando quecada instanciacion parcial es localmente consistente. En casode conflicto se asigna un nuevo valor a la ultima variableinstanciada si es posible, y si no, vuelve a la variableinstanciada anterior.

23 / 20

x = y ; x 6= z ; z > y

24 / 20

Page 13: Jaime S anchez Hern andez Horarios, tutor as Programaci on …gpd.sip.ucm.es/jaime/pda/pda.pdf · 2015-02-23 · Programaci on declarativa avanzada Jaime S anchez Hern andez ... profundizando

25 / 20

26 / 20

Page 14: Jaime S anchez Hern andez Horarios, tutor as Programaci on …gpd.sip.ucm.es/jaime/pda/pda.pdf · 2015-02-23 · Programaci on declarativa avanzada Jaime S anchez Hern andez ... profundizando

Tecnicas de inferencia

Deducen nuevas restricciones a partir de las conocidas.Con ello se consigue eliminar valores inconsistentes de losdominios de las variables obteniendo un CSP equivalente aloriginal. Permiten acotar el espacio de soluciones.Las inconsistencias locales son valores (individuales ocombinacion de valores) de las variables que no pueden formarparte de la solucion. Por ejemplo, si x = a es incompatiblecon todos los valores de la variable y pendiente de asignacion,entonces a es inconsistente y no formara parte de la soluciondel problema. Hablamos de:

consistencia global: asegura que todos los valores de variablesque no pueden formar parte de una solucion son eliminadosconsistencia local: solo se comprueba la consistencia parcial,pueden quedar valores en los dominios que no son consistentesglobalmente.

La consistengia global, en general tiene un coste exponencial.Los procesos inferenciales que se aplican suelen serincompletos, pero de coste polinomial. 27 / 20

Consistencia de nodo (1-consistencia)

Es la mas sencilla de las consistencias locales: una variable xies nodo-consistente si todos los valores de su dominio Di sonconsistentes con las restricciones unarias sobre dicha variablexi .

28 / 20

Page 15: Jaime S anchez Hern andez Horarios, tutor as Programaci on …gpd.sip.ucm.es/jaime/pda/pda.pdf · 2015-02-23 · Programaci on declarativa avanzada Jaime S anchez Hern andez ... profundizando

Arco-consistencia (2-consistencia)

Dos variables xi , xj son arco consistentes si para cada valor aen Di hay al menos un valor b en Dj que satisface lasrestricciones entre xi y xj . Un CSP es arco-consistente si cadapar de variables del CSP son arco-consistentes.

Los valores de xi del domino Di que no son arco-consistentesson eliminados de Di .

Estos algoritmos tienen un coste cuadratico respecto alnumero de variables (por combinatoria

(n2

)= n∗(n−1)

2 )

29 / 20

30 / 20

Page 16: Jaime S anchez Hern andez Horarios, tutor as Programaci on …gpd.sip.ucm.es/jaime/pda/pda.pdf · 2015-02-23 · Programaci on declarativa avanzada Jaime S anchez Hern andez ... profundizando

31 / 20

Consistencia de caminos (3-consistencia).Senda-consistencia

La consistencia de caminos requiere que, para cada asignacion dedos variables (xi , a), (xj , b) consistente con la restriccion directaque exista entre ellas cij , exista tambien un valor para cadavariable a lo largo del camino entre ellas de forma que todas lasrestricciones a lo largo del camino se satisfagan.

B ≤ A ≤ C ⇒ B 6> C ; B ≤ AD≤ C ,A 6= D ⇒ B 6= C

32 / 20

Page 17: Jaime S anchez Hern andez Horarios, tutor as Programaci on …gpd.sip.ucm.es/jaime/pda/pda.pdf · 2015-02-23 · Programaci on declarativa avanzada Jaime S anchez Hern andez ... profundizando

33 / 20

k-consistencia. Consistencia global

Una red es k-consistente si y solo si dada cualquier instanciacion de k − 1

variables, que satisfagan todas las restricciones entre ellas, existe al

menos una instanciacion de una variable k, tal que se satisfacen las

restricciones entre las k variables.

Un CSP es globalmente consistente si es i-consistente ∀i ≤ n, es decir,

cualquier instanciacion localmente consistente entre i variables

(1 ≤ i ≤ n), puede formar parte de una solucion global. Ası, un CSP

globalmente consistente contiene solo aquellas combinaciones de valores

que forman parte de al menos una solucion, siendo una representacion

compacta y conservadora de todas las soluciones de un CSP.

Algunos resultados: La Arco-consistencia es equivalente a la consistencia

global cuando la red de restricciones es un arbol [Freuder, 1982]. La

consistencia de caminos es equivalente a la consistencia global cuando el

CSP es convexo y binario [Dechter y otros, 1991; Van Beek, 1991], siendo

un CSP convexo aquel cuyas restricciones determinan un espacio de

soluciones convexo.34 / 20

Page 18: Jaime S anchez Hern andez Horarios, tutor as Programaci on …gpd.sip.ucm.es/jaime/pda/pda.pdf · 2015-02-23 · Programaci on declarativa avanzada Jaime S anchez Hern andez ... profundizando

Tecnicas Hıbridas

La idea es utilizar las tecnicas inferenciales como etapa depreproceso y despues utilizar tecnicas de busqueda. Pero ademaslas tecnicas inferenciales pueden incluirse en el propio proceso debusqueda.

Algoritmos Look-Backward: llevan a cabo la comprobacion dela consistencia hacia atras.

Backjumping: es como el backtracking cronologico, perocuando retrocede, en vez de hacerlo a la variable anterior saltaa la variable mas profunda (mas cercana a la actual) que entraen conflicto con la actual).Conflict-directed Backjumping: cada variable tiene asociado unconjunto de variables de conflicto formado por variablespasadas que entran en conflicto con la actual. Cuando unanueva variable entra en conflicto con la actual se anade a esteconjunto. El salto atras se hace a la variable mas profunda delconjunto de conflicto.Learning: aprende combinaciones no permitidas.

35 / 20

Algoritmos Look-Ahead: comprobacion inferencial haciaadelante en cada instanciacion, integrando un procesoinferencial durante el propio proceso de busqueda, por lo quetambien se denominan tecnicas hıbridas. Esto tambien seconoce como la propagacion de los efectos de cada nuevainstanciacion al resto de la red. Ello permite: (i) acotar lasrestricciones y dominios de las variables futuras a instanciar,limitando el espacio de busqueda pendiente, y (ii) encontrarlas inconsistencias antes de que aparezcan.

Forward checking (FC): en cada etapa de la busqueda BT, secomprueba hacia adelante la asignacion de la variable actualcon todos los valores de las futuras variables que estanrestringidas con la variable actual. Los valores de las futurasvariables que son inconsistentes con la asignacion actual sontemporalmente eliminados de sus dominios. Si el dominio deuna variable futura se queda vacıo, la instanciacion de lavariable actual se deshace y se prueba con un nuevo valor. Siningun valor es consistente, entonces se lleva a cabo elbacktracking cronologico.Minimal forward checking, Full Look- Ahead (FLA)...

36 / 20

Page 19: Jaime S anchez Hern andez Horarios, tutor as Programaci on …gpd.sip.ucm.es/jaime/pda/pda.pdf · 2015-02-23 · Programaci on declarativa avanzada Jaime S anchez Hern andez ... profundizando

37 / 20

38 / 20

Page 20: Jaime S anchez Hern andez Horarios, tutor as Programaci on …gpd.sip.ucm.es/jaime/pda/pda.pdf · 2015-02-23 · Programaci on declarativa avanzada Jaime S anchez Hern andez ... profundizando

Heurısticas de ordenacion de variables

El orden en el cual las variables son asignadas durante labusqueda puede tener un impacto significativo en el tamanodel espacio de busqueda explorado.

Generalmente las heurısticas de ordenacion de variables tratande seleccionar lo antes posible las variables que mas restringena las demas para reducir el numero de vueltas atras.

39 / 20


Recommended