แบบมีแกนหลัก ของ ขั้นตอนวิธีโบรน-เคอร์โบสท์

รูปแบบพื้นฐานของขั้นตอนวิธีดังที่ได้อธิบายข้างต้น จะไม่มีประสิทธิภาพในกรณีที่กราฟมีกลุ่มพรรคพวกที่ไม่ได้ใหญ่ที่สุดอยู่จำนวนมาก มันจะทำให้เกิดการเรียกการเวียนเกิดทุกกลุ่มพรรคพวก ไม่ว่าจะใหญ่ที่สุดหรือไม่ก็ตาม เพื่อที่จะประหยัดเวลาและให้ขั้นตอนวิธีดังกล่าวย้อนรอยได้อย่างรวดเร็วในแขนงของต้นไม้ค้นหาที่ไม่มีพรรคพวกที่ใหญ่ที่สุดอยู่ โบรนและเคอร์โบสท์ได้นำเสนอขั้นตอนวิธีที่ต่างออกไปเกี่ยวกับ จุดยอดแกนหลัก (pivot vertex) u ซึ่งถูกเลือกจาก P (หรือกล่าวโดยทั่วไปคือ จาก P ⋃ X) กลุ่มพรรคพวกที่ใหญ่ที่สุดใดๆ ต้องประกอบด้วย u หรือ จุดยอดหนึ่งที่ไม่ใช่เพื่อนบ้านของ u นอกนั้น กลุ่มพรรคพวกสามารถที่จะขยายโดยเพิ่ม u เข้าไป ดังนั้น เฉพาะ u และจุดยอดที่ไม่ใช่เพื่อนบ้านของมันต้องถูกทดสอบเพื่อเป็นตัวเลือกสำหรับจุดยอด v ที่จะถูกรวมเข้ากับ R ในแต่ละครั้งของการเรียกการเวียนเกิด ในรหัสเทียมถ้าแกนหลัก (pivot) ถูกเลือกเพื่อลดจำนวนการเรียกการเวียนเกิดให้เหลือน้อยที่สุดแล้ว จะลดเวลาการทำงานลงได้มากเมื่อเทียบกับแบบไม่ใช้แกนหลัก

รหัสเทียมแสดงขั้นตอนวิธีโบรน-เคอร์โบสท์แบบมีแกนหลัก

    BronKerbosch2(R,P,X):        ถ้า P และ X เป็นเซตว่างทั้งคู่:            รายงานว่า R เป็นกลุ่มพรรคพวกที่ใหญ่ที่สุด        เลือกแกนหลักเป็นจุดยอด u ใน P U X        สำหรับทุกๆจุดยอด v ใน P \ N(u):            BronKerbosch2(R ⋃ {v}, P ⋂ N(v), X ⋂ N(v))            P := P \ {v}            X := X ⋃ {v}

ใกล้เคียง

ขั้นตอนวิธีแบบยุคลิด ขั้นตอนวิธีการค้นหาเพื่อนบ้านใกล้สุด k ตัว ขั้นตอนวิธีของฟลอยด์-วอร์แชล ขั้นตอนวิธีของควิน-แม็กคลัสกีย์ ขั้นตอนวิธีฮังกาเรียน ขั้นตอนวิธี ขั้นตอนวิธีของชอร์ ขั้นตอนวิธีเชิงพันธุกรรม ขั้นตอนวิธีโบรน-เคอร์โบสท์ ขั้นตอนวิธีของไดก์สตรา

แหล่งที่มา

WikiPedia: ขั้นตอนวิธีโบรน-เคอร์โบสท์ ftp://ftp-sop.inria.fr/geometrica/fcazals/papers/n... http://www.kuchaev.com/files/graph.py http://www.dfki.de/~neumann/ie-seminar/presentatio... http://www.ams.org/mathscinet-getitem?mr=0182577 //arxiv.org/abs/1006.5440 //arxiv.org/abs/1103.0318 //doi.org/10.1007%2F978-3-642-17517-6_36 //doi.org/10.1007%2FBF00991836 //doi.org/10.1007%2FBF02760024 //doi.org/10.1016%2FS0304-3975(00)00286-3