Documentos de Académico
Documentos de Profesional
Documentos de Cultura
3. ¿Desde que punto o a partir de cuantos datos n, el algoritmo dado por n4 empieza a ejecutarse mejor que el
algoritmo cuya complejidad es 2n ? . Justificar su respuesta. 3 ptos.
4. Dado el sgte. Algoritmo, analizar la complejidad computacional, θ, según lo que se pide. 4 ptos.
1. Contar:= 0
2. PARA i:= 1 : n
3. j:= 2
4. MIENTRAS j ≤ n
5. j:= j2
6. Contar:= Contar + 1
7. FIN MIENTRAS
8. FIN PARA
9. Retornar Contar
5. Suponga que un algoritmo recursivo presenta la ecuación T(n) = 5T(n/3) + n para n ≥ 2; T(1) = 1; donde n
se asume que es potencia de 3. Solucione la ecuación por el método iterativo, para determinar cuántas
operaciones realiza el algoritmo y cuál es su complejidad. 5 ptos.
DESARROLLO
Existe un 𝑛𝑛𝑜𝑜 𝜖𝜖 𝑁𝑁 𝑦𝑦 𝑑𝑑𝑑𝑑𝑑𝑑 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 𝑐𝑐1 𝑦𝑦 𝑐𝑐2 , 𝑡𝑡𝑡𝑡𝑡𝑡 𝑞𝑞𝑞𝑞𝑞𝑞 𝑐𝑐1 (2𝑛𝑛 ) ≤ 𝑓𝑓(𝑛𝑛) ≤ 𝑐𝑐2 (2𝑛𝑛 )
Para todo 𝑛𝑛 ≥ 𝑛𝑛0
Además, el lim 𝑓𝑓(𝑛𝑛)/𝑔𝑔(𝑛𝑛) = 𝑐𝑐
𝑛𝑛→∝
c. Si la complejidad del algoritmo X es mayor que la del algoritmo Y, ¿el algoritmo X es necesariamente
más difícil de entender que algoritmo Y? Explica tu respuesta.
No ya que cuando nos referimos a complejidad se refiere al análisis del comportamiento del algoritmo
(número de procesos, tiempo que se demora), para un algoritmo con mayor complejidad no es
necesariamente más complicado de comprenderlo, solamente sería un algoritmo que lo llevara a un
mismo resultado que el otro algoritmo con la diferencia que uno entregara un resultado con un mayor
número de procesos y/o tiempo. Tomando como ejemplo los algoritmos de ordenamiento todos llevan al
mismo procedimiento, pero no todos realizan la misma cantidad de operaciones elementales.
Entonces:
𝑓𝑓(𝑛𝑛) = 𝜃𝜃�𝑔𝑔(𝑛𝑛)� 𝑠𝑠𝑠𝑠 𝑦𝑦 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 𝑠𝑠𝑠𝑠 𝑓𝑓(𝑛𝑛) = 𝑂𝑂�𝑔𝑔(𝑛𝑛)� 𝑦𝑦 𝑓𝑓(𝑛𝑛) = Ω(𝑔𝑔(𝑛𝑛))
𝒇𝒇(𝒏𝒏) = 𝑶𝑶�𝒈𝒈(𝒏𝒏)� F
𝒇𝒇(𝒏𝒏) = 𝛀𝛀(𝒈𝒈(𝒏𝒏)) V
𝒇𝒇(𝒏𝒏) = 𝜽𝜽�𝒈𝒈(𝒏𝒏)� F
Entonces:
Si 𝑓𝑓(𝑛𝑛) = 𝑂𝑂(𝑔𝑔(𝑛𝑛)) y 𝑓𝑓(𝑛𝑛) = Ω(𝑔𝑔(𝑛𝑛)), por lo tanto 𝑓𝑓(𝑛𝑛) = 𝜃𝜃(𝑔𝑔(𝑛𝑛)) Falso
𝒏𝒏! ≠ 𝜽𝜽(𝟓𝟓𝒏𝒏 )
3. ¿Desde que punto o a partir de cuantos datos n, el algoritmo dado por n4 empieza a ejecutarse mejor que el
algoritmo cuya complejidad es 2n ? . Justificar su respuesta. 3 ptos.
Para que se el algoritmo 𝑛𝑛4 se comience a ejecutar mejor que el algoritmo 2𝑛𝑛 , debe ser:
𝑛𝑛4 < 2𝑛𝑛
Elegimos puntos de prueba para los intervalos:
𝑛𝑛 = 2:
(2)4 < 22 → 16 < 4
No cumple.
𝑛𝑛 = 4
(4)4 < 24 → 250 < 16
No cumple.
𝑛𝑛 = 8
(8)4 < 28 → 4096 < 256
No cumple.
𝑛𝑛 = 16
(16)4 < 216 → 65536 < 65536
No cumple.
𝒏𝒏 = 𝟏𝟏𝟏𝟏
(17)4 < 217 → 83521 < 131072
Si cumple.
Entonces, desde 17 datos el algoritmo dado por 𝑛𝑛4 , empieza a ejecutarse mejor que el algoritmo
2𝑛𝑛 .
4. Dado el sgte. Algoritmo, analizar la complejidad computacional, θ, según lo que se pide. 4 ptos.
10. Contar:= 0
11. PARA i:= 1 : n
12. j:= 2
13. MIENTRAS j ≤ n
14. j:= j2
15. Contar:= Contar + 1
16. FIN MIENTRAS
17. FIN PARA
18. Retornar Contar
5. Suponga que un algoritmo recursivo presenta la ecuación T(n) = 5T(n/3) + n para n ≥ 2; T(1) = 1; donde n
se asume que es potencia de 3. Solucione la ecuación por el método iterativo, para determinar cuántas
operaciones realiza el algoritmo y cuál es su complejidad. 5 ptos.
Tenemos por tanto el tiempo de ejecución del algoritmo definido mediante una ecuación en
recurrencia. Para resolverla, haciendo el cambio 𝑛𝑛 = 3𝑘𝑘 queda
𝑇𝑇(3𝑘𝑘 ) = 5𝑇𝑇(3𝑘𝑘−1 ) + 𝑛𝑛
Para calcular las constantes necesitamos resolver un sistema de dos ecuaciones con dos incógnitas
(c1 y c2) basándonos en dos condiciones iniciales de la ecuación en recurrencia. Como de partida
sólo disponemos de una (T(1) = 1), necesitamos obtener otra. Para ello, apoyándonos en la
definición recursiva de T y para n = 3, obtenemos
Por tanto
Tiempo de complejidad:
𝑇𝑇(𝑛𝑛) ∈ 𝜣𝜣(𝒏𝒏𝐥𝐥𝐥𝐥𝐥𝐥𝟑𝟑 𝟓𝟓 )
𝑻𝑻(𝒏𝒏)
lim
𝑛𝑛→∞ 𝒏𝒏𝐥𝐥𝐥𝐥𝐥𝐥 𝟑𝟑 𝟓𝟓
𝑻𝑻(𝒏𝒏)
lim = −∞
𝑛𝑛→∞ 𝒏𝒏𝐥𝐥𝐥𝐥𝐥𝐥 𝟑𝟑 𝟓𝟓