Sto cercando di capire l'esistenza di lingue non riconoscibili. Per ottenere questo, ho bisogno di sapere perché una macchina Turing riconosce solo una lingua, non più. Perchè è questo?
Sto cercando di capire l'esistenza di lingue non riconoscibili. Per ottenere questo, ho bisogno di sapere perché una macchina Turing riconosce solo una lingua, non più. Perchè è questo?
Risposte:
Il linguaggio riconosciuto da una macchina di Turing è, per definizione, l'insieme di stringhe che accetta. Quando un input viene dato alla macchina, viene accettato o meno. Qualsiasi input particolare per quella macchina è sempre accettato (nella lingua) o sempre non accettato (non nella lingua). Quindi non esiste alcun meccanismo attraverso il quale una singola macchina di Turing potrebbe persino accettare più di una lingua.
Pensala in questo modo: una TM è come un computer con un software caricato. Ogni software fa una cosa, giusto? Ad esempio, pensa al tuo computer e presumi che abbia solo 1 programma caricato. Quindi PC + "photoshop" fa solo Photoshop, mentre PC + "mine sweeper" spazza solo le mine.
Quindi una macchina di Turing è una creatura molto semplice, che ad ogni corsa ottiene un singolo input ed emette un sì o un no . Su quali input dice di sì, e su cui dice di no - questo è impostato dal "programma" del TM come determinato dai suoi stati e dalla sua funzione di transizione. Una volta risolti, il "programma" viene corretto e per ogni dato input c'è una sola risposta: Sì o No (accetta / rifiuta). Questo definisce esattamente una sola lingua = tutti gli input che danno un Sì quando vengono dati alla TM.
D'altra parte, l' insieme di tutte le TM è equivalente all'insieme di computer + "software" con tutti i programmi possibili. Ora è possibile decidere più lingue, ma ogni TM specifica decide (o riconosce) solo una lingua.
La macchina di Turing funziona come loro perché scegliamo di definirli così. Potremmo avere definizioni più sofisticate, ma la domanda è se servirebbe a uno scopo, se ci permetterebbe di fare più cose. E, per quanto ne sappiamo, la risposta è no.
È molto semplice realizzare modelli di macchine di Turing che riconoscono due lingue. Lingue indicate e L 2 , potremmo definire una TM con 2 tipi di stato accettante: una per e una per L 2 . Si direbbe che una MT accetti L i se ad un certo punto entra in uno stato accettante corrispondente. Ma riprenderebbe il calcolo per vedere se può anche entrare nell'altro tipo di stato accettante. E potremmo richiedere che si fermi in seguito, o forse no. Potresti quindi costruire l'intera teoria su tali macchine. Funzionerebbe e sarebbe molto più complicato di quello che facciamo di solito.
Per rispondere all'affermazione di David Richerby secondo cui " non esiste alcun meccanismo con cui una singola macchina di Turing possa accettare più di una lingua ", è solo perché scegliamo di non considerare tali meccanismi. Anche se si limita TM al modello molto standard, si potrebbe dire che l'ingresso è riconosciuto nella lingua quando la TM si ferma in uno stato accettante con un numero dispari di passi, ed è in L 2 quando la TM accetta con un numero pari di passaggi. Grazie al non determinismo, ciò non impedirebbe alla TM di riconoscere entrambe le due lingue che si intersecano.
Il punto è che tutti i tipi di varianti possono essere usati per fare la teoria. Sono stati anche provati approcci molto diversi per modellare ciò che è il calcolo, come lambda-calcolo, logica compinatoria, teoria delle funzioni ricorsive e altro ancora.
È stato sempre dimostrato che nessuno di loro fa qualcosa che non può essere fatto dal nostro semplice modello in cui TM riconosce solo una lingua. A tal punto che è stato ipotizzato che faccia tutto ciò che può essere fatto. Questa si chiama tesi di Church-Turing . È la pietra angolare della teoria della calcolabilità, che, per quanto ne sappiamo, determina quali lingue sono riconoscibili o meno.
Quindi potremmo anche usare un modello semplice, dal momento che uno complesso renderà la nostra vita più difficile, senza alcun beneficio reale.
Naturalmente, a volte utilizziamo altri modelli perché ci consentono di comprendere meglio alcuni problemi.
Vorrei approfondire un punto nella risposta di Richerby:
Quando un input viene dato alla macchina, viene accettato o meno.
La ragione di ciò è che la macchina di Turing è deterministica: dato lo stesso input e lo stesso stato iniziale, farà sempre la stessa cosa ogni volta che la esegui (o termina nello stesso stato di accettazione o nello stesso stato di rifiuto, o continua per sempre ).
Inoltre, possiamo facilmente dimostrare che ogni macchina Turing riconosce esattamente una lingua:
Supponiamo, per contraddizione, che una macchina di Turing M riconosca due lingue distinte L1 e L2. Poiché L1 e L2 sono distinti, deve esistere una stringa S che si trova in L1 ma non in L2 (senza perdita di generalità - potrebbe essere il contrario, ma la prova procederà allo stesso modo da qui con L1 e L2 scambiati ). Ora esegui M su S. Se accetta, allora viene raggiunta una contraddizione perché allora S sarebbe in L2. Se non accetta (rifiuti o loop), viene raggiunta una contraddizione perché S non sarebbe in L1.
Una macchina Turing riconosce una lingua perché è la definizione della parola riconoscere : la lingua riconosciuta da una macchina Turing è l'insieme di tutte le stringhe / input per cui la macchina Turing accetta.
La risposta a questo dipende da cosa esattamente capisci quando intendi "Macchina di Turing". Esistono tre componenti per ogni modello computazionale (limitandosi ai decisori / accettori qui):
Per le macchine di Turing, sintassi sarebbe la tupla di set di stati, alfabeti, funzione di transizione e così via. La semantica sarebbe la definizione di un calcolo , cioè descrivere come applicare la funzione di transizione al fine di ricavare il contenuto del nastro dopo alcuni passaggi. Il criterio di accettazione è di dire "quando ciò accade, ci fermiamo e il risultato è quello".
Ora, le macchine di Turing sono solo sintassi e semantica per te o includi anche il criterio di accettazione? Se fai il primo, qualsiasi TM può accettare più lingue usando diversi criteri di accettazione; puoi anche concepire criteri di accettazione che consentano più lingue accettate (ad esempio, pensa a TM a due parametri). Se fai quest'ultimo, tuttavia, non c'è spazio di manovra e il solito criterio di accettazione consente effettivamente esattamente una lingua per TM (di questo tipo).
Il definizione e l'utilizzo usuali del termine in TCS includono tutti e tre i componenti. Questo ha senso perché, in particolare, cambiare il criterio di accettazione può cambiare la classe di oggetti che l'automa rappresenta drasticamente , quindi abbiamo bisogno di fissare il criterio per sapere di cosa stiamo parlando.
Ad esempio, confronta automi finiti e gli automi Büchi . La sintassi e la semantica sono esattamente le stesse, ma una accetta parole finite mentre l'altra accetta parole infinite!
Prova a capire cosa succede se inserisci il criterio di accettazione degli automi Büchi nella definizione TM.
Ora, perché il solito criterio di accettazione è significativo? Finché ti limiterai al linguaggio delle stringhe finite, non cambierà molto avendo più lingue per TM, a livello concettuale: saremo comunque in grado di accettare lo stesso insieme di lingue. Quindi ci atteniamo al modello più semplice. Ciò non vuol dire, tuttavia, che un modello più coinvolto non può essere utile per la modellizzazione in applicazioni, ma questo va oltre lo scopo di TCS (che detiene l'autorità definitoria).
Supponiamo di avere una TM quello riconosce e dove . Supponiamo che ci sia una stringa dove e . Poi accetta , ma così non posso accettare , quindi abbiamo raggiunto una contraddizione. L'altro caso gioca esattamente lo stesso, ad es e . Pertanto, una TM accetta solo una lingua.
Per dire una TM riconosce una lingua significa che per ogni stringa , accetta e per ogni stringa quello accetta, .
accetta
To understand the existence of non-recognisable languages, consider the definition of decidable languages. To say a language is decidable means that the language is recognizable and co-Turing recognizable. If there were no non-recognizable languages, then every language would be decidable. This is false, see .
Una lingua è un insieme di stringhe. L'unione di due lingue L1 e L2 non è un insieme di stringhe (chiamiamolo L3), e quindi sarebbe un'altra lingua? Quindi, se la macchina Turing riconosce entrambe le lingue, riconosce L3, una sola lingua.
nessun'altra risposta indica l'esistenza delle Macchine universali di Turing come descritto / scoperto per la prima volta da Turing nella sua prova di arresto. sì, una TM accetta un unico linguaggio enumerabile ricorsivamente, ma l'UTM è in grado di riconoscere qualsiasi linguaggio enumerabile ricorsivamente se è codificato sull'input insieme alla stringa di input. quindi la domanda ha una qualità zenlike. Le TM accettano entrambe solo una sola lingua e tutte le possibili lingue codificabili.