Vous êtes sur la page 1sur 10

PRCTICA 3 PROGRAMACIN DINMICA

Teora y Complejidad Algortmica



Ingeniera Informtica
Universidad de Almera




PDRO !"#I$ MIRN AMAT
MIG%# NG# MART&N ROMRO
&NDIC

'( I)trod*cci+)

,( -t*dio te+rico

,('( Caracter-tica- ./-ica- Programaci+) Di)/mica

,(,( O.te)er la ec*aci+) rec*rre)te0 de lo- ca-o- .a-e y -*- 1alore-0 determi)ar la-
ta.la- a *tili2ar e) la -ol*ci+)0 y e3plicar c+mo -e relle)a) e-a- ta.la- y -e
recompo)e la -ol*ci+) +ptima-

,(3( Comparar lo- tiempo- de ejec*ci+) de lo- algoritmo- de Dij4-tra y !loyd0 te)ie)do e)
c*e)ta la- caracter-tica- del gra5o y la- t6c)ica- de impleme)taci+) y orde)aci+)
elegida-( Am.o- algoritmo- tie)e) como o.jeti1o re-ol1er el pro.lema del cami)o
m)imo

3( -t*dio e3perime)tal

3('( 7alidaci+) del algoritmo de !loyd

3(,( Comparar lo- algoritmo- de Dijkstra y de Floyd8 para *) mi-mo 5ic9ero de e)trada0
tipo de repre-e)taci+) del gra5o0 etc( -t*diar lo- tiempo- de ejec*ci+) y lo- co-te- de
lo- cami)o- re-*lta)te-( la.orar *)a ta.la y gr/5ica- para 1alorar lo- re-*ltado-
o.te)ido-
3(3( :;*6 i)5ormaci+) -e o.tie)e de la co)-ta)te implcita e) la )otaci+) e) am.a-
impleme)tacio)e-<

3(=( Co)tra-tar lo- re-*ltado- te+rico- y lo- e3perime)tale-0 compro.a)do -i lo-
e3perime)tale- co)5irma) lo- te+rico-0 para lo- re-*ltado- te+rico- o.te)ido- e) el
apartado ,( >*-ti5icar lo- e3perime)to- reali2ado-0 y e) ca-o de di-crepa)cia e)tre la
teora y lo- e3perime)to- .*-car *)a e3plicaci+)

=( ?i.liogra5a






1. Introduccin

@e 1a a re-ol1er el pro.lema de la .A-B*eda de cami)o- de co-to m)imo e)tre cada
par de 16rtice- e) *) gra5o dirigido0 *-a)do el algoritmo de !loyd0 .a-ado e) la t6c)ica
de Cprogramaci+) di)/micaD( Para -* reali2aci+) -e 1a) a *tili2ar lo- algoritmo- ya
impleme)tado- de la pr/ctica ,(

2. Estudio terico

2.1. Caractersticas bsicas Programacin Dinmica
3i-te *)a -erie de pro.lema- c*ya- -ol*cio)e- p*ede) -er e3pre-ada-
rec*r-i1ame)te e) t6rmi)o- matem/tico-0 y po-i.leme)te la ma)era m/- )at*ral de
re-ol1erlo- e- media)te *) algoritmo rec*r-i1o( @i) em.argo0 el tiempo de ejec*ci+)
de la -ol*ci+) rec*r-i1a0 )ormalme)te de orde) e3po)e)cial y por ta)to impractica.le0
p*ede mejorar-e -*.-ta)cialme)te media)te la Programaci+) Di)/mica(

#a Programaci+) Di)/mica )o -+lo tie)e -e)tido aplicarla por ra2o)e- de
e5icie)cia0 -i)o porB*e adem/- pre-e)ta *) m6todo capa2 de re-ol1er de ma)era
e5icie)te pro.lema- c*ya -ol*ci+) 9a -ido a.ordada por otra- t6c)ica- y 9a 5raca-ado(
Do)de tie)e mayor aplicaci+) la Programaci+) Di)/mica e- e) la re-ol*ci+) de
pro.lema- de optimi2aci+)( ) e-te tipo de pro.lema- -e p*ede) pre-e)tar di-ti)ta-
-ol*cio)e-0 cada *)a co) *) 1alor0 y lo B*e -e de-ea e- e)co)trar la -ol*ci+) de 1alor
+ptimo Em/3imo o m)imoF( #a -ol*ci+) de pro.lema- media)te e-ta t6c)ica -e .a-a
e) el llamado pri)cipio de +ptimo e)*)ciado por ?ellma) e) 'GHI y B*e dice8

