Você está na página 1de 72

FACULTAD DE CIENCIA Y TECNOLOGIA

Facultad de Ciencias y Tecnologa


Ingeniera de Sistemas

SEXTO SEMESTRE

SYLLABUS TEORA DE LENGUAJES Y COMPILADORES


Gestin Acadmica I / 2011

Syllabus elaborado por: Ing. Reynaldo Einar Zabaleta Rioja

U N

I V E R S I D A D

D E 1

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

UDABOL
UNIVERSIDAD DE AQUINO BOLIVIA Acreditada como PLENA mediante R. M. 288/01

VISION DE LA UNIVERSIDAD Ser la Universidad lder en calidad educativa.

MISION DE LA UNIVERSIDAD Desarrollar la Educacin Superior Universitaria con calidad y competitividad al servicio de la sociedad.

Estimado(a) estudiante: El syllabus que ponemos en tus manos es el fruto del trabajo intelectual de tus docentes, quienes han puesto sus mejores empeos en la planificacin de los procesos de enseanza para brindarte una educacin de la ms alta calidad. Este documento te servir de gua para que organices mejor tus procesos de aprendizaje y los hagas mucho ms productivos. Esperamos que sepas apreciarlo y cuidarlo.

U N

I V E R S I D A D

D E 2

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

I. SYLLABUS Asignatura: Cdigo: Requisito: Carga Horaria: Horas Tericas Horas Prcticas Crditos: II. OBJETIVOS GENERALES DE LA ASIGNATURA. Fundamentar las bases estructurales de autmatas, gramticas y lenguajes formales as como tambin sus propiedades para la aplicacin en el diseo y construccin de compiladores e interpretes en siguiente curso. Aplicar los diferentes algoritmos de tratamiento de cadenas, autmatas, gramticas para implementar programas de sistemas tales como compiladores, ensambladores y traductores. III. PROGRAMA ANALTICO DE LA ASIGNATURA UNIDAD 1. INTRODUCCIN A LA TEORA DE LENGUAJES Tema 1. Fundamentos Matemticos 1.1 1.2 1.3 1.4 1.5 1.6 1.7 Sentencias lgicas Conjuntos Relaciones y Funciones Tipos especiales de relaciones binarias Cerraduras Conjuntos finitos e infinitos Tcnicas de demostracin 1.7.1 Induccin matemtica Teora de compiladores CMP 417 MAT 201 80 horas 80 horas 0 horas 8 lenguajes y

TEMA 2. Introduccin a la teora de lenguajes y compiladores 2.1. 2.2. 2.3. Visin histrica del desarrollo de compiladores Conceptos compilador, traductor e interprete Ventajas de los traductores e intrpretes

TEMA 3. Alfabetos y lenguajes 3.1. 3.2. 3.3. Alfabetos Cadenas 3.2.1. Operaciones con cadenas Lenguajes 3.3.1. Operaciones con lenguajes
U N I V E R S I D A D D E 3 A Q U I N O B O L I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

3.4. 3.5. 3.6.

3.3.2. Representacin finita de lenguajes Estructura de las gramticas Clasificacin de las gramticas Representacin de las gramticas

UNIDAD 2. LENGUAJES REGULARES Y LIBRES DE CONTEXTO TEMA 4. Autmatas finitos 4.1. Autmatas Finitos 4.1.1. Autmatas finitos determinsticos 4.1.2. Representacin 4.1.3. Definicin matemtica 4.1.4. Configuraciones 4.1.5. Computaciones 4.1.6. Grfica de la funcin de transicin Autmatas finitos no determinsticos 4.2.1. Representacin 4.2.2. Definicin matemtica 4.2.3. Configuraciones 4.2.4. Computaciones 4.2.5. Grfica de la relacin de transicin Equivalencia de autmatas finitos determinsticos y no determinsticos 4.3.1. Conversin de determinstico a no determinstico 4.3.2. Conversin de no determinstico a determinstico Propiedades de lenguajes aceptados por autmatas finitos 4.4.1. Propiedades de cerradura 4.4.2. Propiedades algortmicas Autmatas finitos y Expresiones regulares 4.5.1. Representacin de expresiones regulares con autmatas finitos 4.5.2. Expresin regular de un autmata finito Demostraciones para lenguajes regulares y no regulares 4.6.1. Demostraciones para lenguajes regulares 4.6.2. Demostraciones para lenguajes no regulares

4.2.

4.3. 4.4. 4.5. 4.6.

TEMA 5. Lenguajes libres de contexto 5.1. 5.2. 5.3. 5.4. Lenguajes Libre de Contexto Gramticas libres de contexto 5.2.1. Definicin 5.2.2. Derivaciones Lenguajes regulares y lenguajes libres de contexto 5.3.1. Gramticas regulares 5.3.2. Lenguajes derivados de gramticas regulares Autmatas de pila 5.4.1. Representacin 5.4.2. Definicin matemtica 5.4.3. Configuraciones 5.4.4. Computaciones 5.4.5. Grfica de la relacin de transicin Autmatas de pila y gramticas libres de contexto
U N I V E R S I D A D D E 4 A Q U I N O B O L I V I A

5.5.

FACULTAD DE CIENCIA Y TECNOLOGIA

5.6.

5.7.

5.5.1. Representacin de gramticas libres de contexto con autmatas de pila 5.5.2. Gramtica libre de contexto de un autmata de pila Propiedades de los lenguajes libres de contexto 5.6.1. Propiedades de cerradura 5.6.2. Propiedades de periodicidad 5.6.3. Propiedades algortmicas Determinismo y descomposicin (parsing) 5.7.1. Autmatas de pila y Lenguajes libres de contexto 5.7.2. Descomposicin de arriba hacia abajo 5.7.3. Descomposicin de abajo hacia arriba

UNIDAD 3. MAQUINAS DE TURING Y PROBLEMAS DE DECISION TEMA 6. Mquinas de Turing 6.1. 6.2. Mquinas de Turing Definicin de una mquina de Turing 6.2.1. Representacin 6.2.2. Definicin matemtica 6.2.3. Configuraciones 6.2.4. Computaciones Computacin con mquinas de Turing 6.3.1. Configuracin de parada 6.3.2. Configuracin de bloqueo 6.3.3. Funcin computable por Turing 6.3.4. Decidible por Turing 6.3.5. Aceptable por Turing Combinacin de mquinas de Turing 6.4.1. Mquinas bsicas 6.4.1.1. Mquinas de escritura de smbolos 6.4.1.2. Mquinas de cabeza movible 6.4.2. Reglas para combinacin de mquinas 6.4.3. Esquema de mquina Mquinas de Turing complejas 6.5.1. Mquinas para hallar marcas 6.5.2. Mquinas copiadoras 6.5.3. Mquinas de corrimiento izquierdo 6.5.4. Mquinas de corrimiento derecho 6.5.5. Otras Extensiones de las mquinas de Turing 6.6.1. Cintas de dos direcciones infinitas 6.6.2. Cintas de dos pistas 6.6.3. Cintas mltiples 6.6.4. Cabezas mltiples Mquinas de Turing no determinsticas 6.7.1. Mquinas no determinsticas 6.7.2. Conversin de Turing no determinstica a Turing determinstica

6.3.

6.4.

6.5.

6.6.

6.7.

U N

I V E R S I D A D

D E 5

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

TEMA 7. Problemas de decisin 7.1. 7.2. 7.3. Problemas de decisin Problemas bsicos Problemas irresolubles relativos a gramticas y lenguajes

IV. SISTEMA DE EVALUACIN DE APRENDIZAJES El sistema de evaluacin hace hincapi en varios tipos de calificacin: Diagnstica: es la evaluacin de los saberes o conocimientos previos de los y las estudiantes, as como de sus ritmos y estilos de aprendizaje y sus tipos de inteligencia, que sirve al docente como punto de partida para, el desarrollo curricular, para la mejor organizacin y estructuracin de las secuencias de aprendizaje, de modo que estas tengan en cuenta no slo el punto de partida del grupo con el que trabajar durante el semestre sino adems las diferencias y especificidades de cada estudiante para que los aprendizajes resulten ms efectivos y permitan el ptimo desarrollo integral de cada uno(a). Procesual o de desempeo o formativa: en esta forma de evaluacin se valora el avance del o de la estudiante de su nivel de desarrollo real (detectado mediante la evaluacin diagnstica) a su nivel de desarrollo potencial (detectado mediante diversas actividades o tareas). Esta forma de evaluacin, por su naturaleza, es eminentemente cualitativa aunque puede ser valorada cuantitativamente mediante un sistema de puntaje que permita apreciar los avances del o de la estudiante en su zona de desarrollo prximo (zdp) (o, incluso, fuera de ella, en el caso de que el proceso de aprendizaje rebase la misma y d lugar a nuevas zdp). La ponderacin de la asignatura de Arquitectura de Computadoras dentro la Evaluacin Procesual, contempla la realizacin de actividades formativas a desarrollar (Work Papers, Difs, Participacin, evaluacin diaria, Investigacin, Congresos, Jornadas Cientficas y Seminarios) y su calificacin es sobre el 50 % de la calificacin del primer y segundo parcial, estimando un promedio de todas las actividades. La ponderacin de esta evaluacin es el promedio de todas las actividades desarrolladas (Work Papers, Dif s, Participacin, Laboratorio, Investigacin, Congresos, Jornadas Cientficas, Aula Abierta y Seminarios) y su calificacin es sobre el 50 % de la calificacin del primer y segundo parcial. De resultados del proceso de aprendizaje: es la valoracin de los resultados de los procesos de aprendizaje del o de la, estudiante durante el semestre. Esta forma de evaluacin es tanto cualitativa como cuantitativa, por su naturaleza y por la funcin que cumple dentro de la evaluacin. La evaluacin de resultados en la asignatura especfica se llevar a cabo de forma terica y prctica aplicada a sistemas reales.

U N

I V E R S I D A D

D E 6

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

La ponderacin de esta evaluacin es sobre 50 % de la calificacin del primer y segundo parcial, en el caso del examen final es de 100%, que por disposiciones actuales esta dividido en 50% como prueba final y 50% procesual. . EVALUACION PARCIAL 1 PARCIAL 2 FINAL PROCESUAL 50% 50% 50% DE RESULTADO 50% 50% 50% TOTAL 100% 100% 100% 100%

EVALUACION FINAL PROMEDIO PARCIAL 1, 2 Y FINAL

V. BIBLIOGRAFA: BIBLIOGRAFA BSICA Kenneth C. Louden. Construccin de Compiladores, Edit.International Thomson.2004 Ravi SEIT, Lenguajes de Programacin Edit. Addison-Wesley ,2000 Aho, Introduccin a la teora de lenguajes y compiladores BIBLIOGRAFA COMPLEMENTARIA Dean Kelley, Introduccin a la Teora de Autmatas y Lenguajes Formales. J. G. Brookshear Addison Wesley, Teora de la Computacin, Lenguajes Formales, Autmatas y Complejidad, EEUU 1993. John E. Hopcroft & Jeffrey D. Ullman, Introduccin a la teora de Autmatas, Lenguajes y Computacin, CECSA Mxico, 1995.

U N

I V E R S I D A D

D E 7

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

VI. PLAN CALENDARIO


UNIVERSIDAD DE AQUINO-BOLIVIA UNIDAD ACADMICA DE ORURO

CALENDARIO ACADMICO
GESTIN I/2011 TURNOS REGULAR-TRABAJO ESTUDIANTES NUEVOS-ANTIGUOS
SEMANA 1ra. 2da. 3ra. 4ta. 5ta. 6ta. 7ma. 8va. 9na. 10ma. 11ra. 12da. 13ra. 14ta. 15ta. 16ta. 17ma. 18va. 19na. 20va. 21ra. DEL 09-Mar 14-Mar 21-Mar 28-Mar 04-Abr 11-Abr 18-Abr 25-Abr 02-May 09-May 16-May 23-May 30-May 06-Jun 13-Jun 20-Jun 27-Jun 04-Jul 11-Jul 18-Jul 25-Jul AL 12-Mar 19-Mar 26-Mar 02-Abr 09-Abr 16-Abr 23-Abr 30-Abr 07-May 14-May 21-May 28-May 04-Jun 11-Jun 18-Jun 25-Jun 02-Jul 09-Jul 16-Jul 23-Jul 26-Jul Avance de materia Avance de materia Avance de materia Avance de materia Avance de materia Avance de materia Avance de materia Avance de materia Avance de materia Avance de materia Avance de materia Avance de materia Avance de materia Avance de materia Avance de materia Avance de materia Avance de materia ACTIVIDADES TEMA 1. Fundamentos Matemticos TEMA 1. Fundamentos Matemticos TEMA 2. Introduccin a la teora de lenguajes y compiladores TEMA 3. Alfabetos y lenguajes TEMA 3. Alfabetos y lenguajes Inicio Primera Evaluacin Parcial Conclusin Primera Evaluacin Parcial TEMA 3. Alfabetos y lenguajes TEMA 4. Autmatas finitos TEMA 4. Autmatas finitos TEMA 5. Lenguajes libres de contexto Inicio Segunda Evaluacin Parcial Conclusin Segunda Evaluacin Parcial TEMA 5. Lenguajes libres de contexto TEMA 6. Mquinas de Turing TEMA 6. Mquinas de Turing TEMA 7. Problemas de decisin Inicio Evaluacin Final Conclusin Evaluacin Final Evaluacin del segundo turno Cierre de Gestin FERIADOS 22 de abril 1 de mayo 23 de junio Viernes Santo Da del Trabajo Corpus Christi D E 8 A Q U I N O B O L I V I A Presentacin de Notas Transcripcin de Notas Transcripcin de Notas Presentacin de Notas Presentacin de Notas Presentacin de Notas Presentacin de Notas OBSERVACIONES

U N

I V E R S I D A D

FACULTAD DE CIENCIA Y TECNOLOGIA

VI. CONTROL DE EVALUACIONES 1 evaluacin parcial Fecha Nota 2 evaluacin parcial Fecha Nota Examen final Fecha Nota APUNTES

U N

I V E R S I D A D

D E 9

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

WORK PAPER # 1

PROGRAMA DE CONTROL DE CALIDAD

No. DE PROCEDIMIENTO: APRO 07

No. DE HOJAS: 7

ELABOR: Ing. Reynaldo Einar Zabaleta Rioja TTULO DEL WORK PAPER: DEDUCCIN E INDUCCIN

CDIGO: CMP 515

DPTO.: Facultad de Ingeniera DESTINADO A: DOCENTES ALUMNOS X ADMINIST. OTROS

OBSERVACIONES: Ingeniera de Sistemas, Teora de Lenguajes y Compiladores, Unidad I

FECHA DE DIFUSIN: Marzo 2011

FECHA DE ENTREGA: Marzo 2011

U N

I V E R S I D A D

D E 10

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

DEDUCCIN E INDUCCIN Este procedimiento de demostracin de frmulas cuantificadas universalmente, verifica primero que se cumple para los casos llamados bsicos, y despus, suponiendo que se cumple para los casos anteriores, se verifica para un elemento tpico x arbitrario. Este ltimo paso es llamado ``inductivo''. Se concluye entonces que la frmula vale para cualquier x. La induccin es un razonamiento que permite demostrar una infinidad de proposiciones, o una proposicin que depende de un parametro n que toma una infinidad de valores, usualmente en el conjunto de los enteros naturales. El esquema del razonamiento es el siguiente: Llamemos Pn la proposicin al rango n. Se demuestra que P0 es cierta (iniciacin de la induccin). Se demuestra que si se asume Pn como cierta, entonces Pn+1 lo es tambin, y esto sin condicin sobre el entero natural n. (relacin de induccin). En conclusin, se ha demostrado, por induccin, que Pn es cierto para todo natural n. La induccin puede empezar por otro trmino que P0, digamos por Pno. Entonces Pn ser vlido a partir del rango no, es decir, para todo natural n ≥ no. El principio de Induccin Matemtica es un mtodo que se utiliza para demostrar propiedades, formulas, validarlas y probar que son verdaderas. Es un mtodo simple que consta de tres pasos fundamentales en los cuales se debe demostrar la propiedad reemplazando su incgnita por 1, luego por k y finalmente por k+1. Los pasos para desarrollar la Induccin Matemtica se detallan en el contenido del presente trabajo de investigacin. Cuando emitimos una afirmacin o proposicin podemos intentar clasificarla en el conjunto de las proposiciones generales, en donde interviene una afirmacin del tipo de para todo elemento de ..., o bien en el conjunto de las proposiciones particulares en donde la afirmacin se refiere al elemento tal de .... De la certeza de una proposicin general se puede pasar a la certeza de las correspondientes proposiciones particulares, y, al revs, de la certeza de una o varias proposiciones particulares se puede pasar a la certeza de la correspondiente proposicin general o generalizacin. El paso de un tipo de proposicin a otra requiere un proceso de razonamiento lgico que en general se denomina deduccin si se trata del paso de una proposicin general a una o ms proposiciones particulares, o induccin, cuando realizamos el paso de una o varias proposiciones particulares a una proposicin general.

