Algoritmo esatto per problemi di etichettatura dei bordi in DAG


14

Sto implementando una parte del sistema che richiede un aiuto. Pertanto lo sto inquadrando come un problema grafico per renderlo indipendente dal dominio.

Problema: ci viene dato il grafico aciclico diretto G=(V,E) . Senza perdita di generalità supporre che sol ha esattamente un vertice sorgente S ed esattamente un vertice sink t ; lasciare P denota l'insieme di tutti i percorsi diretti da S a t in sol . Stiamo anche dato un insieme di vertici RV . Il problema è assegnare pesi interi non negativi ai bordi di G , quindi due percorsi in P hanno lo stesso peso se e solo se contengono lo stesso sottoinsieme di vertici in . (Il peso di un percorso è la somma dei pesi dei suoi bordi.) L'intervallo dei pesi dei percorsi in P dovrebbe essere il più piccolo possibile.RP

Attualmente il mio approccio non sembra efficiente; Sto solo cercando alcuni riferimenti alla letteratura o alcune buone intuizioni. Anche qualsiasi altra cosa è apprezzata.

Modifica: esiste una prova di durezza per questo problema? La numerazione compatta esiste sempre?


4
si prega di chiarire "La gamma di pesi dei percorsi in P dovrebbe essere ottimale." I pesi sono solo numeri interi? Sono ammessi pesi negativi? Ottimale significa "un intervallo il più piccolo possibile" o significa qualcos'altro?
Artem Kaznatcheev

2
ho modificato la domanda. grazie per il tuo commento. i pesi dovrebbero essere numeri interi non negativi e l'intervallo dovrebbe essere il più piccolo possibile.
user5153

5
Una strategia semplice per trovare una soluzione valida sarebbe quella di assegnare una diversa potenza di due a ciascun vertice v in R, utilizzare quel numero come peso di tutti i bordi in entrata su v e assegnare il peso zero a tutti i bordi rimanenti. Ovviamente, questo potrebbe non essere ottimale, ma almeno fornisce un limite superiore all'intervallo necessario. È mai un miglioramento far sì che bordi diversi attraverso lo stesso vertice in R abbiano pesi diversi l'uno dall'altro, oppure è possibile semplificare il problema facendo andare i pesi con vertici anziché bordi?
David Eppstein,

3
A proposito, la risposta di DavidEppstein mostra che il peso totale massimo di un percorso è . Questo è stretto alle costanti. Ad esempio, puoi prendere il grafico G = ( V , E ) , V = [ n ] { s , t } ed E = { ( i , j ) : i < j } { ( s , 1 ) ,O(2|R|)sol=(V,E)V=[n]{S,t} . Sia anche R = [ n ] . Ci sono 2 n percorsi diversi su R , e poiché ogni percorso ha un peso intero non negativo, almeno uno deve avere un peso di almeno 2 n - 1 . E={(io,j):io<j}{(S,1),(n,t),(S,t)}R=[n]2nR2n-1
Sasho Nikolov,

1
certo, volevo dire stretto nel caso peggiore (in realtà l'ho scritto nella prima versione di questo commento che mi ero perso). ho pensato che sarebbe stato bene definire prima alcuni limiti assoluti, dal momento che nessuno ha ancora affrontato il problema dell'ottimizzazione.
Sasho Nikolov,

Risposte:


-6

non ho sentito parlare di questo problema esattamente in letteratura [forse qualcun altro ha] tuttavia, come "problema vicino", mi sembra che l' albero di spanning minimo avrebbe proprietà utili per risolvere il tuo problema. ad esempio, forse la generazione di due alberi di spanning minimi a partire dal vertice di origine e dal vertice di sincronizzazione e la loro propagazione verso l'esterno fino a quando non si toccano, ecc. potrebbe risolvere il problema o fornire una risposta ravvicinata. prima che qualcuno mi dica su questo qui per favore capisco che sto estendendo un po 'l'idea dell'MST da generare a partire da un dato vertice [normalmente inizia dal bordo più corto dell'intero grafico]. se non funziona Id essere curioso per il motivo.


5
Siamo spiacenti, ma non vedo la pertinenza di questa risposta a questa domanda.
David Eppstein,

forse hai un'idea migliore di cosa sta parlando? ha senso per te come affermato?
vzn,

1
Deve assegnare pesi ai bordi. In che modo sarebbe utile calcolare un MST?
Nicholas Mancuso,

ok leggendolo, e senza che nessun altro proponesse una risposta, sembrava che il problema potesse essere convertito in due parti: (1) assegnare pesi in base a criteri / restrizioni, (2) trovare percorsi più brevi basati su quei pesi. sembra che MST potrebbe essere utile su (2). o forse no! (es. forse 1/2 sono strettamente accoppiati)
vzn

1
No. Gli spanning tree minimi sono solo per i grafici non indirizzati; il grafico di input è diretto. Inoltre, gli alberi di spanning minimi sono solo superficialmente correlati ai percorsi più brevi.
Jeffε
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.