C) *)a -ec*e)cia de deci-io)e- +ptima toda -*.-ec*e)cia 9a de -er tam.i6)
+ptimaD(

Jemo- de o.-er1ar B*e a*)B*e e-te pri)cipio parece e1ide)te )o -iempre e-
aplica.le y por ta)to e- )ece-ario 1eri5icar B*e -e c*mple para el pro.lema e)
c*e-ti+)( %) ejemplo claro para el B*e )o -e 1eri5ica e-te pri)cipio aparece al tratar de
e)co)trar el cami)o de co-te m/3imo e)tre do- 16rtice- de *) gra5o po)derado( Para
B*e *) pro.lema p*eda -er a.ordado por e-ta t6c)ica 9a de c*mplir do- co)dicio)e-8

K #a -ol*ci+) al pro.lema 9a de -er alca)2ada a tra16- de *)a -ec*e)cia de deci-io)e-0
*)a e) cada etapa(

K Dic9a -ec*e)cia de deci-io)e- 9a de c*mplir el pri)cipio de +ptimo(

) gra)de- l)ea-0 el di-eLo de *) algoritmo de Programaci+) Di)/mica co)-ta
de lo- -ig*ie)te- pa-o-8

'( Pla)teamie)to de la -ol*ci+) como *)a -*ce-i+) de deci-io)e- y 1eri5icaci+) de B*e
6-ta c*mple el pri)cipio de +ptimo(

,( De5i)ici+) rec*r-i1a de la -ol*ci+)(

3( C/lc*lo del 1alor de la -ol*ci+) +ptima media)te *)a ta.la e) do)de -e almace)a)
-ol*cio)e- a pro.lema- parciale- para re*tili2ar lo- c/lc*lo-(

=( Co)-tr*cci+) de la -ol*ci+) +ptima 9acie)do *-o de la i)5ormaci+) co)te)ida e) la
ta.la a)terior

2.2. btener la ecuacin recurrente! de los casos base " sus valores! determinar las
tablas a utili#ar en la solucin! " e$%licar cmo se rellenan esas tablas " se
recom%onen las soluciones %timas

Dado *) gra5o co)e3o dirigido0 GMEN0 AF0 co) *)a 5*)ci+) de pe-o a-ociada a
-*- arco-0 media)te el algoritmo de !loyd trataremo- de o.te)er el cami)o de co-te
m)imo e)tre cada par de )odo- de N(

@egA) el pri)cipio de optimalidad0 -e c*mple B*e -i 4 e- *) )odo e) *) cami)o
m)imo e)tre lo- )odo- i y j0 e)to)ce- la parte del cami)o B*e 1a de-de i 9a-ta 4 y
de-de 4 9a-ta j0 de.e -er optima tam.i6)( @e podra de5i)ir la 5orm*la e) la B*e -e
.a-a el algoritmo cami)oMi)imo Ei0 j0 4F de 5orma rec*r-i1a de la -ig*ie)te ma)era8

caminoMinimo(i,j,k) = min(caminoMinimo(i,j,k-1), caminoMinimo(i, k, k-
1)+caminoMinimo(k,j,k-1));
CaminoMinimo (i, j, 0) = pesoArista (i, j);

!*)cio)a ejec*ta)do primero cami)oMi)imo Ei0 j0 'F para todo- lo- pare- Ei0 jF0
*-/)dolo- para de-p*6- 9allar cami)oMi)imo Ei0 j0 ,F para todo- lo- pare- Ei0 jF((( -te
proce-o co)ti)*a 9a-ta B*e 4 M)0 y 9a.remo- e)co)trado el cami)o ma- corto para
todo- lo- pare- de )odo- Ei0 jF *-a)do algA) )odo i)termedio(

@i) em.argo0 para el algoritmo de !loyd *-aremo- la t6c)ica de programaci+)
di)/mica do)de8

