IIC1253 / IIC1253-2024-1

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Consulta sobre cálculo de complejidad contabilizando comparaciones

juanivegam opened this issue · comments

Hola! Tenía una duda sobre el cálculo de complejidad. He notado en los ejercicios que he visto, que en el caso de las funciones recursivas para calcular la complejidad se define el T(n) como la cantidad de comparaciones que hace el algoritmo en función del input de largo n. ¿Siempre que la función sea recursiva se trabaja de esta forma? ¿En el caso de las funciones iterativas es válido definir el T(n) como la cantidad de comparaciones que realiza el algoritmo?
Muchas gracias desde ya por su respuesta.

commented

Hola!

En general no es muy relevante determinar un criterio consistente para decidir cuales operaciones contar y cuales no. Esto se debe a que, en una secuencia de instrucciones seguidas, el hecho de que contemos 1, 2, 3 o 10 de las instrucciones consecutivas no afectará la complejidad asintótica del algoritmo. En general se cuentan las comparaciones que realiza el algoritmo, pero también se podrían contar las operaciones de suma, u otras. Lo importante es que se cuenten las operaciones que expresen lo que hace el algoritmo y que no se deje ninguna importante de lado.

Sobre el tipo de operaciones que cuentas en un algoritmo iterativo, puedes contar las comparaciones que estén dentro y también las que estén fuera del loop. La razón por la que no es relevante contar las que están fuera del loop es la misma: estas se traducirán en una constante en la notación asintótica, por lo que no afectarán el resultado final. Mientras no se te escape ninguna instrucción esencial que determine el comportamiento del algoritmo, no importa si cuentas una instrucción de más o una de menos.

Espero que se entienda mejor :)

Perfecto, me queda súper claro, muchas gracias!