Turing hoàn toàn có nghĩa là gì?


34

Tôi thấy rằng hầu hết các định nghĩa về những gì cần phải hoàn thành Turing đều mang tính thời sự ở một mức độ nào đó. Ví dụ: nếu bạn Google "Turing hoàn thành nghĩa là gì", bạn sẽ nhận được:

Một máy tính hoàn thành Turing nếu nó có thể giải quyết bất kỳ vấn đề nào mà máy Turing có thể ...

Mặc dù được xác định rất rõ liệu các hệ thống khác nhau có hoàn thành Turing hay không, tôi vẫn chưa thấy một lời giải thích về ý nghĩa / hậu quả của việc Turing hoàn thành là gì.

Máy Turing có thể làm gì khi không có máy không Turing nào có thể thực hiện cùng một nhiệm vụ? Ví dụ, một máy tính có thể thực hiện các phép tính đơn giản như thế (1+5)/3=?, nhưng một máy tính thông thường cũng có thể thực hiện chúng, điều này không hoàn thành nếu tôi đúng.

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?


31
Tra cứu định nghĩa của "máy turing". Không có định nghĩa vòng tròn, vì một máy turing không được định nghĩa là "có thể mô phỏng một máy Turing khác" - đó là một máy tính lý thuyết được thiết kế đầy đủ (về cơ bản, là một máy trạng thái băng vô hạn). Bạn chỉ đang trộn "turing-Complete" và "turing machine". Theo như tôi biết, chúng ta vẫn không biết bất kỳ thuật toán nào không thể chạy trên máy Turing, nhưng đó có thể chỉ là sự thiếu hiểu biết của riêng tôi.
Luaan

2
@Luaan Luận án Giáo hội-Turing sẽ đồng ý với bạn.
Brian McCutchon

"Có cách nào để xác định khả năng của Turing Machine không". Chắc chắn rồi. Lý thuyết đi vào cần bao nhiêu không gian và thời gian để giải các thuật toán với máy Turing (L, NL, P, NP, PSPACE, v.v.), và cũng có những vấn đề không thể giải quyết (thường có thể giải quyết bằng cách giảm các vấn đề không thể giải quyết khác). Một ví dụ về một vấn đề không thể giải quyết bằng máy Turing là vấn đề tạm dừng.
Millie Smith

Khi nói đến lý thuyết CS (hoặc bất kỳ lý do nào khác), bạn nên đọc một cuốn sách về chủ đề luôn tốt hơn là đọc nó và đọc một số bài đăng trên blog về chủ đề, trong nhiều trường hợp, được viết bởi những người không hiểu đầy đủ chủ đề chính họ. Một cuốn sách hay sẽ giúp bạn tiết kiệm thời gian, cho bạn bức tranh rộng hơn và hiểu rõ hơn.
Bozidar Sikanjic

Hàm Ackermann là một ví dụ nổi bật về một cái gì đó mà máy Turing có thể tính toán nhưng một mô hình tính toán hạn chế hơn ( đệ quy nguyên thủy ) không thể.
zwol

Câu trả lời:


13

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ó 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 ... endhoặ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.


"Nói một cách không chính thức, việc hoàn thành Turing 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" Chà, điều đó phụ thuộc vào việc chấp nhận luận điểm Church-Turing, nói rằng máy Turing có thể thực hiện bất kỳ thuật toán nào bạn có thể nghĩ ra. Hoặc, thay vào đó, bạn có thể lấy máy Turing làm định nghĩa của thuật toán, trong trường hợp đó, tuyên bố không chính thức chỉ là phiên bản không chính thức của "có thể mô phỏng bất kỳ máy Turing nào" (không phải là điều xấu; chỉ là quan sát).
David Richerby

Ấn tượng của tôi là OP hỏi về một sự hiểu biết trực quan về ý nghĩa của việc hoàn thành. Do đó, loại câu trả lời flippant, phi lý thuyết-máy tính-khoa học. Cảm ơn đã chỉ ra điều này, tôi sẽ tích hợp nó vào câu trả lời. @DavidR Richby
AnoE 14/03/2017

