Vous êtes sur la page 1sur 26

ALGORITMICA III

Algorítmica III

Análisis de Estructuras de Control


Introducción
CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORITMICA III

Contenido
● Introducción.
● Principio de Invariancia.
● Operación Elemental.
● Introducción al Análisis de Eficiencia.
– Estructuras Secuenciales.
– Estructuras Condicionales Si.
– Estructuras Para ó Desde.
– Estructuras Mientras y Repetir.

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORITMICA III

Contenido
● Estructuras complejas.
● Conclusiones.

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORITMICA III

Introducción
● Existen problemas que no se conoce ningún algoritmo eficiente.
– El viajante de comercio,
– El coloreado óptimo de grafos,
– El problema de la mochila,
– Los ciclos hamiltoneanos,
– La programación entera,
– La búsqueda del camino más simple más largo de un
grafo.
● Algoritmo que resuelva cualquiera problema anterior
proporciona un algoritmo eficiente para todas las instancias.

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORITMICA III

Introducción
● Es sencillo verificar la validez de una supuesta
solución que encontrar una solución partiendo de
cero.
● Un algoritmo es más eficiente si es mejor que un
algoritmo evidente ó se trata del mejor algoritmo
posible para resolver nuestro problema.
– Un algoritmo de tiempo polinomial puede no ser
práctico si se considera la constante multiplicativa
oculta es demasiado grande.
● Mientras que un algoritmo que requiera un tiempo
exponencial en el peor caso puede resultar sumamente
rápido en la mayoría de los casos.
CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORITMICA III

Principio de la Invariancia
● Dos implementaciones distintas de un
mismo algoritmo no diferirán en su
eficiencia en más de una constante
multiplicativa.
– Sean t1(n) y t2(n) tiempos de implementación
del algoritmo M, c y d constantes; entonces
t1(n) <= ct2(n) y t2(n) <= dt1(n). Entonces
toda implementación t(n) esta acotada
superiormente por kt(n)
● Concluimos, toda implementación t(n) esta
acotada superiormente por k*t(n).
CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORITMICA III

Operación Elemental
● Es aquella cuyo tiempo de ejecución se puede
acotar superiormente por una constante.
● Análisis algorítmico depende del número de
operaciones elementales, no nos preocupará
el tiempo empleado.
● Contabilizando el número de operaciones
elementales encontraremos la función del
algoritmo.

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORITMICA III

Operación Elemental
● Criterio de Costo Logarítmico: El tiempo de
ejecución como proporcional al tamaño de los
datos (número de bits necesario para codificar
los datos).
● El número de bits necesario para representar
un número entero a esta dado por:

  log 2 a  + 1 a ∈ Z − { 0}
ω(a ) = 
 1 a= 0
CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORITMICA III

Operación Elemental
● Criterio de Costo Uniforme: Cada instrucción
de la maquina es ejecutada en una unidad de
tiempo.
● Sea x1, x2, ... xn instrucciones; entonces t(xi) =
1 para i = 1, 2, ..., n.
● Entonces el tiempo de ejecución es el número
de operaciones.

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORITMICA III

Operación Elemental
● Algoritmo hace “a” adiciones, “m”
multiplicaciones y “s” asignaciones cuyos
tiempos ta(n), tm(n) y ts(n), tiempo total t para
el algoritmo es:
t <= ata + mtm + sts
t <= max(ta ,tm ,ts) x (a + m + s)
t <= (a + m + s)

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORITMICA III

Introducción al análisis de Eficiencia


● El análisis de los algoritmos suele efectuarse
desde adentro hacia fuera.
● Primero se determina el tiempo requerido por
instrucciones individuales.
● Luego se combinan de acuerdo a las
estructuras de control que enlazan las
instrucciones.

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORITMICA III

Introducción al análisis de Eficiencia


● Las sumas y multiplicaciones con coste
unitario, aun en aquellos operandos con
tamaño crece con el tamaño del caso.
– Si se necesita operandos tan grandes, es
preciso descomponerlos n segmentos,
guardarlos en un vector, e invertir el tiempo
necesario para efectuar la aritmética de
precisión múltiple; tales algoritmos no pueden
ser de tiempo polinómico.
● Es necesario conocer principios generales para
analizar las estructuras de control conocidas.
CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORITMICA III

Estructuras Secuenciales
● Sean P1 y P2 dos fragmentos de un algoritmo
(instrucciones simples ó una simple y una
compuesta).
● Sean t1 y t2 los tiempos requeridos por P1 y P2
respectivamente.
● Regla de la composición secuencial: El tiempo
necesario para calcular “P1;P2” (primero P1 y
luego P2) es simplemente t1+t2.
P1 Seguido de P2 = Max(T1, T2)
CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORITMICA III

Estructuras Secuenciales
● Si las instrucciones son compuestas sólo se
procede a sumar los tiempos respectivos.

P1 Seguido de P2 = T1 + T2

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORITMICA III

