การวิเคราะห์ที่เข้มงวดขึ้นของอัลกอริทึมของBorůvkaที่ถูกแก้ไข


11

อัลกอริทึมของBorůvkaเป็นหนึ่งในอัลกอริธึมมาตรฐานสำหรับการคำนวณทรีสแปนนิ่งขั้นต่ำสำหรับกราฟด้วยmG=(V,E)|V|=n,|E|=m

รหัสหลอกคือ:

MST T = empty tree
Begin with each vertex as a component
While number of components > 1
    For each component c
       let e = minimum edge out of component c
       if e is not in T
           add e to T  //merging the two components connected by e

เราเรียกการวนซ้ำของวงรอบนอกแต่ละรอบ ในแต่ละรอบวงด้านในจะตัดจำนวนส่วนประกอบอย่างน้อยครึ่งหนึ่ง ดังนั้นจึงมีรอบมากที่สุด ในแต่ละรอบวงด้านในจะมองแต่ละขอบอย่างมากสองครั้ง (หนึ่งครั้งจากแต่ละองค์ประกอบ) ดังนั้นเวลาการทำงานที่มากที่สุดn)O(logn)O(mlogn)

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

การเพิ่มประสิทธิภาพนี้มีผลต่อเวลาทำงานอย่างไร

ถ้าเรารู้อย่างใดว่าในแต่ละรอบก็จะตัดจำนวนขอบในช่วงครึ่งปีแล้วเวลาทำงานจะได้รับการปรับปรุงให้ดีขึ้นอย่างมีนัยสำคัญ: (เมตร)T(m)=T(m/2)+O(m)=O(m)

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


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

@ Xodarap ถ้าเป็นเส้นทางที่ง่าย (นั่นคือสิ่งที่คุณหมายถึงห่วงโซ่?) จากนั้นในรอบแรกคุณเลือกอย่างน้อยครึ่งหนึ่งขอบ ขอบเหล่านี้จะถูกลบออกจากรอบถัดไป G
Joe

โปรดทราบว่าคุณสามารถใช้หนึ่งในโครงสร้างการค้นหาร่วมที่ได้รับการปรับให้เหมาะสมเพื่อปรับปรุงอัลกอริทึมนี้
กราฟิลส์

คำตอบ:


5

เป็นไปได้ที่จะสร้างกรณีทดสอบสำหรับกราฟทั่วไปที่ขั้นตอนBorůvkaของคุณไม่ลดลงครึ่งหนึ่งในแต่ละขั้นตอนแม้ว่ามันจะลดจำนวนจุดยอดลงครึ่งหนึ่งก็ตาม ข้อสังเกตที่น่าสนใจคือการปรับให้เหมาะสมที่คุณแนะนำใช้ได้กับกราฟระนาบ นี่เป็นเพราะกราฟระนาบ i, e|) และโดยทั่วไปจะนำไปสู่ความเร็วในการเรียนของตระกูลกราฟที่ปิดเล็กน้อย|E|3|V|6|E|=O(|V|)

อ้างอิง:

  • วิทยานิพนธ์ปริญญาโท Claude Anderson (หน้า 100 คำอธิบายตัวพิมพ์เล็กที่สุดสำหรับอัลกอริทึมของBorůvka) [ลิงค์]

  • "อัลกอริธึมเชิงเส้นสองเวลาสำหรับ MST บนคลาสกราฟปิดเล็กน้อย". Archivum mathematicum 40 (3): 315–320, 2004 [ลิงค์]

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