Ho un DAG con N nodi, ovvero 1, 2, ..., N
e ogni nodo ha un peso (possiamo chiamarlo ora) x_1, x_2, ..., x_N
. Voglio fare uno smistamento topologico, ma la difficoltà è che ho una funzione obiettiva durante l'ordinamento. La mia funzione obiettivo è di ridurre al minimo il tempo totale tra diverse coppie di nodi.Ordinamento topologico con funzione obiettivo
Ad esempio, ho un DAG con 6 nodi, e voglio uno specifico ordinamento topologico tale che (1,3) + (2,4)
è minimizzata, dove (A,B)
indica il tempo tra due nodi A e B. Per esempio, se abbiamo una sorta [1, 6, 3, 2, 5, 4, 7]
, (1,3) = x_6
e (2,4) = x_5
. Sulla base del DAG, voglio trovare un ordinamento che riduca al minimo lo (1,3) + (2,4)
.
Ho pensato questo problema per un po '. Generare tutti i tipi topologici possibili (riferimento link) e calcolare la funzione obiettivo uno per uno è sempre una soluzione possibile ma richiede troppo tempo se N è grande. Mi è stato anche suggerito di usare l'eliminazione ramificata quando si generano tutti i tipi possibili (non sono molto familiare, ma credo che non ridurrai drasticamente la complessità).
Qualsiasi algoritmo (ottimale o euristico) per questo tipo di problema? Sarebbe perfetto se l'algoritmo potesse essere applicato anche ad altre funzioni oggettive come minimizzare il tempo di avvio totale per alcuni nodi. Qualsiasi suggerimento è apprezzato.
PS: O in alternativa, è possibile formulare questo problema come un problema di ottimizzazione dei numeri interi?
Sospetto che questo il problema è difficile, perché 2 piccole variazioni di esso sono sicuramente: (1) Se la * somma * delle distanze viene sostituita con il * massimo * di distanze, allora puoi ridurre il problema della minimizzazione dell'ampiezza di banda NP-hard a questo problema (partendo da il grafo di input G, cancella tutti i bordi e aggiungi un singolo vertice di root con un out-edge a ogni altro vertice - questo significa che * qualsiasi * ordinamento dei vertici originali è un ordine topologico valido - e per ciascun bordo (u , v) in G (che hai eliminato), aggiungi un termine '(u, v)' alla funzione obiettivo da minimizzare); ... –
... (2) se si mantiene invece la somma (piuttosto che il massimo) delle distanze tra le coppie, ma si generalizza leggermente la funzione obiettivo per consentire ogni termine (ad esempio '(1,3)' o '(2, 4) 'nel tuo esempio) da moltiplicare per un peso separato, quindi puoi ridurre il Problema di Assegnazione Quadratica NP-difficile a questo problema allo stesso modo. Può darsi che persino il caso speciale del QAP in cui ogni peso è 1 sia ancora NP-difficile - ciò implicherebbe anche il tuo problema - ma non ero in grado di confermarlo con alcuni googles. –
@ j_random_hacker. Grazie per la tua risposta. Credo anche che questo problema sia NP-difficile. Mi sono reso conto che il mio problema è simile al problema del venditore ambulante. Non sono a conoscenza del problema di Assegnazione quadratica e problema di riduzione della larghezza di banda. Grazie per aver portato la connessione. Ho già progettato un metodo euristico per questo problema. Tuttavia, sto cercando una formulazione di ottimizzazione combinatoria in modo tale che si possa applicare il branch-and-bound per ottenere la soluzione ottimale per un confronto del mio metodo euristico. – MIMIGA