Está en la página 1de 0

Programacin IV.

Gua 5
Tema: Reglas para el clculo de complejidad en
los mtodos de Ordenamiento.
Aplicar reglas prcticas para el clculo de la complejidad de los algoritmos
Comparar los tiempos de ejecucin de distintos algoritmos.
Gua Nmero 5.
Computadora con programa Microsoft Visual C#.
Tiempo de Ejecucin.
na medida !ue suele ser til conocer es el tiempo de ejecucin de un programa en funcin de
N" lo !ue denominaremos #$N%. &sta funcin se puede medir fsicamente $ejecutando el
programa" reloj en mano%" o calcularse so're el cdigo contando instrucciones a ejecutar (
multiplicando por el tiempo re!uerido por cada instruccin.
As" un tro)o sencillo de programa como*
+,-
for $int i . /- i 0 N- i11%
2 +3-
4
5e!uiere* #$N%. t, 1 t36N
+iendo t, el tiempo !ue lle7e ejecutar la serie 8+,9 de sentencias" ( t3 el !ue lle7e la serie 8+39.
1
Facultad: Ingeniera
Escuela: Computacin
Asignatura: rogramacin I!
O"jeti#os Espec$icos
%ateriales & E'uipo
Introduccin Terica
Programacin IV, Gua 5
:rcticamente todos los programas reales inclu(en alguna sentencia condicional" ;aciendo !ue
las sentencias efecti7amente ejecutadas dependan de los datos concretos !ue se le presenten.
&sto ;ace !ue ms !ue un 7alor #$N% de'amos ;a'lar de un rango de 7alores
#min$N% 0.#$N% 0. #ma<$N%
=os e<tremos son ;a'itualmente conocidos como 8peor caso9 ( 8mejor caso9. &ntre am'os se
;allara algn 8caso promedio9 o ms frecuente. Cual!uier frmula #$N% inclu(e referencias al
parmetro N ( a una serie de constantes 8#i9 !ue dependen de factores e<ternos al algoritmo"
como pueden ser la calidad del cdigo generado por el compilador ( la 7elocidad de ejecucin
de instrucciones del ordenador !ue lo ejecuta.
>ado !ue es fcil cam'iar de compilador ( !ue la potencia de los ordenadores crece a un ritmo
7ertiginoso" intentaremos anali)ar los algoritmos con algn ni7el de independencia de estos
factores- es decir" 'uscaremos estimaciones generales ampliamente 7lidas.
Con frecuencia nos encontraremos con !ue no es necesario conocer el comportamiento e<acto"
sino !ue 'asta conocer una cota superior" es decir" alguna funcin !ue se comporte 8aun peor9.
=a definicin matemtica de estos conjuntos de'e ser mu( cuidadosa para in7olucrar am'os
aspectos* identificacin de una familia ( posi'le utili)acin como cota superior de otras
funciones menos malas.
>cese !ue el conjunto ?$f$n%% es el de las funciones de orden de f$n%" !ue se define como*
?$f$n%% .2g* @N#&G&5 AB 5&A=1" tales !ue e<isten las constantes C ( N/ tales !ue para todo
N B N/" g$N% 0. D 6 E$N% 4
&n pala'ras simples" ?$f$n%% est formado por a!uellas funciones g$n% !ue crecen a un ritmo
menor o igual !ue el de f$n%. >e las funciones 8g9 !ue forman este conjunto ?$f$n%% se dice !ue
8estn dominadas asintticamente9 por 8f9 en el sentido de !ue para N suficientemente grande"
( sal7o una constante multiplicati7a 8D9" f$n% es una cota superior de g$n%.
rdenes de Complejidad.
=a familia ?$f$n%% define un ?rden de Complejidad. &legiremos como representante de este
?rden de Complejidad a la funcin f$n% ms sencilla perteneciente a esta familia*
F ?$,% ?rden constante
F ?$log n% ?rden logartmico
F ?$n% ?rden lineal
F ?$n
3
% ?rden cuadrtico
2
Programacin IV. Gua 5
F ?$n
G
% ?rden c'ico
F ?$n
a
% ?rden polinmico
F ?$3
n
% ?rden e<ponencial
F ?$nH% ?rden factorial
+e identifica una Ierar!ua de ?rdenes de Complejidad !ue coincide con el orden de la ta'la
mostrada- jerar!ua en el sentido de !ue cada orden de complejidad inferior tiene a las
superiores como su'conjuntos. +i un algoritmo 8A9 se puede demostrar de un cierto orden ?$,%"
es cierto !ue tam'iJn pertenece a todos los rdenes superiores $la relacin de orden cota
superior es transiti7a% pero en la prctica lo til es encontrar la 8menor cota superior9" es decir el
menor orden de complejidad !ue lo cu'ra.
Reglas Prcticas.
Aun!ue no e<iste una receta !ue siempre funcione para calcular la complejidad de un algoritmo"
si es posi'le tratar sistemticamente una gran cantidad de ellos" 'asndonos en !ue suelen
estar 'ien estructurados ( siguen pautas uniformes.
=os algoritmos 'ien estructurados com'inan las sentencias de alguna de las formas siguientes*
,. +ecuencia $-%
3. >ecisin $if%
G. Kucles
L. =lamadas a procedimientos
Sentencias sencillas.
Nos referimos a las sentencias de asignacin" entradaMsalida" etc. siempre ( cuando no tra'ajen
so're 7aria'les estructuradas cu(o tamaNo estJ relacionado con el tamaNo 8N9 del pro'lema.
=a inmensa ma(ora de las sentencias de un algoritmo re!uieren un tiempo constante de
ejecucin" siendo su complejidad ?$,%.
1. Secuencia (;)
=a complejidad de una serie de elementos de un programa es del orden de la suma de las
complejidades indi7iduales" aplicndose las operaciones arri'a e<puestas.
3
Programacin IV, Gua 5
2. Decisin (IFTHENELSE...END)
=a condicin suele ser de ?$,%" complejidad a sumar con la peor posi'le" 'ien en la rama
#O&N" o 'ien en la rama &=+&. &n decisiones mltiples $&=+& @E" +P@#CO CA+&%" se tomar
la peor de las ramas
3. Bucles(WHILE, REE!T, F"R)
&n los 'ucles con contador e<plcito" podemos distinguir dos casos" !ue el tamaNo 8N9 forme
parte de los lmites o !ue no. +i el 'ucle se reali)a un nmero fijo de 7eces" independiente de
8N9" entonces la repeticin slo introduce una constante multiplicati7a !ue puede a'sor'erse.
&jemplo*
+i el tamaNo 8N9 aparece como lmite de iteraciones" tenemos*
?tro ejemplo*
#endremos N 6 N 6 ?$,% . ?$n3%
?tro ejemplo*
&l 'ucle e<terior se reali)a 8N9 7eces" mientras !ue el interior se reali)a ," 3" G" Q N 7eces
respecti7amente.
&n total" , 1 3 1 G 1 Q 1 N . N 6 $,1N%M3 .B ?$n
3
%
4
for $int i. /- i 0 D- i11%
2 algoRdeR?$,% .B D 6 ?$,% . ?$,%
4
for $int i. /- i 0 N- i11%
2 algoRdeR?$,% .B N 6 ?$,% . ?$n%
4
for $int i . /- i 0 N- i11%
2 for $int j . /- j 0 N- j11%
2 algoRdeR?$,%
4
4
for $int i . /- i 0 N- i11%
2 for $int j . /- j 0 i- j11%
2 algoRdeR?$,%
4
4
Programacin IV. Gua 5
A 7eces aparecen 'ucles multiplicati7os" donde la e7olucin de la 7aria'le de control no es
lineal $como en los casos anteriores%.
&jemplo*
&l 7alor incial de 8c9 es ," siendo 83C9 al ca'o de 8C9 iteraciones. &l nmero de iteraciones es tal
!ue 3C B. N .B C . $log3 $N%% Sel entero inmediato superiorT (" por tanto" la complejidad del
'ucle es ?$log n%.
&jemplo*
n ra)onamiento anlogo nos lle7a a log3 $N% iteraciones (" por tanto" a un orden ?$log n% de
complejidad.
&jemplo*
#enemos un 'ucle interno de orden ?$log n% !ue se ejecuta N 7eces" luego el conjunto es de
orden ?$n log n%.
#. Lla$a%as a &'(ce%i$ien)(s.
=a complejidad de llamar a un procedimiento 7iene dada por la complejidad del contenido del
procedimiento en s. &l coste de llamar no es sino una constante !ue podemos o'7iar
5
c . ,-
U;ile $c 0 N%
2 algoRdeR?$,%
c. 3 6 c-
4
c . N-
U;ile $c B ,%
2 algoRdeR?$,%
c. c M3-
4
for $int i. /- i 0 N- i11%
2 c. i-
U;ile $c B /%
2 algoRdeR?$,%
c. cM3-
4
4
Programacin IV, Gua 5
inmediatamente dentro de nuestros anlisis asintticos. &l clculo de la complejidad asociada a
un procedimiento puede complicarse nota'lemente si se trata de procedimientos recursi7os. &s
fcil !ue tengamos !ue aplicar tJcnicas propias de la matemtica discreta.
&ncuentre el 7alor de complejidad para cada uno de los mJtodos de ordenamiento. =a cantidad
de datos a procesar es igual para los dos mJtodos de ordenamiento.
5ealice los siguientes ejemplos de mJtodos de ordenamiento" en sinta<is de C# $Modo
Consola%.
Ejemplo 1. Mtodo de ordenamiento Buruja.
Cdigo en C#. $Guardar con el nom're 'ur'uja%
Adentro de las lla7es del siguiente cdigo
>igitar el siguiente cdigo*
Ejemplo !. Mtodo de ordenamiento S"ell
Cdigo en C#. $Guardar con el nom're s;ell%
6
rocedimiento
static 7oid Main$stringST args%2
4
intS T a . neU intS T 23G"V"/","GL"WV"VV4-
+(stem.Console.Prite=ine$XMetodo de ?rdenamiento* Kur'ujaX%-
for $int i . /- i 0 a.=engt;- i11%
2 for $int j . /- j 0 a.=engt; A,- j11%
2 if $aSjT B aSj 1 ,T%
2 int au< . aSjT-
aSjT . aSj 1 ,T-
aSj 1 ,T . au<-
4
4
4
+(stem.Console.Prite=ine$X+e imprimen*X%-
for $int i . /- i 0 a.=engt;- i11%
2 +(stem.Console.Prite=ine$XValor 2/4* 2,4X" i 1 ," aSiT%-
4
Console.5ead$%-

Programacin IV. Gua 5
Crear una funcin llamada +ort dentro de la clase llamada +;ell+orter entre*
Y
>igitar el siguiente cdigo*
Adentro de las lla7es del siguiente cdigo.
>igitar el siguiente cdigo*
7
pu'lic class +;ell+orter
2 pu'lic 7oid +ort$intS T list%
2 int C . list.=engt; M 3-
U;ile $C B. ,%
2 for $int i.C- i0list.=engt;- i11%
2 int 7 . listSiT-
int j . i A C-
U;ile $j B. / ZZ listSjT B 7%
2 listSj 1 CT . listSjT-
j . j A C-
4
listSj 1 CT . 7-
4
C M. 3-
4
4
4
intS T iArrar( . neU intS T 2["G",3"L5"\"/"3G4-
+(stem.Console.Prite=ine$XMetodo de ?rdenamiento* +;ell X%-
+;ell+orter s; . neU +;ell+orter$ %-
s;.+ort$iArrar(%-
+(stem.Console.Prite=ine$X+e imprimen*X%-
for $int m . /- m 0iArrar(.=engt; - m11%
Console.Prite=ine$XValor2/4* 2,4X"m 1 ,"iArrar(SmT%-
Console.5ead$%-
using +(stem-
using +(stem.Collections.Generic-
using +(stem.#e<t-
namespace s;ell
2. . . . . 4
static 7oid Main$stringST args%2
4
Programacin IV, Gua 5
Ejercicio #o. 1
=os ejemplos , ( 3 pasarlos a modo grfico" utili)ar un solo formulario.
@ngresar el 7ector" tener una opcin para elegir el mJtodo de ordenamiento !ue se aplicar al
7ector" adems" de'e tener otra opcin" si uno !uiere el ordenamiento en forma ascendente o
descendente- tam'iJn de'e imprimir el 7alor de complejidad.
Nota* Considere las 7alidaciones necesarias" para un correcto funcionamiento del programa.
:ara la siguiente semana*
Modo grfico* tili)ar el mJtodo de ordenamiento 'ur'uja. @ngresar el 7ector" luego cuando se
proceda a ordenar el 7ector" de'e mostrarse paso a paso de como se est ordenando el 7ector
;asta !ue este ordenado $una simulacin%.
Nota* Considere las 7alidaciones necesarias" para un correcto funcionamiento del programa.
8
Anlisis de resultados
In#estigacin Complementaria
Programacin IV. Gua 5
EVALUACIN
% 1-4 5-7 8-10 Nota
CONOCIMIENTO (el )*
al +*,
Conocimiento
de$iciente
de los
$undamentos
tericos
Conocimiento
& e-plicacin
incompleta de
los
$undamentos
tericos
Conocimiento
completo &
e-plicacin
clara de los
$undamentos
tericos
APLICACIN
DEL
CONOCIMIENTO
(el .*,
al /*,
ACTITUD
(el 01,
al +*,
2o tiene
actitud
proacti#a.
Actitud
propositi#a &
con
propuestas no
aplica"les al
contenido de
la gua.
Tiene actitud
proacti#a &
sus propuestas
son concretas.
TOTA3 0**,
9
4ua 1: Reglas para el clculo de
complejidad en los mtodos Ordenamiento.
Hoja de cotejo:
5
%'uina 2o: Alumno:
(ocente: 43:
Fec5a: