Perché una macchina Turing riconosce esattamente una lingua?


13

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?


12
Ho il sospetto che potresti non avere un'idea chiara di cosa intendiamo per "lingua". Puoi dire cosa pensi che sia una "lingua"?
Eric Lippert,

Perché hai bisogno di saperlo? In che modo pensi che possa fare la differenza?
babou,

Risposte:


29

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.


6
"Per definizione" è esattamente quello che avrei detto.
Dave Clarke,

1
@DaveClarke Naturalmente, è per definizione. Ma questo mi sembra un po 'breve, dal momento che dice anche che potremmo rendere diversa la nostra definizione, in modo che una TM accetterebbe due lingue o qualsiasi numero. In realtà non sono d'accordo con l'affermazione di David Richerby secondo cui non esiste un meccanismo attraverso il quale una MT possa accettare due lingue: è solo perché scegliamo di ignorarle e potremmo fare diversamente. Quindi alla domanda non viene data una risposta completa, quindi, se non spieghiamo ciò che giustifica farlo.
babou,

2
Penso che il problema qui sia il linguaggio usato per descrivere il "linguaggio" stesso. Una macchina di Turing accetta qualsiasi cosa sotto forma di una stringa indipendentemente dalla nostra definizione del linguaggio. La TM definisce il linguaggio in base a ciò che accetta, non è lo stesso della nostra comprensione (umana) del linguaggio. Questo è il motivo per cui questa risposta è buona ed è "... piena risposta".
David Barker,

2
Sono d'accordo con David, l'OP molto probabilmente letto da qualche parte che le macchine Turing ammettono solo una lingua e sta cercando di capire cosa significhi. Dato che questo probabilmente proveniva da una fonte normale, possiamo supporre che stessero usando la normale definizione di "linguaggio" come definita nella teoria computazionale, e non qualsiasi altra definizione. La definizione può essere arbitraria, ma è una definizione arbitraria ben compresa e concordata.
Cort Ammon,

3
Una macchina Turing che accetta due lingue è una macchina Turing che accetta una lingua che è l'unione di due lingue.
Simon Richter,

9

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 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: o No (accetta / rifiuta). Questo definisce esattamente una sola lingua = tutti gli input che danno un 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.


Punto minore: non direi che una TM emette "o un sì o un no", poiché questo trascura il non-termine. Questa semplificazione potrebbe causare ulteriori problemi in seguito.
chi

4

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 2L1L2 , 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.L1L2Lio

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.L1L2

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.


Credo che il primo paragrafo sia un po 'fuorviante. Sono disposto a scommettere che il PO non sta chiedendo perché stiamo definendo le cose in questo modo, ma che non sapevano nemmeno che fosse il caso. "Potremmo avere definizioni più sofisticate, ma la domanda è se servirebbe a uno scopo" fa sembrare che tu abbia bisogno di conoscere lo scopo di un concetto prima di poter capire come dargli un nome - a mio avviso, è un male modo di imparare.
interessante

L'OP afferma di voler sapere perché la TM riconosce solo una lingua per capire qualcos'altro. Gli rispondo, lo fanno perché li definiamo in quel modo. Aggiungo, il che è vero, che potremmo usare definizioni diverse, ma ciò non cambierebbe la teoria. Questo è un modo per dirgli che qualunque cosa stia cercando, la scelta della definizione è irrilevante e la riconoscibilità può essere definita per coprire esattamente gli stessi insiemi. Il motivo della scelta della definizione è la convenienza e la fecondità, ed è per questo che si evolvono nel tempo, così come il modo in cui i concetti vengono nominati o annotati.
babou,

Ok, ha senso. Penso che per lo più mi oppongo all'uso di "sofisticato" - implica che è auspicabile una definizione meno semplice.
interessante

3

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.


2

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.


2
Benvenuti in Informatica ! La tua risposta è (IMO) corretta ma non credo che si aggiunga alle risposte preesistenti. Abbiamo molte domande senza risposta e sarebbe molto più interessante e produttivo rispondere a una di queste piuttosto che ripetere le risposte esistenti.
David Richerby,

1
Grazie! All'inizio non ho visto la risposta attualmente accettata (che penso sia buona) perché era così breve, e mi sono sentito come se le altre risposte non rispondessero alla domanda in modo semplice.
interessante

1

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):

  • sintassi,
  • semantica,
  • criteri di accettazione.

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).


0

Supponiamo di avere una TM M1 quello riconosce L1 e L2 dove L1L2. Supponiamo che ci sia una stringaS1 dove S1L1 e S1L2. PoiM1 accetta S1, ma S1L2 così M1 non posso accettare S1, quindi abbiamo raggiunto una contraddizione. L'altro caso gioca esattamente lo stesso, ad esSL2 e SL1. Pertanto, una TM accetta solo una lingua.

Per dire una TM M riconosce una lingua L significa che per ogni stringa SL, M accetta Se per ogni stringa S quello M accetta, SL.

SLM accetta S

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 ATM.


Non è necessario dimostrare che una TM riconosce solo una lingua: ciò è immediato dalla definizione di "riconoscere". Data questa definizione, non è nemmeno chiaro cosa significhi per una MT accettare più di una lingua (come si suppone nella prima frase) o se qualsiasi detrazione da tale assunzione (come nella terza frase) sia valida. La prova per contraddizione funziona solo se le detrazioni sono a tenuta stagna: qui, l'errore potrebbe essere nel presupposto su come si comporta una TM che riconosce una TM, piuttosto che nel presupposto che una tale macchina esista.
David Richerby,

-2

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.


2
Ma la macchina di Turing non riconosce entrambe le lingue a meno che non siano effettivamente le stesse. Riconoscere L1 significa che non accetta alcuna stringa esterna a L1; riconoscere L2 significa che non accetta nulla al di fuori di L2. Se L1 e L2 sono diversi, non è in grado di riconoscerli entrambi.
David Richerby,

-3

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.


4
No. Una macchina Turing universale accetta la sola lingua {M,X|M accetta X} per un po 'di codifica -di macchine e input di Turing.
David Richerby,

e come è diverso da ciò che è scritto?
vzn,

2
Riconoscere i codici delle lingue non è la stessa cosa del riconoscere le lingue.
David Richerby,

si esattamente come indicato
vzn,

1
@DavidRicherby Penso che questa sia una questione di prospettiva. Si può certamente vedere una TM universale che accetta molte lingue; basta scrivere come{(m,X)|m=M,...} e guarda le lingue di X per ogni numero fisso m(accattivarsi / SMN). Limitare le TM a un parametro è universale, ma non necessario.
Raffaello
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.