Vấn đề tính toán giảng dạy


22

Tôi gặp khó khăn trong việc giảng dạy các khái niệm về chức năng tính toán. Tôi đã cố gắng phát triển ý tưởng tại sao các nhà nghiên cứu như Hilbert / Ackermann / Godel / Turing / Church / ... đã phát minh ra khái niệm 'khả năng tính toán'. Các sinh viên ngay lập tức hỏi: "tính toán có nghĩa là gì?" và tôi không thể trả lời trừ khi tôi dạy họ máy Turing và sau đó trả lời "một chức năng có thể tính toán được nếu máy Turing tính toán nó."

Vì thế,

Có một mô tả về khả năng tính toán mà không cần dùng đến máy Turing, tính toán hoặc các mô hình tính toán tương tự không? Ngay cả một mô tả trực quan sẽ đủ.


10
"Mọi chức năng một máy tính có thể tính toán"? Thông thường, tôi dùng đến các ngôn ngữ lập trình, vì các sinh viên có khả năng biết một ngôn ngữ. Tôi đã từng tìm kiếm "bất kỳ công thức nào để tính toán một hàm" như là một định nghĩa trực quan của thuật toán.
Michaël Cadilhac

5
Một vấn đề có thể tính toán được nếu nó có thể được giải quyết bằng một bộ quy tắc hữu hạn chi phối sự phát triển của hệ động lực rời rạc theo số bước hữu hạn.
Mohammad Al-Turkistany

1
Ngoài ra, bạn có thể sử dụng bài toán thứ mười của Hilbert để giải thích cho học sinh lý do tại sao nó không thể giải được và bằng chứng về khả năng không thể giải quyết được, trong số những điều khác, chính thức hóa khái niệm tính toán trong toán học.
Mohammad Al-Turkistany

Một câu hỏi khác: Luận án Church-Turing nói rằng một hàm có thể được tính toán bởi một số máy Turing khi và chỉ khi nó có thể được tính bằng một số máy tính của bất kỳ mô hình tính toán hợp lý và chung chung nào khác [Goldreich, 2008]. Vì vậy, một khái niệm độc lập mô hình về khả năng tính toán có thể hiểu được?
MS Dousti

Câu trả lời:


36

75 năm trước không có máy tính xung quanh. Vì vậy, người ta phải giải thích rất kỹ ý tưởng toán học của máy tính.

Ngày nay mọi người đều biết máy tính là gì và có thể mang theo bên mình hầu hết thời gian. Điều này có thể được sử dụng rất thành công trong giảng dạy vì bạn có thể bỏ qua ý tưởng khá lỗi thời về một chiếc máy có băng. Ý tôi là, ai dùng băng? (Tôi biết, tôi biết, bạn cảm thấy bị xúc phạm và Turing là một người đàn ông tuyệt vời và tất cả những điều đó, và tôi đồng ý với bạn).

Bạn chỉ cần bước vào lớp và hỏi: vậy iPhone của bạn có thể tính toán được gì không? Điều này ngay lập tức đưa bạn vào câu hỏi về các nguồn lực bị ràng buộc. Sau đó, bạn nói: giả sử máy của bạn thực sự có bộ nhớ không giới hạn, có điều gì nó không thể tính toán được không? Và bạn lý tưởng hóa hơn một chút và hạn chế sự chú ý đến các chức năng lý thuyết số (vì hiện tại bạn không quan tâm đến Facebook). Bạn sẽ phải giải thích một chút về cách máy tính hoạt động (như đã nói trong các bình luận, thật tốt nếu sinh viên biết ngôn ngữ lập trình vì bạn có thể sử dụng ngôn ngữ đó thay vì mô tả phần cứng), nhưng sau đó bạn có thể sử dụng tất cả các đối số cổ điển về khả năng tính toán lý thuyết để rút ra kết quả. Không có vấn đề gì khi bức tranh tinh thần của học sinh về máy của bạn là iPhone. Trong thực tế, nó quan trọng:phù hợp hơn với họ để biết rằng iPhone của họ không thể làm một số điều nhất định.


2
Tôi khá thích lập luận này, bởi vì nó đi từ cụ thể (iPhone) đến trừu tượng.
Suresh Venkat

2
Đây là một câu đố thú vị: các định lý smn và utm trong Haskell là gì?
Andrej Bauer

18
"75 năm trước không có máy tính xung quanh." Điều này chỉ đơn giản là sai. 75 năm trước có rất nhiều máy tính xung quanh. Họ là con người, chủ yếu là phụ nữ; họ có trình độ toán học nâng cao, một vài công cụ tính toán cơ học thô sơ (như thêm máy móc và quy tắc trượt), và rất nhiều giấy. Những máy tính này là xương sống của cả Dự án Manhattan và Công viên Bletchley trong Thế chiến II (Bom và Bombe mặc dù). Đây là môi trường điện toán mà Turing đã mô hình hóa: con người bằng bút chì và giấy.
Jeffε

10
@Jeffe: Thôi nào, bạn hiểu ý tôi mà.
Andrej Bauer

