Ordinamento topologico positivo


45

Supponiamo di avere un grafico aciclico diretto con pesi in numero reale sui suoi vertici. Voglio trovare un ordinamento topologico del DAG in cui, per ogni prefisso dell'ordine topologico, la somma dei pesi non sia negativa. Oppure, se preferisci la terminologia teorica dell'ordine, ho un ordine parziale ponderato e voglio un'estensione lineare tale che ogni prefisso abbia un peso non negativo. Cosa si sa di questo problema? È NP-completo o risolvibile in tempi polinomiali?


4
Prova l'algoritmo goloso su questo grafico: 1 -> 2 -> 3, 1 -> 4 -> 5, i pesi dei vertici sono 1: +2, 2: -2, 3: +3, 4: -1 , 5: -2. L'algoritmo greedy inizierà con v1, quindi scegli v4 e rimarrà bloccato. L'ordine corretto è v1, v2, v3, v4, v5.
Robin Kothari,

2
"alcuni dei problemi di distanza di Frechet che JeffE e altri hanno osservato" - Bella astrazione! A beneficio di altri, ecco una versione: supponiamo che ti venga dato un grafico piano ponderato per il bordo G e due vertici se sulla faccia esterna. Volete trasformare un percorso limite da s a t nell'altro mediante una sequenza di mosse elementari. Ogni mossa sostituisce il percorso corrente con la sua differenza simmetrica con un contorno della faccia. Quanto velocemente possiamo trovare la sequenza mve che minimizza la lunghezza massima del percorso in evoluzione?
Jeffε

3
Tsuyoshi, mi dispiace, ho provato ad aggiungere una nuova riga mentre commentavo e il mio commento è stato interrotto. Quindi l'idea è, hai una corda legata strettamente al polso e vuoi sapere se riesci a strapparla via. Il tuo polso è rappresentato da una maglia poligonale, le cui cellule sono elementi di un ordine parziale (più vicino alla corda prima, più vicino alla fine più tardi nell'ordine). Il peso di una cellula è la differenza di lunghezza tra i suoi confini interni ed esterni.
David Eppstein,

1
@ David: grazie per la spiegazione. Questa volta riesco a capire come è correlato alla domanda attuale ed è interessante!
Tsuyoshi Ito,

3
Un'osservazione non così utile ma divertente: questo problema equivale al problema del sequenziamento a macchina singola con scadenze e vincoli di precedenza in cui il tempo di elaborazione di ciascun lavoro può essere negativo . Con tempo di elaborazione non negativo, questo problema si trova in P (Lawler e Mooer 1969 jstor.org/stable/2628367 ) e se esiste una soluzione, esiste una soluzione che è indipendente dal tempo di elaborazione. Ciò si interrompe chiaramente se alcuni lavori hanno tempi di elaborazione negativi.
Tsuyoshi Ito,

Risposte:


18

Questo problema sembra essere molto simile a SEQUENCING PER MINIMIZZARE IL COSTO CUMULATIVO MASSIMO, problema [SS7] in Garey & Johnson . Per dire:

ISTANZA: impostare di attività, ordine parziale su , un "costo" per ogni (se , può essere visto come un "profitto") , e una costante .T c ( t ) Z t T c ( t ) < 0 K ZTTc(t)ZtTc(t)<0KZ

DOMANDA: Esiste un programma a un processore per che obbedisce ai vincoli di precedenza e che ha la proprietà che, per ogni attività , la somma dei costi per tutte le attività con è al massimo ?T t T t σ ( t ) σ ( t ) KσTtTtσ(t)σ(t)K

Sono incerto se il problema rimane NP-completo quando è fissato a 0. G & J menzione che il problema rimane NP-completo se per tutti .c ( t ) { - 1 , 0 , 1 } t TKc(t){1,0,1}tT


7
Questo sembra buono. Quindi penso che si possa prendere senza perdita di generalità, altrimenti aggiungere un lavoro non vincolato con -value (o lavori di -value ). c - K K c - 1K=0cKKc1
daveagp,

@mhum: sto lavorando a un rapporto tecnico sui risultati correlati e vorrei citarti. Mi daresti il ​​tuo vero nome? Se lo desideri, puoi
inviarmelo

9

Bene, la mia risposta è la mia domanda da cui risulta che se si potesse risolvere questo problema in P, si potrebbe anche risolvere un altro problema aperto: ordinamento topologico positivo, prendere 3

Modifica: anche questo problema si è rivelato NP-completo, quindi il tuo problema è NP-completo già se il tuo DAG ha solo due livelli, ovvero se non ci sono percorsi diretti con due spigoli.


3

Se capisco correttamente il problema, penso che il problema della pianificazione della singola macchina vincolato in precedenza per minimizzare la somma ponderata dei tempi di completamento (1 | prec | \ sum wc) possa essere ridotto al problema che ti interessa. Nel problema 1 | prec | \ sum wc abbiamo n lavori, ognuno con un peso non negativo e un tempo di elaborazione, un poset sui lavori e vogliamo un'estensione lineare dei lavori in modo tale che la somma ponderata dei tempi di completamento dei lavori sia minimizzato. Il problema è NP-completo anche se supponiamo che il tempo di elaborazione di ciascun lavoro sia uguale a 1. Ha senso?


È sicuramente una possibilità interessante. Ma come si fa a ridurre in modo tale che il criterio di ottimizzazione (minimizzare la somma dei tempi di completamento) venga trasformato in vincoli (prefissi non negativi)?
David Eppstein,

Non conosco questo risultato di completezza NP del problema di pianificazione, ma penso che si riferisca al problema decisionale di decidere se esiste un'estensione lineare tale che la somma ponderata dei tempi di completamento del lavoro è al massimo K, quindi non credo la distinzione tra un criterio di ottimizzazione e un vincolo è importante qui. Tuttavia, non ho capito come rappresentare il vincolo sulla somma ponderata dei tempi di completamento nel problema attuale.
Tsuyoshi Ito,

Penso che la riduzione non sia così facile come all'inizio. Non sono più sicuro della mia risposta.
monaldo,

Ho appena realizzato un errore nel mio commento precedente. Quando l'ho pubblicato, ho pensato che rappresentare un vincolo sulla somma non ponderata fosse facile (quindi l'enfasi sulla ponderazione ), ma era completamente sbagliato.
Tsuyoshi Ito,

2

E se prendessimo sempre l'elemento massimo (nell'ordine parziale) con il minor peso. Dopo aver esaurito gli elementi, li restituiamo in ordine inverso come output.


Il problema è invariante sotto la trasformazione di invertire l'ordine parziale e negare tutti i pesi. Quindi non vedo come questo possa essere diverso dall'algoritmo avido di cui Robin K ha fornito un controesempio nei commenti.
David Eppstein,

Ma questo metodo funziona per il suo esempio: prima verrebbe scelto il vertice 5, quindi il vertice 4, quindi 3, 2 e infine 1. Quindi l'ordine finale sarebbe 1, 2, 3, 4, 5. In effetti, io don non è difficile provare che questo metodo funzioni. Supponiamo di avere una soluzione che non abbia un elemento massimo (affondamento) di peso minimo nell'ultima posizione. Quindi puoi trovare un'altra soluzione che ha questa proprietà, semplicemente cambiando la posizione di tale elemento per durare e preservando il resto così com'è. Procedi per induzione su ciò che resta e ottieni una prova formale.
Daniel Martin,

Sì ... non funziona ... 1 -> 2 -> 3, 1 -> 4 con pesi 4, -7, 6, 3 rispettivamente.
Daniel Martin,

1

Questo problema mi ricorda molti alberi decisionali. Considererei questo tipo di soluzione, che cerca di scegliere sempre il percorso più promettente, ma guardando l'intero sottografo:

Partendo dai nodi sink, procedi verso le fonti, un livello alla volta. Mentre lo fai, dai un peso ad ogni spigolo. Questo peso dovrebbe rappresentare l'importo minimo che dovrai "pagare" o "guadagnerai" attraversando il sottografo a partire dal nodo a cui punta il bordo. Supponiamo di essere al livello i + 1 e stiamo passando al livello i. Questo è ciò che farei per assegnare un peso per un bordo che punta a un nodo di livello i:

  1. edge_weight = indicare_nodo_peso.
  2. Trova il bordo a partire da "nodo di puntamento" con il peso massimo. Lascia che questo peso sia next_edge_weight.
  3. edge_weight + = next_edge_weight

Quindi, crea l'ordine come segue:

  1. Sia S la frontiera della ricerca, ovvero l'insieme di nodi da selezionare dal prossimo.
  2. Selezionare il nodo in modo che (nodo_peso + maximum_edge_weight) sia ingrandito.
  3. Rimuovi il nodo dal grafico e S. Aggiungi i "figli" del nodo a S.
  4. Se il grafico non è vuoto, andare al passaggio 1.
  5. Halt.

L'idea è quella di attraversare quei sottografi che daranno prima il maggior guadagno possibile, al fine di poter sostenere il costo dei sottografi a peso negativo in seguito.

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.