4 votos

Cómo resolver la relación de recurrencia $T(n) = T(\lceil n/2\rceil) + T(\lfloor n/2\rfloor) + 2$

Estoy tratando de resolver una relación de recurrencia para la función exacta (necesito el número exacto de las comparaciones por algún algoritmo). Esto es lo que necesito para resolver:

$$\begin{aligned} T(1) &= 0 \\ T(2) &= 1 \\ T(n) & = T(\lceil n/2\rceil) + T(\lfloor n/2\rfloor) + 2 \qquad(\text{for each %#%#%}) \end{aligned}$$

Sin el techo y el suelo sé que la solución es $n\ge2$ si $T(n) = 3n/2 -2$ es la potencia de 2, pero, ¿cómo puedo resolver con ellos? (y para cada $n$, no sólo a $n$ que es la potencia de 2).

Muchas gracias.

4voto

Joe Gauterin Puntos 9526

Como se mencionó en el comentario, las dos primeras condiciones $T(1) = 0, T(2) = 1$ es incompatible con la última condición $$\requieren{cancel} T(n) = T(\lfloor\frac{n}{2}\rfloor) + T(\lceil\frac{n}{2}\rceil) = 2\quad\text{ para } \color{red}{\cancelto{\;\color{black}{n > 2}\;}{\color{color gris}{n \ge 2}}} \etiqueta{*1}$$ en $n = 2$. Vamos a asumir la condición $(*1)$ sólo es válida para $n > 2$ lugar.

Deje $\displaystyle\;f(z) = \sum\limits_{n=2}^\infty T(n) z^n\;$ ser la generación de la función para que la secuencia de $T(n)$. Multiplicar el $n^{th}$ plazo de $(*1)$ $z^n$ y empezar a sumar de a $n = 3$, obtenemos:

$$\begin{array}{rrl} &f(z) - z^2 &= T(3) z^3 + T(4) z^4 + T(5) z^5 + \cdots\\ &&= (T(2) + 2)z^3 + (T(2) + T(2) + 2)z^4 + (T(2)+T(3)+2)z^5 + \cdots\\ &&= (1+z)^2 ( T(2)z^3 + T(3)z^5 + \cdots) + 2(z^3 + z^4 + z^5 + \cdots)\\ &&= \frac{(1+z)^2}{z}f(z^2) + \frac{2z^3}{1-z}\\ \implies & f(z) &= \frac{(1+z)^2}{z}f(z^2) + z^2\left(\frac{1+z}{1-z}\right)\\ \implies & \frac{(1-z)^2}{z} f(z) &= \frac{(1-z^2)^2}{z^2}f(z^2) + z(1-z^2) \end{array} $$ Sustituto $z^{2^k}$ $z$ en la última expresión y suma más de $k$, obtenemos

$$f(z) = \frac{z}{(1-z)^2}\sum_{k=0}^\infty \left(z^{2^k} z^{3\cdot2^k}\right) = \left( \sum_{m=1}^\infty m z^m \right)\sum_{k=0}^\infty \left(z^{2^k} z^{3\cdot2^k}\right)$$

Con esta expresión, podemos leer en $T(n)$ como el coeficiente de $z^n$ $f(z)$ y obtener

$$T(n) = \sum_{k=0}^{\lfloor \log_2 n\rfloor} ( n - 2^k ) - \sum_{k=0}^{\lfloor \log_2(n/3)\rfloor} (n - 3\cdot 2^k)$$

Para $n > 2$, podemos simplificar esto como $$\bbox[4pt,border: 1px solid black;]{ T(n) = n \color{red}{\big(\lfloor \log_2 n\rfloor - \lfloor \log_2(n/3)\rfloor\big)} - \color{blue}{\big( 2^{\lfloor \log_2 n\rfloor + 1} - 1 \big)} + 3\color{blue}{\big( 2^{\lfloor \log_2(n/3)\rfloor +1} - 1\big)}}\etiqueta{*2}$$

Hay varias observaciones que podemos hacer.

  • Al $n = 2^k, k > 1$, tenemos $$T(n) = n(k - (k-2)) - (2^{k+1} - 1) + 3(2^{k-1} - 1) = \frac32 n - 2$$

  • Al $n = 3\cdot 2^{k-1}, k > 0$, tenemos $$T(n) = n(k - (k-1)) - (2^{k+1} - 1) + 3(2^k - 1) = \frac53 n - 2$$

  • Para $2^k < n < 3\cdot 2^{k-1}, k > 1$, el coeficiente de $n$ $(*2)$ (i.e el factor en color rojo) es $2$, mientras que el resto (me.e aquellos en color azul) no cambian con el $k$. Por lo $T(n)$ es no lineal con pendiente $2$.

  • Para $3\cdot 2^{k-1} < n < 2^{k+1}, k > 1$, el coeficiente de $n$ $(*2)$ ahora es de 1. Una vez que la ganancia $T(n)$ es lineal ahí, pero con pendiente $1$ lugar.

Combinar estos, encontramos en general

$$\frac32 n - 2 \le T(n) \le \frac53 n - 2 \quad\text{ for }\quad n > 2$$ y $T(n) = O(n)$ como se esperaba. Sin embargo, $\frac{T(n)}{n}$ no concurre cualquier número, pero oscilan "entre" $\frac32$$\frac53$.

$T(n) - (\frac32 n - 2)

Arriba hay una foto ilustrating el comportamiento de $T(n)$. El azul ventajas son la valor de $T(n) - (\frac32 n - 2)$ calculado para varios $n$. La línea roja es $\frac{n}{6} = (\frac53 n - 2) - (\frac32 n - 2)$. Como se puede ver, $T(n)$ no concurre ninguna línea recta. En su lugar, oscilan entre líneas de $\frac32 n - 2$ $\frac53 n - 2$ como se discutió antes.

2voto

Hagen von Eitzen Puntos 171160

Lema. $T(n+1)-T(n)=\begin{cases}2&\text{if $2\cdot 2^k\le T(n)<3\cdot 2^k$ for some $k\in\mathbb Z$}\\1&\text{otherwise}\end{cases}$

Prueba. Esto es verificado directamente por $n\le 3$. Para mayor $n$, tenemos $$T(n+1)-T(n)=T(\lceil\frac{n+1}2\rceil)+T(\lfloor\frac{n+1}2\rfloor)-T(\lceil\frac{n}2\rceil) -T(\lfloor\frac{n}2\rfloor)$$ Si $n=2m$ es par, esto es $T(m+1)-T(m)$. Y si $n=2m+1$ es impar, es $T(m+1)-T(m)$ nuevo. Como en ambos casos, $n$ tiene el mismo dos dígitos iniciales como $m$, la demanda sigue por inducción. $_\square$

Corolario. Deje $n=2^k+r$$0\le r<2^k$. Entonces $$T(n)=\begin{cases}3\cdot2^{k-1}+2r&\text{if $r<2^{k-1} $}\\ 2^{k+1}+r&\text{si $r\ge 2^{k-1} $}\end{casos} $$

Prueba. Por inducción utilizando el lema. $_\square$

Especialmente, $T(n)/n$ oscila como también se encuentra por achille hui, tomando el valor de $3/2$ $r=0$ $5/3$ $r=2^{k-1}$

1voto

OneSmartGuy Puntos 921

Suponemos que a $T(n)=O(n)$

Por eso, $\exists c,b>0 \text{ and } n_0 \geq 1 \text{ such that } \forall n \geq n_0:$

$$T(n) \leq cn-b$$

Supongamos que la hipótesis de stands también para$\lfloor \frac{n}{2} \rfloor$$\lceil \frac{n}{2} \rceil$:

$$T(\lfloor \frac{n}{2} \rfloor) \leq c\lfloor \frac{n}{2} \rfloor-b \\ T(\lfloor \frac{n}{2} \rfloor) \leq c\lceil \frac{n}{2} \rceil-b $$

Entonces:

$$T(n) \leq c\lceil \frac{n}{2} \rceil-b+c\lfloor \frac{n}{2} \rfloor-b+2=c(\lceil \frac{n}{2}+\lfloor \frac{n}{2} \rfloor)-2b+2 \\ =cn-b-(b-2) \leq cn-b \text{ if } b \geq 2 $$

Por lo tanto, $T(n)=O(n)$.

0voto

mathlove Puntos 57124

Creo que todo lo que tienes que hacer es cambiar $T(1)=0$$T(1)=-1/2$.

Podemos demostrar que la siguiente es válido para cada $n\ge 1$ por inducción. $$T(n)=\frac{3n}{2}-2\tag1$$

Para $n=1$, se tiene trivialmente.

Para $n=2$, se tiene trivialmente.

Supongamos que se tiene para $n,n+1(n\ge 1)$. A continuación, $$T(2n)=2T(n)+2=2\left(\frac{3n}{2}-2\right)+2=3n-2=\frac{3(2n)}{2}-2,$$ $$T(2n+1)=T(n+1)+T(n)+2=\frac{3(n+1)}{2}-2+\frac{3n}{2}-2+2=\frac{3(2n+1)}{2}-2.$$ Por lo tanto, sabemos que tiene de $2n, 2n+1$

Por lo tanto, $(1)$ es válido para cada $n\ge 1$. Q. E. D.

0voto

Hurkyl Puntos 57397

Un problema común estrategia de resolución es resolver un problema más sencillo, luego de averiguar cómo el problema real difiere de la más simple.

Ya has trabajado que las competencias de $2$ satisfacer $T(n) = 3n/2 - 2$. (En realidad, eso no es correcto, porque la $T(1) \neq -1/2$, pero vamos a ignorar que, por ahora)

Así que allí está la solución más simple: $T$ se parece a $3n/2 - 2$, y ahora es su trabajo para averiguar exactamente cuál es la diferencia.

Para ello, defina $S(n) = T(n) - (3n/2 - 2)$, y averiguar lo que la recurrencia de la $S$ satisface; será mucho más simple que la de $T$.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X