Problema di distanza minima con lunghezza in funzione del tempo


10

Motivazione

L'altro giorno, stavo viaggiando per la città con i mezzi pubblici e ho creato un interessante problema grafico che modella il problema di trovare la connessione più breve tra due luoghi.

Conosciamo tutti il ​​classico "Problema del percorso più breve": dato un grafico diretto con le estremità dei bordi e due vertici , trova il percorso più breve tra e (ovvero il percorso che minimizza la lunghezza totale del bordo). Supponendo lunghezze dei bordi non negative, esistono vari algoritmi e il problema è semplice.w eR + 0 ,G=(V,E)s , t V s tweR0+,eEs,tVst

Questo è un buon modello per il caso che stiamo camminando, per esempio. I vertici sono crocevia nella nostra rete di strade e ogni bordo ha una lunghezza fissa, ad esempio in metri. Un'altra possibile interpretazione dei pesi dei è il tempo che ci impiega per passare da uno dei suoi vertici all'altro. Questa è l'interpretazione che mi interessa ora.we

Problema

Ora voglio modellare la seguente situazione. Voglio viaggiare dal punto A al punto B in una città con i mezzi pubblici e ridurre al minimo i tempi . La rete di trasporto pubblico può essere facilmente modellata come un grafico diretto come ci si aspetterebbe. La parte interessante sono i contrappesi (quel modello di tempo) - i trasporti pubblici (autobus, ad esempio) partono solo in determinati intervalli, che sono diversi per ogni fermata (vertice nel grafico). In altre parole: i pesi dei bordi non sono costanti, cambiano in base al tempo in cui vogliamo utilizzare il bordo.

Come modellare questa situazione: Abbiamo un diretto grafo ed un bordo peso funzione che prende il tempo come argomento e restituisce il tempo necessario per utilizzare il limite nel nostro percorso. Ad esempio, se il bus dal vertice al vertice parte at e ci vuole tempo e arriviamo al vertice at , allora è il peso del bordo. Chiaramente, .G=(V,E) w:E×R0+R0+vut=105vt=8w(vu,8)=7w(vu,10)=5

È leggermente complicato definire il peso totale del percorso, ma possiamo farlo in modo ricorsivo. Lascia che sia un percorso diretto. Se allora . Altrimenti, , dove è il sotto-percorso di senza . Questa è una definizione naturale corrispondente alla situazione del mondo reale.P=v1v2vk1vkk=1w(P)=0w(P)=w(P)+w(vk1vk,w(P))PPvk

Ora possiamo studiare il problema sotto vari presupposti sulla funzione . Il presupposto naturale è che modella "in attesa di time".w

w(e,t)w(e,t+Δ)+Δ for all eE,Δ0,
Δ

Se la funzione "si comporta bene" potrebbe essere possibile ridurre questo problema al problema del percorso più breve classico. Ma potremmo chiederci cosa succede quando le funzioni del peso si scatenano. E se abbandonassimo il presupposto di aspettare?

Domande

Le mie domande sono le seguenti.

  • Questo problema è stato posto prima? Sembra un po 'naturale.
  • C'è qualche ricerca al riguardo? Mi sembra che ci siano vari sottoproblemi da chiedere e studiare, principalmente per quanto riguarda le proprietà della funzione peso.
  • Possiamo ridurre questo problema (eventualmente sotto alcuni presupposti) al classico problema del percorso più breve?

Ecco un approccio di base naturale rispetto al quale è possibile confrontare più risposte a livello di ricerca. Modello come un problema di raggiungibilità discretizzando le unità di tempo in un insieme di istanti , e fare un nuovo grafico con vertici . È quindi possibile inserire i bordi dove . Questo è già efficace per molti casi d'uso (ad es. Con gli orari degli autobus, lasci semplicemente che sia l'ora in cui gli autobus arrivano / escono), ma non funziona sempre perfettamente (considera quando varia continuamente tempo) ed è lento se è grande. V = T × V ( t 0 , v 0 ) ( t 1 , v 1 ) t 1 = w ( ( v 0 , v 1 ) , t 0 ) T w TTV=T×V(t0,v0)(t1,v1)t1=w((v0,v1),t0)TwT
Andrew Morgan,

Una semplice variante di questo problema (in cui i pesi dei bordi dipendono linearmente dal tempo) è chiamata " percorso parametrico più corto ".
Neal Young,

Risposte:


8

Questo è noto come problema "percorso più breve dipendente dal tempo". Effettivamente sono state fatte ricerche per questo problema; si veda ad esempio la carta classica di Orda e Rom e questa recente carta SODA che dimostra che quando la funzione di peso di ciascun bordo è di dimensioni polinomiali lineari a tratti, allora il percorso più breve tra due punti fissi cambia volte.nΘ(logn)

L'algoritmo di Dijkstra può infatti essere utilizzato per questo problema, quando viene imposta la politica di attesa, ovvero attendere in un nodo se ciò riduce il tempo di arrivo finale. Senza la politica di attesa la situazione è molto più selvaggia: il percorso più breve potrebbe non essere semplice, il percorso secondario di un percorso più breve potrebbe non essere il più breve tra i due punti finali del percorso secondario, i percorsi che attraversano un numero infinito di bordi potrebbero avere un tempo di arrivo finito, ecc. Vedi di nuovo l'articolo di Orda e Rom per ulteriori discussioni.


3

Sei a conoscenza del problema dei "percorsi più brevi non decrescenti"? È stato definito per modellare situazioni come queste. Sebbene sia un po 'meno espressivo rispetto alla tua formulazione, ci sono alg veloci per questo.


1

Se si presume che i tempi siano integrali (il che ha senso nel caso del trasporto pubblico), è possibile creare una rete estesa nel tempo, simile a quella suggerita da Ford-Fulkerson per il flusso massimo nel tempo (o flusso più rapido) e trova invece il percorso più breve in questo grafico.

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.