Ho la sensazione che potrebbe esserci una soluzione lungo le linee seguenti, ma questa non è affatto una soluzione completa.
Sia S un sottoinsieme di vertici. Per ogni vertice V nel grafico, considera l'insieme D_S (V), che definisco come segue: D_S (V) = {V} se V in S, e in caso contrario, D_S (V) è l'unione di {V} con gli insiemi D_S (W) per tutti i discendenti diretti W di V. (Cioè, è "tutti i discendenti finali di V, ma fermano la ricorsione ogni volta che si preme un elemento di V".) La domanda è: possiamo trovare un set S tale che la dimensione di S sia O (f (N)) e anche D_S (V) sia di dimensione O (g (N)) per tutto V, e dove f e g siano asintoticamente sublimatici? (Forse possiamo ottenere sqrt per entrambi, per esempio.)
Se possiamo trovare questo, quindi suggerisco la seguente strategia. Per la pre-elaborazione, creare per ogni U in S una tabella hash contenente tutti i vertici alla fine raggiungibili da U. Ciò può essere ottenuto in O (f (N) * M); questo non è necessariamente migliore di O (N^2), ma meglio di O (M * Q) almeno.
Ora per rispondere a una query "è U raggiungibile da V?", Questo è banale se V in S. Altrimenti, verifichiamo se V = U, nel qual caso è anche banale. Infine, applichiamo lo stesso processo a tutti i discendenti di V, in modo ricorsivo, restituendo "sì" se la risposta è "sì" attraverso uno dei due casi sopra, ma "no" solo se non troviamo mai U. Questa ricorsione richiede O (g (N)) passi.
La domanda che rimane è come scegliere S. Penso che se il grafico deriva da un processo in cui l'out-degree segue una legge di potenza, uno potrebbe semplicemente prendere i vertici sqrt (N) con gli out-gradi più alti.Ma per esempio se abbiamo il grafico su N = 2 * K vertici (i, 0) e (i, 1), con bordi K^2: da ciascuno (i, 0) a ciascuno (j, 1); allora non esiste un sottoinsieme adatto S. Ma forse i grafici che non hanno un S adatto hanno necessariamente un grado di uniformità che possiamo sfruttare ... O forse no. Non lo so. Qualche idea, fammi sapere!
fonte
2015-09-05 20:39:35
Anche in un DAG, potrebbero esserci bordi "O (n^2)" (a meno che non sia dato che il grafico sia scarsamente occupato), quindi stai cercando il tempo sub-lineare, in realtà ... E 'questa domanda può essere facilmente risolto in O (n) 'No, per lo stesso motivo. – amit
Il mio male. Intendevo O (n + m). – Badf
Le interrogazioni sono consultabili offline? –