Fundamentos de Ciencias de la Computación

Documentos relacionados
Teoría de la Computabilidad

Ciencias de la Computación I

Máquinas de Turing Definición y descripción

Máquinas de Turing, recordatorio y problemas

MÁQUINAS DE TURING CIENCIAS DE LA COMPUTACION I 2009

Complejidad Computacional

Computabilidad y Lenguajes Formales: Teoría de la Computabilidad: Máquinas de Turing

Teoría de la Computación y Lenguajes Formales

CONJUNTOS REGULARES. Orlando Arboleda Molina. 19 de Octubre de Escuela de Ingeniería de Sistemas y Computación de La Universidad del Valle

ALGORITMOS DIGITALES II. Ing. Hugo Fdo. Velasco Peña Universidad Nacional 2006

Departamento de Tecnologías de la Información. Tema 5. Decidibilidad. Ciencias de la Computación e Inteligencia Artificial

TIPOS DE GRAMATICAS JERARQUIAS DE CHOMSKY

autómatas finitos y lenguajes regulares LENGUAJES FORMALES Y

Temas. Objetivo. Que el estudiante logre:

PRACTICA 10: Máquinas de Turing

1) Comprender la importancia que tiene la Máquina de Turing para la Ciencia de la Computación.

Fundamentos de Ciencias de la Computación

Máquinas de Turing. Definición 2

Definiciones previas

Máquinas de Turing. Gálvez Martínez Ernesto Sánchez Sandoval David Isaac Villegas Rosales Erik Salazar Santiago Juan Carlos

13.3. MT para reconocer lenguajes

Máquinas de Turing. Complexity D.Moshkovitz

Teoría de la Computación y Leguajes Formales

Autómatas Finitos Deterministicos (DFA)

Autómatas Finitos Deterministicos (DFA)

Teoría de Autómatas y Lenguajes Formales.

Introducción: historia de las Ciencias de la Computación. Informática Teórica I: Tema 1

Autómatas Finitos Deterministicos (DFA) Introducción a la Complejidad Computacional FFHA, Universidad Nacional de San Juan

Máquinas de Turing IIC3242. IIC3242 Máquinas de Turing 1 / 42

Teoría de Autómatas y Lenguajes Formales.

Máquinas de Turing IIC3242. IIC3242 Máquinas de Turing 1 / 45

Unidad 4. Autómatas de Pila

Temas. Objetivo. Que el estudiante logre: 1) Identificar conceptos constructivos de la Teoría de la Computabilidad. 2) Definir autómatas de pila.

Expresiones regulares y derivadas

Carlos Delgado Kloos Ingeniería Telemática Univ. Carlos III de Madrid. Java: Complejidad / 1

7. Máquinas de Turing.

PROGRAMACIÓN II AÑO 2009 TALLER 3: TEORÍA DE LENGUAJES Y AUTÓMATAS

Máquinas Secuenciales, Autómatas y Lenguajes. Tema 4: Expresiones Regulares. Luis Peña

Capítulo 9. Introducción a los lenguajes formales. Continuar

Unidad 1 Introducción

MÁQUINAS DE TURING Y LENGUAJES ESTRUCTURADOS POR FRASES

Examen. Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. Segundo Semestre, 2003.

Introducción. Las gramáticas definen las reglas que definen a los lenguajes Las reglas pueden tener una diversa variedad de esquemas

Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto Segundo Cuatrimestre de 2002

Alfabetos y cadenas (1) Alfabetos y cadenas (2) Lenguajes. Propiedades de la concatenación:

Máquinas de estado finito y expresiones regulares

Teoría de la Computación y Lenguajes Formales

Introducción a la Lógica y la Computación

Teoría Matemática de la Computación Segundo Problemario Prof. Miguel A. Pizaña 13 de julio de 2016

Unidad 4. Autómatas de Pila

Tema 1: Introducción. Teoría de autómatas y lenguajes formales I

