Existe-t-il un algorithme pour maintenir efficacement les informations de connectivité d'un DAG en présence d'insertions / suppressions?

17

Étant donné un graphe acyclique dirigé, , est-il possible de supporter efficacement les opérations suivantes?g(V,E)

  • : détermine s'il existe un chemin dans G du noeud a au noeud bjesConnecte(g,une,b)guneb
  • : Ajoute une arête de a à b dans le graphe Gljenk(g,une,b)abG
  • : supprime le bord de a à b dans Gunlink(G,a,b)abG
  • : ajoute un sommet à Gadd(G,a)
  • : Supprime un sommet de Gremove(G,a)

Quelques notes:

  • Si nous refusions , il semble qu'il serait facile de maintenir les informations de connectivité, en utilisant une structure de données de type ensemble disjoint.unlink
  • De toute évidence, pourrait être implémenté en utilisant une recherche en profondeur ou en largeur, en utilisant la représentation naïve basée sur un pointeur du graphique. Mais c'est inefficace.isConnected

J'espère un temps constant ou logarithmique amorti pour les trois opérations. Est-ce possible?

Justin Kilpatrick
la source
3
Connexes: la version du graphique non orienté a déjà été demandée. Existe-t-il un algorithme en ligne pour suivre les composants dans un graphique non orienté changeant?
Tsuyoshi Ito le
1
Pourriez-vous expliquer comment résoudre le cas le plus simple (sans dissociation) à l'aide d'une structure de données de type ensemble disjoint?
jbapple
@Tsuyoshi - les liens sur cette question semblent intéressants, je les regarde maintenant.
Justin Kilpatrick
(1) Vous recherchez un algorithme de graphe dynamique pour une accessibilité dirigée avec la restriction que le graphe est un DAG. Si je ne me trompe pas, l'accessibilité dirigée dynamique est beaucoup plus difficile que l'homologue non orienté, mais ici la propriété DAG pourrait aider. (2) removeSupprime également les bords incidents? Si c'est le cas, exiger que cette opération soit en temps O (log n) pourrait être trop à espérer….
Tsuyoshi Ito le

Réponses:

19

Le problème que vous avez décrit est l'accessibilité DAG entièrement dynamique (également appelée fermeture transitive entièrement dynamique sur les DAG). On l'appelle entièrement dynamique car les gens étudient également les versions où seules les suppressions sont possibles (alors cela s'appelle l'accessibilité décrémentielle), et où seules les insertions sont possibles (appelées l'accessibilité incrémentielle).

Il existe quelques compromis entre l'heure de mise à jour et l'heure de la requête. Soit le nombre d'arêtes et n le nombre de sommets. Pour les DAG, Demetrescu et Italiano (FOCS'00) ont donné une structure de données randomisée qui prend en charge les mises à jour (insertions ou suppressions de bords) en O ( n 1,58 ) et les requêtes d'accessibilité en O ( n 0,58 ) (les insertions / suppressions de nœuds sont également prises en charge , en temps O (1)); ce résultat a été étendu par Sankowski (FOCS'04) pour travailler sur des graphiques orientés généraux. Aussi pour les DAG, Roditty (SODA'03) a montré que vous pouvez maintenir la matrice de fermeture transitive dans le temps total O ( m n + I · n 2 + D ), oùmnn1,58n0,58mn+je·n2+ est le nombre d'insertions, D le nombre de suppressions et bien sûr le temps de requête est O ( 1 ).je1

Pour les graphiques orientés généraux, les heures suivantes (mise à jour, requête) sont connues: (O ( ), O (1)) (Demetrescu et Italiano FOCS'00 (amorti), Sankowski FOCS'04 (pire cas)), ( O ( m n2 ),O(mn )) (Roditty, Zwick FOCS'02), (O (m+nlogn), O (n)) (Roditty, Zwick STOC'04), (O (n 1,58 ), O (n 0,58 )) et (O (n 1.495 ), O (n 1.495 )) par Sankowski (FOCS'04).O(nm+nJournalnnn1,58n0,58n1,495n1,495

L'obtention d'un temps de requête polylogarithmique, sans augmenter trop le temps de mise à jour est un problème majeur, même pour les DAG.

virgi
la source
1
Merci pour votre réponse. Même si je dois dire que je suis déçu de la pauvreté de ces limites. :(
Justin Kilpatrick
1
Une question connexe: pourriez-vous me diriger vers des références sur les problèmes plus simples, l'accessibilité incrémentielle et l'accessibilité décrémentielle pour les DAG?
Justin Kilpatrick
Cela ne semble pas beaucoup mieux que l'approche DFS naïve (O(1),O(n^2))ou (O(m),O(n+m)).
Thomas Ahle
4

O(n0,58)O(n1,58)

(Cela ne couvre que la première version de votre question, avec linket unlinkmais sans addet remove.)

jbapple
la source
Les limites sont basées sur l'algorithme de Strassen, donc la constante est énorme.
Thomas Ahle