Biconnectedness (ค่ายวันที่ 11 มีนาคม 2551)
กำหนด undirected graph ซึ่งเป็นกราฟต่อเนื่อง ใดๆ
- เราเรียก vertex ว่าเป็น articulation point ถ้่าเราตัด และ edge ที่ต่อกับมันทั้งหมดออกไปออกจากกราฟแล้วจะทำให้กราฟเป็นกราฟไม่ต่อเนื่อง
- เราเรียก edge ว่าเป็น bridge ถ้าเราตัด ออกจากกราฟแล้วจะทำให้กราฟเป็นกราฟไม่ต่อเนื่อง
- เรากล่าวว่า edge สอง edge ใดๆ อยู่ใน biconnected component เดียวกันก็ต่อเมื่อมี simple cycle ที่มี edge ทั้งสองนั้นอยู่ภายใน
จะเห็นได้ว่าความสัมพันธ์ "อยู่ใน biconnected component เดียวกัน" จะแบ่ง edge ออกเป็นกลุ่มๆ ซึ่งเราเรียกกลุ่มเหล่านั้นว่า biconnected component (นั่นแหละ)
ภาพต่อไปนี้แสดง articulation point (vertex สีแดง), bridge (edge เล็กบางสีแดง), และ biconnected component (edge ที่ไม่ใช่ bridge ที่อยู่ใน biconnected component เดียวกัน จะมีสีเดียวกัน) ของกราฟต่อเนื่องกราฟหนึ่ง
การหา articulation point
เราสามารถหา articulation point ทั้งหมดของกราฟที่กำหนดให้ได้ในเวลา โดยการทำ DFS เพื่อคำนวณข้อมูลเสริมบางอย่างของ vertex ทุก vertex ในกราฟ หลังจากนั้น เราจะนำข้อมูลนี้ไปประกอบการตัดสินใจว่า vertex ที่กำหนดให้เป็น articulation point หรือเปล่า
ก่อนจะมาพูดถึงนิยามของข้อมูลเสริมนี้ เรามาสังเกตกันก่อนว่าการที่ vertex ใด ในกราฟจะเป็น articulation point หรือไม่มันจะต้องมีสมบัติอย่างไร ในที่นี้ เราจะสมมติว่าเราได้ทำ DFS บนกราฟนี้ครั้งหนึ่งแล้ว และเราจะแยกการพิจารณาเป็นสองกรณี
- เป็น root ของ DFS tree
- สังเกตว่าถ้า root มีลูกมากกว่าหนึ่งตัว และถ้าเราตัด root ทิ้ง กราฟจะขาดออกเป็นอย่างน้อยสองส่วนที่ไม่ต่อเนื่องกัน ด้วยเหตุนี้ root ของ DFS tree จะเป็น articulation point ก็ต่อเมื่อมันมีลูกอย่างน้อยสองตัวเท่านั้น