Numero di combinazioni possibili per il viaggio di ritorno rotte
-
22-08-2019 - |
Domanda
La mia matematica è male, veramente male.Così male sto lottando anche frase di questa domanda, ma qui va.
La situazione è in viaggio in treno e si dispone di quattro matrici per lavorare con.
Leaving_Stations Arriving_Stations
Leaving_Dates Returning_Dates
Quindi diciamo che sei interessato solo in un modo rotte e hai bisogno di capire quante combinazioni di percorso ci sono.Che sarebbe (penso)
possible_routes = (leaving_stations x arriving_stations) x leaving_dates
Ma come posso fare per capire quante combinazioni ci sono se ho voglia di un viaggio di ritorno?
AGGIORNAMENTO:
o sarebbe questo lavoro?
possible_routes = ((leaving_stations x arriving_stations) x leaving_dates) x (leaving_dates x returning_dates)
Soluzione
Bene, la risposta è non è del tutto chiaro il tuo array di nomi.
Supponiamo di avere le 4 matrici:
- Partenza
- Le Date Di Ritorno
- Lasciando Stazioni
- Arrivano Stazioni
Poi possiamo fare un po ' di spiegazione qui.Usiamo la notazione |x| a rappresentare la cardinalità (numero di elementi) di array [x], in modo che |partenza| è il numero totale di date che si potrebbe lasciare il.
Quindi |partenza| * |Lasciando Stazioni| * |Arrivo Stazioni| vorresti tradurre, scegliere una data per lasciare, e poi scegliere una stazione di lasciare, quindi di selezionare una stazione per arrivare a, e di farlo in tutti i modi possibili.Quindi, questo sembra essere quello che stai chiedendo per voli di sola andata.
Ora, praticamente, ho intenzione di assumere che questo è un problema del mondo reale, in modo che diciamo abbiamo scelto di lasciare da Southampton a Yorkshire su giugno 20, sul viaggio di ritorno, tutti abbiamo la possibilità di scegliere, a questo punto, dovrebbe essere la data di ritorno (cioè io sto supponendo che si desidera tornare a casa).
Così il numero totale di modi in cui siamo in grado di pianificare un viaggio andata e ritorno sarebbe primo piano di un viaggio di sola andata come sopra, e poi scegliere un la data di ritorno, che dovrebbe essere |partenza| * |Lasciando Stazioni| * |Arrivo Stazioni| * |Data di Ritorno|.I primi 3 termini scegliere un viaggio di sola andata come sopra, e il termine ultimo sceglie un ritorno data da tutte le possibili date.Naturalmente, se abbiamo avuto la possibilità di tornare ad un'altra stazione diversa da quella che abbiamo lasciato, quindi sarebbe l'equazione (|partenza| * |Lasciando Stazioni| * |Arrivo Stazioni|) * (|Data di Ritorno| * |Lasciando Stazioni|), o se si potrebbe anche partire da una diversa Stazione di Arrivo rispetto a quello che siamo arrivati in diventerebbe (|partenza| * |Lasciando Stazioni| * |Arrivo Stazioni|) * (|Data Di Ritorno| * |Arrivo Stazioni| * |Lasciando Stazioni|).
Altri suggerimenti
Non sono sicuro se ho capito bene, ma questo mi sembra un tipico grafico-routing problema teoria . Potete guardare percorso minimo o noreferrer A * algoritmi.
In primo luogo, le rotte A-A sono cose sbagliate, così:
possible_routes =
(
leaving_stations x arriving_stations -
(leaving_stations [intersection] arrivig_stations)
) x leaving_dates
operazione intersezione è elementi che appartengono ad entrambe le matrici
In secondo luogo, quando si vuole 2 percorsi modo, le combinazioni sono:
possible_2way_routes =
(
leaving_stations x arriving_stations -
(leaving_stations [intersection] arrivig_stations)
) x
leaving_dates x
(return_dates that later than leaving dates+route time)
'leaving_dates x (return_dates che più tardi lasciando date + tempo di percorrenza)' sono cosa strana, quindi potrebbe essere più facile da cumpute alta stima - il numero, che non inferiore a possible_2way_routes in ogni caso. conte massima sarà quando tutti returning_dates oltre leaving_dates, così:
possible_2way_routes <=
(
leaving_stations x arriving_stations -
(leaving_stations [intersection] arrivig_stations)
) x leaving_dates x return_dates
Oh, ho ricordato come calcolare 'return_dates che più tardi lasciando date + tempo di percorrenza'. è:
for each element of leaving_dates {
sum=sum+return_dates that later than ith leaving date+route time}
ci sono ancora problemi di 'tempo di percorrenza', anche se ...