Um DFA ou NFA lê uma sequência de entrada com uma única cabeça, movendo-se da esquerda para a direita. Parece natural pensar em máquinas de estado finito que possuem várias cabeças , cada uma das quais se move pela entrada da esquerda para a direita, mas não necessariamente no mesmo local da entrada que as outras.
Vamos definir uma máquina de estados finitos com cabeças da seguinte maneira:
Um NFA de cabeça k é uma tupla , em que:
Como de costume, é um conjunto finito de estados, é um alfabeto finito, é um estado inicial e é um conjunto de estados aceitantes. Deixe denotar o conjunto de caracteres, incluindo a sequência vazia.
é a relação de transição: uma transição significa que, se a máquina está no estado de , pode ler em modo que seja o próximo caractere para a cabeça (ou se essa cabeça não se mover) e depois vá para o estado .
Uma execução desse tipo de máquina (qualquer caminho que começa no estado inicial e termina no estado de aceitação) resulta em não uma sequência, mas em strings diferentes (formadas pela concatenação dos caracteres ao longo da execução). Então dizemos que a execução é válida se as strings forem idênticas.
O idioma da máquina é o conjunto de cadeias modo que exista uma execução válida da máquina, onde as cadeias produzidas ao longo dessa execução são iguais a .
Pergunta: Qual é a classe de idiomas reconhecida por essas máquinas? Foi estudado?