Враховуючи спрямований ациклічний графік , чи можна ефективно підтримувати наступні операції?
- : Визначає, чи є шлях у G від вузла a до вузла b
- : додає ребро від a до b у графі G
- : Видаляє край від a до b в G
- : додає вершину до G
- : видаляє вершину з G
Кілька приміток:
- Якщо ми заборонили , здається, було б легко підтримувати інформацію про з'єднання, використовуючи структуру даних типу нерозділеного набору.
- Очевидно, що можна було б реалізувати, використовуючи пошук по глибині або вперше в широту, використовуючи наївне покажчикове представлення графіка. Але це неефективно.
Я сподіваюся на амортизований постійний або логарифмічний час для всіх трьох операцій. Чи можливо це?
remove
видаляє також падаючі краї? Якщо так, то вимагати, щоб ця операція була O (log n) часу, може бути занадто багато, щоб сподіватися….