สมมติว่าเป็นต้นไม้ที่มีค่าคงที่ซึ่งเราไม่รู้โครงสร้าง ปัญหาคือการส่งออกต้นไม้โดยขอให้สอบถามรูปแบบ: "โหนดอยู่บนเส้นทางจากโหนดไปยังโหนดหรือไม่" สมมติว่าแต่ละแบบสอบถามสามารถตอบได้ในเวลาคงที่โดย oracle เรารู้ค่าของ , จำนวนโหนดในทรี โดยมีวัตถุประสงค์เพื่อลดเวลาที่ใช้ในการส่งออกต้นไม้ในแง่ของnt x a b n n
มีอัลกอริทึมสำหรับปัญหาข้างต้นหรือไม่
สมมติว่าระดับของโหนดใด ๆ ในมากที่สุด 3
สิ่งที่ฉันรู้
กรณีเส้นผ่าศูนย์กลาง bounded เป็นเรื่องง่าย ถ้าเส้นผ่านศูนย์กลางของต้นไม้คือเราจะได้อัลกอริธึมหารและพิชิต:
ต้นไม้ไบนารีใด ๆ ที่มีตัวคั่นที่ดีที่แบ่งต้นไม้เป็นองค์ประกอบที่มีขนาดไม่น้อยกว่า 1 / 3n
- เลือกจุดสุดยอดใด ๆ x ถ้าเป็นป้ายคั่นที่ดีนั้นและรับคืน
- ค้นหา 3 ประเทศเพื่อนบ้านทั้งหมดของ x
- ย้ายไปในทิศทางของเพื่อนบ้านที่มีจำนวนโหนดมากที่สุด ทำซ้ำขั้นตอนที่ 2 กับเพื่อนบ้าน
เนื่องจากการค้นหาตัวคั่นใช้ขั้นตอนมากที่สุดเราจึงได้อัลกอริทึมO ( n D log n )
สุ่มอัลกอริทึม (ย้ายจากความคิดเห็นด้านล่าง)
เลือกสองจุดยอด x และ y สุ่ม ด้วยความน่าจะเป็น 1/9 พวกเขาจะนอนอยู่ฝั่งตรงข้ามของตัวคั่น เลือกโหนดกลางของเส้นทางจากไปYดูว่ามันเป็นตัวแยกถ้าไม่ทำการค้นหาแบบไบนารี
ใช้เวลาเวลาที่คาดหวังในการค้นหาตัวคั่น ดังนั้นเราจึงได้อัลกอริธึมแบบสุ่มO ( n
พื้นหลัง. ฉันเรียนรู้เกี่ยวกับปัญหานี้จากเพื่อนที่ทำงานในแบบจำลองความน่าจะเป็นแบบกราฟิก ปัญหาข้างต้นนั้นสอดคล้องกับการเรียนรู้โครงสร้างของทางแยกโดยใช้ oracle ซึ่งกำหนดตัวแปรสุ่มสามตัวคือ X, Y และ Z สามารถบอกค่าของข้อมูลร่วมกันระหว่าง X และ Y ให้ค่าของ Z ถ้าค่าใกล้เคียง เป็นศูนย์เราอาจสมมติว่า Z อยู่บนเส้นทางจาก X ถึง Y