U N

I V E R S I D A D

D E 11

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

Si decimos que todos los nmeros enteros pares son divisibles por 2 estamos exponiendo una proposicin general, de la que es particularizacin, por ejemplo, la proposicin el nmero 246 es divisible por 2. El proceso por el cual, conocida la verificacin de la proposicin general, inferimos que se verifica la proposicin particular correspondiente, es lo que entendemos por deduccin o proceso deductivo. Por otra parte, cuando desde la verificacin de una o varias proposiciones particulares inferimos que se verifica una proposicin general que las engloba, entendemos que estamos realizando un proceso de induccin o proceso inductivo. LOS CONJUNTOS INDUCTIVOS En la Axiomtica de la Teora de Conjuntos, en particular en el Sistema Axiomtico de Neumann-Bernays-GodelQuine (N-B-G-Q) se establece el Axioma de Infinitud. Existe al menos un conjunto de clases inductivas, esto es, de clases tales que contener un elemento implica contener a su elemento siguiente. Tal familia es admitida, pues, como no vaca. Los nmeros naturales pueden ser introducidos con un conjunto N de clase inductiva, como el mnimo conjunto inductivo. Se introduce el concepto de nmero ordinal y se prueba que cualquier nmero natural es un nmero ordinal. Peano (Giuseppe Peano, Cuneo-Piamonte, 1858 Turn, 1932) introdujo los nmeros naturales mediante un sencillo teorema consistente en cinco afirmaciones denominadas Postulado de Peano o Axiomas de Peano para los nmeros naturales, que permiten, pues, estructurar algbricamente el conjunto N. As, puede definirse el conjunto N como un conjunto que verifica las siguientes condiciones axiomticas: 1) Existe al menos un nmero natural, que llamaremos cero y designaremos por 0. 2) Existe una aplicacin llamada aplicacin siguiente que aplica todo elemento n de N en otro elemento n* de N, llamado sucesor o siguiente de n. 3) El cero no es sucesor de ningn otro elemento de N. 4) Dos elementos de N distintos no tienen igual sucesor, o sea, la aplicacin siguiente es inyectiva. 5) Todo subconjunto N de N, para el cual se verifique que contenga al cero, y que el sucesor de cualquier elemento de N est en N, coincide con N. (Axioma de la Induccin Completa). EL METODO DE INDUCCIN La ltima afirmacin del Teorema Peano, tambin llamada Axioma de la Induccin Completa permite probar resultados con los nmeros naturales generalizando situaciones particulares. Si, en efecto, logramos evidenciar que una propiedad que se verifica para un nmero natural n se verifica tambin para su sucesor, s(n), cualquiera que sea n, entonces podemos afirmar que tal propiedad se verifica desde e incluyendo n hasta el infinito. Si sabemos, adems, que se verifica para el cero, el primero de los nmeros naturales, que no es sucesor de ningn otro, entonces hay que concluir que la propiedad se verifica en todo N. Es decir, para
U N I V E R S I D A D D E 12 A Q U I N O B O L I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

probar que algo, una propiedad, se cumple en todos los nmeros naturales, basta comprobar primero que se cumple para el 0, y, a continuacin, suponer que se cumple para un natural n, y, desde aqu, deducir que se ha de cumplir para el natural siguiente, n+1. Una tcnica muy sencilla consiste en definir un conjunto N, subconjunto de N, formado por los elementos que verifican la propiedad a demostrar. Si logramos demostrar que para cualquier elemento a N se cumple que su sucesor, y que el cero, es decir, se cumple (en el argot del sistema N-B-G-Q) que N es inductivo, entonces habr de concluirse que se verifica la propiedad en todo N, esto es, que N = N El mtodo, en definitiva, consta de dos partes o teoremas parciales: Teorema 1, o base de la demostracin: es la demostracin deductiva de que la proposicin se verifica para algn nmero natural dado a: Proposicin->f(a) cierta . Teorema 2, o paso de induccin, que es la demostracin, de carcter tambin deductivo, de que si la proposicin se supone cierta para un nmero natural n, tambin ha de ser cierta para el nmero sucesor de n, es decir, para el nmero n+1. Proposicin ->f(n) cierta f(n+1) cierta. De lo cual se infiere que la proposicin es cierta para el nmero natural a y para todos los nmeros naturales siguientes al nmero a, es decir es cierta para el conjunto de los nmeros naturales [a, ∞). Evidentemente, si a es el primero de los nmeros naturales, la proposicin ser cierta para todo el conjunto N. Ambos pasos parciales son, en ltimo trmino, procesos deductivos, por lo que cabra decir que, realmente, el mtodo de induccin matemtica es, en realidad, un proceso de deduccin. En realidad, el nombre que le damos de induccin matemtica se debe simplemente a que lo asociamos en nuestra consciencia con los razonamientos inductivos basados en las experiencias de verosimilitud de las ciencias naturales y sociales, a pesar de que el paso inductivo de la demostracin es una proposicin general que se demuestra como un riguroso proceso deductivo, sin necesidad de ninguna hiptesis particular. Es por esto por lo que tambin se le denomina induccin perfecta o induccin completa. Sea P(n) una proposicin que depende de la variable n, con n perteneciente a los Naturales. Si: - 1 satisface a P y,

U N

I V E R S I D A D

D E 13

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

- k pertenece a los Naturales, k satisface P! (k+1) satisface P, entonces todos los nmeros naturales satisfacen P. Usaremos el Axioma de Induccin Matemtica para demostrar la validez, en los Nmeros Naturales, de ciertas proposiciones P que depende de una variable n, con n perteneciente a los Naturales. Procederemos de la siguiente manera: - Verificaremos la proposicin para el numero 1. - Supondremos que la proposicin es verdadera para un numero natural cualquiera k. (Hiptesis de induccin). - Demostraremos la proposicin para el numero natural (k+1). As, gracias al axioma de induccin Matemtica, podemos concluir que la proposicin la satisfacen todos los nmeros naturales.

Ejemplo 1: Demostraremos que: 1+2+3+............+n = n(n+1), n perteneciente a los naturales (*) 2 (i) 1= 1(1+1). Por lo tanto 1 satisface la proposicin (*) 2 (ii) Supongamos valida la proposicin (*) para k perteneciente a los Naturales, es decir supongamos que: 1+2+3+.........+k = k(k+1). (Hiptesis de induccin). 2 (iii) Demostremos que k - 1 tambin satisface la proposicin (*), es decir, demostremos que: 1+2+3+.........+k+(k+1) = (k+1)(k+2). 2 Demostracin: (1+2+3+.......+k)+(k+1) = k(k+1) + (k+1) 2 = k(k+1)+2(k+1) 2 = (k+1)(k+2) 2 Luego la proposicin (*) es verdadera n perteneciente a los naturales. En resumen, primero demuestras reemplazando el n por un 1, luego demuestras reemplazando el n por un k y finalmente lo demuestras reemplazando el n por (k+1) Ejemplo 2: Demuestre usando Induccin Matemtica que: n i3 = n2 (n+1)2 i=1 4

U N

I V E R S I D A D

D E 14

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

1 Usando n = 1 1 i3 = 12 (1+1)2 i =1 4 1 1 = 1(4) i =1 4 1 1=4 =1 i=1 4 2 Supongamos valido para n = k k i3 = k2 (k+1)2 i=1 4 3 Por demostrar valido para n = k+1 k+1 i3 = (k+1)2 (k+1)2 se reemplaza termino igual al de arriba i=1 4 = (k+1)2 (k+2)2 esto se debe demostrar 4 k+1 k i3 = i3 + (k+1)3 i =1 i =1 = k2 (k+1)2 + (k+1)3 = k2 (k+1)2 + (k+1)3 = (k+1)2 ( k2 + (k+1) 4 4 4 2 2 2 2 = (k+1) ( k +4(k+1) = (k+1) (k +4k+4) 4 4 = (k+1)2 (k+2)2 4 Ejemplo 3: Demuestre usando induccin que: 2 + 4+ 6 + 8+..........+ 2n = n(n+1) n 2 i = n(n+1) i =1 a) n=1 1 2*1 = 1(1+1) i =1 2 = 1*2 2 =2

U N

I V E R S I D A D

D E 15

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

b) Suponer valido para n = k k 2i = k(k+1) Esto es la hiptesis i =1 c) Demostrar para n = k+1 K+1 2i = (k+1)(k+2) i =1 k+1 k 2i = 2i + 2(k+1) i =1 i =1 = k(k+1) + 2(k+1) = (k+1)(k+2) Cuestionario: 1. 2. 3. 4. 5. Que es induccin Matemtica Explicar con sus propias palabras cual es el esquema general de la Induccin Cuantos y cuales son los pasos de la Induccin Explicar las 5 afirmaciones que Peano introdujo referido a los nmeros naturales. Realizar un ejercicio como en los ejemplos de Induccin Matemtica.

U N

I V E R S I D A D

D E 16

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

WORK PAPER # 2

PROGRAMA DE CONTROL DE CALIDAD

No. DE PROCEDIMIENTO : APRO 07

No. DE HOJAS : 7

ELABOR : Ing. Jaqueline Martnez Caldern TTULO DEL WORK PAPER : ntroduccin a los Compiladores

CDIGO : CMP 417

DPTO.: Facultad de Ciencias y Tecnologa UDABOL ORURO DESTINADO A: DOCENTES ALUMNOS X ADMINIST. OTROS

OBSERVACIONES: Carrera : Ingeniera de Sistemas, Asignatura : TEORA DE LENGUAJES Y COMPILADORES, Unidad I, Tema 1 FECHA DE DIFUSIN: Marzo 2011

FECHA DE ENTREGA: Marzo 2011

U N

I V E R S I D A D

D E 17

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

INTRODUCCIN A LOS COMPILADORES En 1946 se desarroll el primer ordenador digital. En un principio, estas mquinas ejecutaban instrucciones consistentes en cdigos numricos que sealan a los circuitos de la mquina los estados correspondientes a cada operacin. Esta expresin mediante cdigos numricos se llam Lenguaje Mquina, interpretado por un secuenciador cableado o por un microprograma. Pero los cdigos numricos de las mquinas son engorrosos. Pronto los primeros usuarios de estos ordenadores descubrieron la ventaja de escribir sus programas mediante claves ms fciles de recordar que esos cdigos numricos; al final, todas esas claves juntas se traducan manualmente a Lenguaje Mquina. Estas claves constituyen los llamados lenguajes ensambladores, que se generalizaron en cuanto se dio el paso decisivo de hacer que las propias mquinas realizaran el proceso mecnico de la traduccin. A este trabajo se le llama ensamblar el programa. Dada su correspondencia estrecha con las operaciones elementales de las mquinas, las instrucciones de los lenguajes ensambladores obligan a programar cualquier funcin de una manera minuciosa e iterativa. De hecho, normalmente, cuanto menor es el nivel de expresin de un lenguaje de programacin, mayor rendimiento se obtiene en el uso de los recursos fsicos (hardware). A pesar de todo, el lenguaje ensamblador segua siendo el de una mquina, pero ms fcil de manejar. Los trabajos de investigacin se orientaron entonces hacia la creacin de un lenguaje que expresara las distintas acciones a realizar de una manera lo ms sencilla posible para el hombre. As, en 1950, John Backus dirigi una investigacin en I.B.M. en un lenguaje algebraico. En 1954 se empez a desarrollar un lenguaje que permita escribir frmulas matemticas de manera traducible por un ordenador. Le llamaron FORTRAN (FORmulae TRANslator). Fue el primer lenguaje considerado de alto nivel. Se introdujo en 1957 para el uso de la computadora IBM modelo 704. Permita una programacin ms cmoda y breve que lo existente hasta ese momento, lo que supona un considerable ahorro de trabajo. Surgi as por primera vez el concepto de un traductor, como un programa que traduca un lenguaje a otro lenguaje. En el caso particular de que el lenguaje a traducir es un lenguaje de alto nivel y el lenguaje traducido de bajo nivel, se emplea el trmino compilador. La tarea de realizar un compilador no fue fcil. El primer compilador de FORTRAN tard 18 aos-persona en realizarse y era muy sencillo. Este desarrollo del FORTRAN estaba muy influenciado por la mquina objeto en la que iba a ser implementado. Como un ejemplo de ello tenemos el hecho de que los espacios en blanco fuesen ignorados, debido a que el perifrico que se utilizaba como entrada de programas (una lectora de tarjetas perforadas) no contaba correctamente los espacios en blanco. Paralelamente al desarrollo de FORTRAN en Amrica, en Europa surgi una corriente ms universitaria, que pretenda que la definicin de un lenguaje fuese independiente de la mquina y en donde los algoritmos se pudieran expresar de forma ms simple. Esta corriente estuvo muy influida por los trabajos sobre gramticas de contexto libre publicados por Chomsky dentro de su estudio de lenguajes naturales. Con estas ideas surgi un grupo europeo encabezado por el profesor F.L.Bauer (de la Universidad de Munich). Este grupo defini un lenguaje de usos mltiples independiente de una realizacin concreta sobre una mquina. Pidieron colaboracin a la asociacin americana A.C.M. (Association for Computing Machinery) y se form un comit en el que particip J. Backus que colaboraba en esta investigacin. De esa unin surgi un informe definiendo un International Algebraic Language (I.A.L.), publicado en Zurich en 1958. Posteriormente este lenguaje se llam ALGOL 58 (ALGOritmic Language). En 1969, el lenguaje fue revisado y llev a una nueva versin que se llam ALGOL 60. La versin actual es ALGOL 68, un lenguaje modular estructurado en bloques. En el ALGOL aparecen por primera vez muchos de los conceptos de los nuevos lenguajes algortmicos:
U N I V E R S I D A D D E 18 A Q U I N O B O L I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

Definicin de la sintaxis en notacin BNF (Backus-Naur Form). Formato libre. Declaracin explcita de tipo para todos los identificadores. Estructuras iterativas ms generales. Recursividad. Paso de parmetros por valor y por nombre. Estructura de bloques, lo que determina la visibilidad de los identificadores.

