3
โครงสร้างข้อมูลที่มีประสิทธิภาพรองรับการแทรกการลบและ MostFrequent
สมมติว่าเรามีชุดDDDและสมาชิกแต่ละคนเป็นคู่ข้อมูลและคีย์ เราต้องการโครงสร้างข้อมูลที่จะสนับสนุนการดำเนินการต่อไปนี้:DDD แทรกเข้า ,(d,k)(d,k)(d,k)DDD ลบสมาชิก (ไม่จำเป็นต้องค้นหาเพื่อค้นหาเช่นชี้ไปที่สมาชิกใน )eeeeeeeeeDDD MostFrequent ซึ่งส่งคืนสมาชิกเช่นนั้นเป็นหนึ่งในคีย์ที่พบบ่อยที่สุดใน (โปรดทราบว่าคีย์ที่บ่อยที่สุดไม่จำเป็นต้องไม่ซ้ำกัน)e∈De∈De \in De.keye.keye.keyDDD การใช้โครงสร้างข้อมูลนี้อย่างมีประสิทธิภาพคืออะไร โซลูชันของฉันคือฮีปสำหรับคีย์และความถี่ที่จัดลำดับความสำคัญด้วยความถี่พร้อมกับตารางแฮชที่ฟังก์ชันแฮชจะแมปสมาชิกที่มีคีย์เดียวกันกับสล็อตเดียวกันในตารางแฮช สิ่งนี้สามารถให้สำหรับการดำเนินการสองครั้งแรกและสำหรับครั้งที่สาม (เวลาที่เลวร้ายที่สุดในการรันกรณี)Θ(lgn)Θ(lgn)\Theta(\lg n)Θ(1)Θ(1)\Theta(1) ฉันสงสัยว่ามีวิธีแก้ปัญหาที่มีประสิทธิภาพมากกว่านี้ไหม (หรือโซลูชันที่เรียบง่ายกว่าที่มีประสิทธิภาพเท่ากันใช่หรือไม่)