Cảm ơn! Đó là loại câu trả lời tôi đang tìm kiếm. Tôi đã suy nghĩ về vấn đề tạm dừng và làm thế nào các ngôn ngữ với các vòng lặp giới hạn đơn giản có thể dự đoán được (chúng luôn dừng lại) - và do đó không hoàn thành Turing. Tôi đã nghĩ có lẽ Turing-
Complete

@sashoalm, rất vui vì bạn thích câu trả lời. Không, không thể đoán trước không thực sự là yếu tố của vấn đề. Bounded for-loops (như không phải là tc) cũng là một ví dụ hay. Trong thực tế, một ví dụ điển hình khác cho ngôn ngữ tc đơn giản (và thực tế hơn) sẽ là một ngôn ngữ chỉ có các biến và (không giới hạn) while- điều đó đã đủ để trở thành tc. Giới hạn (un) của cấu trúc điều khiển là một trong những yếu tố chính.
AnoE 15/03/2017

38

Nó không phải là tautological cả.

Một mô hình tính toán là Turing-Complete nếu nó có thể mô phỏng tất cả các máy Turing, tức là, nó ít nhất là mạnh như máy Turing.

Một điều mà máy Turing có thể làm là mô phỏng các máy Turing khác (thông qua máy Turing phổ dụng). Điều đó có nghĩa là, nếu mô hình tính toán của bạn không thể mô phỏng các máy Turing, thì ít nhất một điều mà máy Turing có thể làm, do đó, nó không thỏa mãn định nghĩa, vì vậy nó không hoàn thành Turing. Không có tính tuần hoàn bởi vì chúng tôi không định nghĩa tính đầy đủ của Turing về mặt bản thân: chúng tôi đã nói rằng tính đầy đủ của Turing là tài sản của việc có thể làm mọi thứ mà máy Turing có thể làm.

mộtb

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?

Tôi không chắc ý của bạn là gì khi "xác định khả năng của máy Turing". Các khả năng được xác định theo thuật ngữ tự động trạng thái hữu hạn hoạt động trên băng vô hạn. (Tôi sẽ không lặp lại định nghĩa đầy đủ nhưng bạn có thể tìm thấy nó, ví dụ, trên Wikipedia .)


19
Tôi nghĩ OP kết hợp máy Turing và Turing hoàn chỉnh. Những gì anh ấy thực sự tìm kiếm là định nghĩa của một máy Turing; câu cuối cùng của bạn là câu trả lời. vi.wikipedia.org/wiki/Turing_machine sẽ giúp.
JollyJoker

Vậy một máy Turing có thể làm gì? Như trong, nếu tôi muốn chứng minh rằng một cái gì đó có thể mô phỏng máy Turing, tôi phải chứng minh được những hành vi tối thiểu nào để chứng minh rằng máy của tôi cũng có thể làm được?
Akshat Mahajan

2
Đừng bận tâm - tôi đã làm việc rằng đủ để chứng minh rằng một ngôn ngữ có thể bắt chước cách thức hoạt động của một máy Turing để chứng minh rằng nó hoàn chỉnh.
Akshat Mahajan

17

Mô hình tính toán của Turing chỉ là một trong nhiều mô hình tính toán tương đương. Nó có sức mạnh tương tự như các hàm đệ quy của Gôdel và phép tính lambda của Church, được đề xuất cùng thời gian, cũng như các mô hình khác như máy con trỏ. Do đó bạn có thể nói rằng

Một máy tính hoàn thành Turing nếu nó có thể giải quyết bất kỳ vấn đề nào mà Excel có thể.

Điều này hoạt động vì Excel cũng hoàn thành Turing. Tôi khuyên bạn nên xem trang Wikipedia về luận án Church-Turing và tại một bài khảo sát của Blass và Gurevich, Thuật toán: Nhiệm vụ cho các định nghĩa tuyệt đối .


Liên quan đến câu hỏi của bạn, máy Turing có thể làm gì mà máy không Turing không thể, nói chung, câu trả lời không may phụ thuộc vào máy không Turing.

Tuy nhiên, có thể xác định các khái niệm không tầm thường về các vấn đề hoàn chỉnh của Turing, ví dụ:

LMộtfmộtMộtf(một)L

Theo định nghĩa này, các mã hóa phù hợp của vấn đề tạm dừng là Turing-Complete và do đó, đối với một loại máy hợp lý (tùy thuộc vào định nghĩa "tính toán hiệu quả"), máy là Turing-Complete iff có thể nhận ra một số (tương đương, tất cả ) Ngôn ngữ hoàn chỉnh.

