Esistono molte (e intendo molte) lingue numerabili che sono Turing-decidibili. Qualche lingua non numerabile può essere decisa da Turing?
Esistono molte (e intendo molte) lingue numerabili che sono Turing-decidibili. Qualche lingua non numerabile può essere decisa da Turing?
Risposte:
Ogni lingua su un alfabeto finito (o anche numerabile) è numerabile. Supponendo che l'alfabeto della tua macchina di Turing sia finito, qualsiasi lingua che possa eventualmente accettare è numerabile.
Possiamo avere lingue non numerabili solo se consentiamo parole di lunghezza infinita, vedi ad esempio linguaggio Omega-regolare . Queste lingue sono chiamate lingue . Un altro esempio sarà la lingua del sottoinsieme di reali che contiene, diciamo, espansioni decimali di tutti i numeri reali.
Ci sono alcuni modelli in cui le macchine di Turing sono modificate per accettare le lingue . Alcuni di questi modelli utilizzano le condizioni Buchi per l'accettazione. Dal momento che non è possibile vedere l'intero input in tempo finito, diciamo che l'input è accettato se la Macchina di Turing entra nello stato di accettazione infinite volte. Se possiamo provarlo analizzando l'input (non eseguendolo), diciamo che l'input è accettato.
La calcolabilità classica discute le funzioni sulle stringhe finite di un alfabeto finito. Di conseguenza, sono numerabili tutte le lingue, decidibili o indecidibili.
Per considerare linguaggi non numerabili dobbiamo guardare stringhe infinite al posto di stringhe finite. (AFAIK, avere un alfabeto infinito non è molto interessante e non corrisponde a un modello realistico di calcolo da solo.)
Esistono modelli di calcolo in cui possiamo gestire infinite stringhe che ci consentono di rappresentare oggetti da domini non numerabili come numeri reali. Questi sono spesso rappresentati come calcoli di tipo superiore. Un modello che utilizza le macchine di Turing è il modello TTE. In questo modello l'input può essere stringhe infinite e le macchine possono accedere a qualsiasi elemento nella stringa desiderata. Non è necessario terminare la macchina, tuttavia esistono condizioni per assicurarsi che l'output della macchina converga.
Supponiamo che l'input della nostra macchina da Σ ω , ovvero stringhe infinite dall'alfabeto Σ , ad esempio Σ = { 0 , 1 } . Quindi ci sono Σ N = 2 stringhe N. Pertanto ci sono 2 2 N lingue possibili. Il numero di macchine TTE Turing è ancora numerabile. Quindi la maggior parte di queste lingue sono indecidibili.
Ma c'è qualcosa di ancora più interessante qui: se vuoi che la macchina si fermi sempre, sarà in grado di leggere solo una parte iniziale finita dell'input. Di conseguenza abbiamo quanto segue: Sia una macchina TTE che si ferma sempre (a tempo finito). Poi c'è una lingua senza prefisso L ∈ Σ ∗ e una macchina di Turing N tale che per ogni x ∈ Σ ω , accetta x sef N accetta la parte iniziale di x che è in L .
In parole povere , il computo delle macchine TTE Turing che si ferma sempre è determinato dal calcolo di una macchina Turing su stringhe finite.
Lasciatemi fare un esempio di linguaggi decidibili e indecidibili di stringhe infinite:
Per qualsiasi è decidibile la lingua di stringhe infinite la cui k ° posizione è 0. Lo stesso con k esima posizione essendo 1. Intersezione di due qualsiasi linguaggi decidibili è decidibile, ad esempio stringhe cui 3 ° posizione è 0 e 6 ° posizione è 1.
L'unione di due lingue decidibili è decidibile. Ad esempio stringhe che iniziano con o 10 .
Sia un elenco computabilmente enumerabile di lingue decidibili. Quindi L = ∪ i è semi-decidibili, cioè v'è macchina che arresta e accetta ogni nuova stringhe in L e non accetta quando le corde non è in L . Se non è in L la macchina potrebbe non arrestarsi. Qualsiasi lingua semi-decidibile può essere ottenuta prendendo l'unione di un elenco enumerabile di lingua del modulo indicato nel precedente punto 1.
Una lingua è decidibile se sia la lingua che il suo complemento sono semi-decidibili.
La lingua contenente le stringhe di inifinite di 0 non è decidibile. Potrebbe sembrare strano ma guardalo in questo modo: quando leggi la stringa quando puoi fermarti e dire che l'input è composto da tutti gli 0? Se si interrompe dopo aver letto 0, la macchina accetta anche la lingua che inizia con k 0 e segue tutti gli 1. Si noti che l'unico accesso che abbiamo alla stringa in questo modello è chiedere un po 'e ottenerlo.
Questo potrebbe farti pensare che TTE non sia un modello interessante. Ma risulta che il calcolo su stringhe infinite usando il modello TTE è in realtà abbastanza interessante. Si basa sull'intuizione che per ottenere una parte finita dell'output è possibile leggere solo una parte finita dell'input. In altre parole, qualsiasi informazione finita sull'output dipende solo dalla quantità finita di informazioni sull'input. Si scopre che le funzioni che siamo interessati al calcolo seguono questa regola, altrimenti non potremmo calcolarle. Ad esempio, considera i numeri letti codificati come stringhe binarie e la funzione a noi.
deve essere clopen. Altri modelli realistici di calcolo su numeri reali (non solo in virgola mobile ma numeri reali davvero infiniti) hanno questa proprietà. Se sei interessato a un buon posto per leggere su TTE è il libro di Klaus Weihrauch " Analisi computabile