พิจารณาปัญหาต่อไปนี้:
อินพุต : แสดงของจำนวนเต็ม
เป้าหมาย : พิจารณาว่ามีจำนวนเต็มที่อยู่ในทั้งสองรายการหรือไม่
สมมติว่าทั้งสองรายการมีขนาดnมีอัลกอริทึมเชิงเส้นเวลาที่กำหนดสำหรับปัญหานี้หรือไม่? คุณสามารถแก้ปัญหานี้ในเวลาแน่นอนโดยไม่ใช้การสุ่ม
น่าเสียดายที่คุณไม่สามารถสรุปได้ว่าองค์ประกอบลิสต์นั้นเล็กทั้งหมด
ฉันสามารถดูวิธีการแก้ปัญหาในเวลาที่คาดหวังโดยใช้อัลกอริธึมแบบสุ่ม: สุ่มเลือกฟังก์ชันแฮชแบบ 2 สากลเก็บองค์ประกอบของลงใน hashtable (โดยใช้เป็นฟังก์ชันแฮช) แล้วค้นหา แต่ละองค์ประกอบของเพื่อดูว่ามันอยู่ใน hashtable หรือไม่ เวลาทำงานคาดว่าจะเป็น(n) อย่างไรก็ตามฉันไม่เห็นวิธีการค้นหาอัลกอริทึมที่กำหนดค่าโดยใช้เวลาหากคุณพยายามลดขนาดลงและแก้ไขฟังก์ชันแฮชที่ระบุเพียงอย่างเดียวจะมีอินพุตที่แย่ที่สุดซึ่งทำให้โพรซีเดอร์นี้รันในเวลา. อัลกอริทึมที่ดีที่สุดที่ฉันสามารถหาได้เกี่ยวข้องกับการเรียงลำดับค่า แต่นั่นไม่ใช่เวลาเชิงเส้น เราสามารถใช้เวลาเชิงเส้นตรงได้หรือไม่?
นอกจากนี้ฉันสามารถดูวิธีการแก้ปัญหาในเวลาเชิงเส้นถ้าคุณคิดว่าองค์ประกอบรายการทั้งหมดเป็นจำนวนเต็มในช่วง (โดยทั่วไปแล้วจะเรียงลำดับการนับ) - แต่ฉันสนใจในสิ่งที่เกิดขึ้นโดยทั่วไป กรณีเมื่อเราไม่สามารถคิดได้
หากคำตอบนั้นขึ้นอยู่กับรูปแบบการคำนวณแบบจำลอง RAM จะคำนึงถึง แต่ฉันจะสนใจผลลัพธ์ของรูปแบบการคำนวณที่สมเหตุสมผล ฉันรู้ว่าขอบเขตที่ต่ำกว่าสำหรับอัลกอริธึมโครงสร้างการตัดสินใจสำหรับความเป็นเอกลักษณ์ขององค์ประกอบแต่นี่ก็ไม่แน่นอนเนื่องจากบางครั้งเราสามารถหาอัลกอริทึมเชิงเส้นเวลาแม้ว่าจะมีผูกพันในตัวแบบต้นไม้ตัดสินใจ