"Parenti" del problema del percorso più breve


10

Considera un grafico non orientato collegato con pesi dei bordi non negativi e due vertici distinti s,t . Di seguito sono riportati alcuni problemi di percorso che sono tutti della seguente forma: trovare un percorso st , in modo tale che alcune funzioni dei pesi dei bordi sul percorso siano minime. In questo senso sono tutti "parenti" del problema del percorso più breve; in quest'ultimo la funzione è semplicemente la somma.

Nota: stiamo cercando percorsi semplici, cioè senza vertici ripetuti. Dato che non ho trovato nomi standard per questi problemi in letteratura, li ho nominati io stesso.

Percorso con gap di peso minimo: trovare un percorso st , in modo tale che la differenza tra i pesi dei bordi più grandi e più piccoli sul percorso sia minima.

Percorso più regolare: trova un percorso st , in modo tale che la dimensione del gradino più grande sul percorso sia minima, dove una dimensione del gradino è il valore assoluto della differenza di peso tra due bordi consecutivi .

Percorso con altitudine minima: definiamo l'altitudine di un percorso dalla somma delle dimensioni del passo lungo il percorso (vedere la definizione della dimensione del passo sopra). Trova un percorso st con altitudine minima.

Percorso con peso primo minimo: supponendo che tutti i pesi del bordo siano numeri interi positivi, trovare un percorso st , in modo tale che il suo peso sia un numero primo. Se esiste un percorso del genere, trovane uno con il peso primo più piccolo possibile.

Domanda: cosa si sa di questi problemi di percorso? (E altri che potrebbero essere concepiti in uno spirito simile, applicando una diversa funzione dei pesi.) In generale, c'è qualche guida che quali funzioni dei pesi dei bordi possano essere minimizzate nel tempo polinomiale e quali NP-difficili?

stst

Risposte:


8

Ecco una risposta al primo problema:

Percorso con gap di peso minimo: trovare un percorso s - tst

Un articolo del 1984 mostra che ogni volta che possiamo decidere la fattibilità (esiste una soluzione nel caso non ponderato) per qualche problema di ottimizzazione combinatoria in tempo polinomiale, possiamo anche trovare in tempo polinomiale una soluzione che minimizza la differenza tra il più grande e il più piccolo coefficiente di costo (nel caso ponderato):

S. Martello, WR Pulleyblank, P. Toth, D. de Werra
Problemi di ottimizzazione bilanciata
Operazioni Ricerca Lettere 3, 1984, Pagine 275-278

Ciò implica un algoritmo temporale polinomiale alla tua domanda.


1
Questo può essere fatto anche mediante una ricerca della forza bruta su tutte le coppie di spigoli che potrebbero costituire il massimo e il minimo e il loro ordine / orientamento.
Yonatan N,

3

O~(|E|2)|E||E|

O~(|E|)|E|2kk1


SΘ(n/logn)PSanche per i pesi binari: è sufficiente tenere traccia dei pesi polinomialmente più bassi (dipendenti da ) in ciascun punto. Tuttavia, con i pesi primi, potremmo dover diversificare i divisori delle differenze di peso (invece di tenere traccia dei pesi più bassi), e non è chiaro se sia abbastanza.S

Percorso più regolare: NP completo. Se permettessimo autointersezioni, ciò sarebbe risolvibile in time , ma per la versione senza autointersezioni, ecco una riduzione da 3-SAT con variabili. Hanno vertici , più un vertice per ogni clausola. Per ogni variabile ( ), aggiungi un percorso uniforme (utilizzando se necessario vertici extra) da a che passa attraverso tutte le clausole con occorrenza positiva di e un percorso simile per le clausole conO~(|E|)ns=v0,v1,...,t=vnxii<nvivi+1xi¬xi. Impostare il primo e l'ultimo peso del bordo di ciascun percorso su 1 (o un'altra costante), ma altrimenti scegliere pesi in modo tale che nessun altro percorso sia liscio. Infine, duplica tutti i vertici della clausola e i bordi adiacenti; in questo modo ogni clausola può essere visitata al massimo due volte, il che è sufficiente per 3-SAT.


Penso che il percorso più regolare sia in P, a causa della seguente trasformazione. Sia un vertice di grado . Sostituisci con una cricca di dimensione , in modo tale che ciascun bordo che era originariamente adiacente a ora termina in un diverso vertice della cricca. Se sono due di questi bordi originali, quindi assegnare il pesoal bordo nella cricca. Effettua questa trasformazione per ogni vertice e assegna un peso 0 ai bordi del grafico originale. Quindi un peso minimovdvdevvee,f|w(e)w(f)|(ve,vf)vs,tstil percorso nel nuovo grafico fornisce un percorso più fluido nell'originale, dopo aver annullato la trasformazione.
Andras Farago,

@AndrasFarago Il problema con il tuo argomento è che alcuni semplici percorsi nel grafico esteso hanno ripetuti vertici nel grafico originale. Mi piace che il problema del percorso più fluido sembri ingannevolmente semplice.
Dmytro Taranovsky,

@ Dmytro Taranovsky Sembra, hai ragione, può davvero succedere che dopo il ritorno al grafico originale possiamo ottenere vertici ripetuti sul percorso (ma senza bordi ripetuti). Tuttavia, se ogni grado nel grafico originale è al massimo 3, allora non può avvenire alcuna ripetizione. Significa che il problema del percorso più regolare è in P almeno per i grafici con massimo grado . 3
Andras Farago,

Siamo spiacenti, nel grafico trasformato dobbiamo trovare un percorso con il peso massimo più piccolo (che è anche in P), piuttosto che il peso totale più piccolo. Il peso totale porterebbe a un percorso con altitudine minima (in grafici con grado massimo , in modo da escludere vertici ripetuti). 3
Andras Farago,
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.