วิธีหาศักยภาพรวมของบันทึก
ลองพิจารณาอัลกอริทึม BST ที่การเข้าถึงองค์ประกอบxแต่ละครั้งจะจัดเรียงองค์ประกอบใหม่ในเส้นทางการค้นหาPของx ที่เรียกว่าเส้นทางก่อนไปยังต้นไม้บางต้นที่เรียกว่าต้นไม้หลัง สำหรับองค์ประกอบใด ๆให้s ( )และs ' ( )เป็นขนาดของต้นไม้ย่อยรากที่ก่อนและหลังการปรับปรุงใหม่ตามลำดับ ดังนั้นs ( )และs ' ( )อาจแตกต่าง IFF ∈ PAxPxas(a)s′(a)as(a)s′(a)a∈P
ยิ่งกว่านั้นจัดเรียงองค์ประกอบหลาย ๆ อย่างตลอดเวลาในเส้นทางการค้นหาในทุกเวลา ลองเรียกอัลกอริทึมชนิดนี้ว่า "อัลกอริธึม" ตัวอย่างเช่นต้นไม้สเปรย์เป็นของท้องถิ่น มันจัดเรียงใหม่มากที่สุด 3 รายการพร้อมกันโดย zig, zigzig และ zigzagA
ตอนนี้อัลกอริทึมในท้องถิ่นใด ๆ ที่สร้างใบไม้ "จำนวนมาก" ในต้นไม้หลังเช่นต้นไม้สเปรย์มีคุณสมบัติที่ดีดังต่อไปนี้
เราสามารถสร้างแผนที่นั้นf:P→P
- มีหลายเส้นตรงมี∈ Pที่s ' ( ฉ( ) ) ≤ s ( ) / 2a∈Ps′(f(a))≤s(a)/2
- มีหลายอย่างต่อเนื่องเป็น∈ Pที่ s ' ( ฉ( ) )อาจมีขนาดใหญ่ แต่นิด ๆ ที่มากที่สุดna∈Ps′(f(a))n
- องค์ประกอบอื่น ๆ∈ P , s ' ( ฉ( ) ) ≤ s ( )a∈Ps′(f(a))≤s(a)
เราสามารถเห็นสิ่งนี้ได้โดยแฉการเปลี่ยนแปลงเส้นทางการค้นหา การทำแผนที่ค่อนข้างเป็นธรรมชาติ บทความนี้มุมมองทางเรขาคณิตทั่วโลกของการเล่น Splayingแสดงรายละเอียดวิธีการดูการสังเกตข้างต้นอย่างแม่นยำ
หลังจากทราบข้อเท็จจริงนี้มันเป็นเรื่องธรรมดามากที่จะเลือกผลรวมของบันทึกที่มีศักยภาพ เพราะเราสามารถใช้การเปลี่ยนแปลงที่อาจเกิดขึ้นขององค์ประกอบประเภท 1 เพื่อจ่ายสำหรับการจัดเรียงใหม่ทั้งหมด ยิ่งกว่านั้นสำหรับองค์ประกอบประเภทอื่น ๆ เราต้องจ่ายเงินสำหรับการเปลี่ยนแปลงที่อาจเกิดขึ้นโดยที่ลอการิทึมส่วนใหญ่ ดังนั้นเราสามารถหาค่าตัดจำหน่ายลอการิทึมได้
ฉันคิดว่าเหตุผลที่ผู้คนคิดว่านี่คือ "มนต์ดำ" คือการวิเคราะห์ก่อนหน้านี้ไม่ได้ "เปิดเผย" การเปลี่ยนแปลงโดยรวมของเส้นทางการค้นหาและดูสิ่งที่เกิดขึ้นจริงในขั้นตอนเดียว แต่พวกเขาแสดงให้เห็นถึงการเปลี่ยนแปลงที่อาจเกิดขึ้นสำหรับ "การเปลี่ยนแปลงในท้องถิ่น" แต่ละรายการและจากนั้นแสดงว่าการเปลี่ยนแปลงที่อาจเกิดขึ้นเหล่านี้สามารถเหลื่อมล้ำอย่างน่าอัศจรรย์
ป.ล. เอกสารนี้ยังแสดงถึงข้อ จำกัด ของผลรวมการบันทึกที่อาจเกิดขึ้น นั่นคือหนึ่งสามารถพิสูจน์ความพึงพอใจของการเข้าถึงบทแทรกผ่านผลรวมของการบันทึกที่อาจเกิดขึ้นกับอัลกอริทึมเฉพาะที่
การตีความผลรวมของบันทึกอาจเกิดขึ้น
มีอีกวิธีหนึ่งในการกำหนดศักยภาพของ BST ในกระดาษของ Georgakopoulos และ McClurkinซึ่งมีความเป็นไปได้เช่นเดียวกับศักยภาพรวมของบันทึกในกระดาษของ Sleator Tarjan แต่นี่เป็นสัญชาตญาณที่ดีสำหรับฉัน
ตอนนี้ฉันสลับไปที่รูปแบบของกระดาษ เรากำหนดน้ำหนักทุกโหนดยู Let W ( U )เป็นผลรวมของน้ำหนักของU 's ทรีย่อย (นี่เป็นเพียงขนาดของคุณw(u)uW(u)uu 's ทรีย่อยเมื่อน้ำหนักของทุกโหนดเป็นหนึ่ง.)
ตอนนี้แทนการกำหนดตำแหน่งบนโหนดที่เรากำหนดตำแหน่งให้ชิดขอบซึ่งพวกเขาเรียกว่าปัจจัยความคืบหน้า
pf(e)=log(W(u)/W(v)).
และศักยภาพของต้นไม้คือS
Φ(S)=∑e∈Spf(e).
ความเป็นไปได้นี้มีการตีความตามธรรมชาติ: หากในระหว่างการค้นหาเราข้ามขอบเราลดพื้นที่การค้นหาจากผู้สืบทอดของuไปยังผู้สืบทอดของv , การลด frantional ของW ( u ) / W ( v )(u,v)uvW(u)/W(v) )ปัจจัยความคืบหน้าของเราคือการวัดลอการิทึมของ 'ความคืบหน้า' นี้ดังนั้นชื่อของมัน [จากส่วนที่ 2.4]
สังเกตว่านี่เป็นศักยภาพของ Sleator Tarjan ที่เท่ากันและเพิ่มขึ้นบนเส้นทาง
แก้ไข:ปรากฎว่าคำนิยามทางเลือกนี้และสัญชาตญาณที่อยู่เบื้องหลังมันถูกอธิบายมานานแล้วโดย Kurt Mehlhorn ดูหนังสือ "โครงสร้างข้อมูลและอัลกอริธึม" หนังสือเล่มที่ 1 ตอนที่ 3 ของฉัน 6.1.2 Splay Trees หน้า 263 - 274