ฉันได้เรียนรู้ในวันนี้ว่าการวิเคราะห์อัลกอริทึมนั้นแตกต่างกันตามโมเดลการคำนวณ มันเป็นสิ่งที่ฉันไม่เคยคิดหรือเคยได้ยิน
ตัวอย่างที่ให้ฉันซึ่งแสดงให้เห็นเพิ่มเติมโดย User @chiคือ:
เช่นพิจารณางาน: รับ ผลตอบแทน x_iใน RAM สิ่งนี้สามารถแก้ไขได้ใน เนื่องจากการเข้าถึงอาร์เรย์เป็นเวลาคงที่ การใช้ TM นั้นเราจำเป็นต้องสแกนอินพุตทั้งหมดดังนั้นx i O ( 1 ) O ( n )
ทำให้ฉันสงสัยเกี่ยวกับภาษาที่ใช้งานได้ จากความเข้าใจของฉัน "ภาษาหน้าที่มีความสัมพันธ์อย่างใกล้ชิดกับแคลคูลัสแลมบ์ดา" (จากความคิดเห็นของ Yuval Filmus ที่นี่ ) ดังนั้นหากภาษาที่ใช้งานอยู่บนพื้นฐานของแคลคูลัสแลมบ์ดา แต่พวกมันทำงานบนเครื่องที่ใช้ RAM เป็นวิธีที่เหมาะสมในการวิเคราะห์ความซับซ้อนของอัลกอริทึมที่ใช้งานโดยใช้โครงสร้างข้อมูลและภาษาที่ใช้งานได้จริง
ฉันไม่ได้มีโอกาสอ่านโครงสร้างข้อมูลที่ทำงานได้อย่างหมดจดแต่ฉันได้ดูที่หน้า Wikipedia สำหรับหัวเรื่องและดูเหมือนว่าโครงสร้างข้อมูลบางส่วนจะแทนที่อาร์เรย์แบบดั้งเดิมด้วย:
"อาร์เรย์สามารถถูกแทนที่ด้วยแผนที่หรือรายการเข้าถึงแบบสุ่มซึ่งยอมรับว่ามีการใช้งานอย่างหมดจด แต่เวลาในการเข้าถึงและอัปเดตเป็นลอการิทึม"
ในกรณีนั้นรูปแบบการคำนวณจะแตกต่างกันใช่มั้ย