Junto a este desarrollo en los lenguajes, tambin se iba avanzando en la tcnica de compilacin. En 1958, Strong y otros proponan una solucin al problema de que un compilador fuera utilizable por varias mquinas objeto. Para ello, se divida por primera vez el compilador en dos fases, designadas como el "front end" y el "back end". La primera fase (front end) es la encargada de analizar el programa fuente y la segunda fase (back end) es la encargada de generar cdigo para la mquina objeto. El puente de unin entre las dos fases era un lenguaje intermedio que se design con el nombre de UNCOL (UNiversal Computer Oriented Language). Para que un compilador fuera utilizable por varias mquinas bastaba nicamente modificar su back end. Aunque se hicieron varios intentos para definir el UNCOL, el proyecto se ha quedado simplemente en un ejercicio terico. De todas formas, la divisin de un compilador en front end y back end fue un adelanto importante. Ya en estos aos se van poniendo las bases para la divisin de tareas en un compilador. As, en 1959 Rabin y Scott proponen el empleo de autmatas deterministas y no deterministas para el reconocimiento lexicogrfico de los lenguajes. Rpidamente se aprecia que la construccin de analizadores lxicos a partir de expresiones regulares es muy til en la implementacin de los compiladores. En 1968, Johnson apunta diversas soluciones. En 1975, con la aparicin de LEX surge el concepto de un generador automtico de analizadores lxicos a partir de expresiones regulares, basado en el sistema operativo UNIX. A partir de los trabajos de Chomsky ya citados, se produce una sistematizacin de la sintaxis de los lenguajes de programacin, y con ello un desarrollo de diversos mtodos de anlisis sintctico. Con la aparicin de la notacin BNF - desarrollada en primer lugar por Backus en 1960 cuando trabajaba en un borrador del ALGOL 60, modificada en 1963 por Naur y formalizada por Knuth en 1964 - se tiene una gua para el desarrollo del anlisis sintctico. Los diversos mtodos de parsers ascendentes y descendentes se desarrollan durante la dcada de los 60. En 1959, Sheridan describe un mtodo de parsing de FORTRAN que introduca parntesis adicionales alrededor de los operandos para ser capaz de analizar las expresiones. Ms adelante, Floyd introduce la tcnica de la precedencia de operador y el uso de las funciones de precedencia. A mitad de la dcada de los 60, Knuth define las gramticas LR y describe la construccin de una tabla cannica de parser LR. Por otra parte, el uso por primera vez de un parsing descendente recursivo tuvo lugar en el ao 1961. En el ao 1968 se estudian y definen las gramticas LL as como los parsers predictivos. Tambin se estudia la eliminacin de la recursin a la izquierda de producciones que contienen acciones semnticas sin afectar a los valores de los atributos. En los primeros aos de la dcada de los 70, se describen los mtodos SLR y LALR de parser LR. Debido a su sencillez y a su capacidad de anlisis para una gran variedad de lenguajes, la tcnica de parsing LR va a ser la elegida para los generadores automticos de parsers. A mediados de los 70, Johnson crea el generador de analizadores sintcticos YACC para funcionar bajo un entorno UNIX. Junto al anlisis sintctico, tambin se fue desarrollando el anlisis semntico. En los primeros lenguajes (FORTRAN y ALGOL 60) los tipos posibles de los datos eran muy simples, y la comprobacin de tipos era muy sencilla. No se permita la coercin de tipos, pues sta era una cuestin difcil y era ms fcil no permitirlo.

U N

I V E R S I D A D

D E 19

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

Con la aparicin del ALGOL 68 se permita que las expresiones de tipo fueran construidas sistemticamente. Ms tarde, de ah surgi la equivalencia de tipos por nombre y estructural. El manejo de la memoria como una implementacin tipo pila se us por primera vez en 1958 en el primer proyecto de LISP. La inclusin en el ALGOL 60 de procedimientos recursivos potenci el uso de la pila como una forma cmoda de manejo de la memoria. Dijkstra introdujo posteriormente el uso del display para acceso a variables no locales en un lenguaje de bloques. Tambin se desarrollaron estrategias para mejorar las rutinas de entrada y de salida de un procedimiento. As mismo, y ya desde los aos 60, se estudi el paso de parmetros a un procedimiento por nombre, valor y variable. Con la aparicin de lenguajes que permiten la localizacin dinmica de datos, se desarrolla otra forma de manejo de la memoria, conocida por el nombre de heap (montculo). Se han desarrollado varias tcnicas para el manejo del heap y los problemas que con l se presentan, como son las referencias perdidas y la recogida de basura. La tcnica de la optimizacin apareci desde el desarrollo del primer compilador de FORTRAN. Backus comenta cmo durante el desarrollo del FORTRAN se tena el miedo de que el programa resultante de la compilacin fuera ms lento que si se hubiera escrito a mano. Para evitar esto, se introdujeron algunas optimizaciones en el clculo de los ndices dentro de un bucle. Pronto se sistematizan y se recoge la divisin de optimizaciones independientes de la mquina y dependientes de la mquina. Entre las primeras estn la propagacin de valores, el arreglo de expresiones, la eliminacin de redundancias, etc. Entre las segundas se podra encontrar la localizacin de registros, el uso de instrucciones propias de la mquina y el reordenamiento de cdigo. A partir de 1970

U N

I V E R S I D A D

D E 20

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

comienza el estudio sistemtico de las tcnicas del anlisis de flujo de datos. Su repercusin ha sido enorme en las tcnicas de optimizacin global de un programa. En la actualidad, el proceso de la compilacin ya est muy asentado. Un compilador es una herramienta bien conocida, dividida en diversas fases. Algunas de estas fases se pueden generar automticamente (analizador lxico y sintctico) y otras requieren una mayor atencin por parte del escritor de compiladores (las partes de traduccin y generacin de cdigo). De todas formas, y en contra de lo que quiz pueda pensarse, todava se estn llevando a cabo varias vas de investigacin en este fascinante campo de la compilacin. Por una parte, se estn mejorando las diversas herramientas disponibles (por ejemplo, el generador de analizadores lxicos Aardvark para el lenguaje PASCAL). Tambin la aparicin de nuevas generaciones de lenguajes -ya se habla de la quinta generacin, como de un lenguaje cercano al de los humanos-ha provocado la revisin y optimizacin de cada una de las fases del compilador. El ltimo lenguaje de programacin de amplia aceptacin que se ha diseado, el lenguaje Java, establece que el compilador no genera cdigo para una mquina determinada sino para una virtual, la Java Virtual Machine (JVM), que posteriormente ser ejecutado por un intrprete, normalmente incluido en un navegador de Internet. El gran objetivo de esta exigencia es conseguir la mxima portabilidad de los programas escritos y compilados en Java, pues es nicamente la segunda fase del proceso la que depende de la mquina concreta en la que se ejecuta el intrprete. Qu es un compilador? Un traductor es cualquier programa que toma como entrada un texto escrito en un lenguaje, llamado fuente y da como salida otro texto en un lenguaje, denominado objeto. Compilador En el caso de que el lenguaje fuente sea un lenguaje de programacin de alto nivel y el objeto sea un lenguaje de bajo nivel (ensamblador o cdigo de mquina), a dicho traductor se le denomina compilador. Un ensamblador es un compilador cuyo lenguaje fuente es el lenguaje ensamblador. Un intrprete no genera un programa equivalente, sino que toma una sentencia del programa fuente en un lenguaje de alto nivel y la traduce al cdigo equivalente y al mismo tiempo lo ejecuta. Histricamente, con la escasez de memoria de los primeros ordenadores, se puso de moda el uso de intrpretes frente a los compiladores, pues el programa fuente sin traducir y el intrprete juntos daban una ocupacin de memoria menor que la resultante de los compiladores. Por ello los primeros ordenadores personales iban siempre acompaados de un intrprete de BASIC (Spectrum, Commodore VIC-20, PC XT de IBM, etc.). La mejor informacin sobre los errores por parte del compilador as como una mayor velocidad de ejecucin del cdigo resultante hizo que poco a poco se impusieran los compiladores. Hoy en da, y con el problema de la memoria prcticamente resuelto, se puede hablar de un gran predominio de los compiladores frente a los intrpretes, aunque intrpretes como los incluidos en los navegadores de Internet para interpretar el cdigo JVM de Java son la gran excepcin.

U N

I V E R S I D A D

D E 21

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

Ventajas de compilar frente a interpretar: Se compila una vez, se ejecuta n veces. En bucles, la compilacin genera cdigo equivalente al bucle, pero interpretndolo se traduce tantas veces una lnea como veces se repite el bucle. El compilador tiene una visin global del programa, por lo que la informacin de mensajes de error es mas detallada. Ventajas del intrprete frente al compilador: Un intrprete necesita menos memoria que un compilador. En principio eran ms abundantes dado que los ordenadores tenan poca memoria. Permiten una mayor interactividad con el cdigo en tiempo de desarrollo.

Un compilador no es un programa que funciona de manera aislada, sino que necesita de otros programas para conseguir su objetivo: obtener un programa ejecutable a partir de un programa fuente en un lenguaje de alto nivel. Algunos de esos programas son el preprocesador, el linker, el depurador y el ensamblador. El preprocesador se ocupa (dependiendo del lenguaje) de incluir ficheros, expandir macros, eliminar comentarios, y otras tareas similares. El linker se encarga de construir el fichero ejecutable aadiendo al fichero objeto generado por el compilador las cabeceras necesarias y las funciones de librera utilizadas por el programa fuente. El depurador permite, si el compilador ha generado adecuadamente el programa objeto, seguir paso a paso la ejecucin de un programa. Finalmente, muchos compiladores, en vez de generar cdigo objeto, generan un programa en lenguaje ensamblador que debe despus convertirse en un ejecutable mediante un programa ensamblador. Clasificacin de Compiladores El programa compilador traduce las instrucciones en un lenguaje de alto nivel a instrucciones que la computadora puede interpretar y ejecutar. Para cada lenguaje de programacin se requiere un compilador separado. El compilador traduce todo el programa antes de ejecutarlo. Los compiladores son, pues, programas de traduccin insertados en la memoria por el sistema operativo para convertir programas de cmputo en pulsaciones electrnicas ejecutables (lenguaje de mquina). Los compiladores pueden ser de:

una sola pasada: examina el cdigo fuente una vez, generando el cdigo o programa objeto. pasadas mltiples: requieren pasos intermedios para producir un cdigo en otro lenguaje, y una pasada final para producir y optimizar el cdigo producido durante los pasos anteriores. Optimacin: lee un cdigo fuente, lo analiza y descubre errores potenciales sin ejecutar el programa. Compiladores incrementales: generan un cdigo objeto instruccin por instruccin (en vez de hacerlo para todo el programa) cuando el usuario teclea cada orden individual. El otro tipo de compiladores requiere que todos los enunciados o instrucciones se compilen conjuntamente. Ensamblador: el lenguaje fuente es lenguaje ensamblador y posee una estructura sencilla. Compilador cruzado: se genera cdigo en lenguaje objeto para una mquina diferente de la que se est utilizando para compilar. Es perfectamente normal construir un compilador de Pascal que genere cdigo para MS-DOS y que el compilador funcione en Linux y se haya escrito en C++. Compilador con montador: compilador que compila distintos mdulos de forma independiente y despus es capaz de enlazarlos. Autocompilador: compilador que est escrito en el mismo lenguaje que va a compilar. Evidentemente, no se puede ejecutar la primera vez. Sirve para hacer ampliaciones al lenguaje, mejorar el cdigo generado, etc. Metacompilador: es sinnimo de compilador de compiladores y se refiere a un programa que recibe como entrada las especificaciones del lenguaje para el que se desea obtener un compilador y genera como salida el compilador para ese lenguaje. El desarrollo de los metacompiladores se encuentra con la dificultad de unir la generacin de cdigo con la parte de anlisis. Lo que s se han desarrollado son generadores de analizadores lxicos y sintcticos. Por ejemplo, los conocidos:
U N I V E R S I D A D D E 22 A Q U I N O B O L I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

LEX: Generador de analizadores lxicos YACC: Generador de analizadores sintcticos desarrollados para UNIX. Los inconvenientes que tienen son que los analizadores que generan no son muy eficientes.

Descompilador: es un programa que acepta como entrada cdigo mquina y lo traduce a un lenguaje de alto nivel, realizando el proceso inverso a la compilacin.

Cuestionario: 1. A raz de que nacen los Compiladores y cul la funcin especfica en los Lenguajes de Programacin?. 2. Cul la importancia de clasificar a los Compiladores ? 3. Explique qu entiende por: a) Compilador b) Interprete Establezca la diferencia clara. 4. Cul su conclusin referente a este Work Paper sobre Compiladores ?

U N

I V E R S I D A D

D E 23

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

WORK PAPER # 3

PROGRAMA DE CONTROL DE CALIDAD

No. DE PROCEDIMIENTO : APRO 07

No. DE HOJAS : 4

ELABOR : Ing. Jaqueline Martnez Caldern TTULO DEL WORK PAPER : Autmatas finitos y Lenguajes regulares

CDIGO : CMP 417

DPTO.: Facultad de Ciencias y Tecnologa UDABOL ORURO DESTINADO A: DOCENTES ALUMNOS X ADMINIST. OTROS

OBSERVACIONES: Carrera : Ingeniera de Sistemas, Asignatura : TEORA DE LENGUAJES Y COMPILADORES, Unidad II, Tema 2, Tema 3, Tema 4 FECHA DE DIFUSIN : Abril 2011

FECHA DE ENTREGA : Abril 2011

U N

I V E R S I D A D

D E 24

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

AUTMATAS FINITOS Y LENGUAJES REGULARES AUTMATAS FINITOS DETERMINSTICOS (AFN) Las caractersticas de los autmatas finitos determinsticos son: 1. Un conjunto finito de estados y un conjunto de transiciones de estado a estado, que se dan sobre smbolos de entrada tomados de un alfabeto . 2. Para cada smbolo de entrada existe exactamente una transicin a partir de cada estado (posiblemente de regreso al mismo estado). 3. Un estado, por lo general denotado como q 0 es el estado inicial, en el que el autmata comienza. 4. Algunos estados (tal vez ninguno) estn designados como final o de aceptacin. Un autmata finito determinstico es una quinta tupla (Q, , , q 0 , F) donde: Q es un conjunto finito de estados. un alfabeto de entrada finito. q 0 elemento de Q , el estado inicial. F Q el conjunto de estados finales o de aceptacin. es la funcin : Q x Q que determina el nico estado siguiente para el par (q 1 , ) correspondiente al estado actual q 1 y la entrada . Generalmente el trmino autmata finito determinstico se abrevia como DFA de sus siglas en ingls Deterministic Finite Automaton. Usaremos M = (Q, , q 0 , F, ) para indicar el conjunto de estados, el alfabeto, el estado inicial, el conjunto de estados finales y la funcin asociadas con el DFA M. Se puede construir un diagrama para que ayude a determinar los distintos miembros o cadenas del lenguaje. Tal diagrama tiene la forma de un grafo dirigido con informacin aadida, y se llama diagrama de transicin. Los nodos del grafo corresponden a los estados del DFA y se usan para sealar, en ese momento, hasta qu lugar se analiz la cadena. Por lo general q 0 es el estado inicial, marcando con una flecha (), el comienzo del autmata; algunos estados estn designados como final o aceptacin indicados por un doble crculo. Los smbolos del alfabeto son las etiquetas de los arcos del grafo. Si cuando ha sido tratada la cadena en su totalidad se termina en un estado de aceptacin entonces la cadena es aceptada por el lenguaje. Si M es un AFD, entonces el lenguaje aceptado por M es L(M)={w *w es aceptada por M}. Por tanto, L(M) es el conjunto de cadenas que hacen que M pase de su estado inicial a un estado de aceptacin. Ejemplo: El lenguaje que acepta el DFA esta formado por todas las cadenas sobre el alfabeto = {a, b}, siempre y cuando terminen con a.

U N

I V E R S I D A D

D E 25

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

Q = {q 0 , q 1 }, = {a, b}, q 0 = q 0 , F = {q 1 } y se define mediante la tabla de la figura 1.

q0 q1
Q3

a q1 q1

b q0 q0

Figura 1. Se puede utilizar tambin la siguiente lista para definir la funcin (q 0 , a) = q 1 (q 0 , b) = q 0 (q 1 , a) = q 1 (q 1 ,b) = q 0 El diagrama de transicin se muestra en la figura 2.
b a

q0

q1

Figura 2. Consideremos otro ejemplo. El DFA M= {Q, , q 0 , F, } acepta el lenguaje L(M)={w {a, b}* que no contiene tres bs consecutivas} y esta representada por: Q={q 0 , q 1 , q 2 , q 3 } ={a, b} q 0 =q 0 F={q 0 , q 1 , q 2 } y dada por la tabla de la figura 3.

q0 q1 q2 q3
Q3

a q0 q0 q0 q3

b q1 q2 q3 q3

Figura 3.
U N I V E R S I D A D D E 26 A Q U I N O B O L I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

El diagrama de transicin correspondiente se muestra en la figura 4.

a b q0 a q1 b q2 b

a, b

q3

Figura 4.
a

Cuestionario: 1. Qu entiende por Lenguajes regulares y Autmatas finitos?. 2. Cul la aplicacin de los Autmatas finitos determinsticos, mencione dos ejemplos? 3. Explique qu entiende por: a) Transicin b) Estado 4. Cul su conclusin acerca del Work Paper sobre Autmatas finitos determinsticos?

