Splay tree ที่มีการหมุนเป็นจำนวนคี่


9

เมื่อแทรกรายการลงในแผนภูมิต้นไม้การหมุนจะดำเนินการเป็นคู่โดยยึดตามรูปแบบ zig-zag หรือ zig-zig เมื่อมีการหมุนเป็นจำนวนคี่หนึ่งสามารถทำการหมุนพิเศษเริ่มต้นที่ใบไม้หรือบันทึกการหมุนเพิ่มเติมและทำที่ราก มันสำคัญไหม

ตัวอย่างเช่นในภาพที่แนบมาฉันใส่ 4 ลงใน BST และ "splay it" ลงในรูท ที่ด้านบนของรูปฉันแรกหาคู่ซิกแซกที่โหนดใบและดำเนินการสเปรย์ซิกแซกจากด้านล่างออกจากการหมุนขวาสุดท้ายที่ราก ที่ด้านล่างของรูปฉันจะหมุนแปลก ๆ เริ่มจากใบไม้จากนั้นก็ทำรูปซิกซิกซิกไปยังราก

อันไหนถูกต้อง? หรือทั้งสองอย่างจะนำไปสู่การแสดงต้นไม้แบบปกติ

สองวิธีในการสเปรย์สำหรับการหมุนเป็นจำนวนคี่

คำตอบ:


4

มันไม่สำคัญสำหรับการวิเคราะห์ บทแทรกที่สำคัญสำหรับการวิเคราะห์ประสิทธิภาพแผ่ออกต้นไม้เป็นแทรกเข้าถึง มันระบุว่าค่าใช้จ่ายตัดจำหน่ายของการดำเนินงานsplay (x)น้อยกว่า1+3(R(เสื้อ)-R(x))ที่ไหน เสื้อ เป็นรากของต้นไม้และ R(ยู)=เข้าสู่ระบบ(น้ำหนักของ ยูทรีย่อยของ). น้ำหนักของทรีย่อยคือผลรวมของน้ำหนักของโหนด (น้ำหนัก (บวก) จะถูกเลือกขึ้นอยู่กับการประยุกต์ใช้บทแทรก.) ฟังก์ชั่นที่มีศักยภาพที่ใช้คือΦ(T)=Σx โหนดของ TR(เสื้อ).

หลักฐานการเข้าถึงบทแทรกดูที่ค่าใช้จ่ายของการดำเนินการ zig / zig-zag / zig-zig เดียว คุณได้รับ

  1. ค่าใช้จ่ายของการดำเนินการ zig หรือ zag คือ 1+3(R+(ยู)-R(ยู))ที่ไหน R+ เป็นดังหลังจากการดำเนินการและ ยู เป็นโหนดที่หมุนขึ้นไป

  2. ค่าใช้จ่ายของการดำเนินการ zig-zig / zig-zag และ symmetric คือ 3(R+(ยู)-R(ยู)).

หากคุณเพิ่มความแตกต่างเหล่านี้ขึ้นสำหรับการปฏิบัติการที่ทำในสเปรย์เดี่ยว(x)คุณจะได้รับกล้องโทรทรรศน์รวมและสิ่งที่เหลืออยู่คือ1+3(R(เสื้อ)-R(x)).

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

อย่างไรก็ตามเหตุผลที่คุณทำการหมุนครั้งเดียวครั้งสุดท้ายคือคุณไม่ทราบว่าความลึกของโหนดเป็นเลขคู่หรือคี่ล่วงหน้า

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