Un DFA o NFA lee a través de una cadena de entrada con un solo encabezado, moviéndose de izquierda a derecha. Parece natural preguntarse acerca de las máquinas de estado finito que tienen múltiples cabezas , cada una de las cuales se mueve a través de la entrada de izquierda a derecha, pero no necesariamente en el mismo lugar en la entrada que las otras.
Definamos una máquina de estados finitos con cabezas de la siguiente manera:
Un NFA de cabeza k es una tupla , donde:
Como de costumbre, es un conjunto finito de estados, es un alfabeto finito, es un estado inicial y es un conjunto de estados de aceptación. Deje denota el conjunto de caracteres, incluida la cadena vacía.
es la relación de transición: una transición significa que, si la máquina está en el estado , puede leer en tal que es el siguiente carácter para la cabeza (o si esa cabeza no se mueve), y luego pasar al estado .
Una ejecución de este tipo de máquina (cualquier ruta que comience desde el estado inicial y termine en un estado de aceptación) da como resultado no una cadena, sino cadenas diferentes (formadas mediante la concatenación de los caracteres a lo largo de la ejecución). Luego decimos que la ejecución es válida si las cadenas son idénticas.
El lenguaje de la máquina es el conjunto de cadenas modo que existe una ejecución válida de la máquina donde las cadenas producidas a lo largo de esa ejecución son todas iguales a .
Pregunta: ¿Cuál es la clase de idiomas reconocidos por tales máquinas? ¿Ha sido estudiado?
Una primera observación es que tales máquinas producen una clase más grande que los idiomas regulares. Por ejemplo, el lenguaje
(Aquí, un borde etiquetado con denota una transición de la forma .)