เมื่ออลันทัวริงค้นพบคอมพิวเตอร์มีหลายรุ่นสำหรับคอมพิวเตอร์ที่เสนอ ทัวริงพิสูจน์ว่า (3) โมเดลเหล่านี้สามารถจำลองซึ่งกันและกันและคำนวณฟังก์ชัน Ackermann ในขณะที่โมเดลอื่น ๆ สามารถจำลองซึ่งกันและกัน แต่ไม่ใช่ฟังก์ชัน Ackermann (ดังนั้นจึงไม่สามารถจำลอง 3) ดังนั้นทั้งสามรุ่น (Turing Machine, von Neumann และอีกอันที่ฉันไม่รู้) จึงถูกเลือกให้เป็นสถาปัตยกรรมสำหรับคอมพิวเตอร์ นี่ไม่ได้หมายความว่าฟังก์ชั่น Ackermann นั้นมีขีด จำกัด ของคอมพิวเตอร์ แต่ฉันคิดว่ามันเป็นวิทยาศาสตร์ที่ยาก ฉันไม่ทราบถึงฟังก์ชันที่คำนวณใด ๆ ที่เติบโตเร็วกว่าฟังก์ชัน Ackermann
ตอนนี้ฉันไม่คิดว่ามีปัญหาจริงที่ตรงกับคำถามของคุณ แต่บางทีเราสามารถสร้างได้ เราจำเป็นต้องใส่ข้อ จำกัด ในการป้อนข้อมูลแม้ว่า เนื่องจากเราไม่สามารถใช้ O (n) ได้เราจึงไม่สามารถตรวจสอบอินพุตทั้งหมดได้ ในความเป็นจริงเราไม่สามารถตรวจสอบความยาวของอินพุตได้เช่นเดียวกับ O (log n) ดังนั้นเราต้องเป็นพารามิเตอร์แรกที่แสดงถึงความยาวของส่วนที่เหลือของอินพุทเช่น c เช่นนั้น Ackermann (c) คือความยาวของอินพุท เนื่องจากสิ่งนี้ยังไม่เหมาะสมเราจึงต้องการค่าแรกในอินพุตพารามิเตอร์ c ของเราเช่น bb (c) นั้นเกี่ยวกับความยาวของอินพุตซึ่ง bb คือฟังก์ชันบีเวอร์ที่ยุ่ง ฟังก์ชั่นนี้ไม่สามารถคำนวณได้ แต่มี bb (c) อยู่แน่นอน จากนั้นอัลกอริทึมจะเป็นดังนี้:
for (int i=0; i<c; i++) {
if (input[i] == null) {
return false;
}
}
return true;
วัตถุประสงค์ของอัลกอริทึมคือการตรวจสอบว่าถ้า c เป็นค่าผกผันของ bb หากความยาวอินพุตนั้นมากกว่า bb (c)
หากมีฟังก์ชันที่คำนวณได้ที่เติบโตเร็วกว่าฟังก์ชัน Ackermann ฉันคิดว่าเราสามารถใช้ฟังก์ชันผกผันเพื่อสร้างอัลกอริทึมที่ตอบคำถามของคุณในอินพุตใดก็ได้