Tôi đã chế tạo một máy tính cơ học chạy bằng viên bi. Những hạn chế lý thuyết của nó là gì?


8

Trong vài năm qua, tôi đã chế tạo một máy tính cơ học được cung cấp bởi các viên bi và tạo ra một trò chơi từ đó. Nó tương tự như Digi-Comp II cũ, ngoại trừ hai điểm khác biệt chính:

  1. Các bộ phận được định vị lại trên bảng.
  2. Bạn có thể kết nối nhiều 'bit' với nhau bằng các bánh răng. Khi một trong các bit này được lật, nó sẽ lật các bit khác được kết nối với nó.

Các liên kết trên mô tả cách thức hoạt động. Câu hỏi của tôi là, những hạn chế lý thuyết của nó là gì? Nền tảng tính toán lý thuyết của tôi còn yếu, vì vậy xin vui lòng ELI5.

chỉnh sửa: Tôi không quan tâm đến những hạn chế rõ ràng: tốc độ (sẽ không chiến thắng bất kỳ cuộc đua nào ở đó ...), kích thước bảng hoặc # viên bi. Tôi quan tâm nhiều hơn đến những hạn chế về lý thuyết của nó. Có lẽ nó sẽ giúp chia nó thành hai câu hỏi:

  1. Làm thế nào nó có thể được chứng minh (hoặc không được chứng minh) là Turing-Complete?
  2. Nếu có nhiều hơn 3 bit bánh răng được kết nối với nhau, ma sát trở nên quá lớn đối với một viên bi để biến tất cả chúng cùng một lúc. Điều đó tạo ra những hạn chế bổ sung?

Cảm ơn - Tôi thực sự rất vui mừng khi đọc câu trả lời của bạn! Tôi đã suy nghĩ về điều này trong một thời gian dài.


3
Bạn có muốn xem xét một mô hình lý tưởng hóa (kích thước lưới vô hạn, vô số viên bi) hoặc máy cụ thể trong tay không? Nhìn vào melagne của các thẻ bạn đã chọn, bạn có thể thu hẹp những câu hỏi bạn muốn giải quyết? Những gì có thể được tính toán? Làm thế nào nhanh chóng mọi thứ có thể được tính toán? Bạn có câu hỏi gì về kiến ​​trúc?
Raphael

1
Cách dễ nhất để thu hẹp các khả năng của mô hình của bạn là trả lời những câu hỏi này. 1) Đầu vào và đầu ra là gì? 2) Những cổng logic nào bạn có thể mô hình hóa? Tôi đang hỏi 2) vì rõ ràng là bạn không có máy tính phổ thông ở đó; mỗi cấu hình bảng là một chương trình cố định và tương ứng với các mạch. Vì vậy, nếu bạn có thể mô phỏng bất kỳ bộ cổng hoàn chỉnh nào (ví dụ: cổng NAND), bạn có một mô hình Turing-Complete (giả sử mọi thứ vô hạn). Vì bạn không có bất kỳ thành phần tĩnh nào với hai đầu vào và một đầu ra, mặc dù vậy, tôi không thấy ngay lập tức những gì đang diễn ra.
Raphael

2
Điều đó nói rằng, dự án thú vị! Xin vui lòng cho chúng tôi biết trong Trò chuyện Khoa học Máy tính khi nó ra mắt.
Raphael

3
Trong video, bạn nói: nếu bạn tạo một bảng đủ lớn, nó có thể làm những gì mà bất kỳ máy tính nào cũng có thể làm. Vâng, có và không: được cung cấp một máy tính, về mặt lý thuyết, bạn có thể xây dựng một bảng đủ lớn, nhưng được cung cấp một bảng, bạn có thể xây dựng một máy tính cần một bảng lớn hơn - và điều đó có nghĩa là các bảng của bạn chưa hoàn thành. Tính đầy đủ của Turing đòi hỏi phải hoạt động trên bộ nhớ lớn tùy ý , điều mà bảng của bạn không thể làm được. Mỗi máy Turing là giới hạn của một loạt các máy Turing băng hữu hạn, nhưng điều đó không làm cho máy Turing băng hữu hạn Turing hoàn tất.
rebierpost

2
Nếu bạn thực hiện phóng to một phần bo mạch hoạt động của máy, chúng sẽ trở thành Turing hoàn chỉnh.
rebierpost

Câu trả lời:


3

Những gì bạn có ngay bây giờ là một máy tính cụ thể. Chúng ta không thể so sánh nó với một mô hình tính toán cho đến khi nó được chính thức hóa.

Trực giác của tôi là bảng có thể được mô hình hóa như một kiến trúc dataflow . Các mô hình tính toán được hình thành theo mô hình này có thể là Turing-Complete, nhưng (như đã nói trong các bình luận) sẽ không có máy tính cụ thể nào tương đương với Turing và tôi không nghĩ bạn nên lo lắng về điều này. Tất cả các máy tính thực sự chỉ là những ẩn dụ làm việc (không hoàn hảo) của các mô hình tính toán chính thức.

Nếu bạn nảy ra ý tưởng bắt chước chặt chẽ hơn một máy dữ liệu tương đương Turing, có một vài vấn đề có thể được giải quyết để "củng cố phép ẩn dụ", có thể nói như vậy. Giới thiệu chu kỳthành phần của máy móc sẽ là hai điều quan trọng nhất, theo tôi, nhưng tôi nghĩ rằng máy của bạn đã khá tuyệt vời. Nó phục vụ mục đích của nó rất tốt, và những "cải tiến" này có thể hy sinh tính khả dụng của nó.


Cảm ơn! Và rất hữu ích! Tôi đã không biết về sự khác biệt giữa kiến ​​trúc dataflow và, giả sử, kiến ​​trúc Von Neumann trước đây. Tôi chỉ tưởng tượng rằng, nếu tấm ván lớn hơn, một kiến ​​trúc Von Neumann có thể được xây dựng. Bất kỳ cơ hội nào bạn có thể đưa ra một định nghĩa hoặc một liên kết đến những gì bạn có nghĩa là "chu kỳ" và "thành phần"?
Paul Boswell

Đối với các chu kỳ, hãy tưởng tượng rằng có một cách để gửi các viên bi trở lại, bắt đầu hoặc một số bộ nhớ trung gian ở giữa. Điều đó sẽ cho phép bạn tính toán một số loại hàm đệ quy nguyên thủy. Thành phần của máy tương tự như thành phần của các chức năng, hãy tưởng tượng rằng bạn có thể cắm đầu ra của một bảng vào đầu vào của các bảng khác.
André Souza Lemos

Một máy tính von Neumann là một chu kỳ lớn.
André Souza Lemos
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.