Acho que essas análises de tempo e espaço estão um pouco estranhas.
Primeiro acho que é interessante estabelecer quem é o N, o tamanho do
problema. É o amount? O número de tipos de moedas? Os dois (N e M)?
Só olhando o código de count-change (a função cc, na verdade), já dá
para desconfiar que a complexidade temporal (número de passos) não é
polinomial, ou seja, O(n^k) para algum k.
Quanto ao espaço, ele é proporcional à altura da árvore porque a
estrutura de chamadas recursivas segue a ordem de uma busca em
profundidade na árvore. Se é proporcional à altura, tudo depende de
como a altura da árvore e N se relacionam (para isso é preciso
estabelecer claramente quem é N). Se N é o número de nós na árvore, a
altura da árvore é proporcional a um logaritmo de N cuja base depende
do grau da árvore (quantos filhos tem cada nó). No caso de análise
assintótica, pode-se usar qualquer base então fica O(logN). Mas a não
ser que o N seja definido de uma maneira meio estranha, ele não será o
número de nós da árvore.
Essas considerações são meio vagas de propósito, já que a idéia é não
dar as respostas de vez. Mas espero que ajude a melhorar as análises.
--
[]s, Andrei Formiga
Acho que essas análises de tempo e espaço estão um pouco estranhas.
Primeiro acho que é interessante estabelecer quem é o N, o tamanho do
problema. É o amount? O número de tipos de moedas? Os dois (N e M)?
Só olhando o código de count-change (a função cc, na verdade), já dá
para desconfiar que a complexidade temporal (número de passos) não é
polinomial, ou seja, O(n^k) para algum k.
Quanto ao espaço, ele é proporcional à altura da árvore porque a
estrutura de chamadas recursivas segue a ordem de uma busca em
profundidade na árvore.
Se é proporcional à altura, tudo depende de
como a altura da árvore e N se relacionam (para isso é preciso
estabelecer claramente quem é N). Se N é o número de nós na árvore, a
altura da árvore é proporcional a um logaritmo de N cuja base depende
do grau da árvore (quantos filhos tem cada nó). No caso de análise
assintótica, pode-se usar qualquer base então fica O(logN). Mas a não
ser que o N seja definido de uma maneira meio estranha, ele não será o
número de nós da árvore.