Ridurre l'utilizzo dello spazio della connettività st con più passaggi?


20

Supponiamo che un grafico con vertici sia presentato come un flusso di bordi, ma sono consentiti più passaggi sul flusso.Gnm

Monika Rauch Henzinger, Prabhakar Raghavan e Sridar Rajagopalan hanno osservato che lo spazio è necessario per determinare se esiste un percorso tra due vertici dati in , se i passaggi sono consentiti sui dati. (Vedi anche la versione del rapporto tecnico .) Tuttavia, non forniscono un algoritmo per raggiungere effettivamente questo limite. Suppongo che un algoritmo ottimale occupi effettivamente spazio in un modello di calcolo realistico, dal momento che uno deve distinguere diversi vertici se non è possibile indicizzare la memoria usando puntatori di dimensioni costanti.Ω(n/k)GkO((nlogn)/k)n

Come si può decidere la connettività del grafico con passaggi usando lo spazio ?kO((nlogn)/k)

Se è consentito un solo passaggio, i dati di input possono essere memorizzati come una partizione dell'insieme di vertici, unendo gli insiemi se si vede un bordo tra i vertici in due insiemi diversi. Ciò richiede chiaramente al massimo spazio . La mia domanda riguarda : come si possono usare più passaggi per ridurre lo spazio richiesto?O(nlogn)k>1

(A scanso di banalità, è un parametro che non può essere limitato a priori da una costante, e i limiti di spazio sono espressioni che coinvolgono funzioni di e .)knk


Aggiornamento: anche per sarebbe davvero utile avere un modo per memorizzare solo vertici. O esiste effettivamente un limite inferiore più forte per qualche costante , indipendentemente da ?k=2n/2cnck


Come indipendentemente da ? Se può essere molto grande, allora la connettività st può essere risolta nello spazio , quindi c'è una possibilità per un algoritmo, ma come mostrato da azotlichid, probabilmente non in . kO(log2n)O(nlogn/k)
domotorp,

Si noti che l'eliminazione del passaggio di Guha e McGregor per algoritmi randomizzati funziona nella direzione opposta, usando più spazio per consentire un minor numero di passaggi (sebbene lo spazio aggiuntivo sia grande se l'errore desiderato è piccolo). Questa domanda si chiede se utilizzando più passaggi, è possibile ridurre l'utilizzo dello spazio.
András Salamon,

Risposte:


8

È un problema aperto di vecchia data trovare un algoritmo per la connettività a st che gira nello spazio sub-lineare simultaneo e nel tempo polinomiale, un compito più facile di quello a cui stai mirando. Tali algoritmi sono noti per la versione non diretta , ma anche questi richiedono un grande tempo polinomiale (anziché O (km) che sarebbe implicito da un algoritmo k-pass). Vedi in particolare il riferimento al documento di Tompa sul perché il caso diretto sembra difficile.


1
M. Tompa, Due algoritmi di chiusura transitivi familiari che non ammettono tempi polinomiali, implementazioni di spazi sublineari , SIAM J. Comput. 11 (1), 130-137. dx.doi.org/10.1137/0211010
András Salamon,

Questo documento fornisce "un algoritmo per la connettività st che gira simultaneamente spazio sub-lineare e nel tempo polinomiale ".

4

Questa non è una risposta, ma volevo solo sottolineare che se riesci a risolvere questo problema per , allora risolvi la connettività st nello spazio e nel tempo ( che nel caso offline puoi fare con probabilità> 1/2 facendo una passeggiata casuale; ma sembra un po 'più difficile quando i bordi provengono da un flusso). Domanda molto interessante, IMO.k=Θ(n)O(logn)O(nm)


3

Yossi Shiloach, Uzi Vishkin. Un O (log n) Algoritmo di connettività parallela. J. Algorithms, 1982: 57 ~ 67 - Uno dei miei articoli preferiti. Sarebbe interessante se tu potessi farlo nello spazio O ((nlogn / k) / p) con processori p in round in cui ogni round a ciascun processore è consentito solo leggere in O (n / p) dei bordi.k


Grazie per il puntatore, questo è un documento interessante. I processori hanno accesso comune a una struttura di dati grande almeno quanto il grafico, quindi ciò non aiuta a ridurre l'utilizzo dello spazio. Sarebbe davvero interessante se ci fosse un modo per ridurre l'utilizzo dello spazio sfruttando il numero di round e il numero di processori.
András Salamon,

2

Ancora un'altra non risposta: ci sono alcuni documenti su algoritmi in stile mapreduce che operano su grafici di grandi dimensioni. L'obiettivo è ottenere lo spazio per macchina o (m) per i grafici densi, ma in genere è necessario lo spazio O (n) per macchina.

theory.stanford.edu/~sergei/papers/soda10-mrc.pdf http://theory.stanford.edu/~sergei/papers/spaa11-matchings.pdf


1

Inoltre non è una risposta, ma puoi decidere la connettività st nello spazio non deterministico di con passaggi. Indovina solo i primi nodi di un percorso e verifica che siano collegati al primo giro, quindi continua dall'ultimo di questi vertici e controlla il successivo dal percorso e così via.k n / k s t n / k n / k s tO(nlogn/k)kn/kstn/kn/kst

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.