Cómo calcular el orden de crecimiento para un fragmento de código dado

El orden de crecimiento para una pieza de código que resuelve un problema particular generalmente se expresa como un polinomio, que representa el número de operaciones ‘primitivas’ que se deben realizar expresadas en función del tamaño de entrada.

Lo primero es lo que constituye una operación `primitiva`. La mayoría del análisis de código se realiza en un modelo de máquina de acceso aleatorio, en el que se incluyen todas las operaciones aritméticas, de comparación, de asignación y lógicas.

Considere esta paz de código para calcular el factorial de un número:

función factorial (n):
hecho = 1 // 1 operación primitiva, cada costo c1
para i en rango (0 a n-1): // n operaciones primitivas, cada costo c2
hecho = hecho * i // mul y asignación 2 * n operaciones, cada c3
hecho de retorno // 1 operación primitiva, costo c4

Ahora, si sumas el costo de todas las operaciones primitivas, obtienes

C = c1 + n * c2 + 2 * c3 * n + c4
= (c1 + c4) + n * (c2 + c3)
= C1 + n * C2

C = [matemáticas] \ theta (n) [/ matemáticas]

Después de contar todas las constantes de las operaciones, ignoramos los términos de orden inferior y las constantes y lo expresamos como una de las funciones de límites.

Compare el crecimiento de pedidos de log2n y pown

More Interesting

Cómo agregar dos matrices en Java e inicializar la tercera matriz con la suma de los dos elementos correspondientes de las dos matrices

¿Qué temas principales debería discutir en mi presentación de 50 minutos sobre aprendizaje automático y robótica?

Si existen múltiples rutas más cortas entre 2 nodos en un gráfico no dirigido, ¿es posible imprimirlas todas utilizando el algoritmo de Dijkstra?

Cómo revertir una lista vinculada usando la recursividad de cola y dos punteros

¿Cuáles son algunos consejos para crear mi propia biblioteca para competencias de codificación?

Analizador de programación: ¿por qué devolvemos los datos restantes (no consumidos) mientras escribimos un analizador?

¿Cuáles son los requisitos previos para Introducción a los algoritmos de Thomas Cormen?

¿Cómo puedo encontrar la ruta más larga de un gráfico bidireccional utilizando el algoritmo BFS?

Cómo aprender la estructura de datos en 1 mes en el albergue

¿Qué es 600 en forma binaria?

¿Cuál es el mejor libro para aprender a programar en estructuras de datos y algoritmos desde el principio?

¿Qué algoritmo se utiliza en los puntos de calificación para las clasificaciones de cricket ICC?

¿Es la Biblia solo los algoritmos de aprendizaje automático de la realidad que nos dicen cómo se desarrolló, comenzando con el 0 que se convirtió en 1 para la luz?

¿En qué debe centrarse un estudiante de ingeniería informática, proyectos o estructuras de datos y algoritmos?

¿Cómo son útiles las conferencias sobre algoritmos de Ravindra Babu Ravula para las entrevistas en el campus?