¿Cómo obtengo un límite superior para T (n) = T (n / 2) + n?

Sí, tu suposición es correcta. Es O (n) solamente. Y es la explicación gradual del método de sustitución.

Somos una relación de recurrencia como: –

T (n) = T (n / 2) + n

Ahora resolviendo esto a través del método de sustitución

T (n) = T (n / 2) + n

T (n) = T (n / 2 ^ 2) + n / 2 + n

T (n) = T (n / 2 ^ 3) + n / 2 ^ 2 + n / 2 + n

.

.

. k veces repitiendo, obtenemos

T (n) = Tn / 2 ^ k + n / 2 ^ k-1 n / 2 ^ k-2 + …… .. + n / 2 + n

log (n) veces repitiendo …

T (n) = T (n / 2 ^ logn) + n / 2 ^ logn-1 + n / 2 ^ logn-2 + ……… + n / 2 + n

Dado que T (n / 2 ^ logn) = T (n / n) {propiedad de log}

T (n / n) = 1; por lo tanto nuestra función se convierte en:

T (n) = 1+ n / 2 ^ logn-1 + n / 2 ^ logn-2 + ………… .. + n / 2 + n

Podemos escribir en orden inverso como: –

T (n) = n + n / 2 + n / 2 ^ 2 + ……………… + n / 2 ^ logn-1 +1

Tomando n común de todos los términos, obtenemos: –

T (n) = n (1 + 1/2 + 1/2 ^ 2 + ……………………… + n / 2 ^ logn-1) + 1

Aquí obtenemos un GP decreciente con una relación 1/2 y el número total de términos son logn, por lo tanto, usando la fórmula de la suma de n términos de GP, obtendremos:

T (n) = n ((1 – 1/2 ^ logn) / 1–1 / 2) + 1

T (n) + n ((1 – 1 / n) / 1/2) {ya que 2 ^ logn es igual a n}

Como 1 / n se acerca a 0, por lo tanto, lo ignoramos y obtenemos

T (n) = n / (1/2) +1

T (n) = 2n +1

T (n) = O (n) {en las notaciones asintóticas ignoramos las constantes}

Nota: Hay algunos otros métodos para resolver, como el teorema de Master. Pero funciona solo en algunos casos especiales y en otros casos da respuestas incorrectas. Por lo tanto, lo recomendaré solo con el Método de sustitución.

Otra respuesta es correcta, pero me gustaría presentar una forma más fácil de resolver este tipo de recurrencias. Usando el teorema de maestría podemos resolver esto sin tener que hacer un análisis completo, esto puede ser útil si desea resolver este tipo de problemas en los exámenes sin tener que expandir la recurrencia. Usando el tercer caso del teorema del maestro, es sencillo ver que esto es realmente O (n).

Esto es facil –
En el primer nivel de recursión, haces operaciones ‘n’. En el siguiente nivel, realiza operaciones ‘n / 2’, ‘n / 4’ en el siguiente nivel … y así sucesivamente …

Como se trata de una serie que disminuye geométricamente, solo el número de operaciones en el nivel en el que realiza la mayor cantidad de trabajo, que en este caso es el primero, cuenta. Como realiza operaciones ‘n’ en el primer nivel, el límite de tiempo es O (n).

La otra forma de pensar en esto es contar el número total de operaciones, que será
n + n / 2 + n / 4 + … .. hasta que la recursión toca fondo.

Pero incluso si la recursión no tocó fondo, y dejamos que la serie corra hasta el infinito, los factores con n, es decir (1, 1/2, 1/4, …) solo suman una constante.

Entonces, el número total de operaciones de la recurrencia dada está estrictamente limitado por una constante * n. Y según las reglas de la gran O, O (constante * n) es O (n).

Puedes hacer esto de tres maneras:
1- el método de sustitución. usando las matemáticas de inducción obtendrás lgn yn simplemente eliges la Gran n, entonces la respuesta será O (n).

2-El teorema maestro. marque el caso3, entonces la respuesta será O (n).

3- también puedes usar El árbol recursivo.

More Interesting

¿Cómo escribiría una función que encuentre la entrada máxima n tal que f (n) <c en el tiempo O (lg n)?

Encontré los términos suma de verificación, MD5, SHA, etc. ¿Qué son la suma de verificación, MD5, SHA y la firma de código? ¿Cómo están relacionados y cómo funcionan?

En comparación con los matemáticos, ¿cuáles son las habilidades matemáticas de los investigadores de IA?

¿Podemos crear música original a través de la permutación digital?

Cómo mostrar una universidad Seré una gran adición a su programa

Como estudiante de primer año de ciencias de la computación, ¿debería saber estas matemáticas?

Mi computadora portátil está enchufada pero no se carga. ¿Cómo soluciono este problema?

¿Cuál es el algoritmo eficiente para encontrar la suma de los dígitos del factorial de un número (el número puede ser hasta 500), es decir, para num = 5, ans = 3 (como 5! = 120)?

¿Cuáles son los principios básicos en trigonemetría que debo saber?

¿Por qué los lenguajes de programación como C no definen constantes como Pi o e?

En Java, ¿por qué usar un iterador para iterar a través de LinkedList más rápido que usar un bucle for?

¿Qué papel juega la habilidad matemática en la ingeniería informática o la codificación?

Cómo escribir un programa que calcule 'b' elevado a power 'n' usando solo suma e iteración

Cómo aplicar el álgebra abstracta en informática

¿Puedo aplicar a la escuela de posgrado para estudiar informática teórica?