Tầm quan trọng thực tế của máy Turing?


27

Tôi là một kỹ sư điện, và chỉ có một khóa học CS ở trường đại học 26 năm trước. Tuy nhiên, tôi cũng là một người dùng Mathicala tận tụy.

Tôi có cảm giác rằng Turing Machines rất quan trọng trong khoa học máy tính. Là tầm quan trọng chỉ trong lý thuyết của khoa học máy tính? Nếu có ý nghĩa thực tế / ứng dụng, một số trong số họ là gì?

Câu trả lời:


21

Tầm quan trọng của máy Turing là gấp đôi. Đầu tiên, máy Turing là một trong những mô hình lý thuyết đầu tiên (nếu không phải đầu tiên) cho máy tính, có từ năm 1936. Thứ hai, rất nhiều khoa học máy tính lý thuyết đã được phát triển với máy Turing, và vì vậy rất nhiều kết quả cơ bản là trong ngôn ngữ của máy Turing. Một lý do cho điều này là các máy Turing rất đơn giản và rất dễ phân tích.

Điều đó nói rằng, máy Turing không phải là một mô hình thực tế cho máy tính. Là một kỹ sư và người dùng Mathicala, họ không nên quan tâm đến bạn. Ngay cả trong cộng đồng khoa học máy tính lý thuyết, các máy RAM thực tế hơn được sử dụng trong các lĩnh vực thuật toán và cấu trúc dữ liệu.

Trên thực tế, từ quan điểm của lý thuyết phức tạp, máy Turing tương đương đa thức với nhiều mô hình máy khác, và do đó, các lớp phức tạp như P và NP có thể được định nghĩa tương đương theo các mô hình này. (Các lớp phức tạp khác tinh tế hơn.)


11

Máy Turing là một trong những mô hình đầu tiên cho tính toán, đó là chúng được phát triển khi bản thân tính toán không được hiểu rõ lắm (khoảng năm 1940). Tôi muốn tập trung vào hai khía cạnh (được cho là) ​​dẫn đến việc họ trở thành mô hình được ưa thích hồi đó, dẫn đến việc trở thành mô hình chuẩn nhất và cuối cùng là tiêu chuẩn.

  1. Tính đơn giản của bằng chứng
    Là một mô hình lý thuyết, máy Turing có sức hấp dẫn là "đơn giản" theo nghĩa là trạng thái máy hiện tại chỉ có kích thước không đổi. Tất cả thông tin bạn cần để xác định trạng thái máy tiếp theo là một ký hiệu và một số trạng thái (điều khiển). Sự thay đổi trạng thái máy cũng nhỏ không kém, chỉ thêm chuyển động của đầu máy. Điều đó đơn giản hóa bằng chứng (chính thức) đáng kể, đặc biệt là số lượng các trường hợp được phân biệt.

    So sánh khía cạnh này với mô hình RAM (khi không được sử dụng ở dạng tối giản): hoạt động tiếp theo có thể là bất kỳ hoạt động nào, có thể truy cập vào bất kỳ (hai) thanh ghi nào. Ngoài ra còn có nhiều cấu trúc điều khiển.


  2. λμ

    Tuy nhiên, đối với máy Turing, cả hai khái niệm đều được xác định dễ dàng (và nằm trong bài viết đầu tiên của Turing trên mô hình của mình, nếu tôi nhớ chính xác). Vì các cân nhắc về hiệu quả đã sớm rất quan trọng đối với việc thực sự làm công cụ, đây là một lợi thế nhất định của máy Turing.

Như vậy, máy Turing đã được thành lập như là các mô hình tính toán, có thể được xem như là một sự kết hợp của lịch sử "tai nạn" và một số tính chất quan trọng của nó. Tuy nhiên, nhiều mô hình đã được xác định từ và được sử dụng một cách say sưa, đặc biệt là để khắc phục những thiếu sót của máy Turing; ví dụ, chúng tẻ nhạt đối với "chương trình" (nghĩa là xác định).

Tôi không nhận thức được bất kỳ ứng dụng trực tiếp trong thực tế. Cụ thể, thực tiễn tính toán phát triển song song với (và, lúc đầu, chủ yếu là độc lập với) lý thuyết tính toán. Ngôn ngữ lập trình được phát triển mà không có mô hình máy chính thức. Tuy nhiên, rõ ràng (nhìn nhận lại) rằng nhiều tiến bộ trong thực hành tính toán đã được kích hoạt bởi lý thuyết.

Hơn nữa, hãy nhớ rằng giá trị mà một khái niệm lý thuyết đã có cho thực tiễn nên được đo lường bằng cách xem xét tất cả các hậu duệ, đó là công việc tiếp theo, kết quả và ý tưởng mới được thực hiện bởi khái niệm đó. Và về vấn đề đó, tôi nghĩ thật công bằng khi nói rằng khái niệm máy Turing (trong số những người khác) đã cách mạng hóa thế giới.


4

Ứng dụng hợp lý thực tế duy nhất tôi có thể nghĩ đến (theo nghĩa là bạn thực sự có thể thực hiện một máy Turing) là để chứng minh rằng một ngôn ngữ thuộc loại nào đó có đủ sức mạnh.

