Có phải máy Turing giả định một cái gì đó vô hạn tại một số điểm?


9

Trong một câu hỏi trước đó chính xác thuật toán là gì? , Tôi đã hỏi liệu có một "thuật toán" trả về giá trị của hàm dựa trên một mảng các giá trị được tính toán trước có phải là một thuật toán hay không.

Một trong những câu trả lời khiến tôi chú ý là câu trả lời này:

Ví dụ giai thừa được đưa vào một mô hình tính toán khác, được gọi là tính toán không đồng nhất. Máy Turing là một ví dụ về mô hình tính toán thống nhất: Nó có một mô tả duy nhất, hữu hạn và hoạt động cho các đầu vào có kích thước lớn tùy ý. Nói cách khác, tồn tại một TM giải quyết vấn đề cho tất cả các kích cỡ đầu vào.

Bây giờ, thay vào đó, chúng ta có thể xem xét tính toán như sau: Đối với mỗi kích thước đầu vào, tồn tại một TM (hoặc một số thiết bị tính toán khác) giải quyết vấn đề. Đây là một câu hỏi rất khác nhau. Lưu ý rằng một TM đơn lẻ không thể lưu trữ giai thừa của mỗi số nguyên, vì TM có mô tả hữu hạn. Tuy nhiên, chúng ta có thể tạo một TM (hoặc một chương trình trong C) lưu trữ các giai thừa của tất cả các số dưới 1000. Sau đó, chúng ta có thể tạo một chương trình lưu trữ các giai thừa của tất cả các số từ 1000 đến 10000. V.v.

Không phải mọi TM thực sự có cách nào đó để đối phó với vô hạn? Ý tôi là, ngay cả một TM với một mô tả hữu hạn rằng máy tính là nhân tố của bất kỳ số N nào thông qua thuật toán

 int fact(int n) 
 { 
 int r = 1; 
 for(int i=2;i<=n;i++) 
 r = r*i; 
 return r; 
 } 

chứa giả định rằng một TM có "phần cứng" để so sánh các số có kích thước tùy ý thông qua bộ so sánh "<=" và cũng có THÊM để tăng i lên một số tùy ý, hơn nữa , khả năng biểu diễn các số có kích thước tùy ý.

Tui bỏ lỡ điều gì vậy? Tại sao cách tiếp cận mà tôi trình bày trong câu hỏi khác của tôi ít khả thi hơn đối với vô cùng so với phương pháp này?


5
Lưu ý phân biệt giữa "vô hạn" và "lớn tùy ý".
Raphael

Đây là một câu hỏi rất hay, nhưng nó được nêu sai. Khi bạn tham khảo Turing Machines, bạn nhận được câu trả lời dựa trên mô hình tính toán đơn giản nhất. Và điều này sẽ mang lại một chút ánh sáng cho nhiệm vụ tìm hiểu thuật toán của bạn là gì, vì hầu hết các câu trả lời sẽ dựa trên những hạn chế về sức mạnh biểu cảm của một loại máy bị hạn chế rất tùy tiện. Nhiều bản lề về một mô tả hữu hạn, mà thực sự nên là một mô tả tính toán. Một điều quan trọng là chúng có thể tính toán được. Hữu hạn là tính toán, nhưng tính toán không nhất thiết là hữu hạn.
babou

@Raphael Infinite không giống như lớn tùy ý. Nhưng nó có thể đơn giản hơn để coi các chuỗi tăng đột ngột là vô hạn, nếu một thực thể vô hạn có thể được định nghĩa một cách thích hợp là giới hạn của chuỗi này. Chúng tôi xử lý các đối tượng vô hạn có thể tranh cãi, do đó được xác định, tất cả các thời gian.
babou

Tôi nghi ngờ rằng các câu trả lời tiêu cực cho câu hỏi của bạn dựa trên giả định rằng không có gì là vô hạn bên ngoài một số lĩnh vực thanh tao của toán học trừu tượng. Nếu đó là trường hợp câu hỏi là moot. Máy Turing không thể "giả định thứ gì đó vô hạn" đơn giản vì không có thứ gì là vô hạn.
babou

Câu trả lời:


9

Máy Turing không có khả năng "so sánh số lượng kích thước tùy ý thông qua bộ <=so sánh" vì máy Turing không có "bộ <=so sánh". Một máy Turing có một  trạng thái cố định, hữu hạn và một bảng chữ cái băng cố định, hữu hạn  . Ở mỗi bước tính toán, máy Turing nhìn vào trạng thái hiện tại của nó và biểu tượng dưới đầu đọc / ghi của nó và quyết định làm gì tiếp theo: trạng thái nào để nhập, biểu tượng nào để ghi vào băng và cách nào để di chuyển băng cái đầu.ΣQΣ

