¿Cuál es la complejidad de esta recursividad F (1, n)?

La evaluación de [matemáticas] F (i, j) [/ matemáticas] explorará todos los puntos desde [matemáticas] F (i, i) [/ matemáticas] a [matemáticas] F (i, j-1) [/ matemáticas] y desde [matemática] F (i + 1, j) [/ matemática] a [matemática] F (j, j) [/ matemática].

Al observar la simetría, encontramos que el número de veces que evalúa [math] F [/ math] depende solo de [math] ji [/ math].

Sea [math] m = ji [/ math], y [math] g (m) [/ math] sea el número de veces que llama a [math] F [/ math] mientras evalúa [math] F (i, j) [ /matemáticas] . Entonces

[matemáticas] g (0) = 1 \\ g (m) = 1 + 2 \ suma \ límites_ {k = 0} ^ {m-1} g (k) [/ matemáticas]

Deje que [matemáticas] G (x) = \ sum \ limits_ {m = 0} ^ {\ infty} g (m) x ^ m [/ matemáticas]

Entonces

[matemáticas] G (x) = g (0) + g (1) x + g (2) x ^ 2 + g (3) x ^ 3 + \ cdots \\ = 1 + 2 \ left (1 + g ( 0) \ derecha) x + 2 \ izquierda (1 + g (0) + g (1) \ derecha) x ^ 2 + 2 \ izquierda (1 + g (0) + g (1) + g (2) \ derecha) x ^ 3 + \ cdots \\ = 1 + 2 \ left (x + x ^ 2 + x ^ 3 + \ cdots \ right) + 2G (x) \ left (x + x ^ 2 + x ^ 3 + \ cdots \ right) \\ = 1 + \ frac {2x} {1-x} + \ frac {2x} {1-x} G (x) \\ = \ frac {1} {1-3x} + \ frac {x} {1-3x} \\ = \ left (1 + 3x + 3 ^ 2 x ^ 2 + \ cdots \ right) + x \ left (1 + 3x + 3 ^ 2 x ^ 2 + \ cdots \ derecha) \\ = 1 + \ sum \ limits_ {m = 1} ^ {\ infty} \ left (3 ^ m + 3 ^ {m-1} \ right) x ^ m [/ math]

Así

[matemáticas] g (m) = 3 ^ m + 3 ^ {m-1} [/ matemáticas]

Del mismo modo, podemos calcular el número de comparaciones [matemáticas] h (m) [/ matemáticas] donde

[matemáticas] h (0) = 0 \\ h (m) = m-1 + 2 \ sum \ limites_ {k = 0} ^ {m-1} h (k) [/ matemáticas]

Entonces

[matemáticas] H (x) = h (0) + h (1) x + h (2) x ^ 2 + h (3) x ^ 3 + \ cdots \\ = 2 \ left (0 + h (0) \ right) x + 2 \ left (1 + h (0) + h (1) \ right) x ^ 2 + 2 \ left (2 + h (0) + h (1) + h (2) \ right) * x ^ 3 + \ cdots \\ = 2 \ left (x ^ 2 + 2x ^ 3 + 3x ^ 4 + \ cdots \ right) + 2H (x) \ left (x + x ^ 2 + x ^ 3 + \ cdots \ right) \\ = \ frac {2x ^ 2} {(1-x) ^ 2} + \ frac {2x} {1-x} H (x) \\ = \ frac {2x ^ 2} {( 1-x) (1-3x)} \\ = x ^ 2 \ left (\ frac {3} {1-3x} – \ frac {1} {1-x} \ right) \\ = 3x ^ 2 \ left (1 + 3x + 3 ^ 2 x ^ 2 + \ cdots \ right) – x ^ 2 \ left (1 + x + x ^ 2 + \ cdots \ right) \\ = \ sum \ limits_ {m = 2} ^ {\ infty} \ left (3 ^ {m-1} – 1 \ right) x ^ m [/ math]

[matemáticas] h (m) = 3 ^ {m-1} – 1 [/ matemáticas]

Eso es realmente exponencial, por lo que te recomiendo que uses DP en su lugar. Reducirá el número a polinomio.

More Interesting

¿Qué son los problemas NP-completos? ¿Cómo podemos resolverlos?

¿Cuál es la diferencia entre un algoritmo basado en restricciones y un algoritmo basado en reglas?

¿Las secuencias y series son importantes para el aprendizaje de algoritmos?

¿Hay alguna diferencia entre los algoritmos estocásticos y los probabilísticos?

¿Cómo se pueden usar los bucles para procesar matrices?

¿Qué factores principales distinguen las estructuras de datos avanzadas y elementales?

En un montón binario, un nodo con índice i tiene hijos en los índices 2i + 1 y 2i + 2 (cuando la matriz es 0 indexada). ¿Cómo se deriva esta relación?

¿Por qué procesar una matriz ordenada es más rápido que una matriz sin clasificar?

¿Cuál es la técnica para crear una solución DP iterativa a partir de su solución recursiva?

¿Desde dónde puedo aprender algoritmos practicando problemas?

¿Cuál es el algoritmo utilizado por la búsqueda de imagen inversa de Google (es decir, la búsqueda por imagen)? ¿Qué algoritmos necesitaría entender para crear una funcionalidad similar a pequeña escala?

¿Existen campamentos de programación a tiempo completo en Europa para mejorar la programación o las estructuras de datos y habilidades de algoritmos?

¿Por qué no puedo resolver la subsecuencia creciente más larga simplemente ordenando la secuencia y luego iterando a través de cada elemento asegurándome de que la secuencia siempre esté aumentando?

¿Cómo funciona la matriz internamente en Java?

Cómo escribir un programa que ingrese n números y diga el más pequeño y el más grande