Come affrontare i problemi relativi ai grafici dinamici


15

Ho fatto questa domanda a StackOverflow generico e sono stato diretto qui.

Sarebbe bello se qualcuno potesse spiegare come affrontare problemi grafici parziali o completamente dinamici in generale.

Per esempio:

  • Trova il percorso più breve tra due vertici in un grafico ponderato non indirizzato per n istanze, quando un bordo viene rimosso in ciascuna istanza.(u,v)n
  • Trova il numero di componenti collegati in un grafico non orientato per n istanze quando un bordo viene rimosso in ogni istanza, ecc.

Di recente ho riscontrato questo genere di problemi in un concorso di programmazione. Ho cercato attraverso il web e ho trovato molti articoli di ricerca riguardanti i grafici dinamici [1,2]. Ne ho letto un paio e non sono riuscito a trovare nulla di diretto (clustering, sparsificazione, ecc.). Scusa per essere vago.

Apprezzo molto se alcuni possono fornire indicazioni per comprendere meglio questi concetti.


  1. Algoritmi grafici dinamici di D. Eppstein, Z. Galil, GF Italiano (1999)
  2. Percorsi più brevi su grafici dinamici di G. Nannicini, L. Liberti (2008)

Risposte:


12

È difficile darti tecniche concrete perché "dinamico" potrebbe significare una grande varietà di cose e gli algoritmi / risultati dipendono dal tuo modello. Di seguito è una panoramica delle preoccupazioni. Ecco un documento che offre una panoramica di alcune preoccupazioni e modelli diversi (relativi a ciò che Peter ha citato in un'altra risposta).


Per problemi dinamici in generale, i problemi chiave sono:

  • vuoi una soluzione esatta in tutti i casi o è consentita l'approssimazione?
  • sai qualcosa su quali cambiamenti si verificheranno (ad esempio una distribuzione di probabilità) o sono tutti ugualmente probabili?
  • in che modo l'algoritmo viene a conoscenza delle modifiche?

Un tipico modello dinamico è simile al seguente:

  1. Dato un grafico, si desidera calcolare alcune proprietà. È consentito calcolare una soluzione per il grafico iniziale.

  2. Viene quindi visualizzata una modifica: il bordo viene eliminato. Calcola la proprietà sul nuovo grafico usando risorse limitate .(e,f)

  3. Ripeti 2 per volte.n

E qui ci sono 3 possibili modifiche:

  • Non sei autorizzato a calcolare la soluzione completa all'inizio a causa delle limitazioni di informazioni / tempo / spazio (un esempio dei quali sono gli algoritmi online )

  • Nel passaggio 2, l'algoritmo non viene "informato" della modifica, ma deve trovare la modifica nel grafico eseguendo una query su una struttura di dati o qualcosa del genere.

  • Un modello distribuito (come Peter discute in un'altra risposta), in cui le informazioni vengono scoperte localmente e il calcolo / le modifiche vengono effettuate localmente.

I modelli dinamici sono in genere interessanti a causa delle limitazioni delle risorse (ad es. Tempo / spazio). Nel passaggio 2, se mi è stato permesso di calcolare una risposta completa (come ho fatto nel passaggio 1), il problema è semplice, dal momento che è solo un problema di grafico statico ripetuto . Siamo più interessati alla minima quantità di risorse necessarie per calcolare la modifica.


Grazie mille per la risposta Stavo cercando di capire le complessità e i modi per risolvere un semplice problema grafico parzialmente dinamico.
Prakash,

Grazie mille per la risposta Esaminerò i documenti. Stavo cercando di capire le complessità e i modi per risolvere un semplice problema grafico parzialmente dinamico. Ad esempio, Dato un insieme di città, collegate da strade, non dirette e ponderate dalla distanza. Trova il percorso più breve tra 2 città, in n istanze, quando una strada è bloccata in ciascuna istanza per vari motivi. L'esecuzione di Dijkstra per esempio non è pratica, c'è un modo per adattare gli algoritmi esistenti come A * per risolvere questi problemi con un migliore limite di tempo o gli approcci discussi nei documenti sono l'unica strada da percorrere.
Prakash,

A * è una generalizzazione di Dijkstra + euristica; le prestazioni sono simili nel peggiore dei casi. Per me, la domanda importante per il tuo problema è "che tipo di informazioni puoi archiviare tra le istanze che renderanno più veloce la prossima istanza?" Ad esempio, se memorizzo il percorso più breve precedente, sarò in grado di scoprire rapidamente se "non è riuscito", ma non esiste un modo ovvio per calcolare il percorso più breve successivo. (Anche se memorizzi k percorsi più brevi dell'istanza precedente, sospetto che ciò valga per qualsiasi k.)
Lucas Cook,

(Il mio commento precedente parla principalmente di soluzioni nel caso peggiore. Forse ti interessa il caso medio? Quindi potrebbe esserci un euristico che rende un buon tipo di soluzione A *.)
Lucas Cook

10

I modelli di grafici dinamici sono stati studiati intensamente nel calcolo distribuito. Per gli algoritmi distribuiti, il calcolo è strutturato in round e la topologia dei grafici (= rete) potrebbe subire alcune modifiche da round a round, che sono sotto il controllo di un avversario. Inoltre, ogni nodo del grafico esegue un algoritmo che può inviare un messaggio ai suoi vicini (attuali!). (Questo messaggio è l'input dell'algoritmo dei vicini nel prossimo round.) Ciò che rende le cose interessanti è che un nodo non "vede" l'intero grafico ma solo il suo quartiere locale.

I problemi considerati in queste impostazioni sono, ad esempio, la diffusione di informazioni in cui ogni nodo nel grafico inizialmente contiene un token e alla fine si desidera che ogni nodo abbia visto ogni token. L'obiettivo è progettare algoritmi che raggiungano questo obiettivo nel minor numero di round, utilizzando il minor numero di messaggi. Vedi [2] per un recente sondaggio.

Per l'impostazione non distribuita, potresti voler guardare [1], che è un'estensione del documento che hai citato.


[1] Aris Anagnostopoulos, Ravi Kumar, Mohammad Mahdian, Eli Upfal, Fabio Vandin: Algoritmi su grafici in evoluzione . ITCS 2012: 149-160

[2] Fabian Kuhn, Rotem Oshman: reti dinamiche: modelli e algoritmi . SIGACT News 42 (1): 82-96 (2011)


Quegli algoritmi per il passaggio di messaggi non hanno problemi di (mancanza di) convergenza?
Raffaello

Non sono sicuro di aver capito cosa intendi con "convergenza". Fintanto che il grafico rimane connesso in ogni round, il numero di nodi che hanno visto un token specifico t aumenterà di almeno 1. Quindi dopo n round tutti avranno visto t, indipendentemente da come l'avversario cambi la topologia.
Peter,

Stavo pensando al problema del conteggio all'infinito causato dal cambiamento della topologia.
Raffaello

@Raphael Nella dinamica distribuita, i ricercatori di solito stanno indagando su quali proprietà possono essere garantite nel peggiore dei casi entro un determinato periodo di tempo. Pertanto, la "convergenza" non può essere garantita per il vettore di distanza / Bellman-Ford a causa di problemi fondamentali con la tecnica in un ambiente dinamico. Esistono altri protocolli di routing convergenti che non presentano il problema di conteggio all'infinito.
Lucas Cook,

3

Basandosi sulle risposte di @Peter (è un commento molto lungo, quindi ho appena incluso come risposta un salto che qualcuno ne trarrà beneficio).

Vorrei suggerire il seguente riferimento:

Arnaud Casteigts, Paola Flocchini, Walter Quattrociocchi, Nicola Santoro: grafici variabili nel tempo e reti dinamiche. IJPEDS 27 (5): 387-408 (2012)

Il sondaggio include una classificazione teorica delle reti dinamiche in contesti distribuiti. Ad esempio, è possibile trovare grafici in cui l'aspetto dei bordi segue uno schema periodico. Oppure, i bordi vengono visualizzati almeno una volta in un puntoΔ. Oppure, i bordi che non seguono alcun picchiettio periodico ma verranno visualizzati in qualche punto dell'esecuzione dell'algoritmo. - e ci sono circa 9 lezioni in totale.

Ciò che è veramente importante di questa classificazione è che ci sono relazioni di inclusione tra le diverse classi. Quindi se risolvi un problema in una determinata classe, lo risolveresti in ogni altra classe in cui è incluso.

Gli stessi autori hanno presentato algoritmi di trasmissione su alcuni dei grafici citati. Hanno fornito diverse metriche di prestazione relative al tempo (ovvero diversa definizione del tempo più breve). Nel broadcasting, l'idea è che ogni nodo costruisca una vista della rete nel dominio del tempo. Questo viene fatto ascoltando ripetutamente i vicini e inviando informazioni ai vicini. Se si assume la periodicità, un nodo può dire qual è il percorso temporale più breve verso un altro nodo. Usa queste informazioni nel routing. Maggiori dettagli sono disponibili in:

Arnaud Casteigts, Paola Flocchini, Bernard Mans, Nicola Santoro: calcoli deterministici in grafici che variano nel tempo: trasmissione sotto mobilità non strutturata. IFIP TCS 2010: 111-124

Uno dei concetti interessanti nei grafici dinamici è il concetto di viaggio, che ha un'analogia con il percorso nei grafici statici. C'è un viaggio tra due nodiu e v se è presente una serie di bordi {(u,X1),(X1,X2),....,(XK,v)}che apparirà in intervalli di tempo crescenti. Si noti che il viaggio non è simmetrico. L'esistenza di un viaggio trau e v non significa necessariamente che c'è un viaggio tra v e u.

Ho partecipato a una conferenza degli autori precedenti. Secondo la mia comprensione, sostengono che siamo lungi dall'essere in grado di gestire algoritmi grafici dinamici (seguendo le definizioni che seguono). Che siamo ancora nel caso di lezioni semplici. In realtà, sostengono che la maggior parte degli algoritmi di mobile computing presuppone che i loro algoritmi siano troppo veloci per essere eseguiti mentre la rete è in transizione! (che credo di aver sentito molto) - O semplicemente, presumi la periodicità dell'aspetto dei bordi (vedi reti tolleranti al ritardo ecc.)

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.