กำหนดโครงสร้างข้อมูลเพื่อการแทรกซ้ำอย่างมีประสิทธิภาพ


11

ฉันกำลังมองหาโครงสร้างข้อมูลที่ประหยัดพื้นที่ซึ่งมีชุด (ไม่มีการทำซ้ำ) ขององค์ประกอบคำและสนับสนุนการแทรกอย่างรวดเร็ว (O (1) ตัดจำหน่าย) โดย "พื้นที่ที่มีประสิทธิภาพ" ผมหมายถึงความนึกคิดn+โอ(n)คำพูดในการจัดเก็บnองค์ประกอบ

เป็นชุดจะเป็นส่วนสำคัญของคำถาม: ถ้าแต่ละองค์ประกอบจะถูกเพิ่มเข้าสู่ระบบnครั้งพื้นที่ที่ใช้ไม่สามารถnเข้าสู่ระบบn n

โครงสร้างควรสนับสนุนการแสดงรายการองค์ประกอบ (สมเหตุสมผลอย่างมีประสิทธิภาพ); โครงสร้างที่มีเหตุผลควรมีปัญหาใด ๆ ที่นี่ (ข้อความค้นหาการเป็นสมาชิกที่รวดเร็วเป็นข้อดี)


2
มีเหตุผลที่ตารางแฮชจะไม่ทำเคล็ดลับหรือไม่?
เดฟ

@Dave: ฉันไม่คิดว่าเป็นไปตามความต้องการพื้นที่ แต่ฉันคิดว่าตารางการปรับขนาดแบบไดนามิกที่เข้มงวดเพียงพอจะทำให้มันใช้งานได้ แต่โดยทั่วไปฉันต้องการดูว่ามีอะไรก่อนที่จะเขียนรหัสจริง
ชาร์ลส์

1
จะได้รับการตัดจำหน่ายมีการปรับขนาดแบบไดนามิกคุณต้องมีการเพิ่มขนาดโดยส่วนคงที่ซึ่งผมไม่คิดว่าตรงกับความต้องการพื้นที่ถ้าคุณต้องการที่จะตอบสนองอย่างเคร่งครัดn + o ( n ) O(1)n+โอ(n)
เดฟ

ตกลงนี่มันค่อนข้างงี่เง่า แต่เมื่อจักรวาลของคุณมีขนาดคงที่ (องค์ประกอบของคำศัพท์) แม้แต่เวกเตอร์บิตเต็มจะมีขนาดของ ...O(1)
Magnus Lie Hetland

@ Magnus: ฉันเดาว่ามันหมายความว่าฟังก์ชั่นที่แท้จริงที่อยู่เบื้องหลัง O- และสัญลักษณ์ o ในคำถามไม่ได้ขึ้นอยู่กับขนาดของคำ
Tsuyoshi Ito

คำตอบ:


10

ฉันคิดว่า Raman และ Rao ของ"พจนานุกรมภาษาและต้นไม้ที่ ซับซ้อน"ตรงตามขอบเขตที่คุณระบุ จากนามธรรม:

ก่อนอื่นเราจะแสดงชุดที่รองรับการสืบค้นความเป็นสมาชิกในO ( 1 )เวลากรณีที่เลวร้ายที่สุดและการแทรกลงใน / ลบออกจากSในO ( 1 )เวลาที่คาดว่าจะตัดจำหน่าย การเป็นตัวแทนใช้บิตB + o ( B )โดยที่B = l g ( mSยู={0,...,ม.-1},|S|=nO(1)SO(1)B+โอ(B)เป็นพื้นที่ต่ำสุดที่ข้อมูลตามทฤษฎีที่จะเป็นตัวแทนSB=ล.ก.(ม.n)S


มันดูน่าอัศจรรย์ (คุณจะเข้าใจว่าฉันอ่านบทความก่อนที่จะยอมรับใช่มั้ย?)
Charles

1

หากใบสมัครของคุณสามารถทนต่อผลบวกปลอมบางส่วนแล้วคุณควรมีลักษณะเป็นใช้ตัวกรองบลูม

การแปลความหมายของวิกิพีเดีย: ตัวกรอง Bloom เป็นโครงสร้างข้อมูลความน่าจะเป็นที่ประหยัดพื้นที่ซึ่งใช้ในการทดสอบว่าองค์ประกอบเป็นสมาชิกของชุดหรือไม่ บวกเท็จได้ แต่ปลอมไม่ได้ สามารถเพิ่มองค์ประกอบในชุด แต่ไม่สามารถลบได้ องค์ประกอบเพิ่มเติมที่เพิ่มเข้าไปในชุดยิ่งมีความน่าจะเป็นของผลบวกปลอมมากขึ้น


ฉันทำไม่ได้ แต่ +1 สำหรับโครงสร้างข้อมูลที่ยอดเยี่ยม
ชาร์ลส์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.