Lo scopo dell'algoritmo è creare n
rotte su una mappa geografica, dove viene dato n
, mentre tutte le rotte non prendono più di t
unità di tempo a piedi e finiscono dove iniziano, mentre provano per avere il minimo sovrapposizioni possibile, il che significa che l'utente che cammina i percorsi percorre il minor numero possibile di strade il più spesso possibile.
Il software calcola i percorsi chiusi (punto iniziale = punto finale) mentre la lunghezza dei percorsi deve essere uguale al tempo t
. Un'altra restrizione è che ogni strada dovrebbe essere percorsa il più possibile per esplorare sempre nuove aree mentre si cammina per lo stesso periodo di tempo.
Esempio:
Sei a New York City ( google maps per una mappa di esempio)
- Vuoi camminare per 40 minuti.
- Vuoi essere su nuove strade o percorsi il più spesso possibile.
Immagine con una discussione. Il thread ha una lunghezza di velocity_walking * t
in una scala più piccola. Ora incollare la fine e iniziare a un punto di partenza sulla mappa, lat
e lon
. Quindi sposti il filo in modo che si trovi solo su strade / sentieri, senza essere sulla stessa strada due volte.
Ora prendi un altro thread e incollalo alla fine e inizi a un punto di partenza sulla tua mappa, lat
e lon
. Ora fai la stessa cosa come sopra, cercando di non metterlo sopra l'altro thread.
Ripeti questo n
volte, tutto sommato, quindi dati i primi due thread, lo ripeterai n-2
volte.
Quindi i passaggi sono
- Inserisci
n
- Inserisci
t
- Inserisci il punto di partenza in
lat
elon
- Crea
n
rotte che prendonot
unità di tempo per camminare a piedi, iniziare e terminare inlat
,lon
e, se possibile, non contenere le stesse strade o parti di strade due volte.
La mia idea:
Avere un cerchio di raggio pari a walking_velocity * t / 2
. Pianifica percorsi da inizio a punto in cerchio per iniziare.
Svantaggi:
- Stesse strade fino alla circonferenza del cerchio e ritorno.
- Molte strade sono state omesse.
Qual è l'algoritmo migliore per farlo? La lingua non ha importanza, l'algoritmo conta.