มีอัลกอริทึมที่มีประสิทธิภาพในการรักษาข้อมูลการเชื่อมต่อสำหรับ DAG ต่อหน้า / ลบหรือไม่?
ด้วยกราฟ acyclic โดยตรงเป็นไปได้หรือไม่ที่จะสนับสนุนการดำเนินการต่อไปนี้ได้อย่างมีประสิทธิภาพ?G(V,E)G(V,E)G(V,E) : กำหนดถ้ามีเส้นทางใน GจากโหนดไปยังโหนดขisConnected(G,a,b)isConnected(G,a,b)isConnected(G,a,b)GGGaaabbb : เพิ่มขอบจาก aถึง bในกราฟ Glink(G,a,b)link(G,a,b)link(G,a,b)aaabbbGGG : ลบขอบจาก aถึง bใน Gunlink(G,a,b)unlink(G,a,b)unlink(G,a,b)aaabbbGGG : เพิ่มจุดสุดยอดไปที่ Gadd(G,a)add(G,a)add(G,a) : ลบจุดสุดยอดออกจาก Gremove(G,a)remove(G,a)remove(G,a) หมายเหตุเล็กน้อย: ถ้าเราไม่ได้รับอนุญาตดูเหมือนว่ามันจะเป็นเรื่องง่ายที่จะรักษาข้อมูลการเชื่อมโยงโดยใช้เคล็ดชุดชนิดโครงสร้างข้อมูลunlinkunlinkunlink เห็นได้ชัดว่าอาจจะดำเนินการโดยใช้ความลึกหรือกว้างแรกค้นหาโดยใช้แทนตัวชี้ตามที่ไร้เดียงสาของกราฟ แต่นี่ไม่มีประสิทธิภาพisConnectedisConnectedisConnected ฉันหวังว่าจะตัดจำหน่ายค่าคงที่หรือเวลาลอการิทึมสำหรับการดำเนินการทั้งสามนี้ เป็นไปได้ไหม