U N

I V E R S I D A D

D E 27

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

WORK PAPER # 4

PROGRAMA DE CONTROL DE CALIDAD

No. DE PROCEDIMIENTO : APRO 07

No. DE HOJAS : 5

ELABOR : Ing. Jaqueline Martnez Caldern TTULO DEL WORK PAPER : Implementacin del compilador para el lenguaje

CDIGO : CMP 417

DPTO.: Facultad de Ciencias y Tecnologa UDABOL ORURO DESTINADO A: DOCENTES ALUMNOS X ADMINIST. OTROS

OBSERVACIONES: Carrera : Ingeniera de Sistemas, Asignatura : TEORA DE LENGUAJES Y COMPILADORES, Unidad III, Tema 5, Tema 6 FECHA DE DIFUSIN: Mayo 2011

FECHA DE ENTREGA: Mayo 2011

U N

I V E R S I D A D

D E 28

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

IMPLEMENTACIN DEL COMPILADOR PARA EL LENGUAJE Un compilador es un programa que lee un programa escrito en un lenguaje, el lenguaje fuente, y lo traduce a un programa equivalente en otro lenguaje, el lenguaje objeto, vase la figura 1. El compilador informa al usuario de los errores en el programa fuente.

Programa Fuente

Compilador

Programa Objeto

Mensajes de error

Figura 1. Un compilador. En la compilacin hay dos partes: anlisis y sntesis. El analizador lxico y sintctico pertenecen a la parte de anlisis. La generacin de cdigo intermedio, optimizacin y generacin de cdigo objeto son parte de la sntesis (vase la figura 2.). Cada uno de ellos realiza una funcin especfica: Analizador Lxico Programa Fuente Analizador Sintctico Generador de Cdigo Objeto Generacin de Cdigo Intermedio

Optimizacin

Programa Objeto

Figura 2. Fases de un compilador. 1. El analizador lxico se encarga de separar el texto en componentes lxicos llamados tokens lexemas que son utilizados por el analizador sintctico. Como el analizador lxico es la parte del compilador que lee el programa fuente, tambin realiza funciones secundarias en la interfaz del usuario, como eliminar del programa fuente comentarios, espacios en blanco, caracteres TAB y de nueva lnea. Otra funcin que realiza es cuando encuentra a un identificador, el cual introduce a una tabla de smbolos siempre y cuando este no se encuentre ya en la tabla. Si existe el identificador ya, se modifica la informacin en la tabla (dicha tabla es utilizada durante todas las fases del compilador).

U N

I V E R S I D A D

D E 29

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

2. El analizador sintctico obtiene una cadena de componentes lxicos del analizador lxico y comprueba si la cadena puede ser generada por la gramtica del lenguaje fuente, formando un rbol sintctico. Se supone que el analizador sintctico informar de cualquier error de sintaxis de manera inteligible. Tambin debera recuperarse de los errores que ocurren frecuentemente para poder continuar procesando el resto de su entrada. 3. Toda esta informacin se rene en la parte de anlisis del compilador y la emplea la parte de sntesis para generar el cdigo objeto. 4. El generador de cdigo intermedio recorre el rbol entregado por el analizador sintctico y produce un cdigo intermedio parecido al cdigo objeto. 5. La optimizacin reduce el cdigo intermedio. 6. El generador de cdigo objeto ensambla el programa. Existen herramientas para la construccin de compiladores como por ejemplo los programas LEX y YACC.LEX es un programa generador diseado para crear programas en lenguaje C que realizan el procesamiento lxico sobre cadenas de caracteres de entrada. Un programa fuente LEX es una especificacin de un analizador lxico, consistente de un conjunto de expresiones regulares junto con una accin para cada expresin regular. La accin es una porcin de cdigo el cual ser ejecutado cuando un componente lxico especificado por la correspondiente expresin regular es recorrido. Usualmente, una accin pasar una indicacin del componente lxico encontrado al analizador sintctico, algunas veces con otros efectos tales como hacer una entrada en la tabla de smbolos. La salida de LEX es un programa de un analizador lxico construido para las especificaciones fuente LEX. Por lo general, LEX es utilizado de la forma representada en la figura 3. Primero, se prepara una especificacin del analizador lxico creando un programa lex.l en lenguaje LEX. Despus lex.l se pasa por el compilador LEX para producir el programa en C lex.yy.c. El programa lex.yy.c consta de una representacin tabular de un diagrama de transiciones construido a partir de las expresiones regulares de lex.l, junto con una rutina estndar que utiliza la tabla para reconocer lexemas. Las acciones asociadas a las expresiones regulares de lex.l son porciones de cdigo en C y se transfieren directamente a lex.yy.c. Por ltimo, lex.yy.c se ejecuta en el compilador de C para producir un programa objeto a.out, que es el analizador lxico que transforma un archivo de entrada en una secuencia de componentes lxicos. LEX se dise para producir analizadores lxicos para utilizar con YACC. Programa Fuente en LEX lex.l Compilador de LEX Compilador de C Lex.yy.c

Lex.yy.c Archivo de entrada

a.out

Analizador lxico a.out

Secuencia de componentes lxicos

Figura 3. Creacin de un analizador lxico con LEX. YACC (de sus siglas en ingls Yet Another Compiler-Compiler que significa otro compilador de compiladores ms) es un programa generador diseado para crear programas en lenguaje C que realizan el procesamiento sintctico para facilitar la construccin de la etapa inicial de un compilador.

U N

I V E R S I D A D

D E 30

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

El usuario de YACC debe especificar las estructuras de su entrada a partir de gramticas libres de contexto, junto con el cdigo a ser llamado cada vez que cada una de estas estructuras sea reconocida. YACC convierte tal especificacin en una subrutina que controla el proceso de entrada; es conveniente tener la mayor parte del flujo de control en la aplicacin del usuario manejada por esta subrutina. La subrutina de entrada producida por YACC llama a una rutina suministrada por el usuario para regresar el siguiente elemento bsico de entrada. As, el usuario puede especificar su entrada en trminos de caracteres de entrada individuales, o en trminos de construcciones de ms alto nivel tales como nombres y nmeros. Se puede construir un traductor utilizando YACC de la forma que se ilustra en la figura 4. Primero, se prepara un archivo, por ejemplo traduce.y, que contiene una especificacin en YACC del traductor. Despus traduce.y se pasa por el compilador YACC y se obtiene un programa escrito en C llamado y.tab.c. El programa y.tab.c es una representacin de un analizador sintctico escrito en C, junto con otras rutinas en C que el usuario pudo haber preparado. Al compilar y.tab.c se obtiene el programa objeto a.out que es el analizador sintctico del compilador Especificacin en YACC de traduce.y Compilador de YACC y.tab.c

y.tab.c

Compilador de C

a.out

entrada

Analizador Sintctico a.out

salida

Figura 4. Creacin de un traductor de entrada/salida con YACC. Cuestionario: 1. El proceso de traduccin del compilador tiene dos fases el anlisis lxico y sintctico. Cmo se realiza est traduccin explique ?. 2. Utilizando un ejemplo aplique las dos fases el anlisis lxico y sintctico y muestre el resultado esquemticamente? 3. Establezca la diferencia clara y precisa entre el analizador lxico y sintctico y que utilidad tiene el traductor YACC? 4. Cul su conclusin referente a este Work Paper sobre la implementacin del compilador para el lenguaje?

U N

I V E R S I D A D

D E 31

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

WORK PAPER # 5

PROGRAMA DE CONTROL DE CALIDAD

No. DE PROCEDIMIENTO : APRO 07

No. DE HOJAS : 3

ELABOR : Ing. Jaqueline Martnez Caldern

CDIGO : CMP 417

TTULO DEL WORK PAPER : Autmatas Celulares DPTO.: Facultad de Ciencias y Tecnologa UDABOL ORURO DESTINADO A: DOCENTES ALUMNOS X ADMINIST. OTROS

OBSERVACIONES: Carrera : Ingeniera de Sistemas, Asignatura : TEORA DE LENGUAJES Y COMPILADORES, Unidad III, Tema 5, Tema 6 FECHA DE DIFUSIN : Junio 2011

FECHA DE ENTREGA : Junio 2011

U N

I V E R S I D A D

D E 32

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

AUTMATAS CELULARES AUTMATAS CELULARES E INTELIGENCIA ARTIFICIAL En la Inteligencia Artificial (IA) podemos observar dos enfoques distintos, segn el objetivo perseguido: El intento de desarrollar una tecnologa capaz de crear mquinas con capacidades de razonamiento similares, o aparentemente similares a las de la inteligencia humana. La investigacin relativa a los mecanismos de inteligencia, que emplea el ordenador como herramienta de simulacin para la validacin de teoras.

El segundo enfoque no pretende obtener programas inteligentes, sino descubrir en qu consiste la inteligencia. Ya que la actividad inteligente surge inicialmente en animales vivos, una parte de los esfuerzos orientados en este sentido pretenden no slo descubrir en qu consiste la inteligencia, sino tambin en qu consiste la vida. La Vida Artificial es el intento por parte del hombre, de crear vida, o algo parecido a la vida, mediante la combinacin de smbolos (datos) y procesos de smbolos (programas) independientemente del soporte fsico de estos smbolos y procesos. La Vida Artificial, en parte, trata de recrear los procesos propios de la vida, partiendo de la suposicin de que la vida o los procesos propios de la vida, si no son imprescindibles para la aparicin de la inteligencia, al menos son una buena idea para crear inteligencia, ya que evolutivamente los seres inteligentes siempre han sido seres vivos. Por otra parte, la Vida Artificial trata de descubrir que es la vida. Fundamentalmente, trata de descubrir si la vida depende de un soporte (fsico, energtico, metafsico o como se quiera llamar) o se trata de procesos, datos, configuraciones, esquemas, es decir, de objetos lgicos y sus relaciones, independientes del soporte. Este enfoque de la Vida Artificial se aleja tanto de la bsqueda de la inteligencia que parece difcil clasificarlo dentro de la Inteligencia Artificial si no se toman en cuenta las reflexiones anteriores, y perfectamente se podra clasificar como un campo de estudio independiente de la Inteligencia Artificial. Dentro de la Vida Artificial, los Autmatas Celulares son el ms claro ejemplo de este rodeo en la bsqueda de la inteligencia. Es bastante extrao decir que los Autmatas Celulares son inteligentes, no lo parecen en absoluto. En cambio, poseen muchos de los aspectos fundamentales de la vida en cuanto a procesos. Adems, esto se intenta conseguir con la mxima simplicidad posible, por lo que podran ser el fundamento, al menos terico, de la vida, y por extensin, de la inteligencia. Los primeros autmatas celulares Los estudios sobre autmatas finitos, mquinas de Turing, y otros modelos que siguen la misma filosofa configuran lo que se ha denominado Teora de Autmatas y Mquinas de Turing, o simplemente Teora de Autmatas, dentro de la Teora de la Computacin. En la dcada de los 50, dos neurofisilogos, Warren S. McCulloch y Walter Pitts disearon un modelo matemtico para representar el funcionamiento de las clulas cerebrales que fue el origen de los que hoy se conoce por redes neuronales. El modelo era una aproximacin muy sencilla al comportamiento real de las neuronas, pero tena grandes aplicaciones en otros contextos. En el campo puramente matemtico, Kleene redefini el modelo y dio lugar a los autmatas finitos, especie de mquinas ideales o modelos matemticos, al modo de la mquina de Turing, con posibilidades bastante ms reducidas, pero muy adecuadas para ciertos procesos de clculo.
U N I V E R S I D A D D E 33 A Q U I N O B O L I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

Por otra parte el ingls Turing consigui definir conceptualmente una mquina de clculo que se considera universal, es decir, el mecanismo de procesar cualquier algoritmo. Turing dise un modelo matemtico de autmata que siguiendo unas reglas simples consegua solucionar una gran gama de problemas. En principio, la mquina de Turing constituye el instrumento de clculo universal, el ms general. No es posible dar una demostracin rigurosa de esto, aunque s se tiene una gran cantidad de indicios, agrupados en lo que se conoce como Tesis de Church, que puede plantearse as: "No existen funciones que puedan ser definidas por personas, y cuyo clculo sea descrito por algn algoritmo, que no puedan computarse con una mquina de Turing". Basndose en la mquina de Turing, Von Neumann trabaj en una mquina autorreproductiva que llam kinematon y en la idea de autmata celular. Definicin de autmata celular Los autmatas celulares son redes de autmatas simples conectados localmente. Cada autmata simple produce una salida a partir de varias entradas, modificando en el proceso su estado segn una funcin de transicin. Por lo general, en un autmata celular, el estado de una clula en una generacin determinada depende nica y exclusivamente de los estados de las clulas vecinas y de su propio estado en la generacin anterior. Los autmatas celulares son herramientas tiles para modelar cualquier sistema en el universo. Pueden considerarse como una buena alternativa a las ecuaciones diferenciales y han sido utilizados para modelar sistemas fsicos, como interacciones entre partculas, formacin de galaxias, cintica de sistemas moleculares y crecimiento de cristales, as como diversos sistemas biolgicos a nivel celular, multicelular y poblacional. Cuestionario: 1. 2. 3. 4. Cul la aplicacin de los Autmatas Celulares y su importancia?. Cul la relacin entre Autmatas Celulares y la Inteligencia Artificial? Cul la funcin de la Vida artificial en los Autmatas Celulares? Cul su conclusin del Work Paper sobre los Autmatas Celulares?

U N

I V E R S I D A D

D E 34

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

WORK PAPER # 6

PROGRAMA DE CONTROL DE CALIDAD

No. DE PROCEDIMIENTO : APRO 07

No. DE HOJAS : 14

ELABOR : Ing. Reynaldo Einar Zabaleta Rioja

CDIGO : CMP 417

TTULO DEL WORK PAPER : Modelos de Toma de Decisiones DPTO.: Facultad de Ciencias y Tecnologa UDABOL ORURO DESTINADO A: DOCENTES ALUMNOS X ADMINIST. OTROS

OBSERVACIONES: Carrera : Ingeniera de Sistemas, Asignatura : TEORA DE LENGUAJES Y COMPILADORES, Unidad III, Tema 7 FECHA DE DIFUSIN : Julio 2011

FECHA DE ENTREGA : Julio 2011

U N

I V E R S I D A D

D E 35

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

MODELOS DE TOMA DE DECISIONES La teora de decisiones proporciona una manera til de clasificar modelos para la toma de decisiones. Se supondr que se ha definido el problema, que se tienen todos los datos y que se han identificado los cursos de accin alternativos. La tarea es entonces seleccionar la mejor alternativa. la teora de decisiones dice que esta tarea de hacer una seleccin caer en una de las cuatro categoras generales dependiendo de la habilidad personal para predecir las consecuencias de cada alternativa. Categoras Certidumbre Riesgo Incertidumbre Conflicto Consecuencias Deterministas Probabilsticas Desconocidas Influidas por un oponente

TOMA DE DECISIONES BAJO INCERTIDUMBRE En los procesos de decisin bajo incertidumbre, el decisor conoce cules son los posibles estados de la naturaleza, aunque no dispone de informacin alguna sobre cul de ellos ocurrir. No slo es incapaz de predecir el estado real que se presentar, sino que adems no puede cuantificar de ninguna forma esta incertidumbre. En particular, esto excluye el conocimiento de informacin de tipo probabilstico sobre las posibilidades de ocurrencia de cada estado. REGLAS DE DECISIN A continuacin se describen las diferentes reglas de decisin en ambiente de incertidumbre, y que sern sucesivamente aplicadas al ejemplo de construccin del hotel. Criterio de Wald Criterio Maximax Criterio de Hurwicz Criterio de Savage Criterio de Laplace

U N

I V E R S I D A D

D E 36

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

Para trabajar con los criterios utilizaremos la siguiente matriz:

Estados de la Naturaleza e1 a1 Alternativas a2 ... am Forma general de una tabla de decisin x 11 x 21 ... x m1 e2 x 12 x 22 ... x m2 ... ... ... ... ... en x 1n x 2n ... x mn

