Algoritm eficient de calcul mai rapid timp pe interval de distanță

0

Problema

Aș dori să știu dacă există orice algoritm eficient de recomandări, care sunt rapid si nu consuma prea multe resurse, pentru a calcula cel mai rapid interval de distanță într-o secvență de date. Cu alte cuvinte, un algoritm care returneaza suma minimă de timp, pe un interval de n metri, de la un set de date.

De exemplu:

Intrare

  • data_list: [{distanță: 0, timp de:0},{distanță: 1m, timp:2},{distanță: 4m, ora:4s}...{distanță:10000m, ora: 3600s}]
  • distance_interval: 345m

Ieșire

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

Multumesc

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

Cel mai bun răspuns

0

Am creat următoarea soluție care are o complexitate de funcționare timp de O(n). Cu ajutorul memoization pentru a evita recalcularea date care au fost deja parcurse.

Acesta funcționează prin a avea o min index și max indice care sunt asociate cu un timp minim.

  1. min index începe de la indicele 0, 0, și fastest_interval_start_distance 0
  2. max indicele este atribuit imediat ce distance_interval este realizat și fastest_interval_end_distance conține valoarea distanță la un astfel de indice
  3. suma dintre diferența de timp dintre elementele de date sunt stocate în fastest_interval_time
  4. min index și max index începe să avanseze cât distanța crește cu fiecare element de date.
  5. Dacă suma de diferențele de timp între min și max este mai mică decât fastest_interval_time, curentul de ieșire este actualizat, inclusiv fastest_interval_start_distance și fastest_interval_end_distance și fastest_interval_time
  6. Marginea cazuri includ atunci când setul de date este gol sau distance_interval este mai mare decât distanța totală. Vă mulțumesc!
2021-11-24 02:13:06

În alte limbi

Această pagină este în alte limbi

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