โครงสร้างข้อมูลการค้นหาที่น่าจะเป็นประโยชน์หรือไม่


9

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

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

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

แก้ไข: ฉันทราบว่ามีตัวแปรที่กำหนดขึ้นของ SkipList ซึ่งมีความซับซ้อนมากกว่าที่จะนำมาใช้เปรียบเทียบกับ SkipList แบบสุ่ม (คลาสสิก)


1
แอพพลิเคชั่นใดที่คุณมีอยู่ในใจ
Pratik Deoghare

คำตอบ:


6

ฉันไม่คิดว่ามีความน่าจะเป็นพหุนามสำหรับการสูญเสีย 'สมดุล' หลังจากที่คุณใส่องค์ประกอบในรายการข้ามคุณสร้างหอคอยสำเนาข้างบนโดยพลิกเหรียญจนกว่ามันจะปรากฏขึ้นหัว

ดังนั้นคุณจึงมีเลเยอร์ที่มีองค์ประกอบน้อยลงเรื่อย ๆ เมื่อถึงด้านบน เนื่องจากหอคอยมีความสูงk ด้วยความน่าจะเป็น 2-kมีองค์ประกอบที่ความสูง k ที่มีความน่าจะเป็น (รวมเข้าด้วยกัน) น้อยกว่า n/2k. ดังนั้นจึงมีองค์ประกอบในระดับเข้าสู่ระบบn มีความสมดุลน้อยกว่า 1/n. หอคอยสูงω(เข้าสู่ระบบn)มีความน่าจะเป็นแบบพหุนาม ปล่อยM เป็นระดับสูงสุดแล้วเรามี

E[M]=Σk1PR(Mk)เข้าสู่ระบบ(n)+Σkเข้าสู่ระบบ(n)n/2k=เข้าสู่ระบบ(n)+2

นอกจากนี้ในระดับ k มี n/2k องค์ประกอบที่มีความน่าจะเป็นสูงมากเนื่องจากนี่คือผลรวมของ n ตัวแปรสุ่มอิสระและคุณสามารถใช้ขอบเขตของ Chernov

เนื่องจากคุณสามารถแสดงให้เห็นว่าคุณทำขั้นตอนต่อระดับอย่างต่อเนื่องเท่านั้น (ที่มีความน่าจะเป็นสูงมาก!) ต้นทุนการค้นหาจึงเป็นลอการิทึม

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

เท่าที่ฉันรู้รายการข้ามมีความสนใจในทางปฏิบัติที่ดีเพราะมันค่อนข้างง่ายที่จะใช้พวกเขาเป็นโครงสร้างการค้นหาล็อคฟรีด้วยผลประโยชน์ที่ชัดเจน ต้นไม้ B ในทางกลับกันค่อนข้างยากที่จะทำให้นักแสดงภายใต้การเข้าถึงพร้อมกัน


ความลึกที่คาดหวังของแผนภูมิการค้นหาแบบไบนารี่ก็เป็นลอการิทึมเช่นกัน ทำไมสถานการณ์ถึงดีขึ้นที่นี่ (นอกจากนี้คุณถือว่าการเรียงสับเปลี่ยนแบบสุ่มถูกต้องหรือไม่)
Raphael

2
ในแผนผังการค้นหาความลึกขึ้นอยู่กับข้อมูล หากคุณป้อนตัวเลขสุ่มมันมีความลึกลอการิทึมที่มีความน่าจะเป็นสูงมาก อย่างไรก็ตามในทางปฏิบัติข้อมูลจะไม่สุ่ม รายการข้ามไม่ได้ใช้ข้อมูลเป็นแหล่งของการสุ่มดังนั้นปัญหานี้ไม่มีอยู่
adrianN

1

รายการข้ามมีคุณสมบัติอื่น ๆ ซึ่งอาจทำให้น่าสนใจในสถานการณ์ที่มีการใช้งานนอกเหนือจากการแทรก / ค้นหา / ลบเท่านั้น

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

นอกจากนี้รายการข้ามเป็นวิธีที่นิยมใช้โครงสร้างการค้นหาที่อิงการเปรียบเทียบพร้อมกัน ในอดีตต้นไม้การค้นหาที่สมดุลยังไม่ได้ดำเนินการภายใต้การแข่งขันที่เกิดขึ้นพร้อมกันสูง

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