El espacio en la pila en la mayoría de los casos se puede calcular usando la fórmula:
[matemáticas] F () = altura * f () [/ matemáticas]
dónde
- ¿Podemos aplicar Ford-Fulkerson a un gráfico de múltiples fuentes y sumideros múltiples?
- ¿Cuál es el criterio de elección para el desarrollo de algoritmos recursivos o iterativos?
- Cómo resolver http://www.spoj.com/problems/TRAFFICN/ de spoj
- Cómo aprender estructuras de datos usando C ++ de manera simple
- Quiero comparar una consulta con varios documentos y asignarles una clasificación. ¿Qué algoritmo necesito usar?
[math] height [/ math] – altura máxima del árbol de recursión,
[matemática] f () [/ matemática] – espacio de pila adicional asignado en cada llamada recursiva
Aparentemente, la altura del árbol de recursión depende del algoritmo en sí mismo, aunque a partir de su descripción es [matemática] N [/ matemática] llamadas recursivas consecutivas. Para algoritmos como la combinación de clasificación, la altura es [matemática] log (n) [/ matemática] en el peor de los casos donde [matemática] n [/ matemática] es la longitud de la matriz que se clasificará.
La mayoría de las veces, cada llamada recursiva utiliza un espacio adicional constante en la pila para almacenar argumentos de función y variables locales junto con la dirección de retorno guardada implícitamente. Aunque podría haber algoritmos que usan una cantidad no constante de espacio extra para cada llamada recursiva, son bastante posteriores.
Por lo general, el número de opciones [matemáticas] M [/ matemáticas] para que el algoritmo se ramifique no afecta la cantidad de pila asignada, por lo tanto, no tiene influencia en el espacio adicional de la pila general. Un ejemplo de cuándo [matemática] M [/ matemática] puede influir en [matemática] f () [/ matemática] es cuando crea una matriz con longitud [matemática] M [/ matemática] en cada llamada recursiva y guarda el resultado de cada de las opciones de esta matriz para usarla más adelante en esta llamada recursiva.
Si entendí correctamente en tu ejemplo:
[matemáticas] altura = N, [/ matemáticas]
[matemáticas] f () = O (1) [/ matemáticas]
Por lo tanto, la cantidad de espacio de pila adicional utilizada por el algoritmo en la descripción es:
[matemáticas] F () = N * O (1) = O (N) [/ matemáticas]