En la teoría de la computación , una máquina de Mealy es una máquina de estados finitos cuyos valores de salida están determinados tanto por su estado actual como por las entradas actuales. Esto contrasta con una máquina de Moore , cuyos valores de salida están determinados únicamente por su estado actual. Una máquina de Mealy es un transductor determinista de estados finitos : para cada estado y entrada, como máximo es posible una transición.
La máquina Mealy recibe su nombre de George H. Mealy , quien presentó el concepto en un artículo de 1955, "Un método para sintetizar circuitos secuenciales". [1]
Una máquina Mealy es una tupla de 6 que consta de lo siguiente:
En algunas formulaciones, las funciones de transición y salida se fusionan en una sola función .
La "evolución a través del tiempo" se realiza en esta abstracción haciendo que la máquina de estados consulte el símbolo de entrada que cambia el tiempo en "tictacs del temporizador" discretos y reaccione de acuerdo con su configuración interna en esos instantes idealizados, o bien haciendo que la máquina de estados espere el siguiente símbolo de entrada (como en un FIFO) y reaccione cuando llega.
El diagrama de estados de una máquina Mealy asocia un valor de salida con cada borde de transición, en contraste con el diagrama de estados de una máquina Moore, que asocia un valor de salida con cada estado.
Cuando el alfabeto de entrada y salida son ambos Σ , también se puede asociar a un autómata de Mealy un grafo dirigido por hélice [ aclaración necesaria ] ( S × Σ, ( x , i ) → ( T ( x , i ), G ( x , i ))) . [2] Este grafo tiene como vértices las parejas de estado y letras, cada nodo es de grado de salida uno, y el sucesor de ( x , i ) es el siguiente estado del autómata y la letra que el autómata emite cuando está en el estado x y lee la letra i . Este grafo es una unión de ciclos disjuntos si el autómata es bireversible [ definición necesaria ] .
Una máquina Mealy simple tiene una entrada y una salida. Cada borde de transición está etiquetado con el valor de la entrada (mostrado en rojo) y el valor de la salida (mostrado en azul). La máquina comienza en el estado S i . (En este ejemplo, la salida es la operación exclusiva-o de los dos valores de entrada más recientes; por lo tanto, la máquina implementa un detector de bordes, que emite un 1 cada vez que la entrada cambia y un 0 en caso contrario).
Las máquinas Mealy más complejas pueden tener múltiples entradas y múltiples salidas. [ cita requerida ]
Las máquinas Mealy proporcionan un modelo matemático rudimentario para las máquinas de cifrado. Si se considera el alfabeto de entrada y salida (por ejemplo, el alfabeto latino ), se puede diseñar una máquina Mealy que, dada una cadena de letras (una secuencia de entradas), pueda procesarla y convertirla en una cadena cifrada (una secuencia de salidas). Sin embargo, aunque se podría utilizar un modelo Mealy para describir la Enigma , el diagrama de estados sería demasiado complejo para proporcionar medios viables de diseño de máquinas de cifrado complejas.
Las máquinas Moore/Mealy son DFA que también tienen salida en cualquier momento del reloj. Las CPU modernas, las computadoras, los teléfonos celulares, los relojes digitales y los dispositivos/máquinas electrónicos básicos tienen algún tipo de máquina de estados finitos para controlarlos.
Los sistemas de software simples, en particular los que se pueden representar mediante expresiones regulares , se pueden modelar como máquinas de estados finitos. Existen muchos sistemas simples de este tipo, como las máquinas expendedoras o la electrónica básica.
Al encontrar la intersección de dos máquinas de estados finitos, se pueden diseñar de manera muy sencilla sistemas concurrentes que intercambian mensajes, por ejemplo, un semáforo es un sistema que consta de múltiples subsistemas, como los diferentes semáforos, que funcionan de manera concurrente.
Algunos ejemplos de aplicaciones: