Espaço-tempo tradeoff - Space–time tradeoff

Um espaço-tempo ou tempo de memória trade-off em ciência da computação é um caso em que um algoritmo ou programa comércios aumentou o uso do espaço com a diminuição do tempo. Aqui, o espaço refere-se ao armazenamento de dados consumido na realização de uma determinada tarefa ( RAM , disco rígido , etc.), e tempo refere-se ao tempo consumido na realização de uma determinada tarefa ( computação tempo ou tempo de resposta ).

A utilidade de uma dada compensação espaço-tempo é afectada por relacionados fixos e custos variáveis (de, por exemplo, CPU velocidade, o espaço de armazenamento), e é sujeito a rendimentos decrescentes .

História

Uso biológica de compensações de memória tempo pode ser visto nas etapas anteriores do comportamento animal . Usando o conhecimento armazenado ou codificação reações estímulos como "instintos" no DNA evita a necessidade de "cálculo" em situações de tempo crítico. Mais específico para computadores, tabelas look-up foram implementados desde os sistemas operacionais muito mais rapidamente.

Em 1980 Martin Hellman proposto pela primeira vez usando um tradeoff-memory tempo para criptoanálise .

Tipos de troca

tabelas de pesquisa vs. recálculo

A situação mais comum é um algoritmo que envolve uma tabela de pesquisa : uma implementação pode incluir a tabela inteira, o que reduz o tempo de computação, mas aumenta a quantidade de memória necessária, ou pode computar entradas da tabela, conforme necessário, aumentando o tempo de computação, mas reduzindo os requisitos de memória .

Comprimida contra dados não comprimida

Uma desvantagem espaço-tempo pode ser aplicada ao problema de armazenamento de dados. Se os dados são armazenados descompactado, é preciso mais espaço, mas o acesso leva menos tempo do que se os dados foram armazenados compactado (desde comprimir os dados reduz a quantidade de espaço que ocupa, mas isso leva tempo para executar o algoritmo de descompressão ). Dependendo do caso particular do problema, de qualquer forma é prático. Há também casos raros onde é possível trabalhar diretamente com dados compactados, como no caso do comprimido índices bitmap , onde ele é mais rápido para trabalhar com compressão do que sem compressão.

Re-rendering vs. imagens armazenadas

Armazenar apenas o SVG fonte de uma imagem vetorial e tornando-o como uma imagem bitmap cada vez que a página é solicitada estaria trocando tempo para o espaço; mais tempo utilizado, mas menos espaço. Tornando a imagem quando a página é alterado e armazenar as imagens renderizadas seria negociar espaço para tempo; mais espaço utilizado, mas menos tempo. Esta técnica é mais geralmente conhecido como cache .

código menor comparada desdobramento de loop

O tamanho do código maior pode ser trocado por uma velocidade maior programa ao aplicar circuito desenrolar . Esta técnica torna o código mais longo para cada iteração de um loop, mas poupa o tempo de computação necessário para saltar de volta para o início do loop no final de cada iteração.

outros exemplos

Algoritmos que também fazem uso de compensações de espaço-tempo incluem:

  • Bebê-passo gigantesco passo algoritmo para calcular logaritmos discretos
  • Tabelas do arco-íris em criptografia, onde o adversário está tentando fazer melhor do que o tempo exponencial necessário para um ataque de força bruta . Rainbow tables usar valores parcialmente pré-computadas no espaço de hash de uma função hash de criptografia para quebrar senhas em minutos em vez de semanas. Diminuir o tamanho da tabela de arco-íris aumenta o tempo necessário para iterar sobre o espaço hash.
  • O ataque meet-in-the-middle usa uma troca de espaço-tempo para encontrar a chave criptográfica em apenas criptografias (e espaço) versus os esperados criptografias (mas só espaço) do ataque ingênuo.
  • Programação dinâmica , onde a complexidade de tempo de um problema pode ser reduzido significativamente usando mais memória.

Veja também

Referências

links externos