Introducción Máquina de Turing: modelo general de computador. Tesis de Church-Turing: Algoritmo ≡ decidible en una MT. Vamos a estudiar cuales son los límites de los algoritmos. DECIDIBILIDAD 1. 2. 3. Lenguaje Turing decidible (Lenguaje recursivo): L es aceptada por una MT M M siempre para M decide L w M qa Si w pertenece a L qr Si w no pertenece a L DECIDIBILIDAD 1. 2. 3. Lenguaje Turing reconocible (Lenguaje recursivamente enumerable): L es aceptada por una MT M M ni siempre para M no decide L qa w M qr LOOP Si w pertenece a L Si w no pertenece a L DECIDIBILIDAD Mostrar que el lenguaje es decidible es lo mismo que mostrar que el problema computacional es decidible. PROBLEMAS DECIDIBLES Vamos a representar varios problemas computacionales a repres a representar varios problemas computacionales entar varios a representar varios problemas computacionales problemas a representar varios problemas computacionales computacionales a representar varios problemas computacionales por medio de lenguajes a representar varios problemas computacionales . Problema de la aceptación de palabras a representar varios problemas computacionales por AFDs a representar varios problemas computacionales : Dado un AFD B y una cadena w, B acepta w? AFD B y una cadena w, B acepta w? y una cadena w, B acepta w? un AFD B y una cadena w, B acepta w?a caden AFD B y una cadena w, B acepta w?a w, B acepta w? B y una cadena w, B acepta w? acepta w? ADFA = {<B,w> | B es un AFD que acepta la cadena w} {<B,w> | B es un AFD que acepta la cadena w} | B es un AFD que acepta la cadena w} B es a representar varios problemas computacionales un AFD que acepta la cadena w} PROBLEMAS DECIDIBLES Teorema 4.1: ADFA es un Lenguaje Decidible. ADFA = {<B,w> | B es un AFD y B acepta w} M = “Sobre la entrada <B,w> donde B es un AFD, y w es una cadena: 1. Simule B sobre la entrada w. 2. Si la simulación termina en un estado de aceptación, acepte. Si ella termina en un estado de no-aceptación”, rechace PROBLEMAS DECIDIBLES Algoritmo Entrada: <B,w> Salida: Sí, si la simulación del AFD B con la cadena de entrada w, para en un estado final. No, caso contrario Algoritmo→programa→código máquina→simulado por MT PROBLEMAS DECIDIBLES Teorema 4.2: ANFA es un Lenguaje Decidible. ANFA = {<B, w> | B es un AFN y B acepta w} N = “Sobre la entrada <B,w> donde B es un AFN, y w es una cadena: 1. Convierta el AFN B para un AFD equivalente C. 2. Ejecute la MT M del Teorema 4.1 sobre la entrada <C, w>. 3. Si M acepta, acepte; caso contrario, rechace.” PROBLEMAS DECIDIBLES Teorema 4.3: AREX es un Lenguaje Decidible. AREX = {<R,w> | R es una expresión regular que describe w} P = “Sobre la entrada <R,w> donde R es una expresión regular y w es una cadena: 1. 2. 3. Convierta la expresión regular R para un AFN equivalente B’ usando el procedimento estudiado. Ejecute la MT N sobre la entrada <B’,w>. Si N acepta, acepte; caso contrario rechace.” PROBLEMAS DECIDIBLES Problema de probar su un AFD reconocer alguna cadena Problema: Dado un AFD A, ¿A reconoce alguna cadena? ¿Existe un algoritmo que resuelve ese problema? EDFA = {<A> | A es un AFD y L(A) =} ¿EDFA es decidible? PROBLEMAS DECIDIBLES Teorema 4.4: EDFA es Decidible. EDFA = {<A> | A es un AFD y L(A) =} T = “Sobre la entrada <A> donde A es un AFD: 1. 2. 3. Marque el estado inicial de A. Repita hasta que ningun estado nuevo venga a ser marcado: 1. Marque cualquier estado que tenga una transición llegando en él, a partir de cualquier estado que ya está marcado. Si ningún estado de aceptación estuviera marcado, acepte.” PROBLEMAS DECIDIBLES Problema: Dado dos AFD’s, ¿ellos reconocen el mismo lenguaje? Existe un algoritmo que resuelve ese problema EQDFA = {<A,B> | A y B son AFDs y L(A) = L(B)} ¿EQDFA es decidible? PROBLEMAS DECIDIBLES Teorema 4.5: EQDFA es un lenguaje decidible. La diferencia simétrica entre dos conjuntos X e Y, denotada por XY, es definida como XY = (X∩Y’)∪(X’∩Y) X=Y ⇔ XY = 𝜙 PROBLEMAS DECIDIBLES Teorema 4.5: EQDFA es un lenguaje decidible. EQDFA = {<A,B> | A y B son AFDs y L(A) = L(B)} Sea L(C)=L(A)L(B) = (L(A)∩L(B)’)∪(L(A)’∩L(B)) L(C) = si L(A) = L(B) Podemos obtener C a partir de A y B con las construcciones utilizadas para probar que la clase de lenguajes regulares es cerrada bajo complementación, unión y intersección. PROBLEMAS DECIDIBLES Teorema 4.5: EQDFA es un lenguaje decidible. EQDFA = {<A,B> | A y B son AFDs y L(A) = L(B)} F = “Sobre la entrada <A,B>, donde A y B son AFDs: 1. Construya el AFD C conforme descrito. 2. Ejecute la MT T del Teorema 4.4 sobre la entrada <C>. 3. Si T acepta, acepte. Si T rechaza, rechace.” Ejercicio: Responda todas las partes del siguiente DFA M y explique las razones de sus respuestas. a. ¿⟨M, 0100⟩ ∈ AM, 0100⟩ ∈ A ∈ A ADFA? b. ¿⟨M, 0100⟩ ∈ AM, 011⟩ ∈ A ∈ A ADFA? c. ¿⟨M, 0100⟩ ∈ AM⟩ ∈ A ∈ A ADFA? d. ¿⟨M, 0100⟩ ∈ AM, 0100⟩ ∈ A ∈ A AREX? e. ¿⟨M, 0100⟩ ∈ AM⟩ ∈ A ∈ A EDFA? f. ¿⟨M, 0100⟩ ∈ AM, M⟩ ∈ A ∈ A EQDFA? Ejercicio: Considere el problema de determinar si un DFA y una expresión regular son equivalentes. Exprese este problema como un lenguaje y demuestre que es decidible. AAR= { <A, R> | A es un AFD y R es una ER} Demostración: T=”Sobre la entrada <A,R>, donde A es un AFD y R es una ER: 1. Convierta la ER R en un AFN B. 2. Convierta el AFN B en su AFD C equivalente. 3. Ejecutar la MT F del teorema 4.5 con entrada <A, C>. 4. Si la MT F acepta, aceptar. Caso contrario, rechazar” Ejercicio: Sea A = {⟨M, 0100⟩ ∈ AM⟩ ∈ A | M es un AFD que no acepta ninguna cadena que contenga un número impar de unos}. Demuestre que A es decidible. Ejemplo: Sea A = {⟨M, 0100⟩ ∈ AM⟩ ∈ A | M es un AFD que no acepta ninguna cadena que contenga un número impar de unos}. Demuestre que A es decidible. La siguiente MT decide A: M2= “Sobre la entrada ⟨M, 0100⟩ ∈ AM⟩ ∈ A, donde M es un AFD: 1. Construya un AFD O que acepte todas las cadenas que contengan un número impar de unos. 2. Construya un AFD B tal que L(B) = L(M) ∩ L(O). 3. Pruebe si L(B) = ∅ usando el decisor T de E usando el decisor T de EDFA del Teorema 4.4. 4. Si T acepta, aceptar; si T rechaza, rechazar ". PROBLEMAS DECIDIBLES Problema: Dada una gramática G y una cadena w, ¿G genera w? ¿Existe un algoritmo que resuelve ese problema? Problema fundamental en compiladores ACFG = {<G,w> | G es una GLC que genera la cadena w} ¿ACFG es decidible? PROBLEMAS DECIDIBLES Teorema 4.7: ACFG es un lenguaje decidible. S→AB A→0A | B es un AFD que acepta la cadena w} Ɛ B→1B2 | B es un AFD que acepta la cadena w} Ɛ Si w ∈ L ⟹ el algoritmo encontrará la derivación de w Si w ∉ L ⟹ el algoritmo ejecutará para siempre Ese algoritmo es un reconocedor, pero no es decisor Teorema 4.7: ACFG es un lenguaje decidible. ACFG = {<G,w> | G es una GLC que genera la cadena w} S → AB A → AA | a B → BB | b S => AB => AAB => AAAB => AAABB => aAABB => aaABB => aaaBB => aaabB => aaabb Si G está en la FNC y w es una palabra generada por la gramática, entonces la derivación de w tiene exactamente 2|w|-1 pasos PROBLEMAS DECIDIBLES Teorema 4.7: ACFG es un lenguaje decidible. ACFG = {<G,w> | G es una GLC que genera la cadena w} S = “Sobre la entrada <G,w>, donde G es una GLC y w es una cadena: 1. Convierta G para una GLC equivalente en la forma normal de Chomsky. 2. Liste todas las derivaciones con 2n-1 pasos, donde n es el tamaño de w, excepto si n = 0, entonces en ese caso liste todas las derivaciones con 1 paso. 3. Si alguna de esas derivaciones genera w, acepte. Caso contrario, rechace” PROBLEMAS DECIDIBLES Problema: Dada una gramática G, ¿G genera alguna cadena? ¿Existe un algoritmo que resuelve ese problema? ECFG = {<G,w> | G es una GLC y L(G) =} ¿ECFG es decidible? Teorema 4.8: ECFG es un lenguaje decidible. ECFG = {<G> | G es una GLC y L(G) = } ¿Cuál variable es capaz de generar sentencias? S -> ABCD A -> BCA A -> xyz B -> CA B -> AB B -> BBBw C -> CB C -> ww D -> DD D -> BD D -> DC PROBLEMAS DECIDIBLES Teorema 4.8: ECFG es un lenguaje decidible. ECFG = {<G> | G es una GLC y L(G) = } R = “Sobre la entrada <G>, donde G es una GLC: 1. Marque todos los símbolos terminales en G. 2. Repita hasta que ninguna variable venga a ser marcada: 1. Marque cualquier variable A donde G tiene una producción AU1U2...Uk y cada símbolo U1, ... ,Uk ya haya sido marcado. 3. Si la variable inicial no está marcada, acepte; caso contrário, rechace.” PROBLEMAS DECIDIBLES Problema: Dada dos gramáticas A y B, ¿ellas son equivalente? ¿Existe un algoritmo que resuelve ese problema? EQCFG = {<A,B> | A y B son GLC’s y L(A) = L(B)} ¿EQCFG es decidible? PROBLEMAS DECIDIBLES Teorema 4.7: EQCFG no es decidible. No es a representar varios problemas computacionales pos a representar varios problemas computacionales ible crear un algoritmo que recibe dos a representar varios problemas computacionales gramáticas a representar varios problemas computacionales y determina s a representar varios problemas computacionales i ellas a representar varios problemas computacionales s a representar varios problemas computacionales on equivalentes a representar varios problemas computacionales . PROBLEMAS DECIDIBLES Teorema 4.9: Todo lenguaje libre de contexto es decidible. Demostración Sea L un LLC Sea G una gramática que genera L Y diseñamos una MT MG que decide L. Construímos una copia de G dentro de MG. Ella funciona de la siguiente manera. MG = “Sobre la entrada w: 1. 2. Ejecute la MT S sobre la entrada <G,w>. Si esa máquina acepta, acepte. Caso contrario, rechace.”