Algoritmo eficiente para calcular mejor tiempo en la distancia de intervalo

0

Pregunta

Me gustaría saber si hay algún algoritmo eficiente recomendaciones, que son rápidos y no consume demasiados recursos, para el cómputo de la forma más rápida intervalo de distancia en una secuencia de datos. En otras palabras un algoritmo que devuelve la cantidad mínima de tiempo en un intervalo de n metros, a partir de un conjunto de datos.

Por ejemplo:

De entrada

  • data_list: [{distancia: 0, el tiempo:0},{distancia: 1m, tiempo:2},{distancia: 4m, tiempo:4s}...{distancia:10000m, tiempo: 3600s}]
  • distance_interval: 345m

Salida

  • fastest_interval_start_distance: 7655 m
  • fastest_interval_end_distance: 8000 m
  • fastest_interval_time: n segundos

Gracias

algorithm
2021-11-23 23:52:19
1

Mejor respuesta

0

He creado la siguiente solución que tiene la complejidad de un tiempo de ejecución de O(n). Con la ayuda de memoization para evitar la posibilidad de datos que ya ha sido atravesado.

Funciona por tener un min índice y max índice que se asocian con el mínimo de tiempo.

  1. min índice comienza en el índice 0, 0, y fastest_interval_start_distance 0
  2. max índice se asigna tan pronto como distance_interval se logra y fastest_interval_end_distance contiene el valor de la distancia en el índice de
  3. la suma de la diferencia de tiempo entre los elementos de datos se almacena en fastest_interval_time
  4. min índice y max índice de empezar a moverse hacia adelante a medida que la distancia aumenta con cada elemento de datos.
  5. Si la suma de las diferencias de tiempo entre min y max está a menos de fastest_interval_time, la corriente de salida se actualiza incluyendo fastest_interval_start_distance y fastest_interval_end_distance y fastest_interval_time
  6. Borde de los casos incluyen cuando el conjunto de datos está vacía o distance_interval es mayor que la distancia total. Gracias!
2021-11-24 02:13:06

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................