Algoritmo eficiente para a computação em tempo mais rápido no intervalo de distância

0

Pergunta

Eu gostaria de saber se há algum algoritmo eficiente recomendações, que são rápidos e não consumir muitos recursos de computação mais rápido intervalo de distância em uma seqüência de dados. Em outras palavras, um algoritmo que retorna a quantidade mínima de tempo em um intervalo de n metros, a partir de um conjunto de dados.

Por exemplo:

Entrada

  • data_list: [{distância: 0, hora:0},{a distância de 1m, tempo:2s},{a distância: 4 m, tempo:4s}...{distância:10000m, tempo: 3600s}]
  • distance_interval: 345m

Saída

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

Obrigado

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

Melhor resposta

0

Eu criei a seguinte solução, que tem uma complexidade de tempo de execução de O(n). Com a ajuda de memoization para evitar recomputing os dados que já foram percorridos.

Ele funciona com um mínimo de índice e max de índice que são associados com o mínimo de tempo.

  1. min índice começa no índice 0, 0 e 0 fastest_interval_start_distance
  2. max índice é atribuído assim que distance_interval é alcançado e fastest_interval_end_distance contém o valor de distância em tal índice
  3. a soma da diferença de tempo entre itens de dados é armazenado em fastest_interval_time
  4. min índice e máximo índice de começar a se mover para a frente à medida que a distância aumenta com cada item de dados.
  5. Se a soma das diferenças de tempo entre min e max é menor do que fastest_interval_time, a saída de corrente é atualizado, incluindo fastest_interval_start_distance e fastest_interval_end_distance e fastest_interval_time
  6. Casos extremos, quando o conjunto de dados está vazio ou distance_interval é maior do que a distância total. Obrigado!
2021-11-24 02:13:06

Em outros idiomas

Esta página está em outros idiomas

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