Do đó, máy Turing không thể so sánh số lượng lớn tùy ý trong một <=lệnh. Sử dụng trạng thái, nó có thể nhớ nhiều nhấtsố khác nhau và, bằng cách sử dụng bảng chữ cái, nó có thể viết nhiều nhấtcác số khác nhau trong một ô băng đơn (sử dụng mỗi ký hiệu có thể để biểu thị một số). Như vậy, để so sánh các số lớn tùy ý trên máy Turing, bạn phải viết mỗi số dưới dạng một chuỗi các chữ số trên băng và viết một thuật toán sẽ thực hiện nhiều bước để so sánh hai số đó. Như bạn có thể tưởng tượng, điều này làm cho việc viết các chương trình máy Turing trở thành một nỗ lực khá khó khăn.| Σ ||Q||Σ|

Máy Turing không thực sự "đối phó với vô hạn": chúng đối phó với những thứ hữu hạn không giới hạn, ít nhất là theo định nghĩa tiêu chuẩn của chúng. Đầu vào là một chuỗi hữu hạn và sau bất kỳ số bước hữu hạn nào, máy chỉ kiểm tra hoặc ghi vào một số hữu hạn các ô băng. Không có ràng buộc về kích thước của đầu vào hoặc số bước tính toán, nhưng đầu vào là hữu hạn và sau bất kỳ số bước hữu hạn nào, chỉ có một lượng đầu ra hữu hạn được tạo ra.


7

Tôi nghĩ rằng sự khác biệt quan trọng cần thực hiện là mô tả về máy Turing là hữu hạn, cũng như đầu vào của máy, trong khi băng mà nó sử dụng làm bộ nhớ là vô hạn. TM là một máy chủ yếu là hữu hạn, sử dụng băng dính hữu hạn. Xem xét băng được cấu tạo từ các ô, trong đó mỗi ô có thể chứa một giá trị. Đầu vào của TM được ghi trên băng.

Mô tả của một TM là một tập hợp hữu hạn các bộ dữ liệu <current state, input, output, move, next state>.

Ở mỗi bước, điều cần làm được tìm thấy bằng cách khớp trạng thái hiện tại và đầu vào. Ví dụ: chúng tôi ở trạng thái 0 và chúng tôi đọc số 1, vì vậy chúng tôi tìm thấy bộ dữ liệu bắt đầu <0, 1, ...>sau đó chúng tôi viết một giá trị mới trong ô hiện tại, di chuyển sang trái hoặc phải (Tôi nghĩ định nghĩa cổ điển cũng cho phép ở cùng một ô là tốt), và sau đó thay đổi sang một trạng thái mới.

Vì vậy, ví dụ của bạn, bạn sẽ cần một mô tả lớn vô hạn về TM (số lượng <current state, input, output, move, next state>bộ dữ liệu vô hạn ) hoặc bao gồm thông tin tra cứu trong đầu vào cho TM. Tôi tin rằng đầu vào cho một TM được xác định là hữu hạn. Vì vậy, đó có lẽ không phải là điều bạn có thể làm với một máy Turing được định nghĩa kinh điển.

Ngược lại, ví dụ Fibonacci có thể được tính toán dưới dạng nhị phân với số lượng bộ dữ liệu hữu hạn để mô tả TM và có đầu vào hữu hạn.


5
Các băng không cần phải là vô hạn! Nó có thể được mở rộng khi cần thiết. Tất cả những gì được yêu cầu là băng có thể lớn tùy ý .
rebierpost

5

Tóm lại : Turing Machine có thể thực hiện (chỉ định chính xác) các tính toán vô hạn trên dữ liệu vô hạn (được chỉ định chính xác) và tạo ra kết quả vô hạn (được chỉ định chính xác). Ý tưởng cơ bản là những điểm vô hạn đó có thể được định nghĩa là giới hạn của các thực thể hữu hạn, được định nghĩa theo cách phù hợp về mặt toán học. Đây là cơ sở của ngữ nghĩa toán học của tính toán. Nếu bạn xem xét các chương trình thay vì Turing Machines, các chương trình này cũng có thể chứa (được chỉ định chính xác) cấu trúc dữ liệu vô hạn. Trường hợp của một hàm được lập bảng factnhư là một thuật toán có thể được phân tích cuối cùng, như một chương trình, hoặc như một mô hình TM, với một gợi ý về mối quan hệ với việc đánh giá lười biếng các đối tượng vô hạn.

Với nhiều chi tiết hơn

