Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Previo2: Question
Dado R un reconocedor para el lenguaje L, será R también un reconocedor para L1, donde L1
es un subconjunto de L ? --- >
Previo3:
Clasificacion de los lenguajes
Lenguajes Generales
L. Sensitivos al contexto
L. Libres de Contexto
Lenguajes
Regulares
Autómata a Pila
Un Autómata a Pila (AP) es una maquina de estados con capacidad de memoria que actua como
reconocedor para un lenguaje libre de contexto. Formalmente se define como una 6-tupla (Q, Vt,
Vp, q0, δ, qF)
donde:
Q es un conjunto finito de estados
Vt es el alfabeto de entrada
Vp es el lenguaje de la pila
q0 es el estado inicial
δ son las reglas de transición Q X Vt X Vp -- > Q
qF es el estado final o conjunto de estados finales
Representación como reglas de transición
Entonces la regla ( q1, b, a ) --- > (q2, ) significa: si estamos en el estado q1 y llega el símbolo
b, estando el símbolo a al tope de la pila, entonces pasaremos al estado q2 y desempilaremos.
Algoritmo de Implementación
Podemos usar el ejemplo anterior para mostrar una posible forma de implementación:
#define QF 100
#define QE -1
q = 0;
token = scanner();
mientras ( q !=QF && q!=QE ) {
caso ( q ) {
0 : si (token == ‘a’ && vacio())
q = 1;
empilar(‘a’);
sino
q = QE;
1 : si (token == ‘a’ && cabezapila()==’a’)
q = 1;
empilar(‘a’);
sino
si (token == ‘b’ && cabezapila()==’a’)
q = 2;
tem = desempilar();
sino
q = QE;
2 : si (token == ‘b’ && cabezapila()==’a’)
q = 2;
tem = desempilar();
sino
si (token == ‘$’ && vacio() )
q = QF;
sino
q = QE;
}
token = scanner();
}
si (q==QF)
reconoce();
sino
error();
Criterios de aceptacion
1. Por estado final, fin de cadena y pila vacia
Ejemplos:
2. L = { an b cn / n>=1 }
3. L = { am bn cm / m>=1, n>=1 }
4. L = { am bn cm+n / m, n >=1 }
5. L = { a2m cm / m>=1 }
8. L = { w c wt / w=(a│b) + }
9. L = { am bn cm dn / m>=1, n>=1 }
11. L = { am bm cm / m>=1}
15. L = { am bn / m <> n}
Jerarquia de Automatas
Maquina de Turing
Automata a Pila
AFD
Sistemas
Combinacionales
Planteado por Alan Turing en 1936. Es un modelo matemático de un dispositivo que implementa
un autómata finito.
La Maquina de Turing consta de una cinta infinita conteniendo elementos de datos. Ademas
cuenta con un Cabezal Lector/Escritor, que le permite posicionarse en un elemento especifico, y
sobre dicho elemento puede Leer o Escribir. Igualmente el Cabezal tiene la propiedad de poder
moverse hacia la Izuierda (Left>) o hacia le Derecha (Right).
En esta maquina empezamos en un estado inicial q0 y a partir de ahí realizamos transiciones hasta
llegar a un estado final qF.
(Estado Actual, Simbolo Actual) --> (Estado Siguiente, Simbolo a grabar, Desplazamiento)
Simbolo Actual se refiere al valor leído por el cabezal en su posición actual. Si el valor es B
entonces significa que es un valor en blanco o vacio.
Simbolo a grabar, se refiere al símbolo que graba el cabezal en la posición actual, antes de realizar
el desplazamiento.
Desplazamiento, es el movimiento del Cabezal, que puede ser a Izquierda (L), a Derecha (R), o sin
movimiento (-).
Por ejemplo dada una cinta con los siguientes elementos y el cabezal en la posición especificada.
Ejem. Dado un numero binario obtener el siguiente numero binario, es decir realizar la operación
incremento.
Analizando vemos que si el digito menos significativo es 0 entonces solo habrá que cambiarlo a 1.
Pero si dicho digito es 1 entonces habrá que cambiarlo a 0 y los dígitos siguientes, de derecha a
Para los números binarios del ejemplo y considerando que empezamos en el estado q0, y con el
cabezal en el digito mas significativo, las secuencias de aplicación de las reglas de transición serian: