Jest to kontynuacja kolejnego pytania tutaj i mam nadzieję, że nie jest to zbyt filozoficzne. Jak zauważył Raphael w komentarzu do mojego poprzedniego pytania, tak naprawdę nie rozumiem definicji „obliczalnego”, ale zgodnie z niektórymi artykułami, które czytam, definicja nie jest również bardzo jasna, jeśli chodzi o modele obliczeń słabsze niż Turing maszyny ze względu na kodowanie wejścia i wyjścia.
Typowa definicja obliczania Turinga jest następująca:
Definicja 1: Funkcja nazywa się obliczalna Turinga, jeśli istnieje maszyna Turinga która oblicza przy użyciu odpowiedniego kodowania liczb naturalnych jako ciągów.
Definicje różnią się, co dokładnie jest odpowiednie kodowanie jest, ale większość odnosi się do binarnego kodowania , kodowanie jednoargumentowego lub kodowania dziesiętnego jako jednego stałego i odpowiedniego kodowania. Możliwe jest również wykazanie, że ustalenie jednego kodowania jest wymagane do zdefiniowania obliczalności Turinga. Ale co sprawia, że powiedzmy, binarne kodowanie liczb naturalnych jest wyjątkowe, abyśmy mogli go aksjomatyzować jako jedyne odpowiednie kodowanie? Prawdopodobnie dlatego, że pasuje do intuicyjnego pojęcia, co oznacza obliczalność przypadkowo .
A co jeśli spojrzymy na słabsze modele obliczeń niż maszyny Turinga? Rozważmy na przykład zestaw „okaleczonych” maszyn Turinga z alfabetem który może poruszać się tylko w prawo, oraz definicję kalekiego obliczania Turinga, która jest zgodna z definicją obliczalności Turinga:
Definicja 2: Funkcja nazywa się kalekim obliczeniowym przetwarzaniem Turinga lub obliczalnym w iff istnieje sparaliżowana maszyna Turinga która oblicza przy użyciu odpowiedniego kodowania liczb naturalnych jako sznurek.
Jeśli zdefiniujemy „odpowiednie kodowanie” jako „kodowanie binarne”, wówczas funkcja nie jest obliczalna w . Jeśli aksjomatyzujemy „odpowiednie kodowanie” jako „kodowanie jednoargumentowe”, wówczas można obliczyć w . Wydaje się to niezręczne, biorąc pod uwagę fakt, że każdy może naprawić dowolne z nieskończenie wielu intuicyjnych kodowań do woli. Powinno być jasne, czy model obliczeniowy może obliczać czy nie bez odwoływania się do jakiegoś konkretnego kodowania - przynajmniej nigdy nie widziałem, aby ktokolwiek wspominał, jakie kodowanie jest stosowane, gdy stwierdza się, że „programy pętli są słabsze niż maszyny Turinga”.
Po tym wstępie mogę w końcu sformułować moje pytanie: Jak zdefiniować „odpowiednie kodowanie” i „obliczalność” dla dowolnych modeli obliczeń, które nie pokrywają się z intuicyjnym pojęciem obliczalności? Czy jest to możliwe w ramach obliczalności Turinga?
Edycja: Skróciłem wprowadzenie, nie dodało się do pytania.