CRITERIO DE LAPLACE Este criterio, propuesto por Laplace en 1825, est basado en el principio de razn insuficiente: como a priori no existe ninguna razn para suponer que un estado se puede presentar antes que los dems, podemos considerar que todos los estados tienen la misma probabilidad de ocurrencia, es decir, la ausencia de conocimiento sobre el estado de la naturaleza equivale a afirmar que todos los estados son equiprobables. As, para un problema de decisin con n posibles estados de la naturaleza, asignaramos probabilidad 1/n a cada uno de ellos. La regla de Laplace selecciona como alternativa ptima aquella que proporciona un mayor resultado esperado:

1 n mx _ ai x(ai , e j ) n j =1

U N

I V E R S I D A D

D E 37

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

EJEMPLO 1 Partiendo del ejemplo de construccin del hotel, la siguiente tabla muestra los resultados esperados para cada una de las alternativas. Estados de la Naturaleza Alternativas Terreno comprado A B AyB Ninguno Aeropuerto en A 13 -8 5 0 Aeropuerto en B -12 11 -1 0 Resultado esperado 0.5 1.5 2 0

En este caso, cada estado de la naturaleza tendra probabilidad ocurrencia 1/2. El resultado esperado mximo se obtiene para la tercera alternativa, por lo que la decisin ptima segn el criterio de Laplace sera comprar ambas parcelas. CRTICA La objecin que se suele hacer al criterio de Laplace es la siguiente: ante una misma realidad, pueden tenerse distintas probabilidades, segn los casos que se consideren. Por ejemplo, una partcula puede moverse o no moverse, por lo que la probabilidad de no moverse es 1/2. En cambio, tambin puede considerarse de la siguiente forma: una partcula puede moverse a la derecha, moverse a la izquierda o no moverse, por lo que la probabilidad de no moverse es 1/3. Desde un punto de vista prctico, la dificultad de aplicacin de este criterio reside en la necesidad de elaboracin de una lista exhaustiva y mutuamente excluyente de todos los posibles estados de la naturaleza. Por otra parte, al ser un criterio basado en el concepto de valor esperado, su funcionamiento debe ser correcto tras sucesivas repeticiones del proceso de toma de decisiones. Sin embargo, en aquellos casos en que la eleccin slo va a realizarse una vez, puede conducir a decisiones poco acertadas si la distribucin de resultados presenta una gran dispersin, como se muestra en la siguiente tabla: Estados de la Naturaleza Alternativas a1 a2 e1 15000 5000 e2 -5000 4000 Resultado esperado 5000 4500

Este criterio seleccionara la alternativa a 1 , que puede ser poco conveniente si la toma de decisiones se realiza una nica vez, ya que podra conducirnos a una prdida elevada
U N I V E R S I D A D D E 38 A Q U I N O B O L I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

CRITERIO DE WALD Este es el criterio ms conservador ya que est basado en lograr lo mejor de las peores condiciones posibles. esto es, si el resultado x(a i , e j ) representa prdida para el decisor, entonces, para a i la peor prdida independientemente de lo que e j pueda ser, es mx e j { x(a i , e j ) }. El criterio minimax elige entonces la accin a i asociada a :

Elegir _ ai = mn ai mx e j x( ai , e j )

En una forma similar, si x(a i , e j ) representa la ganancia, el criterio elige la accin a i asociada a :

Elegir _ ai = mxai mne j x( ai , e j )


EJEMPLO

Este criterio recibe el nombre de criterio maximin, y corresponde a un pensamiento pesimista, pues razona sobre lo peor que le puede ocurrir al decisor cuando elige una alternativa.

Partiendo del ejemplo de construccin del hotel, la siguiente tabla muestra las recompensas obtenidas junto con los niveles de seguridad de las diferentes alternativas: Estados de la Naturaleza Alternativas Terreno comprado A B AyB Ninguno Aeropuerto en A Aeropuerto en B 13 -8 5 0 - 12 11 -1 0 si -12 -8 -1 0

La alternativa ptima segn el criterio de Wald sera no comprar ninguno de los terrenos, pues proporciona el mayor de los niveles de seguridad. CRTICA En ocasiones, el criterio de Wald puede conducir a decisiones poco adecuadas. Por ejemplo, consideremos la siguiente tabla de decisin, en la que se muestran los niveles de seguridad de las diferentes alternativas.

U N

I V E R S I D A D

D E 39

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

Estados de la Naturaleza Alternativas a1 a2 e1 1000 100 e2 99 100 si 99 100

El criterio de Wald seleccionara la alternativa a 2 , aunque lo ms razonable parece ser elegir la alternativa a 1 , ya que en el caso ms favorable proporciona una recompensa mucho mayor, mientras que en el caso ms desfavorable la recompensa es similar. CRITERIO DE HURWICZ Este criterio representa un intervalo de actitudes desde la ms optimista hasta la ms pesimista. En las condiciones ms optimistas se elegira la accin que proporcione el mx a i mx e j { x(a i , e j ) }. Se supone que x(a i , e j ), representa la ganancia o beneficio. De igual manera, en las condiciones ms pesimistas, la accin elegida corresponde a mx a i mn e j { x(a i , e j ) }. El criterio de Hurwicz da un balance entre el optimismo extremo y el pesimismo extremo ponderando las dos condiciones anteriores por los pesos respectivos y (1- ), donde 0 1. Esto es, si x(a i , e j ) representa beneficio, seleccione la accin que proporcione:

mx ai mx e j x( ai , e j ) + (1 )mne j x( ai , e j )
Para el caso donde x(a i , e j ) representa un costo, el criterio selecciona la accin que proporciona:

mnai mne j x( ai , e j ) + (1 )mx e j x( ai , e j )

El parmetro se conoce como ndice de optimismo: cuando = 1, el criterio es demasiado optimista; cuando = 0, es demasiado pesimista . Un valor de entre cero y uno puede ser seleccionado dependiendo de si el decisor tiende hacia el pesimismo o al optimismo. En ausencia de una sensacin fuerte de una circunstancia u otra, un valor de = 1/2 parece ser una seleccin razonable.

U N

I V E R S I D A D

D E 40

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

EJEMPLO Partiendo del ejemplo de construccin del hotel, la siguiente tabla muestra las recompensas obtenidas junto con la media ponderada de los niveles de optimismo y pesimismo de las diferentes alternativas para un valor a = 0.4: Estados de la Naturaleza Alternativas Terreno comprado A B AyB Ninguno Aeropuerto en A 13 -8 5 0 Aeropuerto en B -12 11 -1 0

mne i -12 -8 -1 0

mxe i 13 11 5 0

S(a i ) -2 -0.4 1.4 0

La alternativa ptima segn el criterio de Hurwicz sera comprar las parcelas A y B, pues proporciona la mayor de las medias ponderadas para el valor de a seleccionado. CRITERIO DE SAVAGE En 1951 Savage argumenta que al utilizar los valores x ij para realizar la eleccin, el decisor compara el resultado de una alternativa bajo un estado de la naturaleza con todos los dems resultados, independientemente del estado de la naturaleza bajo el que ocurran. Sin embargo, el estado de la naturaleza no es controlable por el decisor, por lo que el resultado de una alternativa slo debera ser comparado con los resultados de las dems alternativas bajo el mismo estado de la naturaleza. Con este propsito Savage define el concepto de prdida relativa o prdida de oportunidad r ij asociada a un resultado x ij como la diferencia entre el resultado de la mejor alternativa dado que e j es el verdadero estado de la naturaleza y el resultado de la alternativa a i bajo el estado e j :

As, si el verdadero estado en que se presenta la naturaleza es e j y el decisor elige la alternativa a i que proporciona el mximo resultado x ij , entonces no ha dejado de ganar nada, pero si elige otra alternativa cualquiera a r , entonces obtendra como ganancia x rj y dejara de ganar x ij -x rj . Savage propone seleccionar la alternativa que proporcione la menor de las mayores prdidas relativas, es decir, si se define r i como la mayor prdida que puede obtenerse al seleccionar la alternativa a i ,

el criterio de Savage resulta ser el siguiente:

U N

I V E R S I D A D

D E 41

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

Conviene destacar que, como paso previo a la aplicacin de este criterio, se debe calcular la matriz de prdidas relativas, formada por los elementos r ij . Cada columna de esta matriz se obtiene calculando la diferencia entre el valor mximo de esa columna y cada uno de los valores que aparecen en ella. Observe que si x(a i , e j ) es una funcin de beneficio o de prdida, la matriz de prdidas relativas, formada por los elementos r ij representa en ambos casos prdidas. Por consiguiente, nicamente el criterio minimax ( y no el maximin) puede ser aplicado a la matriz de deploracin r. EJEMPLO Partiendo del ejemplo de construccin del hotel, la siguiente tabla muestra la matriz de prdidas relativas y el mnimo de stas para cada una de las alternativas. Estados de la Naturaleza Alternativas Terreno comprado A B AyB Ninguno Aeropuerto en A 0 21 8 13 Aeropuerto en B 23 0 12 11 ri 23 21 12 13

El mayor resultado situado en la columna 1 de la tabla de decisin original es 13; al restar a esta cantidad cada uno de los valores de esa columna se obtienen las prdidas relativas bajo el estado de la naturaleza Aeropuerto en A. De la misma forma, el mximo de la columna 2 en la tabla original es 11; restando a esta cantidad cada uno de los valores de esa columna se obtienen los elementos r ij correspondientes al estado de la naturaleza Aeropuerto en B. Como puede observarse, el valor r i menor se obtiene para la tercera alternativa, por lo que la decisin ptima segn el criterio de Savage sera comprar ambas parcelas.

U N

I V E R S I D A D

D E 42

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

CRTICA El criterio de Savage puede dar lugar en ocasiones a decisiones poco razonables. Para comprobarlo, consideremos la siguiente tabla de resultados: Estados de la Naturaleza Alternativas a1 a2 e1 9 4 e2 2 6

La tabla de prdidas relativas correspondiente a esta tabla de resultados es la siguiente: Estados de la Naturaleza Alternativas a1 a2 e1 0 5 e2 4 0 ri 4 5

La alternativa ptima es a 1 . Supongamos ahora que se aade una alternativa, dando lugar a la siguiente tabla de resultados: Estados de la Naturaleza Alternativas a1 a2 a3 e1 9 4 3 e2 2 6 9

U N

I V E R S I D A D

D E 43

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

La nueva tabla de prdidas relativas sera: Estados de la Naturaleza Alternativas a1 a2 a3 e1 0 5 6 e2 7 3 0 ri 7 5 6

El criterio de Savage selecciona ahora como alternativa ptima a 2 , cuando antes seleccion a 1 . Este cambio de alternativa resulta un poco paradjico: supongamos que a una persona se le da a elegir entre peras y manzanas, y prefiere peras. Si posteriormente se la da a elegir entre peras, manzanas y naranjas, esto equivaldra a decir que ahora prefiere manzanas. EJERCICIOS CRITERIOS DE DECISION EN INCERTIDUMBRE 1. Una instalacin recreativa debe decidir acerca del nivel de abastecimiento que debe almacenar para satisfacer las necesidades de sus clientes durante uno de los das de fiesta. El nmero exacto de clientes no se conoce, pero se espera que est en una de cuatro categoras: 200,250, 300 o 350 clientes. Se sugieren, por consiguiente, cuatro niveles de abastecimiento, siendo el nivel i el ideal (desde el punto de vita de costos) si el nmero de clientes cae en la categora i. La desviacin respecto de niveles ideales resulta en costos adicionales, ya sea porque se tenga un abastecimiento extra sin necesidad o porque la demanda no puede satisfacerse. La tabla que sigue proporciona estos costos en miles de unidades monetarias. e1(200) e2(250) e3(300) e4(350) a1(200) Nivel de a2(250) abastecimiento a3(300) a4(350 5 8 21 30 10 7 18 22 18 8 12 19 25 23 21 15

Determine cual es el nivel de aprovisionamiento ptimo, utilizando los criterios explicados.

U N

I V E R S I D A D

D E 44

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

RESULTADOS A) LAPLACE: El principio de Laplace establece que e1, e2, e3, e4 tienen la misma probabilidad de suceder. Por consiguiente las probabilidades asociadas son P(x)=1/4 y los costos esperados para las acciones son: E(a1) = (1/4)(5+10+18+25) = 14.5 E(a2) = (1/4)(8+7+8+23) = 11.5 E(a3) = (1/4)(21+18+12+21) = 18.0 E(a4) = (1/4)(30+22+19+15) = 21.5 Por lo tanto, el mejor nivel de inventario de acuerdo con el criterio de Laplace est especificado por a2. B) WALD Ya que x(a i , e j ) representa costo, el criterio minimax es aplicable. Los clculos se resumen en la matriz que sigue. La estrategia minimax es a3:

e1(200) e2(250) e3(300) e4(350) a1(200) Nivel de abastecimiento a2(250) a3(300) a4(350 C) HURWICZ Supongamos =1/2. Los clculos necesarios se muestran enseguida. La solucin ptima est dada por a1 a2. 5 8 21 30 10 7 18 22 18 8 12 19 25 23 21 15 25 23 21 (valor minimax) 30

a1 a2 a3 a4

5 7 12 15

25 23 21 30

15 (mn) 15 (mn) 16.5 22.5

U N

I V E R S I D A D

D E 45

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

D) SAVAGE Se obtiene primero la matriz rij restando 5, 7, 8 y 15 de las columnas 1, 2, 3 y 4 respectivamente.

e1(200) e2(250) e3(300) e4(350) a1(200) Nivel de abastecimiento a2(250) a3(300) a4(350 5 8 21 30 10 7 18 22 18 8 12 19 25 23 21 15 10 8 (valor minimax) 16 25

2. Considere la siguiente matriz de pagos (beneficios): e1 a1 15 a2 a3 a4 3 1 7 e2 10 14 5 19 e3 0 8 14 10 e4 -6 9 20 2 e5 17 2 -3 0

No se conocen probabilidades para la ocurrencia de los estados de la naturaleza. Compare las soluciones obtenidas con cada uno de los criterios aprendidos. 3. Considere las siguientes tablas de retribuciones en la que cada dato es un rendimiento neto en dlares. Suponga que es una decisin en la que no se tiene conocimiento del estado de la naturaleza. Determine la mejor decisin utilizando los criterios aprendidos. Tabla a) Estados de la naturaleza Decisin 1 2 3 4 1 2 3 4 12 18 28 33

35 22 25 27 25 20 22 25 25 20 25 28

U N

I V E R S I D A D

D E 46

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

Tabla b) Estados de la naturaleza Decisin 1 2 3 TOMA DE DECISIONES BAJO RIESGO Esta categora incluye aquellas decisiones para las que las consecuencias de una accin dada dependen de algn evento probabilista. EJEMPLO Suponga que tiene un pequeo local de ventas de pinos para Navidad. La primera tarea es decidir cuntos pinos ordenar para la siguiente temporada. Supngase que se debe pagar $3.5 por cada rbol, se pueden ordenar solo lotes de 100 y se planea venderlos a $8 cada uno. Por supuesto, si no se venden, no tienen valor de recuperacin. Se estudian los registros de ventas pasadas en la iglesia y se analiza el crecimiento potencial de las ventas con otros vendedores, llegando a las siguientes estimaciones para la siguiente temporada: Venta de pinos 100 200 300 Probabilidad 0.3 0.3 0.4 1 3 7 5 2 8 4 6 3 5 6 9

Con estos datos se puede calcular la ganancia para cada combinacin de cantidad ordenada y ventas eventuales. Por ejemplo, si se ordenan 300 pinos y se venden slo 200, la utilidad neta ser de $4.5 por cada rbol vendido menos una prdida de $3.5 por los rboles no vendidos, es decir: 200($8-$3.5)-100($3.5)=$900-$350=$550 Si se hace esto para cada una de las combinaciones y se obtienen los resultados mostrados en la tabla de decisiones siguiente o tambin llamada matriz de pagos:

U N

I V E R S I D A D

D E 47

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

Eventos (demanda de rboles) 100 (0.3) Alternativas de decisin 100 200 300 $450 $100 $-250 200 (0.3) $450 $900 $550 300 (0.4) $450 $900 $1.400