Về câu hỏi cuối cùng của bạn, một TM không tính toán các số tùy ý, mà biểu thị biểu tượng của các số này dưới dạng các chuỗi ký hiệu dài tùy ý (không giới hạn) đại diện cho chúng. Modulo đúng mã hóa, đúng là họ có thể so sánh hoặc làm mỹ phẩm với những con số như vậy thông qua các đại diện này.

Nhưng câu hỏi ban đầu là về vai trò của vô cực trong Turing Machines nói chung.

Một câu trả lời chung cho câu hỏi này là Turing Machines không bao giờ đối phó với vô hạn. Chúng được xác định một cách hữu hạn, và bất cứ điều gì chúng tính toán đều được tính toán trong thời gian hữu hạn trên một phần hữu hạn của băng (do đó một băng hữu hạn lớn hơn sẽ là đủ). Điều đúng là thời gian yêu cầu không gian của TM không bị ràng buộc, điều này không giống như vô hạn.

Do đó, bất kỳ câu trả lời nào được tính toán bằng TM cũng có thể được tính toán bằng máy tự động trạng thái hữu hạn (FSA), đó là "ở một mức độ nào đó" một cách để xem xét lập bảng. Khó khăn ở đây là một số kích thước đầu vào (gần như luôn luôn là như vậy, nếu chỉ đọc đầu vào) sẽ vượt quá kích thước của máy tự động. Nhưng sau đó, chúng ta chỉ có thể sử dụng một cái lớn hơn. Vì vậy, nếu chúng ta muốn xem xét kích thước đầu vào không giới hạn, chúng ta cần một chuỗi FSA vô hạn có thể thực hiện tính toán. Trên thực tế, chúng ta có thể cần một máy trạng thái hữu hạn phức tạp hơn một chút so với FSA truyền thống vì có thể có một đầu ra được tính toán (chứ không phải là câu trả lời có - không), nhưng có thể nên chuyển đổi trạng thái hữu hạn.

Vì vậy, nếu chúng ta đang xem xét một vấn đề có một tập hợp vô hạn, chẳng hạn như tính toán GCD, hoặc đơn giản là sử dụng arithologists trên các số nguyên có kích thước tùy ý, chúng ta sẽ thấy rằng vô hạn đang quay trở lại với chúng ta thông qua cửa sau, vì điều này là vô hạn bộ FSA.

Nhưng có một vấn đề khác. Phân tích trên chỉ hoạt động khi chúng tôi xem xét các tính toán chấm dứt với kết quả. Nhưng không phải tất cả TM làm điều đó. Một số có thể liệt kê các thành viên của một tập hợp vô hạn. Đây thường là trường hợp cho một TM tính các số thập phân của và tiếp tục thêm một số mới, vô thời hạn. Tất nhiên, nó chỉ tính toán một câu trả lời hữu hạn trong một thời gian hữu hạn, nhưng điều chúng ta quan tâm thực sự là chuỗi vô hạn được tạo ra bởi một tính toán vô hạn. Lưu ý rằng bây giờ chúng ta có hai khía cạnh của vô cùng: tính vô hạn của tính toán và vô hạn của kết quả (tức là một số dữ liệu được tính toán). Trên thực tế, điều đó thậm chí có thể dẫn đến việc xem xét đầu vào vô hạn ... nhưng chúng ta hãy bỏ qua sự phức tạp này, liên quan đến các luồng dữ liệu không bị ràng buộc. Cũng lưu ý rằng các tính toán như vậy cung cấp đầu ra khác hơn là cóπ

Sau đó, một lần nữa, chúng ta có thể thay thế nó bằng một chuỗi vô hạn các tính toán hữu hạn bằng các máy hữu hạn. Nhưng chúng ta đang gian lận.

Từ quan điểm vật lý, đó là điều tốt nhất chúng ta có thể làm. Chúng tôi chỉ biết cách chế tạo những cỗ máy hữu hạn, ít nhất là theo tình trạng hiện đại của vật lý, dự kiến ​​sẽ không thay đổi quá nhiều về vấn đề đó trong tương lai gần.

Nhưng làm thế nào chúng ta có thể xử lý những điểm yếu đó một cách nhất quán và dễ hiểu theo quan điểm toán học.

Khi bạn xem xét một bộ FSA vô hạn có thể sắp xếp hợp tác để tính toán một bộ câu trả lời vô hạn, bạn không thể thực hiện nó một cách tùy tiện. Bạn cần một số biện pháp bảo vệ để đảm bảo rằng những gì bạn đang làm có ý nghĩa. Người ta biết rằng bạn có thể xây dựng một cách tầm thường bất kỳ tập hợp nào với một tập hợp vô hạn của các tập thông thường, thực sự với một tập hợp vô hạn của các tập đơn. Vì vậy, việc xem xét các hiệp hội vô hạn tùy ý của automata mà không có bất kỳ hạn chế nào sẽ dẫn bạn đến đâu. Bạn thậm chí xem xét trong cùng một bộ automata cung cấp cho bạn câu trả lời không nhất quán.

Những gì bạn thực sự muốn là xác định một khái niệm về tính nhất quán. Nhưng điều đó đòi hỏi một số biện pháp phòng ngừa. Giả sử bạn đang sử dụng một chuỗi automata vô hạn để mô phỏng một TM trả lời có hoặc không, hoặc không dừng lại. Vấn đề là một FSA sẽ luôn dừng lại với một câu trả lời, chẳng hạn như có hoặc không. Nhưng nếu bạn sử dụng một FSA thực sự không có kích thước đủ lớn cho đầu vào được chọn, thì nó sẽ trả lời như thế nào. Cả có và không được dành riêng cho các trường hợp khi FSA thực sự chấm dứt tính toán TM và sử dụng một trong những câu trả lời này với một tính toán chưa hoàn thành sẽ chỉ dẫn đến nhầm lẫn. Điều bạn muốn là một câu trả lời có nội dung: " xin lỗi, tôi quá nhỏ và tôi không thể nói được. Hãy thử với một anh chàng lớn hơn trong gia đình ". Nói cách khác, bạn muốn có một câu trả lời như tràn , hoặc không biết. Trên thực tế, nó được gọi bởi các nhà ngữ nghĩa học " không xác định " hoặc " dưới cùng " và thường được viết " ".

Vì vậy, bạn cần automata có 3 loại trạng thái: chấp nhận, không chấp nhận và không xác định. Một trạng thái không xác định có thể được xem là trạng thái đứng cho một phần còn thiếu của máy tự động buộc tính toán phải dừng lại. Vì vậy, khi tính toán tạm dừng, tùy thuộc vào trạng thái dừng, bạn nhận được câu trả lời , không hoặc không xác định .

Bây giờ, bạn thấy rằng những gì bạn muốn là chuỗi vô hạn của automata phù hợp . Cả không phù hợp với không xác định , nhưng không phù hợp với không . Sau đó, hai automata là nhất quán khi họ đưa ra câu trả lời nhất quán trên cùng một đầu vào.

Điều này có thể được mở rộng để automata tính toán các loại câu trả lời khác. Ví dụ: nếu họ tính toán các màu, chẳng hạn như đỏ, xanh dương, xanh lục ..., bạn có thể thêm màu không xác định phù hợp với tất cả các màu khác. Nếu câu trả lời là một chuỗi các chữ số vô hạn như của , thì mỗi chữ số có thể được thay thế một cách nhất quán và độc lập bằng cách không xác định sao cho phù hợp với và với , nhưng sau này hai không phù hợp với . Trên thực tế, theo nghĩa này, không phải là xấp xỉ của3.14 . . . 3,1415 . . . . 5159 . . . 3,1416 . . . 3,1416 . . . ππ3.14...3.1415....5159...3.1416...3.1416...π. Chúng tôi nói rằng một câu trả lời được xác định tốt hơn câu trả lời khác khi nó chứa tất cả thông tin có thể tìm thấy trong câu hỏi khác, và có thể nhiều hơn nữa. Đây thực sự là một thứ tự một phần.

Tôi sẽ không phát triển thêm các khía cạnh lý thuyết này, điều này hơi khó xử khi dựa trên Turing Machines. Vấn đề là các khái niệm này dẫn đến ý tưởng rằng các miền tính toán (dù là dữ liệu hay máy móc), hình thành các cấu trúc toán học như mạng tinh thể, trong đó đối tượng vô hạn có thể được định nghĩa đầy đủ là các giới hạn của các chuỗi tăng vô hạn (nghĩa là tốt hơn và được xác định tốt hơn) vật hữu hạn. Xác định các chuỗi vô hạn đòi hỏi một số bộ máy nhiều hơn và một khái niệm về tính liên tục. Đây là những gì cơ bản về lý thuyết ngữ nghĩa của Dana Scott, và nó đưa ra một cái nhìn hơi khác về các khái niệm về khả năng tính toán.

Sau đó, máy Turing hoặc các thiết bị chính thức khác có thể thực hiện "tính toán vô hạn" có thể được định nghĩa là giới hạn của các chuỗi xấp xỉ hữu hạn của máy, được xác định tốt hơn và tốt hơn. Điều này cũng đúng với bất kỳ dữ liệu nào mà máy tính toán, cho dù là đầu vào hay đầu ra.

Tài liệu đơn giản nhất tôi từng đọc về điều này là một tập hợp các ghi chú bài giảng viết tay của Dana Scott, thường được gọi là các ghi chú bài giảng ở Amsterdam. Nhưng tôi không thể tìm thấy nó trên web. Bất kỳ con trỏ đến một bản sao (thậm chí không đầy đủ, như tôi có một phần của nó) sẽ được hoan nghênh. Nhưng bạn có thể xem các ấn phẩm ban đầu khác của Scott, chẳng hạn như Đề cương lý thuyết toán học .

Quay lại ví dụ ban đầu của câu hỏi

Những khái niệm gần đúng này áp dụng cho dữ liệu cũng như cho các chương trình. Hàm factđược định nghĩa đệ quy, có nghĩa là nó là điểm cố định ít nhất của hàm có thể được sử dụng để tính một chuỗi hội tụ gần đúng hữu hạn fact. Chuỗi các hàm hữu hạn ngày càng được xác định này hội tụ đến một thực thể vô hạn là cái mà bạn gọi là hàm fact.

Nhưng nếu bạn sử dụng tra cứu mảng, bạn có thể thực hiện chính xác như vậy, với mã của bạn chứa các bảng lớn hơn và lớn hơn, đó là tất cả các xấp xỉ hữu hạn của bảng vô hạn của các giá trị được tính toán trước fact. Mỗi mảng này thực sự có thể đưa ra câu trả lời cho bất kỳ số nguyên nào, nhưng câu trả lời có thể là ( không xác định ) khi bảng không được xác định đủ (đủ lớn). Thuật toán tra cứu bảng cũng phải được xác định bởi một chuỗi các xấp xỉ, vì nó tính toán với một bảng vô hạn.

Đúng là, nếu bạn xem xét mô hình tính toán TM cơ bản, một mảng vô hạn như vậy không thể được thể hiện trong chủ nghĩa hình thức đó. Nó không có nghĩa là nó sẽ không có ý nghĩa. Một máy Turing có thể có một băng thứ hai được cho là khởi tạo với các giá trị được lập bảng của một số chức năng như fact. Nó không thay đổi sức mạnh tính toán của TM, miễn là hàm đó là một tính toán, miễn là bảng có thể được khởi tạo với một tính toán vô hạn của một TM khác có thể tính toán tất cả các cặp giá trị đối số cho hàm liên quan.

Nhưng trong thực tế, bạn không thể hoàn thành một tính toán vô hạn. Do đó cách đúng đắn để làm điều đó là tính toán bảng một cách lười biếng, tức là chỉ điền vào các mục khi cần thiết. Đó chính xác là những gì được thực hiện với việc ghi nhớ, đó là câu trả lời tôi đã đưa ra cho bạn, với những lời biện minh khác nhau, cho câu hỏi trước đó của bạn.


3

Điểm chính của câu trả lời này là Turing Machines có thể bắt chước mọi thứ chúng ta có thể lập trình và chúng ta thực hiện các tính toán chương trình trên, với và các đối tượng vô hạn.

Đây là câu trả lời thứ hai tập trung nhiều hơn vào câu hỏi cụ thể hơn là trên khung lý thuyết chung biện minh cho câu trả lời, và chắc chắn sẽ cần thiết để trả lời tiêu đề chung hơn của câu hỏi. Nó hoàn toàn tương thích với các câu trả lời trước đây của tôi cho các câu hỏi của OP, cả hai thuật toán chính xác là gì? máy turing có giả định một cái gì đó vô hạn tại một số điểm? , câu trả lời trong đó tôi đã phát triển thêm bối cảnh lý thuyết. Điều này có thể được xem là trả lời cả hai câu hỏi.

Các máy Turing có khả năng đối phó với vô hạn , vì tất cả các mô hình tính toán hoàn chỉnh của Turing đều có thể, mặc dù chỉ với vô số. Vấn đề của chúng ta là chúng ta chỉ có thể quan sát một phần của vô cực này, nhưng chúng ta phải xem xét toàn bộ nó vì phần chúng ta có thể quan sát là không bị ràng buộc.

Vấn đề khác là chúng ta chỉ có thể tự giải quyết với các thực thể được chỉ định chính xác. Trên thực tế, toàn bộ cấu trúc của khoa học như chúng ta biết sẽ sụp đổ nếu chúng ta xem xét các thực thể không được chỉ định chính xác, vì không thể kiểm tra tính nhất quán của các định nghĩa, thậm chí biết các định nghĩa là gì, vì chúng ta chỉ có thể truy cập một phần của chúng một thời gian hữu hạn.

Có thể có một vấn đề cơ bản khác có phần giống với thực tế là việc đóng cửa dưới liên minh vô hạn xác định bất kỳ tập hợp nào bạn muốn, trừ khi bạn có thể hạn chế một cách hợp lý những gì được phép trong một liên minh như vậy. Nhưng tôi không chắc chắn tôi hoàn toàn hiểu vấn đề này.

Như tôi đã nói, máy Turing có khả năng đối phó với vô hạn . Tôi đang mâu thuẫn với những câu trả lời được đánh giá cao khác của một số người dùng đại diện cao, những người nên biết họ nói gì về một chủ đề cơ bản như vậy.

Vấn đề là Turing đã chọn một mô hình tính toán rất cơ bản để đạt được mục đích lý thuyết của mình. Càng đơn giản, càng tốt. Đó là các mô hình tính toán tiên tiến / tinh vi hơn nhiều so với ngôn ngữ máy là gì để lập trình: một cái gì đó rất mơ hồ nơi bạn không thể nhận ra bất kỳ khái niệm nào có ý nghĩa trong lập trình cấp cao. Thực tế là, giống như ngôn ngữ máy, TM có thể bắt chước nhiều hơn những gì họ có thể diễn đạt trực tiếp.

Hơn nữa, không ai thực sự tin vào những hạn chế này của Máy Turing và nhiều loại TM đã được phát minh, với các tính năng kỳ lạ ít nhiều. Nếu một số tập hợp vô hạn được gọi là đệ quy đệ quy , thì đó là vì TM thực sự có thể liệt kê (đại diện) các thành viên của họ, điều này đòi hỏi phải tính toán vô hạn (xem Turing Machines như là ĐTV trong Hopcroft-Ullman 1979, trang 167 ). Tất nhiên, chúng ta có thể luôn luôn mã hóa đó như tính hữu hạn mà sẽ trả lời những câu hỏi như: những gì là thành viên của tập theo liệt kê của bạn trong số họ? 23rdNhưng nó vẫn thường được thực hiện như một tính toán vô hạn bị dừng một cách giả tạo khi đạt được câu trả lời đúng.

Trên thực tế, tất cả người dùng tuyên bố rằng mọi thứ là hữu hạn nhưng không bị ràng buộc trong một TM đều khá cẩn thận để thêm rằng họ coi Turing Machines theo định nghĩa tiêu chuẩn của họ . Vấn đề là định nghĩa tiêu chuẩn chỉ là một thiết bị để đơn giản hóa lý thuyết, nhưng không liên quan nhiều khi cố gắng hiểu các cấu trúc tính toán.

Trên thực tế, điều duy nhất quan trọng trong tính toán là mọi thứ phải được xác định một cách hữu hạn theo cách tính toán, không phải là nó là hữu hạn .

Chúng tôi giả định rằng một máy Turing phải là một đối tượng hữu hạn. Nhưng điều đó là không đúng sự thật. Bạn có thể xác định mô hình máy Turing bằng băng thứ hai chỉ đọc và chứa hàm được lập bảng cho tất cả các giá trị số nguyên, không có bất kỳ ràng buộc nào. Đó là vô hạn. Nhưng nó không mua cho bạn bất kỳ sức mạnh tính toán nào miễn là nội dung của băng đó được chỉ định tính toán (khả năng tính toán ngụ ý rằng nó được chỉ định chính xác). Băng bổ sung cũng có thể được thay thế bằng máy TM được nhúng trong máy khác và sẽ cung cấp câu trả lời, thay vì tìm kiếm chúng trên băng phụ. Từ cấp độ cao hơn, sự khác biệt là không thể nhìn thấy.

Từ quan điểm thực tế thực tế, chúng ta có thể có một fact yếu tố điện toán máy tính bền bỉ và lập bảng cho chúng trên băng thừa, trong khi một TM khác sẽ sử dụng giai thừa được lập bảng từ băng bổ sung, chỉ chờ trên TM đầu tiên bất cứ khi nào bảng vẫn còn thiếu nhập cảnh. Nhưng máy thứ hai không cho rằng nội dung của băng cuối cùng là vô hạn. Máy lập bảng thậm chí không phải làm việc mọi lúc, nhưng phải tiếp tục tính toán bất cứ khi nào dữ liệu được yêu cầu từ bảng và không được tìm thấy ở đó.

Quay trở lại câu hỏi, sự khác biệt chính giữa các số nguyên không giới hạn và bảng vô hạn chỉ là các số nguyên là hữu hạn, không giới hạn nhưng được tính toán hoàn toàn trong thời gian hữu hạn. Bảng vô hạn được tính vô thời hạn, hữu hạn nhưng vẫn phát triển mọi lúc đến vô cùng. Đó không phải là một vấn đề, nhưng là một sự khác biệt. Các đối tượng vô hạn chỉ có thể truy cập thông qua các xấp xỉ hữu hạn, ... nhưng chúng là vô hạn. Các số vô tỷ tính toán, theo nghĩa này, là các đối tượng vô hạn, ít nhất là cho biểu diễn của chúng dưới dạng số nhị phân.

Tất cả các thuật toán được xác định trong bối cảnh của một số lý thuyết toán học. Và một bảng tra cứu cùng với một bảng vô hạn là một thuật toán. Nhưng nó là một thuật toán trong một lý thuyết toán học có một tập hợp tiên đề vô hạn được xác định chính xác, xác định rộng rãi (chứ không phải chuyên sâu) các giá trị của hàm mà nó tiên đề cho mỗi đối số nguyên. (xem câu trả lời của tôi cho câu hỏi trước của bạn ). Sau đó, nó luôn luôn hợp pháp để làm như vậy, vì bạn luôn có thể thêm các phát biểu có thể chứng minh đúng vào các tiên đề của một lý thuyết.

Phát biểu Usul, như được sao chép trong câu hỏi hiện tại của bạn, theo ý kiến ​​của tôi là không chính xác (mặc dù mọi thứ cũng là một vấn đề định nghĩa). Kết luận của anh ấy trong câu trả lời của anh ấy , rằng bạn không sao chép, là việc sử dụng bảng vô hạn có thể được coi là một thuật toán bởi vì nó chỉ có thể được thực hiện bởi một mô hình tính toán không đồng nhất, bởi một bộ máy khác nhau, và do đó sử dụng " không có mô tả hữu hạn có thể được thực hiện để giải quyết vấn đề" toàn bộ "cho bất kỳ kích thước đầu vào nào". Điều này là sai. Việc phân vùng của anh ta thành các máy phân tách có các miền định nghĩa riêng biệt chỉ là một cách làm sai. Cách đúng là có một chuỗi vô hạn các máy nhất quán với các miền định nghĩa lớn hơn và lớn hơn, có thể hội tụ một cách thích hợp với cỗ máy vô hạn trả lời câu hỏi. Đó là một mục đích thiết yếu của lý thuyết toán học về ngữ nghĩa tính toán được xác định bởi Dana Scott. Với bộ máy toán học thích hợp, nó xác định chính xác các máy vô hạn, các giá trị với các biểu diễn vô hạn (như e hoặc ), hoặc cấu trúc dữ liệu vô hạn, tất cả đều có thể tính toán được (xem câu trả lời đầu tiên của tôi cho câu hỏi này).π

Cách thức các thực thể vô hạn như vậy được tính toán trong thực tế là bằng cách đánh giá lười biếng , tính toán bất cứ phần nào cần thiết bất cứ lúc nào và tiếp tục tính toán cho một số phần còn lại bất cứ khi nào cần thiết hơn. Đó chính xác là những gì được đề xuất ở trên với factmáy tính điện tử lười biếng được lưu trữ trong một bảng, bất cứ khi nào cần thêm dữ liệu từ bảng.

Theo một cách nào đó, điều đó dường như minh chứng cho khẳng định (trong câu trả lời của DanielV ) rằng không gian mã phải là hữu hạn, vì việc đánh giá lười biếng sẽ thực sự dựa trên một số mã hữu hạn. Nhưng khả năng tính toán là một trò chơi mã hóa phổ biến, do đó, trong số những thứ khác, việc phân biệt mã với dữ liệu luôn luôn là khá nhiều trong mắt của kẻ si tình. Trên thực tế, nhiều ngôn ngữ lập trình hiện đại không làm cho nhiều khác biệt giữa intensionalextensional đặc điểm kỹ thuật của các giá trị, và Denotational Semantics không thực sự phân biệt "2 + 2" từ "4". Ngữ nghĩa thực sự là những gì chúng ta đang nói về khi đặt câu hỏi như " X là gì? ".

Quan điểm về tính hữu hạn của mã, cũng được xem là tĩnh, là một lý do khác khiến một bảng vô hạn (được coi là một phần của mã) không được nhìn thấy trên một nền tảng bằng với các số nguyên không bị ràng buộc được sử dụng làm dữ liệu. Nhưng đó là một ảo ảnh khác không tồn tại trong thực tiễn lập trình đã biết trong siêu lập trình , ngôn ngữ phản xạ và sử dụng evalhàm. Trong các ngôn ngữ đó, mã có thể được mở rộng mà không bị giới hạn bởi chính chương trình đang chạy, miễn là máy tính đang chạy. Thật vậy, người ta có thể xem xét Turing Machines sửa đổi các quy tắc chuyển đổi của riêng họ, tăng số lượng mà không bị ràng buộc. Điều đó khá gần với cách mà các máy Universal Turing đang hoạt động.

Khi thiết kế khung lý thuyết, luôn có một sự căng thẳng giữa sự đơn giản và tính thuyết phục hoặc tính biểu cảm. Tính đơn giản làm cho việc phân tích khung thường đơn giản hơn, đặc biệt là khi chứng minh các thuộc tính cụ thể hoặc giảm nó sang các khung khác. Nhưng nó thường bất tiện cho việc thể hiện các khái niệm cấp cao mà sau đó phải được mã hóa. Chúng tôi không lập trình với Turing Machines, nhưng với các ngôn ngữ cấp cao có tính biểu cảm và rõ ràng hơn nhiều, đồng thời có thể xóa một số rào cản như phân biệt mã và dữ liệu, trên cơ sở tương đương ngữ nghĩa. Máy Turing có vẻ đơn giản, nhưng có thể vượt xa định nghĩa cơ bản của chúng.


3

Câu trả lời ngắn gọn: không . Máy Turing không giả định bất cứ điều gì vô hạn tại bất kỳ điểm nào.

Đây là một lý do tại sao chúng có giá trị như một mô hình cho tính toán. Không có nghĩa gì khi mô tả tính toán như một thứ được thực hiện bởi một thiết bị vô hạn.

Tuy nhiên, hoạt động của họ có thể là vô hạn: nó có thể không chấm dứt. Đây là một lý do khác tại sao chúng có giá trị như một mô hình cho tính toán. Các thiết bị chỉ có thể thực hiện các hoạt động được đảm bảo luôn luôn chấm dứt không thể diễn tả tất cả các tính toán có thể.

Hơn thế nữa: hoạt động đòi hỏi bộ nhớ không giới hạn : trong khi số lượng bộ nhớ thực tế sử dụng luôn luôn là hữu hạn, nó có thể phát triển lớn tùy ý. Vì vậy, bạn không thể cung cấp tất cả bộ nhớ mà bất kỳ thao tác nào cũng cần trước. Các thiết bị chỉ có thể thực hiện các hoạt động được đảm bảo không bao giờ sử dụng nhiều hơn một lượng bộ nhớ cố định nhất định không thể biểu thị tất cả các tính toán có thể.


-1

"nghĩ ra khỏi hộp" và khái quát hóa câu hỏi này có liên quan đến sự trừu tượng của máy Turing và đưa ra một góc độ khác chưa được trả lời: vâng, máy Turing có một số khía cạnh nội tại của "giả định vô hạn" như khái niệm là nội tại của toán học. TM là một sự trừu tượng của máy móc vật lý. các khái niệm vật lý về Thời gian và Không gian được sử dụng có chủ đích trong lý thuyết TM nhưng là trừu tượng, tuy nhiên cũng với các khía cạnh của các đối tác thực sự của chúng.

Nói tóm lại, TM có thể chạy mãi mãi trong lý thuyết , hay còn gọi là vấn đề tạm dừng . băng là vô hạn nhưng chỉ có thể ghi một lượng hữu hạn vào một thời điểm nhất định. một TM chạy mãi về cơ bản giả định rằng thời gian và không gian là không giới hạn, tức là "vô hạn". trong thực tế, có một hệ thống phân cấp Thời gianKhông gian / "liên tục" tương ứng là vô hạn.

nhưng không thể nhận ra vật lý của khái niệm trừu tượng này khi cho rằng vũ trụ vật lý bị giới hạn (không gian, thời gian, vật chất, phần cuối cùng tương tự như "biểu tượng" hoặc "mực" trong máy Turing). hơi giống / tương tự, trong vật lý đôi khi vũ trụ được coi là không giới hạn / vô hạn, nhưng chỉ như một sự trừu tượng. để lật lại điều này, đó cũng là lý do tại sao "mô hình hóa" của một máy tính hiện đại như một máy Turing tự nó là một sự trừu tượng, bởi vì máy tính chỉ có thể có bộ nhớ hữu hạn, v.v.

một so sánh hữu ích khác là dòng số trong toán học. dòng số là vô hạn, nhưng nó biểu thị số hữu hạn. mỗi số trên dòng số đại diện cho một số lượng hữu hạn, nhưng có một số lượng vô hạn của các số lượng hữu hạn này. băng máy Turing có sự tương đồng mạnh mẽ với khái niệm dòng số từ toán học. Turing có thể dễ dàng định nghĩa nó là vô hạn theo một hướng, nhưng ông định nghĩa nó là vô hạn theo cả hai hướng, giống như dòng số toán học, với các vị trí âm "trái" trên băng và vị trí dương "phải".

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.