Teorías. Una teoría acerca de una base de conocimiento Σ contendrá no sólo a Σ sino que a todo lo que se puede deducir de Σ.

La máquina de Turing

Introducción a la Lógica y la Computación

Teoría de la Computabilidad

Ciencias de la Computación I

Teorema de incompletitud de Gödel

Departamento de Tecnologías de la Información. Tema 4. Máquinas de Turing. Ciencias de la Computación e Inteligencia Artificial

Teoría de Autómatas y Compiladores [ICI-445] Capítulo 2: Autómatas Finitos

Teoría de la Computación Lenguajes Regulares (LR) - Propiedades

Tema 5: Autómatas a pila. Teoría de autómatas y lenguajes formales I

Computabilidad y Lenguajes Formales: Teoría de la Computabilidad: Decidibilidad

Descripción de los Lenguajes Aceptados por Autómatas

Examen de Teoría de Autómatas y Lenguajes Formales

Jerarquía de Chomsky. 1. Clasificación de gramáticas. 2. Clasificación de lenguajes. 3. Gramáticas regulares. 5. Gramáticas dependientes del contexto

Procesadores de Lenguaje

Departamento de Tecnologías de la Información. Tema 3. Autómatas finitos y autómatas de pila. Ciencias de la Computación e Inteligencia Artificial

Clases de complejidad computacional: P y NP

Autómatas de Pila y Lenguajes Incontextuales

Máquinas de Turing. 18 de junio de 2015

Nombre de la asignatura: Lenguajes y Autómatas I. Créditos: Aportación al perfil

MODELOS DE COMPUTACION I Preguntas Tipo Test. 1. El lema de bombeo puede usarse para demostrar que un lenguaje determinado es regular.

Teoría de autómatas. Un enfoque práctico. Recortables. Thelma Cantú María Gpe. Mendoza

BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA FACULTAD CIENCIAS DE LA COMPUTACIÓN

1. Define que es un Autómatas finitos determinanticos y cuáles son sus elementos constitutivos (explique cada uno de ellos).

INGENIERÍA EN INFORMÁTICA MODELOS ABSTRACTOS DE COMPUTO I SOLUCIONES

Ciencias de la Computación I

Los modelos abstractos de cómputo. Tema 1: Introducción. El modelo transductor. El modelo reconocedor. ordenador. datos. Modelo Abstracto de Cómputo

Universidad de Valladolid

1. Cadenas EJERCICIO 1

NOTAS PARA LA MATERIA LENGUAJES DE PROGRAMACIÓN

Temas. Objetivo 07:00

7. ( ) Describe una máquina de Turing que acepte el siguiente lenguaje: L = {a n b n n>0}. L = {a n b n c n n>0}. L = {xcx x {a, b} + }.

300CIG007 Computabilidad y Lenguajes Formales: Autómatas Finitos

Nuestro objetivo es demostrar que autómata = lógica. IIC3260 Una Aplicación de Teoría de Modelos Finitos: Lógica = Autómata 35 / 60

5. Propiedades de los Lenguajes Recursivamente Enumerables y de los Lenguajes Recursivos.

El Autómata con Pila

Nuestro objetivo es demostrar que autómata = lógica Qué significa esto? Queremos encontrar una lógica que defina a los lenguajes regulares

Modelos Avanzados de Computación

Tipos de reglas gramaticales (CHOMSKY) Otros tipos de reglas gramaticales no contractivas α β abc ACb

Introducción a la indecidibilidad

PONTIFICIA UNIVERSIDAD CATOLICA DEL ECUADOR FACULTAD DE INGENIERIA ESCUELA DE INGENIERIA DE SISTEMAS

Problemas de Decisión

MODELOS DE COMPUTACIÓN CRISTIAN ALFREDO MUÑOZ ALVAREZ JUAN DAVID LONDOÑO CASTRO JUAN PABLO CHACON PEÑA EDUARDO GONZALES PULGARIN

