Tôi suy nghĩ một lúc liệu có nên thêm một câu trả lời nữa không. Các câu trả lời khác tập trung vào giữa câu hỏi của anh ấy (về "hoàn thành", "tautology", v.v.). Hãy để tôi lấy phần đầu tiên và phần cuối cùng, và do đó, bức tranh lớn hơn và hơi triết lý:
Nhưng nó có nghĩa gì?
Turing hoàn toàn có nghĩa là gì?
Có cách nào để xác định khả năng của Turing Machine mà không cần nói "có thể mô phỏng một máy Turing khác" không?
Nói một cách không chính thức, Turing hoàn chỉnh có nghĩa là cơ chế của bạn có thể chạy bất kỳ thuật toán nào bạn có thể nghĩ đến, bất kể nó phức tạp, sâu sắc, đệ quy, phức tạp, dài như thế nào, và cho dù có lưu trữ hay thời gian bao nhiêu cần thiết để đánh giá nó Không cần phải nói rằng nó chỉ thành công nếu vấn đề là có thể tính toán được, nhưng nếu nó có thể tính toán được, nó sẽ thành công (tạm dừng).
(NB: để tìm hiểu lý do tại sao điều này là "không chính thức", hãy xem luận án Church-Turing đi theo những dòng đó, với cách diễn đạt phức tạp hơn, mặc dù là một luận án, nó có thể hoặc không thể chính xác. Cảm ơn @DavidR Richby cho chỉ ra thiếu sót nhỏ này trong một bình luận.)
"Thuật toán" có nghĩa là những gì chúng ta thường hiểu là thuật toán máy tính ngày nay; tức là, một loạt các bước rời rạc thao túng lưu trữ, với một số logic điều khiển được trộn lẫn. Tuy nhiên, nó không giống như một máy Oracle, tức là nó không thể "đoán".
Ví dụ cho một ngôn ngữ phi tc thực tế
Nếu bạn đã tự lập trình, có lẽ bạn biết các biểu thức chính quy, được sử dụng để khớp các chuỗi với một số mẫu.
Đây là một ví dụ về cấu trúc không Turing Complete. Bạn có thể dễ dàng tìm thấy các bài tập trong đó đơn giản là không thể tạo một biểu thức chính quy phù hợp với các cụm từ nhất định.
Ví dụ (và điều này chắc chắn đã làm phiền nhiều lập trình viên trong các ứng dụng thực tế), về mặt lý thuyết và thực tế không thể tạo ra một biểu thức chính quy phù hợp với ngôn ngữ lập trình hoặc tài liệu XML: không thể tìm thấy cấu trúc khối để tìm cấu trúc khối ( do ... end
hoặc { ... }
trong các ngôn ngữ, mở và đóng thẻ trong tài liệu XML) nếu chúng được phép sâu tùy ý. Nếu có một giới hạn ở đó, ví dụ bạn chỉ có thể có 3 cấp độ "đệ quy", thì bạn có thể tìm thấy một biểu thức chính quy; Nhưng nếu nó không bị giới hạn, thì đó là điều không nên.
Vì rõ ràng có thể tạo một chương trình bằng ngôn ngữ Turing-Complete (như C) để phân tích mã nguồn (bất kỳ trình biên dịch nào), các biểu thức chính quy sẽ không bao giờ có thể mô phỏng chương trình đã nói, do đó theo định nghĩa chúng không phải là Turing-perfect
Động lực
Bản thân ý tưởng về máy turing không có gì thiết thực; tức là, Turing chắc chắn đã không phát minh ra nó để tạo ra một máy tính thực sự hoặc một cái gì đó tương tự, trái ngược với Charles Babbage hoặc von Neumann, chẳng hạn. Điểm có khái niệm về Turing Machine là cực kỳ đơn giản. Nó bao gồm hầu như không có gì. Nó giảm các máy tính có thể (và thực tế) xuống mức tối thiểu có thể tưởng tượng được.
Đến lượt, điểm đơn giản hóa này là điều này giúp bạn dễ dàng suy ngẫm về các câu hỏi lý thuyết (như tạm dừng các vấn đề, các lớp phức tạp và bất cứ điều gì khoa học máy tính lý thuyết làm phiền chính nó). Một tính năng đặc biệt là nó thường rất dễ xác minh liệu một ngôn ngữ hoặc máy tính nhất định có thể mô phỏng Máy Turing bằng cách lập trình đơn giản là Turing Machine (rất dễ dàng!) Bằng ngôn ngữ đó.
Đến vô cùng
Lưu ý rằng bạn không bao giờ cần thời gian vô hạn hoặc lưu trữ; nhưng cả thời gian và lưu trữ đều không bị ràng buộc. Chúng sẽ có một giá trị tối đa cho mỗi lần chạy có thể tính toán được, nhưng không có giới hạn về mức độ lớn của giá trị đó. Thực tế là một máy tính thực sự cuối cùng sẽ hết RAM được trình bày ở đây; tất nhiên đây là một giới hạn cho bất kỳ máy tính vật lý nào, nhưng nó cũng rõ ràng và không quan tâm đến "sức mạnh tính toán" lý thuyết của máy. Ngoài ra, chúng tôi không quan tâm đến việc thực sự mất bao lâu. Vì vậy, cỗ máy nhỏ bé của chúng ta có thể sử dụng lượng thời gian và không gian tùy ý, điều này làm cho nó hoàn toàn không thực tế.
... và hơn thế nữa
Một điểm cuối cùng đáng kinh ngạc, sau đó, là như vậy đơn giản, điều đơn giản có thể làm tất cả mọi thứ bất kỳ máy tính thực có thể tưởng tượng có thể bao giờ hết , trong toàn thể vũ trụ, thực hiện (chỉ cần rất chậm hơn) - ít nhất là như xa như chúng ta biết ngày nay.