Questo è il seguito di un'altra domanda qui , e spero che non sia troppo filosofico. Come ha sottolineato Raphael in un commento sulla mia domanda precedente, non capisco davvero la definizione di "calcolabile", ma secondo alcuni articoli che leggo, la definizione non è anche molto chiara quando si tratta di modelli di calcolo più deboli di turing macchine a causa della codifica di input e output.
La definizione tipica di turing calcolabile è la seguente:
Definizione 1: Una funzione è chiamata turing calcolabile se esiste una turing machine che calcola usando una codifica adeguata dei numeri naturali come stringhe.
Le definizioni differiscono in ciò che è esattamente una codifica adatta , ma la maggior parte si riferisce alla codifica binaria , codifica unaria o codifica decimale come quella codifica fissa e adatta. È anche possibile dimostrare che è necessario correggere una codifica per la definizione della calcolabilità del turing. Ma cosa rende speciale, per esempio, la codifica binaria dei numeri naturali in modo che possiamo assiomatizzarla come l'unica codifica adatta? Probabilmente perché si adatta alla nozione intuitiva di cosa significhi coincidenza la calcolabilità .
E se osservassimo i modelli di calcolo più deboli delle macchine di turing? Ad esempio, consideriamo l'insieme delle macchine da "paralizzate" con l'alfabeto che può spostarsi solo a destra, e una definizione di macchina da paralizzare calcolabile che è coerente con quella della calcolatrice da banco: { 0 , 1 }
Definizione 2: Una funzione è chiamata turing paralizzato calcolabile o calcolabile in se esiste una turing paralizzata che calcola usando una codifica adeguata dei numeri naturali come una stringa.M c M f
Se definiamo "codifica adatta" come "codifica binaria", la funzione non è calcolabile in . Se assiomatizziamo la "codifica adatta" come "codifica unaria", allora è calcolabile in . Questo sembra imbarazzante dato il fatto che tutti possono correggere una delle infinite e intuitive codifiche a volontà. Dovrebbe essere chiaro se un modello di calcolo può calcolare o meno senza fare riferimento a una codifica specifica - almeno non ho mai visto nessuno menzionare quale codifica viene utilizzata quando si afferma "i programmi di loop sono più deboli delle macchine di turing".M c f M c f
Dopo questa introduzione posso finalmente formulare la mia domanda: come definirebbe "codifiche adatte" e "calcolabilità" per modelli arbitrari di calcolo che non coincidono con la nozione intuitiva di calcolabilità? Questo è possibile nell'ambito della computabilità del turing?
Modifica: ho abbreviato l'introduzione, non ha aggiunto alla domanda.