Expresiones Regulares

Temas finales de Teoría de Autómatas y Lenguajes Formales II Curso

Transcripción:

Fundamentos de Ciencias de la Computación Lenguajes APND Clase 13: Introducción Maquinas de Turing Lenguajes regulares Lenguajes Libres de Contexto Primer Cuatrimestre de 2005 Departamento de Cs. e Ing. de la Computación Universidad Nacional del Sur Bahía Blanca, Argentina AF Lenguajes Sensibles al Contexto L={w=a n b n c n n>0} 1 2 Los lenguajes sensibles al contexto tienen como formalismo reconocedor a los Autómatas Acotados Linealmente. No nos detendremos a estudiar este autómata, pues puede verse como restricción de otro formalismo más potente. Dado que hemos incrementado nuestro poder de cómputo lentamente, y entendemos mejor el concepto de autómata, ahora seremos más ambiciosos... 3 Existe un autómata que reconozca cualquier lenguaje de los que vimos anteriormente? Hasta el momento, cada autómata que estudiábamos no era capaz de reconocer algún lenguaje. Los AF se veían obsoletos ante L={a n b n n>0} Los APND se veían obsoletos ante L={a n b n c n n>0} Vale la pena preguntarse si se repetirá esta situación una vez más... Existe algún lenguaje que este nuevo autómata no pueda reconocer? De ser así, puede ser reemplazado por otro más poderoso? 4 Estas no son preguntas insignificantes, sino todo lo contrario... Estas no son preguntas insignificantes, sino todo lo contrario... Que significaría definir una clase de autómatas que reconozcan los lenguajes anteriores...... y que no exista un lenguaje L que no pueden reconocer? AutómatasX L 1 L 2 L 3... 5 Que significaría definir una clase de autómatas que reconozcan los lenguajes anteriores...... y que exista un lenguaje L que no pueden reconocer...... y que no pueda construirse otro autómata más potente?... AutómatasX L L 1 L 2 L 3... 6

Recordemos que los autómatas siempre computan una función (usualmente estudiamos la de reconocer una cadena). Computabilidad Dos científicos abordaron especialmente este problema: En la primera pregunta, habremos encontrado una forma de realizar cualquier cálculo sobre cualquier lenguaje, sin limitaciones. En la segunda pregunta, habremos encontrado una forma de realizar cualquier cálculo sobre ciertos lenguajes, y habremos descubierto que hay cosas que nunca podremos resolver. Alan Turing (23/6/1912-7/6/1954) Alonzo Church (14/6/1903-11/8/1995) Responder a estas preguntas es encontrar el límite de la computabilidad! 7 8 Una breve Evolución Histórica Hacia fines de siglo XIX, el matemático D. Hilbert postuló la necesidad de bases firmes para las matemáticas. Con este fin, en un congreso realizado en 1900 se plantearon tres problemas: Dada una afirmación cualquiera de la matemática, puede demostrarse siempre si ésta es verdadera o falsa? La matemática es consistente? Entscheidungsproblem (en alemán = problema de la decisión ): existen métodos para responder a la primer pregunta? Una breve Evolución Histórica Hacia fines de siglo XIX, el matemático D. Hilbert postuló la necesidad de bases firmes para las matemáticas. Con este fin, en un congreso realizado en 1900 se plantearon tres problemas: se puede demostrar cualquier cosa? lo demostrable es consistente? siempre existen métodos para demostrar cualquier cosa? 9 10 Una breve Evolución Histórica En un nuevo congreso en 1928, el matemático checo Kurt Gödel demostró que algunos de los problemas planteados por Hilbert tenían respuesta negativa. Toda teoría formal con suficiente poder expresivo como para reproducir la aritmética tenía teoremas no demostrables, o bien era inconsistente. Este hecho tuvo consecuencias tremendas sobre las matemáticas... Una breve Evolución Histórica Breve ejemplo de lo que afirma Gödel: Soy una máquina de la verdad. Puedo decir si cualquier afirmación es verdadera o falsa La oración: Dirás que esta oración es falsa es verdadera o falsa? 11 12

