Digamos que tiene una recurrencia
extiende sobre reales positivos.
T(n)={T(n−nc)+T(nc)+f(n)1n > 2otherwise
¿Qué podemos hacer con esta función? Bueno, no mucho a menos que superpongamos ciertas estructuras sobre él. Vengo de un fondo de análisis numérico, que está pavimentado con recetas numéricas que de alguna manera funcionan incluso cuando el problema subyacente no es lo suficientemente fluido (no importa, sigamos arrojando el método de Newton en sus diferencias divididas) o demasiado complicado para analizar (ordenar de este problema) Mi reacción instintiva ante estos problemas es hacer una suposición hecha a mano, cruzar los dedos y esperar lo mejor. En este caso, parece dar límites relativamente buenos.
En particular, quiero hacer dos suposiciones principales. Una de estas suposiciones es más o menos infundada, pero no llegaremos muy lejos sin ella. El otro tiene una intuición visual bastante agradable que, con suerte, puedes asimilar, pero aún es más manejable que cualquier otra cosa.
- Asumiré que es "suave-ish". Es bastante fácil ver que T ( n ) no es diferenciable en todas partes. De hecho, ni siquiera es continuo, ya que para f ( n ) = log ( n ) y c = 1T(n)T(n)f(n)=log(n)c=12lim n → 2 + T ( n ) = 2 + ln 2 n ↦ √limn→2−T(n)=1limn→2+T(n)=2+ln2 n↦n- √n↦n−−√ T(n)n2nnT(n)n↦n−n−−√T(n)n2en algún lugar de su trayectoria. Eso es un montón de discontinuidades, incluso podría darle una oportunidad a la función de Dirichlet. Si estamos llegando al punto en el que estamos comparando los comportamientos de una función con el ejemplo prototípico de una función continua en ninguna parte, ¿no es ridículo intentar afirmar que es "suave"? Bueno, resulta que en la práctica, los efectos de estas discontinuidades disminuyen asintóticamente, hasta el punto de que su gráfico se ve casi suave cuando tiende hacia el infinito. Por lo tanto, propongo que bajemos nuestras horcas y simplemente miremos para otro lado en esta circunstancia. En particular, supondré que en cualquier punto de interés que esté suficientemente lejos del origen,nnT(n)es diferenciable, o al menos aproximadamente diferenciable en algún vecindario.
- También asumiré una postura de suavidad aún más fuerte cuando esté suficientemente lejos. Supongamos que es una función sublineal tal que (por ejemplo ), entonces la derivada hace no varía significativamente cuando es lo suficientemente lento. Intuitivamente, a medida que aumenta, el tamaño relativo de la vecindad disminuye (ya que su tamaño es solo , que crece mucho más lentamente que ). Eventualmente, el tamaño de este vecindario se vuelve tan insignificante (en relación conα ( n ) n > α ( n ) n c T ′ ( ξ ∈ ( n - α ( n ) , n ) α ( nnα(n)n>α(n)ncT′(ξ∈(n−α(n),n)n ( n - α ( n ) , n ) α ( n ) n n T ( n )α(n)n(n−α(n),n)α(n)nn) que la tasa de cambio de dentro de este vecindario ya no cambia todo tan dramáticamente.T(n)
Ahora, se asumen ambas propiedades, y no tengo ni idea de cómo hacer para demostrarlo de manera rigurosa. Pero como dije antes, crucemos nuestros dedos y esperemos lo mejor.
Comencemos con la relación de recurrencia:
Ahora, supondré que es lo suficientemente suave en el intervalo entre y . Apelar a una de nuestras herramientas analíticas clásicas, el teorema del valor medio, nos da
Además, cuando es suficientemente grande, suponemos que es aproximadamente el mismo a lo largo de este intervalo y, por lo tanto, toma el valor de cualquiera de las diferencias finitas dentro de este intervalo también. Esto significa que
Tn-ncnT(n)-T(n- n c )
T(n)T(n)−T(n−nc)ncT(n)−T(n−nc)nc=T(n−nc)+T(nc)+f(n)=T(nc)+f(n)=T(nc)+f(n)
Tn−ncnn T ′ ( ξ ) T ′ ( ξ ) ≈ T ( n ) - T ( n - ϵ )T(n)−T(n−nc)nc=T′(ξ∈(n−nc,n)).
nT′(ξ) ϵ = 1 n c ( T ( n ) - T ( n - 1 ) )T′(ξ)≈T(n)−T(n−ϵ)ϵ ϵ<nc
En particular, tome para obtener uno -proximación aproximada de diferencia dividida
Podemos telescopiar esto para obtener
ϵ=1nc(T(n)−T(n−1))T(n)−T(n−1)≈T(nc)+f(n)≈T(nc)+f(n)nc
T(n)≈∑knT(kc)kc+∑knf(k)kc
La perturbación de revela que tiene dos fases asintóticas, dependiendo de la naturaleza asintótica de .T(n)T(n)f(z)
Cuando ( es más rápido que ), entonces la suma derecha domina, y tenemos que a menudo se puede aproximar con la integral .ff(n)=o(nc)fncT(n)=Θ(∑knf(k)kc)∫nf(x)xcdx
Cuando , entonces la suma izquierda domina a la derecha. Aquí, tenemos que analizar la suma
donde .f(n)=ω(nc)
(∑knT(kc)kc)+Fc(n)
Fc(n)=∫nf(x)xcdx
En virtud del argumento de suavidad, podemos ver esto una vez más como una suma de Riemann anclada a la izquierda, aproximando la integral . La aplicación de un teorema de valor medio similar sobre la integral da
Podemos seguir adelante y aproximar esto por , que da la aproximación
para alguna constante que limita la serie.∫nT(xc)xcdx
∑kT(kc)kc≈∫nf(xc)xcdx=nT(ξ<nc)ξc
nT(nc)ncT(n)≤nMT(nc)nc+Fc(n)
M
Ahora, supongamos que tenemos la secuencia iterada donde , entonces podemos usar esta secuencia para telescopiar la desigualdad anterior para obtener:
Una vez más, podemos enlazar el término por alguna constante para encontrar que
donde . Simplificando un poco y fusionando algunos de los términos juntos (en particular, sabemos que(n,nc,nc2,nc3,…,nck)nck<2
T(n)≤n(∑ik−1MinciFc(nci)+Mknck)(*)
Fc(nci)T(n)=O(Fc(n)+nFc(nc)(Mn−c+M2n−c2+⋯+Mkn−ck))
k=logc(log(2)log(n))Mn−cn−ckes una constante), obtenemos
T(n)=O(nkFc(n)Mk)
Sin embargo, este límite es relativamente flojo, y debe consultar siempre que sea posible.(*)
Tenga en cuenta que de ninguna manera es tan riguroso. No he proporcionado ningún apoyo para que esto funcione más allá de algunas aproximaciones torpes. Sin embargo, si solo necesita una suposición asintótica rápida en aras del análisis informal, entonces puede ver que este esquema funciona bien (para valores suficientemente grandes de , generalmente suficiente) en la práctica.nn>10
De todos modos, para todas las opciones de y que he probado, el siguiente cálculo
donde
parece dar buenas aproximaciones . Esta técnica también se generaliza a las recurrencias de la forma
que se puede aproximar con
dondecf
T^(n)F(n)=n∑klogclogn2MknckF(nck)=∑knf(k)kc
M≈∑kT(kc)kcnT(nc)nc
T(n)=T(n−α(n))+T(β(n))+f(n)
αk(n)=α(k⋯(α(n)))#β(n)n,β(n),β(β(n)),…,β#β(n)(n)12T^(n)F(n)=n∑k#β(n)Mkαk(n)F(βk(n))=∑knf(k)α(k)
αk(n)=α(⋯k(α(n)))y denota el número de elementos de la secuencia tal que el último término esté entre y .
#β(n)n,β(n),β(β(n)),…,β#β(n)(n)12