8
@JeffE: chúng tôi có thể kiểm tra giả thuyết của bạn. Đến gặp đồng nghiệp của bạn và yêu cầu họ vẽ một bức tranh "máy tính mặc váy ngắn". Hãy báo cáo có bao nhiêu người đã vẽ một con người.
Andrej Bauer

12

"Một chức năng có thể tính toán được nếu có 'quy trình hiệu quả' để đi từ đầu vào đến đầu ra." Khi giới thiệu chủ đề này, trước đây tôi đã chỉ ra làm thế nào họ (các sinh viên) có một quy trình hiệu quả để giải phương trình bậc hai, nhưng không có cách nào để giải phương trình bậc 5 trở lên. Điều này có thể phân biệt thành một cuộc thảo luận về cách người ta có thể chính thức hóa 'thủ tục hiệu quả', nhưng cuộc thảo luận đó là điều bạn muốn xảy ra, vì vậy tôi nghĩ đó là một tính năng, thay vì một lỗi.


3
Nitpicking: Định lý Ruffini của Abel nói rằng không có giải pháp đại số chung nào đó là giải pháp trong các gốc đối với các phương trình đa thức bậc năm trở lên. Tuy nhiên, có các phương pháp, chẳng hạn như gốc triệt để , để có được các giải pháp dạng đóng của phương trình tinh túy.
MS Dousti

Nitpicking của bạn là thực sự đúng. Khi thảo luận về khả năng tính toán, bạn muốn nói về những thứ như "hoạt động được phép" và giải pháp cho đa thức là một trong những điều phức tạp hơn khi bạn nhìn vào nó. Nhưng đối với một giới thiệu, tôi nghĩ rằng các từ "thủ tục hiệu quả" và một đề cập đến công thức bậc hai tạo ra một điểm khởi đầu tuyệt vời. Chúng không hoàn toàn chính xác, nhưng trực giác khá đúng, IMO.
Peter Boothe

8

Có lẽ vấn đề là tất cả các mô hình này nhằm mục đích nắm bắt khái niệm tính toán là gì. Thực tế là tất cả chúng đều tương đương, có nghĩa là khái niệm mà chúng đang cố gắng nắm bắt là mạnh mẽ. Vì vậy, mặc dù điều này không thoát khỏi tình trạng khó xử của bạn, sự mạnh mẽ này mang lại sự tin cậy cho khái niệm rằng "một chức năng có thể tính toán được nếu có một máy Turing tính toán nó".


6

Tôi bắt đầu hỏi "có câu hỏi nào mà không máy tính nào có thể trả lời một cách thuyết phục không?" và dẫn dắt cuộc thảo luận về các câu hỏi triết học như "nếu một cái cây rơi trong rừng thì nó có phát ra âm thanh không?" hoặc "có kiếp sau không?" Chúng tôi nhanh chóng nhận được sự đồng thuận rằng ngôn ngữ của con người có thể diễn đạt có / không có câu hỏi liên quan đến nghịch lý hoặc khái niệm không thể diễn đạt bằng toán học, và vì vậy, vâng, có những câu hỏi không thể tính toán được.

Sau đó, tôi hỏi một cách khoa trương rằng liệu có những câu hỏi không tính toán được về các khái niệm có thể được trình bày trong máy tính, ví dụ như số nguyên và đồ thị. Tôi nói rằng có, một ví dụ là vấn đề tạm dừng nổi tiếng, đó là về việc kiểm tra một mô tả của một chương trình và nói liệu nó có bất kỳ vòng lặp vô hạn nào không. Theo trực giác, hóa ra các vòng lặp vô hạn giống như các lỗ đen và bất kỳ chương trình nào quan sát một vòng lặp vô hạn đều có thể bị mắc kẹt trong chính vòng lặp vô hạn. Vì vậy, bất kỳ quy trình nào trả lời vấn đề đó có thể chạy mãi mãi, do đó theo định nghĩa của "thuật toán", không có thuật toán nào có thể trả lời được vấn đề tạm dừng.

Sau đó, tôi quay lại bằng chứng về máy Turing.


0

Chà, một hàm có thể tính toán được nếu nó chấp nhận các đầu vào được hình thành hoặc tạo bởi một mẫu cụ thể. Một mẫu cụ thể có nghĩa là tất cả các đầu vào nên có một mối quan hệ, một đầu vào cụ thể có thể được tạo bởi đầu vào trước đó hoặc đầu vào tiếp theo. Nếu các đầu vào không có loại trình tự này, thì không có khả năng để phát triển một mô hình hoặc chức năng có thể chấp nhận. Một điều nữa tôi muốn nói là có một sự khác biệt cơ bản giữa một cỗ máy và con người. Một cỗ máy không thể được hình thành cho các đầu vào không tuần tự nhưng con người thì có. Ngoài ra đây là sự gián đoạn lớn của việc chế tạo robot hành xử thực tế của con người.


Câu hỏi là về khả năng tính toán giảng dạy. Sẽ tốt hơn nếu bạn giới hạn câu trả lời của mình cho tài liệu trả lời câu hỏi đó. Hãy nhớ rằng OP đang giảng dạy cho sinh viên đại học, vì vậy ý ​​kiến ​​cá nhân (chẳng hạn như ba tuyên bố cuối cùng của bạn) có thể không nằm trong phạm vi.
Vijay D
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.