Quali lingue sono riconosciute dalle macchine a un contatore?


15

Le macchine contatore con due o più contatori sono generalmente mostrate equivalenti alle macchine di Turing in corsi sulla teoria del calcolo. Tuttavia, non ho visto un'analisi formale di quali lingue possano essere riconosciute da una macchina a un contatore. Queste lingue sono equivalenti alle lingue senza contesto (forse per mezzo di una costruzione intelligente che le collega ai PDA) o sono una classe di lingue completamente diversa?


2
Questo libro: books.google.co.uk/books/about/… di Jean Berstel approfondisce molto le lingue a un contatore e altri sottogruppi di lingue senza contesto, ma tende ad essere molto difficile effettivamente rintracciarne una copia.
Sam Jones,

1
@SamJones In effetti il ​​famoso libro Trasduzioni e linguaggi senza contesto di Jean Berstel è andato fuori stampa. L'autore ha reso disponibile una versione elettronica dei capitoli più importanti del libro. www-igm.univ-mlv.fr/~berstel/LivreTransductions/…
Hendrik

Risposte:


11

Gli automi a un contatore sono automi push down con un solo simbolo consentito nello stack (più un simbolo in basso fisso). Le lingue riconosciute da un contatore automi formano un sottoinsieme proprio delle lingue libere dal contesto.

Ad esempio un automa a 1 contatore può riconoscere la lingua che non è regolare, ma non può riconoscere la lingua { a n b m a m b n } che è libera dal contesto e può essere riconosciuta da un 2 contatore anche automi.{un'nBn}{un'nBmun'mBn}

Se k-DCA è un deterministico k-counter automi e k-NCA è un deterministico k-counter automi, quindi abbiamo le seguenti inclusioni corrette:

DFA (lingue normali) 1-DCA 2-DCA

1-DCA 1-NCA

Se non consentiamo transizioni (passa al tempo reale ), allora k-DCA k'-DCA per k <k '.ε

Solo per completamento: ci sono lingue che sono libere dal contesto ma che non possono essere riconfigurate dai contatori automatici (k-DCA con k 2) (ad esempio { w w R } ) e lingue riconosciute dai contatori automatici che non sono prive di contesto (per esempio { a n b n c n } ). Un contatore automi (in particolare un due contatore automi) può essere Turing completo solo se i suoi input e output sono codificati correttamente (vedere la voce di Wikipedia per i dettagli).{wwR}{un'nBncn}


domande: (1) lingue riconosciute da contatori automatici che non sono senza contesto, vuoi dire non regolari? (2) esiste una gerarchia per DCA? Perché? Non sono tutti equivalenti di Turing (quando ). K2
Hendrik Jan

(1) no, intendo "che non sono liberi dal contesto" (basta scegliere un linguaggio sensibile al contesto correttamente codificato che possa essere riconosciuto da un contatore> 1 macchina contatore) (2) hai ragione, la gerarchia si riferisce al DCA in tempo reale (ho corretto la risposta)
Vor

Mi sembra di ricordare che ci sono differenze tra i contatori che non hanno limiti in entrambe le direzioni e tali che "dal basso" a zero?
Raffaello

7

I counter automata sono stati molto studiati nell'antico passato del linguaggio formale, nel contesto della teoria AFA e AFL (famiglie astratte di automi e lingue) da parte di team statunitensi e francesi (Ginsberg, Greibach, ..., Nivat, Berstel, ...)

Gli automi contatore sono in genere definiti automi a stati finiti dotati di memoria esterna, costituiti da un numero naturale (o più se si dispone di più di un contatore). Questo numero può essere incrementato, decrementato e (di solito) testato per zero. Un calcolo inizia con zero ed è accettato solo quando il contatore è zero alla fine, paragonabile all'accettazione dello stack vuoto pushdown.

Se tale macchina ha almeno due di questi contatori, allora è equivalente a una macchina di Turing, anche nel caso deterministico. La prova di questo fatto è di Minsky e può essere trovata nell'articolo di Wikipedia che hai collegato. Il modello è ovviamente correlato alla macchina del registro menzionata nella stessa pagina di Wikipedia. I problemi di codifica menzionati nell'articolo di Wikipedia non sono importanti in questa impostazione qui poiché consideriamo gli automi con un nastro di input (dopotutto dobbiamo leggere una stringa di input) mentre wikipedia in questa pagina presuppone solo contatori.

Questo automa del contatore può essere visto come un tipo speciale di pda, con un solo simbolo di pila e un fondo di pila (che non viene mai spostato). Ciò consente all'automa di verificare se il contatore / stack è zero e di agire di conseguenza.

Esistono infatti tre tipi di contatori automatici. Quindi combina i risultati con saggezza o finisci con contraddizioni (come è successo a me in passato). Tutti e tre i tipi sono (rigorosamente) inclusi nelle lingue senza contesto per un contatore.

Il tipo sopra memorizza un numero intero (o un numero naturale, che non ha importanza) e può testare il suo contenuto su zero. Gli automi del contatore cieco memorizzano un numero intero ma non possono verificare lo zero. Tuttavia, possono contare esplicitamente sotto lo zero. Gli automi di contatore parzialmente ciechi non possono verificare lo zero, ma memorizzare un numero naturale. Se la macchina cerca di andare sotto lo zero, si ferma senza accettare. Questo è un tipo di archiviazione naturale per modellare le reti di Petri. Viene anche ricalcolato al PDA, ora con un singolo simbolo dello stack senza lo speciale marker inferiore (e quindi il problema del test per zero: ci si blocca quando si fa scattare l'ultimo elemento dello stack). A volte i nomi delle famiglie definite dai modelli di contatore respattivo sono OCL, ROCL e 1-BLIND.

Tutte queste famiglie sono state studiate, sono tutte (ma io sono arrugginito nella mia teoria AFA / AFL) principali trii completi (= coni razionali) il che significa che sono chiusi sotto morfismi (inversi) e intersezione con linguaggi regolari, e possono essere ottenuti usando queste operazioni iniziando con una sola lingua. Per la famiglia OCL più grande (con zero test) puoi iniziare con la lingua(Dc)* dove D={w{un',B}*|#un'(w)=#B(w)}è il "linguaggio Dyck su due lati su una coppia di parentesi" (nella terminologia che si adatta all'argomento). C'è un'intuizione importante relativa a questa lingua. simboliun' e B riflettere scoppiare e spingere, c è il test zero.

Come esempio di ricerca pertinente, Latteux etal ha un articolo non banale "La famiglia delle lingue a un contatore è chiusa tra quoziente" (che in realtà riguarda ROCL).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.