Está en la página 1de 7

Resumen autómatas

Alumno
Ricardo Maximiliano De Lira Chávez
19130903
Prof. Pablo Saucedo Martínez

06/03/2022
En electrónica un autómata es un sistema secuencial, aunque en ocasiones la
palabra es utilizada también para referirse a un robot. Puede definirse como un
equipo electrónico programable en lenguaje no informático y diseñado para
controlar, en tiempo real y en ambiente industrial, procesos secuenciales. Sin
embargo, la rápida evolución de los autómatas hace que esta definición no esté
cerrada.
Autómatas finitos
Un autómata finito (AF) o máquina de estado finito es un modelo computacional que
realiza cómputos en forma automática sobre una entrada para producir una salida.
Este modelo está conformado por un alfabeto, un conjunto de estados finito, una
función de transición, un estado inicial y un conjunto de estados finales. Su
funcionamiento se basa en una función de transición, que recibe a partir de un
estado inicial una cadena de caracteres pertenecientes al alfabeto (la entrada), y
que va leyendo dicha cadena a medida que el autómata se desplaza de un estado
a otro, para finalmente detenerse en un estado final o de aceptación, que representa
la salida.
La finalidad de los autómatas finitos es la de reconocer lenguajes regulares, que
corresponden a los lenguajes formales más simples según la Jerarquía de
Chomsky.
Autómatas probabilísticos
Un autómata probabilístico es una generalización del autómata finito no
determinista; incluye la probabilidad de una transición dada de una función de
transición, convirtiéndola en una matriz de transición.
Los autómatas probabilísticos nos permiten tener una idea de cómo la transición
entre estados de un autómata puede no ser factible (probabilidad 1) sino que puede
llegar a existir una probabilidad asociada a que se realice una determinada
transición. Por lo tanto, no podemos estar seguros de que el autómata se encuentre
en un determinado estado en cierto momento solo podemos llegar a saber la
probabilidad de que esto suceda. Los autómatas probabilísticos se definen con una
quíntupla:
AFP = (Σ, Q, M, P (0), F)
Autómata con pila
Un autómata con pila, autómata a pila o autómata de pila es un modelo matemático
de un sistema que recibe una cadena constituida por símbolos de un alfabeto y
determina si esa cadena pertenece al lenguaje que el autómata reconoce. El
lenguaje que reconoce un autómata con pila pertenece al grupo de los lenguajes
libres de contexto en la clasificación de la Jerarquía de Chomsky.
Autómatas celulares
Un autómata celular (A.C.) es un modelo matemático y computacional para un
sistema dinámico que evoluciona en pasos discretos. Es adecuado para modelar
sistemas naturales que puedan ser descritos como una colección masiva de objetos
simples que interactúen localmente unos con otros.
Son sistemas descubiertos dentro del campo de la física computacional por John
von Neumann en la década de 1950. La teoría de los autómatas celulares se inicia
con su precursor John von Neumann a finales de la década de 1940 con su libro
Theory of Self-reproducing Automata (editado y completado por A. W. Burks).
Descripción de elaboración de grafos autómatas finitos indeterminísticos
Un autómata finito no determinista (abreviado AFND) es aquel que, a diferencia de
los autómatas finitos deterministas, posee al menos un estado q ∈ Q, tal que para
un símbolo a ∈ Σ del alfabeto, existe más de una transición δ(q,a) posible.
Haciendo la analogía con los AFDs, en un AFND puede darse cualquiera de estos
dos casos:
• Que existan transiciones del tipo δ(q,a)=q1 y δ(q,a)=q2, siendo q1 ≠ q2;
• Que existan transiciones del tipo δ(q, ε), siendo q un estado no-final, o bien un
estado final, pero con transiciones hacia otros estados.
Cuando se cumple el segundo caso, se dice que el autómata es un autómata finito
no determinista con transiciones vacías o transiciones ε (abreviado AFND-ε). Estas
transiciones permiten al autómata cambiar de estado sin procesar ningún símbolo
de entrada.
Formalmente, se distingue de la 5-tupla que define a un autómata finito determinista
en su función de transición. Mientras en un AFD esta función se define de la
siguiente manera:

en un AFND se define como:

Para el caso de los AFND-ε, se suele expresar la función de transición de la forma:

donde P(Q) es el conjunto potencia de Q.


