Está en la página 1de 4

Docente

UNIVERSIDAD NACIONAL DE TRUJILLO


FACULTAD: CIENCIAS FISICAS Y MATEMATICAS
ESCUELA ACADÉMICO PROFESIONAL: INFORMATICA
PRUEBA ANÓNIMA UNT
NOMBRE DE LA EXPERIENCIA CURRICULAR: ALGORITMOS Y COMPLEJIDADMATRÍCULA
0489100989A001

DOCENTE/COORDINADOR: RODRIGUEZ MELQUIADES JOSE ANTONIO

SEMESTRE: 2022 - 2 CICLO: 4 SECCION: A - B CALIFICACIÓN: RECALIFICACIÓN:

N° DE EXAMEN PARCIAL AULA FECHA HORA INICIO HORA TÉRMINO FIRMA


1 VIRTUAL 24/10/22 7:15 am 8.50 am

1. Responda, justificando, lo que se pide: 4 ptos.


a) Suponga un problema solucionado mediante un algoritmo en θ(2 ). ¿Qué podemos concluir acerca de la
n

complejidad del problema?


b) Suponga un problema que puede ser solucionado con dos algoritmos en θ(n2) y θ(2n). ¿Un algoritmo
siempre superara al otro?
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.

2. ¿ n! no o no es θ(5n) ?. Justificar. 4 ptos.

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.

Entrada: 22^k para algún entero positivo k.


Salida: Numero de veces que la línea 6 se ejecuta.

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

1. Responda, justificando, lo que se pide: 4 ptos.


a. Suponga un problema solucionado mediante un algoritmo en θ(2n). ¿Qué podemos concluir acerca de la
complejidad del problema?

Existe un 𝑛𝑛𝑜𝑜 𝜖𝜖 𝑁𝑁 𝑦𝑦 𝑑𝑑𝑑𝑑𝑑𝑑 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 𝑐𝑐1 𝑦𝑦 𝑐𝑐2 , 𝑡𝑡𝑡𝑡𝑡𝑡 𝑞𝑞𝑞𝑞𝑞𝑞 𝑐𝑐1 (2𝑛𝑛 ) ≤ 𝑓𝑓(𝑛𝑛) ≤ 𝑐𝑐2 (2𝑛𝑛 )
Para todo 𝑛𝑛 ≥ 𝑛𝑛0
Además, el lim 𝑓𝑓(𝑛𝑛)/𝑔𝑔(𝑛𝑛) = 𝑐𝑐
𝑛𝑛→∝

Lo que implica que f(n) = 𝜃𝜃(𝑔𝑔(𝑛𝑛))


b. Suponga un problema que puede ser solucionado con dos algoritmos en θ(n2) y θ(2n). ¿Un algoritmo
siempre superara al otro?

Si ya que en alguno punto θ(2n) superara a θ(n2), sobre todo si analizamos


𝑎𝑎 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 𝑑𝑑𝑑𝑑 𝑞𝑞𝑞𝑞𝑞𝑞 𝑛𝑛 > 4, 𝑒𝑒𝑒𝑒 𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑 𝑎𝑎 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 𝑑𝑑𝑑𝑑 𝑛𝑛0 = 4 → θ(2n ) > θ(n2 )

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.

2. ¿ n! es o no es θ(5n) ?. Justificar. 4 ptos.

Entonces:
𝑓𝑓(𝑛𝑛) = 𝜃𝜃�𝑔𝑔(𝑛𝑛)� 𝑠𝑠𝑠𝑠 𝑦𝑦 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 𝑠𝑠𝑠𝑠 𝑓𝑓(𝑛𝑛) = 𝑂𝑂�𝑔𝑔(𝑛𝑛)� 𝑦𝑦 𝑓𝑓(𝑛𝑛) = Ω(𝑔𝑔(𝑛𝑛))
𝒇𝒇(𝒏𝒏) = 𝑶𝑶�𝒈𝒈(𝒏𝒏)� F
𝒇𝒇(𝒏𝒏) = 𝛀𝛀(𝒈𝒈(𝒏𝒏)) V
𝒇𝒇(𝒏𝒏) = 𝜽𝜽�𝒈𝒈(𝒏𝒏)� F

