top of page

Complexidade de Tempo e Espaço: Qual o melhor caminho?

           Qual solução para resolvermos um determinado problema computacional, limitado por um certo tempo e espaço? Uma máquina de Turing determinística pode ser utilizada. Mas no que consiste esta máquina? Dada uma certa entrada finita, esta nada mais é que um autômato finito determinístico, dada uma quantidade finita de tempo, uma máquina de Turing pode apenas manipular uma quantidade finita de dados. A diferença para uma máquina normal está na capacidade de manipulação dos dados. Exemplificando, se comparada com uma máquina real, a máquina de Turing descreveria um algoritmo em algumas centenas de estados, enquanto que a real, rodando o mesmo autômato, passaria dos trilhões.

          O tempo exigido por uma máquina de Turing determinística M na entrada x é o número total de transições de estado, ou etapas, que a máquina faz antes de parar e responder com a saída ("sim" ou "não"). Diz-se que a máquina de Turing M opera dentro do tempo f(n), se o tempo exigido por M em cada entrada de comprimento n é no máximo f(n). Um problema de decisão A pode ser resolvido em tempo f(n) se existe uma operação da máquina de Turing em tempo f(n) que resolve o problema.

          Como a teoria da complexidade está interessada em classificar problemas com base na sua dificuldade, definem-se conjuntos de problemas com base em alguns critérios. Definições análogas podem ser feitas para os requisitos de espaço. A complexidade pode ser calculada através do tempo de execução do algoritmo determinado pelas instruções executadas, quanto “tempo” é necessário para computar o resultado para uma instância do problema de tamanho n. E o espaço de memória utilizado pelo algoritmo, quanto “espaço de memória/disco” é preciso para armazenar a(s) estrutura(s) utilizada(s) pelo algoritmo.

          Complexidade é também chamada esforço requerido ou quantidade de trabalho. Sendo dividida em:

 

  • Complexidade no pior caso : Considera-se a instância que faz o algoritmo funcionar mais lentamente; 

  • Complexidade média : Considera-se todas as possíveis instâncias e mede-se o tempo médio.

    • Complexidade no melhor caso: Considera-se a instância que faz o algoritmo funcionar o  mais rápido possível.

 

 

           Como exemplo, considere o número de operações de cada um dos dois algoritmos que resolvem o mesmo problema, como função de n.

 

Algoritmo 1: f1(n) = 2n 2 + 5n operações

Algoritmo 2: f2(n) = 500n + 4000 operações

 

          Dependendo do valor de n, o Algoritmo 1 pode requerer mais ou menos operações que o Algoritmo 2. Os termos inferiores e as constantes multiplicativas contribuem pouco na comparação e podem ser descartados. O importante é observar que f1(n) cresce com n 2 ao passo que f2(n) cresce com n. Um crescimento quadrático é considerado pior que um crescimento linear. Assim, vamos preferir o Algoritmo 2 ao Algoritmo 1.

 

 

2015 AdminCC | Bem vindo à Revolução

bottom of page