Como e)trada te)dremo- lo- )odo- del gra5o de '((() ENM N'0,0(((0 )OF0 y *)a
matri2 de pe-o- de la- ari-ta- del gra5o #0 tal B*e8 # Pi0 iQMRS # Pi0 jQ TRS # Pi0 jQMU( V la
-alida -er/ la matri2 D de )3) B*e almace)a la lo)git*d del cami)o ma- corto e)tre
cada par de )odo-(



#a matri2 D -e i)iciali2a co) lo- 1alore- de la matri2 # Edi-ta)cia- directa-F( @e
reali2a) ) iteracio)e- do)de para cada par de )odo- Ei0 jF -e compr*e.a -i e3i-te *)
cami)o B*e 1aya de i a j pa-a)do por el )odo 4 B*e -ea me)or B*e el cami)o optimo
act*al( Te)ie)do de-p*6- de cada iteraci+) de 40 *)a matri2 D B*e almace)a la-
lo)git*de- de lo- cami)o- ma- corto- B*e *tili2a) como )odo- i)termedio- N'0,0(((0 4O(
Como re-*ltado 5i)al D almace)ara la- lo)git*de- de lo- cami)o- ma- corto- B*e
*tili2a) como )odo- i)termedio- todo- lo- )odo- N M N'0,0(((0 )O(

2.&. Com%arar los tiem%os de e'ecucin de los algoritmos de Di'(stra " )lo"d!
teniendo en cuenta las caractersticas del grafo " las t*cnicas de im%lementacin "
ordenacin elegidas. Ambos algoritmos tienen como ob'etivo resolver el %roblema
del camino mnimo

Te)ie)do e) c*e)ta B*e Gra5o GMEN0AF co) ) )odo-0 el tiempo de ejec*ci+) del
algoritmo de !loyd -era 8

T!loydE)F WE)
3
F

@i ejec*tamo- el algoritmo de Dij4-tra ) 1ece-0 -eleccio)a)do e) cada ca-o *) )odo
orige) del gra5o o.te)emo-8

) 3 TDij4E)0 aF M ) 3 WE)
,
F M WE)
3
F


@e o.tie)e el mi-mo orde) pero la co)-ta)te m*ltiplicati1a oc*lta e) el ca-o de !loyd
-ea m/- peB*eLa(

) el ca-o de impleme)tar el algoritmo de Dij4-tra co) mo)tc*lo- -e o.tie)e8

TDij4E)0 aF WEEa X )F log )F

@i lo m*ltiplicamo- por )8

) 3 WEEa X )F log )F M WEEa) X )
,
F log )F

#a 5*)ci+) o.te)ida i)dica B*e -i el gra5o e- di-per-o EaYY)
,
F e- mejor ejec*tar Dij4-tra
) 1ece-( ) el ca-o de B*e -ea de)-o EaZ)
,
F e- mejor ejec*tar !loyd(









&. Estudio e$%erimental

&.1. +alidacin del algoritmo de )lo"d
Para reali2ar la 1alidaci+) del algoritmo de !loyd -e 9a reali2ado *) programa para
reali2ar la toma de tiempo-( @e 1a) a reali2ar pr*e.a- para lo- di-ti)to- gra5o- co)
di-ti)to- )Amero- de )odo-0 ari-ta- para reali2ar *)a ta.la comparati1a de tiempo-( @e
*tili2aro) la- mi-ma- cla-e- *tili2ada- e) la pr/ctica a)terior para la ge)eraci+) de lo-
gra5o-( %)a 1e2 reali2ada la pr*e.a -e compr*e.a la -alida para 1er -i lo- re-*ltado-
o.te)ido- -o) lo- e-perado-(

Nodo- Ari-ta- No de)-o Ari-ta- De)-o
#i-ta- Matri2 #i-ta- Matri2
'RR 3IH R0RR' R0RR3 [HI= R R
,RR \=R R0R'H R0RRG '[\GH R0R'H R
3RR GG= R0R=\ R0R3' H=G[' R0R\H R0R'G
=RR ''\H R0G\\ R0RI ',H\GH R0'\, R0R\[
HRR '=I[ '0=[I R0'' 'G\[I= R0,G R0''















&.2. Com%arar los algoritmos de Di'(stra " de )lo"d, %ara un mismo fic-ero de
entrada! ti%o de re%resentacin del grafo! etc. Estudiar los tiem%os de e'ecucin " los
costes de los caminos resultantes. Elaborar una tabla " grficas %ara valorar los
resultados obtenidos
Como e) el e3perime)to a)terior0 -e 1a) a reali2ar gra5o- de tamaLo di5ere)te y compro.a)do
-* de)-idad( ) e-to- gra5o- -e 1a a ejec*tar lo- do- tipo- de algoritmo- para reali2ar la toma
de dato- y la comparati1a(

A co)ti)*aci+) -e detalla) lo- re-*ltado- o.te)ido- e) la ejec*ci+) de lo- algoritmo- *tili2a)do
*)a matri2 de adyace)cia y li-ta de adyace)cia co) *) gra5o )o de)-o8