Entscheidungsproblem Pero el problema de la decisión seguía pendiente, y atrajo el interés del estudiante Alan Turing (en Cambridge, R.Unido) y Alonzo Church (EEUU). Turing y Church mostraron separadamente que existen problemas sobre los que nunca podrá establecerse un método para resolverlos. Indirectamente, el acercamiento de Turing involucraba cómo debía definirse la noción de método o procedimiento efectivo, que llegó a nuestros días como algoritmo. Esto resultó en un modelo formal, llamado Máquina de Turing, que establece qué problemas puede resolver una computadora actual. Procedimiento Efectivo (p.e.) Def: Un procedimiento efectivo (p.e.) es un conjunto de reglas, destinadas a resolver un problema, escritas en un determinado lenguaje, que son interpretables y ejecutables. La noción de procedimiento efectivo es primitiva (no está definida por otros conceptos) Máquinas de Turing Funciones recursivas parciales (Kleene, 1936) Gramáticas estructuradas por frases (Chomsky, 1956) Redes de Petri (Petri, 1962) 13 14 Procedimientos vs. Algoritmos En nuestro enfoque, no distinguiremos entre procedimiento efectivo y algoritmo. Si distinguiremos entre algoritmos totales y parciales. Algoritmo total: siempre otorga una respuesta. Algoritmo parcial: no necesariamente otorga una respuesta. 15 Propiedades Básicas de Algoritmos Un P.E. está formado por una secuencia finita de instrucciones. Existe un procesador mecánico o agente que puede intepretar las instrucciones, y producir resultados predecibles y repetibles. El procesador puede almacenar resultados intermedios en una memoria. No existe un límite finito ni para la entrada y para la salida de datos. No existe límite a la cantidad de almacenamiento requerido para realizar la computación. No existe límite a la cantidad de pasos discretos requeridos. Pueden existir computaciones infinitas. 16 Máquinas de Turing Un resultado trascendental En 1936 Turing definió una máquina abstracta, conocida hoy como Máquina de Turing. Su idea central era abstraer el conjunto de operaciones que realiza una persona cuando realiza un cálculo. Todos los algoritmos que existen en el universo Máquinas de Turing El gran aporte de Turing es establecer que una máquina de Turing es capaz de ejecutar cualquier procedimiento efectivo. Si existe un algoritmo para realizar cierta tarea, entonces también existe una Máquina de Turing que realice la misma tarea, y viceversa. 17 18

Máquina de Turing: Idea Máquina de Turing... a b c d e f... Control de Estados cabeza lecto-escritora La cabeza lecto-escritora puede leer y escribir símbolos sobre la cinta. La cabeza lecto-escritora puede realizar movimientos hacia la izquierda o hacia la derecha. 19 Def.: Una MT es una 5-upla T=(S, Σ, δ, s 0, F) donde: S es el conjunto de estados, S finito, S Ø Σ es el alfabeto de trabajo δ es una función parcial, δ:sxσ SxΣx{I,N,D} donde I=mov.izq, D=mov.der, N=no mover s 0 es el estado inicial, s 0 S. F es el conjunto de estados finales, F S. 20 Convenciones 1) Se asume que la cinta contiene inicialmente asteriscos (*), y la cadena de entrada está encerrada entre #. Por ejemplo, si la cadena es abc, la cinta contiene: Convenciones 2) Inicialmente la cabeza lectoescritora está ubicada sobre el 1er. caracter de la entrada, es decir el primer caracter no blanco de la cinta después de #. * * * # a b c d # * * * * Luego Σ { *, # } ****#abc#**** 21 3) Combinaremos operaciones de escritura y desplazamiento para abreviar algunas definiciones. 4) Los números usualmente se escribirán en formato unario. Un número natural n se escribe como una cadena de n+1 símbolos 1. 22 Convenciones: el formato unario Algunas veces usaremos una representación denominada formato unario para nros. naturales. Nro natural n = una cadena de n+1 símbolos 1. Ejemplos: Si la cinta contiene ***#1#****, esto representa al número natural 0. Si la cinta contiene ***#11#***, esto representa el número natural 1. Si la cinta contiene ***#11111#****, esto representa al número natural 4. Idea Intuitiva: cómo funcionan las MTs δ es una fc. parcial, δ: S x Σ S x Σ x{i,n,d} donde I=mov.izq, D=mov.der, N=no mover. (S 1, a, S 2, b, D)... b a d b... S 1 Si el estado actual es S 1, el símbolo bajo la cabeza de la MT es a, entonces pasar al estado S 2, escribir en la cinta el símbolo b, y mover la cabeza a la derecha.... b b d b... S 2 23 24