Esto significa que los autómatas finitos deterministas son un caso particular de los
no deterministas, puesto que Q pertenece al conjunto P(Q).
La interpretación que se suele hacer en el cómputo de un AFND es que el autómata
puede estar en varios estados a la vez, generándose una ramificación de las
configuraciones existentes en un momento dado. Otra interpretación puede ser
imaginar que la máquina "adivina" a qué estado debe ir, eligiendo una transición
entre varias posibles.
Note finalmente que en un autómata finito no determinista podemos aceptar la
existencia de más de un nodo inicial, relajando aún más la definición original.
Transformación de autómata finito no determinista a autómata finito
determinista.
Transformación de autómata finito no determinista a autómata finito determinista.
Todo AFND estricto, o sea un AFND que no es AFND-V, puede ser transformado a
AFD utilizando un algoritmo que transforma los estados del AFND en nuevos
estados que son subconjuntos de los estados originales y aplica a los mismos la
clausura para confirmar la conexidad entre cada uno de los componentes y así
eliminar el indeterminismo.
Este algoritmo, aunque siempre obtiene un AFD equivalente no puede decirse que
sea la versión minimal del mismo, para ello deben aplicarse otras transformaciones.
Algoritmo
Sea un autómata finito estrictamente no determinista (AFND) definido por la 5-tupla
A=<Q, T, g, F, q0>, donde Q es el conjunto de estados, T el alfabeto de símbolos
terminales, la relación de transiciones
(léase: del estado qi mediante el terminal x se va a qj), F son los estados finales o
de llegada dentro de Q, q0 es el estado inicial o de partida
1. A se transforma en AAFD=<QA, T, gA, FA, q0A>', tal que:
1. VA=P(V)-{{}}, con P(V) que es el conjunto potencia de los vértices de A.
2. FA={x | AFND2AFD Existe f en F tal que f en x.gif}.
3. gA={<r,x,q> | AFND2AFD g sub a Definición Intermedia.gif}.
4. q0A={q0}.
2. Luego se eliminan de AAFD todos los estados y sus correspondientes
transiciones inalcanzables desde el estado inicial q0A.
Ejemplo:
Véase el proceso de transformación de AFND a AFD del autómata
A=<{q0,q1,f},{a,b},{<q0,a,q0>,<q0,b,q0>,<q0,a,q1>,<q1,b,f>},{f},q0>, que reconoce
a las cadenas de as y bs que comienzan con cualquiera cantidad de estas letras y
terminan forzosamente en ab. El siguiente puede ser su diagrama de estados:
Primero se obtiene autómata derivado AAFD=<VAFD,TAFD,gAFD,FAFD,{q0}> a
partir del conjunto potencia de los estados de A donde:
• VAFD={{q0},{q1},{f},{q0,q1},{q0,f},{q1,f}, {q0,q1,f}}.
• TAFD={a,b}.
• FAFD={{f},{q0,f},{q1,f}, {q0,q1,f}}.
Cuyo diagrama sería:

Luego se retiran los estados inaccesibles {q1}, {f}, {q1,f}, {q0,q1,f}, determinados
mediante la clausura de {q0}, y queda:
• AAFD={{q0,{q0,q1},{q0,f}},{a,b},{<{q0},b,{q0}>,<{q0},a,{q0,q1}>,<{q0,q1},a,{q0,q
1}>,<{q0,q1},b,{q0,f}>,<{q0,f},a,{q0,q1}>,<{q0,f},b,{q0}>},{ {q0,f} },{q0}}.

TABLA DE SIMBOLOS
La tabla de símbolos es una estructura de datos muy importante en CASI todo el
proceso de compilación. En ella se guarda durante las primeras fases de
compilación los nombres de los identificadores (símbolos) usados en el programa
fuente, además de los atributos de cada uno de estos identificadores. Estos
identificadores y símbolos junto con sus atributos serán usados posteriormente para
realizar funciones como el chequeo de tipos, la asignación de memoria, generación
de código objeto etc.
Un compilador necesita guardar y usar la información de los objetos que se va
encontrando en el texto fuente, como variables, etiquetas, declaraciones de tipos,
etc.
Esta información se almacena en una estructura de datos interna conocida como
tabla de símbolos.
Operaciones sobre la tabla de símbolos.
• INSERTAR
• CONSULTAR
• MODIFICAR (añadir atributos nuevos)
El CUANDO y el CÓMO se usan estas operaciones dependen del tipo de lenguaje:
Lenguajes con DECLARACIONES DE VARIABLES:
Explícitas:
• Declaraciones: sólo INSERTAR.
• Referencia: sólo CONSULTAR.
Implícitas:
• CONSULTAR si no está ya incluida.
• INSERTAR, en caso contrario.
Lenguajes con estructura de BLOQUE: CREAR SUBTABLAS
Operadores relacionales: <, <=, >, >=, == y !=.
Operadores de operaciones con bits:
<< Corrimiento a la izquierda.
>> Corrimiento a la derecha.
& And
| Or
^ Xor
Operadores Lógicos:
&& And
|| Or
! Not
OPERADORES DE ASIGNACIÓN
= Asignación.
*= Asignación de producto.
/= Asignación de cociente.
%= Asignación de residuo.
+= Asignación de suma.
-= Asignación de diferencia.
<<= Asignación de corrimiento a la izquierda.
>>= Asignación de corrimiento a la derecha.
&= Asignación de And de bits.
^= Asignación de Xor de bits.
|= Asignación de Or de bits.
OPERADORES DE PERTENENCIA A CLASES
:: Resolución de área de visualización de clases.
.y* Apuntadores de referencia de un apuntador a un miembro de una
clase.
-> y * Apuntadores de referencia a apuntadores de un miembro de una clase.

También podría gustarte