-Tính toán cơ bản là gì?


11

Tôi có những gì tôi sẽ gọi một câu hỏi triết học về tính toán.

Khi bạn khám phá-tính toán, bạn sẽ ngạc nhiên khi thấy tất cả những điều bạn có thể làm ở đó. Bạn có thể định nghĩa các số nguyên, các phép toán số học, booleans, câu lệnh if-then-other, vòng lặp, hàm đệ quy, v.v ... Tôi tin rằng nó đã được chứng minh tính toán hoàn chỉnh.

Nhưng mặt khác, nếu bạn xem xét những gì bạn có thể làm với các hàm trong-compus, bạn nhận ra rằng điều duy nhất bạn có thể làm là cung cấp cho nó một hàm và nó trả về một hàm khác. Và quá trình đó không bao giờ kết thúc.

Vì vậy, làm thế nào bạn có thể trích xuất một kết quả từ một tính toán?

Giả sử kết quả của một biểu thức là hàm f. Bạn muốn kiểm tra xem đó flà những gì bạn mong đợi. Bạn có thể kiểm tra nó, lấy một chức năng mà bạn biết, áp dụng fcho nó và nhận g. Nhưng để kiểm tra glà chính xác, bây giờ bạn cần xác minh những gì g. Và bạn bắt đầu lại tất cả. Vì vậy, làm thế nào bạn có thể nói bất cứ điều gì về f?

Dường như với tôi rằng bạn có thể thay thế tất cả các hàm trong-compus bằng một hàm duy nhất, hàm nhận dạng I = λx.xvà mọi thứ vẫn hoạt động như được mô tả trong-compus. Chữ số của Giáo hội 3khi được cho fxtrả lại f(f(f(x))). Nhưng kể từ khi fxchỉ có thể I, nó trở lại I. Iáp dụng cho IIcũng trả lại I. Vì vậy, Ithỏa mãn định nghĩa của 3. Các booleans của người Viking (λxy.x)(λxy.y)cần 2 đối số, sẽ là như vậy IIcả hai booleans sẽ quay trở lại I. Mỗi cái tương đương với danh tính, mặc dù chúng hành xử chính xác theo định nghĩa của chúng.

Vậy làm thế nào để bạn tạo ra sự khác biệt? Làm thế nào để bạn chỉ ra rằng-compus xử lý nhiều hơn chỉ là một hàm duy nhất?

Có một khái niệm về bản sắc? Bạn có thể xác định một chức năng ngay lập tức mà không đánh giá nó? Tôi tin rằng nó đã được chứng minh rằng không có cách nào để kiểm tra 2 chức năng cho sự bình đẳng.

Hoặc là calcul-tính toán không phải về các chức năng, mà là về mô tả chính thức về những gì họ làm? Điều đó có nghĩa là λ biểu thức không chỉ xác định những gì các hàm làm mà còn là dữ liệu mà các hàm thao tác. Vì vậy, khi bạn viết A B, bạn không áp dụng Ađể B, nhưng bạn áp dụng các chức năng được mô tả bởi chuỗi Ađể định nghĩa chính thức của một hàm chứa trong Btrở lại một định nghĩa chính thức.

Điều gì thực sự đang diễn ra trong-compus? Các đối tượng toán học mà nó đối phó là gì?


Theo sát:

OK, từ câu trả lời bên dưới, có vẻ như calcul-compus không phải là quá nhiều về các hàm theo nghĩa toán học, mà là về tập hợp con của các hàm có thể được biểu thị dưới dạng biểu thức.. Hoặc thậm chí nhiều hơn về các thao tác của λ biểu thức.


2
Bạn có thể viết lại câu hỏi cuối cùng cho một cái gì đó ít ý kiến ​​hơn định hướng? Cần có một câu trả lời không có ý kiến ​​vững chắc cho việc này.
Telastyn

Từ giáo dục của tôi, calcul-tính toán tồn tại chỉ để làm cho bộ não của tôi bị tổn thương. Tôi vẫn không chắc làm thế nào tôi làm cho nó thông qua lớp đó nguyên vẹn.

Câu trả lời:


9

Thực sự không thể xác định sự tương đương về ngữ nghĩa của các thuật ngữ tính toán lambda. Đây là một ứng dụng của định lý Rice. Tuy nhiên, thật dễ dàng để so sánh các thuật ngữ về mặt cú pháp , nghĩa là kiểm tra xem chúng có cùng cấu trúc không (tương đương, nếu "biểu diễn chuỗi" của chúng giống nhau). Đó thực sự là tất cả những gì bạn cần để có kết quả.

Ví dụ, để tính toán các hàm n = f(i)từ tự nhiên đến tự nhiên, bạn cung cấp mã hóa nhà thờ idưới dạng tham số cho hàm tính toán lambda của bạn, áp dụng quy tắc giảm cho đến khi bạn dừng lại và kiểm tra thuật ngữ kết quả. Nếu nó khớp với cấu trúc của các chữ số nhà thờ, hãy trích xuất số nmà nó mã hóa. Đó là kết quả của bạn. Nếu thuật ngữ kết quả không giống như số nhà thờ hoặc giảm không dừng lại, chức năng không được xác định tại i.

Các điều khoản có hiệu quả kéo nhiệm vụ kép là "mã" và "dữ liệu". Điều đó không có gì đặc biệt: Băng của máy Turing (một chuỗi trên một số bảng chữ cái) có thể --- và thường là --- được hiểu là mã hóa của máy Turing hoặc một số khía cạnh của nó. Tương tự, các bit trong bộ nhớ chính của máy von Neumann có thể là mã hóa của chương trình hoặc mã hóa của thứ khác. Hoặc thậm chí cả hai cùng một lúc. Đó chỉ là "phối cảnh mặc định" khác nhau.


Biểu thức kết quả của một phép tính liên quan đến các số của Giáo hội sẽ luôn chuyển sang dạng chính tắc như (fx.f (f (fx)))? Hoặc bạn có thể nhận được các biểu thức tương đương khác nhau của cùng một chữ số?
Florian F

@FlorianF Tôi gần như chắc chắn rằng có những điều khoản không chính tắc (tương đương alpha) như vậy, nhưng nếu vậy, chúng có thể tránh được bằng cách xây dựng chương trình cẩn thận.
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.