DAA - Complexidades Espaciais
Neste capítulo, discutiremos a complexidade dos problemas computacionais com relação à quantidade de espaço que um algoritmo requer.
A complexidade do espaço compartilha muitas das características da complexidade do tempo e serve como outra forma de classificar os problemas de acordo com suas dificuldades computacionais.
O que é a complexidade do espaço?
A complexidade do espaço é uma função que descreve a quantidade de memória (espaço) que um algoritmo leva em termos da quantidade de entrada para o algoritmo.
Costumamos falar de extra memorynecessário, sem contar a memória necessária para armazenar a própria entrada. Novamente, usamos unidades naturais (mas de comprimento fixo) para medir isso.
Podemos usar bytes, mas é mais fácil usar, digamos, o número de inteiros usados, o número de estruturas de tamanho fixo, etc.
No final, a função que criarmos será independente do número real de bytes necessários para representar a unidade.
A complexidade do espaço às vezes é ignorada porque o espaço usado é mínimo e / ou óbvio, no entanto, às vezes torna-se uma questão tão importante quanto a complexidade do tempo
Definição
Deixei M seja um determinista Turing machine (TM)que pára em todas as entradas. A complexidade do espaço deM é a função $ f \ colon N \ rightarrow N $, onde f(n) é o número máximo de células da fita e M verifica qualquer entrada de comprimento M. Se a complexidade do espaço deM é f(n), Nós podemos dizer que M corre no espaço f(n).
Estimamos a complexidade espacial da máquina de Turing usando notação assintótica.
Seja $ f \ colon N \ rightarrow R ^ + $ uma função. As classes de complexidade do espaço podem ser definidas da seguinte forma -
SPACE = {L | L is a language decided by an O(f(n)) space deterministic TM}
SPACE = {L | L is a language decided by an O(f(n)) space non-deterministic TM}
PSPACE é a classe de linguagens que podem ser decididas no espaço polinomial em uma máquina de Turing determinística.
Em outras palavras, PSPACE = Uk SPACE (nk)
Teorema de Savitch
Um dos primeiros teoremas relacionados à complexidade do espaço é o teorema de Savitch. De acordo com este teorema, uma máquina determinística pode simular máquinas não determinísticas usando uma pequena quantidade de espaço.
Para a complexidade do tempo, tal simulação parece exigir um aumento exponencial no tempo. Para a complexidade do espaço, este teorema mostra que qualquer máquina de Turing não determinística que usaf(n) espaço pode ser convertido em uma TM determinística que usa f2(n) espaço.
Portanto, o teorema de Savitch afirma que, para qualquer função, $ f \ colon N \ rightarrow R ^ + $, onde $ f (n) \ geqslant n $
NSPACE(f(n)) ⊆ SPACE(f(n))
Relação entre classes de complexidade
O diagrama a seguir descreve o relacionamento entre diferentes classes de complexidade.
Até agora, não discutimos as classes P e NP neste tutorial. Estes serão discutidos mais tarde.