El resultado ms importante de la teora de decisiones bajo riesgo es que debe seleccionarse la alternativa que tenga el mayor VALOR ESPERADO. Existen muchas decisiones administrativas que pueden catalogarse como toma de decisiones bajo riesgo. Algunas de ellas son: Cuestionario: 1. 2. 3. 4. 5. Deber introducirse un nuevo producto en particular? Deber ofrecerse ms para obtener un contrato? Deber construirse una nueva planta o ampliarse la que se tiene? Cuntos pasteles deber producir una pastelera para la venta diaria?. Deber una compaa petrolera realizar pruebas ssmicas costosas antes de hacer una nueva perforacin? 6. Deber iniciarse un nuevo programa costoso de propaganda?

U N

I V E R S I D A D

D E 48

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

PROGRAMA DE CALIDAD UDABOL DIF 001


INDUCCIN MATEMATICA Recuerde: Es necesario leer muy bien el texto para poder interpretarlo correctamente. Recuerde: Es de mucha importancia que el contenido del presente Dif tenga relacin con lo que se avanza en clase. G. Peano 188 ( 1932) propuso cinco propiedades fundamentales que caracterizan a los nmeros naturales, Axiomas de Peano. Una de ellas conocida como el Principo de Induccin Matemtica es actualmente una herramienta de uso prctico y terico principalmente para matemticos y personas que trabajan en Ciencias Computacionales. El principio lo enunciaremos para los enteros positivos N+, pero bien se puede ampliar a los nmeros naturales o a cualquier subconjunto de los enteros mayores o iguales a un entero fijo. Recuerde: Principio de Induccin Matemtica. Si S en un conjunto de enteros positivos tal que (B) 1 e S (I) k e S (k+1) e S entonces S contiene todos los enteros positivos. En en principio de Induccin Matemtica son muy importantes los nombres asociados y en la literatura tcnica, como es costumbre, no se presenta con detalle los pasos, por lo que resulta indispensable conocer la nomenclatura. Recuerde: Nomenclatura de Induccin Matemtica. (B) se llama Caso Base o caso inicial (I) se llama Paso de Induccin k e S se llama Hiptesis de Induccin Y como ya se mencion todo junto se llama Principio de Induccin Matemtica. Es importante que el alumno comprenda y memorice cada uno de estos conceptos y su participacin directa en la propiedad. Recuerde: Escencialmente lo que enuncia el principio de induccin matemtica es, si logramos establecer que el primer entero positivo cumple, una propiedad, y si partiendo de que un entero arbitrario tambin la cumple, se puede comprobar que el entero siguiente tambin tiene la propiedad entonces concluimos que todos los enteros positivos tienen la propiedad indicada. Por lo que otra forma de enunciar el Principio de Induccin Matemtica es: Si F(n) es una proposicin abierta que involucra enteros y se tiene (B) F(1) es verdadera; o sea, se que cumple para n=1 (I) F(K) F(k+1); Si se cumple para n = k entonces tambin se cumple para n=k+1. Recuerde: Concluimos que la proposicin es verdadera para todos los enteros positivos. El Principio de Induccin Matemtica se utiliza para demostrar propiedades, formulas, validarlas y probar que son verdaderas, usualmente en el conjunto de los nmeros enteros positivos. Muchas propiedades que incluyen la definicin de de factorial se pueden probar por Induccin Matemtica, como el Teorema del Binomio de Newton, el Tringulo de Pascal y algunas propiedades de combinatoria que involucran combinaciones y permutaciones. Otra forma de utilizarla es para proporcionar definiciones y formalizar conceptos.

U N

I V E R S I D A D

D E 49

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

1. Demostrar por Induccin Matematica que: F(n): {$ 1 + 2 + 3 + ... + n = frac{n(n+1)}2$} Consideremos el conjunto S de los enteros para los cuales la propiedad es cierta. *[B] Si n=1; tenemos: {$1 = frac{1(1+1)}2$} {$1 = frac{2}2$} {$1 = \frac{2}2$} {$ 1 = 1$} entonces 1 est en S o sea que se cumple el caso base. [M] Debemos de llegar a que para n=k+1 tambin se cumple: {$1 + 2 + 3 + + k+1 = frac(k+1)(k+2)2$} *[I] Induccin **[H] Suponemos que cumple para n=k; {$ 1 + 2 + 3 + + k = frac{k(k+1)}2$} **[H M] Sumamos (k+1) de los dos lados de la igualdad {$ 1 + 2 + 3 + . . . + k + (k+1) = frac{k(k+1)}2 + (k+1) $} {$ = frac{k(k+1) + 2(k+1)} 2 $} {$ = frac{k^2+k+2k+2}2$} {$ = frac{k^2+3k+2}2$} {$ = frac(k+1)(k+2) 2 $} Por lo tanto, podemos concluir que la formula (1) es valida para todos los enteros positivos Para realizar el Paso de Induccin se debe de partir del caso n=k y llegar mediante pasos vlidos al caso n=k+1. En el ejemplo anterior para llegar a n=k+1 partiendo de n=k al lado izquierdo slo le faltaba k+1 por lo que la estrategia fue sumar k+1 en ambos lados de la igualdad.

U N

I V E R S I D A D

D E 50

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

PROGRAMA DE CALIDAD UDABOL DIF 002


ESTUDIO DE CASO GENERACIN DE ANALIZADORES LEXICOGRFICOS Un analizador lexicogrfico para un lenguaje L analiza la forma de los componentes bsicos de un programa escrito en L; esas formas pueden describirse (en la mayora de los casos) mediante expresiones regulares. Por ello, la forma de todas las piezas sintcticas existentes en la definicin lexicogrfica del lenguaje puede constituir la secuencia de patrones de una especificacin Lex; se incluye un patrn por cada pieza sintctica que deba reconocer el analizador lexicogrfico. La accin correspondiente al acoplamiento de un patrn a una cierta secuencia de caracteres (en este caso se tratar de un lexema) ser la que corresponde a un analizador lexicogrfico: devolver a la rutina llamante una representacin de la pieza sintctica encontrada en el texto de entrada. As pues, la funcin yylex generada a partir de una especificacin debe de realizar la tarea de un analizador lexicogrfico; ello implica lo siguiente: Cada vez que se llame a yylex deber avanzar en la entrada hasta encontrar la siguiente pieza sintctica (esto es, en cada llamada a yylex se leer una pequea porcin del texto que se analiza), Las llamadas a yylex se realizan desde el analizador sintctico.

Las operaciones que se ejecutan al producirse una llamada a yylex son: seleccionar el patrn que se acopla a la siguiente pieza sintctica, comunicar la representacin de la pieza sintctica cuyo lexema se ha acoplado y devolver el control al analizador sintctico. Especificacin lexicogrfica De los comentarios anteriores se deduce que la forma de una especificacin Lex, cuando se quiera generar un analizador lexicogrfico para un lenguaje L, es la representada en este esquema:

U N

I V E R S I D A D

D E 51

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

%% P1 P2 P3

Pn-1 Pn

{ return vn-1 } { return vn }

%%

La relacin de patrones P i est formada por las expresiones regulares que definen todas y cada una de las piezas sintcticas del lenguaje L; V i es el valor representativo de la pieza sintctica P i (el valor que se comunica al analizador sintctico); ese valor ha de estar asociado de manera biunvoca a la pieza sintctica. Las cajas dibujadas en el esquema en la parte final de la seccin de reglas representan la necesidad de completar la especificacin, tal y como se comenta ms adelante. Definicin de los valores asociados a las piezas La funcin generada yylex es de tipo entero: devuelve un valor de tipo entero; por ello, los valores asociados a las piezas sintcticas han de ser nmeros enteros. En principio, se puede elegir cualquier valor para la asociacin (hay alguna excepcin que se comenta despus). Es habitual, para favorecer la legibilidad, que se den nombres a los valores numricos asociados a las piezas sintcticas; estos nombres se asignan mediante clusulas #define incorporadas en la seccin de definiciones. Por ahora se considera la asignacin de nombres para todas las piezas sintcticas; no obstante, conviene resaltar aqu que posteriormente se expondr otra manera distinta de definir la comunicacin entre los analizadores lexicogrfico y sintctico (esta otra manera resultar ser ms sencilla, ms fiable y la que realmente se emplea en la prctica habitual; pero no se introduce ahora por ser menos didctica). Especificacin completa Ya se ha comentado que, en general, conviene que las especificaciones Lex sean completas; en el caso de la especificacin de un analizador lexicogrfico, esa conveniencia se transforma en necesidad. En el analizador lexicogrfico se ha de prever la posible presencia de cualquier carcter (representable) en el fichero de entrada,

U N

I V E R S I D A D

D E 52

Q U

I N O

O L

I V I A

Todas las Piezas sintcticas

{ return v1 } { return v2 } { return v3 }

FACULTAD DE CIENCIA Y TECNOLOGIA

aunque sean caracteres que no pertenezcan al alfabeto del lenguaje analizado. Ha de tenerse especial cuidado en no olvidar en la especificacin los patrones que se corresponden con los caracteres: espacio en blanco tabulador \t final de lnea \n que tan importante papel tienen en el anlisis lexicogrfico. Para la mayora de los lenguajes de programacin (as ocurre en los que se codifican con formato libre), cuando se analiza lexicogrficamente un programa, hay que saltar los espacios en blanco (espacios propiamente dichos, tabuladores, caracteres indicativos del final de una lnea); en consecuencia, a los patrones que se corresponden con esos caracteres que han de sobrepasarse se les debe de asociar la accin nula (la accin que consiste en no hacer nada) y cuando se acopla uno de esos patrones, no se devuelve el control al analizador sintctico. Ntese que si no devuelve el control, la funcin yylex contina avanzando en la entrada, pasa a acoplar nuevos patrones: de esta manera se consigue saltar los caracteres que no constituyen piezas sintcticas. Como ejemplo de aplicacin de estas consideraciones puede repasarse el Ejemplo 1 expuesto en el captulo inicial sin explicar los detalles; a continuacin se da otro ejemplo. Ejemplo 3 Se considera la especificacin lxico-sintctica de una sencilla declaracin de tipos de datos (al estilo de las declaraciones de Pascal); la gramtica est escrita en notacin BNF Ampliada; los corchetes delimitados mediante apstrofos son smbolos terminales (no metacaracteres) y las palabras reservadas estn escritas en maysculas. <Tipo> ::= <TipoSimple> | ^ <Id> | TABLA [ <TipoSimple> ] <Tipo> <TipoSimple> ::= ENTEROS | CARACTERES | <Num> .. <Num> <Id> ::= <Letra> { <Letra> | <Digito> } <Letra> ::= a | b | | z | A | B | | Z <Digito> ::= 0 | 1 | | 9 La especificacin lexicogrfica de este lenguaje, escrita en Lex, es como sigue: %{ #define prEnteros 1 #define prCaracteres 2 #define prTabla 3 #define prDe 4 #define pId 5 #define pNum 6 #define pPuntero 7 #define pAbrir 8 #define pCerrar 9 #define pSeparador 10 #define Error 999 %}

U N

I V E R S I D A D

D E 53

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

letra [a-zA-Z] digito [0-9] %% ENTEROS { return prEnteros; } CARACTERES { return prCaracteres; } TABLA { return prTabla; } DE { return prDe; } {letra}({letra}|{digito})* { return pId; } {digito}+ { return pNum; } "^" { return pPuntero; } "[" { return pAbrir; } ] { return pCerrar; } ".." { return pSeparador; } [\ \t\n] { ; } . { return Error; } En el caso del patrn [\ \t\n] no se devuelve el control, la accin asociada es no hacer nada; por ello, una vez acoplado ese patrn, desde yylex se intentar acoplar otro patrn, es decir, se avanzar en la entrada, habiendo saltado el espacio en blanco, o el tabulador o el final de lnea, tal y como debe de hacerse en un anlisis lexicogrfico. Ntese que el patrn [\ \t\n]+ tambin es correcto: en este caso se saltaran varios espacios en blanco (o tabuladores o finales de lnea) consecutivos mediante una nica llamada a la funcin yylex. El ltimo patrn (el meta carcter universal punto) representa los caracteres que no pertenecen al alfabeto del lenguaje especificado y, por ello, corresponde devolver una indicacin de error. Comunicacin del lexema de una pieza sintctica Hay piezas sintcticas que para quedar definidas por completo requieren la indicacin de cules son sus atributos (lexicogrficos). En todo caso, los atributos pueden deducirse del lexema de la pieza. El programa generado por Lex deja anotadas en las variables globales yytext e yyleng, respectivamente, la secuencia de caracteres acoplada (en el caso de un analizador lexicogrfico se tratar del lexema de la pieza sintctica reconocida) y su longitud. Dado que estas variables son globales, sus contenidos podrn consultarse desde el analizador sintctico. As pues, a modo de recapitulacin de lo hasta ahora descrito, puede decirse que la comunicacin entre los analizadores lexicogrfico y sintctico se realiza de la siguiente manera: el analizador lexicogrfico generado por Lex es la funcin yylex, el analizador sintctico produce sucesivas llamadas a yylex, la funcin yylex devuelve un valor numrico representativo de la pieza sintctica detectada en el texto de entrada, en las variables globales yytext e yyleng se pueden consultar (si fuera preciso desde el analizador sintctico) el lexema de la pieza y la longitud de ese lexema (secuencia de caracteres acoplada y sobrepasada).

U N

I V E R S I D A D

D E 54

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

Errores lexicogrficos En una especificacin Lex se pueden aadir tratamientos relativos a los distintos errores lexicogrficos detectables durante el anlisis; para ello, se incluye cdigo escrito en C que realiza las tareas de emisin de los mensajes apropiados (y de la hipottica recuperacin de los errores encontrados). Pero no suele hacerse as. La prctica habitual es que cuando se encuentra una situacin anmala -en concreto cuando se encuentra un carcter que no pertenece al alfabeto del lenguaje analizado- se comunica al analizador sintctico (es decir, se devuelve a la funcin llamante) en valor especial representativo de la presencia de un error. Y ser desde en analizador sintctico desde donde se tomar en consideracin el error encontrado. En cierta manera podra decirse que, por facilidad, los errores lexicogrficos se trasladan al analizador sintctico, esto es, se transforman en sintcticos. Final de fichero Cuando el analizador lexicogrfico (la funcin yylex), en el intento de encontrar la siguiente pieza sintctica en el fichero de entrada (en el intento de acoplar un nuevo patrn) se encuentra con que eso es imposible a causa de que ya se ha llegado al final del fichero, devuelve un valor representativo de esta situacin: el valor cero. Por esta razn, el nmero cero no puede emplearse para representar una pieza sintctica, ni para indicar la presencia de un error. Recuerde: Los DIFs deben ser ledos con mucho detenimiento para entrar en la discusin. Es recomendable que la discusin sobre este DIFs de Teora de Lenguajes y Compiladores referente al anlisis lxico y aplicable a diversas reas a travs del estudio del Lenguaje y las Gramticas.

U N

I V E R S I D A D

D E 55

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

PROGRAMA DE CALIDAD UDABOL DIF 003


ESTUDIO DE CASO EL JUEGO DE LA VIDA DE CONWAY Uno de los autmatas celulares ms conocidos es el que John Horton Conway llam el juego VIDA (Life Game). El juego VIDA es un autmata celular bidimensional en cuadrcula con dos estados por celda. Cada celda o clula puede estar viva o muerta y en cada generacin se aplica un algoritmo que sigue estas tres reglas: Cada clula viva con dos o tres clulas vecinas vivas sobrevive a la siguiente generacin. Cada clula viva con ninguna, una, o ms de tres clulas vivas a su alrededor pasa a estar muerta. Cada clula muerta con tres clulas vecinas vivas resucita en la siguiente generacin.

El juego VIDA presenta configuraciones finales estables, peridicas o no. Langton defiende que presenta propiedades de catlisis (acciones de construccin arbitrarias), de transporte (borrando estructuras y reconstruyndolas en otro lugar del espacio celular), estructurales (como elementos estticos, barreras, etc.), de regulacin, defensa e incluso informativas, y que por tanto estos autmatas virtuales tienen capacidades computacionales suficientes para cumplir los papeles funcionales que juegan las macromolculas en la lgica molecular de la vida. En definitiva, que funcionalmente, los autmatas son equiparables a los componentes bsicos de la vida en nuestro planeta. El programa "Clulas" de Peter Donnelly El programa "clulas" es en esencia una curiosidad cientfica propuesta por primera vez por Peter Donnelly del University College de Swansea, Gales, y Dominic Welsh, de la universidad de Oxford. El programa fue descrito en detalle por A. K. Dewdney en su artculo "Cinco piezas sencillas" para Scientific American. En este artculo se bautiza al programa con el nombre de "votacin", ya que segn el autor pretende simular una votacin poltica algo particular. Citando textualmente: "Las casillas de un cuadriculado rectangular estn coloreadas de blanco o negro, aleatoriamente. Se supone que cada color refleja la opinin poltica de una persona residente en esa casilla. Un color podra representar 'demcrata' y el otro 'republicano'. A cada seal de reloj, se selecciona al azar uno de los votantes y su opinin poltica se somete a cambio: se selecciona al azar uno de sus ocho vecinos y la conviccin poltica del elector se transforma en la de este vecino, independientemente de cul fuera su opinin anterior.

U N

I V E R S I D A D

D E 56

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

Al hacer funcionar este modelo, confesadamente simplista, del proceso poltico, ocurren cosas llamativas y extraas. Primero se desarrollan grandes bloques de voto homogneo. Estos bloques son zonas geogrficas donde todo el mundo es de la misma opinin poltica. Seguidamente tales bloques van migrando en torno al cuadriculado y, durante cierto tiempo luchan, como buscando su predominancia. Finalmente, el sistema bipartidista se viene abajo, por acabar todo el mundo votando de igual manera". Adems de esta interpretacin de la ejecucin del programa, hay otra ms aproximada, y mucho ms sugerente para los interesados en la vida artificial y temas afines. Podemos llegar a apreciar comportamientos "cuasibiolgicos" si observamos la evolucin de los votantes como un ejemplo de la coexistencia-competitividad de dos especies similares en un mismo medio con abundancia de alimento, como podra ser el caso de dos especies de bacterias en un fluido rico en nutrientes. La interpretacin es la siguiente: Cada posicin de la matriz representa una clula de una especie determinada. En cada ciclo se elige aleatoriamente una de las clulas de la matriz. Esa clula muere, dejando un espacio libre. Ese espacio es ocupado inmediatamente de la siguiente forma: Se elige a una de las ocho clulas contiguas a ese espacio vaco para reproducirse, y el lugar dejado por la clula muerta lo ocupa una nueva clula, hija de la escogida, y por lo tanto de su misma especie. A partir de este comportamiento tan simple podremos observar como el caos inicial, en el que las clulas de ambas especies se hallan mezcladas, da paso a una forma de organizacin en la que las clulas de una misma especie forman amplios grupos, que se desplazan, se estiran y se contraen mientras tratan de sobrevivir. Si se deja el programa funcionando durante un tiempo una de las especies pasa a ser dominante, pudiendo llegar a hacer desaparecer a la otra especie. Finalmente, y como curiosidad, podramos pensar en realizar en cada ciclo la reproduccin de las clulas de un modo algo ms inusual. Qu ocurrira si al reproducirse una clula para ocupar el espacio vaco dejado por otra clula muerta, tuviera una hija de la otra especie, y no de la suya propia? Seguira producindose la homogeneidad, o el caos inicial se extendera hasta el infinito? A partir del cdigo fuente del programa, y realizando una pequea modificacin se puede resolver esta trascendental duda. Hormigas y Plantas Hormigas y Plantas es un programa que requiere de una cierta justificacin para considerarse como autmata. Para ello se distinguirn varios tipos de autmatas en funcin de su objetivo. Esta discusin contina en la seccin Discretizacin del tiempo en los autmatas del documento "Autmatas como analogas de nuestro Universo"

U N

I V E R S I D A D

D E 57

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

Tipos de autmatas Inspirados en los primeros autmatas (como el juego de la vida de Conway), en los ltimos aos han surgido multitud de modelos, por lo general implementados en programas software, que intentan o bien resolver un determinado tipo de problemas, o bien representar lo ms fielmente algn aspecto concreto de nuestro universo real o de cierto universo imaginario. En cuanto a los autmatas que tratan de resolver un problema determinado, probablemente los ms numerosos sean los compiladores, analizadores lxicos, sintcticos o semnticos, en definitiva, traductores de algn tipo. Estos autmatas son capaces de leer una secuencia de smbolos escrita de acuerdo a una norma o gramtica, generando como salida otra secuencia ajustada a otra gramtica diferente. La entrada puede ser un texto en castellano, un programa escrito en lenguaje C o un fichero de datos con una determinada estructura (por ejemplo, cierta cabecera, cuerpo y pie). La salida correspondiente podra ser entonces el texto en holands, el programa de ordenador en lenguaje Lisp u otro fichero de datos con una composicin diferente. Otro tipo de autmatas que estn siendo muy utilizados son las Redes Neuronales Artificiales, sobre todo en aplicaciones de clasificacin (reconocimiento) y prediccin. Dentro del segundo grupo de autmatas, ms orientados hacia la representacin y la simulacin que hacia la resolucin, hay un gran subgrupo de autmatas que pretenden nada menos que la simulacin de los procesos de la vida. Entre ellos se encuentra el programa "Hormigas y Plantas". Hormigas y Plantas como autmata En el programa "Hormigas y Plantas", cada una de las celdas de la rejilla en 2 dimensiones es un autmata simple con los siguientes estados posibles: Vaco Ocupado por una hormiga Ocupado por una planta Ocupado por un obstculo Cada celda cambia de estado en funcin del estado de las celdas vecinas. Por ejemplo, una celda en estado "planta" pasa a estado "vaco" si hay una hormiga prxima a la planta: la hormiga se come la planta. Otros cambios de estado estn supeditados adems al resultado de una funcin pseudoaleatoria uniforme, y se producen, si se cumplen las otras condiciones, segn una cierta probabilidad. Por ejemplo, una celda en estado "vaco" pasa a estado "hormiga" slo si hay una hormiga prxima a la planta y adems con una cierta probabilidad (solo si la hormiga "decide" tomar esa direccin). El estado de cada celda puede estar definido por distintas variables: las hormigas, as como las plantas, poseen una cierta cantidad de energa. Pero adems, las hormigas poseen una inercia en cuanto a la direccin del movimiento, que provoca una tendencia a moverse en la misma direccin, y un "tipo", ya que hay hormigas "rojas", "rosas", "naranjas", "amarillas" y "verdes" que corresponden con distintas probabilidades de moverse, regar, pelearse o reproducirse. En este autmata, los cambios de estado estn dirigidos nicamente por las "hormigas", de forma que la "ejecucin" de una hormiga provoca un cambio de estado en s misma y en otras posibles celdas de tipo "planta". Este ltimo punto lleva a la posibilidad de contemplar el programa desde otro punto de vista: como un conjunto de autmatas simples mviles cuyo estado se define, entre otros, por su posicin en los ejes X e Y. Es decir, en vez de ver una rejilla cuyas celdas cambian de estado, vemos un conjunto de hormigas que se mueven por unos ejes cartesianos. Efectivamente, el autmata no se ha programado como un conjunto de celdas con
U N I V E R S I D A D D E 58 A Q U I N O B O L I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

distintas propiedades, sino como varios conjuntos (o varios autmatas superpuestos): un conjunto de hormigas, otro de plantas y otro de obstculos, controlando que cualquiera de ellos no exista en la misma posicin que otro. Recuerde: Los DIFs deben ser ledos con mucho detenimiento para entrar en la discusin. Es recomendable que la discusin sobre este DIFs de Teora de Lenguajes y Compiladores referente al Juego de Vida de Conway y aplicable a diversas reas a travs del estudio de los Autmatas finitos.

U N

I V E R S I D A D

D E 59

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

PROGRAMA DE CALIDAD UDABOL DIF 004


ESTUDIO DE CASO APLICACIONES A LENGUAJES DISEO DE LENGUAJES DE PROGRAMACIN Se puede definir un lenguaje de programacin describiendo el aspecto de sus programas que es la sintaxis del Lenguaje y el significado de sus programas que es la semntica del lenguaje. Para especificar la sintaxis de un lenguaje se utiliza una gramtica que describa de forma natural la estructura jerrquica del lenguaje de programacin. Dicha gramtica es la gramtica libre de contexto. Por ejemplo para expresiones formadas por dgitos y signos ms (+) menos (-), como los casos 9-5+6, 8-3 y 2. Cmo un signo + - debe aparecer entre dos dgitos dichas expresiones son listas de dgitos separados por signos ms o menos. La siguiente gramtica describe la sintaxis de esas expresiones. listalista + dgito listalista - dgito listadgito dgito 0 |1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Las tres primeras producciones con no terminal lista pueden agruparse de la siguiente forma equivalente: listalista + dgito | lista - dgito | dgito Los componentes lxicos de la gramtica son los smbolos terminales +, -, 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9. Los no terminales son lista y dgito. Una cadena de componentes lxicos es una secuencia de cero o ms componentes lxicos. La cadena que contiene cero componentes lxicos es la cadena vaca ( ). De una gramtica libre de contexto se derivan cadenas, empezando con el smbolo inicial y reemplazando repetidamente un no terminal del lado derecho de una produccin para ese no terminal. Las cadenas de componentes lxicos derivadas del smbolo inicial forman el lenguaje que define la gramtica. Se debe tener cuidado de que la gramtica no sea ambigua, es decir, que genere cadenas de componentes lxicos que tengan ms de un rbol de anlisis sintctico ya que suelen tener ms de un significado por ejemplo, si la anterior gramtica se hubiera diseado de la siguiente forma: cadenacadena + cadena | cadena - cadena | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
U N I V E R S I D A D D E 60 A Q U I N O B O L I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

la expresin 9-5+2 tendra ms de un rbol de anlisis sintctico, como se observa en la figura 1.

cadena

cadena

cadena

cadena

cadena

cadena

cadena

cadena

F Figura 1. Dos rboles de anlisis sintctico para 9-5+2. Los dos rboles de 9-5+2 corresponden a dos formas de agrupamiento entre parntesis dando las siguientes expresiones como resultado: (9-5)+2 y 9-(5+2). Esta segunda forma de agrupamiento entre parntesis da a la expresin el valor 2, en lugar del valor 6, cambiando la semntica del lenguaje. La primera gramtica definida no permite esta ambigedad, como se ilustra en la figura 2.

U N

I V E R S I D A D

D E 61

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

lista

lista

dgito

lista

9 5

Figura 2. rbol de anlisis sintctico para 9-5+2 Segn la primera gramtica. Se puede ampliar la primera gramtica para expresiones aritmticas de la forma postfija, como se muestra en la figura 6.3. Por ejemplo, la notacin postfija de (9-5)+2 es 95-2+ y la notacin postfija de 9-(5+2) es 952+-. exprexpr + trmino exprexpr - trmino exprtrmino trmino 0 trmino 1 ... trmino 9 {print (9)} {print (0)} {print (1)} {print (+)} {print (-)}

Figura 3. Acciones que traducen expresiones a la notacin postfija.

U N

I V E R S I D A D

D E 62

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

Lo anterior es un esquema de traduccin que es una gramtica libre de contexto en la que se encuentran intercalados, en los lados derechos de las producciones fragmentos de un programa llamados acciones semnticas. Un esquema de traduccin es como una definicin dirigida por la sintaxis, con la excepcin de que el orden de evaluacin de las reglas semnticas se muestra explcitamente. La posicin en que se ejecuta alguna accin se da entre llaves y se escribe en el lado derecho de una produccin.Cuando se dibuja un rbol de anlisis sintctico de un esquema de traduccin, se indica una accin construyendo un hijo adicional, conectando al nodo para su produccin por una lnea de punto. El nodo para una accin semntica no tiene hijos de modo que la accin se realiza cuando se ve por primera vez ese nodo, observe la figura 4.
expr

expr

trmino

{print (+)}

expr

trmino

{print (-)}

{print (2)}

trmino

{print (5)}

{print (9)}

Figura 4. Las acciones se efectan de izquierda a derecha y traducen 9-5+2 a 95-2+. Las acciones semnticas en los esquemas de traduccin escribirn la salida de una traduccin en un archivo, una cadena o un carcter a la vez. Por ejemplo, se traduce 9-5+2 a 95-2+ imprimiendo cada carcter de 9-5+2 justo una vez, sin usar ningn almacenamiento para la traduccin de subexpresiones.Las sintaxis mencionadas hasta ahora tienen la propiedad de que la cadena que representa la traduccin del no terminal del lado izquierdo de cada produccin, es la concatenacin de las traducciones de los no terminales de la derecha, en igual orden que en la produccin, con algunas cadenas adicionales (tal vez ninguna) intercaladas. Recuerde: Los DIFs deben ser ledos con mucho detenimiento para entrar en la discusin. Es recomendable que la discusin sobre este DIFs de Teora de Lenguajes y Compiladores referente al diseo de los Lenguajes de Programacin y aplicable a diversas reas a travs del estudio del Lenguaje y las Gramticas.

U N

I V E R S I D A D

D E 63

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

PROGRAMA DE CALIDAD UDABOL DIF 005


ESTUDIO DE CASO IMPLEMENTACIN DE UN AUTMATA FINITO Un reconocedor de un lenguaje es un programa que toma como entrada una cadena X y responde si si X es una frase del programa, y no, si no lo es. Se compila una expresin regular en un reconocedor construyendo un diagrama de transiciones generalizado llamado autmata finito. Los autmatas finitos se usan en los problemas que implican por ejemplo bsqueda de una cadena en un archivo o el reconocimiento de cadenas de entrada que satisfagan ciertos criterios. Es sencillo traducir el autmata finito a un cdigo en un lenguaje de programacin; slo se necesita seguir el rastro de la posicin actual en la cadena y del estado actual. A la vez que se recorre la cadena, se comprueba a qu estado se ha llegado y, segn eso, se acepta o se rechaza la cadena. Por ejemplo, para escribir un programa sobre el alfabeto a, b que acepte cadenas que no contengan tres bs consecutivas se realiza lo siguiente: Se disea el autmata correspondiente:
a b q0 a q1 b q2 b q3 a, b

Con ayuda del autmata se obtiene el programa completo en C que se muestra a continuacin: #include <ctype.h> #include <conio.h> #include <string.h> #include <iostream.h> void main(void){ const int Max_Estados = 4; const int Max_Rechazos = 1; int Automata[Max_Estados][2] =

// Define el nmero de estados del autmata. //Define el nmero de estados de rechazo. { 0,1,

0,2, 0,3, 3,3}; /* Este vector determina las salidas para los estados. El orden de las salidas es el siguiente: el primer parmetro es para la letra a y el segundo para la letra b. Las salidas son ligas hacia los dems estados. */
U N I V E R S I D A D D E 64 A Q U I N O B O L I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

int Rechazos[Max_Rechazos] = {3}; int Estado = 0; char *Cadena = ""; // Almacena la cadena introducida por el usuario. int Rechazo = 0; // Para determinar si se alcanzo un edo. de no aceptacin. int Pos = 0; // Determina la posicin en el vector. int Tmp = 0; clrscr(); cout << "Introduce la Cadena: "; // Solicita al usuario una cadena. cin.getline(Cadena, 80); if(Cadena[Pos]==NULL){ // Verifica que la cadena no sea nula. cout << "Cadena Vaca!"; } else{ Pos = 0; while( Pos<=strlen(Cadena) && Cadena[Pos]!=NULL ){ cout << "Paso No." << Pos+1 << " -- Simbolo: " << (char)toupper(Cadena[Pos]) << " Estado: " << Estado; /* Mientras que no termine la cadena imprime el nmero de paso, el smbolo que se procesa y los estados de origen y destino. */ if( toupper( Cadena[Pos] ) == 65){ Estado = Automata[Estado][0];} else{ Estado = Autmata[Estado][1]; } cout << " Salta a: " << Estado << endl; //Muestra el edo. en que se encuentra. Tmp = 0; while(Rechazo==0 && Tmp!=Max_Rechazos) { if( Estado==Rechazos[Tmp] ) { if(Cadena[Pos + 1]==NULL){ Rechazo = 1;} else{ Rechazo = 0; } } else{Rechazo = 0; } Tmp++; } Pos++; } if(Rechazo){ cout << "Cadena NO Aceptada!"; } else {cout << "Cadena Aceptada!"; } } } IMPLEMENTACIN DE UNA GRAMTICA LIBRE DE CONTEXTO Los lenguajes libres de contexto son de gran importancia prctica, sobre todo para describir la sintaxis de las construcciones de los lenguajes de programacin, en la formalizacin del concepto de anlisis de gramtica, simplificacin de la traduccin de lenguajes de programacin y en otras aplicaciones del procesamiento de cadenas.

