NOMBRE DEL DOCENTE: LIC. ORLANDO DANIEL MENDOZA ALVAREZ
ALUMNO: ANTONIO VELASCO PALACIO
TRABAJO: UNIDAD III EVALUACIN PEREZOSA
CARRERA: INGENIERA EN SISTEMAS COMPUTACIONALES
GRUPO: SEMESTRE LECTIVO: SEPTIMO A AGOSTO-DICIEMBRE 2014
Santiago Pinotepa Nacional, Oaxaca, 15 de Octubre de 2014.
INTRODUCCIN La evaluacin perezosa (del ingls lazy evaluation) o llamada por necesidad es una estrategia de evaluacin que retrasa el clculo de una expresin hasta que su valor sea necesario, y que tambin evita repetir la evaluacin en caso de ser necesaria en posteriores ocasiones. Esta comparticin del clculo puede reducir el tiempo de ejecucin de ciertas funciones de forma exponencial, comparado con otros tipos de evaluacin. La evaluacin perezosa puede tambin reducir el consumo de memoria de una aplicacin, ya que los valores se crean solo cuando se necesitan. Sin embargo, es difcil de combinar con las operaciones tpicas de programacin imperativa, como el manejo de excepciones o las operaciones de entrada/salida, porque el orden de las operaciones puede quedar indeterminado. Adems, la evaluacin perezosa puede conducir a fragmentar la memoria.
UNIDAD lII TEMA SUBTEMAS EVALUACIN PEREZOSA 3.1. La estrategia de evaluacin perezosa. 3.2. Tcnicas de programacin funcional perezosa.
EVALUACIN PEREZOSA Evaluacin perezosa (lazy): El evaluador hace solamente lo preciso. Corresponde a llamada por necesidad. Significa: Haz slo lo que te pida un patrn a la izquierda de una ecuacin o cualificador (where o let). Es una estrategia de evaluacin que retrasa la evaluacin de una expresin hasta que el valor de esto realmente se requiera (evaluacin no estricta) y que tambin evita evaluaciones repetidas (compartimiento de ciencias informticas). El compartimiento puede reducir la duracin de ciertas funciones por un factor exponencial sobre otras estrategias de evaluacin no estrictas, como la llamada de nombre.
Las ventajas de la evaluacin perezosa incluyen: El rendimiento aumenta debido a evitacin de clculos innecesarios y evitacin de condiciones de error en la evaluacin de expresiones compuestas. La capacidad de construir estructura de datos potencialmente infinita La capacidad de definir estructura de control como abstracciones en vez de como obras primitivistas. La evaluacin perezosa puede llevar a la reduccin de la huella de memoria, ya que los valores se crean cuando necesario. Sin embargo, con la evaluacin perezosa, es difcil combinarse con rasgos imperativos como la excepcin que se maneja (manejo de la excepcin) y entrada/salida (entrada/salida), porque el pedido de operaciones se hace indeterminado.
3.1.- LA ESTRATEGIA DE EVALUACIN PEREZOSA Se considera la funcin: mult :: (Int,Int) -> Int mult (x,y) = x*y
Evaluacin mediante paso de parmetros por valor (o por ms internos): mult (1+2,2+3) = mult (3,5) [por def. de +] = 3*5 [por def. de mult] = 15 [por def. de *] Evaluacin mediante paso de parmetros por nombre (o por ms externos): mult (1+2,2+3)
= (1+2)*(3+5) [por def. de mult] = 3*5 [por def. de +]
Evaluacin con lambda expresiones mult' :: Int -> Int -> Int mult' x = \y -> x*y
Evaluacin: mult (1+2) (2+3) = mult 3 (2+3) [por def. de +] = (_y ! 3*y) (2+3) [por def. de mult] = (_y ! 3*y) 5 [por def. de +] = 3*5 [por def. de +] = 15 [por def. de *]
3.2.- TCNICAS DE PROGRAMACIN FUNCIONAL PEREZOSA La semntica adopta para el no determinstico es la eleccin en la invocacin (call- time choice), por resultar ms natural para la programacin y ms eficaz en la ejecucin al corresponderse con el mecanismo de comparticin.
En el no-deterministico existen varias tcnicas como: Tcnica de Backtracking (Prolog): Si una alternativa falla, el flujo retorna hasta la ltima decisin e intenta otra. Tcnica de guardias (guards): Si ms de una es cierta, se escoge cualquiera de ellas. Tcnica de aprendizaje reforzado(A-LISP): recordar decisiones exitosas y aumentar su prioridad as como considerar las decisiones en el contexto del estado mutable.
Bsqueda no determinstica Un algoritmo no determinista: Ofrece muchos posibles resultados Emplean modelos de computacin tales como la Maquina de Turing Puede simularse utilizado las listas