Un DFA o NFA legge attraverso una stringa di input con una sola testina, spostandosi da sinistra a destra. Sembra naturale chiedersi macchine a stati finiti che hanno più teste , ognuna delle quali si muove attraverso l'input da sinistra a destra, ma non necessariamente nello stesso punto dell'input delle altre.
Definiamo una macchina a stati finiti con teste come segue:
Un K-head NFA è una tupla , dove:
Come al solito, è un insieme finito di stati, è un alfabeto finito, è uno stato iniziale e è un insieme di stati accettanti. Sia denota l'insieme di caratteri inclusa la stringa vuota.
è la relazione di transizione: una transizione significa che, se la macchina è nello stato , potrebbe leggere in tale che è il carattere successivo per la testa (o se quella testa non si muove), quindi passa allo stato .
Una corsa di questo tipo di macchina (qualsiasi percorso che inizia dallo stato iniziale e termina in uno stato accettante) non produce una stringa, ma stringhe diverse (formate concatenando i caratteri lungo la corsa). Quindi diciamo che la corsa è valida se le stringhe sono identiche.
Il linguaggio della macchina è l'insieme di stringhe tale che esiste una corsa valida della macchina in cui le stringhe prodotte lungo quella corsa sono tutte uguali a .
Domanda: Qual è la classe di lingue riconosciuta da tali macchine? È stato studiato?
Una prima osservazione è che tali macchine producono una classe più ampia delle lingue normali. Ad esempio, la lingua
(Qui, un bordo etichettato con indica una transizione della forma .)
Tuttavia, una seconda osservazione è che non tutte le lingue senza contesto sono riconosciute; per esempio, sembra che il linguaggio Dyck non può essere riconosciuto da questi macchine -head.