Tại sao các số tính toán (theo nghĩa của Turing) là vô số? Nó phải rất rõ ràng, nhưng tôi hiện không thấy nó.
Tại sao các số tính toán (theo nghĩa của Turing) là vô số? Nó phải rất rõ ràng, nhưng tôi hiện không thấy nó.
Câu trả lời:
Tôi giả sử rằng định nghĩa của bạn về một số tính toán là thế này: có một máy Turing ở đầu vào , dừng lại với bit thứ của số đó.n
Giả sử có một phép liệt kê đệ quy của các máy Turing tạo ra các số tính toán. Bạn có thể sử dụng đường chéo để đưa ra một số tính toán mới không phải là một phần của phép liệt kê đệ quy này.
Việc liệt kê các số có thể tính toán bằng cách liệt kê các máy Turing, nhưng không phải mọi máy Turing đều tương ứng với một số có thể tính toán được, và nói chung quyết định xem máy Turing có dừng lại cho tất cả các đầu vào hay không (không thể đầu ra 0 hoặc 1). Tuy nhiên, có thể liệt kê tất cả các số tính toán hiệu quả, giả sử những số có thời gian chạy là đa thức, bằng cách sử dụng máy Turing có xung nhịp.
Nếu bằng cách liệt kê, bạn có nghĩa là có một mệnh đề với các số tự nhiên (nghĩa là có thể đếm được), thì không, các số tính toán không thể đếm được.
Chúng ta hãy xác định vấn đề chính xác hơn: "Máy Turing in số (NPTM)" là Máy Turing, đối với mọi chuyển đổi trạng thái, có thể in không có gì, hoặc có thể in bất kỳ chữ số thập phân, dấu trừ hoặc dấu chấm. Điều này là đủ để in biểu diễn thập phân của số thực.
Cho phép xác định một số thực có thể tính toán là bất kỳ số thực nào có thể được in với biểu diễn dài tùy ý, trong một thời gian đủ, bởi một NPTM bắt đầu từ một băng trống. Cũng cho biết rằng một số được tính bằng một NPTM nhất định nếu nó dừng lại sau khi in một số thực hình thành tốt (trong trường hợp đó, số đó có biểu thị thập phân hữu hạn) hoặc, trong một khoảng thời gian hữu hạn, sẽ in một số hữu hạn với một dấu thập phân, và sẽ tăng độ chính xác của số bằng cách in nhiều chữ số hơn, được đưa ra nhiều thời gian hơn.
Điều kiện sau này cần thiết bởi vì, nếu chúng ta có một máy, ví dụ, in một chuỗi vô hạn của một số chữ số, giả sử 1111111111111111111
..., không thể nói là tính toán bất kỳ số thực nào, bởi vì các số thực chỉ có đại diện vô hạn ở bên phải bên của thời kỳ thập phân. Mặt khác, nếu máy in 3.14
và sau đó dừng in, nhưng không bao giờ dừng lại, không thể nói là tính toán bất kỳ số thực nào đơn giản vì độ chính xác của số không tăng, do đó, máy cụ thể này sẽ không được xây dựng thêm nữa.
Đây là những ví dụ về NPTM tính toán một số. Một NPTM rằng:
1
, sau đó dừng lại. Nó tính toán số 1.1.0
, sau đó dừng lại. Nó cũng tính toán số 1.1.0000000
, và giữ số không in mãi mãi. Cái này cũng tính số 1.3.14
, sau đó dừng lại. Nó tính số 3.14.3.14159
và tiếp tục in các chữ số của . Cái này tính số .pi-42.
, và sau đó dừng lại. Nó tính số -42.Và đây là những ví dụ về NPTM không tính toán bất kỳ số nào. Một NPTM rằng:
123123123
và sau đó tiếp tục in trình tự 123
mãi mãi. Không tính toán một số vì chuỗi vô hạn này không đại diện cho bất kỳ số thực nào.1.0.0
rồi dừng lại. Không phải vì trình tự hữu hạn này không được hình thành tốt.....-..---
rồi dừng lại. Không phải vì đây cũng không phải là một con số thực sự hình thành.3.14
, không dừng lại, nhưng cũng không bao giờ in bất cứ điều gì khác. Không tính toán một số vì độ chính xác của nó không tăng theo thời gian.Bạn đã có ý tưởng. Sau đó, chúng tôi có hai lớp NPTM: những lớp tính toán một số thực và những người không.
Vấn đề với việc tìm ra một số liệt kê cho các số tính toán là, ngay cả khi NPTM có thể đếm được, chúng ta không thể có một quy trình tách một loại NPTM với một loại NPTM khác.
Hãy xem xét các định nghĩa của tập hợp đếm được: cho một tập là đếm được, thì phải có một số chức năng song ánh .F : N → S
Để "chứng minh" rằng các số có thể tính toán là có thể đếm được, người ta có thể muốn xác định hàm như vậy từ việc đếm NPTM (và đây là điều mọi người thường làm, khi họ tin rằng các số có thể tính được là có thể đếm được). Một cái gì đó như thế này:
NPTM có thể đếm được, do đó, có một chức năng , do đó chúng ta có thể liệt kê mãi mãi tất cả NPTM tồn tại. Vì vậy, để liệt kê tương tự tất cả các số có thể tính toán và xác định chính xác hàm , người ta chỉ cần tất cả các NPTM, nhưng chỉ tính những số đó số thực. Nhưng làm thế nào để chúng ta biết nó tính một số thực?E Computabe : N → Tính toán
Vâng, chúng tôi không. Hãy xem xét một máy in ngay lập tức 1.0
, sau đó dừng in và tiếp tục cố gắng giải quyết một trường hợp của vấn đề tương ứng Post . Nếu nó giải quyết được vấn đề, nó dừng lại, thì máy chỉ cần tính toán số một. Nhưng vấn đề đó là không thể giải quyết được, vì vậy nó có thể không bao giờ dừng lại, và nếu nó không bao giờ dừng lại, nó không bao giờ tính được một con số thực. Nhưng chúng ta không thể biết liệu nó có dừng lại được không, bởi vì vấn đề Ngừng cũng không thể giải quyết được! Vì vậy, vì không có cách nào để biết liệu cỗ máy cụ thể này và vô số máy khác, tính toán hay không phải là số thực, chúng ta không thể xây dựng / xác định chức năng phỏng đoán theo cách này.
Cách ngây thơ để định nghĩa sự thất bại, và không khó để chứng minh rằng không có cách nào để làm điều đó, bất cứ điều gì. Như Yuval Filmus đã đề xuất, đường chéo có thể được sử dụng.