Nếu bạn đang thiết kế một loại ngôn ngữ lập trình nào đó (hoặc bất cứ thứ gì khác có nghĩa là để tính toán mọi thứ), thì bạn có thể muốn đảm bảo rằng nó là Turing-Complete (nghĩa là có khả năng tính toán bất cứ thứ gì có thể tính toán được) bằng cách triển khai máy Turing trong đó.

Tất nhiên, bạn cũng có thể thực hiện bất kỳ điều gì khác là Turing-Complete (như C hoặc logic kết hợp), nhưng đôi khi, máy Turing là tùy chọn dễ nhất.


-1

Máy Turing là một mô hình toán học tính toán. Lợi ích của nó là: -

1. Kiểm tra tính quyết định Nếu TM không thể giải quyết vấn đề trong thời gian có thể đếm được thì không thể có bất kỳ thuật toán nào có thể giải quyết vấn đề đó (Đó là vấn đề không thể giải quyết được).

Đối với một vấn đề quyết định nếu TM của nó dừng trong thời gian đếm được cho tất cả các đầu vào có độ dài hữu hạn thì chúng ta có thể nói rằng vấn đề có thể được giải quyết bằng thuật toán trong thời gian đếm được.

2. Phân loại vấn đề TM giúp phân loại các vấn đề có thể quyết định thành các lớp của Phân cấp đa thức.

Giả sử chúng tôi thấy rằng vấn đề là có thể quyết định. Sau đó, mục tiêu trở thành cách hiệu quả chúng ta có thể giải quyết nó. Hiệu quả được tính theo số bước, không gian thêm được sử dụng, độ dài của mã / kích thước của FSM.

3. Thiết kế và triển khai thuật toán cho các máy thực hành TM giúp truyền bá ý tưởng về thuật toán trong các máy thực tế khác. Sau khi kiểm tra thành công 1,2 tiêu chí, chúng tôi có thể sử dụng các thiết bị / máy tính thực tế của mình để thiết kế và thực hiện thuật toán.


3
Máy Turing không cho phép bạn "kiểm tra tính quyết định"; họ chỉ đưa ra một định nghĩa về tính quyết định là gì. Phân loại các vấn đề là hoàn toàn có thể sử dụng các mô hình tính toán khác, chẳng hạn như các máy truy cập ngẫu nhiên. Các thuật toán hoạt động trên máy Turing hiếm khi phù hợp với các kiểu máy khác, vì thuật toán máy Turing liên quan đến một lượng lớn xáo trộn băng không xảy ra ở nơi khác.
David Richerby

TM đưa ra định nghĩa về tính quyết định. Đúng. Để kiểm tra tính quyết định, chúng tôi không có sự giúp đỡ của TM? "Phân loại các vấn đề là hoàn toàn có thể sử dụng các mô hình tính toán khác." Phải nhưng chúng ta cũng có thể làm điều đó bằng cách sử dụng TM. Trong khi thực hiện thuật toán, bạn phải chắc chắn về độ cứng của vấn đề đó.
Subhankar Ghosal

-3

Máy Turing là bài tập tâm trí tốt với ít sử dụng thực tế. Không có hại trong việc không có một. Tất cả các ứng dụng của máy Turing đều trực quan hoặc là vấn đề tôn giáo vì chúng không thể được chứng minh hoặc bác bỏ.


2
"Tất cả các ứng dụng của máy Turing đều là trực quan hoặc là vấn đề của tôn giáo [...]" Và, do đó, toàn bộ các lĩnh vực của lý thuyết tính toán và lý thuyết phức tạp đã bị loại bỏ trong mười bốn từ.
David Richerby

Những điều này không nhằm mục đích bác bỏ những lý thuyết đó. Tất cả những gì tôi đã nói là các ứng dụng của máy Turing đều rõ ràng, có thể hiểu được bằng trực giác hoặc đòi hỏi niềm tin mà không cần chứng minh.
Valery Gavrilov

"một vấn đề của tôn giáo bởi vì chúng không thể được chứng minh hoặc bác bỏ." Ừm, cái gì? Cách giải thích hào phóng nhất về điều này tôi có thể nấu là bạn đang đề cập đến luận điểm Church-Turing, nhưng mọi ứng dụng cụ thể của điều này thực sự có thể được chứng minh (chỉ cần trải qua công việc tẻ nhạt là thiết kế máy Turing phù hợp; hoặc, chỉ viết một thuật toán thích hợp bằng ngôn ngữ lập trình yêu thích của bạn và sử dụng tính tương đương thông thường) và CT không phải là một ứng dụng, chỉ là một cách đơn giản hóa việc đưa ra các bằng chứng (và nếu người ta nghi ngờ một ứng dụng của nó, người ta luôn có thể đưa ra một cách chính thức bằng chứng).

Ngoài ra tôi không hiểu làm thế nào "có thể được hiểu theo trực giác" là một nhược điểm. Tất cả toán học có thể được hiểu theo trực giác; điều đó có nghĩa là toán học chỉ là một bài tập tâm trí với ít sử dụng thực tế?
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.