Estructuras Condicionales Si
● Regla 1:
– El tiempo es el máximo de la condicional ó el
mayor de los tiempos de las alternativas (dos
instrucciones simples ó uno compuesto y
uno simple).

TSI = MAX(TCONDICIONAL , MAX(TENTONCES , TSINO ))

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORITMICA III

Estructuras Condicionales Si
● Regla 2:
– El tiempo nunca es mayor que el tiempo de
ejecución de la condicional mas el mayor de
los tiempos de ejecución de las alternativas
(dos instrucciones compuestas).

TSI = TCONDICIONAL + MAX(TENTONCES , TSINO )

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORITMICA III

Estructuras Condicionales Si
Si (i = j) entonces T = 1
suma <- suma + 1 T = 2
Sino
suma <- suma + i * j T = 3
fSi

t (n) = Max(1, Max(2,3)) = 3

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORITMICA III

Estructuras Para ó Desde


Para i desde 1 hasta m hacer
P(i)
fPara
● P(i) no depende de i, suponiendo que t es el
tiempo para calcular P(i), el bucle se ejecuta m
veces, cada una con un tiempo t.
● El tiempo total mt, es una cota inferior.
● No hemos tomado en cuenta el tiempo para el
control del bucle.
Tpara (n ) = k > = mt
CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORITMICA III

Estructuras Para ó Desde


I ← 1
Mientras i <= m hacer
P(i)
i <- i + 1
fMientras
●Sea c = 1 tiempo para asignación y para la comparación.
K <= c para i <--1
+ (m+1)*c para las comprobaciones si i<=m
+ m*t para las ejecuciones de P(i)
+ 2*m*c para las ejecuciones de i ← i + 1
+ (m+1)*c para las ejecuciones de salto
= k <= (t + 4*c) m + c
●Esto está acotado superiormente por (t + 4c) m + 3c.

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORITMICA III

Estructuras Para ó Desde


● Regla1:
– El tiempo de un ciclo Para es el tiempo de las
instrucciones que están en el interior del ciclo
más el control y por el número de iteraciones .
T = (TINTERIOR + TPARA ) * Nº Ciclos
● Ejemplo:
 Ejemplo:
Para i desde 1 hasta n hacer
A[i] <- 0 t = 1 n
fPara
∑i= 1
5 + 4 = 5n + 4

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORITMICA III

Estructuras Para ó Desde


● Regla2:
– El tiempo de un grupo de ciclos Para es el
tiempo de las instrucciones que están en el
interior del ciclo multiplicado por el producto
de los tamaños de todos los ciclos Para.
Ejemplo:
Para i desde 1 hasta n hacer
Para j desde 1 hasta n hacer
k <- k + 1 t = 2
fPara
n  n   n
fPara
∑i = 1   ∑j = 1 6 + 4  + 4  + 4 =
 ∑ ( 6 n + 8) + 4 = (6n + 8)n + 4 = 6n 2 + 8n + 4
   i= 1
CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORITMICA III

Estructuras Mientras y Repetir


● El tiempo es la multiplicación del tiempo de las
instrucciones del interior por el número de
ciclos de esta estructura.

T = (TINTERIOR + TMIENTRAS ) * T#CICLOS

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORITMICA III

Estructuras Mientras y Repetir


● No existe una forma evidente a priori para
saber la cantidad de veces que hay que pasar
por el bucle.
– Hallar una función de las variables implicadas
en el control del bucle.
– Determinar el valor para el cual los ciclos de la
estructura llegan a su final.
– Determinar la forma en que disminuye las
variables del control del bucle.

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORITMICA III

Estructuras Mientras y Repetir


J <- 1 t = 1
Mientras ( j <= n) hacer t = 1
Modulo A t = m
J <- B * J t = 2
fMientras t = 1

Solución:
a). T = n – j + 1
b). J > n
c). J  1, B, B2, B3, …,Bk, por tanto Modulo A se repite k veces.
 Bkk> n  LogBBk > LogBn  k > LogBn  k = LogBn + c

  TMIENTRAS = (m + 4) * ( Log B n + c) + 3
CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORITMICA III

Estructuras Compleja (Ejemplo)


Si ( Calculo(i,j) ) entonces
Para i desde 1 hasta n hacer
suma  suma + 1
fPara
Sino
Para i desde 1 hasta n hacer
Para j desde 1 hasta n hacer
suma  suma + i * j
fPara
fPara
fSi

CARRERA DE
INGENIERÍA
DE SISTEMAS
ALGORITMICA III

Conclusiones
● Un algoritmo es eficiente si existe un polinomio
p(n) talque el algoritmo puede resolver
cualquier caso de tamaño n en un tiempo que
esta en O(p(n))
● Los algoritmos de tiempo exponencial se
vuelven rápidamente inútiles en la práctica,
mientras que en general un algoritmo de tiempo
polinómicos nos permite resolver casos mucho
mayores.

CARRERA DE
INGENIERÍA
DE SISTEMAS

Vous aimerez peut-être aussi