ผสานต้นไม้สองแบบในการค้นหาแบบทวิภาค


17

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

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


ฉันเองก็ไม่รู้เหมือนกันว่าฉันก็มีคำถามเดียวกัน

เพื่อความเป็นธรรมนี่เป็นคำถามที่ให้ไว้ในการทำการอัลกอริทึม ปรากฎว่า O (h) เข้มงวดเกินไปของรันไทม์เนื่องจากคำถามลืมให้ข้อมูลที่จำเป็นเพิ่มเติม: ว่ากุญแจทั้งหมดจากต้นไม้ต้นหนึ่งมีขนาดเล็กกว่าแป้นทั้งหมดในต้นไม้ด้านขวา
efritz

ฉันขาดอะไรบางอย่างไปหรือไม่การผสานต้นไม้ไบนารีจะทำได้อย่างง่ายดายO(log n)ด้วยฟังก์ชันการย้ายโหนดแบบง่ายๆ
AT

@ AT ใช่ แต่เราไม่รู้ว่ากุญแจจาก BST หนึ่ง ๆ นั้นไม่ได้เกิดจากกันและกัน
efritz

1
นี่เป็นต้นไม้สีแดงดำไม่ใช่ BST สีดำสีแดง (เช่นเดียวกับต้นไม้ AVL และกอง) เป็นต้นไม้ชนิดพิเศษที่รักษาความสูงของทรัพย์สิน วานิลลา BSTs สามารถเป็นกระดูกสันหลังเดียว ลองใส่ที่ไม่ลดลงหรือไม่เพิ่มขึ้นชุดของตัวเลขลงใน BST nและคุณจะเห็นว่าความสูงของต้นไม้เหล่านี้เป็นจริง ต้นไม้ไบนารีเต็มหรือสมบูรณ์เท่านั้นที่มีลอการิทึมความสูงตามจำนวนโหนดทั้งหมด
efritz

คำตอบ:


24

ในArXiv: 1002.4248 , John Iacono และÖzgürÖzkanอธิบายถึงอัลกอริธึมที่ค่อนข้างง่ายในการผสานต้นไม้ค้นหาแบบทวิภาคสองต้นในเวลาตัดจำหน่าย การวิเคราะห์เป็นส่วนที่ยาก [ ปรับปรุง:ขณะที่โจถูกต้องข้อสังเกตในคำตอบของเขาขั้นตอนวิธีการนี้เป็นเพราะบราวน์และ Tarjan.] พวกเขายังอธิบายความซับซ้อนมากขึ้นโครงสร้างข้อมูลพจนานุกรมตามรายการลำเอียงเฮี๊ยบที่ผสานการสนับสนุนในO ( บันทึกn )ตัดจำหน่ายเวลาO(log2n) O(logn)

ในทางตรงกันข้ามขอบเขตกรณีเลวร้ายที่สุดของเป็นไปไม่ได้ พิจารณาสองต้นไม้ค้นหาแบบทวิภาคกับnโหนดหนึ่งเก็บจำนวนเต็มแม้ระหว่าง2และ2 n , อื่น ๆ จัดเก็บจำนวนเต็มคี่ระหว่าง1และ2 n - 1 ผสานต้นไม้สองต้นสร้างต้นไม้ค้นหาแบบทวิภาคใหม่การจัดเก็บจำนวนเต็มทั้งหมดระหว่าง1และ2 n ในทรีเช่นนั้นเศษส่วนคงที่ของโหนดจะมีพาริตีต่างจากพ่อแม่ (พิสูจน์: ต้นกำเนิดของใบไม้แปลก ๆ จะต้องเท่ากัน) ดังนั้นการรวมต้นไม้คู่กับคี่ต้องเปลี่ยนO(logn)n22n12n112nตัวชี้ ters ( n )Ω(n)


One note: ถ้าฉันอ่านคำอธิบายในบทความนี้อย่างถูกต้องต้นไม้เหล่านี้ไม่สนับสนุนการแทรกและลบ การผสานเพียงทำตามขั้นตอนการรวมแผนภูมิการค้นหานิ้ว (อธิบายไว้ในคำตอบของโจ) ชุดปฏิบัติการที่ จำกัด ช่วยให้สามารถวิเคราะห์ได้ดีกว่าO ( n lg m)O(LG2n)หนึ่ง O(nLGม.n)
jbapple

1
การวิเคราะห์ที่ดีขึ้นนั้นเกิดจากการตัดจำหน่ายไม่ใช่ข้อ จำกัด ของการดำเนินงานที่อนุญาต การแทรกและการลบสามารถสนับสนุนได้ด้วยการแยกและผสาน (จริง ๆ แล้ว "รวม") ในเวลาที่ตัดจำหน่ายเดียวกัน O(ล.โอก.n)
Jeffε

เพิ่งออกมาจากความอยากรู้อยากเห็นเวลาได้รับผลกระทบหรือไม่หากต้นไม้ถูกเก็บไว้ในอาร์เรย์แทนที่จะเชื่อมโยงรายการ (ซึ่งฉันถือว่าเป็นสิ่งที่คุณหมายถึงเมื่อพูดว่า "การเปลี่ยนแปลง ... ตัวชี้ ")? Ω(n)
mtahmed

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

1
@ Jɛ ff E: ฉันยอมรับว่าได้รับการสนับสนุนการแยกและเข้าร่วม แต่ฉันไม่คิดว่าการสร้างหรือทำลายต้นไม้นั้น ตัวอย่างเช่นถ้าฉันต้องการลบ "x" จากตัวอักษรฉันจะไม่ได้รับเพียง "a..wyz" แต่ยัง "x" ขนาดของจักรวาล (ซึ่งคือดูหัวข้อ 2.1) จะไม่เปลี่ยนแปลง นอกจากนี้คำนำในส่วนที่ 1 บันทึกว่าเซตต้องแบ่งจักรวาลซึ่งฉันตีความ (อาจไม่ถูกต้อง) เพื่อหมายถึงองค์ประกอบแต่ละอย่างในจักรวาลอยู่ในต้นไม้บางต้น ดังนั้นวิธีที่ฉันอ่านมันการก่อสร้างนี้ไม่สามารถใช้ได้กับจักรวาลที่ไม่มีขีด จำกัด นั่นเป็นวิธีที่ฉันควรเขียนความคิดเห็นข้างต้น n
jbapple

9

คุณอาจพบว่าการอ้างอิงนี้มีประโยชน์: Brown และ Tarjan, A Fast Merging Algorithmซึ่งผู้เขียนแสดงวิธีการผสานต้นไม้ binary binary (AVL) ที่สมดุลในสิ่งที่ดีที่สุด (สำหรับอัลกอริทึมที่ใช้การเปรียบเทียบ) เมตรและnมีความยาวของรายการที่เรียงลำดับตัวแทนจากต้นไม้ค้นหาแบบทวิภาคและมันจะสันนิษฐานว่าnO(nเข้าสู่ระบบม.n)ม.nม.n

คุณสามารถดูการอภิปรายของเทคนิคต่าง ๆ สำหรับการรวมชุดที่สั่งซื้อไว้ในส่วนที่ 11.5 ของบทความนี้ลงในแผนผังการค้นหานิ้ว


2
ทั้งเวลาผูกพันและการจับคู่ผูกพันที่ต่ำกว่าสมมติว่าn O(nlogmn)mn
Jeffε

ฉันคิดว่ามันเกี่ยวกับเวลา แต่ฉันได้แก้ไขคำถามเพื่อให้ชัดเจน
โจ

0

1
โครงสร้างข้อมูลของพวกเขารองรับการเข้าร่วมใน O (1) เวลาตัดจำหน่ายไม่ใช่การรวม องค์ประกอบทั้งหมดในต้นไม้ต้นหนึ่งต้องมีขนาดเล็กกว่าองค์ประกอบทั้งหมดในต้นไม้ต้นหนึ่ง
Jeffε

อ่าจริง ต้องอ่านบทความอีกครั้ง: "เข้าร่วม ( , T j ), รวมต้นไม้สองต้นในหนึ่งต้นต้นไม้T ฉันและT jได้รับคำสั่งในแง่ที่ว่าองค์ประกอบทั้งหมดของT jมีขนาดเล็กหรือใหญ่กว่าขนาดที่เล็กที่สุดหรือเล็กที่สุด องค์ประกอบที่ใหญ่ที่สุดของT ฉันสมมติว่าไม่มีการสูญเสียความสามารถทั่วไปที่w ( T i ) = w ( T j )ในกรณีนี้ต้นไม้T jติดอยู่กับต้นไม้T iและผลลัพธ์ของการดำเนินการนี้คือต้นไม้TiTjTiTjTjTiw(Ti)=w(Tj)TjTiติดอยู่กับโหนดบนกระดูกสันหลังของ T i . "TiTjTi
AT
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.