Perché è impossibile decidere la regolarità di un linguaggio privo di contesto?


8

Come ho studiato, decidere la regolarità delle lingue senza contesto è indecidibile.

Tuttavia, possiamo verificare la regolarità usando il teorema di Myhill – Nerode che fornisce una condizione necessaria e sufficiente. Quindi il problema dovrebbe essere decidibile.

Dov'è il mio errore?


3
Come proponi di dire se la relazione Myhill-Nerode ha un numero finito di classi di equivalenza? Quale proprietà delle lingue senza contesto pensi che ti consenta di farlo?
David Richerby,

2
Controlla la definizione di calcolabilità: devi fornire una macchina di Turing (o, più in generale, un algoritmo) che risolva il problema (sempre). Myhill-Nerode non è di per sé un algoritmo, ma solo una caratterizzazione. La proprietà fornita è decidibile? Hai provato a trasformare il teorema in un tale algoritmo?
Raffaello

2
@Jiya Cosa intendi con "decidi la regolarità"? All'inizio sembra ovvio cosa significhi, ma in realtà è più sottile. Una procedura decisionale (algoritmo) deve accettare un input finito, quindi come daresti un linguaggio infinito come input? Forse vuoi usare espressioni come . OK, ma quali espressioni consentirai? ? ? {un'nBn|n0}{un'nBm|il mLa macchina di Turing si ferma sull'ingresso m}{un'nBKn|K è uno dei numeri preferiti di David Richerby}
David Richerby,

1
@Jiya Assolutamente sì. Ma devi scegliere quale serie di espressioni vuoi accettare e scrivere una specifica formale di quelle espressioni. Quindi, la tua macchina Turing dovrebbe analizzare le espressioni e decidere se corrispondono o meno alle lingue normali.
David Richerby,

1
@Jiya Se le uniche lingue che consideri sono quelle del modulo {un'KXBXcmX|X0} dove K, e m sono costanti, quindi la lingua risultante è regolare se, e solo se, due o tre di K, e msono zero. Quindi, per le lingue definite in questo modo, il problema di determinare se la lingua risultante è regolare è decidibile. Ma, se si consentono relazioni più complesse tra i numeri diun'S, Bs e cs, può essere indecifrabile se una lingua è regolare. Questo è il motivo per cui è di fondamentale importanza come vengono specificate le lingue.
David Richerby,

Risposte:


9

Myhill – Nerode fornisce in effetti una caratterizzazione delle lingue normali, ma ciò non è sufficiente per dimostrare che il problema è decidibile. "Decidibile" significa che esiste un algoritmo (più formalmente, una macchina di Turing) che termina per ogni input e, ovviamente, fornisce sempre la risposta corretta. Quindi, in questo caso, dovresti dare un algoritmo che, dato un linguaggio come input, determina se la relazione Myhill – Nerode ha un numero finito di classi di equivalenza. Si scopre che ciò non può essere fatto per linguaggi senza contesto; dettagli nel tuo manuale di lingue formali preferito.

Se vuoi decidere se una lingua generale è regolare, un'ulteriore sottigliezza è che devi stare attento a ciò che è l'input per il tuo algoritmo. L'input deve essere una stringa finita - altrimenti, anche solo leggere l'input sarebbe un algoritmo non terminante. Nel caso di linguaggi senza contesto, è possibile utilizzare una grammatica come rappresentazione finita di un linguaggio infinito. Per le lingue più generali, avresti bisogno ... beh, qualcosa di più generale. Alla fine, però, se vuoi avere a che fare con tutte le lingue, sei condannato. Su qualsiasi alfabeto finito, ci sono innumerevoli molte lingue ma solo innumerevoli stringhe finite. Ciò significa che non puoi descrivere tutte le lingue usando stringhe finite. 1Pertanto, il tentativo di scrivere un algoritmo per determinare se le lingue arbitrarie fornite come input sono regolari in realtà non riesce prima che inizi. Non è solo che non puoi scrivere l'algoritmo: non puoi nemmeno scrivere l'input!

Nota che questo non significa che tu, un essere umano, non puoi usare Myhill – Nerode per determinare se le lingue sono regolari. Significa solo che non si può scrivere una serie di istruzioni precise per dire me come fare. Ad un certo punto, una serie di istruzioni del genere dovrebbe dire qualcosa del tipo "E poi giocarci per vedere cosa funziona" o "Da lì, devi capirlo da solo".


  1. In particolare, ciò significa che alcune lingue devono essere indecidibili, poiché ci sono più lingue di quanti ce ne siano algoritmi.

1
Possiamo aggirare il problema con la codifica di input limitandoci a tutti i linguaggi ricorsivamente enumerabili, decidibili o persino senza contesto. Poi, abbiamo "naturali" codifiche di input (grammatiche, macchine di Turing, ...) ma ancora non riesco a decidere la regolarità. Quindi, chiaramente, ci sono cose più sottili in corso.
Raffaello

Grazie Raffaello. Ho modificato per chiarire che la sezione "doom" faceva riferimento a non poter accettare tutte le lingue come input.
David Richerby,
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.