Có nhiều vấn đề hoàn chỉnh Turing khác được nắm bắt bởi chủ nghĩa hình thức này, tùy thuộc vào định nghĩa "tính toán hiệu quả", chẳng hạn như vấn đề tương ứng Turing, và các vấn đề liên quan đến gạch Wang và Trò chơi cuộc sống. Bất kỳ vấn đề nào trong số này có thể hoạt động như một điểm chuẩn thay vì vấn đề tạm dừng.


"Thật không may câu trả lời phụ thuộc vào máy không Turing" - Tôi đã chỉnh sửa câu hỏi của mình vì nó không rõ ràng. Bạn có thể chọn bất kỳ máy không Turing nào, miễn là nó có thể thực hiện nhiệm vụ trong khi vẫn không hoàn thành Turing.
sashoalm

5
Excel is also Turing-complete.- chỉ khi bạn có thể cung cấp cho bộ nhớ vô hạn Excel. Excel được giới hạn ở 1.048.576 hàng và 16.384 cột, đây là một thỏa thuận ngắn hạn vô hạn.
MattClarke

5
@MattClarke: Đúng, nhưng với cùng một mã thông báo, không có hệ thống nào được xây dựng là Turing-Complete.
Emil

3
@Emil: chính xác, và điều quan trọng là các sinh viên CS phải phân biệt giữa khả năng của các mô hình tính toán và khả năng của các máy thực tế. Tất nhiên, những người trong chúng ta đã nhiều lần đạt đến giới hạn vật lý của các máy thực tế của chúng tôi đều thấy sự khác biệt này dễ thực hiện. Vì vậy, chúng tôi sắp xếp để biết cách chúng tôi xác định phiên bản không giới hạn của mô hình điện toán của Excel và rằng nó sẽ hoàn thành Turing. Mặc dù thực sự viết ra định nghĩa đó là loại khó khăn.
Steve Jessop

4
@SteveJessop Giới hạn vật lý của máy móc? Làm thế nào bất cứ ai có thể đánh một điều như vậy? 640k là đủ cho bất cứ ai!
David Richerby

4

Trước hết tôi muốn chỉ ra rằng định nghĩa về Turing-đầy đủ hoàn toàn không phải là tautological. Bản thân nó không chỉ chứng minh một mô hình tính toán Turing-Complete là một kết quả thú vị mà còn cho phép bạn mở rộng ngay lập tức tất cả các kết quả từ lý thuyết tính toán sang mô hình tính toán khác này; ví dụ: máy 2 bộ đếm hoàn chỉnh, máy Turing không thể giải quyết vấn đề tạm dừng, do đó, cả máy 2 bộ đếm đều không thể.

μ chức năng -recursive, tập tối thiểu các chức năng đóng theo thành phần, đệ quy nguyên thủy và nhà điều hành giảm thiểu có chứa các liên tục không chức năng, danh tính và chức năng người kế nhiệm.

Lớp như vậy kết hợp các hàm "tính toán trực quan", nghĩa là tính toán có thể được thực hiện bởi một người theo thuật toán chính xác bằng bút chì và giấy.

Rõ ràng "tính toán trực giác" không thực sự là một định nghĩa chính thức, việc xác định "tính toán trực giác" với "Turing computable" được gọi là luận án Church-Turing. Vì nhiều nỗ lực chính thức để mô tả khả năng tính toán cuối cùng hội tụ thành một mô hình tính toán hoàn chỉnh, mặc dù sẽ không bao giờ có bằng chứng chính thức về khẳng định đó theo nghĩa toán học, có nhiều lý do mạnh mẽ để tin vào điều đó.


0

Một máy Turing có thể tính toán cùng một bộ chức năng như một máy tính lượng tử vạn năng, có thể mô phỏng bất kỳ hệ thống vật lý nào:

https://www.cs.princeton.edu/cifts/archive/fall04/cos576/ con / deutsch85.pdf

Như vậy, một máy Turing có khả năng thực hiện bất kỳ xử lý thông tin nào được cho phép theo định luật vật lý, mặc dù nó sẽ không luôn xử lý như vậy một cách hiệu quả nhất có thể.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.