Nodo- Ari-ta- Matri2 de adyace)cia Ari-ta- #i-ta de adyace)cia
!loyd Dij4-tra !loyd Dij4-tra
'RR 3IH R0RR' R0R' [HI= R0RR' R0R3H
,RR \=R R0R, R0RR[ '[\GH R0R'[ R0R\G
3RR GG= R0R=H R0RR= H=G[' R0RH= R0I[G
=RR ''\H R0R[= R0RR, ',H\GH R0I' ,0H=
HRR '=I[ R0'' R0RR' 'G\[I= '0=I 30GG














A co)ti)*aci+) -e detalla) lo- re-*ltado- o.te)ido- e) la ejec*ci+) de lo- algoritmo- *tili2a)do
li-ta- de adyace)cia y matri2 de adyace)cia e) *) gra5o de)-o8





Nodo- Ari-ta- Matri2 de adyace)cia Ari-ta- #i-ta de adyace)cia
!loyd Dij4-tra !loyd Dij4-tra
'RR 3IH R R [HI= R R0R'[
,RR \=R R0RR[ R '[\GH R0R', R0'=[
3RR GG= R0R3' R H=G[' R0RGG R0H[=
=RR ''\H R0RI[ R0RR, ',H\GH R0',, '0G[I
HRR '=I[ R0',[ R0RR[ 'G\[I= R03\H H0=HH










&.&. ./u* informacin se obtiene de la constante im%lcita en la notacin en ambas
im%lementaciones0

) lo- gra5o- B*e -e 9a) prop*e-to -* e5icie)cia -e 1a a 1er determi)ada por el )Amero
de )odo- y ari-ta- del arc9i1o del gra5o -o.re el B*e -e ejec*te el algoritmo( Como ya
-a.emo- el orde) de lo- algoritmo- e- WEn
3
F por lo B*e e- ideal para pro.lema- de
me)or tamaLo( @i -e a*me)ta el tamaLo del gra5o el tiempo de ejec*ci+) tam.i6)
a*me)tar/ e3po)e)cialme)te por lo B*e el tiempo de ejec*ci+) )o e- el m/- e5icie)te(

&.1. Contrastar los resultados tericos " los e$%erimentales! com%robando si los
e$%erimentales confirman los tericos! %ara los resultados tericos obtenidos en el a%artado
2. 2ustificar los e$%erimentos reali#ados! " en caso de discre%ancia entre la teora " los
e$%erimentos buscar una e$%licacin

O.-er1a)do lo- re-*ltado- o.te)ido- -e 1e como el comportamie)to de lo- algoritmo-
ta)to e) -* impleme)taci+) co) matrice- de adyace)cia como co) li-ta- e- la e-perada
-egA) el e-t*dio te+rico( ) todo- -e o.tie)e *) orde) de complejidad W E)
3
F( l
algoritmo de !loyd 9a o.te)ido -*- mejore- re-*ltado- *tili2a)do li-ta- de adyace)cia
para gra5o- de)-o-( l algoritmo de Dij4-tra o.tie)e -*- mejore- re-*ltado- *tili2a)do
matrice- de adyace)cia y co) gra5o- di-per-o- por lo B*e tam.i6) co)5irma el e-t*dio
te+rico al ig*al B*e !loyd( - i)tere-a)te o.-er1ar como lo- tiempo- de ejec*ci+)
a*me)ta) e) orde) cA.ico co)5irma)do lo- e-t*dio- te+rico- y -i) o.-er1ar
dema-iada- a)omala- e) c*a)to al tiempo(

1. 3ibliografa
9ttp8]]e-(^i4ipedia(org]^i4i]Programaci_C3_?3)`di)_C3_A'mica

9ttp8]]^^^(-lide-9are()et]ajmae,[]programaci)adi)mica

9ttp8]]e-(^i4ipedia(org]^i4i]Algoritmo`de`!loydabar-9all

9ttp8]]^^^(lcc(*ma(e-]ca1]#i.ro]CAPH(pd5

Ap*)te- de la a-ig)at*ra CTeora y Complejidad AlgortmicaD0 Tema \