También si el limite existe:


𝑛𝑛!
lim = +∞ Falso
𝑛𝑛→∞ 5𝑛𝑛
𝑓𝑓(𝑛𝑛)
Dado que el lim ≠ ∞, por lo tanto f(n) = O�g(n)�
𝑛𝑛→∞ 𝑔𝑔(𝑛𝑛)

También si el limite existe:


𝑛𝑛!
lim 5𝑛𝑛 = +∞ Verdadero
𝑛𝑛→∞
𝑓𝑓(𝑛𝑛)
Dado que el lim ≠ 0, por lo tanto f(n) = Ω(g(n))
𝑛𝑛→∞ 𝑔𝑔(𝑛𝑛)

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.

Entrada: 22^k para algún entero positivo k.


Salida: Numero de veces que la línea 6 se ejecuta.

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 ) + 𝑛𝑛

y llamando 𝑡𝑡𝑘𝑘 𝑎𝑎 𝑇𝑇(3𝑘𝑘 ) obtenemos


𝑡𝑡𝑘𝑘 = 𝑡𝑡𝑘𝑘−1 + 𝑛𝑛,
ecuación en recurrencia no homogénea de ecuación característica (x–2)(x–1) = 0 y
consecuentemente

𝑡𝑡𝑘𝑘 = 𝑐𝑐1 2𝑘𝑘 + 𝑐𝑐2 1𝑘𝑘 = 𝑐𝑐1 2𝑘𝑘 + 𝑐𝑐2 .

Cambiando entonces 𝑡𝑡𝑘𝑘 por 𝑇𝑇(3𝑘𝑘 ) queda

𝑇𝑇(3𝑘𝑘 ) = 𝑐𝑐1 2𝑘𝑘 + 𝑐𝑐2 .


y deshaciendo el cambio 𝑛𝑛 = 3𝑘𝑘 (o, lo que es igual, 𝑘𝑘 = log 3 𝑛𝑛), obtenemos finalmente

𝑇𝑇(𝑛𝑛) = 𝑐𝑐1 2log3 𝑛𝑛 + 𝑐𝑐2 = 𝑐𝑐1 𝑛𝑛log3 5 + 𝑐𝑐2 .

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

𝑇𝑇(3) = 𝑛𝑛 + 5𝑇𝑇(𝑛𝑛/3) = 𝑛𝑛 + 5𝑇𝑇(1) = 𝑛𝑛 + 5.

Por tanto

1 = 𝑇𝑇(1) = 𝑐𝑐1 + 𝑐𝑐2 𝑐𝑐1 = −𝑛𝑛 − 3

𝑛𝑛 + 5 = 𝑇𝑇(3) = 2𝑐𝑐2 + 𝑐𝑐1 𝑐𝑐2 = 𝑛𝑛 + 4

Sustituyendo estos valores en la ecuación, obtenemos finalmente

𝑻𝑻(𝒏𝒏) = (−𝒏𝒏 − 𝟑𝟑)𝒏𝒏𝐥𝐥𝐥𝐥𝐥𝐥𝟑𝟑 𝟓𝟓 + (𝒏𝒏 + 𝟒𝟒 ).

Tiempo de complejidad:

𝑇𝑇(𝑛𝑛) ∈ 𝜣𝜣(𝒏𝒏𝐥𝐥𝐥𝐥𝐥𝐥𝟑𝟑 𝟓𝟓 )

Para justificarlo, basándonos en las propiedades de Θ, basta ver que

𝑻𝑻(𝒏𝒏)
lim
𝑛𝑛→∞ 𝒏𝒏𝐥𝐥𝐥𝐥𝐥𝐥 𝟑𝟑 𝟓𝟓

existe, es acotado y distinto de cero. Pero eso es cierto ya que

𝑻𝑻(𝒏𝒏)
lim = −∞
𝑛𝑛→∞ 𝒏𝒏𝐥𝐥𝐥𝐥𝐥𝐥 𝟑𝟑 𝟓𝟓

También podría gustarte