การแลกเปลี่ยนพื้นที่เวลาสำหรับปัญหาองค์ประกอบที่ขาดหายไป
นี่เป็นปัญหาที่รู้จักกันดี รับอาร์เรย์A[1…n]A[1…n]A[1\dots n]ของจำนวนเต็มบวกเอาท์พุทจำนวนเต็มบวกที่เล็กที่สุดที่ไม่ได้อยู่ในอาร์เรย์ ปัญหาสามารถแก้ไขได้ในพื้นที่และเวลาO(n)O(n)O(n) : อ่านอาร์เรย์ติดตามในพื้นที่ไม่ว่าจะเป็นเกิดขึ้นสแกนหาองค์ประกอบที่เล็กที่สุดO(n)O(n)O(n)1,2,…,n+11,2,…,n+11,2,\dots,n+1 ฉันสังเกตเห็นว่าคุณสามารถแลกเปลี่ยนพื้นที่เวลา ถ้าคุณมีหน่วยความจำเท่านั้นคุณสามารถทำมันได้ในรอบและได้รับเวลา(kn) ในกรณีพิเศษมีอัลกอริทึมกำลังสอง - เวลาคงที่แน่นอนO(nk)O(nk)O(\frac{n}{k})kkkO(kn)O(kn)O(k n) คำถามของฉันคือ: สิ่งนี้เป็นการแลกเปลี่ยนที่ดีที่สุดหรือไม่คือ ? โดยทั่วไปแล้วเราจะพิสูจน์ขอบเขตดังกล่าวได้อย่างไรtime⋅space=Ω(n2)time⋅space=Ω(n2)\operatorname{time} \cdot \operatorname{space} = \Omega(n^2) สมมติว่ารุ่น RAM พร้อมเลขคณิตที่ จำกัด และการเข้าถึงอาร์เรย์ใน O (1) แบบสุ่ม แรงบันดาลใจสำหรับปัญหานี้: แลกเปลี่ยนพื้นที่เวลาสำหรับ palindromes ในรูปแบบเทปเดียว (ดูตัวอย่างที่นี่ )