Idea Intuitiva: cómo funcionan las MTs Algunos Usos de las Máquinas de Turing δ es una fc. parcial, δ: S x Σ S x Σ x{i,n,d} donde I=mov.izq, D=mov.der, N=no mover. (S 1, a, S 2, a, N)... b a d b... Si el estado actual es S1, el símbolo bajo la cabeza de la MT es a, entonces pasar al estado S2, escribir en la cinta el símbolo a, y detenerse... b a d b... Máquinas de Turing Para reconocer lenguajes Para computar funciones S 1 S 2 25 26 Desarrollar una MT para reconocer cadenas de L = {a 2n n 0}. Sea T=(S, Σ, δ, s 0, F) una MT, donde S= {s 0,s 1 }, Σ = {a,#,*}, F= {s 0 }, y la fc. δ se define por: δ(s 0, a) = (s 1, a, D) δ(s 1, a ) = (s 0, a, D) Esta MT resuelve el problema de reconocer L. Veamos cómo se comporta T para la cadena aaaa... δ(s 0, a) = (s 1, a, D) δ(s 1, a ) = (s 0, a, D) S 0 S 0 S 1 S 1 27 S 0 28 Desarrollar una MT para calcular f(x,y)=x+y, donde x e y están en formato unario, y se asume que la cinta contiene...****#x 1 #y 1 #****.. donde x 1 e y 1 son las representaciones unarias de xe e y. Ejemplo: 3+1 sería..****#1111#11#****.. y el resultado debe ser 4:...****#11111#****....**#1#11111#**....**#11111#**.. 0+ 4 4..**#1111#11111#**....**#11111111#**.. 3 + 4 7..**#11111...111111#11111...111111#**....**###111...111111111111...111111#**.. 29 30

Definimos T=(S, Σ, δ, s 0, F) donde S= {s 0,s 1,s 2,s p }, Σ = {1,#,*}, F= {s p }, δ(s 0, 1 ) = (s 1, #, D) borra un 1 δ(s 1, # ) = (s p, #, N) se detiene, x1=0 δ(s 1, 1 ) = (s 2, #, D) x1>0 δ(s 2, 1 ) = (s 2, 1, D) δ(s 2, # ) = (s p, 1, N) Se detiene Turing Machine Simulator Existe gran cantidad de simuladores de Máquinas de Turing (esto es, programas que imitan el comportamiento de una MT). El software DeusExMachina tiene un simulador de MT disponible. Un simulador útil: Turing Machine Simulator (disponible como un applet y ejecutable desde un navegador) se encuentra disponible en la página web de la materia. 31 32 Turing Machine Simulator Diferencias con la notación del apunte Los estados de la MT se representan con números (1,2,3...). No se puede usar el 0. Avanzar a derecha o a izquierda y se denota > y < Existe un estado especial (H) al llegar al cual la MT actúa y luego se detiene. El soft incluye algunos ejemplos de MTs. Configuración en MT Def.: Una configuración de una MT T=(S,Σ,δ,s 0,F) es una terna (s, α,i), donde s es el estado actual de T, α Σ*, e i Z + que marca la posición donde está la cabeza. Nota: adoptando i Z + estamos usando la cinta en una única dirección. Esto no cambia la capacidad expresiva de la máquina de Turing 33 34 Transición en MT Def.: Una transición de P es representada con una relación binaria - entre configuraciones: (s, γ 1 αγ 2, i) - (s, γ 1 α γ 2, i ) si existe en T una regla de transición δ(s, α)= (s, α,m) donde s,s S; α,α Σ, γ 1,γ 2 Σ*, M {I,N,D}, y i-1 si M= I i = i si M=N i+1 si M=D Aceptación de una cadena en MT Def.: Una cadena w es aceptada o reconocida por una máquina T=(S, Σ, δ, s 0, F) si (s 0, w, 1) - (s f, α, i) para algún s f F, w, α Σ*, i Z +. Def.: Dado un alfabeto Σ y un lenguaje L Σ*, L es aceptado por una MT T si L = L(T) = {w w Σ* y w es aceptada por T} En tal caso diremos que L es Turing Aceptable (o Aceptable por una Máquina de Turing). 35 36

Desarrollar una MT para reconocer cadenas de L = {wcw w {a,b}*}. Idea general: Tachar un símbolo de la primer ocurrencia de w. Ir a la segunda ocurrencia de w (despues de c) y tachar el mismo símbolo Volver a la primer ocurrencia de w, al símbolo siguiente al recién tachado. Continuar el proceso hasta tachar los simbolos de las dos ocurrencias de w...*#abbcabb#*....*#*bbcabb#*....*#*bbc*bb#*....*#**bc*bb#*....*#**bc**b#*....*#***c**b#*....*#***c***#*.. 37 38 Sea T=(S, Σ, δ, s 0, F) una MT, donde S= {s 0,s 1,s 2,s 3,s a,s b,s ac,s bc,s parar }, Σ = {a,b,c,#,*}, F= {s parar } Desde c, ir a D, hasta hallar a y tachar δ(s ac, *) = (s ac δ(s ac, a ) = (s 1, *, I) Desde c, ir a D, hasta hallar b y tachar (s bc, *) = (s bc δ(s ac, b ) = (s 1, *, I) Tachamos a o b δ(s 0, a) = (s a δ(s 0, b ) = (s b δ(s 0, c ) = (s 3, c, D) Busco c despues de tachar a δ(s a, a) = (s a,a, D) δ(s a, b ) = (s a, b, D) δ(s a, c ) = (s ac, c, D) Busco c despues de tachar b δ(s b, a) = (s b,a, D) δ(s b, b ) = (s b, b, D) δ(s b, c ) = (s bc, c, D) 39 Ir a izq. hasta hallar una c δ(s 1, *) = (s 1, *, I) δ(s 1, c ) = (s 2, c, I) Verificar que la 2da. cadena también terminó. (s 3, *) = (s 3,*, D) δ(s 3, # ) = (s parar, #, N) Ir a izq. hasta hallar comienzo cadena δ(s 2, a) = (s 2, a, I) δ(s 2, b ) = (s 2, b, I) δ(s 2, * ) = (s 0 40 Ejercicio propuesto Verificar que la máquina anterior, para la entrada #abcab#, termina en la configuración (s parar, #**c**#,6) Desarrollar una MT para reconocer cadenas de L = {0 n 10 n 10 n n >= 1}. Verificar que la máquina anterior, para la entrada #abcbb#, termina en la configuración (s ac, #*bcbb#,4) 41 42

Qué hemos visto en este módulo Máquinas de Turing: Evolución histórica. Procedimiento Efectivo: noción Máquina de Turing: definición formal. Usos de MTs. Máquinas de Turing: Configuración. Transición. Aceptación de cadenas. Ejemplos 43