Quali limiti possono essere applicati al conteggio dei nodi raggiungibili in un dag?


23

Dato è un male. Si desidera etichettare ciascun nodo in base al numero di nodi raggiungibili da esso. è un limite superiore banale; è un limite inferiore (penso). Esiste un algoritmo migliore? C'è motivo di credere che il limite inferiore possa essere migliorato (correlato: cosa si sa esattamente sui limiti inferiori per la chiusura transitiva)?Ω ( V + E )O(V(V+E))Ω(V+E)

Motivazione: ho dovuto farlo un paio di volte mentre rappresentavo le formule fol come un capriccio.

Modifica: Nota che semplicemente facendo conta i percorsi , non i nodi raggiungibili . (L'ho aggiunto perché apparentemente molte persone pensavano che questa semplice soluzione avrebbe funzionato con i voti che ho visto su una risposta ora cancellata.) In realtà, questo problema appare proprio quando vuoi fare qualcosa di interessante con parti 'condivise', nodi raggiungibili da più di un percorso. Inoltre, dico dag, perché se vengono risolti, allora risolvere digrafi è facile.cx=1+xycy


Questo sembra essere un caso speciale (impostando tutti i pesi su uno) di cstheory.stackexchange.com/questions/736/…
Suresh Venkat,

@Suresh: se pesi arbitrari rendono il problema più difficile, mi sembra un'altra domanda interessante.
Radu GRIGore,

Risposte:


10

La chiusura transitiva di un grafico diretto con bordi e n vertici può essere calcolata leggermente più velocemente del tempo O ( m n ) , ma non di molto. Un algoritmo O ( n 2 + m n / log n ) è menzionato in una nota a piè di pagina del documento WADS del 2005 su APSP (versione del diario di Algorithmica 2008). Un leggero miglioramento di O ( n 2 + m n log ( n 2 / m ) / log 2 nmnO(mn)O(n2+mn/logn) può essere trovato nel documento ICALP'08 "Un nuovo approccio combinatorio per i problemi dei grafici sparsi" di Blelloch, Vassilevska e Williams. Detto questo, non so se contare i discendenti sia più facile che trovarliO(n2+mnlog(n2/m)/log2n)


4
Inoltre, guarda l'articolo di Edith Cohen "Quadro di stima delle dimensioni con applicazioni per la chiusura e la raggiungibilità transitive". Fornisce un algoritmo randomizzato che stima in modo efficiente il numero di discendenti.
Virgi,

Si noti che questi risultati si applicano a tutti i grafici diretti, non solo ai DAG.
Tonfa,

Sì. Il risultato si applica anche alla versione ponderata menzionata in cstheory.stackexchange.com/questions/736/…
virgi

7

Penso che puoi usare la moltiplicazione matriciale per calcolare la chiusura transitiva del DAG e quindi usare il numero di vicini esterni come conteggi desiderati. Non sono un esperto di letteratura, ma penso che tu possa calcolare la chiusura transitiva contemporaneamente alla moltiplicazione di matrici, ovvero time: http://www.computer.org/portal/web/csdl/doi/10.1109/ ACSSC.1995.540810 .nω


Grazie, è interessante! Dovrei aggiungere che i segni che rappresentano le formule simboliche tendono ad essere scarsi, quindi sono un po 'più interessato a questo caso.
Radu GRIGore,

1

Forse non è utile nel tuo contesto, ma puoi ottenere un'approssimazione usando Synopsis Diffusion (http://www.cs.cmu.edu/~sknath/sd.htm). Penso che lo renda O (V + E). La simulazione della diffusione della sinossi su un uniprocessore mi sembra O (V + E), (devi prima fare un ordinamento topologico, che è anche O (V + E)).

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.