Lenguajes Formales y Autómatas
Guía de Estudio de
Ingeniería en Sistemas Computacionales Cuatrimestre II Vigencia periodo escolar Enero – Abril 2014
RECOMENDACIONES RECOMENDACIONES GENERALES.
EL SISTEMA EDUCATIVO UNIVERSITARIO AZTECA, ES UNA INSTITUCIÓN EDUCATIVA DEL ESTADO DE CHIAPAS CON CRITERIOS DEFINIDOS PARA LOS CUALES TRABAJA DÍA A DÍA. NUESTRAMISIÓN ES FORMAR JÓVENES PROFESIONISTAS, CON APTITUD EMPRENDEDORA, QUE LES PERMITA INCORPORARSE Y DESARROLLARSE CON ÉXITO EN EL CAMPO LABORAL. NUESTRAVISIÓN ES PROMOVER EDUCACIÓN DE CALIDAD PARA COADYUVAR CON EL DESARROLLO DE NUESTRO ESTADO. ASÍ COMO TRABAJAR CON VALORES QUE NUESTRA COMUNIDAD EDUCATIVA DESTACA, COMPROMISO CON LA SOCIEDAD, HONESTIDAD, AMOR Y DISCIPLINA. POR TAL MOTIVO, SISTEMA EDUCATIVO UNIVERSITARIO AZTECA BRINDA A SUS ESTUDIANTES ESTA GUÍA DE ESTUDIO, ELABORADA CON LA PARTICIPACIÓN DE SUS CATEDRÁTICOS, COORDINADA POR ESTA INSTITUCIÓN EDUCATIVA, ORIENTADA HACIA EL MODELO EDUCATIVO POR COMPETENCIAS MISMAS QUE SE DEFINEN COMO LA COMBINACIÓN DE DESTREZAS, CONOCIMIENTOS, APTITUDES, ACTITUDES. ESTE MODELO EDUCATIVO COMO SE HA DICHO, BUSCA QUE LOS CONOCIMIENTOS CONSTRUIDOS POR ESTUDIANTES Y CON EL APOYO DE LOS DOCENTES AL INTERIOR DEL AULA SEAN TRANSVERSALES Y APLICADOS EN SITUACIONES PROBLEMÁTICAS DE LA VIDA DIARIA QUE LES PERMITAN DESARROLLARSE CON ÉXITO EN EL CAMPO LABORAL. POR ESTE MOTIVO, ESTA GUÍA DE ESTUDIO SE COMPONE DE ELEMENTOS CLAVE, PROPÓSITO DE LA ASIGNATURA Y DE CADA UNO DE LOS BLOQUES QUE LA COMPONEN, ASÍ COMO EJERCICIOS DIAGNÓSTICOS, FORMATIVOS Y SUMATIVOS QUE EXPLOREN EL ANTES, DURANTE Y DESPUÉS DEL PROCESO DE ENSEÑANZA-APRENDIZAJE Y CON ELLO ABORDAR LAS TRES DIMENSIONES DE APRENDIZAJE, CONCEPTUAL, PROCEDIMENTAL Y ACTITUDINALMENTE.
SISTEMA EDUCATIVO UNIVERSITARIO AZTECA: TE DESEA ÉXITO ESCOLAR EN TU COMUNIDAD EDUCATIVA. EDUC ATIVA.
INGENIERÍA EN SISTEMAS COMPUTACIONALES ASIGNATURA:
LENGUAJES FORMALES Y AUTÓMATAS.
MODALIDAD
MIXTA
CUATRIMESTRE:
SEGUNDO.
LÍNEA DE FORMACIÓN: CRÉDITOS:
7
OBJETIVO:
AL TERMINAR EL CURSO, LOS ALUMNOS CONOCERÁN LAS BASES TEÓRICAS DE LA COMPUTACIÓN, ASÍ COMO LA RELACIÓN CON LOS ASPECTOS PRÁCTICOS DE LA TEORÍA DE LENGUAJES, LA COMPATIBILIDAD Y LA COMPLEJIDAD.
ESTRUCTURA DEL CURSO BLOQUE II. MAQUINAS DE TURING Y COMPUTABILID AD DE PROBLEMAS. BLOQUE I. AUTÓMATAS FINITOS.
LENGUAJES FORMALES Y AUTOMATAS
BLOQUE III. COMPLEJIDAD DE PROBLEMAS.
ÍNDICE PRESENTACIÓN .................................................................................................... 6 BLOQUE I. AUTÓMATAS FINITOS ....................................................................... 9 1.1 ¿QUÉ ES UN AUTÓMATA? ............................................................... 10 1.2 SISTEMAS DE ESTADOS FINITOS .................................................. 11 1.2.1 Ejemplo 1:............................................................................................. 13
1.3 AUTÓMATAS FINITOS DETERMINÍSTICOS. ................................... 14 1.3.1 Ejemplo 1:............................................................................................. 15
1.4 CADENAS, ALFABETOS Y LENGUAJES.......................................... 19 1.4.1 Lenguajes Regulares ............................................................................ 23
1.5 MAQUINAS EQUIVALENTES ............................................................ 26 1.5.1 Autómatas Finitos no Determinísticos ................................................... 27 1.5.2 Autómatas Finitos con Movimientos...................................................... 29 1.5.3 Autómatas Finitos de dos Direcciones .................................................. 31 1.5.4 Autómatas Finitos con Salida Maquinas Moore y Mealy ....................... 35
BLOQUE II MÁQUINAS DE TURING Y COMPUTABILIDAD DE PROBLEMAS 38 2.1 MAQUINA DE TURING. ..................................................................... 38 2.1.1 Definición.............................................................................................. 40 2.1.2 Ejemplos............................................................................................... 41
2.2 CONSTRUCCIÓN DE UNA MÁQUINA DE TURING .......................... 42 2.3 LENGUAJES ACEPTADOS POR MÁQUINAS DE TURING .............. 44 2.4. HIPÓTESIS O TESIS DE CHURCH .................................................. 48 2.5 MAQUINAS DE TURING COMO ENUMERADORES ........................ 48 2.6 MAQUINAS DE TURING RESTRINGIDAS ........................................ 49 2.7 FUNCIONES RECURSIVAS .............................................................. 49 2.8 FUNCIONES PARCIALES ................................................................. 49
2.8.1 FUNCIONES INICIALES ...................................................................... 50 2.8.2 Funciones Recursivas Primitivas .......................................................... 51
2.9 FUNCIONES RECURSIVAS PARCIALES ......................................... 52 2.9.2 El Problema de Correspondencia de Post ............................................ 53
BLOQUE III. COMPLEJIDAD DE PROBLEMAS ................................................. 64 3.1 ANÁLISIS DE ALGORITMOS ............................................................. 65 3.2 COMPUTABILIDAD ............................................................................ 67 3.3 HIPÓTESIS DE CHURH..................................................................... 69 3.4 COMPLEJIDAD DE UN ALGORITMO................................................ 70 3.5 RECURSOS INFORMÁTICOS ........................................................... 70 3.6 CASOS PARA EL ESTUDIO DE LA COMPLEJIDAD ........................ 71 3.7 MEDIDAS ASINTÓTICAS Y ÓRDENES DE COMPLEJIDAD ............ 71 3.7.1 REGLAS PRÁCTICAS .......................................................................... 73
3.8 REGLAS PARA CALCULAR EL TIEMPO DE EJECUCIÓN EN EL PEOR CASO DE LOS DISTINTOS TIPOS DE INSTRUCCIONES. ......... 73 3.9 ESPACIO Y TIEMPO POLINOMIAL ................................................... 76 3.10 LA CLASE DE PROBLEMAS NP ..................................................... 98 3.10.1 PROBLEMAS P Y NP ......................................................................... 99
3.11 MÉTODOS POR DESPLAZAMIENTO Y REDUCCIÓN. ................ 114
BIBLIOGRAFÍA .................................................................................................. 133
PRESENTACIÓN Toda comunicación involucra la utilización de un lenguaje. Así por ejemplo las personas se comunican con el resto en los diferentes idiomas conocidos como lenguajes naturaleso con las maquinas con lenguajes artificiales a través de un conjunto de símbolos. Se define lenguaje como un conjunto de palabras, también llamadas cadenas o sentencias que están formadas por símbolos de un alfabeto. Así por ejemplo el idioma español está formado por un conjunto de palabras compuestas por letras (símbolos del alfabeto español). Una gramática da cuenta de la estructura de un lenguaje, es decir de las sentencias que lo forman, proporcionando las formas validas en que se pueden combinar los símbolos del alfabeto. En el caso del español las oraciones deben ajustarse a una gramática. Una consideración importante es la distinción entre lenguajes formales, que son los que se trataran en esta antología y lenguajes naturales. Se puede decir que la diferencia estriba en que los lenguajes formales obedecen a reglas preestablecidas y por tanto se ajustan a ellas. Sin embargo los lenguajes naturales (utilizados por el hombre) las reglas gramaticales que rigen su escritura han sido desarrolladas con posterioridad para explicar esta última. Por otro lado también se abordará la teoría sobre autómatas o maquina abstracta que no es más que un dispositivo teórico capaz de recibir y transmitir información. Para realizar esta labor manipula cadenas de símbolos que se le presentan a la entrada produciendo otras cadenas de símbolos a su salida mediante un conjunto de estados que contienen la información necesaria para poder deducir, dado un símbolo de entrada, cuál será el símbolo de salida en cada momento. En cuanto a la utilidad práctica teórica de esta asignatura, el bloqueI se ocupa de las gramáticas, que permiten la especificación de lenguajes formales. El bloque II (máquinas de Turing) es fundamental para el estudio de la computabilidad. El
últimobloque temático (lenguajes regulares y lenguajes independientes de contexto) son importantes para la construcción de compiladores: el primero para la construcción de analizadores léxicos y el segundo para la construcción de analizadores sintácticos. En el criterio de Evaluación se sugiere abordar por cada parcial un 50% de Examen teórico-práctico, 20% de Entrega de Ejercicios, 20% Prácticas de Programación y 10% participación.
OBJETIVO GENERAL En este material se estudia los modelos de máquinas computacionales, de gramáticas formales y de los lenguajes correspondientes. Es importante que el alumno comprenda no solamente la forma en que funciona cada autómata, sino sobre todo la correspondencia entre autómatas, lenguajes y gramáticas, y la relación jerárquica entre ellos.
BLOQUE I.AUTÓMATAS FINITOS •
PROPÓSITO DEL BLOQUE I
La Teoría de Lenguajes Formales y Autómatas es la base para el desarrollo de compiladores, interpretes, software y traductores. Por tanto se pretende dar a conocer al alumno las maquinas abstractas que forman la base de la teoría de la computación, sus características y limitantes, estudiar los lenguajes formales y sus propiedades e Introducir los conceptos básicos de computabilidad y complejidad computacional. Por último, se busca que en este bloque de información que el estudiante conozca las técnicas de construcción de Autómatas finitos para resolver cuando una secuencia de símbolos forma parte de un lenguaje regular.
Instrucciones: Investigue en ACM o algún otro medio digital acreditado las siguientes preguntas: ¿Qué es un Autómata? Cuál es su aplicabilidad Que impacto tiene en el Área de la Computación y la Electrónica. Muestre 2 Ejemplos de su Aplicación. Cuál es la relación existente de la Teoría de Conjuntos y los autómatas Que es un diagrama de Transiciones
9
Introducción Antes de entrar en materia es primordial comprender lo siguiente: ¿Por qué es importante la teoría de lenguajes formales y autómatas? ¿Qué es un lenguaje formal? Conocemos lenguajes naturales... Español, alemán, inglés, chino, árabe...cuando nacemos no sabemos ningunose puede aprender cualquier lenguaje (por lo menos si se ha nacido en un entorno adecuado) El lenguaje es una secuencia de fonemas o símbolosque forman sílabas, palabras, frases, párrafos, capítulos, novelas, libros, bibliotecas...que tiene una sintaxis (fonética u ortografía)que tiene una gramática (reglas de concatenación y construcción de palabras para formar frases)(que tiene un estilo (forma de unir frases para generar textos)). Por tanto los lenguajes formales serán meramente símbolos con una gramática formal para agruparlos.
1.1 ¿QUÉ ES UN AUTÓMATA?
Dispositivos mecánicos o electrónicos o biológicosque en un punto de tiempo están en un estadoque dado una razón (por ejemplo una señal de entrada) cambian de estado. Ejemplos son: reloj mecánico o electrónico, máquina para lavar, todo un ordenador, ¿elcerebro?, actualmente ya se han construido relojes biológicos con trozos de DNA artificial y síntesis de proteínasque visualizan su cambio de estado con luz fluorescente. 10
En el contexto de esta asignatura los autómatas serán máquinas matemáticas con estados y funcionesde transición (donde se puede añadir entrada, salida, memoria interna modificable, etc.). En los años 60 se descubrió:Los conceptos de gramáticas (formales) y de los autómatas que describen el mismo fenómenoy están muy relacionados con los algoritmosy de esta manera surgió la Teoría de Computabilidad y la Teoría de Complejidad, es decir,la búsqueda de respuestas a las preguntas tales como: ¿Qué es computable? y ¿Cuántos recursos(memoria, espacio, tiempo, transiciones) se necesitan? Es decir, la Teoría de los Lenguajes Formales (y de los Autómatas) esto permite responder a otras preguntasesenciales de la Informática, por ejemplo: Tesis de Church: Todo lo que es computable se puede calcular con una Máquina de Turing.Existen problemas que no son computables. Por tanto en pocas palabras sin los Lenguajes formales y autómatas: No hay lenguajes, no hay compiladores, no hay programas, prácticamente no habría nada.
1.2 SISTEMAS DE ESTADOS FINITOS
Un autómata finito o máquina de estado finito es un modelo matemático de un sistema que recibeuna cadena constituida por símbolos de un alfabeto y determina si esa cadena pertenece al lenguajeque el autómata reconoce.Las máquinas de estado finito son una herramienta muy útil para especificar aspectos relacionadoscon tiempo real, dominios reactivos o autónomos, computación reactiva, protocolos, circuitos,arquitecturas de software, etc. El modelo de FSM (Finite State Machine) es un modelo que poseesintaxis y semántica formales y que sirve para representar aspectos dinámicos que no se expresan enotros 11
diagramas.Los nodos representan los posibles estados de aquello que se desea modelar. Las etiquetasrepresentan eventos que provocan un cambio. Las aristas determinan de qué manera cada estado,dado un evento, deriva en otro estado. Como una perspectiva complementaria podemos mencionar que un autómata finito es considerado un modelo matemático de una máquina que acepta cadenas de unlenguaje definido sobre un alfabeto A. Que consiste en un conjunto finito de estados y un conjuntode transiciones entre esos estados, que dependen de los símbolos de la cadena de entrada. Elautómata finito acepta una cadena x si la secuencia de transiciones correspondientes a lossímbolos de x conduce desde el estado inicial a un estado final. Si para todo estado del autómata existe como máximo una transición definida para cadasímbolo del alfabeto, se dice que el autómata es determinístico (AFD). Si a partir de algúnestado y para el mismo símbolo de entrada, se definen dos o más transiciones se dice que el autómata es no determinístico (AFND). Formalmente un autómata finito se define como una 5-uplaM =
dondeE: conjunto finito de estadosA: alfabeto o conjunto finito de símbolos de entradad: función de transición de estados, que se define como- d: E x A ® E si el autómata es determinístico- d: E x A ® P(E) si el autómata es no determinístico (P(E) es el conjunto potenciade E, es decir el conjunto de todos los subconjuntos de E)e0: estado inicial; e0 Î EF: conjunto de estados finales o estados de aceptación; F Í EGeneralmente se asocia con cada autómata un grafo dirigido, llamado diagrama de transiciónde estados. Cada nodo del grafo corresponde a un estado. El estado inicial se indica medianteuna flecha que no tiene nodo origen.
12
Los estados finales se representan con un círculo doble. Si existe una transición del estado e i al estado e j para un símbolo de entrada a, existe entoncesun arco rotulado a desde el nodo e i al nodo e j; es decir que ϸ(ei, a) = e j, se representa en eldiagrama
1.2.1 Ejemplo 1:
13
Ejemplo 2: Autómata finito determinístico que acepta el lenguaje
1.3 AUTÓMATAS FINITOS DETERMINÍSTICOS. Definición formal: Es un conjunto finito de estados, típicamente Q.Un alfabeto de símbolos de entrada, típicamente .Un estado es el estado inicial / de comienzo , típicamente q0 .
Cero o más estados finales / de aceptación ; este conjunto es típicamente F . Una función de transición, típicamente . Esta función:Toma un estado y un símbolo de entrada como argumentos.Regresa un estado. Una “regla” de se escribiría como ( q,a) = p, donde q y p son estados, y a es un
símbolo de entrada. Intuitivamente: Si el AF está en un estado q, y se recibe una entrada a, entonces el AF va al estado p (nota: q = pOK).
14
Podemos pensar de un autómata como un dispositivo que lee desde una cinta con símbolos y querealiza cambios de estados internamente:auto Dibujamos los autómatas como grafos dirigidos (no introducimos el concepto matemático degrafos formalmente), los estados representan los nodos del grafo, y dibujamos una arista atribuidacon un símbolo entre dos nodos si existe una transición correspondiente. Es decir, el estado inicial está marcado por una flecha y los estados finales están marcados condoble círculo.
1.3.1 Ejemplo 1: Un AFD que „acepta‟ la cadena de 0s y 1s donde los números de ceros y unos es
par: cerounopar
15
16
Ejemplo 2: Un Autómata A que acepta L = { x 01y : x , y {0,1}*} -
El DFA acepta cadenas que tienen 01 en alguna parte de la cadena
-
El lenguaje del DFA es el conjunto de cadenas que acepta
-
{w | w tiene la forma x 01y para algunas cadenas x y y que consisten sólo de 0‟s y 1‟s}
El Autómata A = ({q0, q1, q2}, {0,1}, , q0, {q1}) Autómata representado con una tabla de transiciones: 0
1
q0
q2
q0
q1
q1
q1
q2
q2
q1
Autómata representado con un diagrama de transiciones: 1 Start
q0
0 0
1
q2
q1
0,1
Convenciones Se utilizan algunas convenciones para evitar mencionar el tipo de cada nombre, para esto utilizamos las siguientes reglas: Los símbolos de entrada son a, b, etc., o dígitos. Las cadenas de símbolos de entrada son u, v , ..., z . Los estados son q, p, etc.
17
Diagrama de Transiciones Un AF se puede representar por medio de un grafo; los nodos representan estados; un arco de p a q se etiqueta con el conjunto de símbolos de entrada a tal que (q,a) = p. No hay arco si a no existe. El estado de inicio se indica con la palabra “start” con una flecha. 1 Start
q0
0 0
1
q2
q1
0,1
Los estados de aceptación tienen doble círculo.
Extensión de a Rutas ’ Intuitivamente, un FAacepta una cadena w = a1a2 ...an si hay una ruta en el diagrama de transiciones que: Empieza en el estado de inicio, Termina en un estado de aceptación, y Tiene una secuencia de etiquetas a1, a2 , ..., an. Ejemplo 3:
18
1.4 CADENAS, ALFABETOS Y LENGUAJES Cadenas o Palabras Una secuencia finita de símbolos de un alfabeto es una palabra sobre dicho alfabeto. ∑1: 0, 1, 00, 01, 11, 000, 1001101 ∑2: a, aa, abb, ababa ∑3: napa, palabra ∑6: a, ab, aab, aaab, abab
Escribimos la palabra vacía, es decir, la palabra que no contiene ningún símbolo, como £.Usamos normalmente letras minúsculas para anotar palabras, preferiblemente desde el final del alfabeto.El símbolo £ no pertenece a ningún alfabeto, £ ≠ ∑ la longitud de una palabra sobre un alfabeto es el número de
símbolos que contiene. ∑1 : w = 0 =) |w| = 1, w = 1001101 =) |w| = 7 ∑2 : w = a =) |w| = 1, w = ababa =) |w| = 5 ∑3 : w = napa =) |w| = 2, w = palabra =) |w| = 3 ∑6 : w = ab =) |w| = 2, w = aab =) |w| = 1 o |w| = 2 ??
Dependiendo del alfabeto puede resultar difícil dividir una palabra en sus símbolos. Si se puede dividir todas las palabras sobre un alfabeto solamente de una manera en sus símbolos, se llama tal alfabeto libre. Solemos usar solamente alfabetos libres. |£| = 0 El conjunto de todas las palabras que se pueden formar sobre un alfabeto ∑más la
palabra vacía se llama el universo del alfabeto W(∑). W(∑) = {∑} [ {w | w es palabra sobre∑} ∑CW(∑)
19
£ es palabra de cualquier universo, £ perteneceW(∑).
La cardinalidad del universo es infinito (pero contable o enumerable, vemos más adelante lo que significa). Si el alfabeto es libre (o mejor deci r, un generador libre), escribimos ∑*por W(∑). Podemos concatenar palabras, entonces sean w, v y u palabras en ∑*.
20
Alfabetos Un alfabeto es un conjunto finito no vacío de símbolos.
Usamos meta –símbolos (tal como {, }, =, y la coma) para escribir sobre lo que hablamos. Desde el contexto siempre será claro, si se trata de un símbolo del alfabeto o si se trata de un meta –símbolo. Usamos subíndices para distinguir diferentes alfabetos. Usamos normalmente las minúsculas como alfabeto = {a, . . . , z}, en los ejemplos normalmente letras desde el principio del alfabeto. Cardinalidad del alfabeto (número de elementos del alfabeto): | ∑| > 0, | ∑| <∞
Lenguajes Un lenguaje es cualquier subconjunto del universo sobre algún alfabeto, es decir, o también
21
Ejemplo:
22
1.4.1 Lenguajes Regulares Un lenguaje regular es un tipo de lenguaje formal que satisface las siguientes propiedades:Los lenguajes más sencillos que se considerarán son los lenguajes regulares, es decir, los que se pueden generar a partir de los lenguajes básicos, con la aplicación de las operaciones de unión, concatenación y * de Kleene un número finito de veces.
23
Puede ser reconocido por:un autómata finito determinista y un autómata finito no determinista. Un autómata de pila, un autómata finito alterno, una máquina de Turing de solo lectura. Es generado por: Una gramática regular y una gramática de prefijos Es descrito por: Una expresión regular Lenguajes Regulares sobre un Alfabeto Un lenguaje regular sobre un alfabeto Σ dado se define recursivamente como: El lenguaje vacío
es un lenguaje regular
El lenguaje cadena vacía {ε} es un lenguaje regular
Para todo símbolo a
∈
Σ {a} es un lenguaje regular
Si A y B son lenguajes regulares Entonces A ∪ B (unión), A•B (concatenación) y A* (clausura o estrella de Kleene) son lenguajes regulares Si A es un lenguaje regular entonces ( A) es el mismo lenguaje regular No existen más lenguajes regulares sobre Σ Todo lenguaje formal finito constituye un lenguaje regular. Otros ejemplos típicos son todas las cadenas sobre el alfabeto {a, b} que contienen un número par de aes o el lenguaje que consiste en varias aes seguidas de varias b´es. Si un lenguaje no es regular requiere una máquina con al menos una complejidad de Ω(log log n ) (donde n es el tamaño de la entrada).
En la práctica la mayoría de los problemas no regulares son resueltos con una complejidad logarítmica. Un lenguaje formal infinito puede ser regular o no regular. El lenguaje L = {a n, n > 0} es regular porque puede ser representado, por ejemplo, mediante la expresión regular a+. El lenguaje L= {an bn, n > 0} es un lenguaje no regular dado que no es
24
reconocido por ninguna de las formas de representación anteriormente enumeradas.
Propiedades de Lenguajes Regulares Dado que la longitud de las cadenas de los lenguajes regulares no está acotada, los lenguajes regulares incluyen siempre cadenas cuya longitud es mayor que el número de estados del autómata que las reconoce. Lo anterior implica que para cadenas cuya longitud es mayor al número de estados, al menos un estado será visitado mas de una vez, llamemos a ese estado el estado k. Sea i el estado inicial y j un estado final.
Figura.-
El lema del bombeo
En la figura, u es una cadena que lleva al automata del estado i al k pasando por una variedad de estados, por esa razón se dibujó con linea punteada; v es una cadena que lleva al autómata del estado k de nuevo al k pasando por un numero indefinido de estados, que por supuesto depende de la longitud de la misma cadena y finalmente t es una cadena que lleva al autómata del estado k al j. El lema del bombeo, nos dice que si uvt es una cadena también lo debe de ser ut , así como uvvt y en general uv n t n si es que el lenguaje en cuestión es un lenguaje regular.La utilidad de este lema radica precísamente en decidir si un lenguaje es regular o nó, puesto que no queremos perder el tiempo buscando un autómata finito que reconozca un lenguaje que ni siquiera es regular. Formalmente, el lema del bombeo puede ser expresado de la siguiente manera: L n z ( z L, | z | n ) uvt i ( z uvt , | v | 1, uv i t L)
25
Recuerde que |z| se lee “la longitud de la cadena z”, y también recuerde que el operador “existe” nos permite cambiar nuestra elección de n, así como de u,v y t, en cambio para una cierta elección de estas variables el operador “para todo” nos
permite demostrar que el lenguaje no es regular mediante un contraejemplo.
1.5 MAQUINAS EQUIVALENTES Una Máquina de Estado Finito (Finite State Machine), llamada también Autómata Finito es una abstracción computacional que describe el comportamiento de un sistema reactivo mediante un número determinado de Estados y un número determinado de Transiciones entre dicho Estados. Las Transiciones de un estado a otro se generan en respuesta a eventos de entrada externos e internos; a su vez estas transiciones y/o subsecuentes estados pueden generar otros eventos de salida. Esta dependencia de las acciones (respuesta) del sistema a los eventos de entrada hace que las Máquinas de Estado Finito (MEF) sean una herramienta adecuada para el diseño de Sistemas Reactivos y la Programación Conducida por Eventos (Event Driven Programming), cual es el caso de la mayoría de los sistemas embebidos basados en micro controladores o microprocesadores. Las MEF se describen gráficamente mediante los llamados Diagramas de Estado Finito (DEF), llamados también Diagramas de Transición de Estados. Existen básicamente las siguientes maquinas de estado: Máquinas secuenciales de Mealy: Dada una palabra de entrada genera otra de salida, los símbolos de salida dependen del estado y del símbolo de entrada. Máquinas secuenciales de Moore Dada una palabra de entrada genera otra de salida, los símbolos de salidadependen sólo del estado. 26
Autómatas probabilísticos o estocásticos En su funcionamiento interviene el concepto de probabilidad, asociada a que se produzca una determinada transición.
1.5.1 Autómatas Finitos no Determinísticos Son autómatas en cuyo diagrama de transición existen varios arcos etiquetados con elmismo símbolo saliendo del mismo estado, o bien hay transiciones no existentes.En un momento dado, en un AFND puede suceder lo siguiente: • Existen varias transiciones posibles aplicables. • No existe ninguna transición aplicable (máquina no totalmente definida).
- Las transiciones de los AFND pueden ser inciertas. - Un AFND acepta una cierta cadena si es posible que tras analizarla el autómata quedeen uno de los estados de aceptación.
27
28
1.5.2 Autómatas Finitos con Movimientos
29
30
1.5.3 Autómatas Finitos de dos Direcciones Un 2DFA es un quinteto M (Q, , , q0 , F )
Donde:
: Q
Q { L, R}
De manera que un 2DFA es un DFA que despues de cambiar de un estado a otro, se puede mover a la izquierda en la cinta de entrada en lugar de hacerlo siempre hacia la derecha como los FA's convencionales. Una descripción instantánea (ID) del 2DFA tiene la forma xqy donde x es la parte de la cadena de entrada que se encuentra a la iquierda de la "cabeza" de lectura del autómata, q es el estado en el que se encuentra el sutómata y y es la parte de la cadena de la entrada que está a la derecha de la cabeza de lectura. El carácter que leerá el autómata es entonces el primero de y. Entre dos instantáneasconsecutivas se utiliza el símbolo
para indicar la
transición de una ID a otra en un solo paso I k 1
I k
Usamos
*
para indicar que de una instantánea se puede llegar a otra en varios
pasos El lenguaje que reconoce un 2DFA es: *
L( M ) {w | q 0 w wp y p F )
Ej. El siguiente 2DFA reconoce cadenas formadas de 0's y 1's donde no haya dos 1's consecutivos. Para hacerlo, recorre la cadena de entrada de iquierda a derecha y al encontrar el primer 1 cambia al estado q1 para "recordar" que ya encontró un 1 y esta buscando el segundo 1 recorriendo la cadena de entrada a la derecha. Al encontrar el segundo 1 cambia al estado
q2 y
cambia de sentido
buscando ahora hacia la izquierda al menos un 0, si lo encuentra regresa al 31
estado inicial finales,
q0 y
continua su recorrido hacia la derecha. Todos los estados son
es:
a) (q0 ,0) (q0 , R)
b) (q0 ,1) (q1 , R)
c) (q1 ,0) (q1 , R)
d) (q1 ,1) (q2 , L)
e) (q2 ,0) (q0 , R)
f) (q2 ,1) (q2 , L)
Para la entrada 0100101 La secuencia de ID's sería: q0 0100101 0q0 100101
01q1 00101 010q1 0101
0100q1101 010q2 0101 0100q 101 01001q1 01 0 01001q2 01 010010q 1 0100101q1 0
El comportamiento del 2DFA puede observarse en el siguiente diagrama para la misma entrada, solo considerese que cuando el autómata cambia de sentido, en lugar de desplazarse permanece en el mismo lugar de la cinta de entrada pero lee el carácter de la izquierda si cambió su sentido hacia la izquierda y el de la derecha si cambió su sentido a la derecha en lugar desplazarse y de siempre leer el carácter de la derecha. 0 q0
1 q0
0 q1
0 q1
1
0
1
q1 q2 q0
q1
q1 q2 q0
32
q1
Las columnas de estados ubicadas entre símbolos de la cadena de entrada se conocen como secuencias cruzadas. Las secuencias válidas deben cumplir con las siguientes características: -
Deben ser de longitud impar
-
Los estados "Derechos" deben ocupar posiciones impares
-
Los estados "Izquierdos" deben ocupar posiciones pares
-
No debe haber estados repetidos en una secuencia
Los estados "Derechos" son aquellos a los que la transición hacia ellos tiene implícito un avance hacia la derecha y los "Izquierdos" son los que al hacer una transición hacia ellos simpre se hace un avance hacia la izquierda. Decimos que la secuencia q1 , q2 ,..., q k verifica por la derecha a la secuencia p1 , p 2 ,..., pl bajo el símbolo b cuando se asegura la posibilidad de que esas dos
secuencias se ubicaran a la izquierda y derecha respectívamanete bajo el símbolo b en el diagrama de transiciones de estados para alguna cadena que forme parte del lenguaje que reconoce el autómata comenzando por la derecha. Decimos que la verifica por la izquierda si se comienzara por la izquierda. Para averiguar cuales secuencias verifican a cuales bajo el símbolo b podemos seguir el siguiente procedimiento recursivo:
Base: La cadena nula concuerda por la iquierda y por la derecha a la cadena nula 1ª Regla .- Si la secuencia q3 ,..., qk concuerda con la secuencia p1 , p2 ,..., pl por la derecha bajo el símbolo b y además (q1 , b) (q2 , L)
Entonces, la secuencia q1 , q2 ,..., q k concuerda con la secuencia p1 , p2 ,..., pl por la derecha bajo el símbolo b.
33
2ª Regla .- Si la secuencia q2 ,..., qk concuerda con la secuencia p2 ,..., pl por la izquierda bajo el símbolo b y además (q1 , b) ( p1 , R)
Entonces, la secuencia q1 , q2 ,..., qk concuerda con la secuencia p1 , p 2 ,..., pl por la derecha bajo el símbolo b.
3ª Regla .- Si la secuencia q1 , q2 ,..., qk concuerda con la secuencia p3 ,..., pl por la izquierda bajo el símbolo b y además ( p1 , b) ( p2 , R)
Entonces, la secuencia q1 , q2 ,..., q k concuerda con la secuencia p1 , p2 ,..., pl por la izquierda bajo el símbolo b.
4ª Regla .- Si la secuencia q2 ,..., qk concuerda con la secuencia p2 ,..., pl por la derecha bajo el símbolo b y además ( p1 , b) (q1 , L)
Entonces, la secuencia q1 , q2 ,..., qk concuerda con la secuencia p1 , p 2 ,..., pl por la izquierda bajo el símbolo b. Determinando cuales secuencias verifican a cuales por la derecha, podemos obtener un NFA a partir de un 2DFA. Ejemplo, Obtengamos un NFA equivalente al 2DFA del ejemplo anterior. para este autómta, las secuencias válidas son solamente: q0
q1
q0 , q 2 , q1 q1 , q 2 , q0
Bajo el símbolo 0 concuerdan: nul por la derecha a nul
Base
nul por la izquierda a nul
Base 34
q0 por
la derecha a
q0
(1), Regla 2ª y (a)
q1 por
la derecha a q1
(1), Regla 2ª y (c)
nul por la izquierda a q 2 q0
(2), Regla 3ª y (e)
q1 por
(5), Regla 2ª y (c)
la derecha a q1q 2 q0
De la misma forma obtenemos las concordancias bajo el símbolo 1 Con esa colección de concordancias revisamos si en base a una de las cuatro reglas, y la tabla de transciciones del autómata de dos sentidos podemos aumentar la colección. cuando ya no se pueda aumentar dicha colección descartamos las concordancias por la izquierda y en base a las concordancias por la derecha formamos la tabla de transiciones del autómata de un solo sentido. Para el ejemplo, la tabla será: Concordancias Concordancias por la derecha por la derecha bajo 0
bajo 1
[q 0 ]
[q0 ]
[q1 ]
[q1 ]
[q1 ] , [q , q , q ] 1 2 0
-
[q0 , q 2 , q1 ]
-
-
[q1 , q 2 , q0 ]
-
[q1 ]
1.5.4 Autómatas Finitos con Salida Maquinas Moore yMealy Las máquinas de Mealy y Moore son circuitos síncronos. Un circuito síncrono es un circuito digital en el cual sus partes están sincronizadas por una señal de reloj. En un circuito síncrono ideal, cada cambio en los diferentes niveles lógicos es simultáneo. Estas transiciones se realizan después de un cambio de nivel de una señal llamada reloj. Idealmente la entrada a cada elemento de almacenamiento 35
alcanza su valor final antes de que la siguiente señal de reloj ocurra, por lo tanto el comportamiento de un circuito se puede predecir exactamente. Se requiere se cierto retardo para cada operación lógica, por lo que existe una máxima rapidez en el que cada sistema síncrono puede responder. El análisis de un diagrama de tiempos puede darnos esta rapidez. Una máquina de Mealy es una máquina de estados finita, donde las salidas están determinadas por el estado actual y la entrada. Esto significa que en el diagrama de estados se incluye una señal de salida para cada arista de transición. Por ejemplo, en la trayectoria de un estado 1 a un estado 2, si la entrada es cero la salida puede ser uno, y se debe poner sobre la arista la etiqueta “0/1”.
En contraste, la salida de una máquina de estado finito Moore (máquina de Moore), depende solo del estado actual y no depende de la entrada actual. Por lo tanto, losestados de una máquina de Moore son la unión de los estados de la máquina de Mealy y el producto cartesiano de estos estados y alfabeto de entrada (posibles entradas). Definición formal: Una máquina de Moore se define como una tupla (secuencia finita) de 5{S, Σ, Λ, T, G} que consiste de: • Un conjunto finito de estados ( S ) • Un conjunto finito llamado alfabeto de entrada ( Σ ) • Un conjunto finito llamado alfabeto de salida ( Λ ) • Una función de transición (T : S × Σ → S) que dirige a cada estado y a una
entrada al siguiente estado. • Una función de salida (G : S → Λ) que dirige a cada estado al alfabeto de salida.
El número de estados en una máquina de Moore es mayor o igual al número de estados a su correspondiente máquina de Mealy. Una máquina de Mealy es una tupla de 6 (S, S0, Σ, Λ, T, G), que consiste de:
36
•
Un conjunto finito de estados ( S )
•
Un estado inicial S0 el cual es un elemento de (S)
•
Un conjunto finito llamado alfabeto de entra da ( Σ )
•
Un conjunto finito llamado alfabeto de salida ( Λ )
•
Una función de transición (T : S × Σ → S)
•
Una función de salida (G : S × Σ → Λ)
37
BLOQUE II MÁQUINAS DE TURING Y COMPUTABILIDAD DE PROBLEMAS
INSTRUCCIONES:
LEE,
REFLEXIONA
Y
CONTESTA
LOS
PLANTEAMIENTOS CORRESPONDIENTES. QUÉ ENTIENDES POR AUTÓMATA. CON EL APOYO DE LA LECTURA DEFINE QUÉ ES UNA MÁQUINA TURING.
2.1 MAQUINA DE TURING. Este tipo de autómata (para los fines de esta Antología, usaremos esa palabra para denotar a una máquina teórica) fue propuesto por Alan Turing, mientras estudiaba modelos algorítmicos utilizando un modelo computacional: básicamente consta de un mecanismo de control y un flujo de entrada que concebiremos como una cinta, además, estás máquinas poseen una cabeza de lectura que pueden desplazar hacia atrás o hacia adelante y también pueden escribir en la cinta. El mecanismo de control sólo puede hallarse en uno de un número finito de estados, uno de tales estados lo denominaremos estado inicial y nos representará el estado en el cual la máquina comienza los cálculos; mención aparte merece un segundo estado especial del conjunto de estados de la máquina: el estado de parada o detenimiento el cual se caracteriza porque marca el final de los cálculos al llegar la máquina a este. La idea subyacente es el concepto de que una máquina de Turing puede verse como un autómata ejecutando un procedimiento efectivo definido formalmente, donde el espacio de memoria de trabajo es ilimitado, pero en un momento determinado sólo una parte finita es accesible. 38
LA COMPLEJIDAD DE LOS CÁLCULOS EN UNA MAQUINA DE TURING. Consideremos la ejecución de una transición en una máquina de Turing como un paso en los cálculos de la máquina y definamos como complejidad temporal en una máquina de Turing el número de pasos que se ejecutan durante los cálculos. Por otra parte, la complejidad espacial en una máquina de Turing se define como el número de celdas de la cinta que dicho cálculo requiere. Es importante hacer notar que la complejidad espacial y temporal no tienen que ser en lo absoluto iguales, por ejemplo, durante la ejecución de un cálculo: supongamos que una máquina escribe 100 veces en la misma celda, ello significa que el cálculo tiene complejidad temporal de 100 pero complejidad espacial de 1. Otro aspecto a tomar en cuenta es que las complejidades espacial y temporal no son del todo independientes entre sí, debido a que en n pasos, una máquina de Turing tiene acceso a un máximo de n+1 celdas de la cinta. Por consiguiente, si la com plejidad tem po ral de una m áqu ina de Turing
es n, ento nces la
co m plejid ad esp acial del c álcu lo n o s erám ayo r qu e n+1.
Al evaluar la complejidad de un algoritmo, se manejan entonces variaciones en el rendimiento del mismo, identificando para ello las situaciones del mejor y peor escenario de desempeño, buscando con ello garantizar que cualquier aplicación del algoritmo se halle en ese intervalo. Lo que se acostumbra en la práctica es adoptar un punto de vista pesimista y definir la complejidad por su rendimiento en el peor de los casos, aunque, aun así, las condiciones necesarias para estudiar un algoritmo varían de acuerdo con la situación en la que se ejecuta; es decir, en un ambiente de aplicación, no siempre bastan las evaluaciones del peor caso, mejor caso o incluso del caso promedio; en cambio, hay que considerar el ambiente en el que se ejecutará el algoritmo. Finalmente, se hace énfasis en que al evaluar complejidad en una máquina de Turing no se toma en cuenta el conocimiento preciso de los mecanismos involucrados para la ejecución del algoritmo, por lo que los resultados obtenidos 39
son válidos en las computadoras más antiguas como las más modernas. La importancia de ello se da a notar en el momento en el que se consideran algoritmos con complejidades temporales o espaciales cuya ejecución no llega a ser en absoluto práctica.
2.1.1 Definición Definimos una máquina de Turing como una 7-tupla M = (Q, , , s, Б, F , ), donde Q
sQ
Es un conjunto finito de estados Es un alfabeto de entrada Es un alfabeto llamado alfabeto de la cinta Es el estado inicial
Es el símbolo blanco
Б
F Q Es el conjunto de estados finales o de aceptación
: QQ {L, R }
Es una función parcial que se llama función de
transición. La máquina de Turing posee una cinta dividida en celdas, cada celda es capaz de almacenar un símbolo. Además posee una cabeza lectora/escritora que lee y escribe un símbolo en la cinta. Inicialmente la cinta contiene b en todas sus celdas. La función de transición transforma pares (q, ) en ternas de la forma ( p, t , X ), donde p es el siguiente estado, t es el símbolo escrito en la cinta y X es el movimiento de la cabeza lectora/escritora, que puede ser L o R .
40
2.1.2 Ejemplos Por ejemplo, la transición (q1, a) = ( q5, b, R ) provoca que la máquina pase de una configuracióna la configuraciónSe puede dar una descripción instantánea de la máquina de Turing similar a la de los ADPND, para la transición anterior sería el carácter subrayado indica la posición de la cabeza lectora/escritora. (q1, abb) (q5, bbb) Otra posibilidad es anteponer el estado actual al carácter señalado por la cabeza lectora/escritora como se muestra q1abbbq5bb
MÁQUINAS DE TURING COMO ACEPTADORES DE LENGUAJES Sea M = (Q, , , s,
, F , ) una máquina de Turing. Entonces el lenguaje
Б
aceptado por M esL(M ) = {w * | q1w *w 1 pw 2 para pF y w i *} Los lenguajes aceptados por las máquinas de Turing se conocen como lenguajes recursivamente enumerables. 41
El siguiente grafo muestra una máquina de Turing transforma una cadena de la formaanbam enan+mbmediante la siguiente función de transición: (q1, a) = (q1, a, R ) (q1, b) = (q2, a, R ) (q2, a) = (q2, a, R ) (q2, Б) = (q3, Б, L) (q3, a) = (q4, b, L) (q4, a) = (q4, a, L) (q4, Б) = (q5, Б, R )
La siguiente máquina de Turing reconoce el lenguaje anbn. (q1, a) = (q2, c , R ) (q2, a) = (q2, a, R ) (q2, d ) = (q2, d , R ) (q3, b) = (q3, d , L) (q3, d ) = (q3, d , L) (q3, a) = (q3, a, L) (q3, c ) = (q1, c , R ) (q1, d ) = (q4, d , R ) (q4, d ) = (q4, d , R ) (q4, Б) = (q5, Б, L)
2.2 CONSTRUCCIÓN DE UNA MÁQUINA DE TURING La máquina de Turing consta de un cabezal lector/escritor y una cinta infinita en la que el cabezal lee el contenido, borra el contenido anterior y escribe un nuevo valor. Las operaciones que se pueden realizar en esta máquina se limitan a: avanzar el cabezal lector/escritor para la derecha; 42
avanzar el cabezal lector/escritor para la izquierda. El cómputo es determinado a partir de una tabla de estados de la forma: (Estado,valor)
(\nuevo estado, \nuevo valor, dirección)
Esta tabla toma como parámetros el estado actual de la máquina y el carácter leído de la cinta, dando la dirección para mover el cabezal, el nuevo estado de la máquina y el valor a ser escrito e scrito en la cinta. Con este aparato extremadamente sencillo es posible realizar cualquier cómputo que un computador digital sea capaz de realizar. Mediante este modelo teórico y el análisis de complejidad de algoritmos, algoritmos, fue posible la categorización de problemas computacionales de acuerdo a su comportamiento, apareciendo así, el conjunto de problemas denominados P y NP, cuyas soluciones en tiempo en tiempo polinómico son encontradas según el determinismo y no determinismo respectivamente de la máquina de Turing. De hecho, se puede probar matemáticamente que para cualquier programa de computadora es posible crear una máquina de Turing equivalente. Esta prueba resulta de la Tesis la Tesis de Church-Turing, formulada Church-Turing, formulada por Alan Alan Turing y Alonzo Church, Chur ch, de forma independiente a mediados del siglo del siglo XX. La idea subyacente en el concepto de máquina de Turing es una persona ejecutando un procedimiento efectivo definido formalmente, donde el espacio de memoria de trabajo es ilimitado, pero en un momento determinado sólo una parte finita es accesible. La memoria se divide en espacios de trabajo denominados celdas, donde se pueden escribir y leer símbolos. Inicialmente todas las celdas contienen un símbolo especial denominado “blanco”. Las instrucciones que determinan el funcionamiento de la máquina tienen la forma, “si estamos en el
43
estado x leyendo la posición y, donde hay escrito el símbolo z, entonces este símbolo debe ser reemplazado por este otro símbolo, y pasar a la leer la celda siguiente, bien a la izquierda o bien a la derecha. La máquina de Turing puede considerarse como un autómata capaz de reconocer lenguajes formales. En ese sentido es capaz de reconocer los lenguajes recursivamente e numerables, de acuerdo a la jerarquía de Chomsky. Chomsky. Su potencia es, por tanto, superior a otros tipos de autómatas, como el autómata el autómata finito, o finito, o el autómata el autómata con pila, o pila, o igual a otros modelos con la misma potencia computacional.
2.3 LENGUAJES ACEPTADOS POR MÁQUINAS DE TURING Definición. Un lenguaje L sobre un alfabeto se dice que es recursivamente enumerable si es aceptado por alguna máquina de Turing. Es decir, L es recursivamente enumerable si para alguna máquina de Turing M tenemos que L(M ) = {w * | qw *upv para para pF y y u, v *} (Dondeq es el estado inicial de M y F es es el conjunto de estados finales de M ).Un ).Un lenguaje L es recursivo si L es recursivamente enumerable y hay alguna máquina de Turing que para sobre todas las entradas que acepta L. Lenguajes regulares, independientes del contexto, recursivos y recursivamente enumerables Sea M = (Q, , s, F , ) un autómata finito determinista. Se puede construir una máquina de Turing M ‟ = (Q‟, ', , s‟, Б, F ‟,‟, ‟) para la cualL(M ) = L(M ‟) ‟) por medio de: Q‟ = Q {q‟}, donde q‟ es un nuevo estado que no esta en Q.
' = = {Б} F ‟ = {q‟}
44
‟(q, ) = ((q, ), , R ), para qQ y „ ‟(q, Б) = (q‟, Б, S), para todo qF , donde S es la directiva de cinta “nomoverse” Teorema.
Si L es un lenguaje regular, entonces L es también un lenguaje recursivo. Sea M un autómata de pila no determinista. Podemos construir una máquina de Turing que emule el comportamiento de M . Supongamos un MT con dos cintas, la primera contendrá la cadena de entrada y la segunda se utilizará para almacenar la pila. Un apilamiento se emula moviendo la cabeza de la segunda cinta a la derecha y escribiendo el símbolo que se apilará. Consideremos el siguiente ADPND dado por Q = {q1, q2, q3},
s = q1,
= {a, b},
F = {q3},
= {a, b, z }, (q1, , z ) = {(q3, )},
(q1, a, z) = {(q1, az )},
(q1, a, a) = {(q1, aa)},
(q1, b, a) = {(q2, )},
(q2, b, a) = {(q2, )},
(q2, , z ) = {(q3, )},
Este ADPND reconoceanbn. La máquina de Turing empezará en el estado q‟. Primero se marca el fondo de la pila en la cinta 2. Por tanto, tendremos las transiciones
(q‟, (a, Б)) = (q1, (a, z ), (S, S)) (q‟, (Б, Б)) = (q1, (Б, z ), (S, S)) Para realizar un apilamiento y consumir un símbolo se tendrán las transiciones
(q1, (a, z )) = ( p1, (a, z ), (S, R )) (q1, (a, a)) = ( p1, (a, a), (S, R )) ( p1, (a, Б)) = (q1, (a, a), (R , S)) 45
Las cuales apilan aes sobre la pila. Para desapilar tendremos
(q1, (b, a)) = (q2, (b, a), (R , L)) (q2, (b, a)) = (q2, (b, a), (R , L)) Finalmente, la cadena se acepta cuando ha sido totalmente consumida y se ha vaciado la pila. La transición del ADPND (q1, , z ) = {(q3, )} corresponde al movimiento de la máquina de Turing.
(q2, (Б, z )) = (q3, (Б, z ), (S, L)) Teorema. Si L es un lenguaje independiente del contexto, entonces L es también un lenguaje recursivo.
Teorema. Si L1 y L2son lenguajes recursivos, entoncesL1L2también lo es. Teorema 5.3.1. Si L es un lenguaje recursivo, entonces *Les un lenguaje recursivo.
Teorema 5.3.2. Hay un lenguaje recursivamente enumerable L para el cual *Lno es recursivamente enumerable.
Teorema 5.3.3. Si L1 y L2 son lenguajes recursivamente enumerables, entoncesL1L2es también recursivamente enumerable.
Teorema 5.3.4. Si L es un lenguaje recursivamente enumerable para elcual*Ltambién es recursivamente enumerable, entonces L es un lenguaje recursivo.
Teorema 5.3.5. Un lenguaje L es recursivamente enumerable si y solo si L es enumerado por alguna máquina de Turing.
Definición 5.4.1.Una gramática no restringida (que también se conoce como una gramática estructurada por frase) es una 4-tupla G = (N , , S, P ), donde N es un alfabeto de símbolos no terminales
es un alfabeto de símbolos terminales con N = SN es el símbolo inicial
46
P E s un conjunto finito de producciones de la forma
,
donde (N )+ y (N )* (es decir, P (N )+ (N )* y es un conjuntofinito ).
Teorema 5.4.2. Si G es una gramática no restringida, entonces L(G) es un lenguaje recursivamente enumerable.
Teorema 5.4.3. Si L = L(M ) es un lenguaje recursivamente enumerable y G se construye de la forma descrita, entonces L = L(G).
Teorema 5.4.4. Un lenguaje L es recursivamente enumerable si y solo si L = L(G) para alguna gramática G, no restringida.
Definición 5.5.1. Una gramáticaG = (N , , S, P ) es una gramática sensible al contexto si todas las producciones son de la forma , donde, ( N
)+ y | |
| |. Teorema 5.5.2. El conjunto de los lenguajes sensibles al contexto contiene al conjunto de los lenguajes independientes del contexto.
Teorema 5.5.3. SeaG = (N , , S, P ) una gramática sensible al contexto. Entonces, existe una gramática G1 = (N 1, , S1, P 1) sensible al contexto, para la cual L(G) = L(G1) y S1nunca aparece en el lado derecho de una producción de P 1.
Teorema 5.5.4. Sea G = (N , , S, P ) una gramática sensible al contexto. Entonces, existe una una máquina de Turing T , que para sobre toda entrada y acepta L(G).
Teorema 5.5.5. Si L es un lenguaje sensible al contexto, entonces L es recursivo. Teorema 5.5.6. Hay lenguajes recursivos que no son lenguajes sensibles al contexto.
Teorema 5.5.7. Los lenguajes sensibles al contexto contienen, propiamente, a los lenguajes independientes del contexto. A su vez, los lenguajes recursivos contienen, propiamente, a los lenguajes sensibles al contexto.
Teorema 5.5.8. Sobre un alfabeto dado, el conjunto de los lenguajes recursivamente enumerable contienen propiamente a los lenguajes recursivos que contienen propiamente al conjunto de los lenguajes sensibles al contexto que 47
contienen propiamente al conjunto de los lenguajes independientes del contexto. Que a su vez, contienen propiamente los lenguajes regulares. Lregular Li.c. Ls.c. Lrecursivo Lr.e
2.4. HIPÓTESIS O TESIS DE CHURCH En la teoría de la computabilidad, la tesis de Church-Turing (también conocido como la conjetura de Church-Turing, tesis de Church, la conjetura de la Iglesia, y la tesis de Turing) es una hipótesis combinadas ("Tesis") acerca de la naturaleza de las funciones cuyos valores son efectivamente calculable, es decir, computable. En términos simples, se establece que "todo lo computable es computable por una máquina de Turing". Se hicieron varios intentos en la primera mitad del siglo 20 para formalizar la noción de computabilidad: Los tres procesos de cálculo (la repetición, el c álculo de λ, y la máquina de Turing) mostraron ser equivalentes-los tres enfoques definen la misma clase de funciones. Esto ha llevado a matemáticos y científicos informáticos para creer que el concepto de computabilidad es exactamente caracteriza por estos tres procesos equivalentes. De manera informal la tesis de Church-Turing afirma que si algún método (algoritmo) que existe para llevar a cabo un cálculo, el mismo cálculo también puede ser llevada a cabo por una máquina de Turing (así como por una función recursiva definida por, y por un λ - la función).
2.5 MAQUINAS DE TURING COMO ENUMERADORES Sea una máquina de turing M multicinta que posee una cinta de solo escritura (salida) cuyo cabezal no se desplaza nunca a la izquierda. M escribe cadenas sobre la cinta de salida separadas por un símbolo especial de separación#. Contenido de la cinta de salida: x1#x2#...#xn#...dondexi ∈∑lenguaje generado por m: g(m) = fx1#x2#: : :#xn#: : :gnótese que l = g(m) es finito a no ser que m no pare 48
nuncatodo lenguaje recursivo puede ser generado por una máquinade turing en orden lexicográfico
2.6 MAQUINAS DE TURING RESTRINGIDAS Se pueden imponer ciertas restricciones a la TM y de todos modos mostrar que aceptan el mismo lenguaje.TM con cinta semi-infinita. La cinta es infinita en un sentido, la cadena de entrada se coloca al principio de la cinta la cual no continúa a la izquierda. También se incluye la restricción de no poder escribirB (blank) en la cinta. Se puede demostrar que un TM normal se puede simular con una TMsemi-infinita usando dos caminos, uno que simula la cinta a la izquierda dela cadena de entrada y otro que simula la otra parte de la cinta. X0 X1 X2 . . . *X−1 X−2 . . . Los estados en la TM semi-infinita son los que tiene la TM original junto con U o L para representar arriba (U) o abajo (L), además de un par de estados para preparar la TM semi-infinita. Las transiciones en la cinta de arriba son iguales a las de la TM original, y las de abajo son contrarias (si la TM original se mueve a la derecha, la TM semi-infinita inferior se mueve a la izquierda y al revés, si se mueve a la izquierda la TM original la otra se mueve a la derecha). Solo se tiene que tener cuidado en las situaciones en donde se cambia de un camino al otro.
2.7 FUNCIONES RECURSIVAS 2.8 FUNCIONES PARCIALES 49
Cualquier dato puede ser codificado como una cadena de ceros y unos (y en consecuencia como enteros no negativos). Funciones totales vs. Funciones parciales Ejemplos Función total de NxN: + Función parcial de NxN: div Todas las funciones computables son funciones parciales de la forma: f : n m
Donde m y n son enteros no negativos
2.8.1 FUNCIONES INICIALES Función cero:
Función sucesor:
( x) x 1
Proyecciones:
23 (7,6,4) 6
11 (7) 7
02 (6,5) ()
EJERCICIO: ¿Cuál es el resultado de 22 (6, ( (5)))
la siguiente llamada a función? Combinación:
f : k n f g : k m n k m g : f g x ( f x, g x)
Composición:
f : k n f g : k m n m g : f g x f g x
Ejercicios:
13 33 (4,6,8)
Recursividad primitiva: suma 0 x = 0 suma (y + 1) x = 1 + (suma y x) 50
2.8.2 Funciones Recursivas Primitivas Funciones recursivas primitivas: construidas a partir de las funcionesiníciales aplicando un número finito de combinaciones, composiciones y recursiones primitivas Algunas funciones recursivas primitivas: Funciones constantes
n
k m
Correspondencia entre cualquier tupla de 5 k 35
elementos y el valor 3 Correspondencia entre cualquier tupla de 3 k 53
elementos y el valor 5 Algunas funciones recursivas primitivas: Función predecesor pred (0) () pred ( y 1) 12 ( y, pred ( y ))
Función monus (x-y) monus( x,0) x monus( x, y 1) pred (monus( x, y ))
Algunas funciones recursivas primitivas: Función equal:
eq ( x, y) 1 (( y x) ( x y)) 51
Función not:
monus (k eq ) 2 1
Funciones tabulares:
Todas las FRP son totales Existen funciones computables que no son FRP: ¡¡ Div es computable y es parcial !! En 1928 Ackerman, presentó una función computable, total y no recursiva primitiva: La función de Ackerman: A(0, y ) y 1 A( x 1,0) A( x,1) A( x 1, y 1) A( x, A( x 1, y ))
Las funciones totales computables se conocen como -recursivas Los matemáticos pensaron que las FRP abarcaban todas las funciones totales computables.
2.9 FUNCIONES RECURSIVAS PARCIALES Son aquellas que se construyen a partir de funciones iníciales aplicando un número finito de combinaciones, composiciones, recursividades primitivas y 52
minimalizaciones. Las funciones recursivas parciales son un súper conjunto de las recursivas primitivas Tesis de Church: La clase de las funciones recursivas parciales contiene todas las funciones parciales computables. Nadie ha podido demostrar que esta afirmación es falsa. La tesis de Church es equivalente a la tesis de Turing Ejercicio 1: monus(0, pred(1))=0
â†‟
f(0)=1
monus(1, pred(2))=0
â†‟
f(1)=2
monus(2, pred(3))=0
â†‟
f(2)=3
monus(3, pred(4))=0
â†‟
f(3)=4
monus(4, pred(5))=0
â†‟
f(4)=5
monus(5, pred(6))=0
â†‟
f(5)=6
…
f es total
2.9.2 El Problema de Correspondencia de Post El Problema de Correspondencia de Post es un problema de decisión indecidible que fue propuesto por Emil Post. Resulta útil para realizar pruebas de indecibilidad. El problema puede ser descrito como sigue: Dado un diccionario bilingüe que contiene pares de frases, es decir, listas de palabras, que significan lo mismo, decidir si existe una frase que significa lo mismo en ambos lenguajes.
Planteamiento del problema La entrada del problema está formada por dos listas finitas de caracteres de algún alfabeto ∑. Ambas listas de igual longitud: 53
L1 = u1…, un L2 = v1…, vn
El alfabeto
∑ contiene
al menos dos símbolos.Una solución a este problema es
una secuencia de índices i1,…, ik, 1 ≤ ij ≤ n, tales que ui1…,uik = vi1…vik
El problema de decisión consiste en saber si existe una solución para el problema planteado. Ejemplo: Sea ∑ = {a; b} y sean dos listas L1 y L2 siguientes: i
ui
Vi
1
aba
A
2
bbb
Aaa
3
aab
Abab
4
bb
baba
Una solución al problema es la secuencia 1, 4, 3, 1 u1u4u3u1 = aba + bb + aab + aba = ababbaababa v1v4v3v1 = a + babba + abab + a = ababbaababa Si eliminamos u4 y v4 de ambas listas, el problema ya no tienesolución Se puede asegurar que el problema es Indecidible 1.- Realice un autómata finito determinista de un objeto utilizada en la vida diaria y dibuje su diagrama de transiciones. Objeto: bolígrafo. Las entradas posibles al sistema son: x1=pulsar ó x2= no pulsar. La respuesta ante una misma entrada no siempre es la misma.
54
Depende también de la historia de las entradas anteriores. Dicha historia de entradas anteriores se resume diciendo que el sistema está en un estado dado. Todo lo que puede pasar en la vida útil de un bolígrafo es que su punta esté dentro o esté fuera. La respuesta depende de la entrada aplicada y de si está dentro o fuera. Además, en la definición de autómata finito debe haber un estado inicial. Podemos elegir un bolígrafo que inicialmente tuviera la punta dentro. Solución.-
2. Descríbalas cadenas que acepta el autómata finito determinista representado en el siguiente diagrama de transiciones:
Solución: La expresión regular es: digito* ° letra ° (digito letra)*
55
La descripción es: cadenas formadas por cero o más dígitos y al menos una letra, estando esta (o estas) en cualquier posición. 3.- Diseñe un diagrama de transiciones para reconocer expresiones aritméticas de longitud arbitraria que comprenden enteros positivos separados por signos de suma, resta, multiplicación o división. Solución:
4.- Modifique el siguiente esqueleto de diagrama de transiciones de manera que esté completamente definido y acepte las mismas cadenas que antes.
Solución:
5. Queremos construir un autómata finito M tal que L(M )={ x my nz p | m, n y p son enteros no negativos}. ¿Es correcta la siguiente solución? 56
Correcta
b) Incorrecta
x
y y
z y
z Solución: B. No admite la cadena yz .
6.- El lenguaje que consiste en aquellas cadenas que no contienen tres x ‟s consecutivas es el lenguaje complementario del que consiste en aquellas cadenas que sí contienen tres x‟s consecutivas. Este último lenguaje es regular, puesto que puede representarse mediante la expresión regular: (xy)* ·x·x·x· (xy)*. A continuación se muestran los respectivos diagramas de los autómatas que reconocen los dos lenguajes anteriores. Solución.-
y
x x
y
x
x
x
x
y x
x
y
y
y
7.- Escriba un código en lenguaje natural o en un lenguaje de programación que ejemplifique un analizador léxico directamente a partir del siguiente diagrama de transiciones: 57
Solución: Estado := 1; Leer el siguiente símbolo de entrada WHILE El último símbolo leído no sea el de Fin de Cadena DO CASE Estado OF 1: CASE Símbolo actual OF Letra : Estado := 2 ; „:‟ : Estado := 3 ;
Dígito : Estado := 5 ; ELSE Salir a rutina de error ; END (* del CASE interno *) 2: CASE Símbolo actual OF Letra : Estado := 2 ; Dígito : Estado := 2; ELSE Salir a rutina de error ; END (* del CASE interno *) 3: IF Símbolo actual <> „=„ THEN Salir a rutina de error END ;
4: IF Símbolo actual <> NIL THEN Salir a rutina de error END ; 5: IF Símbolo actual <> dígito THEN Salir a rutina de error END ; ELSE Salir a rutina de error ; END (* del CASE externo *) 58
END (* del WHILE *) IF ( Estado=1 OR Estado=3 ) THEN Salir a rutina de error END ; 8.- Construya una tabla de transiciones a partir del diagrama del ejercicio anterior.
9.- La intersección de una colección finita de lenguajes regulares siempre es regular. Basta probar pues que el lenguaje descrito en el enunciado coincide con la intersección de una colección finita de lenguajes regulares del alfabeto {x, y, z}. Una tal colección la constituyen los lenguajes L1, L2 y L3 donde: L1 es la colección de todas las cadenas de x, y y z con un número impar de x ‟s L2 es la colección de todas las cadenas de x, y y z con un número impar de y ‟s L3 es la colección de todas las cadenas de x, y y z con un número par de z ‟s Las cadenas que pertenezcan al lenguaje L =L1 L2 L3 habrán de verificar las tres condiciones anteriores. Podemos demostrar que los lenguajes L1, L2 y L3 son regulares mostrando los autómatas finitos que los reconocen: 10.Elabore una lista de los autómatas finitos deterministas basados en el alfabeto {x, y} que tengan un estado; y luego los quetengan dos estados. Solución: 59
y
x
y
x z
3
2
4
5
y
x z
x
y
x 1
x
6 z
z
z
z
y
y
Recordemos que un autómata finito determinista cumple: - Existe un estado inicial. - De cada estado parte un arco (y sólo uno) por cada una de las entradas posibles. 10.a) Autómatas con un sólo estado. Dos posibilidades.
El primero acepta cualquier cadena. El segundo es el que no acepta ninguna cadena. Es posible gracias a que hemos admitido que el conjunto de estados de aceptaciónpuede ser vacío. Si el autómata debiera tener siempre al menos un estado de aceptación, para analizar el lenguaje vacío se deberíautilizar el diagrama de la figura, el cual ya no es de un solo estado por ejemplo:
60
10.b) Autómatas con dos estados. Recordemos que al ser determinista, en cada estado debe haber un arco y sólo un arco para cada símbolo de alfabeto. Elprocedimiento para contar los autómatas es: Nº de autómatas= (Nº de arcos posibles en cada estado) N º de estados posibles actuales Como para un mismo símbolo (en cada estado) debe haber un único arco, el número de arcos posibles en cada estado es igual alnúmero de arcos diferentes en cada estado. Nº de arcos diferentes=N A= (Nº de símbolos de alfabeto)(Nº de estados siguientes posibles) Por tanto: Nº de estados posibles actuales=Nº de autómatas Nº de
Nº de autómatas = [(Nº de símbolos de alfabeto) (Nº de estados posibles siguientes)] Nº de estados posibles actuales = [(2*2)]2= 16. Esto correspondería como sigue:
61
Representación Grafica con Autómatas.-
Hay otras 16 combinaciones, con la única variación respecto a las anteriores es de considerar como estado de aceptación sólo el 1.
62
63
BLOQUE III. COMPLEJIDAD DE PROBLEMAS COMPLEJIDAD DE LOS CÁLCULOS Introducción al estudio de complejidad de los cálculos. La ciencia de la computación es un cuerpo sistematizado del conocimiento concerniente al cálculo, que sesostiene en dos áreas fundamentales: La Teoría de la Computabilidad, basada en las ideas y los modelosfundamentales subyacentes al cálculo, y las técnicas de la ingeniería para el diseño de algoritmos. La Teoría de la Complejidad computacional estudia losrecursos requeridos para resolver un problema como son el tiempo y el espacio; por su parte la teoría de lacomputabilidad se interesa en expresar los problemas como algoritmos sin tener en cuenta la información sobrelos recursos necesarios para ello. Para abstraer las variaciones entre los diferentes sistemas computacionales se utiliza una máquina deTuring como un referente fijo, considerado como un modelo de máquina isofórmica a cualquier otro sistemainformático. La Tesis de Church-Turing nos dice que si la máquina de Turing no puede resolver un problema, ninguna otracomputadora podrá hacerlo, puesto que no existe algoritmo
para
resolver
el
problema.
Por
esa
razón,
laslimitaciones
corresponderían a los procesos computacionales y no a la tecnología. El concepto de algoritmo es el de un procedimiento sistemático y muy bien especificado para realizar una tarea determinada. Uno de los principales objetivos de esta Unidad es presentar una idea de cómo se clasifican los problemas de acuerdo con su complejidad. Diremos que un problema es complejo si su resolución requiere de un algoritmo complejo. Existen dos medidas importantes de la complejidad de una estrategia de solución o algoritmo: 64
La primera medida de un algoritmo es su certeza, es decir, la total confianza de que cuando el algoritmo es aplicado en un cierto problema, encontrará la solución correcta o bien indicaría que el problema no tiene solución. La otra medida es la complejidad de un algoritmo, es decir, la cantidad de trabajo y recursos involucrados por aquella persona o sistema de cómputo que lleva a cabo cada uno de los pasos. En los algoritmos donde se buscan soluciones numéricas el principal indicador de la medida de trabajo o complejidad es el conteo total de las operaciones aritméticas realizadas desde el inicio del programa, algoritmo, hasta la obtención de la solución; de manera inherente a tal conteo, la complejidad del cálculo puede ser vista desde el punto de vista temporal y/o espacial; es decir, consideramos que un cálculo es más complejo que otro si requiere mayor tiempo para concluirse, desde luego, suponiendo que ambos algoritmos son llevados a cabo en entornos idénticos de ejecución (mismo tipo de máquina, por ejemplo); por otra parte, el otro punto de vista, el espacial, nos dice que un algoritmo es más complejo que otro si requiere mayor cantidad de espacio para llevarse a cabo (por ejemplo espacio en memoria). De lo anterior, podemos asumir que la complejidad tanto espacial como temporal puede variar dependiendo del sistema donde se ejecute el cálculo, por ello, para evitar estas variaciones en el análisis de la complejidad de un cálculo, se requiere considerar un sistema computacional (o sistema de cálculo) fijo: tal sistema, para nuestro análisis, es la máquina de Turing, pues esta tiene muchas características semejantes a la de los computadores digitales modernos.
3.1 ANÁLISIS DE ALGORITMOS 65
La Teoría de la Complejidad Computacional es la parte de la teoría de la computación que estudia los recursos requeridos durante el cálculo para resolver un problema. Un cálculo resulta complejo si es difícil de realizar. En este contexto podemos definir la complejidad de cálculo como la cantidad de recursos necesarios para efectuar un cálculo. Así, un cálculo difícil requerirá más recursos que uno de menor dificultad. Los recursos comúnmente estudiados son el tiempo (número de pasos de ejecución de un algoritmo para resolver un problema) y el espacio (cantidad de memoria utilizada para resolver un problema). Un algoritmo que resuelve un problema pero que tarda mucho en hacerlo, difícilmente será de utilidad. Igualmente un algoritmo que necesite un gigabyte de memoria no será probablemente utilizado. A estos recursos se les puede añadir otros, tales como el número de procesadores necesarios para resolver el problema en paralelo. Si un cálculo requiere más tiempo que otro decimos que es más complejo y lo llamamos complejidad temporal. Por otro lado, si un cálculo requiere más espacio de almacenamiento que otro decimos que es más complejo, en este caso hablamos de una complejidad espacial. Es claro que el tiempo que se requiere para efectuar un cálculo en un computador moderno es menor que el requerido para hacer el mismo cálculo con las máquinas de las década pasadas, y seguramente que el tiempo en una máquina de la próxima generación será mucho menor. El estudio de los procesos computacionales, conduce a una clasificación de los problemas en dos grandes clases: los problemas con solución y los problemas sin solución. Los problemassolucionables, requieren gran cantidad de recursos como tiempo y espacio de almacenamiento. El análisis requerido para estimar el uso de recursos de un algoritmo es una cuestión teórica, y por tanto necesita un marco formal. El formalismo y abstracción constituye un método necesario para la programación, considerada como disciplina científica en la que se prioriza la actividad de diseño y razonamiento, sobre la de depuración mediante prueba y error en un contexto artesanal.
66
Los problemas que tienen una solución conorden de complejidad lineal son los problemas que se resuelven en un tiempo que se relaciona linealmente con su tamaño. Aunque actualmente la mayoría de los algoritmos resueltos por lasmáquinas tienen como máximo una complejidad o costo computacional polinómico, es decir, la relación entre el tamaño del problema y su tiempo de ejecución es polinómica. Éstos son problemasagrupados en la clase P. Los problemas con costo no polinomial están agrupados en la clase NP. Estosproblemas no tienen una solución algorítmica, es decir, una máquina no puede resolverlos en untiempo razonable. Existe una escala para medir la complejidad, la que incluye, entre otros: P, Resoluble en tiempopolinómico; P-completo, los problemas más difíciles en P. NP problemas con respuestas positivasverificables en tiempo polinómico y NPcompleto, los más difíciles problemas de NP. Muchas de estasclases tienen una co-clase que contiene los problemas complementarios a los de la clase original. Por ejemplo, si X está en NP, el complemento de X está en co-NP. Sin embargo, no debe entenderseque NP y co-NP sean complementarios; hay problemas que pertenecen a ambas clases, yotros que no están en ninguna de los dos. Cada cierto tiempo se duplica el número deinstrucciones por segundo que los computadores pueden ejecutar. Los profanos y no tan profanospiensan que esto puede inducir a muchos programadores a pensar que basta esperar algunos añospara que problemas que hoy necesitan muchas horas de cálculo puedan resolverse en pocos segundos, soslayando la necesidad de evaluar y obtener algoritmos eficientes. Este artículo pretendedeshacer tal suposición, mostrando que el factor predominante que delimita lo que es soluble en untiempo razonable de lo que no lo es, es precisamente el algoritmo elegido para resolver el problema. El hombre es creativo por naturaleza, la tecnología le ofrece un mundo de posibilidades de exploración, por tanto, no debe sustraerse de los beneficios que ésta le provee. Particularmente, el advenimiento de nueva tecnología debe tomarse como un estímulo para buscar algoritmos más eficientes.
3.2 COMPUTABILIDAD 67
Es conveniente suponer que un sistema computacional es fijo (abstracto), con la finalidad de eliminar las variaciones de un sistema a otro. Brookshear elimina estas variaciones de análisis en sistemas diferentes y evalúa la complejidad de cálculo suponiendo un sistema fijo basado en una máquina de Turing, ya que supone que a partir de ella puede trasladar sus resultados a otros sistemas y mantener la complejidad. Un lenguaje de programación (el preferido por usted) tiene un poder expresivo ya que permite escribir cualquier algoritmo (una idea) en ese lenguaje. Sin embargo, suponemos que existen algunos algoritmos que no pueden representarse haciendo uso de ese lenguaje. Surge la interrogantede si esto se debe a una limitación del lenguaje o es una limitación de los procesos algorítmicos en general (no existe algoritmo). Nos preguntamos, si el lenguaje no permite escribir un algoritmo o esque no existe un algoritmo que pudiera calcular dicha función. Consideremos una clase que contienetodas las funciones computables. Una función es computable si existe un algoritmo para ella, sinimportar como pueda implantarse o expresarse ese algoritmo. Puede construirse un conjunto que contenga todas las funciones computables, para ello se utiliza un método muy usado por los matemáticos, el método recursivo generacional. Este método permite que a partir de un conjunto básico de funciones computables, consideradas como funciones iniciales, puedan construirse las demás combinándolas en forma recursiva y así obtener el conjunto mayor de todas las funciones computables. Puede demostrarse, aunque no es el objetivo de este artículo, que una función de esta clase puedecalcularse por medio de una máquina de Turing. La Teoría de la Complejidad Computacionalse basa en un enfoque no funcional, en donde interesa como se lleva el cálculo y su complejidad enfunción de los recursos que utiliza. La Teoría de la Computabilidad se interesa en hallar una solucióna un problema, mas no se interesa por los métodos específicos de expresar una solución algorítmicaen un sistema computacional; es decir, no interesa cómo se pueda implantar.
68
3.3 HIPÓTESIS DE CHURH La hipótesis de Churh nos dice que una función computable puede identificarse con la clase de las funciones parcialmente recursivas. Una función parcialmente recursiva F: X
X
es aquella cuyo dominio constituye un subconjunto de X, por
ejemplo en la función div: Zx Z
Z,
el par (x, 0)no está en el dominio de F, puesto
que no se puede dividir entre cero. La base de la jerarquía deestas funciones computables consiste en un conjunto de funciones iníciales, a partir de las cualesse construyen las funciones recursivas primitivas mediante composición de funciones. Todas estasfunciones son computables, sin embargo, existen funciones que no son primitivas pero son computables, de estas funciones se dice que no son totales sino parcialmente recursivas. Inicialmente se pensó que todas las funciones recursivas primitivas eran computables, pero Ackerman propuso laconocida función que lleva su nombre A(0,y)=y+1, A(x+1,0)=A(x,1) y A(x+1,y+1)=A(x, A(x+1,y)), lacual es computable pero no es recursiva primitiva. Como esta hipótesis no pone límites al número depasos o cantidad de almacenamiento necesario para la función, supone que las funciones parcialmente recursivas son computables. Una función no es computable a menos que pueda limitarse el cálculo por adelantado o determinar que el cálculo terminará o no en algún momento. Las máquinas de Turing constituyen una herramienta de verificación, pues además de servir como aceptadores de lenguajes formales, pueden considerarse como una calculadora de funciones de los enteros a los enteros. Las funciones calculadas por una máquina de Turing se conocen como funciones parcialmente recursivas, y éstas incluyen a las funciones computables.
69
3.4 COMPLEJIDAD DE UN ALGORITMO Definición La complejidad o eficiencia de un algoritmo se define como el orden de magnitud de los recursos informáticos que requiere el algoritmo para ser ejecutado.
Utilidad El estudio de la complejidad de los algoritmos permite evaluar su coste, y así: 1 Comparar algoritmos entre sí. 2 Averiguar si un algoritmo es factible. Aspectos que intervienen en el cálculo de complejidades Cuáles son los recursos informáticos que hay que estimar. En qué casos (para qué tipo de entradas) hay que estimar la complejidad. Qué significa calcular el orden de magnitud. Qué reglas prácticas existen para calcular complejidades.
3.5 RECURSOS INFORMÁTICOS
Recursos considerados Los recursos informáticos a evaluar son el tiempo (de ejecución) y/o el espacio (de memoria) requeridos por los algoritmos. Ambos dependen claramente del tamaño de la entrada, por lo que se trata de calcular las funciones TA y EA tales que:
TA(n) = tiempo requerido para la ejecución del algoritmo A con una entrada de tamaño n.
EA(n) = espacio de memoria requerido para la ejecución del algoritmo A con una entrada de tamaño n.
70
Cómo estimar los recursos El cálculo del tiempo (similar para el espacio) no debe depender ni del lenguaje de programación utilizado, ni del compilador, ni de la máquina elegida. Solución:
TA(n) = número de operaciones básicas que realiza el algoritmo A con una entrada de tamaño n donde una operación básica es aquella cuyo tiempo de ejecución se puede acotar superiormente por una constante, independientemente del tamaño de la entrada, la máquina, etc.
3.6 CASOS PARA EL ESTUDIO DE LA COMPLEJIDAD Las funciones TA y EA no sólo dependen del tamaño de la entrada, sino también de su contenido: ¡no se tarda lo mismo en ordenar 10 números ya ordenados que en ordenar 10 números totalmente desordenados! Los casos de estudio más habituales son los siguientes: •
El peor caso, caso extremo en el que el número de operaciones a ejecutar (o el espacio requerido) es el mayor posible.
•
El caso medio o caso probabilístico, que representa una situación intermedia (su evaluación suele requerir técnicas estadísticas).
•
El cálculo en el peor caso asegura que los recursos reales consumidos, sea cual sea el contenido de la entrada, nunca rebasarán el valor calculado.
3.7 MEDIDAS ASINTÓTICAS Y ÓRDENES DE COMPLEJIDAD
La complejidad de un algoritmo es importante fundamentalmente cuando el tamaño de la entrada es grande (si hay que ordenar un conjunto de 5 elementos, la eficiencia del algoritmo no importa demasiado, puesto que en cualquier caso será razonable).
71
Por ello, para analizar las funciones TA o EA bastará con estudiar su comportamiento asintótico, es decir, cómo se comportan cuando el tamaño de la entrada, n, es grande. Existen varias medidas para estudiar el comportamiento asintótico de una función.
Una de las más habituales es la medida O(f ) (O grande de f ) que se describe a continuación, que permite obtener cotas superiores. Conjuntos O(f ) más importantes y su ordenación
O(1) complejidad constante O(log n) complejidad logarítmica O(n) complejidad lineal O(np) complejidad polinómica (p=2: cuadrática, p=3: cúbica) O(2n) complejidad exponencial O(n!) complejidad factorial O(1) O(log n) O(n) O(n log n) O(np) O(2n) O(n!) 72
3.7.1 REGLAS PRÁCTICAS Resumen de los puntos anteriores Calcular la complejidad de un algoritmo A= estudiar el comportamiento asintótico de las funciones TA/EA (dependientes del tamaño n de la entrada al algoritmo) en el peor caso o en un caso medio. = encontrar una función f : N
R+
tal que en el peor caso/caso medio se tenga
TA/EA 2 ε O(f ). Observación Dado que los conjuntos O(f ) proporcionan cotas superiores, se tratará de encontrar la menor de todas las funciones f : N
R+
tales que TA/EA ε O(f ) (por
ejemplo, si TA/EA ε O(n2), evidentemente también es TA/EA ε O(n3), pero ... ¡lo segundo no aporta nada!).
Consideraciones previas Todo algoritmo está compuesto por una secuencia de instrucciones. Existen unas reglas prácticas para calcular el coste de cada uno de los posibles tipos de instrucciones. La complejidad de un algoritmo se basa en el coste de las instrucciones que lo componen pero el cálculo depende de si el algoritmo es o no recursivo.
3.8 REGLAS PARA CALCULAR EL TIEMPO DE EJECUCIÓN EN EL PEOR CASO DE LOS DISTINTOS TIPOS DE INSTRUCCIONES. REGLA 1: INSTRUCCIONES ELEMENTALES Se llama instrucción elemental a las operaciones de entrada/salida, asignaciones y expresiones aritméticas en las que no está involucrada ninguna variable que dependa del tamaño de la entrada del algoritmo. 73
REGLA 2: SECUENCIA DE INSTRUCCIONES
REGLA 3: INSTRUCCIONES DE SELECCIÓN
REGLA
4:
INSTRUCCIONES DE REPETICCION
Nota: la complejidad de un bucle PARA i DESDE a1 HASTA a2 HACER J se calcula igual que la de un bucle MIENTRAS salvo que en el caso PARA el coste de la condición B se puede ignorar puesto que es siempre constante.
74
REGLA 5: LLAMADAS A SUBPROGRAMAS En el caso de instrucciones que sean llamadas a otros algoritmos(subprogramas), el coste de la instrucción será el coste del subprograma: EDI
CÁLCULO DEL TIEMPO DE EJECUCIÓN EN EL PEOR CASO DE UN ALGORITMO Depende de si el algoritmo es o no es recursivo. SI EL ALGORITMO ES NO RECURSIVO Su complejidad es el máximo de las complejidades de las instrucciones que lo componen (la complejidad de cada una de estas instrucciones se calcula aplicando las reglas anteriores). SI EL ALGORITMO ES RECURSIVO Para calcular la complejidad de un algoritmo recursivo es necesario realizar los dos siguientes pasos: Plantear la ecuación recurrente asociada con el tiempo de ejecución T del subprograma. Resolver la ecuación recurrente anterior (es decir, encontrar una expresión no recursiva para el valor de T). Las familias de recurrencias más habituales son: 1 Ecuaciones recurrentes obtenidas mediante sustracción 2 Ecuaciones recurrentes obtenidas mediante división 75
Recurrencias obtenidas mediante substracción
RECURRENCIAS OBTENIDAS POR DIVISIÓN.
3.9 ESPACIO Y TIEMPO POLINOMIAL ALGUNOS PROBLEMAS QUE SONPROBABLEMENTE INTRATABLES Para empezar probaremos que dos problemas requieren realmente tiempo exponencial. En un caso, reducimos nuestro problema a un lenguaje el cual, por el 76
teorema de jerarquía, se sabe que requiere espacio exponencial y en consecuencia tiempo exponencial. En el segundo caso, mostramos como reducir nuestros problemas a todos los lenguajes en tiempo exponencial no determinístico y entonces exponer por un teorema de jerarquía de tiempo no determinista [Cook 1973a] que entre ellos debe haber uno que realmente requiera, digamos, espacio 2n.Ahora debemos considerar un problema que tiene que ver con expresiones regulares, esto es, idear algo tal que (a) por lo menos se requiere espacio 2 cn /
log
n
para resolverlo y (b) este requerimiento puede ser probado fácilmente. Después
de que, consideremos un problema de lógica que no fue ideado mucho antes de que su complejidad fuera analizada y donde la prueba de la exponencialidad está fuera de ser directa.
Expresiones Regulares con Exponenciación Considérese una expresión regular sobre un alfabeto, para el cual se asume por conveniencia que no contiene a los símbolos ↑, 0 o 1. Sea r ↑ i la representación de la expresión rr · · · r (i veces), en donde i está escrita en binario. La expresión r puede incluir el operador ↑ (exponenciación). Por ejemplo, ( a ↑ 11 + b ↑ 11) ↑ 10 establece que: {aaaaaa, aaabbb, bbbaaa, bbbbbb}. Asúmase que el operador ↑ tiene una precedencia más alta que los otros operadores. Debemos mostrar que esencialmente requiere espacio exponencial , esto es, espacio 2 p(n), para algún polinomio p(n), si es una expresión regular con exponenciación que denota todas las cadenas sobre su alfabeto (recuerde que ↑, 0 y 1 son usados como operadores y no son parte del alfabeto). Primero damos unalgoritmo espacio-exponencial para el problema.
Teorema (13.14) El problema de si una expresión regular con exponenciación denota a todas las cadenas sobre su alfabeto puede ser resuelto en espacio exponencial. 77
Demostración: Dada una expresión regular de longitud n, debemos expandir los ↑‟s para obtener una expresión regular ordinaria y mostrar que tiene longitud de a lo mas n2n. Entonces, debemos convertir ésta expresión a un AFN de a lo mas n2n+2 estados y probar que si el AFN acepta a *. (Nótese que éste último paso debe ser hecho sin conversión a un AFD, pues el AFD deberá tener 2 n2n+2 estados). Para eliminar las ↑‟s trabajamos de adentro hacia afuera. Probaremos por inducción sobre j que una expresión con ↑‟s, que tiene longitud m, con j 0‟s y 1‟s, tiene una expresión regular ordinaria equivalente de longitud a lo mas m2 j . Base j = 0. El resultado es inmediato. Inducción Lea la expresión r de longitud m desde la izquierda hasta que se
encuentre el primer ↑. Entonces lea de regreso hasta el argumento r 1 de la izquierda de donde se encontró a ↑. Asúmase que ↑ tiene la precedencia más alta, así su argumento debe ser un símbolo simple o debe estar entre paréntesis; en consecuencia ésta extracción es fácil. Sea r = r 2r 1 ↑ ir 3. Reemplace r por r ′ = r 2r 1r 1 · · · r 1r 3, en donde r 1 es escrito i veces. Por la hipótesis de inducción r ′
tiene una expresión regular ordinaria equivalente de longitud a lo mas ( m + (i − 1)|r 1|)2 j −log2 i símbolos. Como 2 j −log2 i = 2 j/i y como |r 1| ≤ m, vemos que:
Si r es de longitud n, entonces seguramente m = n y j ≤ n, así la expresión regular ordinaria equivalente tendrá longitud de a lo más n2n. Ahora, usando el algoritmo del Teorema 2.3 podemos producir un AFN de a lo mas 4n2n= n2n+2 estados. Suponiendo de manera no deterministica símbolo por símbolo, una entrada a1a2 · · · que el AFN no acepta. Usando n2n+2 celdas, 78
podemos, después de cada suposición, calcular el conjunto de estados que han entrado después de que el AFN ha leído la secuencia de los símbolos conjeturados hasta ahora. La entrada necesita no ser escrita abajo, puesto que podemos calcular el conjunto de estados incorporados de este conjunto en cualquier símbolo de la entrada. Si conjeturamos siempre una secuencia de entrada en la cual no se incorpore ningún estado que acepta el AFN, aceptamos; la expresión original no denota a *. Por el Teorema de Savitch podemos llevar a cabo éste proceso de manera deterministica usando espacio n24n. Es fácil concebir una codificación del AFN que puede ser almacenada en O (n32n) celdas, pues cerca de n bits son suficientes para codificar a un estado y el alfabeto de entrada no es mas grande que n. Como n24n> n 32n, se sigue que n24nes una cota superior sobre el espacio requerido. Debemosproporcionar unacotainferior de2cn/lognparaalgunaconstantesobre elespaci orequeridoparaelproblema
dearr iba.Observequeproporcionando unacier tacantidaddeespacioserequieretambién probarquelamismacantidaddetiemp oes requerido(aunqueloopuestonoesver dad).
Teorema(13.15) Existeunaconstantec>0talqueparacadaMTqueaceptael
lenguajeLrcxdeexpresionesregularesconexponenciación quedenotaaΣ∗quetomaame
nudomásque2cn/lognespacio(ypor lotanto 2cn/logntiemp o). Demostración:
ConsidéreseunaMTMdeunacintasimpledeterministaespacio
acotado2n .Paracadaentradaxdelongitudn.
constr úyaseuna
quedenotaΣ∗,endondeΣ
expresiónregular conexponenciaciónEx
eselalf abetodeEx,siysolosi Mnoaceptaax.Por loquehacemos denotetodosloscálculosdeMsobrex.
79
queEx
Σconsistedetodos
lossímbolosdelacintadeM,lossímboloscompuestos[qX],donde
qesunestadoyXun símbolodelacintaysímboloquesirvede marca#. Asúmaseque↑,0yel1nosonsímbolosdemar cado. UnacadenayenΣ∗noesunacadenadeaceptacióndeMsobrexsi ysolosiunaomásdelassiguientesaseveracionessonverdaderas. LaDIinicialestáequivocada. Nohayunestadodeaceptación. CadaDInosesiguedeunapreviaporunmovimientodeM. Enloquesigue,usamoscon juntosdesímbolosparar epr esentar la expresiónregular queeslasumadeéstossímbolos.Deéstamaner a, siΣ={a1 ,a2 ,...,an },entoncesusamosaΣcomounataquigr af ía
paralaexpresiónregular a1+a2+···+ an.Demaneraseme jante tambiénusamosΣ−aparaestablecer laexpresiónregular queeslasumadetodoslossímbol osenΣexceptoa .
Unaexpresiónregular quedenotatodaslascadenasquenoempiezan conlaDIinicialestadadapor: START =ǫ+(Σ−#)Σ + A1+ A2+···+ ∗
An +Σ↑(n+1)(Σ+ǫ)↑(2−n−1)(Σ− B )Σ +Σ↑(2n+1)(Σ−#)Σ
∗
∗
Endond e A=Σ↑1 (Σ−[q0a1])
Σ*
Ypara 2≤i≤n, Ai =Σ↑i(Σ−ai)Σ
∗
80
Elp enúltimoterminodenotaaσ n+1seguidopor hasta2n−n−1
símbolosseguidospor cualquier cosamenosporunblanco, ydenota
cadenastalesquealgunaposiciónentren+1y2ndelaprimeraD I 2n−n−1estánescr itosenbinar io,
nocontieneunblanco.Comony
lalongituddeéste términoesproporcionalan.Elúltimotérmino
denotacadenas,en lascualesel2n+1-e
si
nosímbolonoes#,lacualtambiénesdelongitudproporcional an.Lostérminosr estantes
tienensulongitudproporcionalalognyhayn
+3detalestérminos.
Deéstamaneralalongituddelaexpresionesproporcional anlogn. Cur iosamente,lalongituddelaexpresiónquedenotaunafalsaDI
inicialdominalalongituddelosotrostérminosenEx.
Unaexpresiónregular queobligaaquelacondiciónqueestáahíy quenoaceptaelestadoestarádadapor: FINISH=(Σ−{[qX]}|qesunestadofinal)∗ Estaexpresión esdelongitudconstantedep endientesolodeM.
Finalmente,seaf(W,X,Y)elsímboloque denotaaZtalquesiW,XyYsonlas posicionesi −1,iei+1deunaDI,entoncesZentoncesestar á enlaposiciónidela siguienteDI.Entoncessea MOVE=+ (W,X,Y) Σ∗ WXYΣ
↑(2n−1)(Σ−f(W,X,Y))Σ∗
Estoes,MOVEeslasuma,sobreunnúmerofinitodeter cias
(W,X,Y)desímbolosenΣ,deaquellascadenasconW,XyY ocupandoposicionesconsecutivasenunaDIquetieneunsímb olo incorr ecto2nposicionesaladerecha.Como
lalongituddecada
términoeslinealenn,lalongituddeMOVEeslinealenn .
La
expresióndeseadaesEx=ST ART+
entonceselcálculoaceptadonoestáenEx.Sialguna
81
FINISH+MOVE.SiM
aceptaax,
#[q0a1 ]a2···anB2
cadenaynoestáenEx,entoncesdebedeempezar −n #,cadaDIdebeseguir lapreviaporun
movimientodeM,ylaaceptacióndebedeocurrir en
algunapar te. DeéstamaneraMaceptaax.Por lotantoEx=Σ∗siysolosiM noaceptaax.
Ahora,seaMunamáquinadeTur ingqueaceptaellenguajeLque puedeseraceptadoen2nespacioperonoen2n j/nespacio. El teoremade jerarquíaparaelespacioaseguraquetalMexiste. Supóngasequeh abíaunaMTS(n)espacioacotadaqueaceptaal con juntoLrexdeexpresionesregularesconexponenciaciónde notando
aΣ∗,conunacodificaciónconvenienteLrextieneunalf ab etofinito. Entoncespodríamos reconocer Lcomosigue.
Dexdelongitudnconstr uyaEx,cuyalongitudesproporcional a nlogn.Podemos constr uir Ex proporcional enespacioanlogn deunamanera obvia. Codificar Ex
dentrodelalf ab etodeLrex.ComoMtieneun
númerofinitodesímbolos,lalongituddelacodific acióndeEx
es
cnlognparaalgunaconstantec.EnespacioS(cnlogn),determinesiEx estáenLrex,siesasí, rechacex,sinoaceptax.
La
cantidadtotaldeespacioeselmáximoentrenlognyS(cnlogn).
PuesningunaMTqueusamenosde2n/nespacioyqueaceptaaL existe,debeserque: nlogn+S(cnlogn) >2n /n delocontr ar ioLpodríaseraceptadoenespacio2n /npoeelLema 12.3. Asíexisteunaconstanted>0talquesiS(m)fuesemenorque2dm/logm paratodonúmeromenosparaun con juntofinitodem,
entonces(13.4)seríafalso.
SesiguequeS(m)≥2dm/logm par a algunaconstantedyunnúmeroinfinitodem s. ‟
Corolario 82
Lrexescompletoparaespacioexponencial conr espectoalar educción entiempop olinomial.
Demostración: Enelteorema13.15dimosunareducciónentiemp opolinomialpar a LrexquefuncionaparacadalenguajeLenDSP ACE(2n).Habr íamos podidogeneralizarlo f ácilmentealreducircualquierlenguaje en DSP ACE(2p(n)),paraalgúnpolinomiop,a Lr ex.
DebemosobservarquelacotanlognsobrelalongituddeEx
es
cr íticaparaelTeorema13.15,aunqueparasucorolariohabr íamos podidop ermitir quelalongitudseaalgúnpolinomioen|x|.Si,por ejemplo,solopodríamosprobarque|Ex|≤|x|2 ,entoncesnuestr a cotainferior querequeríamossobreelespacio
Lrexdebióhaber sido2d n
enlugar delaqueteníamos. Teoríasdelacomplejidaddeprimerorden Ahora
debemos considerar unproblemaquerequierepor lomenos
tiemp o2cn,sernodeterminista,yqueseaconocidoquesepueda resolver enespacioexponencial ydoblementetiemp oexp onencial.
Comotambiénpuedemostr ar sequeelproblema esnodeterminista tiemp oexponencial difícilconr esp ectoalasreducciones entiemp o
polinomial,probandounacotainferior queesmejorconr esp ectoala
83
cantidaddetiemp onodeterministaseríaunamejorasobreel teorema12.10,locualesmuypocopr obable.
Unlenguajedeprimer ordenconsistedeundominio(por ejemplo,los enter osnonegativos),uncon juntodeoperaciones(por e jemplo,+,*),uncon juntodepredi cados(por ejemplo,=,<)uncon juntode
constantesescogidasdeldominio,yuncon juntodeaxiomas definiendoelsignifi cadodelosoperadoresypredicados. Paracada
teor íapodemos
definirellenguajedeexpresionesverdaderassobrelasconstantes,operadores,predicado s, variables,losconector eslógicos,∨,∧y¬yloscuantificador es∀y∃.
Ejemplo (N,+,∗,=,<,0,1),endonde Nestálosenter osnonegativos,es
conocidacomoteor íade
números.Elfamosoteoremade incompletés deGodelestablecequeellenguajededeclaracionesverdaderasen teor íadenúmeroses indecidible.Mientr asqueelr esultadodeGodel
pr ecedentealasmáquinasdeTur ing,noesdifícilmostrarsu r esultado.SiunaMTMaceptacuandoempiezaconunacintaen blanco,lohaceporun cálculoenelcualninguna
DIesmasgrande
quealgunaconstantem.Podemostratar unenteroi,enbinar io, comouncálculodeMconDI‟sdelongitudm. La
aseveracióndequeMaceptaaǫ,elcualsesabequees
indecidible,puedeserexpresadocomo∃i∃m(Em(i)),endondeEmes unpredicadoqueesverdaderosiysolosiieslacodificacióndeun
cálculoqueconduceauna
aceptacióndeǫconDInomasgrandeque
m.(Algunosdelosdetallesestánenelejercicio13.37.)Deésta
manera
lateoríadenúmerosesunateoríaidecidible. Hay
unnúmerodeteor íasdecidiblesconocidas.Por e jemplo,
(R,+,=,<,0,1),lateor íaderealesconadición,esdecidible, y 84
debemosmostrarque requieredemanerainher entetiemp ono deterministicoexponencial.Silosreales sonreemplazados por los racionales,obtenemosquelaoracióndearr ibaesotravezverdadera,
puessinlamultiplicación,esimposibleencontraruna asever ación como∃x(x∗x=2)queesverdaderaparalosrealesperonoparalos
racionales.La
teor íadeenter osconadición(Z,+,=,<,0,1) ,llamadaar itméticaPresburger,esdecidible, y
sesabequer equier e
tiemp odoblementeexponencialnodeterministico.Estoes22
esuna
cn
cotainferior delacomplejidad detiemp onodeterministicodela
ar itméticadePr esbur ger .
Ejemplo Antesdeproseguir,consideremos unnúmerodeejemplosenlateor ía
derealesconadición.∀x∃y(y=x+1)esverdadero:dicequex+1 esunrealsixloes. [x = y∨∃z(x
∀x∀y
(y
∨∃z
Tambiénesverdadero:establecequeentredosnúmeros r eales
dif er entespodemos
encontraruntercer real;estoes,losrealesson densos.Laor ación (x
∃y∀x
Esfalsa,puesparacadanúmerorealyexisteunnúmerorealmas grande.Notequenotenemosmaneradedecidirsiunaoraciónes verdadera;ladecisióndepende
de
laspropiedadesyaconocidasdelos
númerosreales,conloqueseasumeellector estáf amiliar izado. Unproced imientodedecisión
paralosnúmerosrealescon
debemosempezarnuestr oestudiodelosrealesconadiciónpordar unpr ocedimientoquerequiereespacioexponencial ytiemp o doblementeexponencial.Paraempezar,pongamosnuestr a 85
adición
declaracióndadaenformanormal,endondetodoslos cuantificador esseaplicanalaexpresiónentera.Esfácilobtener una expresiónenéstaformasiprimero
renombramoscuantificador esde
variablesyasíellasseránúnicas yentoncesaplicamoslasidentidades. ¬(∀x(E))=∃x(¬E)
(E1 )∨E2=∀x(E1∨E2)
∀x
Ycuatroreglassimilares obtenidasdelasanter ior espor inter cambiar y
∀ ∃y/oreemplazando ∨
por ∧.Esteprocesonoesmásdeldoble
delongituddelaexpresión;losúnicossímbolosquesepudier on
agregaralaexpresión
sonunpardepar éntesispor cuantificador . Ahora tenemoslaf ormula Q1x1 Q2 x2···Qmxm F(x1,x2 ,...,xm )( 13,5)
EndondelosQi‟ssoncuantificador esylaformulaFnotiene cuantificador es.Fespor lotantounaexpresiónBooleana cuyos
operandossonátomos,unátomoesunaconstanteBooleanaouna expresióndelaformaE1 opE2 ,endondeopes=o
yE2
son
sumasdevariablesylasconstantes0y1.SabemosqueFesdeésta formaporqueninguna otracombinacióntienesentido.Estoes,+ puedeser aplicadosoloavariablesyconstantes,
puedenser aplicadossoloaexpresionesquetienencomop osibles valoresaFalso/Ver dader o.
Paradeterminar laveracidadofalsedadde(13.5)sustituimos r ep etidamenteparaelcuantificador másinter nounacuantificación acotada,lacualessímbolológico“or”(enlugar de∃)o“and”(en lugar de∀)deunnúmerogrande,pero finito,númerodetérminos.
Supóngasequeen(13.5)s efi janlosvaloresx1,x2,...,xm−1 .Cada 86
solose
átomoinvolucradoconxmpuedeponerseenlaformaxmopten
dondeopes<,=
o>ytesdelaformam−1c0+.cixi,i=1e ndondelosci‟ssonracionales.Supóngasequetodos estosátomos
sonxmopti,1≤i≤k,endondet1≤t2≤···≤tk paralosvalor es
dadosdex1 ,...,xm−1.Paraalgúnvalor dexmenelrango ti
maneralaveracidadde(13.5)esdep endientedel actualvalor dexm enéster ango. Estonosconducea laobservaciónquelosti‟spar ticionanla
línea
r eal
enunnúmerofinitodesegmentosylaveracidad de(13.5)depende solodelsegmentoenelcualestáxmynodelactualvalor dexm .De
éstamanerapodemosprobar(13.5)probandounode losvaloresde
xmdecadaunadeunnúmerofinitoderegionescomolosugierela
Figura13.6.
Comolosvaloresdex1,x2,...,xm−1
variará n,realmentenosabemos
elordendelosti‟s.Ma saun,probandoxm=ti,paracadai, 87
xm=1(ti+tj)paracadai=j,yxm=±∞.Sabemosqueno imp or taelordendelosti‟s,estamossegurosdetenerunaxmr epr esentativaencadainter va lodelaFigura13.6ytambiénenlos mismosti‟s,endondelosátomoscon eloperador =puedenllegar a ser cier tos.
SesiguequesiQm=∃,entonces∃xmF(x1 ,...,xm )puedeser r eemplazado porestoes,por elsímbolológico“or”dek(k+1)/2+2términos,cada unodeloscualesesFconunasubstitucióndexm.SiQm=∀,se puedehacerunreemplazosimilar sustituyendo∨por ∧.
SiFtienekátomos,F′
tienek[k(k+1) /2+2]átomos,además F′
tienealomask3
átomos,parak≥3.También,siloscoeficientesen losátomosdeFsonelradiodelosenter osdealomasrbits,
entonces,despuésdeagrupar términos,resolver paraxmycalculando
elpromediodedosti‟s,encontramosqueloscoeficie ntesenlosátomosdeF′ seránproporcionesdeenterosconnomasde4r+1 sesiguequecomoa,b, cydsonenter osder -bits,
Eslaproporcióndeenter osmásr -bits,y
88
bits.Deesto
Eslaproporcióndeunenterode(2r +1)bitsyunenterode 2r -bits. Parar ≥1,entonces,loscoeficie ntesenF′
nosonmásdecinco
veceslalongituddeloscoeficie ntesdeF. Siser epiteelprocesodearr ibaparaeliminar todosloscuantificador es
yvariables,finalmenteproduceunaformulaconsolooperadores
lógicos, =
enter osdealomás5mrbits.Elnúmerodeátomosesa lomás
entreconstantesde5mrbits,y
comocadaátomoesuna relación k,myrsonmenoresquen,lalongitud
delaexpresiónesalomás
dn n 22 ,paraalgunaconstantec(notequen3
2n 22 ).Podemosevaluar
unátomodelaformaa /b
alcalcular ad−bcy compar ándolo
con0.Deéstamanera,laexpresiónfinalenterapuedeser evaluada enelcuadradodesulongitud.Enconsecuencianuestr o dn pr ocedimientodedecisióntoma22 tiemp o,paraalgunaconstanted. Elpr ocedimientocomolohemosdado tambiéntomaespacio
doblementeexponencial.Masaun,podemos
reducirelespacio aun
espaciosimplementeexponencialalevaluar Fr ecur sivamente. Estamoslistosparaverquenecesitamossolouncon juntofinitode valoresparacadaxi.Losvaloresxi
estarándadospor laf ormula
j=1a jx j,endondelosa j‟ssonracionales,quesonpr op or ciones
deenter os5m− j+1bits,endondereselnúmerodebitsenla constantemasgrandedelaformulaoriginal,F;notequer ≤logn. Deéstamaneralosvaloresparax1sonracionalesqueson proporciones deenter osdealomás5mrbits,losvaloresparax2son proporciones deenter osdealomás5m+1 r bits,etc.Deéstamaner a solonecesitamoselcicloconlosvaloresparacadaxi
89
queesaloas
de52mrbits.Usamosunpr ocedimientorecursivoEVAL(G)que determinasiGesverdaderacuandolasvariables tomanlosvalor es±∞ycualquierproporció ndeunenterode 52mrbits. SiGnotienecuantificador es,entoncessoloconsisteder elaciones
lógicasyar itméticasentrenúmerosracionales,así suveracidadpuede
serdeterminadadir ectamente.SiG=∀x(G′ ),EVAL(G)llamaa
EVAL(G′′ )paratodaG′′
formadadeG′
alreemplazar xpor±∞o
unaproporciónenterade52mrbits.EVAL(G)esverdaderasi EVAL(G′′ )nosregresaverdadparatodaséstasexpresionesG′′ .Si
G=∃x(G′ ),hacemoslomismo,peroEVAL(G)nosregresaverdadsiemprequealgunaEVAL( G′′ )esverdadera.
Esfácilverificar quenomásdem copiasdeEVALsonactivas simultáneamente.Losar gumentosparalasllamadasactivasaEVAL
puedenserpuestasenunapila,yéstapilautilizaespacioO (m52mr ). Deéstamanera,siFesunaexpresióndelongitudn,podemosevaluar dn aFenespacio2cnytiemp o22 paraalgunas constantescyd. Unacotainferior
ahora
semostraráquelateor íaderealesconadiciónr equier e
esencialmentetiemp oexponencial nodeterminista.Senecesitanuna seriedelemasparamostrarquelamultiplicaciónyexp onenciación
pornúmerosenter osacotadospuedenserexpresadospor formulas cor tas. Lema(13.10)Existec>0talqueparacadanhayunaformulaMn (x,y,z)quees verdaderasiysolosi xesunenteronon egativoestr ictamentemenor n que22 ,yxy=z.Además
|Mn (x,y,z) |
puedeser constr uidodenentiempopolinomialenn.
90
Demo str ación:
Mk +1(x,y,z)=∃u1···∃u5∃x1···∃x4
[Mk(x1,x2 ,u1) x=u1+x3+x4
∧
u2)∧Mk(x1 ,u2,u3)
∧Mk(x2,y,
u4)∧Mk(x4,y,u5)
∧Mk(x3,y,
z=u3+u4+u5]
∧
(13.7)
Estoes
u1=x1x2
x=x1x2+x3+x4 ,
u2=x2y,u3=x1x2 y,u4=x3 y,u5=x4 yyz=x1x2 y+x3 y+x4 y La
condicióndequecadaxi
esunenteromenorque22
eselprimer ar gumentodealgunaMk.
porquecadaxi La
formula(13.7)tienecincocopias deMk,asíparecequeMk +1
debeserpor lomenoscincovecestangrandecomo Mkestohar ía deMnseaexponencial ennynolinealcomo
quelalongitud
habíamosdicho.Noobstante,podemos
usar el"tr uco"
delTeor ema 91
13.10parareemplazarvariascopiasdeunpredicadoporunasimple copia. Estoes,podemosescr ibir Mk+1 (x,y,z)=∃1···∃u5∃x1···∃x4
[x=u1+x3+x4∧z=u3+u4+u5 r
∧∀ ∀s∀t
[¬(r =x1∧s=x2∧t=u1)
¬(r =x2∧s=y∧t=u2)
∧
¬(r =x1∧s=u2∧t=u3)
∧
¬(r =x3∧s=y∧t=u4)
∧
¬(r =x4∧s=y∧t=u5)
∧
(r,s,t)]].
∨Mk
Lo cual tiene un número constante de símbolos más de los que Mk tiene. Unpuntodemenorimportanciaesque
siintroducimoslosnuevos
nombresdevariablesparacadaMk,debemosintroducir eventualmenteunfactorlogndentrodelalongituddeMn,pues comolosnombresdevariablesdebenestarcodificadasenunalfabeto
fi jo
enellenguajedeformulasverdaderas.Noobstante,lasreglasde alcanceparacuantificarformulasnospermitereutilizarvariables
sujetasalarestricciónquelasdocenuevasvariablesintroducidasen notienenconflictosconlasvariablesindependientesx,y,
éstamaneraMnrequieresolo15diferentesvariablesylalongitudde sucódigoesproporcionalalnúmerodesímbolos. ObservequeMn(x,0,0)establecequexesunenteromenorque22. Deéstamanerapodemoshacerafirmacionesacercadeenteros
pequeñosenlateoríadelosrealesconadiciónusandoformulasmuy cortas.
Lema(13.11)
92
Mk yz.De
Existeunaconstantec>0talqueparacadanhayunaformula Pn(x,y,z)queesverdaderasiysolosixyzsonenterosenelrango
0≤x,z<22
yyx
=z.Además|Pn|≤c(n+1)yPn puedeser construidaapartirdenentiempopolinomialenn.
DEMOSTRACIÓN ConstruimosporinducciónunasucesióndefórmulasEk(x,y,z,u,v,w)talqueEk tieneunaconstrucciónexponencialy multiplicativadentro.Larazónparahacer esto esquedeseamos expresarEk entérminosdemuchascopiasdeEk−1 yentoncesusarel cuantificadoruniversalparaexpresarEk Ek−1.Nopodríamoshacer esto
entérminosdeunacopiade
conPk,puesunafórmulaparaPk involucraa Pk−1
yaMk−1.
UsandovariascopiasdeEk,podemosdecirqueexistenenteros x1,x2,x3,x4enelrangode0≤xi≤22 talesque:x=x1x2+x3+x4
y
yk=(yx1)x2yx3yx4
Finalmente,usamosel"truco"
delTeorema13.10paraexpresar
entérminosdeunacopiadeEk y unnúmeroconstantedesímbolos adicionales.
93
Ek+1
Porúltimo,podemosescr ibir :Pn (x,y,z)=En(x,y,z,0,0,0). Loanter ior nosdicequez=yk,yxyysonenter osenelrango 0≤x,z<22n Paramejorarlalegibilidaddeloquesigue,usaremoslassiguientes abreviaciones,2paraabreviar1+1,2xparax+x,x≤ypara
x
reemplazadas,introduciendo
unavariableexistencialmentecuantificada,digamosx,yafirmemos
quex=2nox=abporPn(n,2,x)oMn(a,b,x).Estotambién incrementalalongituddelasformulasporunfactorconstante. Nos
propondremoscodificarcálculos delamáquinadeTuringcomo
númerosenteros.SeaMunaMTNacotadaentiempo2n.Siel númerototaldesímbolosdelacinta,símboloscompuestosyel marcador#esb,entoncesuncálculodeMesunenteroxenel rangode0≤x
dicadoqueinterrogaali-esimodigito enlarepresentaciónb-ariadex.
Lema(13.12)
94
Paracadanybexisteunaconstantec,quedependesolodeb,tal quehayunaformulaDn,b(x,i,j)queesverdaderasiysolosixei
sonenteros,0≤x
+1)+1,0≤i<2n,yxi,el(i+1) -
esimodígitodexcontandodesdeelextremodeordeninferiordela
representaciónb-
ariadex,esj.Másaún|Dn,b|≤c( n+1),yDn,b puedeserconstruidodenybentiempopolinomialennyb.
Demostración: Para cada b existe una constante s tal que b(2n+1) 2+1 ≤ 2 2sn todan.Deéstamanerasixesunenteroenelrangocorrecto,puede serexpresadacomom[Psn((2n+1)2.b.m) ∧ 0≤x
Teorema(13.16) Cualquieralgoritmonodeterministaparadecidirsiunaformulaenla teoríadeprimerordendelosrealesconadiciónesnecesariamente verdadera,paraalgunaconstantec>0,toma2cnpasosparaun númeroinfinitoden‟s. Demos tr ación:
La
pruebaesmuysimilarenesenciaalapruebadelTeorema13.1.
SeaMunaMTNarbitrariaacotadaentiempo2n. Aquí,lasDI‟sen uncálculodeMconsistendemasbien2nsímbolosquep(n)comoen elTeorema13.1.Seabelnúmerototaldesímbolosdelacinta, símboloscompuestosy#‟s.EntoncesuncálculodeMsobresu entradadelongitudnconsistede[(2n+1)2+1] Podemosconsiderarestoscálculoscomounenteroi 95
–dígitosbinarios.
enelrangode
0≤i<22
paraalgunaconstante s.Porconveniencia,tomamoslos
dígitosdeordeninferiordei,
paraestar enelfinalizquierdo del cálculo. SeaxunaentradadelongitudndeM.ConstrúyaseunaformulaFx, queesverdaderasiysolosiMaceptaax.Fx
esdelaforma∃ i(...),
endondelaformulasinlosparéntesisafirmaquei
esuncálculo
aceptadodex.EstaformulaesanálogaaladadenelTeorema13.1. Losprimerosn+1símbolosdelcalculoson#[q0,a1,m]a2···an,asumiendoquex=a1a2··· an,q0
eselestadoinicialymescualquier
eleccióndelprimermovimiento.Paradecirquelosprimerosn+1 movimientosdelcálculosoncorrectos,decimosqueexistenuyj talesque,elvalordeurepresentaa#[q0,a1,m]a2···an paraalgunamei=bn+1j+uparaalgúnenteroj. DebemosescribiréstaformulaenO(n)
–espacioentiempoquees
polinomialenn.Porinducciónsobrek=2,3,...,n+1podemos escribirunaformulaCk(v)convariableindependientev,lacual afirmaqueelvalordeveselvalornuméricodelosprimerosk símbolosdelcálculo.Paralabase,k=2,simplementeescribimosla formulaC2(v)=(v=p1∨v=p2∨···∨v=pn). Endondelasp j‟ssonlosenterosrepresentadospor#[q0,a1,m]para elconjuntofinitodevaloresdem.Porlainducción,Ck(v)=∃ (Ck−1(w )∧ v=bw+ak−1),e ndo ndelasak‟sso ntomadasdevaloresnuméricosdelsímbolode cintaak−1.ParaevitarusarnvariablesparaexpresarCn+1,lascuales haríansulongitudO(nlogn),alternamosentredosvariables,por ejemplovyw,comoconstruimosC2,C3 ,...,Cn+1. La
fórmuladeseadaafirmaqueCn+1(u)ei=bn+1j+u paraun
enteroj.LaúltimaafirmaciónessimilaralaquehicimosenelLema13.12,ylatécnicanoserá
repetidaaquí. 96
ParaexpresarquelaDIinicialfuecorrectaenelTeorema13.1 requirióafirmarque“aproxima damente”p(n)celdasco nteníanel símboloblanco.Estofuedotadoporelsímbolológico ∨ dep(n) objetos.Ahora,debemosafirmarque2nceldascontienenelsímb olo blancoydeéstamaneranopodemosusar elsímbolológico∨de2n formulas;éstaseríaunaformulamuylarga.Encambio
sise
usanlos
cuantificadores∀ jyseafirmaquetambiénjnoesunenteroenel
rangon+2< j≤2n+1oqueelj-esimosímboloesunblanco,el cualsedenotapor0.Deéstamaneraescr ibimos∀ j[¬Msn( j,0,0)∨¬(n+2≤ j≤2n+1)∨Dnb(i, j,
0)]
LasformulasquefuerzanaquelaúltimaDIcontengaunestadofinal
yfuerzanaquecadaDIsesigadelapreviaDIporquedelaelección delmovimientoincrustadoenlaDIpreviasontrasladadosdemanera similardelastécnicasdelTeorema13.1.Teniendo
esto
hecho,
tenemosunaformulaEx,cuyalongitudes
proporcionalan,quees
verdaderasiysolosiMaceptaax.
SupongaqueMaceptaunlenguajeL
entiempo2nelcualnoes
aceptadoporcualquierMTN 2n/2espacio-acotada.(Laexistenciade tallenguajesesiguedelajerarquíaNTIMEdeCook[1973a],lacual nohemospr obado.) PodemosreconoceraL
comosigue.Dadaxdelongitudn,produce
queesverdaderasiysolosixestáenL.Ahora
laformulaEx siT(n )
esentiemponodeterminista,essuficiente
aceptarelconjuntode
formulasverdaderasenlateoríadeprimerordendelosrealescon
adición,podemos
determinar sixestáenLentiempop(n) +T(cn). Entoncesp(n)+T(cn)>2n/2paraunnúmeroinfinitoden‟s,delocontrario,porelL ema12.3
reconoceríamosaLentiempoalomas2n/2,paratodan.SesiguequeT(n)≥2dn paraalguna d>0. 97
Corolario La
teoríadelosrealesconadiciónesdifícilentiempoexponencial
conrespectoalasreduccionesentiempopolinomial.
Demo str ación:
La
pruebaesunageneralización
fácildelapr ecedentereducciónde
unaMTentiempo2nnodeterminista.
3.10 LA CLASE DE PROBLEMAS NP
INTRODUCCIÓN La complejidad computacional estudia el coste de la resolución de un problema. El esfuerzo necesario para resolver un problema de forma eficiente puede variarenormemente. Como unidad de medida del tiempo de ejecución se suele utilizar la Operación Básica, para que el rendimiento del algoritmo sea independiente de la potencia delordenador, la calidad del compilador, la habilidad del programador, etc. Los recursos comúnmente estudiados encomplejidad computacional son:
El tiempo: mediante una aproximación al número de pasos de ejecución que un algoritmoemplea para resolver un problema.
El espacio: mediante una aproximación a la cantidad de memoria utilizada para resolver elproblema.
Clases de Complejidad
98
La mayor parte de los problemas en teoría de la complejidad tienen que ver con losproblemas de decisión, que corresponden a poder dar una respuesta positiva o negativa a un problema dado. Los problemas se clasifican en conjuntos o clases de complejidad (L, NL, P, PCompleto, NP, NP-Completo, NP Duro...) Nosotros nos vamos a centrar en las clases P y NP y fundamentalmente en esta última.
3.10.1 PROBLEMAS P Y NP LA CLASE P contiene aquellos problemas de decisión que pueden ser resueltos en tiempo polinómico por una MT determinista, esto es, aquellas en las que para cada par estado y símbolo exista a lo sumo una posibilidad de ejecución. Los problemas de complejidad polinómica son tratables, es decir, en la práctica se pueden resolver en un tiempo razonable.
LA CLASE NP contiene los problemas de decisión que son resueltos por una MT no determinista en tiempo polinómico y de ahí su nombre: Non-Deterministic
Polynomial-time. Naturalmente, cualquier problema en Ptambién se encuentra en NP: ✔
Si una máquina de Turing determinista resuelve elproblema, una no
determinista también y en igual tiempo(MTD es un caso particular de MTND). Pero ¿qué relación existe entre la clase P y la clase NP? Saber si P=NP o P≠NP es el más importante problema abierto en computación
teórica. Demostrar que las clases son distintas es uno de los problemas premiados con 1 millón $. Aunque el enigma está lejos de resolverse, parece que las clases son distintas. Así que de momento:
99
Como ejemplos de problemas NP tenemos:
El problema del TSP visto en prácticas.
Bin Packing, que consiste en dada una secuencia de números, empaquetarlos en el mínimo número de latas posible, teniendo en cuenta que cada lata tiene capacidad M y la suma de los números introducidos en la lata nopuede exceder el valor M. Los problemas de satisfactibilidad (SAT) de los que hablaremos a continuación. Problema de satisfactibilidad(SAT) El problema de satisfactibilidad (SAT) es un problema de lógica matemática y la teoría de la computación. La satisfactibilidad proposicional es el problema de decidir si existe una asignación de 0´s y 1´s a los átomos de una fórmula proposicional que la hacen verdadera. Se puede asumir que las instancias SAT están expresadas en FNC sin pérdida de generalidad. Ejemplo: La asignación de valores de verdadque satisfacen la fórmula (P
¬ Q) ( Q
R) ( ¬ R ¬P) es P = Q = 1 y R = 0, por lo que la fórmula es
satisfactible. Ejemplo: ( ¬P ¬ Q) ( Q P) (¬P Q) (P ¬Q)¿Es satisfactible? 100
La manera obvia para resolver un problema deeste tipo con n variables es generarsistemáticamente todas las combinacionesposibles (2^n) y parar al encontrar la solución. Eso está bien para n pequeños....si no el tiempocrece exponencialmente incluso para valores de nno muy grandes.
DAVIS-PUTNAM ➔ A
comienzos de los sesenta, M. Davis y H. Putnamdescubrieron un algoritmo
sencillo que mejoraligeramente la búsqueda exhaustiva (su coste no deja deser exponencial).Se basa en aplicar una regla de resolución que eliminalas variables una por una y añade todos los resolventesal conjunto de clausulas.Se trata de un algoritmo completo: Si existe solución laencuentra. Sea E la expresión en FNC para la que se busca la asignación, elpseudocódigo del algoritmo sería:Función partir (E) 1. Si E contiene la cláusula vacía, el algoritmo termina y devuelve f. 2. Si E no contiene clausulas el algoritmo finaliza devolviendo laasignación parcial que teníamos en ese momento. 3. Seleccionar la siguiente variable Xi sin asignar de la expresión E 4. partir (E(Xi=0)) 5. partir (E(Xi=1))
101
SAT ∈NP Porque es un problema de decisión Porque podemos construir una máquina de Turing No Determinista que resuelva el problema en tiempo polinómico. Una MTND para SAT se construirá de la siguiente forma: 1. Emplear la parte no determinista para adivinar yescribir cada una de las posibilidades (2^n siendo n elnúmero de variables). 2. Para cada una de las 2^n posibilidades(asignaciones) se comprueba de manera deterministasi hace satisfactible la fórmula. Sea E la expresión en FNC con N variables. En nuestro caso 5 por simplificar a las que llamamos X1,X2...X5. Nuestra MTND tendrá 2^N cintas, cada una con una de las posibles asignaciones a las variables al principio y la expresión a continuación:
102
La máquina constará de dos partes: La primera, no determinista para copiar a la izquierda de la cinta cada combinación posible (una vez identificado el número de variables). La segunda, determinista para asignar cada combinación a las variables y finalmente dar el veredicto. Si al menos una asignación hace satisfactible la expresión entonces la fórmula es satisfactible.
Turing en su tesis doctoral introdujo un nuevo concepto: Lasmáquinas conoráculos. Son máquinas estándar que incluyeninstrucciones extra para preguntar al oráculo e incorporar lasrespuestas a la cinta. Son equivalentes a una MTNDCon este concepto, la demostración anterior se reduciría a la
últimaparte de lo anterior con un oráculo capaz de proporcionarnos entrelas 2 ^N combinaciones para N variables una combinación que satisfaga la fórmula (si existe). Ahora nuestra máquina se rige por la contestación del oráculo (tercer carácter)
103
Al hablar de satisfactibilidad a muchos se les habrá venido a lacabeza el famoso juego del Sudoku.
Este juego sepuede expresar como un problema SAT con 729 variablesproposicionales y una fórmula en FNC de 8829 cláusulas.
TEOREMA DE COOK Un problema de decisión es NP-completo si todo problema en NP puede reducirse a él en tiempo polinomial. Si tienes un problema NP tienes una MT-ND que lo resuelve en tiempo polinomial p(n), siendo n el tamaño del problema. “El
teorema de COOK establece que el problema de satisfactibilidad (SAT) es NPCompleto”.
Si tenemos un problema NP, entonces existe (y conocemos) una MTND que lo resuelve en tiempo polinomial conocido p(n). Vamos a transformar esa máquina MT-ND particular en un problema de satisfacibilidad (empleando en ello un tiempo polinomial en n). Si se soluciona este problema de satisfacibilidad, se obtiene también la solución del problema NP original. Habremos demostrado así que todo problema NP se puede transformar al problema de satisfacibilidad y por tanto el problema de satisfacibilidad es NP-Completo.
104
Paso de la máquina de Turing a problema de satisfacibilidad Para pasar a un problema de satisfacibilidad la MT-ND que resuelve el problema NP dado, lo que vamos a hacer es describir la MT-ND en forma de cláusulas de lógica proposicional.
Definición de los estados La MT en el momento t debe estar en un único estado. Para describir esto definimos un conjunto de variables S(t,q). S(t,q) es verdadera si en el momento t la MT esta en el estado q, y falsa en caso contrario. Para conseguir que en cada momento el estado sea uno sólo, empezamos a definir la fórmula con las siguientes cláusulas: [S(t,q) → ~ S(t,q’)] con q, q‟ estados de la MT tales que q≠q‟ y
t = 0,1...p(n), tiempo de ejecución de la MT.
Definición de la cinta Definimos una serie de variables T(t,c,s), que representarán la cinta. T(t,c,s) es cierto si la cinta de la MT tiene el símbolo s en la celda c en el momento t , y falso en caso contrario. Para asegurar que dichas variables se comportan como una cinta, añadimos a la fórmula las cláusulas: [T(t,c,s) → ~ T(t,c,s’)] con t = 0,1,...,p(n), c = [- p(n),p(n)] ys, s‟ símbolos del
alf abeto abeto de la MT tales que s ≠s‟.
Definición de cabezal Definimos las variables H(t,c) para representar el cabezal de laMT. H(t,c) es verdadero si el cabezal de la MT está en la celda c en el momento t, y falso en
105
caso contrario. Añadimos las cláusulas [H(t,c) → ~ H(t,c’)] con t = 0,1,...,p(n); c,c‟ = [-p(n),p(n)] y c ≠c‟. Además, para asegurar que en la cinta lo único que se modifica es loque está debajo del cabezal, añadimos las cláusulas: [T(t,c,s) ^ ~ H(t,c) → T(t+1,c,s)] con t = 0,1,...,p(n) y c = [-p(n),p(n)]
Finalmente, cada transición de la MT se transforma en un conjunto de cláusulas, como sigue: [T(t,c,s) ^ S(t,q) ^ H(t,c) →S(t+1,q‟)] [T(t,c,s) ^ S(t,q) ^ H(t,c) →H(t+1,c‟)] [T(t,c,s) ^ S(t,q) ^ H(t,c) →T(t+1,c,s‟)]
con t = 0,1,...,p(n), c = [- p(n),p(n)], s y s‟ símbolos del alfabeto y q y q‟ estados. c‟ es (c+1) o (c-1), según indique la transición.
Condiciones iníciales H(0,0), en el instante t = 0 el cabezal esta en c = 0; S(0,0), en el instante t = 0 el estado es q = 0; La descripción del problema está en las celdas de la 1 a la n: T(0,i,s(i)) con i = 1,2,...,n. El problema de satisfacibilidad que hemos construido (en tiempo polinomial en n) es tal que sólo tiene una solución. Dicha solución incluye necesariamente como T(0,*,*) el estado de la cinta inicial (con el problema NP dado), como T(1,*,*) el estado de la cinta tras un paso de la MT, en T(2,*,*) el estado de la cinta tras dos pasos de la MT, ..., y en T(p(n),*,*) el estado final de la cinta, es decir, la solución del problema NP dado.
106
Por tanto hemos demostrado cómo convertir (en tiempo polinomial) cualquier problema NP a un problema SAT tal que, si se resuelve dicho problema SAT, se obtiene la solución del problema NP. Luego SAT es NP-Completo. ¿Dónde quedó el no-determinismo?. Una MT-ND puede ser vista como una MT que disponga de elemento adivinatorio que llamaremos oráculo. El oráculo forma parte de la cinta de entrada de la MT y se sitúa a la izquierda de la posición inicial delectura.(dibujo de la cinta de entrada de la MT). Así dispondremos de una MT-D (máquina de Turing determinista) en cuya cinta de entrada tenemos un oráculo y la descripción del problema, en nuestro caso un problema NP genérico. El oráculo siempre da el camino correcto a seguir.
11.- Cualquier lenguaje finito puede expresarse como la unión finita de los lenguajes que constituyen cada una de sus cadenas. Es decir, si L = { ω i}i=1…n, y Li ={ ω i},entonces L = { U Li}i=1…n. El diagrama seria:
107
12.- Muestre que si un autómata finito determinista es capaz de aceptar un número de cadenas infinito, entonces debe aceptar una cadena que consista en la concatenación de tres segmentos tales que cualquier repetición del segmento central (que es no vacío) dé como resultado otra cadena aceptable. Esto se conoce como lema de bombeo (“pumping lemma”), pues indica que pueden generarse otras cadenas aceptables bombeando o ampliando una cadena aceptable. Solución: El autómata es finito -> El número n de estados es finito El número de cadenas es infinito ->Para cualquier c1 de longitud l1, existe una cadena c2 de longitud l2>l1. Estos dos hechos implican el que existan cadenas de longitud l>n. Es decir, existen cadenas en las que algún estado es recorrido más de una vez. Estas cadenas pueden ser de esta forma:
Nota: Observemos que al llegar al extremo final del segmento central, nada impide que ocurra la entrada que provoca la vuelta al extremo inicial de dicho segmento. 108
Por tanto, es posible que se repita cualquier número de veces; y posteriormente recorrer desde Sj hasta Sn, con lo que son admisibles cadenas con un número cualquiera de repeticiones del segmento central. 13.- Dada la cadena. Describa el significado. a). (z U y)* · x
Cualquier combinación de z e y seguida de x , o bien una única x b). ((x·x*)·y·y*)) Cadenas que empiezan por una sucesión de xs (con al menos una x ) y termina con una sucesión de ys (con al menos una y ). c). ((x·x*)U(y·y*)) Cadenas de xs con al menos una x y cadenas de ys con al menos una y . d). ((x*·y*)·z)) Cadenas formadas por cero o más xs seguidas de cero o más y’s seguidas de cero o más z’s. 14.-Genere todas las cadenas que consisten en un número impar de x . x · (x · x) * 15.- Genere todas las cadenas que consisten en un número impar de x’s y un número par de y’s.
109
Veremos primero cuál es el autómata finito que reconoce este lenguaje y de ahí derivaremos la expresión regular que lo describe. El lenguaje puede verse como la intersección de dos lenguajes más sencillos: el conjunto de cadenas con un número impar de x’s y el conjunto de cadenas con un número par de y’s.
El autómata que reconoce el lenguaje puede construirse a partir de los correspondientes autómatas.
Nota: El autómata anterior puede describirse mediante un diagrama de tan sólo dos estados.
110
16.- Dado el alfabeto { x, z }, queremos construir un autómata finito M tal que L(M ) sea el lenguaje formado por las cadenas que contienen al menos una z , y cada z está inmediatamente precedida y seguida por una x . ¿Es correcta la siguiente solución? x
x x
z
x
x
A. Sí
B)
No
Solución: B. El autómata no acepta la cadena xz x zx .
17.- Muestre que puede utilizarse un autómata finito determinista para reconocer una cadena de paréntesis anidados y equilibrados si se asegura que la profundidad de anidamiento no excederá de un nivel preestablecido. Este autómata lee cadenas de paréntesis anidados hasta un nivel n, y los acepta sólo cuando están todos equilibrados. Solución: Este autómata permite cadenas del tipo ( ( ) ( ) ). Se vuelven a abrir paréntesis después de aparecer el primero que cierra. 111
18.- ¿Es posible que una gramática en forma normal de Chomsky genere un lenguaje regular? A. Sí, es posible
b)
No, es imposible
Solución: A. Ejemplo: G = {S x}, G = {S MN , M MM , N NN , M x, N y}.
19.- Dado el alfabeto { x, y }, queremos construir un autómata de pila M tal que L(M ) sea el lenguaje en cuyas cadenas hay tres x ‟s por cada dos y ‟s. ¿Es correcta la siguiente solución? (Se entiende que cada transición que inserta o lee varios símbolos en la pila representa en realidad varias transiciones consecutivas.) x,;aa
,;#
x,bb;
y,aaa; y,;bbb
A) Sí
B)
No
Solución: B. El autómata no acepta la cadena xy y xx .
112
,#;
20.- Queremos construir un autómata de pila determinista que acepte el lenguaje x n+2y n. ¿Es correcta la siguiente solución? y,z ;
x,; z
,;#
a) Sí
b)
x, z ;
,#;
No.
Solución: B. No es determinista. Se comprueba fácilmente al analizar la cadena xx.
21.- Queremos construir un autómata de pila determinista M tal que L(M ) = { x my nz t | m, n y t enteros no negativos, m = n+t }. ¿Es correcta la siguiente solución?
x,; x
,;#
a) Sí
b)
y, x;
y, x;
z, x;
No
Solución: B.
113
z, x;
,#;
El autómata no acepta la cadena xz .
22.- EJEMPLO DE AUTOMATAS DE PILA.-
3.11 MÉTODOS POR DESPLAZAMIENTO Y REDUCCIÓN. E
E+E
E
E*E
E
(E)
E
id
ANÁLISIS POR DERIVACIONES ARBITRARIAS. id + id * id
id + (id*(id + id))
E + id * id
E + (id*(id + id))
E + E * id
E + (E * (id + id))
E
* id
E + (E * (E + id))
E
*E
E + (E * (E + E))
E
E + (E * (E))
E + (E * E) E + (E) E+E E
114
Utilizando un analizador por desplazamiento o reducción PILA
ENTRADA
ACCIÓN
$
id + id * id $
Desplazar
$ id
+ id * id $
Reducir E
$E
+ id * id $
Desplazar
id * id $
Desplazar
$E+ $ E + id $E+E $E
* id $ * id $
id
Reducir E
id
Reducir E
E+ E
* id $
Desplazar
id $
Desplazar
$ E * id
$
Reducir E
id
$E*E
$
Reducir E
E *E
$E
$
$E*
PILA
ENTRADA
ACCIÓN
$
id+(id*(id+id))$
Desplazar
$id
+(id*(id+id))$
Reducir E
$E
+(id*(id+id))$
Desplazar
$E+
(id*(id+id))$
Desplazar
$E+(
id*(id+id))$
Desplazar
$E+(id
*(id+id))$
Reducir E
$E+(E
*(id+id))$
Desplazar
$E+(E*
(id+id))$
Desplazar
$E+(E*(
id+id))$
Desplazar
$E+(E*(id
+id))$
Reducir E 115
id
id
id
$E+(E*(E
+id))$
Desplazar
$E+(E*(E+
id))$
Desplazar
$E+(E*(E+id ))$
Reducir E
id
$E+(E*(E+E ))$
Reducir E
E+E
$E+(E*(E
))$
Desplazar
$E+(E*(E)
)$
Reducir E
(E)
$E+(E*E
)$
Reducir E
E*E
$E+(E
)$
Desplazar
$E+(E)
$
Reducir E
$E+E
$
Reducir E
$E
$
(E) E+E
23.- ¿Cuál es el analizador sintáctico tipo LL más sencillo para la siguiente gramática?
S M M N
A) LL(1) B)
MN xM yN x
LL(2)
Solución: A.
El único terminal que plantea ambigüedad es M . Pero basta observar dos caracteres para saber si hay que aplicar la segunda regla, o la tercera, o rechazar la cadena.
116
24.- ANALIZADOR SINTACTICO ll GRAMÁTICAS LL (1), ELIMINACIÓN DE RECURSIVIDAD POR LA IZQUIERDA Ejemplo.Modelo
Ejemplo
A
E
E+TIT
T
T*FIF
Aᴕ I β
Se sustituye por: A
β A´
F
A´
ᴕ A´I ϵ
id I (E) Convirtiendo
E
TE´
E´
+ TE´I ϵ
T
FT´
Derivando para:
T´
id * (id + id) F
idI (E)
*FT´I ϵ
E E T
T
ϵ
´
T*F
FT´
ϵ
´
F*F
idT´
ϵ
´
id*F
id* F
T´ϵ´
id*(E) id* (E
)T´ϵ´
id* (E + T)
id* (T E´
)T´ϵ´
id* (T + T)
id* (F T´E´ )T´ϵ´
id* (F + T)
id* (id T´ E´ )T´ϵ´
id* (id + T)
id* (id ϵ E´
id* (id + F)
id* (id + T´ E´)T´ϵ´
)T´ϵ´
id* (id + id) id* (id + F T´E´)T´ϵ´ id* (id + id T´E´)T´ϵ´ 117
id* (id + id ϵϵ)ϵϵ id* (id + id)
FORTALIZACIÓN POR LA IZQUIERDA :: =
If then I if then else
GRAMATICAS AMBIGUAS Modelo A
ᴕβ1 I ᴕβ2
: : if then
Se sustituye por: A
: : = else I ϵ
A
ᴕ A´
el I Ia I los I las
A
ᴕ β1 I ᴕ β2 Convirtiendo:
A
el l lA´
A´
aA´´ l os
A´´
Iϵ
ANALIZADOR SINTACTICO LR EJEMPLO: Algoritmo para obtener la colección de conjuntos de ítems. Sea C la colección de conjuntos de ítems y S´el símbolo de inicio. Incluir en C la función closure de la clase de ítems S´-->. S indicada por C: ={ Closure ([S´-->. S])}. Repetir el paso 4 hasta que no existan más conjuntos de items que puedan añadirse a C.
118
Para cada clase de items I en C y cada símbolo gramatical X; tal que goto (I,X) no sea vacio y que aun no se encuentre en C, añadir a C el conjunto creado a partir de goto (I, X). Funciones First y Follow First (F) = First (T) = { id, (} First (E) = First (E´) = {id, (} Follow (E´) = {$} Follow (E´) = {+,). $} Follow (T) = {*,+,),$} Follow (F) = {*,+,),$} Construcción de la Tabla Análisis. Si A
ᴕ aβ esta en li y el autómata indica que li sobre a cambiar hacia Ij. Goto
(li, a) = Ij, entonces la tabla de análisis indicará acción shift (cambio) desde el estado i al estado j. Acción [i, a]= j donde a = terminal. Si S´ Si A
.S está en li entonces acción [i, $]= aceptar ᴕ Está en li, entonces acción [i,a]= reducción por la regla A
ᴕ para
todo símbolo terminal en Follow (A). Si goto (li, A)= Ij entonces la función Goto en la tabla de análisis Goto [i, A]= j. li e lj son conjuntos de items. A = Símbolo no terminal. Todas las entradas no definidas en 1 a 4 son error. El estado inicial en el analizador es el construido a partir del conjunto que contienen S´-- > . S. 119
Construcción de la Tabla LR: I0: I 1 E´ I1E
.E
I6: Goto (l1, +)
.E+T
I9 E
I2E
.T
I2 T
.T*F I3 T
.F
I3T
.F
I4 F
.(E)
I4F
.(E)
I5 F
.id
I5F
.id
I1: Goto (lo, E)
.T + F
I7: Goto (l2, *) I 10 T
T*.F
E.
I4 F
.(E)
E.+T
I5 F
.id
a E´ I6 E
I9 T
I2: Goto (lo, T) rE
T
I7 T
T.*F
I8: Goto (l4, E) I11 F
( E. )
I6
E. + T
E
I3: Goto (lo, F) rT
F r
I4: Goto (lo.( )
I9: Goto (l6, T) E I7
I8 F
(.E)
I8 E
.E+T r
I2 E
.T
I2 T
.T*F r
I3 T
.F
I4 F
. (E)
I5 F
.id
E+T T
T .* F I10: Goto (l7, F)
T
T *F I11: Goto (l8, ))
F
( E ).
I5: Goto (lo, id) rF
E+.T
id 120
EJEMPLO FUNCIONES RECURSIVAS Ejemplo: E
TE´
E´
+TE´
T
FT´
T´
*FT´
F
id (E)
Se construye una autómata para darle seguimiento a las llamadas recursivas. E: T
0E´
+
T 3
E: E´
4
5
6
T: F
8
9
T´
T: 10
*
F
13
T´
F: 14
(
E
121
17
)
Nota: Los estados 2,6,9,13 y 17 son de aceptación. Entrada : id +id id
0
1
7
8
14
17
+
9
10
13
2
3
4
id
5
7
8
14
17
$
9
10
13
6
3
6
Entrada (id + id)* id (
0
1
7
8
14
15
Id
16
0
1
7
8
14
17
+
9
10
10
13
2
3
4
id
5
7
8
14
17
)
9
10
13
6
3
6
17
*
9
10
11
id
12
14
17
$
13
10
13
2
3
6
EJERCICIOS MAQUINA TURING.1.- ¿Es regular el lenguaje aceptado por la siguiente máquina de Turing? R
x
R
A). Sí B) No Solución: A. 122
Es el lenguaje formado por todas las cadenas que no empiezan por x . 2.- Dado el alfabeto { x , y , z }, queremos construir una máquina de Turing que busque en su cinta la secuencia xy , la sustituya por zz y se detenga en cuanto haya realizado esta operación. ¿Es correcta la siguiente solución? A). Correcta. B)
Incorrecta.
z
Rx R
y
zLz
x
Solución: B. Dada la configuración inicial x zyxy , la máquina se detiene con la configuración x zzxy .
3.-“El lenguaje aceptado por la siguiente máquina de Turing es el lenguaje formado por todas las cadenas que cumplen estas dos condiciones: (a) la cadena tiene un número par de equis; y (b) la cadena no tiene dos equis seguidas.”
R
x
SL Rx SL L
y, z
A) Verdadero B) Falso Solución: B. El autómata acepta la cadena xyxxyx . 4.- Dado el alfabeto { x , y , z }, queremos construir una máquina de Turing que busque en su cinta la secuencia xy , la sustituya por zz y se detenga en cuanto haya realizado esta operación. ¿Es correcta la siguiente solución? A) Correcta. B)
Incorrecta. 123
z y
Rx R
zL z
x Solución: B. Dada la configuración inicial xy x y . . . , la máquina no se detiene nunca. 5.- Dado el alfabeto { x , y , z }, }, ¿es independiente de contexto el lenguaje aceptado por la siguiente máquina de Turing?
R
x,y,z
}
SL
¬
R L
¬
R
L
Sí
B) No
Solución: A. Es el lenguaje formado por los palíndromos de { x , y , z }
6.- Queremos construir una máquina que venda tabaco haciendo un supuesto de 125 pesos el paquete. El comprador debe introducir monedas de 25 ó 100 pesos. y luego pulsar la tecla “ ”. Para controlar el proceso, se construye un autómata
que viene dado por la siguiente tabla. ¿Es correcta esta solución? (La máquina debe dar una señal de error cuando la cantidad de dinero es incorrecta. Las demás monedas son devueltas por la máquina, y por tanto no se consideran en el autómata. Observe que la tecla “ ” equivale al fin de cadena.)
124
A). Correcta B).
Estado
25
100
“”
1
2
5
Error
2
3
error
Error
3
4
error
Error
4
5
error
Error
5
6
error
Error
6
error
error
Aceptar
Incorrecta
Solución: B. NOTA: Si se introduce una moneda de 25 y luego una de 100, debería aceptarlo. EJERCICIOS A RESOLVER.1.- Señale la expresión regular que representa el lenguaje que acepta el siguiente autómata. y x
x
y
x y
xy * x yy * x y x ) a. ( xy xy * x yy * x yy * xx *) b. ( xy *)
c. ( xy xy * x x yy * x ) d. Ninguna de las anteriores Respuesta:_____
125
El número mínimo de estados de un autómata finito determinista es: Uno. Dos. No hay número mínimo. Depende del alfabeto sobre el que está definido. Construir un autómata finito que reconozca los números enteros distintos de 0 se entiende que los números que han de venir expresados en la forma habitual, sin caracteres innecesarios; por ejemplo, cadenas como “007” deben conducir a
estados de no aceptación. Construir un autómata finito que reconozca expresiones aritméticas de suma, resta, multiplicación y división de dos números enteros; por ejemplo, “172 5=”.
Indique cómo caracterizaría las cadenas que genera la siguiente gramática:
S S1
x
S1 S1
y
S1 xy S S2
xS2
S2 xy *( xy *)* xy *( xy *)* { x x ny m : m y n son enteros positivos tales que m = n o m = 2n} *(yy )* )* ( xy )* x *( xy )* Ninguna de las caracterizaciones anteriores es válida
126
S2 yy
Indicar si el autómata de la siguiente figura es determinista o no determinista. a) Determinista.
b)
No determinista.
x; x, x;
x,; x ,; y
y, y;
y; ¿Es cierto que el siguiente diagrama representa un autómata determinista de cuatro estados? Verdadero. b) Falso x x
y z
z y y
x
Indique cuál de las siguientes afirmaciones es verdadera: Un autómata finito determinista M reconoce un lenguaje L(M ) si acepta todas las cadenas de dicho lenguaje. Un autómata finito determinista M reconoce un lenguaje L(M ) si acepta exclusivamente la colección de cadenas de dicho lenguaje. Un autómata finito determinista M reconoce un lenguaje L(M ) si la colección de cadenas de dicho lenguaje es determinista.
127
Ninguna de las afirmaciones anteriores es cierta. Construir un autómata de pila determinista que acepte el lenguaje x n+1y n. Dado el alfabeto { x ,y, z } y estas dos máquinas de Turing, sea L1 el lenguaje aceptado por la primera y L2 el aceptado por la segunda. ¿Cuál de las siguientes afirmaciones es verdadera? Realice la comprobación. L1 = L2 L1 L2 L2 L1
Ninguna de las anteriores
y
Rx R
zLz
x ¬x/R
x/R /R
y/z
z/L
/R
¬z/R
/z ¬x/R
z/R
¿Para cuál de las siguientes gramáticas no existe una gramática equivalente en laforma normal de Chomsky? S
xN
N
Sx
xNx y
128
S
xA
A
xAx
S
AB
A
xAy
A y
A
B
yBz
B S
MzN
M
xM
M N
yN
N Sea n un número natural tal que n2. El número total de máquinas de Turing con n estados es: Finito b)
infinito.
Que lenguaje acepta el siguiente autómata, Analícelo.
129
x,;
,#;
x #
x x x,; x
x ,#;
x, x;
Si iniciamos la máquina de Turing siguiente con la cadena yyxyxx , La máquina acepta la cadena. La máquina entra en un bucle y no termina nunca. Hay una terminación anormal. /R
/
/R /L
/R
/R
/ /x
Dado el alfabeto { x , y , z }, construir una máquina de Turing que busque en su cinta la secuencia xy , la sustituya por zz y se detenga en cuanto haya realizado esta operación. Dado el alfabeto { x , y }, construir una máquina de Turing que se detenga cuando y sólo cuando encuentra en la cinta la secuencia xxy .
130
Dado el alfabeto { x , y }, construir una máquina de Turing que se detenga cuando y sólo cuando encuentra en la cinta la secuencia xxy (como cadena o como parte de una cadena). ¿Cuáles son las cadenas que acepta el siguiente autómata vaciando su pila? x ; x
y, x;
Las cadenas con tantas x ‟s como y ‟s Las cadenas con más x ‟s que y ‟s Ninguna de las respuestas anteriores. ¿Cuántas celdas tendrá la tabla de análisis sintáctico de un analizador LL para la siguiente gramática? S S A A B B C
xA yCz xyB xzC yC z xA
20 o menos Más de 20 y menos de 60 60 o más
131
Indicar si la siguiente afirmación es verdadera o falsa: “Los analizadores
sintácticos que analizan las cadenas de izquierda a derecha se denominan LR .” Verdadera. b) Falsa.
132
BIBLIOGRAFÍA J. Glenn Brookshear, Teoría de la Computación: Lenguajes formales, autómatas y complejidad, Ed. Pearson, Addison Wesley. Trillo Miguel Angel. Tesis de Licenciatura. Simulador de una Maquina de Turing en LISP. Joan Domingo Peña, Introducción a
los autómatas programables, Ed.
UOC. John M. Howie, , Automata and Languages, Clarendon Press, Oxford.
133