Esiste un algoritmo per mantenere in modo efficiente le informazioni di connessione per un DAG in presenza di inserti / eliminazioni?


17

Dato un grafico aciclico diretto, , è possibile supportare in modo efficiente le seguenti operazioni?sol(V,E)

  • ioSConnected(sol,un',B) : determina se esiste un percorso in sol dal nodo un' al nodo B
  • lionK(sol,un',B) : aggiunge un bordo da un' a B nel grafico sol
  • unlionK(sol,un',B) : rimuove il bordo da un' a B in sol
  • un'dd(sol,un') : aggiunge un vertice a G
  • remove(sol,un') : rimuove un vertice da G

Alcune note:

  • Se non consentissimo il non unlionK , sembra che sarebbe facile mantenere le informazioni di connessione, usando una struttura di dati di tipo disgiunto.
  • Ovviamente, potrebbe essere implementato usando la profondità o l'ampiezza della ricerca, usando l'ingenua rappresentazione del grafico basata su puntatore. Ma questo è inefficiente.ioSConnected

Spero in tempo ammortizzato costante o logaritmico per tutte e tre le operazioni. È possibile?


3
Correlati: la versione non indirizzata del grafico è stata richiesta in precedenza. Esiste un algoritmo online per tenere traccia dei componenti in un grafico non indirizzato che cambia?
Tsuyoshi Ito,

1
Potresti spiegare come risolvere il caso più semplice (senza scollegare) utilizzando una struttura dati di tipo disgiunto?
jbapple,

@Tsuyoshi - i link su quella domanda sembrano interessanti, ora li sto dando un'occhiata.
Justin Kilpatrick,

(1) Stai cercando un algoritmo grafico dinamico per la raggiungibilità diretta con la limitazione che il grafico è un DAG. Se non sbaglio, la raggiungibilità diretta dinamica è molto più difficile della controparte non indirizzata, ma qui la proprietà DAG potrebbe aiutare. (2) Rimuove removeanche i bordi degli incidenti? In tal caso, richiedere che tale operazione sia il tempo O (log n) potrebbe essere troppo da sperare….
Tsuyoshi Ito,

Risposte:


19

Il problema che hai descritto è la raggiungibilità dei DAG completamente dinamica (definita anche chiusura transitiva completamente dinamica sui DAG). Si chiama completamente dinamico poiché le persone studiano anche le versioni in cui sono possibili solo eliminazioni (quindi si chiama raggiungibilità decrementale) e dove sono possibili solo inserzioni (chiamate raggiungibilità incrementale).

Esistono alcuni compromessi tra il tempo di aggiornamento e il tempo di query. Sia il numero di spigoli e n il numero di vertici. Per i DAG, Demetrescu e Italiano (FOCS'00) hanno fornito una struttura di dati randomizzata che supporta aggiornamenti (inserimenti o eliminazioni di bordi) in tempo O ( n 1.58 ) e query di raggiungibilità in tempo O ( n 0,58 ) (sono supportati anche inserimenti / eliminazioni di nodi , in O (1) tempo); questo risultato è stato esteso da Sankowski (FOCS'04) per lavorare con grafici diretti generali. Anche per i DAG, Roditty (SODA'03) ha dimostrato che è possibile mantenere la matrice di chiusura transitiva nel tempo totale O ( m n + I · n 2 + D ), dovemnn1.58n0.58mn+io·n2+D è il numero di inserimenti, D il numero di eliminazioni e, naturalmente, il tempo di query è O ( 1 ).ioD1

Per i grafici diretti generali, sono noti i seguenti tempi (aggiornamento, query): (O ( ), O (1)) (Demetrescu e Italiano FOCS'00 (ammortizzato), Sankowski FOCS'04 (caso peggiore)), ( O ( m n2 ),O(mnO(nm+nlognnn1.58n0.58n1.495n1.495

Ottenere un tempo di interrogazione pollogaritmica, senza aumentare troppo il tempo di aggiornamento è un grosso problema aperto, anche per i DAG.


1
La ringrazio per la risposta. Anche se devo dire che sono deluso da quanto poveri siano questi limiti. :(
Justin Kilpatrick

1
Una domanda correlata: potresti indicarmi eventuali riferimenti sui problemi più semplici, la raggiungibilità incrementale e la raggiungibilità decrescente per i DAG?
Justin Kilpatrick,

Questo non sembra molto meglio dell'approccio ingenuo dfs (O(1),O(n^2))o (O(m),O(n+m)).
Thomas Ahle,

4

O(n0.58)O(n1.58)

(Questo copre solo la prima versione della tua domanda, con linke unlinkma senza adde remove.)


I limiti sono basati sull'algoritmo di Strassen, quindi la costante è enorme.
Thomas Ahle,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.