U N

I V E R S I D A D

D E 65

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

El uso de las gramticas libres de contexto ha simplificado la definicin de lenguajes de programacin y la construccin de compiladores. La razn para este suceso, es porque muchas construcciones de lenguajes de programacin tienen una estructura recursiva que se puede definir mediante gramticas libres de contexto. Ejemplo para Implementar una gramtica libre de contexto que traduce una expresin de la forma infija a la forma postfija. Primero se debe crear la gramtica correspondiente exprexpr + trmino {print (+)} exprexpr - trmino {print (-)} exprtrmino trmino 0 {print (0)} trmino 1 {print (1)} ... trmino 9 {print (9)} Con ayuda de la gramtica se obtiene el siguiente programa completo en C que se muestra a continuacin: # include <ctype>/* Carga el archivo que contiene el predicado isdigit. */ int preanlisis; main() { preanlisis= getchar(); expr(); putchar (\n);} /* Agrega un carcter de lnea nueva al final. */ expr() /* Genera los signos ms o menos. */ { trmino(); while(1) if (preanlisis== +) { parea (+); trmino(); putchar(+);} else if (preanlisis==-) { parea (-); trmino(); putchar(-);} else break;} trmino () /* Genera los dgitos. */ { if (isdigit (preanlisis) { /* Prueba si el smbolo es un dgito. */ putchar (preanlisis); parea (preanlisis);} else error ();} parea (t) int t; { if (preanlisi==t) preanlisis=getchar(); else error();} error () { printf (Error de sintaxis \n); /* Imprime mensaje de error. */ exit (1);} /* Se detiene. */ La primera lnea del programa en C comienza con # include, la cual carga <ctype>, que es un archivo de rutinas estndar que contiene el cdigo del predicado isdigit.

U N

I V E R S I D A D

D E 66

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

Los componentes lxicos, que consisten en caracteres simples, los proporciona la rutina de biblioteca estndar getchar, que lee el siguiente carcter del archivo de entrada. Sin embargo, preanlisis est declarado como entero en la lnea 2 para prever los componentes lxicos adicionales. Ya que preanlisis est declarado fuera de cualquiera de las funciones, es global a cualquier funcin que se defina despus de la lnea 2. La funcin parea revisa componentes lxicos; lee el siguiente componente lxico de la entrada si el smbolo de preanlisis concuerda, y llama a la rutina de error en otro caso. La funcin error utiliza la funcin de biblioteca estndar printf para imprimir el mensaje error de sintaxis, y despus termina la ejecucin mediante la llamada exit(1) a otra funcin de biblioteca estndar. La funcin trmino genera los dgitos, la rutina isdigit prueba si el smbolo de preanlisis es un dgito, si el resultado es positivo, se imprime y se manda a la rutina parea el dgito, de otro modo; aparece un error. La funcin expr funciona mientras el smbolo de preanlisis sea un signo ms menos, se manda a la rutina parea el signo, posteriormente se llama la rutina trmino para que se lea el siguiente dgito en la rutina parea. Despus la rutina de biblioteca estndar de C putchar imprime el signo, ms o menos. Las funciones expr y trmino revisan el smbolo de preanlisis utilizando el identificador global preanlisis. (Obsrvese que parea modifica el smbolo de preanlisis, de modo que la impresin debe producirse antes de emparejar el dgito). El traductor anterior reconoce todos los caracteres de la entrada, de modo que los caracteres extraos, como los espacios en blanco, harn que falle. Antes de empezar a programar debe considerar tambin ciertas desventajas que poseen las gramticas libres de contexto ya que pueden provocar que se cicle un programa, utilizaremos para ejemplificar mejor esto la siguiente gramtica que genera el lenguaje de cadenas balanceadas de parntesis. ST$ T(T)T Nota: el smbolo $ se agrega para indicar el fin de cada cadena. Se debe tener cuidado con la recursividad hacia la izquierda esto se comprueba utilizando una cadena de entrada, en este caso utilizaremos la siguiente cadena: ( )( )( )$ la cual produce la siguiente derivacin: ST$ T( T )$ T( T )( T )$ T( T ) ( T ) ( T )$ ( ) ( ) ( )$ Como se observa el problema esta en T(T)T, que tiene recursin hacia la izquierda. La recursividad por la izquierda se define de la siguiente forma: Una definicin formal gramatical es recursiva por la izquierda si para algn no terminal A tiene una produccin de la forma A A Para eliminar la resursividad por la izquierda se modifica la gramtica. Esto se realiza al suponer, en general, que la produccin T de la gramtica tiene la forma: TT. Donde la cadena no comienza con T. Las cadenas que pueden ser obtenidas de T son de la forma n, para n0. Si las dos producciones anteriores son remplazadas por: TU y UU, entonces el lenguaje

U N

I V E R S I D A D

D E 67

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

permanece sin cambios y la recursin por la izquierda es eliminada. En el ejemplo, = ( T ) y = , se reemplaza T(T)T por: TU U( T ) U Ahora considere la siguiente CFG que produce tambin el lenguaje de cadenas balanceadas de parntesis. ST$ T(T)( )T(T)T( ) Esta gramtica no tiene recursividad por la izquierda. Sin embargo el problema aqu es que del lado derecho de cada produccin T empieza con el mismo smbolo. Para remediar esto se descompone en factores cada produccin del lado derecho, como se muestra enseguida: T( U UT ) )TT )T ) Se descomponen en ms factores la produccin U, esto es el lado derecho empieza con T, se puede descomponer en el factor de salida T). Obtenindose las producciones: ST$ T( U UT ) W )W WT Se puede simplificar la gramtica eliminando la variable T con lo que se obtienen: S ( U $ U ( U ) W )W W( U De esta forma con la ayuda de la descomposicin de factores y eliminacin de recursividad por la izquierda, se facilita la programacin de las gramticas libres de contexto. Recuerde: Los DIFs deben ser ledos con mucho detenimiento para entrar en la discusin. Es recomendable que la discusin sobre este DIFs de Teora de Lenguajes y Compiladores referente a los Autmatas Finitos y las Gramticas Libres de Contexto y aplicable a diversas reas a travs del estudio del Lenguaje y las Gramticas.

U N

I V E R S I D A D

D E 68

Q U

I N O

O L

I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

PROGRAMA DE CALIDAD UDABOL DIF 006


TOMA DE DECISIONES BAJO CERTIDUMBRE o Si se pueden predecir con certeza las consecuencias de cada alternativa de accin, entonces se tiene una tarea de toma de decisiones bajo certidumbre. Otra manera de pensar en esto es que existe una relacin directa de causa y efecto entre cada acto y su consecuencia. Si est lloviendo, deber llevarse un paraguas?, si hace fro, deber llevarse un abrigo?. Ya sea que se lleve o no el paraguas o el abrigo, las consecuencias son predecibles.

Recuerde: Una buena parte de las decisiones que se toman a diario cae dentro de esta categora. En dnde comer? En donde comprar el material de la oficina? Algunos de los modelos o tcnicas utilizados para manejar estas decisiones son: Anlisis del punto de equilibrio. Programacin Lineal. Programacin de la produccin. Control de Inventarios.

PROGRAMACION LINEAL o Muchas decisiones de Direccin de Operaciones incluyen el intentar conseguir utilizar los recursos de la organizacin de la manera ms efectiva posible. Los recursos generalmente incluyen maquinarias (como los aviones), mano de obra ( como los pilotos), dinero, tiempo y materias primas (como el combustible). estos recursos se pueden utilizar para producir productos (como mquinas, muebles, alimentos y vestuario) o servicios (como listas de vuelos, campaas de publicidad o decisiones de inversin). La programacin lineal es un mtodo determinista de anlisis para elegir la mejor entre muchas alternativas. Cuando esta mejor alternativa incluye un conjunto coordinado de actividades, se le puede llamar plan o programa. Con frecuencia, seleccionar una alternativa incluye satisfacer varios criterios al mismo tiempo. Por ejemplo, cuando se compra una pieza de pan se tiene el criterio de frescura, tamao, tipo (blanco, de centeno u otro), costo, rebanado o no rebanado, etc. Se pueden adems dividir estos criterios en dos categoras: restricciones y objetivo. Las restricciones son las condiciones que debe satisfacer una solucin que est bajo consideracin. Si ms de una alternativa satisfacen todas las restricciones, el objetivo se usa para seleccionar entre todas las alternativas factibles.
U N I V E R S I D A D D E 69 A Q U I N O B O L I V I A

o o

o o o

FACULTAD DE CIENCIA Y TECNOLOGIA

Cuando se elige una pieza de pan, puede quererse un kilo de pan blanco rebanado y hecho en el da. Si varias marcas satisfacen estas restricciones, puede aplicarse el objetivo de un costo mnimo y escoger el ms barato. Existen muchos problemas administrativos que se ajustan a este modelo de tratar de minimizar o maximizar un objetivo que est sujeto a una lista de restricciones. Un corredor de inversiones, por ejemplo, trata de maximizar el rendimiento sobre los fondos invertidos pero las posibles inversiones estn restringidas por las leyes y las polticas bancarias. Un hospital debe planear que las comidas para los pacientes satisfagan ciertas restricciones sobre sabor, propiedades nutritivas, tipo y variedad, al mismo tiempo que se trata de minimizar el costo. Un fabricante, al planear la produccin futura, busca un costo mnimo al mismo tiempo cmo cumplir restricciones sobre la demanda del producto, la capacidad de produccin, los inventarios, el nivel de empleados y la tecnologa. Recuerde: La programacin lineal es una tcnica determinista, no incluye probabilidades. El objetivo y cada una de las restricciones se deben expresar como una relacin lineal, de ah el nombre de programacin lineal. Recuerde: Todos los problemas de PL (Programacin Lineal) tiene cuatro propiedades en comn: 1. Los problemas de PL buscan maximizar o minimizar una cantidad (generalmente beneficios o costos). Nos referimos a ello como la Funcin Objetivo de un PL. El principal objetivo de una empresa tipo es aximizar los beneficios a largo plazo. En el caso de un sistema de distribucin, el objetivo puede ser minimizar los costos de transporte. 2. La presencia de restricciones limita el grado en que podemos perseguir el objetivo. Por ejemplo, decidir cuntas unidades se deben fabricar para una lnea de productos de una empresa est restringido por la disponibilidad de horas de mano de obra y mquinas. Se quiere por tanto, maximizar o minimizar una cantidad (funcin objetivo) sujeta a las limitaciones de recursos (restricciones). 3. Deben existir diferentes alternativas donde poder elegir. Por ejemplo, si una empresa fabrica tres productos, los directivos pueden utilizar PL para decidir cmo asignar entre ellos sus recursos de produccin limitados (trabajo, mquinas y dems). Si no existen alternativas evidentes que seleccionar, no necesitaremos la PL. 4. La funcin objetivo y las restricciones de un PL deben ser expresadas en trminos de ecuaciones lineales o inecuaciones. Recuerde: Una de las aplicaciones ms comunes de la programacin lineal es el problema del plan de produccin. Do o ms productos se fabrican con recursos limitados. La empresa desea saber cuntas unidades deben fabricarse de cada producto, maximizando los beneficios globales y teniendo en cuenta las limitaciones de recursos. EJEMPLO Sony fabrica dos productos: (1) el Walkman un radiocasete porttil y (2) el Shader TV, un televisor en blanco y negro del tamao de un reloj de pulsera. El proceso de produccin de ambos productos se asemeja en que los dos necesitan un nmero de horas de trabajo en el departamento de electrnica, y un cierto nmero de horas de mano de obra en el departamento de montaje. Cada Walkman necesita cuatro horas de trabajo de electrnica y dos en el taller de montaje. Cada televisor necesita tres horas de electrnica y una en montaje. Durante el actual perodo de produccin se dispone de doscientas cuarenta horas en el departamento de electrnica y de cien horas en el de montaje. Cada Walkman vendido supone un beneficio de 7 dlares, mientras que para un televisor el beneficio unitario es de cinco dlares.
U N I V E R S I D A D D E 70 A Q U I N O B O L I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

El problema de Sony es determinar la mejor combinacin posible de Walkmany televisores que debe producir para alcanzar el mximo beneficio. Esta situacin puede formularse como un programa lineal. Empezaremos resumiendo la informacin necesaria para formular y resolver este problema. Horas necesarias para producir una unidad Departamento Electrnica Montaje Beneficios (x 1 ) Walkman 4 2 7 (x 2 ) Televisores 3 1 5 Hrs. disponibles 240 100

Una vez hecho esto, utilizaremos la siguiente notacin: Sea : X 1 = nmero de Walkman a producir. X 2 = nmero de televisores a producir

Ahora podemos escribir la funcin objetivo en trminos de x 1 y x 2 : Maximizar Beneficio = 7x 1 + 5x 2 Nuestro siguiente paso es desarrollar relaciones matemticas que describan las dos limitaciones del problema. Una relacin de carcter general sera que la cantidad de recursos utilizados sea menor o igual )que ( la cantidad de recursos disponibles. Primera restriccin: tiempo de electrnica utilizado tiempo de electrnica disponible. 4x1 + 3x2 240 (horas de trabajo en electrnica) Segunda restriccin: tiempo de montaje utilizado tiempo de montaje disponible. 2x1 + 1x2 100 (horas de trabajo en montaje) Ambas restricciones representan las limitaciones de capacidad y, por supuesto, afectan al beneficio total. Por ejemplo, Sony no puede producir 70 Walkman durante el perodo de produccin porque si x 1 =70, ambas restricciones se incumplen. Tampoco puede hacer 50 Walkman y 10 televisores (x 1 = 50, x 2 = 10), porque en este caso se incumplira la segunda restriccin. Estas restricciones nos llevan a otro aspecto importante de la programacin lineal: existirn interacciones entre variables. Cuantas ms unidades se realicen de un producto menos se fabricarn de otros. La forma ms fcil de solucionar un pequeo problema de PL, como por ejemplo el de Sony, es la solucin grfica. El procedimiento grfico puede utilizarse cuando existen dos variables de decisin, como el nmero de Walkman a producir (1) y el nmero de televisores a producir (x 2 ).
U N I V E R S I D A D D E 71 A Q U I N O B O L I V I A

FACULTAD DE CIENCIA Y TECNOLOGIA

Cuando existen ms de dos variables, es imposible dibujarlo en un grfico de dos dimensiones, por lo que habrn de adoptarse otros mtodos de resolucin ms complejos que se describirn ms adelante. Representacin grfica de las restricciones Recuerde: Para encontrar la solucin ptima de un problema PL, en primer lugar debemos identificar el conjunto o regin de soluciones posibles (valores de las variables que cumplen las restricciones del problema). El primer paso para conseguirlo es dibujar las restricciones del problema en un grfico. Retomemos el problema de ejemplo de Sony: Maximizar Beneficio = 7x 1 + 5x 2 S.A. 4x 1 + 3x 2 240 (horas de trabajo en electrnica) 2x 1 + 1x 2 100 (horas de trabajo en montaje) x 1 , x 2 0 (nmero de unidades no debe ser negativo)

Para dibujar las restricciones en un grfico, debemos transformar las desigualdades en igualdades: Restriccin A: Restriccin B: 4x 1 + 3x 2 2x 1 + 1x 2 = 240 = 100

La variable x1 (Walkman) generalmente se dibuja en el eje horizontal y la variable x2 (televisores) en el eje vertical.

U N

I V E R S I D A D

D E 72

Q U

I N O

O L

I V I A

Você também pode gostar