Idee principali
Essere riconoscibili significa che puoi costruire un processo automatico (torneremo su quello in seguito) che accetta una parola come parametro tale
- Se il processo automatico termina, restituisce SÌ o NO.
- Questo processo automatico non deve terminare su ogni input, ma deve terminare se la parola di input è nella lingua.
Essere riconoscibili significa la lingua w ∈Σ*, w ∉ L (o, in inglese, l'insieme di tutte le parole che non sono presenti L, cioè complementare) è riconoscibile.
Essere decidibili significa che puoi costruire un processo automatico che accetta una parola come input, tale che
- Il processo automatico termina sempre
- Risponde SÌ o NO. Se risponde SÌ, la parola è nella lingua, se risponde NO, la parola non è nella lingua.
Un risultato importante è quello L è decidibile se e solo se L è riconoscibile e riconoscibile.
L'idea per dimostrare questo risultato è che è possibile creare un processo automatico dai processi che la riconoscibilità e la co-riconoscibilità ti danno, alternando i passaggi di entrambi i processi, fino a quando uno di questi ti dà la risposta SÌ. Uno di questi deve farlo, poiché ogni parola è o non è nella lingua)
Processi automatici
Senza essere troppo formali, sono stati progettati molti tipi di macchine, e sostanzialmente tutte sono state collegate a tipi di lingue (tali tipi dipendono dagli strumenti necessari per definire tali lingue. Per ulteriori informazioni, Gerarchia di Chomsky può aiutare).
Il solito significato di processo automatico, per quanto riguarda la decidibilità, è una macchina di Turing. È possibile definire una macchina di Turing in modo tale che possa:
- Ricevi valori dall'input
- Memorizza i valori
- Leggi i valori memorizzati
- Calcola le operazioni matematiche di base sui valori
- Prova le proprietà matematiche di base su tali valori e agisci di conseguenza, eventualmente eseguendo il loop.
Fondamentalmente, una Turing Machine può fare tutto ciò che puoi definire in un programma, tranne che è un oggetto matematico, con memoria e tempo infiniti da dedicare a un calcolo. Non sempre termina.
Un'altra proprietà importante di Turing Machines, è che puoi descrivere una macchina Turing come una sola parola (questa è la codifica), e esiste una macchina Turing che, data come input la codifica di una macchina Me una parola w, può simulare il calcolo di M sull'ingresso w. Questo sarà importante tra poco.
Ricordiamo solo che le lingue normali - che sono (quasi) il tipo più semplice di linguaggio a cui puoi pensare da un punto di vista matematico - hanno la proprietà peculiare di essere chiuse sotto complemento. Ciò significa sostanzialmente che su tali lingue le nozioni di riconoscibilità e decidibilità sono equivalenti. Questo non regge quando sali nella Gerarchia di Chomsky.
Esempio di una lingua indecidibile
Studieremo il problema di Halting . La domanda è: possiamo costruire una Turing Machine che, data la codifica di un'altra Turing MachineM e una parola w, decide seM termina con l'input w ?
Ovviamente, questo è riconoscibile , poiché non ci resta che simulareM su wfino a quando non termina, e quando lo fa, dire SÌ. Tuttavia, seMnon termina mai, non diremo NO, quindi riconosciamo questa lingua, ma non la decidiamo. È stato dimostrato che questa lingua non può essere decisa da una macchina di Turing. Ciò comporta un normale schema matematico: un argomento diagonale, che non definirei intuitivo. Puoi controllare questo schizzo di prova per abituarti.
Per riassumere
Non sarai in grado, in una lingua, di dichiarare se è decidibile o no. Non esiste alcun algoritmo in grado di farlo, e dimostrare che una lingua non è decidibile richiede un po 'di pensiero e può richiedere alcune conoscenze su Turing Machines, argomenti diagonali, ecc ...
Tuttavia, ecco il mio modo personale di gestire questa domanda. Di solito, quando studio una lingua, presumo che sia decidibile, a meno che non mostri una forma di riferimento al modo in cui Turing Machine funziona. In tal caso, inizio a diffidare e provo a definire un algoritmo che decide la lingua. Se questo non sembra facile, a volte aiuta a dividere il lavoro in algoritmi di riconoscimento e di riconoscimento congiunto. Se ancora non riesco a farlo, proverei a stabilire una connessione tra questa lingua e un'altra indecidibile, come "Se riesco a decidere quella lingua, posso decidere il problema dell'arresto". Questa è una riduzione di Turing a un problema indecidibile, quindi il primo problema non può essere decidibile. Se tutto ciò fallisce, posso provare a usare argomenti diagonali, ma questo può essere un po 'complicato.