Escolar Documentos
Profissional Documentos
Cultura Documentos
P r ó l o g o ................................................................................................................................................................................. X IX
U n e n fo q u e n o v e d o s o ....................................................................................................................................... XX
P r e r r e q u is ito s .......................................................................................................................................................... XX
J a v a ............................................................................................................................................................................. XXI
O rg a n iz a c ió n d e l l i b r o ....................................................................................................................................... X X II
O rg a n iz a c ió n d e l lib ro p o r c a p í t u l o s ......................................................................................................... X X II
D e p e n d e n c ia s e n tre c a p í t u l o s ........................................................................................................................ X X IV
P a rte s in d e p e n d ie n te s ......................................................................................................................................... X X IV
F u n d a m e n to s m a te m á tic o s ............................................................................................................................. XXV
O rg a n iz a c ió n d el c u r s o ................................................................................................................................... XXV
E j e r c i c i o s .................................................................................................................................................................. XXVI
D e ta lle s p e d a d ó g ic o s ......................................................................................................................................... XXVI
D is p o n ib ilid a d d e l c ó d i g o .............................................................................................................................. XXVI
G u ía d e l p r o f e s o r .................................................................................................................................................. X X V II
A g r a d e c im ie n to s ................................................................................................................................................... XXV TI
P r ó lo g o a l a e d i c i ó n e n e s p a ñ o l .......................................................................................................................... XXTX
PRIMERA PARTE
Un r e c o r r i d o p o r J a v a
1. J a v a b á s i c o ................................................................................................................................................................... 3
1.1. E l e n to rn o g e n e r a l ........................................................................................................................................... 4
1.2. E l p rim e r p r o g r a m a ...................................................................................................................................... 3
1.2.1. C o m e n ta r io s ................................................................................................................................... 3
1 .2 .2 . m a i n ................................................................................................................................................... ó
1.2.3. S a lid a p o r p a n t a l l a ..................................................................................................................... 6
1.3. T ip o s p r im i ti v o s ............................................................................................................................................... 6
1.3.1. L o s tip o s p r im i t i v o s ................................................................................................................... 6
1.3.2. L a s c o n s ta n t e s .............................................................................................................................. 3
1.3.3. D e c la ra c ió n e in ic ia liz a c ió n d e tip o s p r im itiv o s ........................................................... 7
1.3.4. E n tra d a y s a lid a p o r t e r m i n a l ................................................................................................. 8
1.4. O p e ra d o re s b á s i c o s ................................................................................. 8
1.4.1. O p e ra d o re s d e a s ig n a c ió n ................................................... 8
1.4.2. O p e ra d o re s a ritm é tic o s b i n a r i o s ....................................... 9
1.4.3. O p e ra d o re s u n a r i o s ................................................................ 10
1.4.4. C o n v e rs io n e s d e t i p o ............................................................ 10
1.5. In s tru c c io n e s c o n d ic io n a le s ................................................................ 11
1.5.1. O p e ra d o re s re la c ió n a le s y d e i g u a ld a d ........................ 11
1.5.2. O p e ra d o re s l ó g i c o s ................................................................ 11
1.5.3. La in s tru c c ió n i f ................................................................... 12
1.5.4. La in s tru c c ió n w h i l e .......................................................... 13
1.5.5. La in s tru c c ió n f o r ................................................................ 14
1.5.6. La in s tru c c ió n d o ................................................................... 15
1.5.7. b r e a k y c o n t i n u é .............................................................. 15
1.5.8. L a in s tru c c ió n s w i t c h ........................................................ 16
1.5.9. El o p e ra d o r c o n d ic io n a l...................................................... 17
1.6. M é to d o s ........................................................................................................ 18
1.6.1. S o b re c a rg a d e lo s n o m b re s d e lo s m é to d o s ............... 18
1.6.2. C la s e s d e a lm a c e n a m i e n to ................................................. 19
R e s u m e n .................................................................................................................... 19
E le m e n to s d e l j u e g o ............................................................................................ 20
E rro re s c o m u n e s .................................................................................................. 21
E n I n t e r n e t ............................................................................................................... 22
E j e r c i c i o s .................................................................................................................. 22
B ib lio g r a f ía .............................................................................................................. 24
2. Referencias.............................................................................. 25
2 .1 . ¿ Q u é e s u n a r e f e r e n c i a ? ....................................................................... 25
2 .2 . N o c io n e s b á s ic a s so b re o b je to s y r e f e r e n c ia s ............................ 27
2 .2 .1 . E l o p e ra d o r p u n to ( . ) .......................................................... 28
2 .2 .2 . D e c la ra c ió n d e o b j e t o s ........................................................ 28
2 .2 .3 . R e c o g id a d e b a s u r a ................................................................ 29
2 .2 .4 . E l s ig n ific a d o d e = ................................................................ 29
2 .2 .5 . P a s o d e p a r á m e t r o s ................................................................ 30
2 .2 .6 . E l s ig n ific a d o d e = = ............................................................ 31
2 .2 .7 . S o b re c a rg a d e o p e ra d o re s p a ra o b je to s ........................ 31
2 .3 . C a d e n a s d e c a r a c t e r e s ........................................................................... 31
2 .3 .1 . C o n c e p to s b á s ic o s d e la m a n ip u la c ió n d e S t r i n g s 32
2 .3 .2 . C o n c a te n a c ió n d e c a d e n a s ................................................. 32
2 .3 .3 . C o m p a ra n d o c a d e n a s ............................................................ 33
2 .3 .4 . O tro s m é to d o s d el tip o s t r i n g ....................................... 33
2 .3 .5 . C o n v e rs ió n e n tre c a d e n a s y tip o s p r im itiv o s ............. 33
2 .4 . V e c t o r e s ........................................................................................................ 34
2 .4 .1 . D e c la ra c ió n , a s ig n a c ió n y m é to d o s ................................ 34
2 .4 .2 . E x p a n s ió n d in á m ic a d e v e c to r e s .................................... 36
2 .4 .3 . V e c to re s m u ltid im e n s io n a le s ............................................. 37
2 .4 .4 . A rg u m e n to s d e la lín e a d e c o m a n d o s ............................ 39
2 .5 . M a n e jo d e e x c e p c io n e s ......................................................................... 39
2 .5 .1 . P ro c e s a m ie n to d e e x c e p c io n e s .......................................... 39
2 .5 .2 . L a c lá u s u la f i n a l l y .................................................................................................................. 40
2 .5 .3 . E x c e p c io n e s m á s c o m u n e s ....................................................................................................... 41
2 .5 .4 . L a s c lá u s u la s t h r o w y t h r o w s ............................................................................................. 42
2 .6 . E n tra d a y s a l i d a ............................................................................................................................................. 42
2 .6 .1 . O p e ra c io n e s b á s ic a s d e E / S ..................................................................................................... 43
2 .6 .2 . E l o b je to S t r i n g T o k e n i z e r ................................................................................................. 44
2 .6 .3 . F ic h e ro s d e a c c e s o s e c u e n c ia l ................................................................................................. 45
R e s u m e n .......................................................................................................................................................................... 46
E le m e n to s d e l j u e g o .................................................................................................................................................. 47
E rro re s c o m u n e s ........................................................................................................................................................ 48
E n I n t e r n e t ..................................................................................................................................................................... 48
E j e r c i c i o s ........................................................................................................................................................................ 49
R e f e r e n c ia s .................................................................................................................................................................... 49
3. O b j e t o s y c l a s e s ........................................................................................................................................................ 51
3.1. ¿ Q u é e s la p r o g ra m a c ió n o r ie n ta d a a o b j e t o s ? ................................................................................ 51
3.2. U n e je m p lo s e n c i l l o .................................................................................................................................... 53
3 .3 . J a v a d o c .............................................................................................................................................................. 54
3 .4 . M é to d o s b á s i c o s .......................................................................................................................................... 57
3 .4 .1 . C o n s tr u c to r e s ................................................................................................................................... 57
3 .4 .2 . M é to d o s m o d ific a d o re s y d e a c c e s o ..................................................................................... 57
3 .4 .3 . S a lid a y t o S t r i n g ....................................................................................................................... 58
3 .4 .4 . e q u a l s ............................................................................................................................................... 58
3 .4 .5 . M é to d o s s t a t i c ........................................................................................................................... 59
3 .4 .6 . m a i n .................................................................................................................................................... 60
3.5. P a q u e t e s ............................................................................................................................................................ 60
3 .5 .1 . L a d ire c tiv a i m p o r t ................................................................................................................... 60
3 .5 .2 . L a in s tru c c ió n p a c k a g e ............................................................................................................ 61
3 .5 .3 . L a v a ria b le d e e n to rn o c l a s s p a t h ..................................................................................... 62
3 .5 .4 . R e g la s d e v is ib ilid a d a m is to s a d e n tro d e u n p a q u e t e ................................................... 63
3 .5 .5 . C o m p ila c ió n s e p a r a d a ................................................................................................................. 64
3 .6 . C o n s tru c c io n e s a d i c i o n a l e s ..................................................................................................................... 64
3 .6 .1 . L a r e fe re n c ia t h i s ....................................................................................................................... 64
3 .6 .2 . L a a b re v ia tu ra t h i s p a ra c o n s tr u c to r e s ............................................................................ 65
3 .6 .3 . E l o p e ra d o r i n s t a n c e o f .......................................................................................................... 65
3 .6 .4 . A trib u to s e s t á t i c o s ......................................................................................................................... 65
3 .6 .5 . In ic ia liz a d o re s e s t á t i c o s ............................................................................................................ 66
R e s u m e n .......................................................................................................................................................................... 67
E le m e n to s d el j u e g o .................................................................................................................................................. 68
E rro re s c o m u n e s ........................................................................................................................................................ 69
E n I n t e r n e t ..................................................................................................................................................................... 69
E j e r c i c i o s ........................................................................................................................................................................ 70
B ib l i o g r a f ía .................................................................................................................................................................... 71
4. H e r e n c i a ......................................................................................................................................................................... 73
4 .1 . ¿ Q u é e s la h e r e n c i a ? .................................................................................................................................. 73
4 .2 . S in ta x is b á s ic a d e J a v a .............................................................................................................................. 76
4 .2 .1 . R e d a s d e v i s i b i l i d a d ................................................................................................................... 76
4 .2 .2 . E l c o n s tr u c to r y s u p e r .............................................................................................................. 77
4 .2 .3 . M é to d o s y c la s e s f i n a l e s ............................................................................................................ 78
4 .2 .4 . S o b re e s c rib ie n d o u n m é t o d o ................................................................................................... 79
4 .2 .5 . M é to d o s y c la s e s a b s t r a c to s ..................................................................................................... 79
4 .3 . E je m p lo : e x te n s ió n d e l a c la s e F i g u r a ............................................................................................. 82
4 .3 .1 . D is g re s ió n : u n a in tro d u c c ió n a la o r d e n a c ió n ................................................................. 84
4 .4 . H e re n c ia m ú l ti p l e .......................................................................................................................................... 87
4 .5 . El in t e r f a z ......................................................................................................................................................... 88
4 .5 .1 . E s p e c ific a c ió n d e u n a in t e r f a z .............................................................................................. 88
4 .5 .2 . T m p le m e n ta c ió n d e u n a in t e r f a z ............................................................................................ 89
4 .5 .3 . V a rio s in f e r f a c e s ............................................................................................................................ 91
4 .6 . Im p le m e n ta c ió n d e c o m p o n e n te s g e n é r ic a s ....................................................................................... 91
R e s u m e n .......................................................................................................................................................................... 94
E le m e n to s d e l j u e g o .................................................................................................................................................. 95
E rro re s c o m u n e s ........................................................................................................................................................ 96
E n I n t e r n e t ..................................................................................................................................................................... 96
E j e r c i c i o s ........................................................................................................................................................................ 97
B ib lio g r a f ía .................................................................................................................................................................... 99
SEGUNDA PARTE
A lg o r itm o s y f u n d a m e n t o s d e p r o g r a m a c i ó n
6. E s tr u c tu r a s d e d a t o s ................................................................................................................................................ 137
7. R e c u r s i ó n ........................................................................................................................................................................ 165
9. N ú m e r o s a l e a t o r i o s ................................................................................................................................................ 249
TERCERA PARTE
A p lic a c io n e s
12. U t i l i d a d e s ........................................................................................................................................................................ 3 )7
CUARTA PARTE
Im p le m e n ta c io n e s
2 0 .1 . Id e a s b á s i c a s .................................................................................................................................................. 553
2 0 .1 .1 . P ro p ie d a d e s tr u c tu r a l............................................................................................................... 554
2 0 .1 .2 . P ro p ie d a d d e o r d e n a c ió n d e lo s m o n tíc u lo s ................................................................ 555
2 0 .1 .3 . O p e ra c io n e s p e r m i ti d a s .......................................................................................................... 556
2 0 .2 . I m p le m e n ta c ió n d e las o p e ra c io n e s b á s i c a s ..................................................................................... 559
2 0 .2 .1 . i n s e r t a r ..................................................................................................................................... 559
2 0 .2 .2 . e l i m i n a r M i n ............................................................................................................................. 562
2 0 .3 . a r r e g l a r M o n t i c u l o : c o n s tru c c ió n en tie m p o lin e a l d e l m o n tíc u lo ............................... 564
2 0 .4 . O p e ra c io n e s a v a n z a d a s : r e d u c i r C l a v e y m e z c l a r ...................................................... 568
2 0 .5 . O rd e n a c ió n in te rn a : m é to d o d e l m o n tíc u lo ..................................................................................... 568
2 0 .6 . O rd e n a c ió n e x t e r n a .................................................................................................................................... 571
2 0 .6 .1 . P o r q u é n e c e s ita m o s n u e v o s a lg o r itm o s ............................................................................. 572
2 0 .6 .2 . M o d e lo d e o rd e n a c ió n e x t e r n a ............................................................................................. 572
2 0 .6 .3 . E l a lg o ritm o s e n c i l l o ............................................................................................................... 572
2 0 .6 .4 . M e z c la m u l t i a r i a ....................................................................................................................... 574
2 0 .6 .5 . M e z c la m u l ti f a s e ....................................................................................................................... 575
2 0 .6 .6 . S e le c c ió n d e l r e e m p la z o ........................................................................................................ 576
R e s u m e n ......................................................................................................................................................................... 578
E le m e n to s d e l j u e g o .................................................................................................................................................. 578
E rro re s c o m u n e s .......................................................... 579
E n I n t e r n e t ..................................................................................................................................................................... 579
E je r c ic io s ........................................................................................................................................................................ 580
B ib lio g r a f ía .................................................................................................................................................................... 583
QUINTA PARTE
E s tr u c tu ra s d e d a t o s a v a n z a d a s
2 3 .1 . R e la c io n e s d e e q u iv a le n c ia ...................................................................................................................... 633
2 3 .2 . E q u iv a le n c ia d in á m ic a s y d o s a p lic a c io n e s ...................................................................................... 634
2 3 .2 .1 . A p lic a c ió n # 1: á rb o le s d e re c u b rim ie n to m í n i m o ................................................... 635
2 3 .2 .2 . A p lic a c ió n # 2 : el p ro b le m a d e l a n te c e s o r c o m ú n m á s p r ó x im o ........................ 637
2 3 .3 . E l a lg o ritm o d e b ú s q u e d a r á p i d a .......................................................................................................... 641
2 3 .4 . E l a lg o ritm o d e u n ió n r á p i d a ................................................................................................................. 642
2 3 .4 .1 . A lg o ritm o s d e u n ió n in te lig e n te s ....................................................................................... 643
2 3 .4 .2 . C o m p re s ió n d e c a m i n o s ........................................................................................................ 645
2 3 .5 . I m p le m e n ta c ió n e n J a v a ............................................................................................................................ 647
2 3 .6 . C a s o p e o r d e la u n ió n p o r ra n g o y la c o m p re s ió n d e c a m i n o s ............................................... 648
2 3 .6 .1 . A n á lis is d el a lg o ritm o u n ir /b u s c a r ................................................................................... 649
R e s u m e n .......................................................................................................................................................................... 654
E le m e n to s d e l j u e g o .................................................................................................................................................. 655
E rro re s c o m u n e s ........................................................................................................................................................ 656
E n i n t e r n e t ..................................................................................................................................................................... 656
E j e r c i c i o s ........................................................................................................................................................................ 656
B ib lio g r a f ía .................................................................................................................................................................... 658
APÉNDICES
A. P l a t a f o r m a s p a r a J a v a ............................................................................................................................................ 663
A . 1. E s ta b le c ie n d o e l e n t o r n o ........................................................................................................................... 663
A . 1.1. In s tru c c io n e s p a ra U n i x .......................................................................................................... 663
A . 1.2. In s tru c c io n e s p a ra W in d o w s9 5 . N T ..................................................................................... 664
A .2 . J D K d e S u n ...................................................................................................................................................... 665
A .3. E n to rn o s d e d e s a rro llo v i s u a l ................................................................................................................ 666
A .3 .1 . S y m a n te c C a f é .............................................................................................................................. 667
A .3 .2 . M ic ro s o ft V isu a l J + + ............................................................................................................ 671
B. O p e r a d o r e s ..................................................................................................................................................................... 679
í n d i c e a n a l í t i c o ..................................................................................................................................................................... 731
Prólogo
L
a v e rs ió n o rig in a l d e e s te lib ro s e d is e ñ ó p a ra u tiliz a rla e n u n cursi» d e in fo r
m á tic a d e d o s s e m e s tre s d e d u ra c ió n , c o m e n z a n d o p o r lo q u e s e c o n o c e ha-
b ilu a lm e n te c o m o E stru c tu ra s d e D atos.
F l c o n te n id o d e d ic h o c u rs o h a id o e v o lu c io n a n d o a lo la rg o d e l tie m p o . M ie n
tra s q u e h a y u n c ie r to c o n s e n s o g e n e ra l c o n re s p e c to a lo s te m a s a c u b rir, to d a v ía
h a y m u c h o d e sa c u e rd o e n re la c ió n c o n lo s d e ta lle s . U n te m a u n ifo rm e m e n te a c e p
ta d o lo c o n s titu y e n lo s p rin c ip io s d e l d e s a rro llo d e so ftw a re , y m á s e n c o n c re to los
c o n c e p to s d e e n c a p s u la c ió n y o c u lta m ie n to d e la in fo rm a c ió n . T o d o s lo s c u rs o s de
e s tru c tu ra s d e d a to s tie n d e n a in c lu ir u n a in tro d u c c ió n a l a n á lis is d e l tie m p o de
e je c u c ió n , la re c u rs ió n . lo s a lg o ritm o s b á s ic o s d e o rd e n a c ió n y la s e s tru c tu ra s de
d a to s e le m e n ta le s. E n m u c h a s u n iv e rsid a d e s s e o fre c e n c u rs o s a v a n z a d o s q u e c u
b re n a u n n iv el su p e rio r c o n c e p to s d e e s tru c tu r a s d e d a to s , a lg o ritm o s y a n á lisis
d e l tie m p o d e e je c u c ió n . El m a te ria l d e e s te lib ro s e h a d is e ñ a d o c o n la in te n c ió n
d e se r u s a d o e n c u rs o s d e a m b o s n iv e le s, e lim in a n d o a s í la n e c e s id a d d e a d q u irir
un se g u n d o lib ro d e texto.
A u n q u e los d e b a te s m á s e n c o n a d o s e n e s te te rre n o se c e n tra n e n t o m o a la
e le c c ió n d e l le n g u a je d e p ro g ra m a c ió n m á s a p ro p ia d o , h a y o tr a s d e c is io n e s f u n d a
m e n ta le s a to m a r, in c lu y e n d o las sig u ie n te s:
Un enfoque novedoso
Ja v a
El lib ro a d o p ta u n e n fo q u e n o v e d o s o s e p a ra n d o la p re se n ta c ió n d e c a d a e stru c tu ra
d e d a to s e n su e s p e c ific a c ió n (a tra v é s d e una in te rfa z Ja v a ) e im p le m e n ta c ió n . E s
E ste lib ro d e te x to p re s e n ta e l m a te ria l u tiliz a n d o e l le n g u a je d e p ro g ra m a c ió n J a
te e n fo q u e p ro p o rc io n a v a rio s b e n e fic io s , e n tr e e llo s la p ro m o c ió n d e l p e n sa m ie n va. É ste e s u n le n g u a je re la tiv a m e n te re c ie n te q u e a m e n u d o se c o m p a ra c o n C + + .
to a b stra c to . A n te s d e c o n o c e r la im p le m e n ta c ió n s e p re s e n ta la in te rfa z d e la c la J a v a o fre c e m u c h a s v e n ta ja s, y m u c h o s p ro g ra m a d o re s lo c o n s id e ra n u n len g u aje
se . o b lig a n d o a s í a l e s tu d ia n te a p e n s a r d e sd e e l p rin c ip io so b re la fu n c io n a lid a d v
m u c h o m á s se g u ro , p o rta b le y fácil d e u s a r q u e C + + .
e fic ie n c ia p o te n c ia l d e las d is tin ta s e s tru c tu r a s d e d a to s . P o r e je m p lo , lo s e s tu d ia n El u s o d e J a v a req u ie re to m a r a lg u n a s d e c is io n e s a la h o ra d e e s c r ib ir un libro
te s v e rá n p ro g ra m a s q u e u s a n la s ta b la s h a sli c íe n lo s d e p á g in a s a n te s d e im p le- d e te x to . A lg u n a s d e e s ta s d e c is io n e s h a n s id o las sig u ie n te s:
m e n ta rla s. L as in te rfa c e s d e las e s tru c tu r a s d e d a to s se d e s c rib e n e n u n ú n ic o c a p í
tu lo d e la P arte II. E n la P arte II se d e s c rib e n ta m b ié n la s té c n ic a s b á s ic a s do 1. S e a s a n e x c lu s iv a m e n te c o n s tr u c c io n e s d e J a v o 1.1: a u n q u e c u a n d o se
a n á lisis, la re c u rsió n y e l p ro b le m a d e la o rd e n a c ió n . L a P a n e III c o n tie n e u n a c o e s c r ib ió la v e r s ió n o rig in a l d e e s te lib ro s o la m e n te h a b ía u n c o m p ila d o r
lecc ió n d e a p lic a c io n e s q u e u sa n la s d is tin ta s e s tru c tu r a s d e d a to s . L a im p le m e n ta d e J a v a l . l d is p o n ib le , e s to y s e g u r o d e q u e a c tu a lm e n te e x is te n o tro s.
c ió n d e las e s tru c tu ra s b á s ic a s n o se e s tu d ia h a s ta la P a rte IV . u n a v e z s e h a n u sa A s e g ú re s e d e q u e e s tá u s a n d o u n c o m p ila d o r c o m p a tib le c o n J a v a l . l .
d o d ic h a s e stru c tu ra s. P u e s to q u e lo d o e l c ó d ig o q u e a p a re c e e n e l lib ro e s tá L a d if e re n c ia m á s n o ta b le e n e l te x to p rin c ip a l e s e l u s o d e las c la s e s
d is p o n ib le (v é a s e D is p o n ib ilid a d d e l c ó d iy o e n la p á g in a XXVI). los estu d ia n te s p a ra la E S d e J a v a l . l e n lu g a r d e la s . v e n id a s a m e n o s , c la s e s d e J a
p u e d e n d is e ñ a r p ro y e c to s d e p ro g ra m a c ió n d e c ie r ta e n v e rg a d u ra b a sta n te p ro n to , v a 1.0.2. E n tre e lla s s e e n c u e n tra n H u í f o r e d R e a d e r . F i l e R e a d e r y
u s a n d o e l s o ftw a re e x is te n te . L a s h e rra m ie n ta s d e d e s a rro llo d e s o ftw a re e n u n io s In p u tS tre a m R e a d e r.
los le n g u a je s v ie n e n j u n t o c o n g ra n d e s lib re ría s , y la m a y o r p a rte d e la s e s tru c tu 2. N o s e lin c e m u c h o h in c a p ié e n la s G U Is : c o n s titu y e n u n a c a ra c te rís tic a
ra s d e d a to s in te re sa n te s fo rm a rá n p a rte d e e s ta s lib re ría s m á s ta rd e o m á s te m p ra fa n tá s tic a d e J a v a , y su u s o se d e s c rib e e n e l A p é n d ic e D . p e r o so n un d e
n o . P re v e o q u e e n lo s c u rs o s d e e s tru c tu r a s d e d a to s se p ro d u c irá u n e v e n tu a l d e s ta lle d e im p le m e n ta c ió n m á s q u e u n te m a d e l c u rs o . P a r a s a tis f a c e r e l o b
p la z a m ie n to d e l é n fa s is d e la im p le m e n ta c ió n a l uso. je tiv o d e l lib ro , e l a p é n d ic e e s e l m e jo r lu g a r d o n d e e s tu d ia r las G U Is.
M u c h o s p ro fe so re s p re fe rirá n u n e n fo q u e m á s tra d ic io n a l e n e l q u e c a d a e s A d e m á s e s la p arte d e l le n g u a je q u e m á s h a c a m b ia d o e n J a v a l . l . E s la
tru c tu ra d e d a to s s e d e fin e p rim e ro , lu e g o s e im p le m e n to y p o r ú ltim o s e usa. p a rte m á s in e sta b le d e l le n g u a je .
P u e sto q u e n o h a y d e p e n d e n c ia s e n tr e la s p a rte s III y IV . se p u e d e ta m b ié n e n s e 3. N o s e h a c e h in c a p ié e n lo s a p p lc is: lo s a p p lc ls u s a n G U Is . A d e m á s, lo im
ñar fá c ilm e n te s ig u ie n d o e l m é to d o tra d ic io n a l u tiliz a n d o e s te libro. p o rta n te d e l c u r s o s o n las e s tru c tu r a s d e d a to s , n o la s c a ra c te rís tic a s del
le n g u a je . E n e l A p é n d ic e I ) se e s tu d ia n lo s a p p lc ls. L o s p ro fe so re s p u ed en
h a c e r q u e lo s e stu d ia n te s d is e ñ e n a p p lc ls c o m o p a n e d e l u s o (o s im u la
Prerrequisitos ción» d e las e s tru c tu ra s d e d alo s.
4. N o s e u sa n la s c a r a c te r ís tic a s m á s n o v e d o s a s d e J a v a l . l : é s ta s in clu y en
L o s e s tu d ia n te s q u e v a y a n a u sa r e s te lib ro d e b e ría n te n e r p re v ia m e n te c o n o c i c la s e s in te rn a s, n u e v a s re g la s p u ra v a ria b le s fin a le s , e tc . H e in te n ta d o usar
m ien to s so b re a lg ú n le n g u a je d e p ro g ra m a c ió n m o d u la r u o rie n ta d o a o b je to s. Se e l c o ra z ó n d e J a v a p a ra e v ita r e x c e s iv a s c a ra c te rís tic a s cu rio sas.
su p o n e n c o n o c im ie n to s so b re la s c a ra c te rís tic a s b á sic a s, in c lu y e n d o tip o s p rim iti 5. S e e s tu d ia e l c o n c e p to d e p u n te r o c u a n d o s e in tr o d u c e n la s va ria b le s r e
v o s. o p e ra d o re s, e s tru c tu ra s tic c o n tro l, fu n c io n e s (m é to d o s ) v e n tra d a s a lid a (p e ro fe r e n c ia : J a v a n o tie n e u n tip o p u n te ro , sin o un tip o re fe re n c ia . S in e m b a r
n o n e c e sa ria m e n te d e v e c to re s y c la se s). g o . lo s p u n te ro s h a n sid o un te m a im p o rta n te e n lo s c u rs o s d e e stru c tu ra s
L o s e s tu d ia n te s q u e h a y a n a s is tid o a u n c u r s o d e J a v a p u e d e n c o m e n z a r c o n el d e d a to s q u e e s n e c e sa rio in tro d u c ir. Ilu stro e l c o n c e p to d e p u n te ro s en
C a p ítu lo 3 (ti q u iz a m á s a d e la n te ). L o s e s tu d ia n te s q u e h a y a n u s a d o o tro s le n g u a o tro s le n g u a je s al e s tu d ia r las v a ria b le s re feren cia.
je s d e b e ría n e m p e z a r c o n e l C a p ítu lo I E llo s ta m b ié n d e b e ría n u s a r lo s ap é n d ic e s, (>. L a s h e b ra s s o la m e n te s e m e n c io n a n e n e l A p é n d ic e />. v e n r e la c ió n c o n
q u e c o m b in a d o s c o n la P arte I. p ro p o rc io n a n u n a g ra n c a n tid a d d e in fo rm a c ió n s o la s a n im a c io n e s : alg u n o s m ie m b ro s d e la c o m u n id a d in fo rm á tic a d e fie n
bre Ja v a . P o r si a lg ú n e stu d ia n te q u is ie ra a p o y a rs e e n a lg ú n lib ro d e re fe re n c ia d e d e n q u e la c o m p u ta c ió n m u ltih e b ra d e b e ría in c lu irse e n u n c u rs o d e este-
Ja v a , e n e l C a p itu lo I s e d a n a lg u n a s re c o m e n d a c io n e s a l resp ecto . tip o . S i se d e s e a , s e p u e d e u tiliz a r p a ra e llo e l A p é n d ic e I).
C o m o to d o s Ion len guaje* d e p ro g ra m a c ió n . J a v a ta m b ié n lie n e d e s v e n ta ja s d e e je c u c ió n d e c a d a o p e ra c ió n so p o rta d a p o r c a d a e s tru c tu ra d e d a to s . «La im p le-
N o so p o rta d ir e c ta m e n te p ro g ra m a c ió n g e n é ric a , s in o q u e p a ra h a c e rlo s e req u iere m e n ta c ió n d e e s ta s e s tru c tu r a s d e d a to s s e in c lu y e e n la P arte IV .) E l C a p ítu lo 7
d a r u n ro d e o q u e \ e e s tu d ia e n e l C a p ítu lo 3. 1:1 s o p o rte p a ra la E S e n J a v a es d e s c rib e la re c u rsió n in tro d u c ie n d o p rim e ro l a n o c ió n d e d e m o s tra c ió n p o r in d u c
m ín im o . P o r e llo lo s e je m p lo s p re s e n ta d o s h a c e n u n m ín im o u s o d e la s fa c ilid a d e s c ió n T a m b ié n e s tu d ia las té c n ic a s d e d iv id e y v e n c e rá s , p ro g ra m a c ió n d in á m ic a y
d e E S d e Jav a v u e lta a trá s. U n a s e c c ió n e s tu d ia v a rio s a lg o ritm o s n u m é ric o s q u e se u tiliz a n e n la
im p le m e n ta c ió n d e u n im p o rta n te a lg o ritm o d e e n c rip ta c ió n : e l s iste m a d e e n c rip -
lu c ió n K S A . P a ra la m a y o ría d e lo s e stu d ia n te s, la s e g u n d a m ita d d e l C a p ítu lo 7
O rganización d e l libro c o rre sp o n d e ría m á s b ie n a u n c u r s o a v a n z a d o . E l C a p ítu lo 8 d e s c rib e , in ip le n ie n ta
y u n a li/a v a rio s a lg o ritm o s b á s ic o s d e o rd e n a c ió n , in c lu y e n d o la o rd e n a c ió n p o r
En su P arte I e l lib ro p re se n ta e l le n g u a je J a s a y la p ro g ra m a c ió n o rie n ta d a a o b je in se rc ió n . S h e llso rt. m e rg e so ri y q u ic k s o rt. T a m b ié n d e m u e s tra la c o ta in ferio r
to s (p a rtic u la rm e n te la a b stra c c ió n ). S e e s tu d ia n lo s tip o s p rim itiv o s, lo s tip o s r e c lá s ic a d e la o rd e n a c ió n y d is c u te e l p ro b le m a re la c io n a d o d e la s e le c c ió n . P o r u l
fe re n c ia y a lg u n a s d e las c la s e s y e x c e p c io n e s p re d e fin id a s, c o n tin u a n d o c o n e l d i tim o . e l C a p ítu lo 9 e s u n b re v e c a p ítu lo so b re n ú m e ro s a le a to rio s, q u e in c lu y e su
se ñ o d e n u e v a s c la s e s y la h e re n c ia . g e n e ra c ió n y l a u tiliz a c ió n d e a lg o ritm o s a le a to rio s.
L a P arte II p re s e n ta la n o ta c ió n O y alg u n o s p a ra d ig m a s a lg o rítm ic o s, c o m o la L a P a n e III p ro p o rc io n a v a n o s c a s o s d e e stu d io , e n la q u e c a d a c a p ítu lo g ira
re c u rsió n y lo s a lg o ritm o s a le a to rio s. Se d e d ic a un c a p ítu lo c o m p le to a l te m a d e la e n to rn o a un te m a g e n e ra l. E l C a p ítu lo 10 ilu stra v a n a s té c n ic a s im p o rta n te s e s tu
o rd e n a c ió n . > o tr o a la d e s c r ip c ió n d e las estru c tu ra s d e d a to s b á sic a s. S e p re s e n d ia n d o ju e g o s . El C a p ítu lo 11 e s tu d ia e l u s o d e p ila s e n lo s le n g u a je s d e p ro g ra
ta n las in te rfa c e s y los tie m p o s d e e je c u c ió n d e la s o p e ra c io n e s s in d a r u n a im ple- m a c ió n . e x a m in a n d o u n a lg o ritm o q u e c o m p r u e b a q u e lo s sím b o lo s e s té n e q u ili
m e n ta c ió n . E n e s te p u n to d e l te x to , e l p ro fe s o r p u e d e o p ta r e n tre v a rio s e n fo q u e s b ra d o s y e l a lg o ritm o c lá s ic o d e e v a lu a c ió n d e e x p re s io n e s c o n p re c e d e n c ia . Se
« para p re s e n ta r e l m a te ria l re s ta n te , in c lu y e n d o los d o s sig u ien tes: d a n im p lc m e n ta c io n e s c o m p le ta s d e a m b o s a lg o ritm o s . E l C a p ítu lo 12 e s tu d ia u ti
lid a d e s b á sic a s d e c o m p re s ió n d e fic h e ro s y g e n e ra c ió n d e re fe re n c ia s c ru z a d a s y
1. U tiliz a r la c o rre s p o n d ie n te im p le m e n ta c ió n d e la P a rte IV a l d e s c r ib ir c a
p ro p o rc io n a u n a im p le m e n ta c ió n c o m p le ta d e un g e n e ra d o r d e re fe re n c ia s c ru z a
d a tip o d e d a lo s . E l p ro f e s o r p u e d e p e d ir a lo s a lu m n o s q u e e x tie n d a n las
d as. E l C a p ítu lo 13 p re s e n ta u n a b rev e d e s c rip c ió n d e l c o n c e p to d e s im u la c ió n u ti
c la se s d e d iv e r s a s m a n e ra s, c o m o se s u g ie re e n lo s e je rc ic io s.
liz a n d o u n p ro b le m a q u e p u e d e in te rp re ta rs e c o m o d e sim u la c ió n , y d e l c o a c e p to
2. M o s tra r c ó m o s e u s a n la s in te rfa c e s y c u b rir la im p le m e n ta c ió n m a s tard e
d e sim u la c ió n d irig id a p o r e v e n to s P o r ú ltim o , e l C a p ítu lo 14 ilu stra c ó m o se u ti
e n e l c u rs o . L o s c a s o s d e e s tu d io d e la P a n e III p u e d e n u tiliz a rs e p a ra se
liz a n c ie rta s e s tru c tu ra s d e d a to s p a ra im p lc m e n ta r e fic ie n te m e n te v a rio s a lg o rit
g u ir e s te e n fo q u e . Y a q u e la s im p lc m e n ta c io n e s c o m p le ta s p u e d e n o b te
m o s d e b ú sq u e d a d e c a m in o s m ín im o s so b re g ra to s.
n e rse v ía In te rn e t, e l p ro fe s o r p u e d e p ro p o rc io n a r u n a lib re ría d e c la se s
1.a p a rte IV p re s e n ta las im p lc m e n ta c io n e s d e las e s tru c tu ra s d e d a to s c o rr e s
p ara q u e s e u tilic e n e n las p rá c tic a s d e p ro g ra m a c ió n .
p o n d ie n te s a las in te rfa c e s d e l C a p ítu lo 6. E n e s ta p a rte , e s p e c ia lm e n te e n lo s C a
L a P arte V p re s e n ta e s tru c tu ra s d e d a to s a v a n z a d a s, c o m o lo s á rb o le s d e e n p ítu lo s 18 y 2 0 . se u tiliz a n a lg u n a s n o c io n e s m a te m á tic a s , q u e p o d ría n ev ita rse a
sa n c h a m ie n to . lo s m o n tíc u lo s d e e m p a re ja m ie n to s y la s p a rtic io n e s, q u e p u ed en ju ic io d e l p ro fe so r. E l C a p ítu lo 15 p ro p o rc io n a im p lc m e n ta c io n e s d e las p ila s y las
se r c u b ie r ta s si e l tie m p o lo p e rm ite , o e n u n c u r s o m á s a v a n za d o . c o la s . E s ta s e s tru c tu r a s s e im p lc m c n iu n p rim e ro u tiliz a n d o u n v e c to r c x te n s ib le . y
d e sp u é s u tiliz a n d o listas e n la z a d a s L a s listas e n la z a d a s g e n e ra le s s e e s tu d ia n e n el
C a p ítu lo 16. S e d e ja n c o m o e je r c ic io s e x te n s io n e s c o m o las lis ta s d o b le m e n te e n
Organización del libro por capítulos la z a d a s. la s lis ta s e n la z a d a s circ u la re s y la im p le m e n ta c ió n d e c u rs o re s. E l C a p í
tu lo 17 e s tu d ia lo s á rb o le s e ilu stra lo s e s q u e m a s d e re c o rrid o e s tá n d a r El C a p ítu
L a P a n e I e s tá fo rm a d a p o r c u a tr o c a p ítu lo s q u e d e s c rib e n lo s c o n c e p to s b á s ic o s l o 18 e s u n c a p ítu lo d e ta lla d o q u e p ro p o rc io n a d iv e r s a s im p lc m e n ta c io n e s d e los
d e J a v a u tiliz a d o s e n e l te x to . E l C a p ítu lo I p re s e n ta lo s tip o s p rim itiv o s e ilu stra a rb o le s b in a rio s d e b ú sq u e d a . In ic ia l m e n te s e m u e s tra n lo s á rb o le s b in a rio s de
c ó m o e s c r ib ir p ro g ra m a s b á s ic o s e n J a v a E l C a p ítu lo 2 e s tu d ia lo s tip o s referen cia b ú sq u e d a b á s ic o s y d e s p u é s á rb o le s d e b ú sq u e d a q u e s o p o rta n b ú sq u e d a p o r p o s i
e ilu stra e l c o n c e p to b á s ic o d e p u n ten * (a u n q u e J a v a n o c o n tie n e p u n te ro s) d e tal c ió n . L o s á rb o le s A V L se d e fin e n p e ro n o se im p le m e n ta n : p o r e l c o n tra rio , s í se
fo rm a q u e lo s e s tu d ia n te s a p re n d a n e s te c o n c e p to b á s ic o d e los c u rs o s d e E s tru c tu im p lc m c n ta n los á rb o le s ro jin e g ro s y lo s A A -á rb o le s. d e m a y o r in te ré s p ráctico .
ra s d e D ato s. S e ilu stran v a rio s tip o s re fe re n c ia b á sic o s (c a d e n a s , v e c to re s y fic h e P o r ú ltim o , se e s tu d ia n lo s B -árb o Ics. E l C a p ítu lo 19 e s tu d ia las ta b la s h a s h e im
ro s). y se d isc u te e l u so d e e x c e p c io n e s. E l C a p ítu lo 3 c o n tin ú a e l e s tu d io d e s c ri p le m e n to u n e s q u e m a d e e x p lo ra c ió n c u a d rá tic a , d e s p u é s d e e x a m in a r u n a a lte rn a
b ie n d o c ó m o s e im p lc m e n ta u n a c la se . E l C a p ítu lo 4 m u e s tra e l u so d e la h e re n c ia tiv a m á s sim p le . E l C a p ítu lo 2 0 d e s c rib e lo s m o n tíc u lo s b in a r io s y e x a m in a la o r
al d is e ñ a r je r a rq u ía s (in c lu y e n d o c la s e s d e e x c e p c io n e s ) y c o m p o n e n te s g e n é ric a s d e n a c ió n m e d ia n te m o n tíc u lo s y la o rd e n a c ió n ex te rn a .
L a P a rle II s e c e n tr a e n e l e s tu d io d e lo s a lg o ritm o s y fu n d a m e n to s d e p ro g ra lu í P a n e V in c lu y e u n m a te ria l m á s in d ic a d o p a ra u n c u rs o m á s a v a n z a d o o
m a c ió n b á s ic o s . E l C a p ítu lo 5 p ro p o rc io n a u n a d is c u s ió n c o m p le ta d e la c o m p le ji c o m o re fe re n c ia g e n e ra l S in e m b a r g o , lo s a lg o ritm o s so n a c c e sib le s in c lu s o e n un
d a d e n tie m p o y d e la n o ta c ió n O . ta m b ié n se e s tu d ia y a n a liz a la b ú sq u e d a b in a c u rs o d e p rim e r n iv el P o r c o m p le titu d . s e in c lu y e n c o m p lic a d o s a n á lisis m a te m á
ria . E l C a p ítu lo 6 e s un c a p ítu lo c ru c ia l e n e l q u e s e p re se n ta n las in te rfa c e s d e las tic o s. El C a p ítu lo 21 d e s c rib e lo s á rb o le s d e e n sa n c h a m ie n to , lo s c u a le s s o n á rb o
e s tru c tu ra s d e d a to s , d a n d o a rg u m e n to s in tu itiv o s so b re c u a l d e b e ría se r e l tie m p o le s b in a rio s d e b ú sq u e d a q u e s e c o m p o rta n b ie n e n la p rá c tic a y q u e c o m p ite n con
lo s m o n tíc u lo s b in a r io s e n a lg u n a s a p lic a c io n e s q u e re q u ie re n c o la s d e p rio rid a d das». q u e re fe re n c ia a u n c ó d ig o sim ila r d e a n á lisis lé x ic o d e la S e c c ió n 1 1.1
Kl C a p ítu lo 22 d e s c rib e las c o la s d e p rio rid a d q u e s«*portan o p e ra c io n e s d e m e z c la (c o m p ro b a c ió n d e sím b o lo s e q u ilib ra d o s).
v p ro p o rc io n a u n a lm p le m e n ta c ió n d e lo s m o n tíc u lo s d e e m p a re ja m ie n to s . F in a l • C a p ítu lo s /V v 2 0 IT a b la s lla s li/C o la s J e p r io r id a d !: p u e d e n e s tu d ia rs e e n
m e n te . e l C a p ítu lo 2 3 e x a m in a la e s tru c tu ra c lá s ic a d e p a rtic ió n c u a lq u ie r m o m en to .
L o s a p é n d ic e s c o n tie n e n m a te ria l a d ic io n a l s»*bre J a s a E l A p é n d ic e A ilu stra • P a n e V lE s tr u i tu ra s J e J a to s a v a n z a J a s l: e s te m a te ria l e s a u lo c o n te n id o y
c ó m o c o m p ila r y e je c u ta r p ro g ra m a s J a v a e n d iv e rsa s p la ta fo rm a s. F l A p é n d ic e B n o rm a lm e n te se e s tu d ia e n c u r á i s su p e rio re s.
e n u m e ra los o p e ra d o re s \ su p re c e d e n c ia . E l A p é n d ic e C re s u m e las lib re ría s J a v a • A p é n J u e s l Mas J a v a ! e l m a te ria l s o b r e G U I d e l A p é n d ic e I ) p u e d e e s tu
u tiliz a d a s e n e l te x to . E l A p é n d ic e D d e s c rib e e l A W T y los a p p le ts. T a m b ié n e s d ia rs e e n c u a lq u ie r m o m e n to tra s e l C a p ítu lo 4. se g ú n re s u lte c o n v e n ie n te .
tu d ia la s h e b ra s d e e je c u c ió n e n e l c o n te x to d e la s a n im a c io n e s.
E
l p re s e n te te x to real i/.a u n e s tu d io e x h a u s tiv o d e las e s tru c tu ra s d e d a to s m a
te ria liz a d a s e n e l m a rc o d e la p ro g ra m a c ió n o rie n ta d a a o b je to s. P ara e llo ,
se u l d i / a un le n g u a je m o d e rn o c o m o J a v a , q u e retin e u n a s c a ra c te rís tic a s
m u y a tra c tiv a s p a ra u su a rio s, ta n to d e g u s to s m á s a c a d é m ic o s c o m o d e u n p erfil
m á s a p lic a d o . N o re p e tire m o s a q u í la d e s c rip c ió n d e l te x to q u e d e fo rm a e sm e ra d a
y m u y d e ta lla d a re a liz a e l a u to r e n su p ró lo g o : s in e m b a rg o , s í c o n s id e ra m o s o p o r
tu n o re c a lc a r c u á le s so n lo s p rin c ip a le s o b je tiv o s c u b ie rto s p o r e l m ism o , ta n to e n
e l m a r c o a c a d é m ic o , c o m o e n e l p ro fesio n al. C o m e n z a n d o p o r e s te ú ltim o , e l p ro
g ra m a d o r e n J a v a , o a q u e l in te re sa d o e n c o n o c e r las p o sib ilid a d e s d e e s te le n g u a
j e . e n c u a n to a e s tru c tu ra c ió n d e d a to s s e re fie re , e n c o n tra rá e n e l te x to u n a p re
se n ta c ió n d e ta lla d a d e la im p le m e n ta c ió n \ m o d o d e a p lic a c ió n d e las e stru c tu ra s
d e d a to s m á s u tiliz a d a s, a s í c o m o d e a lg u n a s o tr a s m ás so fistic a d a s. P o r su parte,
lo s p ro fe so re s y a lu m n o s d e d is c ip lin a s d e E stru c tu ra s d e D a lo s e n c o n tra rá n e n e s
te te x to u n a p re s e n ta c ió n d e las m ism a s q u e h a c e h in c a p ié e n lo s p rin c ip io s d e en-
c a p su la c ió n y o c u lta m ic n to . h asta e l e x tr e m o d e d is c u tir p rim e ro las ap lic a c io n e s
d e la s e s tru c tu r a s e s tu d ia d a s , p a rtie n d o d e la d e s c rip c ió n d e las m ism a s, y d e ja r
p a ra m á s a d e la n te e l e s tu d io d e su im p le m e n la c ió n .
C o m o q u ie ra q u e . e n b u e n a m e d id a , e l é n fa s is se p o n e e n lo s d e ta lle s té c n ic o s
d e la s im p le m e n ta c io n e s y a p lic a c io n e s , e l m a rc o id eal d e u so d e l te x to s e ría e l de
u n L a b o ra to rio d e d e s a r ro llo y u s o «le E stru c tu ra s d e D a to s: o b ie n e l d e u n a a s ig
n a tu ra m á s g e n e ra l d e e s tu d io d e d ic h a m a te ria , so p o rta d a p o r la re a liz a c ió n d e
p rá c tic a s s o b r e e l c o m p u ta d o r. E s c ie r to q u e . e n e s te ú ltim o c a s o , si e l p ro fe so r
d e s e a in c lu ir u n e s tu d io te ó ric o d e lo s Pipos A b stra c to s d e D a lo s, d e b e ría c o m p le
ta r su b ib lio g ra fía c o n u n te x to q u e c u b ra d ic h a m ateria.
P o r ú ltim o , re m a rc a re m o s e l in te ré s q u e tie n e e l s o p o rte q u e e l a u to r d a a los
le c to re s a tra v é s d e la re d . p u e s a tra v é s d e l m ism o n o s ó lo se p u e d e n c o n s e g u ir las
v e rsio n e s o rig in a le s (e n in g lé s) d e to d o s lo s p ro g ra m a s q u e a p a re c e n e n e l te x to ,
sin o q u e s e tie n e a c c e s o a e v e n tu a le s v e rs io n e s m e jo ra d a s y. e n g e n e ra l, a d iv e rso
m a te ria l d e a c tu a liz a c ió n y c o m p le m e n to d e l te x to , sin te n e r q u e e s p e r a r a e v e n
tu a le s s e g u n d a s e d ic io n e s re v isa d a s. A l re s p e c to , c o n fia m o s e n q u e lo s le c to re s de
e s ta v e rs ió n tra d u c id a se p a n a c e p ta r c o m o in e lu d ib le la c o n s u lta d e d ic h o m a te ria l
e n mi v e rs ió n o rig in a l, p u e s a l e n o rm e tr a b a jo q u e s u p o n d ría e l m a n te n im ie n to ac
ru n c i
Un recorrido por Javo
tu a liz a d o d e u n a v e rs ió n tra d u c id a d e d ic h a p a g in a e le c tró n ic a , se u n e e l h e c h o de
q u e se tra ta d e u n a p á g in a p erso n al d e l a u to r P o r e l c o n tra rio , a l p la n te a rn o s la
tra d u c c ió n d e l te x to h e m o s c o n s id e ra d o m u y d e se a b le , y p o r ta n to a s í lo h e m o s
h ec h o , tra d u c ir p o r c o m p le to e l te x to d e lo s p ro g ra m a s e n e l m is in o C o n e llo e n
te n d e m o s q u e se f a c ilita e n o rm e m e n te la la b o r d e c o m p re n sió n d e lo s m is m o s por
p a n e ile nuestn»s le cto res, a u n a p e s a r d e la m o le stia q u e p o d ría s u p o n e r e l ten e r
q u e m a n e ja r las v e rsio n e s o rig in a le s. Por o tra p a n e , y sin q u e e llo su p o n g a a su m ir
n in g u n a re s p o n sa b ilid a d so b re p o sib le s c o n se c u e n c ia s d e e rro re s e n la s v e rsio n e s
tra d u c id a s , s í h e m o s h e c h o u n e n o rm e e s f u e rz o e n e s te sentid**, p ro c u ra n d o q u e
la s v e rs io n e s tra d u c id a s s e c o m p o rte n e x a c ta m e n te ig u al q u e la s o rig in a le s, sie n d o
p o r ta n to m u tu a m e n te re e m p la z a b le s (lo q u e e s d e h e c h o un e je m p lo d e la d o c tri
n a d e c n c a p s u la m ie n to y o c u lta c ió n a p lic a d a e n e l texto», h a c ie n d o p o r su p u e sto
e x c e p c ió n d e la n e c e sid a d d e tra d u c ir lo s c o rre s p o n d ie n te s id e n tific a d o re s que
a p a re c e n e n las in te rfa c e s d e la s e stru c tu ra s.
P o r o tra p a n e , y a p e s a r d e q u e lo s p ro g ra m a s o rig in a le s e sta b a n in ic ia lm e n te c o n
c e b id o s p ara la v e rs ió n I I d e Ja v a , é s to s h a n sid o re c o p ila d o s y e je c u ta d o s sin
n in g ú n p ro b le m a e n la n u e v a p la ta fo rm a d e J a v a 1.2. ta m b ié n lla m a d a J a v a 2 . g ra
c ia s al e sfu e rz o d e l a u to r e n u s a r lo m á x im o p o sib le e l c o ra z ó n d e Jav a. P»*r e ste
ú ltim o m o tiv o e s d e e s p e ra r q u e lo s p ro g ra m a s s ig a n s ie n d o c o m p a tib le s c o n v e r
s io n e s fu tu ra s ile Java.
l-o s tra d u c to re s y re v is o re s lé e m e o s
M a d rid , m a rz o 2 0 0 0
C A P I T U L O
i Javo básico
E
l o b je tiv o p rin c ip a l d e e s te lib ro o s e s tu d ia r té c n ic a s d o re s o lu c ió n d e p ro
b le m a s q u e p e rm ita n la c o n s tru c c ió n do p ro g ra m a s s o fis tic a d o s y e fic ie n te s.
P rá c tic a m e n te to d o e l m a te ria l u tiliz a d o so p u ed o a p lic a r e n c u a lq u ie r le n
g u a je d e p ro g ra m a c ió n . S o p o d ría a rg u m e n ta r q u e p a ra e n s e ñ a r lo s c o n c e p to s b a s
ta c o n u n a d e s c rip c ió n su fic ie n te m e n te a m p lia e n p s e u d o c ó d ig o d e e sta s té c n ic a s.
S in e m b a rg o , c re e m o s q u e o s d e v ital im p o rta n c ia tr a b a ja r c o n c ó d ig o real.
N o h a y e s c a s e z do le n g u a je s do p ro g ra m a c ió n d is p o n ib le s. E n e l m o m e n to en
q u e so e s c rib ió e s te lib ro . C + * e ra e l le n g u a je m á s u s a d o ta n to a c a d é m ic a c o m o
c o m c rc ia lm c n tc . S in e m b a rg o , e n 1996. J a \ a irru m p ió e n la e s c e n a c o m o u n c o n
te n d ie n te v iable.
L a p ro m o c ió n p u b lic ita ria m a s iv a s o b r e J a v a se d e b o e n g ra n m e d id a a su u so
c o m o le n g u a je e n e l q u e so e s c rib e n a p p lo ts. L o s a p p le ts s o n p ro g ra m a s J a v a e je
c u ta d o s p o r un n a v e g a d o r d o la W o rld W id e W eb . c o m o N e ts c a p e N a v ig a to r. A c
tu a lm e n te . la m a y o ría d e las p á g in a s W e b c o n tie n e n a n im a c io n e s , m u c h a s do las
c u a le s s o n a p p lo ts d e Ja v a . A u n q u e los ap p lo ts so n fa n tá stic o s, o lio s n o so n la ra
zón p o r la q u e n o so tro s u sa m o s Ja v a . D e h e c h o , e n e s te lib ro so la m e n te so e s tu
d ia n lo s a p p le ls e n u n b re v e a p én d ic e.
J a v a p ro p o rc io n a ta m b ié n s o p o rte p a ra la p ro g ra m a c ió n c o n c u rre n te , d o n d e
v a rio s p ro c e s o s s e e je c u ta n e n p a ra le lo c o m u n ic á n d o s e e n tr e s í d e fo rm a p rim iti
va. E sta c a ra c te rís tic a e s im p o rta n te e n p ro g ra m a c ió n m á s a v a n z a d a , p o ro n o so
u sa e n e sto libro.
El p rin c ip a l a tra c tiv o do J a v a os q u e so tra ta d o u n le n g u a je s e g u ro y p o rta b le
q u e so p o rta las c o n s tru c c io n e s do la p ro g ra m a c ió n m o d e rn a o rie n ta d a a o b je to s.
M u c h a s c o n s tru c c io n e s d e C + * q u e c o n fu n d e n a lo s p rin c ip ia n te s n o e x is te n e n
Jav a. C o m p a ra d o c o n C + + . J a v a d e te c ta m u c h o s d e lo s e rr o re s c o m u n e s d e p ro
g ra m a c ió n . y a s e a e n tie m p o do c o m p ila c ió n o d o e je c u c ió n . J a v a tie n e u n m e c a
n is m o d e e x c e p c io n e s q u e o b lig a a l p ro g ra m a d o r a tra ta r d e fo rm a e x p líc ita los
e rro re s \ u n m o d elo re la tiv a m e n te sim p le q u e d is tin g u e e n tro tip o s p rim itiv o s (co m o
i r . t l y tip o s d e fin id o s p o r e l u su ario . J a v a c a re c e d o u n tip o p u n te ro ex p lícito .
J a v a e s p o rta b le : p o r e je m p lo , u n e n te r o tie n e e l m ism o ra n g o d e v a lo re s 011
to d a s las im p le m e n ia c io n c s d e Ja v a , in d e p e n d ie n te m e n te d o la a rq u ite c tu ra s u b y a
c e n te do la c o m p u ta d o ra J a v a p ro p o rc io n a ta m b ié n u n a h e rra m ie n ta d o in te r ta /
g rá fic a d e u su a rio (G U I) q u e p e rm ite q u e la e n tra d a v la s a lid a se llev en a c a b o a
tra v é s d e fo rm u la rio s. A u n q u e n o e s tu d ia m o s e s ta h e rra m ie n ta e n e l te x to p rin c i d is p o n e a u to m á tic a m e n te la s c o s a s p ara q u e c u a lq u ie r le c tu ra del te c la d o s e a redi-
pal ( v é a se A p é n d ic e D ). e s b a sta n te se n c illa d e u tiliz ar. L o m á s im p o rta n te e s que n g id a p a ra o b te n e rla d e f i c h e r o e n t r a d a y c u a lq u ie r e s c ritu ra e n la p a n ta lla sea
ta m b ié n e s p o rta b le a c u a lq u ie r im p le m e n ta c ió n d e Ja v a . L a filo so fía d e J a v a es re d iiig id a so b re í i c h e r o s a l i d a .
« e sc rib e u n a v e z . e je c u ta e n to d a s p a rte s» .
E n lo s p rim e ro s c u a tro c a p ítu lo s , e stu d ia re m o s la s c a ra c te rís tic a s d e J a v a que
se u san a lo la rg o d e l lib ro . P o r e l c o n tra rio , las c a ra c te rís tic a s y a s p e c to s té c n ic o s 1.2 El primer program a
q u e n o s e v a n a u tiliz a r, n o se c u b re n .
Q u ie n e s d e se e n u n a m a y o r in fo rm a c ió n so b re Ja v a , la e n c o n tra rá n e n lo s m ú l C o m e n c e m o s e x a m in a n d o e l s e n c illo p ro g ra m a J a v a d e la F ig u ra 1.1. E ste p ro g ra
tip le s lib ro s d e J a v a d isp o n ib le s. m a im p rim e u n a fra se c o rta e n la p a n ta lla . O b s e rv e q u e lo s n ú m e ro s d e lín e a m o s
C o m e n z a m o s d is c u tie n d o la p a rte d e l le n g u a je se m e ja n te a la d e un len g u a je trad o s a la iz q u ie rd a d e l c ó d ig o n o so n p a r te d e l p ro g r a m a . S e p ro p o rc io n a n s o la
d e p ro g ra m a c ió n d e lo s se te n ta c o m o P a sc a l o C . É sta in c lu y e lo s tip o s p rim itiv o s, m en te p a ra fa c ilita r la s referen cias.
o p e ra c io n e s b á sic a s, c o n s tru c c io n e s c o n d ic io n a le s y d e re p e tic ió n , y e l e q u iv a le n G u ard e e l p ro g ra m a e n e l fic h e ro P r i m e r P r o g r a m a . j a v a y d e s p u é s c o m p í
te e n J a v a d e las fu n cio n es. le lo y e je c ú te lo . E n e l A p é n d ic e A s e d e s c rib e c ó m o h a c e r e s to e n v a ria s p la ta fo r
E n e s te c a p ítu lo , e stu d ia re m o s: m a s c o n o c id a s. N ó te se q u e e l n o m b re d e l fic h e ro fu e n te d e b e c o in c id ir c o n el
n o m b re d e la c la s e (m o stra d o e n la lín e a 4).
• A lg u n o s c o n c e p to s b á sic o s d e Ja v a , in c lu y e n d o lo s e le m e n to s lé x ic o s sim ples.
• L o s tip o s p rim itiv o s d e J a v a , in c lu y e n d o a lg u n a s d e la s o p e ra c io n e s q u e
p u e d e n lle v a rse a c a b o c o n la s v a ria b le s d e tip o p rim itiv o .
• C ó m o s e im p le m e n ta n e n J a v a la s in s tru c c io n e s c o n d ic io n a le s y lo s b u cles. 1.2.1 Comentarios
• E l m é to d o e stá tic o : e l e q u iv a le n te e n J a v a a la fu n c ió n y e l p ro c e d im ie n to .
J a v a a d m ite tre s fo rm a s d e c o m e n ta rio s. L a p rim era , h e re d a d a d e C . c o m ie n z a c o n
e l s ím b o lo / * y te rm in a c o n * / . H e a q u í un e je m p lo :
i d a m e n t e ) r a r o s e n l o s q u e e s p r e f e r i b l e n o u s a r l a e v a l u a c i ó n d e c i c l o c o r t o , k n t a l e s c a s o s . I<ts o p e r a d o r e s í w h ile ( e x p r e s ió n )
p n b o o l o n n . g a ra n tiz a n q u e a m b o s a r g u m e n to s s e e v a lú a n , ¡n c k is o a u n q u e e l m u l t a d o d e l a o p e ra c ió n p u e d a in s tr u c c ió n
p r im e r a r g u m e n t o
s i z n i í o n t p i r<*r n tr - r - i ó n
O b s e rv e q u e a l ig u al q u e e n la in s tru c c ió n i £ . n o hay p u n to y c o m a e n l a sin ta x is. f o r ( i n t i = 1; i <* 1 0 ; i - - )
S i e s tá p resen te, s e in te rp re ta c o m o la in s tru c c ió n v ac ia . f o r t i n t j = 1 ; j <= 1 0 ; j * * )
M ie n tra s q u e e x p r e s i ó n tie n e e l v a lo r t r u e , s e e je c u ta i n s t r u c c i ó n ; i f ( i * j * = i * j >
e n c o n s e c u e n c ia , e x p r e s i ó n e s ta c o n tin u a m e n te re e v a lu á n d o s e . S i e x p re s ió n S y s t e m . o u t . p r i n t l n ( i + *, " + j ) ;
v a le in ic ia lm e n te f a l s e . i n s t r u c c i ó n n o s e e je c u ta r á n u n c a . E n g e n e ra l.
i n s t r u c c i ó n lle v a a c a b o a lg u n a a c c ió n q u e p o te n c ia l m e n te p u e d e a lte ra r e l v a Sin e m b a rg o , c o m o v e re m o s m á s a d e la n te , e u a n d o a n id a m o s b u c le s p o d e m o s
lo r d e e x p r e s i ó n ; en c a s o c o n tra rio , el b u c le p o d ría s e r in fin ito . C u a n d o e l b u cle c re a r fá c ilm e n te p ro g ra m a s c u y o s tie m p o s d e e je c u c ió n c re c e n rá p id am en te.
w h i '. e te rm in a (c o n n o rm a lid a d ), e l c o n tro l p a s a a la sig u ie n te in s tru c c ió n .
1.5.6 La instrucción do
1.5.5 La instrucción f o r
L a in s tru c c ió n w h i l e lle v a a c a b o u n te st re p e tid a m e n te . S i e l te st s e e v a lú a a
L a in s tru c c ió n w h i l e e s s u fic ie n te p a ra e x p re s a r to d o tip o d e re p e tic ió n . A u n a sí. t r u e . e n to n c e s s e e je c u ta e l c u e rp o d e l b u c le . S in e m b a r g o , si e l te s t tie n e in icial
A l e je c u ta r la in s tr u c c ió n for. lo p r im e r o q u e se lle v a a c a b o e s la
i n i c i a l i z a c i ó n . E n to n c e s, m ie n tra s t e s t v a lg a t r u e . se lle v a n a c a b o la s si O b s e rv e q u e la in s tru c c ió n d o in c lu y e un p u n to y c o m a . E n e l sig u ie n te frag m en to
g u ie n te s a c c io n e s: se e je c u ta i n s t r u c c i ó n , y s e p ro d u c e la a c t u a l i z a c i ó n . S i e n p sc u d o c ó d ig o se m u e s tra u n u s o típ ic o d e la in s tru c c ió n d o :
se o m ite n i n i c i a l i z a c i ó n y a c t u a l i z a c i ó n . e n to n c e s la in s tru c c ió n f o r se
c o m p o rta e x a c ta m e n te ig u a l a u n a in s tru c c ió n w h i l e . L a v e n ta ja d e la in s tru c c ió n do
f o r e s la c la rid a d e n e l tr a ta m ie n to d e la s v a ria b le s c o n ta d o r (o ite ra d o ra s). y a que .
f o r ( i n t i = 1 ; i <= 1 0 0 ; i * * )
1.5.9 El operador condicional
{
i £ ( i % 10 == 0 1
c o n t in u é ; El o p e r a d o r c o n d ic io n a l ? : s e u s a c o m o a b re v ia tu ra d e u n a in s tru c c ió n i f - e l s e
S y s te m .o u t.p r in tln ( i ); sim p le . L a fo rm a g e n e ra l es
)
e x p r T e s t ? e x p e S i i exprN o
P o r s u p u e s to , e n e s te e je m p lo h a y o tr a s a lte rn a tiv a s a l u s o d e la in s tru c c ió n
c o n t i n u é . N o o b sta n te , c o n t i n u é se u sa a m e n u d o p ara e v ita r p a tro n e s i f - e l s e
P rim e ro s e e v a lú a e x p r T e s t . s e g u id a p o r e x p r S i o e x p r N o . p ro d u c ie n d o a s í el
c o m p lic a d o s d e n tro d e lo s b u cles.
re s u lta d o d e la e x p re s ió n c o m p le ta . S i e x p r T e s t s e e v a lú a a t r u e e n to n c e s se
e v a lú a e x p r S i ; e n c a s o c o n tra rio , se e v a lú a e x p r N o . L a p re c e d e n c ia d e l o p e ra d o r
1.5.8 La instrucción s w it c h c o n d ic io n a l s e e n c u e n tra ju s to p o r e n c im a d e la d e lo s o p e ra d o re s d e asig n a c ió n .
E s to n o s e \ ita te n e r q u e u s a r p a ré n te sis c u a n d o a s ig n a m o s a u n a v a ria b le e l re s u l
L a in s tru c c ió n s w i t c h s e u sa p a ra e le g ir e n tre v a rio s v a lo re s e n te ro s p e q u eñ o s. ta d o d e un o p e ra d o r c o n d ic io n a l. C o m o e je m p lo , p a ra a s ig n a r e l m ín im o e n tre x e
C o n sis te e n u n a e x p re s ió n y u n b lo q u e . E l b lo q u e c o n tie n e u n a s e c u e n c ia d e in s y a la v a ria b le v a l M i n h a ría m o s lo sig u ien te:
L a s e n t i d a d e s d e c la r a d a s d e n tr o d e l c u e r p o d e u n m é t o d o s o n v a r i a b le s lo c a
1 p u b l i c c l a s s Kir.Test
le s y s o l a m e n t e s e p u e d e a c c e d e r a e l l a s a t r a v é s d e s u n o m b r e , d e n tr o d e l
2 (
3 p u b l i c s c a t i c v o i d m a i r . ( S t r i n g [ J a r g s )> c u e r p o d e l m é to d o . D ic h a s e n t i d a d e s s e c r e a n c u a n d o s e e j e c u t a e l c u e r p o
4 d e l m é t o d o y d e s a p a r e c e n c u a n d o e l c u e r p o d e l m é t o d o te r m in a .
5 i n t a - 3; U n a v a ria b le d e c la ra d a fu e ra d e l c u e rp o d e u n m é to d o e s g lo b al a la cla se . Es
6 i n t b = 7; s im ila r a la s v a ria b le s g lo b a le s e n o tro s le n g u a je s si se u s a la p a la b ra s t a t i c (lo
7
c u a l e s b a sta n te p ro b a b le si se d e s e a p e rm itir e l a c c e s o u l a e n tid a d p o r p a rte d e
6 S y s te m .o u t. p rin t.Ir.( mint a . b > ) ;
9 ) m é to d o s e stá tic o s). S i s e u s a n las p a la b ra s s t a t i c y f i n a l , se tra ta d e c o n sta n te s
10 sim b ó lic a s g lo b a le s. P o r eje m p lo ,
11 / / D e fin ic ió n de función
12 p u b l i c s t a t i c i n t min( i n t x. i n t y )
13 { s t a t i c f i n a l d o u b le PI = 3.1415926535897932;
14 return x < y ? x : y;
15 O b se rv e la c o n v e n c ió n h a b itu a l d e u s a r n o m b re s e n m a y ú s c u la s p a ra lo s n o m
16 )
b re s d e c o n s ta n te s s im b ó lic a s. S i e l n o m b re e s tá fo rm a d o p o r v a ria s p a la b ra s, se
Figura 1.6 D e c la ra c ió n y lla m a d a a e u n m é to d o . se p a ra n m e d ia n te e l c a rá c te r d e su b ra y a d o , c o m o e n MAX_INT_VALUE.
S i se o m ite la p a la b ra s t a t i c . e n to n c e s la v a ria b le (o c o n s ta n te ) tie n e u n s ig
n ific a d o d ife re n te , q u e s e d is c u te e n la S e c c ió n 3 .4 .5 .
L a in s tru c c ió n r e t u r n se u sa p a ra d e v o lv e r u n v a lo r a l p u n to d e lla m a d a . Si
el tip o d e l re s u lta d o e s v o i d . e n to n c e s n o s e d e v u e lv e n in g ú n v a lo r, e sc rib ié n d o se
r e t u r n ; e n ta l c a so .
Resumen
1.6.1 Sobrecarga d e los nombres d e los métodos
E n e s te c a p ítu lo se h a n e s tu d ia d o las c a ra c te rís tic a s b á s ic a s d e Ja v a , ta le s c o m o los
S u p o n g a m o s q u e n e c e s ita m o s e s c r ib ir u n a ru tin a q u e d e v u e lv a e l m á x im o d e tres tip o s p rim itiv o s, lo s o p e ra d o re s, las in s tru c c io n e s c o n d ic io n a le s , lo s b u c le s y los
v a lo re s d e u p o i n t . U n a c a b e c e ra ra z o n a b le p a ra e l m é to d o se ria m é to d o s, la s c u a le s se e n c u e n tra n p rá c tic a m e n te e n c u a lq u ie r len g u aje.
C u a lq u ie r p ro g ra m a n o trix ia l re q u e rirá e l u s o d e tip o s n o p rim itiv o s, lla m a d o s
i n t max ( i n t a , i n t b , i n t c ) tip o s r e fe re n c ia , d e lo s q u e se h a b la e n e l sig u ie n te c a p ítu lo .
Elementos del juego o p e r a d o r e s d e a s ig n a c ió n L n J a v a se u s a n p a ra m o d ific a r e l v a lo r d e u n a v a ria
b le . E sto s o p e ra d o re s in c lu y e n =. * = . - = . * = > /= .
b lo q u e S e c u e n c ia d e in s tru c c io n e s e n tr e llaves.
o p e r a d o r e s d e a u to i n c r e m e n to y a u t o d c c r c m e n t o t - - ) O p e ra d o re s q u e s u
c a b e c e r a d e u n m é to d o C o n sis te e n e l n o m b re , tip o d e l re s u lta d o y lista d e p a rá
m a n y re s ta n 1. re s p e c tiv a m e n te . H a y d o s fo rm a s d e in c re m e n ta r y d e c re m e n -
m etro s.
tar; p re fija y p o stfija,
c ó d ig o - j C ó d ig o in te rm e d io p o rta b le g e n e ra d o p o r e l c o m p ila d o r d e Ja v a ,
o p e r a d o r e s d e ig u a ld a d E n J a v a . == y := se u san p a ra c o m p a r a r d o s v a lo re s; d e
c o m e n ta r io s H a c e n e l c ó d ig o m á s leg ib le p e ro n o tie n e n s ig n ific a d o se m á n tico .
v u elv e n t r u e o f a l s e (se g ú n c o rre sp o n d a ),
J a v a a d m ite tre s fo rm a s d e c o m e n ta rio s,
o p e r a d o r e s ló g ic o s S o n &&. | | y ! . y se u san p a ra sim u la r lo s c o n c e p to s Y . O y
c o n s t a n te d e tip o c a d e n a C o n sta n te c o n s is te n te e n u n a s e c u e n c ia d e c a ra c te re s
N O d e l á lg e b ra d e B oole.
e n c e rra d o s e n tre d o b le s co m illas,
o p e r a d o r e s re la c ió n a le s E n J a v a s o n <, <=. > y >=. y se u s a n p a ra d e c id ir c u á l es
c o n s ta n te s e n t e r a s e n o c ta l y h c x a d e c im a l lu is c o n s ta n te s e n te ra s se p u e d e n re
e l m a y o r o e l m e n o r d e d o s v a lo re s ; d e v u e lv e n t r u e o f a l s e .
p re s e n ta r e n n o ta c ió n d e c im a l, o c ta l o h c x a d e c im a l. lu í n o ta c ió n o c ta l s e in d i
o p e r a d o r e s u n a r i o s R e q u ie re n u n o p e ra n d o . S e d e fin e n d iv e rs o s o p e ra d o re s u n a-
c a a ñ a d ie n d o u n 0 d e la n te d e l n ú m e ro ; la h c x a d e c im a l s e in d ic a a ñ a d ie n d o Ox
rio s. e n tr e lo s q u e s e e n c u e n tra n e l m e n o s u n u n o ( - ) y lo s o p e ra d o re s d e
o OX d e la n te d e l núm ero,
a u to in c re m e n to y a u to d e e re m e n to <-** y
d e c la r a c ió n d e u n m é t o d o C o n s is te e n u n a c a b e c e ra y u n c u e rp o ,
p a s o d e p a r á m e t r o s p o r v a lo r M e c a n ism o d e p a s o d e p a rá m e tro s d e J a v a e n e l
e n ti d a d s t a t i c f i n a l C o n sta n te g lo b al.
q u e lo s a rg u m e n to s re a le s s e c o p ia n e n lo s p a rá m e tro s fo rm ale s,
e n t r a d a e s t á n d a r Se tra ta d e l te c la d o , a m e n o s q u e s e re d irija . T a m b ié n h a y c a n a
s e c u e n c ia d e e s c a p e Se u sa p a ra re p re se n ta r a lg u n a s c o n s ta n te s d e tip o ca rá c te r,
les p a ra la s a lid a e s tá n d a r y e l e r r o r e stá n d ar,
s i g n a t u r a C o m b in a c ió n d e l n o m b re d e l m é to d o y lo s tip o s d e la lista d e p a rá m e
e v a lu a c ió n d e c ic lo c o r t o P ro c e s o p o r e l c u a l, si e l re s u lta d o d e u n o p e ra d o r ló g i
tro s. L l tip o d e l re s u lta d o n o fo rm a p a rte d e la sig n a tu ra ,
c o se p u e d e d e te r m in a r a p a rtir d e l p rim e r o p e ra n d o , e n to n c e s n o se e v a lú a el
s o b r e c a r g a d e l n o m b r e d e u n m é t o d o C o n s is te e n p e r m itir a v a rio s m é to d o s
s e g u n d o o p e ra n d o ,
te n e r e l m is m o n o m b re m ie n tr a s lo s tip o s d e la lista d e p a rá m e tr o s s e a n d i s
id e n t if le a d o r U s a d o p a ra n o m b ra r u n a v a riab le o un m éto d o ,
tin to s.
in s tr u c c i ó n b r e a k In stru c c ió n q u e p ro v o c a la sa lid a d e l b u cle m á s in te rn o o d e la
tip o s e n te r o s b y t e . c h a r . s h o r t . i n t y l o n g .
in s tru c c ió n s w i t c h m á s in tern a ,
tip o s p r im itiv o s L n J a v a s o n lo s e n te ro s, n ú m e ro s e n c o m a flo ta n te , b o o le a n o s y
in s tr u c c ió n b r e a k e t i q u e t a d a In s tru c c ió n b r e a k u sa d a p a ra sa lir d e b u c le s a n i
caracteres.
d ad o s.
U n ic o d e C o n ju n to in te rn a c io n a l d e c a ra c te re s q u e c o n tie n e m á s d e 3 0 .0 0 0 c a r a c
in s tr u c c i ó n c o n t i n u a In s tru c c ió n q u e s a lta a la sig u ie n te ite ra c ió n d e l b u c le m ás
te re s d is tin to s, lo s c u a le s c u b re n lo s p rin c ip a le s le n g u a je s escrito s.
interno.
in s tr u c c i ó n d o C o n s tru c c ió n d e b u c le q u e g a ra n tiz a q u e e l c u e rp o d e l b u c le se
e je c u ta a l m e n o s u n a vez. Errores com unes
i n s t r u c c i ó n f o r C o n s tr u c c ió n d e b u c le u s a d a p rin c ip a lm e n te p a ra la ite ra c ió n
sim p le . 1. A ñ a d ir un p u n to y c o m a in n e c e sa rio p ro d u c e e rr o re s ló g ic o s, p u es e l p u n
in s tr u c c i ó n i f L a c o n s tru c c ió n p rin c ip a l p a ra to m a r d e c isio n e s, to y c o m a re p re se n ta la in s tru c c ió n v a c ía . E s to s ig n ific a q u e u n p u n to y
in s tr u c c ió n r a t u r n In stru c c ió n u s a d a p a ra d e v o lv e r in fo rm a c ió n al p u n to d e lla c o m a a c o n tin u a c ió n d e u n a in s tru c c ió n f o r . w h i l e o i f p u e d e p a sa r
m ada. in a d v e rtid o y e s tro p e a r e l p ro g ra m a .
in s tr u c c ió n s w i t c h In stru c c ió n u s a d a p a ra e le g ir e n tr e v a rio s e n te ro s p e q u e ñ o s, 2. L n tie m p o d e c o m p ila c ió n . J a v a e s c a p a z d e d e te c ta r a lg u n o s c a so s e n los
in s tr u c c ió n v a c ía In s tru c c ió n q u e c o n siste e n u n p u n to y c o m a , q u e u n m é to d o q u e se su p o n e q u e d e v u e lv e u n v a lo r, fa lla a l h a c e rlo . P ero
in s tr u c c i ó n w h i l e L a fo rm a m á s b á sic a d e bucle, e n ú ltim o lu g a r, e s su re s p o n sa b ilid a d e l re c o r d a r d e v o lv e r u n v alo r.
j a v a In té rp re te d e Java, 3. U n o d e la n te d e un n ú m e ro c o n v ie rte u n a c o n s ta n te e n te r a e n o c ta l; lu e g o
j a v a c C o m p ila d o r d e J a v a ; g e n e ra có d ig o -j. 0 3 7 e s e q u iv a le n te al d e c im a l 3 1 .
m a i n F u n c ió n e sp e c ia l q u e s e in v o c a a l e je c u ta rs e e l p ro g ra m a , 4. U sar && y 11 para las o p e ra c io n e s ló g icas: & y | n o e v a lú a n e n c ic lo co rto .
m é to d o Ll e q u iv a le n te e n J a v a a u n a fu n c ió n , 5. I.a c lá u s u la e l s e s e a so c ia a la c lá u s u la i f m á s in te rn a sin e m p a re ja r. Es
m é to d o e s tá tic o M é to d o e q u iv a le n te a u n a lu n c ió n g lo b al, h a b itu a l o lv id a r in c lu ir las lla v e s n e c e sa ria s p a ra a s o c ia r u n e l s e co n un
o p e r a d o r c o n d ic io n a l ( ? : ) O p e ra d o r u s a d o c o m o a b re v ia tu ra d e in stru c c io n e s i f a le ja d o .
i f - e l s e sim p les. 6. C u a n d o s e u s a u n a in s tru c c ió n s w i t c h . e s h a b itu a l o lv id a r la in stru c c ió n
o p e r a d o r d e c o n v e r s ió n d e t i p o O p e ra d o r u s a d o p a ra g e n e ra r u n a v a ria b le te m b r e a k e n tre lo s c a s o s ló g ic o s. C u a n d o e s to s u c e d e , e l c o n tro l p a s a a l s i
p o ra l sin n o m b re d e u n u p o n u e v o , g u ie n te c a s o ; lo q u e . e n g e n e ra l, n o e s e l c o m p o r ta m ie n to d e se a d o .
o p e r a d o r e s a r i t m é t i c o s b in a r io s Se u san p a ra re a liz a r o p e ra c io n e s a ritm é tic a s 7. L a s se c u e n c ia s d e e sc a p e c o m ie n z a n c o n la b arra in c lin a d a h a c ia a tr á s \ .
b á sic a s. J a v a p ro p o rc io n a v a rio s, e n tre e llo s y %. n o c o n la in c lin a d a h a c ia d e la n te .
8. L la v e s s in e m p a re ja r p u e d e n d a r lu g a r a re s p u e s ta s e rró n e a s o e n g a ñ o sa s. 1.13. B u sq u e u n e je m p lo e n e l q u e e l b u c le f o r d e la i/q u ie r d a n o s e a e q u iv a
U s a r c o m p r o b a r E q u i 1 i b r a d o s . d e s c rito e n la S e c c ió n I l . l . p a ra c o m lente a l b u c le w h i l e d e la d e re c h a :
p ro b a r si é s ta e s la c a u s a d e u n m e n s a je d e e rr o r d e l c o m p ila d o r.
9. E l n o m b re d e l fichen» q u e c o n tie n e e l c ó d ig o fu e n te d e l p ro g ra m a e n J a v a m íe;
d e b e s e r ig u a l q u e e l n o m b re d e la c la s e q u e s e e s tá c o m p ila n d o . for( in ic; te s t; actual) w hile< t e s t )
( <
instrucciones instrucciones
En Internet actu al;
) >
In d ic a m o s a c o n tin u a c ió n lo s fic h e ro s d is p o n ib le s c o rre s p o n d ie n te s a e s te c a p ítu
lo. T o d o s e llo s so n a u to c o n te n id o s . y tu» s e rá n p o ste rio rm e n te u tiliz a d o s e n e l te x 1.14. ¿ C u á le s s o n la s p o sib le s s a lid a s d e e s te p ro g ra m a ?
to . L o s p ro g ra m a s s e e n c u e n tra n e n e l d ire c to rio C h a p te r O I .
F ir s t P r o g r a m .j a v a N u e stro p rim e r p ro g ra m a , q u e a p a re c e tr a d u c id o e n la p u b l i c c l a s s OueEsX
F ig u ra l . l . (
M in ’l'e s t.ja v a P a ra ilu s tra r e l u s o d e lo s m é to d o s, q u e a p a re c e tra d u c i p u b l i c s t a t i c v o i d f ( i n t x)
d o e n la F ig u ra 1.6. ( /* c u erp o d esco n ocid o • / }
O p e r a t o r T e s t .j a v a D e m o stra c ió n d e l u s o d e v a rio s o p e ra d o re s. A p a re c e
« tr a d u c id o e n la F ig u ra 1.3. publ i c s t a t i c v o id m aint S t r in g | ] args )
{
in t x ■0;
Ejercicios f ( x ) ;
S y s t e m . o u t . p r i n t l n t x );
Cuestiones breves )
I
1 .1 . ¿ Q u é e x te n s io n e s s e u s a n p a ra lo s fic h e ro s fu e n te y c o m p ila d o s e n J a v a ?
1 .2 . D e sc rib a lo s tr e s tip o s d e c o m e n ta rio s u s a d o s e n Jav a.
1. 3.
1. 4.
¿ C u á le s s o n lo s o c h o tip o s p rim itiv o s e n Ja v a ?
¿ C u á l e s la d ife re n c ia e n tre lo s o p e ra d o re s • y * ?
Problemas prácticos
1. 5. E x p liq u e las d ife re n c ia s e n tr e lo s o p e ra d o re s d e in c re m e n to p re fijo y p o st
1.15. E sc rib a u n a in s tru c c ió n w h i l e q u e sea e q u iv a le n te a l sig u ie n te fra g m e n to
fijo .
f o r . ¿ P a ra q u é p o d ría s e r e s to ú til?
1 .6 . D e sc rib a lo s tre s tip o s d e b u c le e n Jav a.
1. 7. D e sc rib a to d o s lo s u s o s d e u n a in s tru c c ió n b r e u k .
fo r( ; ; )
1.8. ¿ Q u é h a c e l a in s tru c c ió n d o ?
instrucción
1.9. ¿ Q u é e s la s o b re c a rg a d e m é to d o s?
1. 10. D e sc rib a e l p u so d e p a rá m e tro s p o r v alo r.
1. 16. E s c rib a u n p ro g r a m a p a ra g e n e ra r las ta b la s d e s u m a y m u ltip lic a c ió n d e
n ú m e ro s d e un só lo d íg ito ( l a \ ta b la s q u e lo s e s tu d ia n te s d e la e s c u e la e l e
a = b» + * c* * ;
a = b*+ * *+ c;
a - ♦ ♦b • c + * ; Prácticas de program ación
a = -*-+b + * * c :
1.19. E s c rib a u n p ro g r a m a q u e p ro d u z c a to d o s lo s p a re s d e e n te r o s p o s itiv o s .
1.12. ¿ C u á l e s e l r e s u lta d o d e r . r u e f a l s p I I r r u é '' (a . b ). ta le s u u e a < h < 1 0 0 0 v (a 2 + b : * I )/(«/>) s e a e n te ro .
1.20. E sc rib a un m é to d o q u e d a d o u n n ú m e ro e n te ro , m u e s tre su re p re se n ta c ió n C A P Í T U L O
Referencias
e n n ú m e ro s ro m a n o s. E n p a rtic u la r, si e l d a to e s 1 9 9 8 . la sa lid a se ria
1.21.
MCMLXLVI I I .
S u p o n g a m o s q u e q u e re m o s m o stra r n ú m e ro s e n tre c o rc h e te s , c o n el
sig u ie n te fo rm a to : I I ] [ 2 ] ( 3 ] . e tc . E sc rib a u n m é to d o q u e lo m e d o s p a
2
rá m e tro s: c u a n t o s y l o n g L i n e a . E l m é to d o d e b e m o s tra r lo s n ú m ero s
d e lín e a d e sd e I h a s ta c u a n t o s e n e l fo rm a to a n te s m e n c io n a d o , p e ro no
d e b e m o s tra r m á s d e l o n g L i n e a c a ra c te re s e n c a d a lín e a . A d e m á s, n o
d e b e e m p e z a r c o n e l c o rre s p o n d ie n te a u n n u e v o n ú m e ro a m e n o s que
p u e d a e s c r ib ir e n la m ism a lín e a e l c o rre sp o n d ie n te .
1. 22. E n e l s ig u ie n te p u z z le a ritm é tic o , s e a s ig n a u n d íg ito a c a d a u n a d e la s d i
fe re n te s le tras. E sc rib a u n p ro g ra m a q u e e n c u e n tre to d a s la s so lu c io n e s p o
sib les. a c o n tin u a c ió n m o s tra m o s u n a d e e llas.
E
n e l C a p ítu lo I h e m o s e s tu d ia d o lo s tip o s p rim itiv o s d e Ja v a . T o d o s lo s ti
p o s q u e n o sean n in g u n o d e lo s o c h o tip o s p rim itiv o s d e J a v a s o n tip o s r e f e
WEISS 25800
•
» re n c ia . in c lu y é n d o se e n e s to s ú ltim o s e n tid a d e s ta n im p o rta n te s c o m o las
c a d e n a s d e c a ra c te re s , lo s v e c to re s y lo s c a n a le s d e E S.
E n e s te c a p ítu lo v erem o s:
Bibliografía
• Q u é e s u n tip o re fe re n c ia y q u é e s u n v alo r.
U n a p a rte d e l m a te ria l e n e l e s tilo d e C u s a d o e n e s te c a p ítu lo s e h a to m a d o d e 15). • E n q u é se d is tin g u e n lo s tip o s re fe re n c ia d e lo s tip o s p rim itiv o s.
L a e s p e c ific a c ió n c o m p le ta d e l le n g u a je J a v a se p u e d e e n c o n tra r e n |4 ) . E n |3 | se • E je m p lo s d e tip o s re fe re n c ia , in c lu y e n d o las c a d e n a s d e c a ra c te re s , lo s v e c
lista n a lg u n o s p a q u e te s d e lib re ría s y s e p ro p o rc io n a n e je m p lo s c o m p le to s . A lg u to re s y lo s c a n a le s d e E S.
n o s lib ro s in tro d u c to rio s d e J a v a so n 111 y | 2 | : . • C ó m o s e e m p le a n las e x c e p c io n e s p a ra d e te c ta r c o m p o rta m ie n to s e rró n e o s.
B utton b; // b p u e d e r e f e r e n c i a r a un o b j e t o de t i p o B u tto n
b = new 3 u t t o n ( ) ; / / Ahora b r e f e r e n c i a a un o b je to cread o
2.2.1 El operador punto ( . )
b . s e t L a b e 1 1" N o " ) ; / / L a e t í q u e t a d o i b o t ó n b e s “ No*
p .ad d (b ); / / b se añade a l panel p
El o p e ra d o r p u n to ( . ) se e m p le a p a ra s e le c c io n a r un m é to d o y a p lic a rlo a u n o b je
to . P o r e je m p lo , s u p o n g a m o s q u e s e tie n e u n o b je to d e tip o C i r c u l o , e n e l q u e se
O b sé rv e se q u e s e n e c e sita n lo s p a ré n te sis tra s e l tip o d e l o b je to .
d e fin e e l m é to d o a r e a . S i e l C i r c u l o re fe re n c ia a u n C i r c u l o , e n to n c e s p o d e
T a m b ié n e s p o s ib le c o m b in a r la d e c la ra c ió n y la c o n s tru c c ió n d e un o b je to ,
m o s c a lc u la r e l á re a d e l C i r c u l o re fe re n c ia d o (y g u a rd a rla e n u n a v a ria b le d e ti
c o m o en
p o d o u b l e ) h a c ie n d o l o sig u ie n te :
2.2.6 El significado de ==
B u tto n noBoton = new B u tto n t 'No* ) ;
Butt o n s i B o t o n = noBoton;
s i B o t o n . s e t L a b e l ( * S i ’ ); En lo s tip o s p rim itiv o s. = ; e s v e rd a d e ro c u a n d o lo s v a lo re s a lm a c e n a d o s so n id é n
tico s. E n lo s tip o s re fe re n c ia su s ig n ific a d o e s d ife re n te , a u n q u e to ta lm e n te c o n s is
p.addt n o B o t o n ) ;
p .a d d ( s i B o t o n ) ; ten te c o n la d is c u sió n p rev ia.
D o s v a ria b le s re fe re n c ia s o n ig u a le s v ía == si a m b a s a p u n ta n a l m ism o o b jeto
lo b ie n so n las d o s n u l l ). C o n s id e re m o s , p o r e je m p lo , la s ig u ie n te s e c u e n c ia d e
lis to n o fu n c io n a y a q u e s ó lo h a s id o c re a d o un o b je to d e tip o B u t t o n . I) c este
asig n a c io n e s:
m o d o , la se g u n d a in s tru c c ió n s im p le m e n te in d ic a q u e s i B o t o n e s o tr o n o m b re
p a ia e l b o ló n c re a d o e n la p rim e ra línea. D ic h o b o ló n tie n e a h o ra d o s n o m b re s.
F.n la te rc e ra lín ea, e l o b je to d e tip o B u t t o n c o n s tru id o h a c a m b ia d o su etiq u e ta B u tto n a = new B u tto n ( " S i‘ );
p o r S i . p e ro e s to sig n ific a q u e e l ú n ic o o b je to B u t t o n , id e n tific a d o p o r d o s n o m B u t t o n b = n e w B u t t o n t “S i * ) ;
b re s. se e tiq u e ta a h o ra c o n s i . L a s d o s ú ltim a s lín e a s a ñ a d e n a l P a n o l p e l o b je to B u t t o n c = b;
' B u t t o n d o s v e c e s.
E l h e c h o d e q u e s i B o t o n n u n c a c o n s u lte su p ro p io o b je to c a re c e d e im p o rta n A q u í s e h a n g e n e ra d o d o s o b je to s. E l p rim e ro e s a c c e s ib le m e d ia n te e l n o m b re a .
c ia e n e s te e je m p lo . E l p ro b le m a e s la a s ig n a c ió n . C o n sid e re m ie n tras q u e e l se g u n d o s e a c c e d e c o n c u a lq u ie ra d e lo s d o s n o m b re s, b y c . En
c o n se c u e n c ia b = = c e s t r u e . S in e m b a rg o , a u n q u e a y b e s té n re fe rc n c ia n d o o b je
B u t t o n n o B o t o n = n e w B u t t o n t "No* ) ; to s q u e p a re c e n te n e r e l m is m o v alo r. a - = b e s f a l s e . ya que a p u n ta n a o b je to s
B u t to n s i B o t o n = new B u t t o n t ) ; d istin to s. P a ra ! = se a p lic a n re g la s sim ila re s.
siB o to n = noBoton; E n a lg u n a s o c a s io n e s e s im p o rta n te c o n o c e r si lo s o b je to s re fe re n c ia d o s son
s i B o t o n . s e t L a b e l ( *Si* ); id é n tic o s. T o d o s lo s o b je to s p u e d e n c o m p a ra rs e m e d ia n te e q u a l s . p e r o p a ra m u
p .a d d t noBoton ) ; c h o s (in c lu y e n d o lo s d e u p o B u t t o n ) e q u a l s d e v u e lv e f a l s e a m e n o s q u e a m
p .ad d t siB oton ) ; b as re fe re n c ia s e s té n a p u n ta n d o a l m is m o o b je to ( e n o tr a s p a la b ra s, p a ra alg u n o s
o b je to s e q u a l s n o e s o tra c o s a q u e e l te s t ==>. E n la S e c c ió n 2.3. d o n d e se e s tu d ia
L a s c o n s e c u e n c ia s s o n e x a c ta m e n te la s m ism a s. A h o ra s í h a n sid o g e n e ra d o s d o s el tip o s t r i n g . v e re m o s u n e je m p lo e n e l q u e o q u a l s re s u lta m u y útil.
o b je to s B u t t o n . per.* a l fin a l d e la s e c u e n c ia e l p rim e r o b je to e s tá re fe rc n c ia d o
p o r n o B o t o n y s i B o t o n . m ie n tra s q u e e l se g u n d o o b je to e s tá sin rc fc rc n c ia r.
A p rim e ra v is ta , e l h e c h o d e q u e lo s o b je to s n o p u e d a n c o p ia r s e p a re c e una 2.2.7 Sobrecarga d e operadores para objetos
lim ita c ió n im p o rta n te . E n re a lid a d n o l o e s , a u n q u e c u e s ta u n p o c o a c o stu m b ra rse .
(P a ra s e r e x a c to s a lg u n o s o b je to s s í n e c e sita n s e r c o p ia d o s . P a ra e llo s , si e s tá d is
S a lv o p a ra la e x c e p c ió n d e s c rita e n la s e c c ió n sig u ie n te , lo s o p e ra d o re s n o p u ed en
p o n ib le u n m é to d o c l o n o , d e b e u sa rse , c l o n e in v o c a a n e w p a ra o b te n e r u n a r é
d e fin irse p a ra se r a p lic a d o s so b re o b je to s. A sí. n o e x is te n in g ú n o p e ra d o r < d is p o
p lica d e l o b je to . S in e m b a rg o , c l o n e no s e u ti li /a e n e s te lib ro .)
n ib le so b re n in g ú n tip o d e o b je to s. E n su lu g ar, d e b e ría m o s d e fin ir p a ra re a liz a r
e s ta fu n c ió n un m é to d o c o n id c n tific a d o r. c o m o p o r e je m p lo . m e r . o r Q u e .
T a m b ié n e l o p e ra d o r •= e s tá d e fin id o s o b re e l u p o S t r m g . E l e f e c to de
S y s t e m . o u t . p r i n t l n l I n t e g e r . t o S t r i n g t 5 5 . 2 ) >;
s t r * = e x p e s e l m ism o q u e e l d e s t r = s t r * e x p . M a s c o n c re ta m e n te , e s to sig n ifi
c a q u e s t r r e f c r c n c i a r á al m ism o o b je to d e u p o s t r i n g g e n e ra d o p o r s t r * e x p . im p rim e la re p re se n ta c ió n b in a ria d e 55.
E l v alo r d e tip o i n t re p re s e n ta d o p o r u n S t r i n g p u e d e o b te n e rse lla m a n d o al L o s c o rc h e te s p u e d e n c o lo c a rs e a n te s o d e s p u é s d e l n o m b re d e l v e c to r. S itu á n d o
m é to d o i n t e g e r . p a r s e i n t . E ste m é to d o g e n e ra u n a e x c e p c ió n si e l S t r i n g no lo s a n te s e s m á s s e n c illo v e r q u e e l n o m b re c o rr e s p o n d e a u n o b je to d e tip o v ecto r,
re p re s e n ta un v a lo r d e tip o i n t . L a s e x c e p c io n e s s e e s tu d ia n e n la S e c c ió n 2.5. p o r l o q u e é s te e s e l e s tilo q u e e m p le a re m o s e n e s te te x to . L a d e c la ra c ió n d e un
P a ra o b te n e r un v a lo r d o u b l e a p a rtir d e u n s t r i n g e s n e c e s a r io m á s trab a jo . v e c to r d e o b je to s (en lu g a r d e tip o s p rim itiv o s ) re q u ie re la m is m a sin ta x is. O b s é r
A q u í se m u e s tra n a lg u n o s e je m p lo s: v e se . sin e m b a rg o , q u e c u a n d o s e g u a rd a u n v e c to r d e o b je to s , c a d a o b je to a lm a
c e n a in ic ia lm e n te u n a re fe re n c ia n u l i . A d e m á s c a d a una d e e lla s d e b e re d e fin irse
in t x = In te g e r .p a r s e ln t ( "75“ ); p a ra q u e p a s e a re fe re n c ia r a u n o b je to c re a d o . P o r e je m p lo , u n v e c to r d e c in c o
d o u b l e y = D o u b le .v a lu e O f ( ' 3 . 1 4 ' ) . d o u b l e v a l ú e ( I: b o to n e s se c o n s tru y e c o m o sig u e
i n t [ J v e c t o r 1;
liz q = lder
a ú n n o s e h a a s ig n a d o m e m o ria p a ra g u a rd a r e l v e c to r, v e c t o r 1 e s sim p le m e n te e s q u e e l o b je to v e c to r re fe re n e ia d o p o r l d e r e s tá a h o ra ta m b ié n re fe re n e ia d o p o r
u n a re fe re n c ia d e u n v e c to r, p o r lo q u e e n e s te m o m e n to e s n u i l . P a ra g e n e ra r l i z q . C o m o c o n s e c u e n c ia , e l c a m b io d e l i z q | 0 ] ta m b ié n m o d ific a l d e r ( 0 1 .
1(X) v a lo re s d e tip o i n t . p o r e je m p lo , a p lic a ría m o s la in s tru c c ió n n e w c o m o sig u e (P a ra h a c e r q u e l i z q s e a u n a c o p ia in d e p e n d ie n te d e l d e r se d e b e ría e m p le a r el
m é to d o c L o n e . )
v e c t o r l = new i n t ( 100 J ;
P o r ú ltim o , un v e c to r p u e d e e m p le a rs e c o m o p a rá m e tro d e u n m é to d o . E l c o m
p o rta m ie n to q u e se p ro d u c e se c o rre s p o n d e c o n e l h e c h o d e q u e u n n o m b re d e
A h o ra v e c t o r 1 re fe re n c ia un v e c to r d e KMI i n t s .
v e c to r e s u n a re fe re n c ia . C o n s id e ra m o s un m é to d o m e t o d o L l a m a c a q u e tie n e un
E x iste n o tra s fo rm as d e d e c la ra r v e c to re s. P o r e je m p lo , e n a lg u n o s c o n te x to s
v e c to r d e i n : c o m o p a rá m e tro . L a s v is ta s d e l in v o c a d o r in v o c a d o so n
i n t l | v e c t o r 2 = n e w i n t [ 10 0 | ;
m etodoL lam ada< v e c to r A c tu a l ); / / 1 1a m a d a a l m é t o d o
es a c e p ta b le . T a m b ié n p u e d e e m p le a rs e lis ta s d e in ic ia liz a c ió n . c o m o e n C o C + + . m etodoL lam ada{ i n t | ] vectorForm al ) / / d e c l a r a c i ó n d e l m étodo
p a ra e s p e c ific a r v a lo re s in ic ia les. E n e l s ig u ie n te e je m p lo , u n v e c to r d e c u a tro
i n t s e s a lm a c e n a d o y re fe re n e ia d o p o r v e c t o r 3. D e a c u e rd o c o n lo s c o n v e n io s so b re e l p a s o d e p a rá m e tro s p a ra lo s tip o s re fe re n c ia
d e Ja v a . v e c t o r F o r m a l re fe re n c ia al m ism o o b je to v e c to r q u e v e c t o r A c t u a l .
int ( ) v e c to r3 = { 3 , 4 , 1 0 , 6); C o m o c o n s e c u e n c ia . v e c t o r F o r m a l ( i | a c c e d e a v e c t o r A c t . u a ! I i 1.
1 import Soporte.Random; El m éto d o d e a lm a c e n a r v e c to re s e n m e m o ria q u e h e m o s v is to an terio rm en te e s
2
3 public c la s s L otería i n t l 1 a = n e w i n t I 1 0 1;
4 {
6 / / Genera lo s núraeros d e l a l o t e r í a (1-49) S u p o n g a q u e d e s p u é s d e las d e c la ra c io n e s , o b s e r v a m o s q u e n e c e s ita re m o s 12
6 / / Imprime l a c a n t i d a d d e o c u r r e n c i a s d e c a d a número
7 v a lo re s d e tip o i n t e n lu g ar d e 10. E n ta l c a s o p o d e m o s e m p le a r la sig u ie n te e s
8 public s t a ti c final i n t NUMEK0S_D1F = 49; trateg ia:
9 public S ta tic final i n t NUMEROS_JUEGO = 6;
10 public s ta tic final i n t JUEGOS int | ] orig in al = a; / / 1. Se g u a r d a u n a r e f e r e n c i a a a
11 a = new i n t l 12 ] ; / / 2 . Se c r e a una r e f e r e n c i a con más memoria
12 public static v o i d main( String [ ] args )
fo r ( i n t i = 0; i < 10; i * * ) / / 3 . S c copian lo s d a to s an tig u o s
13
14 / / G e n e r a c ió n d e números a [ i | = o rig in al [ i J;
15 i n t ( 1 n ú m e r o s * n e w i n t | NUMEROS.DIF * 1 ) ;
16 ío r ( i n t i = 0; i < números. l e n g t h ; i** ) E x a m in a n d o d e te n id a m e n te e l c ó d ig o a n te rio r lle g a m o s a la c o n c lu s ió n d e q u e
17 numerosf i 1 = 0; é sta e s u n a o p e ra c ió n c o s to s a . E s to e s d e b id o a q u e s e c o p ia n to d o s lo s e le m e n to s
18 d e o r i g i n a l e n a . S i. p o r e je m p lo , e s ta e x p a n sió n se p ro d u c e c o m o re s p u e sta a
19 Ra ndom r = n e w Ra n d omI );
u n a e n tra d a d e d a to s , se ría in e fic ie n te a u m e n ta r e l v e c to r c a d a v e z q u e s e lean
20
21 f o r ( i n t i = 0 ; i < JUEGOS; i * * I u n o s p o c o s d a to s . P o r e s ta ra z ó n , c u a n d o s e im p le m e n ta la e x p a n sió n d e v e c to res,
22 f o r ( i n t . j = 0 ; j < NUMEROS.JUEGO; j “ I lo h a c e m o s d e m o d o q u e e l ta m a ñ o a u m e n te s e g ú n u n a c o n sta n te m u ltip lic a tiv a .
'2 3 n ú m e r o s l r . r a n d o m l n t l 1, NUMEROS_D*F ) )♦*; P o r e je m p lo , e n c a d a p a s o p o d e m o s e x p a n d irlo d u p lic a n d o su lo n g itu d . D e esta
24
fo rm a , c u a n d o a la rg a m o s u n v e c to r d e V e le m e n to s a 2 N e le m e n to s , e l c o s te d e N
25 / / Salida de resultados
26 c o p ia s p u e d e d is trib u irs e so b re lo s sig u ie n te s /V e le m e n to s , q u e p u e d e n s e r in s e rta
f o r < i n t k = 1 ; k <= NUMEROS.DIF; k * - )
27 S y s t e m . o u t . p r i n t l n l k * *: H • n ú m e r o s ! k 1 I; d o s e n e l v e c to r sin n e c e sid a d d e ex p a n d irlo .
28 P ara m a y o r d e ta lle , la F ig u ra 2 .4 m u e s tra un p ro g ra m a q u e le e u n a c a n tid a d
29 ilim ita d a d e e n te ro s d e la e n tra d a e s tá n d a r y a lm a c e n a e l re s u lta d o d e l a le c tu ra e n
un v e c to r q u e s e e x p a n d e d in á m ic a m e n te . L a ru tin a r e a j u s t a r re a liz a la e x p a n
Figuro 2 . 3 U no simple m uestra d e vectores.
sión d e l v e c to r ( o su c o n tra c c ió n ), d e v o lv ie n d o u n a re fe re n c ia al n u e v o v e c to r. IX
fo rm a a n á lo g a , e l m é to d o l e e r E n t e r o s d e v u e lv e u n a re fe re n c ia a l v e c to r d o n d e
se a lm a c e n a n lo s d a to s .
E s to sig n ific a q u e las v a ria b le s re p re se n ta d a s p o r e l v e c to r in d e x a d o so n m o d ific a-
A l p rin c ip io d e l e e r E n t e r o s . e i e m L e i d o s s e im c ia liz a a 0 y s e c o m ie n z a la
b les. É ste s e rá s ie m p re e l c a s o . N ó te se ta m b ié n q u e u n a in s tru c c ió n c o m o
le c tu ra c o n u n v e c to r d e c in c o e le m e n to s . L a le c tu ra re ite ra d a d e lo s d a to s s e r e a li
z a e n la s lín e a s 2 8 y 3 0 . S i e l v e c to r e s tá lle n o , h e c h o q u e s e c o m p ru e b a e n la lín e a
v e c t o r F o r m a l = n e w i n t [ 2 0 1;
3 1 . e l v e c to r se e x p a n d e lla m a n d o a r e a j u s t a r . E n las lín e a s 4 4 a 5 0 e l v e c to r se
a g ra n d a a p lic a n d o la e s tra te g ia c o m e n ta d a . E n la lín e a 3 3 , e l d a to q u e a c a b a d e se r
n o tie n e n in g ú n e fe c to s o b re v e c t o r A c t u a l . F in a lm e n te , c o m o lo s n o m b re s de le íd o s e in s e rta e n e l v e c to r y e l c o n ta d o r d e «latos in tro d u c id o s s e in c re m e n ta . Si
lo s v e c to re s n o so n o tr a c o s a q u e re fe re n c ia s , p u e d e n d e v o lv e rs e c o m o resu ltad o s. se p ro d u c e u n e rr o r e n la le c tu ra , s e d e tie n e la e je c u c ió n d e l p ro g ra m a . P o r ú ltim o ,
e n la lín e a 3 8 se re d u c e e l ta m a ñ o d e l v e c to r p a ra a ju s ta rlo al n ú m e r o d e d a to s
leíd o s.
2.4.2 Expansión dinám ica de vectores
i n t I | v e c t o r = i e e r E n t e r o s l I;
f o r ( i n t i = 0; i < v e c t o r . l e n g t h ; i * * ) 2.4.4 Argumentos d e la línea d e com andos
System .out .p r i n t ln( v e cto r! 1 1 1 ;
L o s a rg u m e n to s d e la lín e a d e c o m a n d o s a p a re c e n c u a n d o e x a m in a m o s e l p a rá m e
tro d e m a i n . E l v e c to r d e c a d e n a s d e c a ra c te re s re p re se n ta lo s a rg u m e n to s a d ic io
/ / Lee una c a n t i d a d i l i m i t a d a c e i n t s s i n recuperación n a le s d e la lín e a d e c o m a n d o s . P o r e je m p lo , c u a n d o s e e je c u ta e l p ro g ra m a
/ / d e e r r o r e s ; d evuelve un in t | ]
public s t a ti c in t ( ] leerE n tero s( >
ja v a Eco e s t e a q u e l
11
12 public static v o i d main! String | ) args I
E x c e p c io n e s C h e c k e d Sigm ficodo 13
14 for( int i = 0; i < a r g s .length; i + -* )
ja v a .io .E O F E x c ep t i o n Final d e fich ero antes d e lo esperodo 15 (
16 try
jav a . i o .F i l e N o t F o u n d E x c e p t ion Fichero inexistente. 17 { procesaFichero! arg sl i ] ; }
18 c a tc h ! lOException e >
j a v a . i o . IO E x cep t ion Inclu ye m uchas e x ce p cio n es d e E/S. 19 ( S y s t e m . o u t . p r i n t l n ! e >: )
20 )
In terru p ted E x cep tio n Lan z ad a p o r e l m étodo 21
T h read .sieep 22 ¡
i-------------------------------------------------------------------
Figura 2.9 M uestra d e la cláu su la th ro w s .
Figuro 2.8 Ex cep cion es standard checked m ás com unes.
d e b e a p a re c e r e n c u a lq u ie r p ro g r a m a q u e e m p le e las ru tin a s d e F. S d e un m o d o no
2.5.4 Las cláusulas t h r o w y th r o w s triv ia l. L a lib re ría d e J a v a e s b a sta n te c o m p le ja y tie n e m u ltitu d d e o p c io n e s . E x a
m in a re m o s só lo la s m á s b á sic a s, c o n c e n trá n d o n o s p o r c o m p le to e n la F. S c o n fo r
E l p ro g ra m a d o r p u e d e la n /a r u n a e x c e p c ió n e m p le a n d o la c lá u s u la t h r o w . P o r m ato .
e je m p lo , p o d e m o s la n /a r u n a e x c e p c ió n d e tip o E x c e p t i o n m e d ian te
lo s o p e ra d o re s d e c o n c a te n a c ió n * y * . P o r lo d e m á s , u n s t r i n g se c o m p o rta n e w E m p le a d o p a ra c re a r u n n u e v o o b je to .
c o m o c u a lq u ie r o tr a re fe re n c ia : a s í. se n e c e s ita e q u a l s p a ra c o m p ro b a r si lo s e s n u i l V a lo r d e u n a v a ria b le re fe re n c ia q u e n o a p u n ta a n in g ú n o b je to .
ta d o s d e d o s s t r i n g s s o n id é n tic o s. U n v e c to r e s u n a c o le c c ió n d e e le m e n to s del N u l l P o i n t e r E x c e p t i o n (¡ e n e ra d a c u a n d o s e in te n ta a c c e d e r a u n a re fe re n c ia
m ism o tip o . L l v e c to r s e in d e x a p a rtie n d o d e 0 y se g a r a n i i/ a e l c h e q u e o d e l ra n nuil.
go. L os v e c to re s se p u e d e n e x p a n d ir d in á m ic a m e n te , u s a n d o m-w p a ra a sig n a r o b je t o E n tid a d n o p rim itiv a .
m a y o r c a n tid a d d e m e m o ria y c o p ia n d o d e sp u é s lo s e le m e n to s u n o a uno. o p e r a d o r d e in d c x a c ió n d e v e c to r e s [ J P e rm ite e l a c c e s o a c a d a e le m e n to d e un
L a s e x c e p c io n e s se e m p ic a n p a ra d e te c ta r e v e n to s e x c e p c io n a le s. U n a e x c e p v ecto r.
ció n s e la n z a m e d ia n te la c lá u s u la t h r o w . y se p ro p a g a h a s ta q u e e s re c o g id a p o r o p e r a d o r p u n t o ( .» P e rm ite e l a c c e s o a c a d a c o m p o n e n te d e u n a e stru c tu ra ,
a lg ú n bl«K|ue c a t c h a s o c ia d o a u n b lo q u e t r y . E x c e p to p a ra la s e x c e p c io n e s en p a s o p o r r e f e r e n c ia E n m u c h o s le n g u a je s d e p ro g ra m a c ió n s ig n ific a q u e e l p a rá
tie m p o d e e je c u c ió n i r a n - t im e e x c e p tio n * ) y lo s E r r o r e s , c a d a m é to d o d e b e in d i m e tro fo rm a l e s u n a re fe re n c ia a l p a rá m e tro a c tu a l. É ste e s e l e fe c to p ro d u c id o
c a r las e x c e p c io n e s q u e p u e d e p ro p a g a r e m p le a n d o la c lá u s u la t h r o w s . e n J a v a c u a n d o e l p a s o p o r v a lo r se u tiliz a so b re un tip o re fe re n c ia
L l S t r i n g T o k e r . i z e r s e e m p le a p a ra p a rtir u n S t r i n g . o b te n ie n d o n u e re c o g id a d e b a s u r a R e c u p e ra c ió n a u to m á tic a d e la m e m o ria q u e y a n o e s re le í e n
v o s s t r i n q s. N o rm a lm e n te s e e m p le a j u n i o a o tr a s ru tin a s d e p ro c e s a m ie n to de ria d a .
la e n tr a d a . L a e n tr a d a s e m a n ip u la a tr a v é s d e lo s o b je to s B u f f e r e d R e a d e r . s t r i n g O b je to e sp e c ia l e m p le a d o p a ra a lm a c e n a r u n a s e c u e n c ia d e c a racteres.
InputStream R eador y F ileR eader. S t r i n g T o k « n i z « r E m p le a d o p a ra o b te n e r S t r i n g s d e lim ita d o s a p a rtir d e una
1:1 siiMiienle. c a p ítu lo m u e s tra c o m o d is e ñ a r n u e v o s lin o s d e fin ie n d o u n a r ió s e so la c a d e n a d e c a ra c te re s.
S y s t e m . i n . S y s t e m . o u t } S y s t e m . e r r C u ñ a le s d e H S p re d e fin id o s. Ejercicios
t h r o w E m p le a d o p a ra la n z a r u n a e x c e p c ió n .
t h r o w s In d ic a q u e u n m é to d o p u e d e p ro p a g a r u n a e x c e p c ió n . Cuestiones breves
tip o r e f e r e n c ia C u a lq u ie r tip o ni* p rim itiv o .
t o s t r i n g C o n v ie rte u n tip o p rim itiv o , o un o b je to , e n u n s t r i r . g . 2.1. E n u m ere las p rin c ip a le s d ife re n c ia s e n tre iipt>s re fe re n c ia y ti|H*s prim itivos.
v e c to r A lm a c e n a u n a c o le c c ió n d e e le m e n to s d e l m is m o tip o 2.2. E n u m e re c in c o o p e ra c io n e s q u e p u ed en se r ap lic a d a s a los tip o s referen cia.
v e c to r m u ltid im c n s io n u l V e c to r c u y a m a n ip u la c ió n req u ie re v a rio s índices. 2 .3 . D e sc rib a c ó m o fu n c io n a n las e x c e p c io n e s e n Java.
2.4. E n u m e re las p rin c ip a le s o p e ra c io n e s q u e p u e d e n re a liz a rse c o n c a d e n a s d e
c a rac teres.
Errores com unes
1. P a ra tip o s re fe re n c ia y v e c to re s. - n o h a c e u n a c o p ia d e lo s o b je to s s in o de
Problemas teóricos
las re fe re n c ia s. 2. 5. S i x c y tie n e n lo s v a lo re s 5 y 7. re s p e c tiv a m e n te , d e te rm in e la s a lid a d e la
2. P ara tipos referen cia y c a d e n a s d e caracteres, p ara c o m p ro b a r sí d o s o b jeto s se c u e n c ia sig u ien te:
tien en e x actam en te e l m ism o e sta d o debe em p lea rse e q u a l s e n lugar d e ==.
3. I .os e rro re s p o r s a lid a «le r a n g o s o n h a b itu a le s e n to d o s lo s le n g u a je s de S y stem .o u t.p rin tln ( x + * * + y ) ;
p ro g ra m a c ió n . S y stem .o u t.p rin tln ( x + “ * + y ) ;
4. L o s tip«*s re f e re n c ia se in i c ia l i/ a n a n u i l p o r d e f e c to ; e s d e c ir, n o se
c o n stru y e n in g ú n o b je to n u e v o sin h a b e r lla m a d o p re v ia m e n te a n e w . l 'n a
« v a ria b le re fe re n c ia sin in ic ia li/a r» o la N u l I P c - n t e : F x c e p t i o n in d ic a Problemas prácticos
q u e e l programad«>r h a o l\¿ d a d o c re a r u n o b jeto .
5. E n J a v a l«>s v e c to re s s e in d e x a n d e s d e 0 h a s ta N - 1. d o n d e N e s e l ta m a ñ o 2 .6 . U n te s tsu m e s el e n te r o 3 2 -b it c a lc u la d o su m a n d o u n io s l«>s c a ra c te re s U n i
del vect«>r. El a c c e s o a c o m p o n e n te s lu c r a d e e s c ra n g o s e d e te c ta d e h u c o d e d e un fic h e ro (se p e rm ite D e s b o r d a m i e n t o l n í e r i o r sile n c io so ,
m a a u to m á tic a e n tiemp«> «le e je c u c ió n . a u n q u e é s te e s im p ro b a b le c u a n d o i«hI«*s l«>s c a ra c te re s s o n ASCII). D o s fi
6. L o s v e c to re s b id im e n s io n a le s se in d e x a n c o m o A l i J í j ] y no com o c h e ro s ig u a le s tie n e n e l m ism o te s tsu m . E sc rib a un p ro g ra m a q u e c a lc u le
A li.j). e l te stsu m «le u n fic h e ro c u y o m im b re se in tro d u c irá e n la lín e a «le c o m a n
7. L a s e x c e p c io n e s s ta n d a rd c h e c k e d d eb en s e r re c o g id a s, o d e c la ra d a s e n la dos.
c lá u su la t h r o w r . «leí mét«xl«> corresp«>ndicntc p a ra p e rm itir su p ro p a g a c ió n 2. 7. M o d ifiq u e e l p ro g ra m a d e ia F ig u ra 2.11 «le m o d o q u e n o se in tro d u z c a
8. D e b e e m p le a rs e " - e n lu g a r d e • ■. p a ra m o s tra r u n e s p a c io e n b lan co . n in g ú n p a rá m e tro p«>r la lín e a d e c o m a n d o s , sin o q u e se u tilic e la e n tra d a
están dar.
2 .8 . E sc rib a un m é u x lo q u e d e v u e lv a t r u e si S t r i n g s t r l e s u n p r e f ijo de
En Internet S t r i n g s t r 2 . N o d e b e e m p le a r n in g u n a ru tin a «le b ú s q u e d a d e c a d e n a s «le
c a ra c te re s , e x c e p to c h a r A t .
A c o n tin u a c ió n m o s tra m o s lo s fic h e ro s d is p o n ib le s p a ra e s te c a p ítu lo . T o d o s e llo s
s o n a u to c o n te n id o s y n o v u e lv e n a u tiliz a rse e n e l re s to del te x to . Se e n c u e n tra n
e n e l d ire c to rio C h a p te r 0 2 .
Prácticos de program ación
2. 9. E sc rib a u n p ro g ra m a q u e m u e s tre la c a n tid a d d e c a ra c te re s , p a la b ra s y lí
D iv id e B y tw o .ja v a C ó d ig o c o rr e s p o n d ie n te a la F ig u r a 2 .6 . E s la v e rs ió n
ne as d e lo s fic h ero s q u e s e in d iq u e n e n la lín e a d e c o m a n d o s .
in g le sa d e la c la s e D i v i d e P o r D o s .
2 .1 0 . Im p le m e n te u n p ro g ra m a d e c o p ia d e fic h e ro s. In clu y a un test q u e se a s e
E c h o ,j a v a CYnligo c o rr e s p o n d ie n te a la F ig u r a 2 .5 . E s la v e rs ió n
g u re d e q u e e l fic h e ro d e o rig e n y e l d e d e s tin o so n d ife re n te s . N e c e sita rá
in g le sa d e la c la s e E co .
le e r a lg u n a re fe re n c ia s«>bre J a v a p a ra a p re n d e r a p ro g ra m a r la s a lid a de
L is t F iles, j a v a C ó d ig o c«> rrcspondicntc a la F ig u ra 2 .1 1. E s la v e rs ió n
d a to s e n fich ero .
in g le sa d e la c la s e C o n t e n i d o F i c h e r o s .
l a i t t e r y .j a v a CYxligo c« > rresp o n d ien te a la F ig u ra 2 .3 . E s la \ersi«'»n
in g le sa d e la c la s e L o t e r í a .
M a x T c s t.ja v a CYxlig«> c o rre s p o n d ie n te a la F ig u ra 2 .1 0 . E s la v e rsió n
Referencias
in g le sa d e la c la s e M ax T e st..
Se p u e d e e n c o n tr a r m á s in f o rm a c ió n e n las r e f e r e n c ia s lis ta d a s a l fin al «Icl C a p í
K e a d ln ts .ja v a C .'x iig o c o rr e s p o n d ie n te a la F ig u ra 2 .4 . E s la v e rs ió n
tu lo I
3
C A P Í T U L O _______________________________________________________________________
Objetos y clases
E
n c s lc c a p ítu lo so c o m ie n z a a e s tu d ia r la p r o n n in u ic ió n o r ie n ta d a a o b je to s.
l 'n a c o m p o n e n te fu n d a m e n ta l d e la p ro g ra m a c ió n o rie n ta d a a o b je to s e s la
e s p e c ific a c ió n , im p lc m c n ta c ió n y u s o d e o b je to s, E n e l C a p ítu lo 2 v im o s a l
g u n o s e je m p lo s d e o b je to s , in c lu y e n d o las c a d e n a s y lo s fic h e ro s, q u e s»*n p a n e de
la lib re ria o b lig a to ria d e Java. T a m b ié n v im o s q u e e s to s o b je to s tie n e n u n e s ta d o
in te rn o q u e se p u e d e m a n ip u la r a p lic a n d o e l o p e r a d o r p u n to p a ra se le c c io n a r un
m é to d o . E n Ja v a , e l e s ta d o y la fu n c io n a lid a d d e u n o b je to v ie n e n d a d o s p o r la d e
fin ic ió n d e u n a cla s e . U n o b je to e s u n a in s ta n c ia d e u n a c la se .
E n e s te c a p ítu lo verem o s:
I .a p ro g ra m a c ió n o rie n ta d a a o b je to s p a re c e e s ta r s u rg ie n d o c o m o e l p a ra d ig m a
d o m in a n te d e lo s n o v e n ta . E n e s ta s e c c ió n s e e s tu d ia n a lg u n o s e le m e n to s d e la
o rie n ta c ió n a o b je to s q u e s o p o rta J a v a y s e m e n c io n a n a lg u n o s d e lo s p rin c ip io s d e
la p ro g ra m a c ió n o rie n ta d a a o b je to s.
El c o ra z ó n d e la p ro g ra m a c ió n o rie n ta d a a o b je to s e s e l o b je to , l 'n o b je to es
u n tip o d e d a to s c o n e s tru c tu ra y e sta d o . C a d a o b je to tie n e d e fin id a s o p e ra c io n e s
q u e p u e d e n a c c e d e r a e s e e s ta d o o m a n ip u la rlo , ( 'o r n o y a h e m o s v is to , e n J a v a los
o b je to s s e d is tin g u e n d e lo s v a lo re s d e lo s tip o s p rim itiv o s , p e r o é s ta e s m ás bien
u n a c a ra c te rís tic a d e J a v a q u e d e la p ro g ra m a c ió n o rie n ta d a a o b je to s. A d e m á s d e
e je c u ta r a c c io n e s g e n e ra le s, p o d e m o s h a c e r lo sig u ie n te :
• C re a r n u e v o s o b je to s , p o sib le m e n te c o n un v a lo r in icial.
• C o p ia r o c o m p ro b a r la igualdad.
• R e a liz a r E S so b re e s o s o b je to s.
T am bién v im o s e l o b je lo c o m o u n a u n id a d a tó m ic a q u e e l u s u a rio n o d e b e ría
d ato s, la s c u a le s s e c o n o c e n re s p e c tiv a m e n te p o r m é io tlo s y a tr ib u to s . L n se g u n d o
p re te n d e r d is e c c io n a r. L a m a y o ría d e n o s o tro s ni siq u ie ra p e n s a ría e n ju g a r c o n los
lu g a r, se p u e d e re s trin g ir la v is ib ilid a d d e d ic h a s c o m p o n e n te s . P u e sto q u e lo s m é
b its q u e re p re se n ta n a u n n ú m e ro e n c o m a D o tan te. > c o n sid e ra ría m o s c o m p le ta
to d o s q u e m a n ip u la n e l e s ta d o d e l o b je to so n c o m p o n e n te s d e la cla se , se a c c e d e a
m e n te rid íc u lo e l in te n ta r in c re m e n ta r n o so tro s m is m o s un n ú m e ro e n c o m a Do
e llo s m e d ia n te e l o p e ra d o r p u n to , a l ig u a l q u e a lo s a trib u to s. E n la te rm in o lo g ía
ta n te a lte ra n d o su re p re se n ta c ió n in tern a
d e la p ro g ra m a c ió n o rie n ta d a a o b je to s, c u a n d o h a c e m o s u n a lla m a d a a u n m é to
E l p rin c ip io d e a to m ic id a d se c o n o c e c o m o a c u ita m ie n to d e la in fo rm a c ió n . El
d o . e sta m o s p a sa n d o un m e n s a je al o b jeto .
u s u a rio n o tie n e a c c e s o d ir e c to a la s p a n e s d e l o b je to o a su im p le m e n ta c ió n ; s o la
m e n te s e p u ede a c c e d e r a e lla s d e fo rm a in d ire c ta a tra v é s d e m é to d o s p ro p o rc io
n arlo s ju n to c o n e l o b je to . P o d e m o s p e n sa r q u e c a d a o b je to \ ic n e c o n e l a v is o « N o
a b rir — p u n e s 110 u lili/a b le s p o r e l u s u a n o » . L n la v id a re a l, la m a y o r ía d e la g en te 3.2 Un ejem plo sencillo
q u e in te n ta a rr e g la r las c o s a s a p e s a r d e ta le s a v iso s, te rm in a p ro d u c ie n d o m ás
p e rju ic io q u e b e n e fic io . E n e s te se n tid o , la p ro g ra m a c ió n im ita a l m u n d o real. El R e c u e rd e q u e c u a n d o e s tá d is e ñ a n d o u n a c la s e , e s im p o rta n te se r c a p a / d e o cu ltar
a g ru p a m ie n to ríe d a to s y las o p e ra c io n e s q u e se a p lic a n s o b re e llo s, fo rm a n un lo s d e ta lle s in te rn o s al u su a rio tic la c la s e . E sto se c o n sig u e d e d o s fo rm as. E n p ri
a g re g a d o , m ie n tra s q u e e l o c u lta m ie n to d e lo s d e ta lle s d e l a g re g a d o , se c o n o c e c o m e r lu g ar, la c la s e p u e d e d e fin ir su fu n c io n a lid a d m e d ia n te c o m p o n e n te s d e la
m o e n c a p su la c ió n . c la se , lla m a d a s m é to d o s. A lg u n o s d e e sto s m ótenlos d e s c rib e n c ó m o se c re a e ini-
U n o b je tiv o im p o rta n te d e la p ro g ra m a c ió n o rie n ta d a a o b je to s e s s o p o r ta r la c ia liz a u n a in s ta n c ia d e la e s tru c tu r a , o tr o s c ó m o s e re a liz a las c o m p ro b a c io n e s de
re u tili/a c ió n d e c ó d ig o . A l ig u al q u e lo s in g e n ie ro s u sa n la s m is m a c o m p o n e n te s ig u a ld a d o c ó m o s e lle v a a c a b o la s a lid a . O tra s fu n c io n e s se ría n e s p e c ífic a s a la
re p e tid a m e n te e n su s d is e ñ o s , lo s p ro g ra m a d o re s d e b e ría n se r c a p a c e s d e re u tiliz a r e stru c tu ra p a rtic u la r. L a id e a e s q u e lo s a trib u to s in te rn o s q u e re p re se n ta n e l e s ta
o b je to s e n lu g a r d e ¡m p lc m e n ta rlo s re p e tid a m e n te . C u a n d o te n e m o s u n a im p le- d o d e l o b je to n o d e b e ría n s e r m a n ip u la d o s d ire c ta m e n te p o r e l u su a rio d e la cla se ,
m e n ta c ió n d e l o b je to e x a c to q u e n e c e sita m o s u s a r, la re u tiliz a c ió n e s sim p le . El s in o so la m e n te a tra v é s d e lo s m é to d o s. E sta id e a s e p u e d e re fo rz a r o c u lta n d o
p ro b le m a e s tá e n u ti li /a r u n o b je to d is p o n ib le c u a n d o n o e s e x a c ta m e n te e l q u e se c o m p o n e n te s al u su a rio . P ara h a c e r e s to p o d e m o s e s p e c ific a r q u e se a lm a c e n e n en
n e c e sita , sin o so la m e n te u n o m u y p a re c id o . u n a s e c c ió n p r iv a d a . E l c o m p ila d o r h a rá c u m p lir la re g la q u e c o n v ie rte a las c o m
L os le n g u a je s o rie n ta d o s a o b je to s p ro p o rc io n a n v a rio s m e c a n ism o s p u ra sa tis p o n e n te s d e la s e c c ió n p riv a d a e n in a c c e s ib le s p a ra e l u s u a n o del o b je to . E n g e n e
fa c e r e s te o b je tiv o . U no e s e l u so d e c ó d ig o g e n é ric o . S i la im p le m e n ta c ió n e s ra l. to d a s la s c o m p o n e n te s d e d a lo s d e b e ría n se r p riv a d a s.
E n la F ig u r a 3.1 se m u e s tra u n a d e c la r a c ió n d e c la s e p a ra u n o b je to
id én tica in d e p e n d ie n te m e n te d e l tip o d e lo s o b je to s s o b re los q u e s e a p lic a , n o hay
n e c e sid a d d e re s c rib ir c o m p le ta m e n te e l c ó d ig o : e n lu g a r d e e llo , se e s c rib e e l c ó C e l d a E n t e r o '.L a d e c la ració n c o n s ta d e d o s partes: u n a p ú b lica y o tra p riv a d a . L a
d ig o g e n é ric a m e n te , d e fo rm a q u e fu n c io n e p a ra c u a lq u ie r tip o. P o r e je m p lo , la ló secció n p ú b lic a rep resen ta la p o rc ió n v isib le a l u su a rio riel o b je to . P u e sto q u e e s p e
g ic a u s a d a p a ra o rd e n a r u n v e c to r d e o b je to s e s in d e p e n d ie n te d e l tip o d e lo s o b je ra m o s o c u lta r lo s d a to s , e n g e n e ra l so lam en te d eb ería a p a re c e r m é to d o s y c o n sta n te s
to s q u e se e s tá n o rd e n a n d o , d e m o d o q u e se p o d ría u s a r un a lg o ritm o g e n érico . e n la se c ció n p ú b lica. E n n u e stro eje m p lo , te n e m o s m é to d o s q u e le e n y e s c rib e n e n
E l m e c a n ism o d e h e re n c ia n o s p e rm ite e x te n d e r la fu n c io n a lid a d d e u n o b je to e l o b je to C e l d a E n t e r o . L a s e c c ió n p r iv a d a c o n tie n e lo s dato s: é s ta e s invisible p a
E n o tra s p a la b ra s, p o d e m o s c re a r tip o s n u e v o s c o n la s p ro p ie d a d e s d e l tip o o rig i ra e l u su a rio d e l o b je to S e d e b e a c c e d e r a l a trib u lo v a l o r A l m a c e n a d o a tra v é s
nal re s trin g id a s (o e x te n d id a s). L a h e re n c ia n o s p e rm ite a v a n z a r u n larg o tre c h o d e la s ru tin a s p ú b lic a s l e e r y e s c r i b i r : m a i n n o p u e d e a c c e d e r d ire c ta m e n te a
h a c ia e l o b je tiv o d e s e a d o d e re u tiliz a c ió n d e c ó d ig o . e lla . E n la F ig u ra 3.2 e n c o n tra m o s u n a re p re se n ta c ió n g rá fic a d e la situ a c ió n .
O tro p rin c ip io im p o rta n te d e la p ro g ra m a c ió n o rie n ta d a a o b je to s e s e l p o li
m o rfism o . L'n ti|H» re fe re n c ia p o lim ó r tic o p u e d e re fe re n c ia r o b je to s d e v a rio s tip o s 1 / / C lase CeldaEntero
d ife re n te s. C u a n d o se a p lic a n m é to d o s al tip o p o lim ó rtic o . se se le c c io n a a u to m á ti 2 // int leert ) Devuelve e l v a l o r almacenado
c a m e n te la o p e ra c ió n a p ro p ia d a p a ra e l o b je to re fe re n c ia d o e n e s e m o m en to . E n 3 / / void e s c r i b i r { in t x ) --> Se a l m a c e n a x
4
Ja v a , e s to se im p le m e n ta c o m o p a rte d e la h e re n c ia . El p o lim o rfis m o n o s p erm ite
5 p u b lic c l a s s CeldaEntero
im p le m e n ta r c la s e s q u e c o m p a rte n u n a ló g ic a c o m ú n . C o m o se e s tu d ia e n e l C a p í 6 {
tu lo 4 . e s to se a p lic a re ite ra d a m e n te e n la s lib re ría s d e Ja v a . E l u so d e la h e re n c ia 7 / / Métodos p ú b l i c o s
p a ra c re a r e sta s je r a rq u ía s d is tin g u e la p ro g ra m a c ió n o rie n ta d a a o b je to s d e la m á s 8 p u b l i c i n t l e e r { ) I r e t u r n v a l o r A l m a c e n a d o ;}
sim p le p r o g r a m a c ió n b a s a d a e n o b je to s. 9 p u b l i c v o i d e s c r i b i r ( i n t x l {v a l o r A l m a c e n a d o = x ; }
10
E n J a \ a . lo s a lg o ritm o s g e n é ric o s s e im p lc m c n la n c o m o p a rte d e la h e re n c ia .
11 / / R e p re s e n ta c ió n i n te r n a p r iv a d a d e l dato
En e l C a p ítu lo 4 s e e s tu d ia la h e re n c ia y e l p o lim o rfis m o . E n e s te c a p ítu lo , d e s c ri 12 p r i v a t e i n t valorA lm acenado;
b im o s c ó m o J a v a u sa las c la s e s p a ra c o n s e g u ir e n c a p s u la c ió n v o c u lta m ie n to d e 13 )
in fo rm a c ió n .
F i g u r a 3.1 U na d e cla ra ció n co m p leta d e u n a c la se C e l d a E n t e r o
l 'n o b je to e n J a v a e s u n a in s ta n c ia d e u n a c la se . U n a c la s e e s sim ila r a una
e s tru c tu ra e n C <* u n re g is tro e n P a sc a l o A d a. e x c e p to p o r e l h e c h o d e q u e hay d o s
1 R e s u m i ó q u e la » c la v o s (to b e n p u .irtl.n s o o n t u b e r o s d e l m i s i n o n o m b r e q u e la c lu s c . l u e g o 0 1d o K n t
m ejo ras im p o rta n te s. E n p rim e r lu g ar, la s c o m p o n e n te s p u e d e n s e r fu n c io n e s o
f ic h e r o C etdaE m ero.iax'a.
L n m u c h o s le n g u a je s, lo s o b je tiv o s d e c o m p a r tir la e s p e c ific a c ió n p e ro c o n
I leer j , escribir f j valorAlmaccnj>lo ( c u ita m ie n to d e la im p le m e n ta c ió n s e c o n s ig u e c o lo c a n d o e sp e c ific a c ió n e im p le -
m e n ta c ió n e n fic h e ro s fu en te se p a ra d o s. P o r e je m p lo , e n t ’+ + la in te rfa z d e clase
s e c o lo c a e n u n a rc h iv o c o n e x te n s ió n . h . y la im p le m e n ta c ió n d e la c la s e e n un
Figura 3.2 C om po nentes d e C e l d a E n t e r o : l e e r y e s c r i b i r s o n accesib les
a rc h iv o . c p p . E n e l fic h e ro . h . la in te rfa z d e c la s e m u e s tra lo s m é to d o s (p r o p o r
pero v a l o r A l m a c e r . a d o está oculto.
c io n a n d o las c a b e c e ra s d e lo s m é to d o s ) im p lc m e n ta d o s p o r la cla se .
J a v a tie n e u n e n fo q u e d is tin to . E s fá c il v e r q u e s e p u e d e d o c u m e n ta r a u to m á ti
L a F ig u ra 3 .3 m u e s tra c ó m o m* u sa n lo s o b je to s d e la c la s e C e l d a E n t e r o . c a m e n te u n a lista d e m é to d o s e n u n a c la s e , c o n s ig n a tu ra s y tip o s d e l re s u lta d o , a
P u e sto q u e l e e r y e s c r i b i r s o n c o m p o n e n te s d e la c la s e C e l d a E n t e r o . se p a rtir d e la im p le m e n ta c ió n . J a s a u s a e s ta id ea: e l p ro g ra m a j a v a d o c ' , p ro p o rc io
p u e d e a c c e d e r a e lla s u s a n d o e l o p e ra d o r p u n to . T a m b ié n se p o d ría a c c e d e r a l a tri n a d o e n to d o s lo s s is te m a s J a v a , s e p u e d e e je c u ta r p a ra g e n e ra r a u to m á tic a m e n te
b u to v a l o r A l m a c e n a d o u s a n d o e l o p e ra d o r p u n ió , p e ro d e b id o a q u e e s p riv ad a, d o c u m e n ta c ió n p a ra la s c la s e s . L a sa lid a d e j a v a d o c e s un c o n ju n to d e fic h ero s
e l a c c e s o e n la línea 14 s e r ía ile g a l, si é s ta n o e s tu v ie ra c o m e n ta d a . H T M L q u e s e p u e d e v e r o im p rim ir c o n un n av eg ad o r.
A c o n tin u a c ió n re s u m im o s la te rm in o lo g ía . L a c la s e d e fin e c o m /to n e n te s . q u e L l fic h e ro d e im p le m e n ta c ió n ta m b ié n p u e d e a ñ a d ir c o m e n ta rio s j a v a d o c que
p u ed en s e r a tr ib u io s (d ato s) o m e to ,lo s (fu n c io n e s). L o s m é to d o s p u e d e n a c tu a r s o c o m ie n c e n c o n e l to k e n / * * . D ic h o s c o m e n ta rio s s e a ñ a d e n a u to m á tic a m e n te , de
bre lo s a trib u to s \ p u e d e n lla m a r a o tr o s m é to d o s. L! m o d ific a d o r d e v is ib ilid a d u n a lo rm a u n ifo rm e y c o n s is te n te , a la d o c u m e n ta c ió n p ro d u c id a p o r j a v a d o c .
p u b l i c s ig n ific a q u e la c o m p o n e n te e s a c c e sib le p a ra c u a lq u ie ra a tra v é s d e l o p e ra H ay ta m b ié n v a ria s m a rc a s e s p e c ia le s q u e se p u e d e n in c lu ir e n lo s c o m é n ta
d o r p u n to . L l m o d ific a d o r d e v isib ilid a d p r i v a t e sig n ific a q u e la c o m p o n e n te s o la n o s j a v a d o c . A lg u n a s d e e lla s s o n @ a u t h o r . @ p a r a m . @ r e t u r n y t í e x c e p t i o n .
m en te e s a c cesib le a tra v é s d e o tro s m é to d o s d e e s a c la se . S i n o hay m o d ific a d o r d e E n la F ig u ra 3 .4 s e m u e s tra e l u s o d e lo s c o m e n ta rio s j a v a d o c e n la d e fin ic ió n d e
'v is ib ilid a d , te n e m o s a c c e s o a m isto so , e l cual se e stu d ia e n la S e c c ió n 3 .5 .4 . H ay un c lases. E n la lín e a 3. s e u sa la m a r c a S a u t h o r . E sta m a rc a d e b e p re c e d e r a la d e fi
c u a rto m o d ific a d o r c o n o c id o c o m o p r o t e c t e d . q u e s e e s tu d ia e n e l C a p ítu lo 4. n ic ió n d e la c la s e . L a lín e a 10 ilu stra e l u s o d e la m a rc a < 3 r e t u r n . y la 19 e l d e la
m a rc a e p a r a m . E sta s m a rc a s d e b e n a p a re c e r a n te s d e la d e c la ra c ió n d e un
m é to d o . E l p r im e r to k e n q u e sig u e a la m a re a ü p a r a m e s e l n o m b re d e l p a rá m e tro .
1 / / E j e r c i c i o cor. l a c l a s e C e l d a E n t e r o
L a m a rc a 0 e x c e p t i o r . n o s e ilu s tra , p e r o tie n e la m is m a s in ta x is q u e y p a r a m .
2
3 p u b lic c ía s » TesrCeIdaEntero
4 { 1 /**
5 p u b i l e s t a t i c v o id main! S t r i n g | ] args > 2 • C l a s e p a r a s im u la r una c e l d a d e memoria p a r a un e n te r o
6 3 • S a u t h o r M a r k A. W e i s s
7 C e l d a E n t e r o n = new C e l d a E n t e r o ! ); 4 */
8 5
9 m .escribir! 5 I: 6 p u b l ic c l a s s CeldaEntero
10 System .out . p r i n t l n ! "Contenidos de la c e ld a : • « m .l e e r l I ); 7 <
11 8 /* •
9 * o b tie n e e l v a l o r alm acenado.
12 / / La s i g u i e n t e l i n e a s e r í a i l e g a l s i n o e s t u v i e r a c o m e n t a d a
10 * 9 r e tu r n e l v a lo r alm acenado.
13 / / p o rg u e v a l o r Almacenado e s una componente p riv a d a
11 */
14 / / m .va lorA lm a ce r.a d o = 0;
12 public int leer! )
15
13 (
16 ) 14 r e t u r n valorA lm acenado;
15 )
Figuro 3.3 U n a rutina s»mple d e co m p ro b ació n p a ra mostrar có m o se a c c e d e o
16
los objetos o e la ciase C e l d a E n t e r o .
17 /*•
18 * Almacena un v a l o r .
19 * 9param x e l número a a lm a c e n a r .
20 */
3.3 Ja v a d o c 21 publicvoid escribir! int x )
22 {
C u a n d o s e d is e ñ a u n a c la s e , la e s p e c i fi c a c i ó n d e l a c la s e re p re se n ta e l d is e ñ o d e la 23 v a lo rA lm a c e n a d o = x;
24 )
c la s e y n o s d ic e q u é se p u e d e h a c e r s o b r e u n o b je to . L a i m p le m e n ta c ió n re p re se n ta 25
los d e ta lle s in te rn o s d e c ó m o se c o n sig u e e sto . E n lo q u e re s p e c ta a l u s u a rio , e sto s 26 private i n t valorA lm acenado;
d e ta lle s n o so n im p o rta n te s. F.n m u c h o s c a s o s , la im p le m e n ta c ió n re p re s e n ta in 27 )
fo rm a c ió n d e l p ro p ie ta rio q u e e l d is e ñ a d o r d e la c la s e n o d e se a c o m p a rtir. S in Figura 3.4 D eclaroc*ón d e C e l d a E n t e r o c o n com entarlos / a v a d o c .
e m b a rg o , la e s p e c ific a c ió n d e b e e s ta r c o m p a rtid a ; e n c a s o c o n tra rio , no se p o d ría
u sa r la clase. V tlel / I j Fieuni 3 5 K «r<-s|x»iH k- a la t e r s t ó n inglcN* J e la I - i u u r a 3.4.
E n la F ig u ra 3 .5 s e m u e s tra la s a lid a q u e re s u lta d e la e je c u c ió n d e ja v a d o c . (e ste s u b d ire c to rio e s p a rte d e la d is trib u c ió n JI)K y e s tá re p lic a d o e n e l c ó d ig o
E je cu te ja v a d o c p ro p o rc io n a n d o e l n o m b re (in c lu id a la e x te n s ió n . j a v a » d e l f i q u e se su m in istra e n la red ).
c h e ro fu e n te . P a ra o b te n e r d ib u jo s p a ra lo s c o n s tru c to re s , m é to d o s, e tc ., d e b e ten e r L a sa lid a d e ja v a d o c e s tá fo rm a d a e x c lu s iv a m e n te p o r c o m e n ta rio s, e x c e p to
un s u b d ire c to rio i m a g e s e n e l d ir e c to r io d o n d e s e g e n e ra n lo s fic h e ro s H T M L e n e l c a s o d e las c a b e c e ra s d e lo s m é to d o s. El c o m p ila d o r n o c o m p ru e b a q u e d i
c h o s c o m e n ta rio s e s té n im p le m c n ta d o s. A p e s a r d e e llo , n u n c a n o s q u e d a re m o s
c o rto s a l v a lo r a r la im p o rta n c ia d e d is p o n e r d e d o c u m e n ta c ió n a p ro p ia d a , ja v a d o c
"NrlK-K- |('U.<iMCel) jajxj
t* Y— fio 8oo»—». C«c«o.r W,r*»o- Help h a c e m á s fác il la ta re a d e g e n e ra r d o c u m e n ta c ió n c o n u n b u e n fo rm ato .
^ ... . . |% .« □
C lass In tC e ll .d 3.4 M étodos básicos
i
java.lang.CCiccc
1 A lg u n o s m é to d o s s o n c o m u n e s a to d a s las c la s e s. E n e s ta se c c ió n s e e s tu d ia los
.---IntCell
m é to d o s m o d ific a d o r e s y d e a c c e s o , y tr e s m é to d o s e s p e c ia le s : lo s c o n stru c to re s.
t o S t r i n g y e q u a l s . T a m b ié n se h a b la d e lo s m é to d o s e s tá tic o s , u n o d e lo s c u a
pubir IwCrll le s e s m a i n .
Aetess.'oí5rr.ultnnpmstfígítmtttorfwC
3.4.1 Constructores
C o n s t r u c t o r lu d e x
C o m o s e h a m e n c io n a d o a n te rio rm e n te , u n a p ro p ie d a d b á s ic a d e lo s o b je to s es
q u e s e p u e d e n d e fin ir, p o sib le m e n te c o n u n v a lo r in ic ia l. E n J a v a , lo s m é to d o s que
-iMCcin
c o n tro la n c ó m o s e c re a e in ic ia liz a un o b je to re c ib e n e l n o m b re d e c o n stru c to r e s.
M e t h o d ln d e \ G ra c ia s a la so b re c a rg a , e n u n a c la s e s e p u e d e d e fin ir d iv e r s o s c o n stru c to re s.
S i n o s e p r o p o r c io n a n in g ú n c o n s tr u c to r , c o m o e n e l c a s o d e l a c la s e
■mlO C e l d a E n t e r o d e la F ig u ra 3 . 1 . s e g e n e ra un c o n s tru c to r p o r d e f e c to q u e in icializa
0.1lh.«fer.dv*»
»mtev»'1) c a d a a trib u to u s a n d o lo s c o rre sp o n d ie n te s v a lo re s p o r d e fe c to . E s to s ig n ific a q u e
SlOTÍ ■
los a trib u to s d e tip o p rim itiv o s e in ic ia liz a n a c e ro y lo s tip o s re fe re n c ia se inicia-
li /a n a la re fe re n c ia n u i l . P o r ta n to , e n e l c a s o d e C e l d a E n t e r o . la c o m p o n e n te
C o n s tru c to ra v a l o r A l m a c e n a d o e s 0.
OHU.-notad»•*.•
O b s e rv e q u e u n a v ez q u e s e e s c rib e u n c o n s tru c to r , y a n o s e u tiliz a u n c o n s
R iN n r
«h. » lo » .4 v * )u r
tru c to r p o r d e fe c to sin p a rá m e tro s. S i d e se a v o lv e r a c o n ta r c o n é l. tie n e q u e e sc ri
b ir lo e x p líc ita m e n te . A s í. e l c o n s tru c to r d e la lín e a 7 e s o b lig a to r io para poder
• n i»
c o n s tru ir e l o b je to q u e re fe re n c ia í l .
p u b lic v o id e r i c e ( i » * ' *)
3 U e .« v * t> »
O b s e rv e q u e e l p a rá m e tro e s d e l tip o O b j e c t . e n lu g a r d e l tip o d e la c la se . E l m é Figura 3.6 U na c la se F e c h a b ó sica Que ilustra e l uso d e constructores y los m éto
to d o e q u a l s s o b re u n a c la s e N o m b r e C l a s e se im p le m e n ta rá d e m o d o q u e d e dos e q u a l s y t o S t r i n g .
v u e lv a t r u e só lo c u a n d o l d e r e s u n a in s ta n c ia d e N o m b r e C l a s e y. si tra s la c o n
v e rsió n a N o m b r e C l a s e . to d o s lo s atrib u to s p rim itiv o s so n ig u a le s (u s a n d o ==> y
3 .4 .5 M éto d o s s t a t i c
to d o s lo s a trib u to s re fe re n c ia so n ig u a le s (u s a n d o u n a a p lic a c ió n c o m p o n e n te a
c o m p o n e n te d e e q u a l s ) . U n m é to d o e stá tic o e s u n m é to d o q u e n o n e c esita u n o b je to q u e l o co n tro le. E l m é
E n la F ig u ra 3 . 6 se p ro p o rc io n a u n e je m p lo d e c ó m o se im p le m e n ta e q u a l s . to d o e s tá tic o m á s c o n n in e s m a i n . E n la s c la s e s S t r i n g . I n t e g e r y M a t h s e p u e
E l o p e ra d o r i n s t a n c e o í s e e s tu d ia e n la S e c c ió n 3. 6 . 3 . d e e n c o n tr a r o tro s m é to d o s e s tá tic o s . A lg u n o s e je m p lo s s o n S L r i n g . v a l u e O f .
I n t e g e r . p a r s e l n t . M a t h . s i n y M a t h . m a x . E l a c c e s o a lo s m é to d o s e stá tic o s con
u tiliz a la s m ism a s re g la s d e v is ib ilid a d q u e lo s a trib u to s e s tá tic o s .
R e c u e rd e d e l C a p ítu lo I q u e a lg u n o s a trib u to s d e la c la s e u s a n e l m o d ific a d o r
«gus
igkv s t a t i c . U sá n d o lo , e n c o n ju n c ió n c o n la p a la b ra f i n a l , o b te n e m o s las c o n s ta n
» l m « o S t r i n q . o q u a l n y c o n p a r o T o n o s o h i in t r a d u c i d o y a q u e d i c t e n n W 't.x fc n e s t á n p r e d e f i n i d o s p a r a e l tes. S in la p a la b ra f i n a l , te n e m o s a tr ib u to s e s tá tic o s , q u e tien en o tro sig n ific a d o
o n e s d a d a s e n e s t e t i t e o M ib r e e s c n h c n a l o s p r e d e l i n i d .i s d is tin to , e s tu d ia d o e n la S e c c ió n 3.6.4.
P o r e je m p lo , c o n e s ta s d ire c tiv a s i m p o r t .
3.4.6 mai n
3.5.2 La instrucción p a c k a g e
im p o rt N om brePaquete.N om breC lase;
i m p o r t N o m b r e P a q u e t e . *;
P a ra in d ic a r q u e u n a c la s e e s p a rte d e u n p a q u e te , d e b e m o s h a c e r d o s c o sa s . En ia u
p rim e r lu g a r, d e b e m o s in c lu ir la in s tr u c c ió n p a c k a g e c o m o p rim e ra lín e a , a n tes pac
C o n la p rim e ra fo rm a, s e p u e d e u s a r N o m b r e C l a s e c o m o a b re v ia tu ra d e u n n o m auo
b re d e c la s e to ta lm e n te c u a lific a d o . C o n la se g u n d a . t«xlas la s c la s e s d e l p a q u e te se d e la d e fin ic ió n d e cla se . E n se g u n d o lu g a r, d e b e m o s c o lo c a r e l c ó d ig o e n u n sub-
sort
p u e d e n a b re v ia r c o n e l n o m b re d e la c la s e c o rre sp o n d ie n te . d ire c to rio a p ro p ia d o doq
E n e s te lib ro , u s a m o s lo s tr e s p a q u e te s m o s tra d o s e n la F ig u ra 3.7. O tro s p ro cxe<
g ra m a s. in c lu y e n d o los p ro g ra m a s d e p ru e b a y las a p lic a c io n e s d e la P arte III del def»
ifto l h c r r a n i i c n l u d e v e n í a n j * n h u r a c t u s T n lo v u c e s i v o * e u s a r á * in t r a d u c i r , p u c s i o q u e m i » s i g l a s , a w t . s e u s a n cía»
e v lo . a s i c o m o e n e l n o m b re d e l p a q u e te
lib ro , so n c la s e s a is la d a s q u e n o fo rm a n p a rle d e un p a q u ete .
nu v a ria b le classpath tie n e un v alo r in c o rre c to , n o p o d rá c o m p ila r ni Niquiera el
Pagúete Uso
p ro g ra m a máN triv ia l p o rq u e n o no e n c o n tra rá j a v a . l a n g .
U n a c la v e d e u n p a q u e te P d e b e e s ta r e n u n d ire c to rio P . e l c u a l se e n c o n tra rá
E structurasD atos C lases q u e im plem ento© estructuras d e datos
V o rd en ación. b u sc a n d o e n la lista d e CLASSPATH. E l d ire c to rio a c tu a l (d ire c to rio . ) siem pa* está
e n la v a ria b le classpath. lu e g o si v a a tra b a ja r e n un ú n ic o d ire c to rio p rincipal,
E xcepciones C lases d e excepciones. sim p le m e n te p u e d e c re a r su b d irceto rio s e n él. L o m ás p ro b ab le, sin e m b a rg o , e s q u e
q u iera c ro a r un d ire c to rio ja v a se p a ra d o y d e sp u é s c re a r su b d irc e to rio s e n él. E n to n
S oporte V arias clases d e soporte e interfaces.
c e s te n d ría q u e a u m e n ta r la v a riab le C l a s s p a t h p a ra in c lu ir e l d ire c to rio ja v a . E n
la d e fin ic ió n U n ix p re v ia s e h a c e e s to a l a ñ a d ir shomk j a v a a CLASSPATH. D e n
Figura 3.7 P aq u e tes definidos e n este libro.
tr o d e l d ire c to rio jav a, c re e su b d irc e to rio s lla m a d o s S o p o r t e . E s t r u c t u r a s D a t o s
y E x c e p c i o n e s . C o lo q u e e l c ó d ig o d e la c la s e S a l i e n d o e n e l s u b d ire c to rio
E n la F ig ura 3 . 8 se m u e s tra un e je m p lo d e c ó m o se u s a la in stru c c ió n p a c k a g e . Soporte.
T e n e m o s u n m é to d o e s tá tic o p a u s a L a r g a q u e s im p le m e n te s e d u e rm e d u ra n te U na a p lic a c ió n p u e d e u s a r e n to n c e s e l m é to d o p a u s a L a r g a e sc rib ie n d o
m il m illo n e s d e se g u n d o s (a p ro x im a d a m e n te d o s se m a n a s). E ste m é to d o e s útil
p o rq u e c u a n d o a lg u n o s e n to rn o s in te g ra d o s e je c u ta n a p lic a c io n e s d e c o n s o la d e s S o p o r t e . p a u s a L a r g a < );
d e d e n tro d e su s e n to rn o s, c ie rra n la sa lid a d e la c o n s o la ta n p ro n to c o m o te rm in a
e l p ro g ra m a . E s to p u e d e h a c e r d ifíc il v e r la salid a . El m é to d o p a u s a L a r g a m a n o sim p le m e n te u s a n d o p a u s a L a r g a . si se p ro p o rc io n a u n a d ire c tiv a i m p o r t
tie n e la c o n so la sin c e rra r e n ta le s c a so s. a p ro p ia d a .
1 package Soporte;
2
3.5.4 Reglas d e visibilidad amistosa dentro
3 public class Saliendo d e un paquete
4 <
5 // S u s p e n d e la e j e c u c i ó n d e l p r o g r a m a a c t u a l d u r a n t e u n t i e m p o
L o s p a q u e te s tie n e n \ aria s re g la s d e v is ib ilid a d im p o rta n te s. E n p rim e r lu g a r, si n o
6 p u b lic s t a t i c void pausaLargat )
7 { se e s p e c ific a n in g ú n m o d ific a d o r d e v is ib ilid a d p a ra u n a trib u to , e n to n c e s e l a tri
8 try b u to e s a m i s t o s o . E s to s ig n ific a q u e s o la m e n te e s v is ib le p a ra la s d e m á s c la se s
9 ( T h r e a d . s l e e p t 1 0 0 0 0 0 0 0 0 0 >; ) d el m is m o p a q u e te . E s te tip o d e v is ib ilid a d e s m a y o r q u e la d e la p a rte p riv a d a
10 c atch t interruptedE xception e ) ( ) (q u e e s in v is ib le in c lu s o p a ra o tr a s c la s e s d e n tr o d e l m is m o p a q u e te ) p e ro m e n o r
11 q u e la d e la p a rte p ú b lic a ( q u e e s v is ib le ta m b ié n p a ra c la s e s q u e n o p e rte n e c e n a
12 )
e s e p a q u e te ).
Fi g u r a 3. 8 U n a c la se S a l i e n d o c o n un ú n ico m éto d o e stá tico , qu© form a parte E n se g u n d o lu g a r, so la m e n te las c la s e s p ú b lic a s d e u n p a q u e te s e p u e d e n u sa r
d e l p a q u e te S o p o r t e . fu e ra d e l p aq u ete . É sta e s la ra z ó n p o r la q u e s ie m p re h e m o s u s a d o e l c u a lific a d o r
p u b l i c d e la n te d e la s c la s e s. L a s c la s e s n o s e p u e d e n d e c la ra r c o n la p alab ra
p r í v a t e . E l a c c e so a m is to s o se e x tie n d e a las c la s e s ta m b ié n . S i u n a c la s e n o se
Herencia
4.1 ¿Q u é es la h e re n cia?
L a h e r e n c ia e s e l p rin c ip io b á s ic o d e la p ro g r a m a c ió n o rie n ta d a a o b je to s e m
p le a d o p a ra re u tiliz a r c ó d ig o e n tr e c la s e s re la c io n a d a s . L a h e re n c ia m o d e la las
re la c io n e s E S -U N i A ). L n u n a re la c ió n E S -U N (A ), d e c im o s q u e u n a c la s e d e riv a
d a e s u n a v a ria c ió n d e la c la s e b a se . P o r e je m p lo , u n C ír c u lo E S -U N (A ) F igura
y u n C o c h e E S -U N (A ) V e h íc u lo . S in e m b a r g o , n o s e tie n e q u e u n a E lip s e E S -
U N (A ) C írc u lo . L a s re la c io n e s d e h e re n c ia fo rm a n je r a r q u ía s . P o r e je m
p lo . p o d e m o s e x te n d e r C o c h e fo r m a n d o o tr a s c la s e s , y a q u e C o e h e E x tra n je ro
E S -U N (A ) C o c h e (y p a g a im p u e s to s ) y C o c h e N a c io n a l E S -U N (A ) C o c h e «y no
ñ a u a im p u e sto s).
( >tro tip o d e re la c io n e s so n la s re la c io n e s C O N T IE N E E sta c la s e d e re la c io n e s d is p o n ib le s e n la c la s e b a s e se c o n v ie rte n e n m é to d o s p ú b lic o s, c o n iiu p lc in e n la
n o p o s e e las p ro p ie d a d e s a s o c ia d a s a la je r a rq u ía d e h e re n c ia . U n e je m p lo d e re la c io n c s id é n tic a s e n la c la s e d e riv a d a . A d e m á s p u e d e n a ñ a d irs e a trib u to s y m é to d o s
c ió n C O N T IE N E e s q u e u n C o c h e C O N T IE N E V o la n te . L a s re la c io n e s C O N T IE a d ic io n a le s y c a m b ia r e l s ig n ific a d o d e lo s m é to d o s h e re d a d o s . C a d a c la s e d e riv a
N E n o d e b e n s e r m o d e la d a s a tra v é s d e la h e re n c ia . P o r e l c o n tra rio , d e b e n im p le- d a e s u n a c la s e c o m p le ta m e n te n u ev a. P o r o tr a p a rte , lo s c a m b io s re a liz a d o s e n las
m e n ta rse m e d ia n te la té c n ic a d e la c tu n p o s iiio n . e n la q u e la s c o m p o n e n te s son c la s e s d e riv a d a s n o a fe c ta n e n a b s o lu to a la c la s e b a se . D e e s te m o d o , e l d is e ñ o d e
s e n c illa m e n te a trib u to s d e d a to s p riv ad o s. c la s e s d e riv a d a s n o a fe c ta a la c la s e b a s e , lo q u e sim p lific a n o ta b le m e n te e l m a n
El le n g u a je J a v a e m p le a e x te n s a m e n te la h e re n c ia a l im p lc m c n ta r su s lib re ría s te n im ie n to d e l so ftw are
d e c la s e s. D o s e je m p lo s so n las e x c e p t io n e s y la s c o tn /n m e n te s e n e l A b s tr a e t U na c la s e d e riv a d a e s d e tip o c o m p a tib le c o n la c la s e b a se , d e m o d o q u e una
W indow T o o lk it: v a riu b lc re fe re n c ia d e la c la s e b a s e p u e d e re fc re n c ia r a u n o b je to d e la c la s e d e r i
v a d a , p e r o n o a l re v é s . I-as c la s e s h e rm a n a s (e s d e c ir, las c la s e s d e riv a d a s d e una
• E x c e p c io n e s Jav a d e lin e la c la s e E x c e p t i o n C o m o y a h e m o s v is to , e x iste
c la s e c o m ú n ) n o so n d e tip o s co m p a tib le s.
u n a g ra n v a rie d a d d e e x c e p c io n e s in c lu y e n d o N u i l P o i n t e t E x c e p t i o n y
C o m o h e m o s m e n c io n a d o a n te rio rm e n te , e l u so d e la h e re n c ia g e n e ra una
«r r a y O u tO Í B o u n d s E x c o p t . o n . C a d a u n a e s u n a c la s e d is tin ta , p e r o soba*
je r a r q u ía d e c la s e s . E a F ig u r a 4.1 m u e s tra u n a p e q u e ñ a p a rte d e la je r a rq u ía
to d a s e lla s p u e d e n ap lic a rse lo s m é to d o s t o S t r i n g y p r i n t - S t a c k T r a c e
E x c e p t i o n . N ó te se q u e N u l 1 P o i n t e r E x c e p t i o n se d e riv a in d ire c ta m e n te de
p ara a y u d a rn o s e n la d e p u ra c ió n .
E x c e p t i o n . E ste h e c h o e s tra n s p a re n te a l u s u a rio d e la s c la s e s y a q u e las re la c io
• C o m p o n e n te s. E l A b s tr a e t W in d o w T o o lk it (d e s c rito c o n m á s d e ta lle e n el
n e s E S -U N lA ) so n tra n sitiv a s . E n o tr a s p alab ras, si X E S - l ’N (A ) Y e ) E S l N< 4
A p én d ice D i d e fin e u n o b je to c o n o c id o c o m o C o m p o n c n t E x iste n m u ch o s
/ . e n to n c e s X E S -U N (A ) / . 1.a je r a r q u ía E x c e p t i o n m u e s tra las d e c is io n e s d e d i
tip o s d e C o m p o n e n te s , in c lu y e n d o B u t t o n . C a n v a s . C h e c k b o x . L i s t y
s e ñ o u s u a le s e n las q u e lo s ra s g o s c o m u n e s s e re ú n e n e n la s c la s e s b a s e y la espe-
T e x t F i e l d . C u a lq u ie ra d e e l l a s p u e d e a ñ a d ir s e a u n B ra m o . P a n o l o
c ia liz a c ió n s e h a c e e n las c la s e s d e riv a d a s. E n e s ta je r a r q u ía se d ic e q u e la c la s e
W indow (q u e a s u v e z so n C o m p o n e n te s ).
d e riv a d a e s u n a su b c la s e d e la c la s e b a s e y q u e la c la s e base e s u n a su p e r c la sc d e
En a m b o s c a s o s , la h e re n c ia m o d e la tin a re la c ió n E S -U N (A ). U n B u l l o »: la c la s e d e r iv a d a . E s ta s re la c io n e s s o n tr a n s itiv a s . P o r o tr a p a r te , e l o p e ra d o r
E S - l'N ( A ) C o m p o n e n t. U n a N u l ¿ P o i n t e r E x c e p t. i o n E S -U N (A ) E x c e p t i o n i n s t a n c e o f p u e d e e m p le a rs e c o n las su b c la se s. A sí. si o b j e s d e tip o x (y no
D e b id o a las c a r a c te r ís tic a s d e la r e la c ió n E S -U N (A ), la p ro p ie d a d fu n d a m e n ta l n u i l )e n to n c e s o b j i n s t a n c e o f 7. es tru e .
d e la h e re n c ia g a ra n tiz a q u e c u a lq u ie r m é to d o e je c u ta b le p o r E x c e p t i o n p u e d e E n la s s ig u ie n te s s e c c io n e s re s p o n d e re m o s a las sig u ie n te s c u e stio n e s:
s e r e je c u ta d o ta m b ié n p o r N u i l P o i n t e r E x c e p t i o n . y m á s a ú n . u n o b je to • ¿ C u á l e s la s in ta x is a d e c u a d a p a ra d e riv a r u n a c la s e d e o tra c la s e b a s e v a
\'u 1 7 o i n t e r E x c e p t i o n p u e d e e s ta r ra fc re n c ia d o p o r u n a v a ria b le E x c c p t io n . e x is te n te ?
i< >bserve q u e lo c o n tra rio n o e s c ie rto .) E n to n c e s, c o m o p » i n t S t a c k T r a c e e s un • ¿ C ó m o a fe c ta e s to a lo p ú b lic o y l o p riv a d o ?
m é to d o d is p o n ib le e n la c la s e E x c e p t i o n . p o d e m o s e sc rib ir • ¿ C ó m o s e e sp e c ific a q u e u n m é to d o n o s e re d e f in e a lo larg o d e la je ra rq u ía
d e c la se s?
c a t c h t F .x c e p t i o n e 1 I e . p r i n t S t a c k T r a o c ( ) .- ) • ¿ C ó m o se e s p e c ia liz a un m é to d o ?
• ¿ C ó m o p o d e m o s e lim in a r las d if e re n c ia s g e n e ra n d o u n a c la s e a b s tra c ta para
S i e re fe re n c ia a u n o b je to N u i l P o i n t e r E x c e p t i o n . e . p r i n t S t a c k T r a c e tie c r e a r d e s p u é s u n a je ra rq u ía ?
n e se n tid o . D e p e n d ie n d o d e la s c irc u n s ta n c ia s d e la je r a r q u ía d e c la s e s q u e s e te n • ¿ S e p ued e d e riv a r u n a n u e v a clase a partir d e varias c la se s (heren cia m últiple)'!
g a. e l m é to d o p r i n t S t a c k T r a o c p u e d e p e rm a n e c e r ig u a l o e s p e c ia liz a r s e e n c a • ¿ C ó m o se e m p le a la h e re n c ia p a ra im p lc m e n ta r la g c n e ric id a d ?
d a c la se . C u a n d o un m é to d o p e rm a n e c e in v a ria n te a lo la rg o d e la je r a r q u ía , e n el
s e n tid o d e te n e r la m is m a fu n c io n a lid a d p a ra to d a s la s c la s e s e n la je r a rq u ía , e v ita
m o s te n e r q u e re s c rib ir u n a im p le m e n ta c ió n d e l m é to d o p a ra c a d a c la se . A r r u y lf k le x O u r t >1B o u r u l s l u c c p l i u n
la p ro g ra m a c ió n o rie n ta d a a o b je to s c o n o c id o c o m o p o lim o r fis m o . U n a v ariab le R u n lim c t- x c c p tio ii ^ S tfin jilik J c x fta C M B o u ik h E x iv p iio a
o p e ra c ió n h a d e a p lic a rs e a u n a re fe re n c ia ta l. s e se le c c io n a a u to m á tic a m e n te la
m á s a d e c u a d a a l o b je to re fe re n c ia d o e n e s c m o m e n to . E n J a v a to d o s lo s tip o s re fe
Excepta»
re n c ia s o n p o lim ó rtlc o s . E n e l c a s o d e u n a re fe re n c ia d e u p o E x c e p c i ó n se to m a
u n a d e c is ió n e n tie m p o d e e je c u c ió n : e l m é to d o p r i n t S t a c k T r a c © d e l o b je to
q u e e re fe re n c ia e n tie m p o d e e je c u c ió n e s e l e m p le a d o . E s to e s c o n o c id o c o m o hO F E xcepúon
h p a tlo d in á m ic o . K H íx c rf liitii
En la h e r e n c ia , se tie n e u n a c la s e b a se d e la q u e d e riv a m o s e l re s to d e c la se s. BkNi'lF'OundEweption
I a c la s e b a s e e s la c la s e so b re la q u e s e b asa la h e re n c ia l n a c la s e d e riv a d a b e re
d a to d a s las p ro p ie d a d e s d e la c la s e b a se , d e m o d o q u e to d o s lo s m é to d o s p ú b lic o s F ig u ro 4.1 P a r t e d e la j e r a r q u ía E x c e p t i o n
A lguna», d e c s tu s c u e s tio n e s se ilu s tra n e n la im p le m e n ta c ió n d e la c la s e E s p o s ib le q u e e n o c a s io n e s n e c e s ite m o s q u e la c la s e d e riv a d a te n g a a c c e s o a
F i g u r a (e n las S e c c io n e s 4 . 2 . 5 y 4 . 3 ) d e la q u e s e d e riv a n C i r c u l o , c u a d r a d o y a lg u n a s c o m p o n e n te s d e s u c la s e b ase. E x iste n d o s fo rm as d e lo g ra rlo L a prim er
R e c t á n g u l o . I n e s te e je m p lo p u e d e o b se rv a rse c ó m o J a v a im p le m e n to e l p o li c o n siste e n e m p le a r e l a c c e s o p ú b lic o o e l a c c e s o a m is to s o . S in e m b a rg o , e l a c c e
m o rfis m o e n tie m p o d e e je c u c ió n , y c o m p r o b a r c ó m o p u e d e e m p le a rs e la h e re n c ia so p ú b lic o p e rm ite a c c e d e r a o tr a s c la s e s a d e m á s d e a la c la s e d e riv a d a , y e l a c c e
p a ra im p le m e n ta r m é to d o s g en érico s. so a m isto so s ó lo fu n c io n a si a m b a s c la s e s e s tá n e n e l m ism o p aq u ete
S i d e s e a m o s p e rm itir e l a c c e s o s ó lo a las c la s e s d e riv a d a s, p o d e m o s d e c la ra r J
c o m p o n e n te s p ro te g id a s. U n a k i i ii / h m e n te p r o te g id a d e u n a c la s e e s p riv a d a p a ra ^
4.2 Sintaxis b á s ic a de J a v a c u a lq u ie r c la s e s a lv o p a ra las c la s e s d e riv a d a s ty las c la s e s q u e s e e n c u e n tre n e n e l j
m ism o p a q u e te ). E l d e c la ra r c o m p o n e n te s c o m o p ú b lic a s o p ro te g id a s v io la e l es- ]
R e c u e rd e q u e u n a c la s e d e riv a d a h e re d a t«»dus la s p ro p ie d a d e s d e c a d a u n a d e su s p ín tu d e la c n c a p s u la c ió n y e l o c u lta m ie n to d e in fo rm a c ió n , p o r lo q u e s ó lo s e de- J
c la se s b a se . D e sp u é s p o d e m o s a ñ a d ir n u e v o s a trib u to s , s o b re s c rib ir m é to d o s y h e ría a d m itir c o m o lic e n c ia . U n a m e jo r a lte rn a tiv a es e s c r ib ir m é to d o s d e m o d ifi- i
a ñ a d ir n u e v o s m é to d o s. C a d a c la s e d e riv a d a e s u n a c la s e c o m p le ta m e n te nuev a. c a c ió n o d e a c c e s o p a ra a p ro v e c h a r e l a c c e s o a m isto so . S in e m b a rg o , si u n a i
En la F ig u ra 4 .2 s e m u e s tra un e s q u e le to típ ic o d e h e re n c ia , e n e l q u e s e u s a la d e c la ra c ió n p ro te g id a p e rm ite c v ito i u n c ó d ig o c o m p lic a d o , e s ra /o n a b le e m p le a r
c lá u s u la e x t e n d s . U n a c lá u s u la e x t e n d s in d ic a q u e u n a c la s e se d e riv a d e otra. la. E n e s te te x to , u tiliz a re m o s e n o c a s io n e s a tr ib u t o ' p ro te g id o s p o r e s ta ra z ó n . E!
U n a c la s e deriv a d a e x tie n d e u n a c la s e b a se . P re s e n ta m o s a c o n tin u a c ió n u n a b re v e e m p le o d e m é to d o s p ro te g id o s e s ta m b ié n u n a p rá c tic a h a b itu a l e n e l te x to . E sto
d e s c rip c ió n g e n é ric a d e u n a d a s e d e riv a d a : p e rm ite q u e u n a c la s e d e riv a d a h e re d e u n m é to d o in te rn o 'i n c o n v e rtirlo e n a c c e
• G e n e ra lm e n te lo d o s lo s d a to s s o n p riv a d o s, a s í q u e a l a ñ a d ir n u e v o s a trib u sib le fu e ra d e la je r a r q u ía d e p a q u e te s.
to s a la c la s e d e riv a d a d e b e m o s e s p e c ific a rlo s e n la s e c c ió n p riv a d a .
• C u a lq u ie r m é to d o d e u n a c la s e b a s e q u e n o s e e s p e c ifiq u e e n la c la s e d e riv a
d a e s h e re d a d o sin m o d ific a c ió n a lg u n a , a e x c e p c ió n d e l c o n s tru c to r liste 4.2.2 El constructor y s u p e r
c a s o e s p e c ia l s e d e ta lla e n la S e c c ió n 4 .2 .2 .
C a d a c la s e d e riv a d a d e b e d e fin ir su s p ro p io s c o n s tru c to re s . S i n o se im p le m e n to :
• C u a lq u ie r m é to d o d e u n a c la s e b a s e q u e s e d e fin a d e n u e v o e n la se cc ió n
p ú b lic a d e la c la s e d e riv a d a s e s o b re s c rib e . L a n u e v a d e fin ic ió n s e a p lic a rá a n in g u n o e n to n c e s s e g e n e ra u n c o n s tru c to r sin p a rá m e tro s p o r d e fe c to . E ste c o n s
los o b je to s d e la c la s e d e riv ad a. tru c to r in v o c a rá a l c o n s tru c to r sin p a rá m e tro s d e la c la s e b a s e p a ra in ic ia li/a r la
• L o s m é to d o s p ú b lic o s d e la c la s e b a s e n o d e b e n re d e fin irse e n la se c c ió n p ri p arte h e re d a d a , y se e m p le a ra l a in icial i/a c ió n p o r d e fe c to s o b re lo s n u e v o s a trib u - j
v a d a d e la c la s e d e riv a d a . lo s (o se a . u tiliz a rá 0 p a ra lo s tip o s p rim itiv o s y n u i l p a ra lo s tip o s re fe re n c ia ), t
• E n la c la s e d e riv a d a p u e d e a ñ a d irs e m é to d o s a d ic io n a le s . E n la p rá c tic a e s h a b itu al c o n s tru ir u n a c la s e d e riv a d a c o n s tru y e n d o p rim e ro la
p a rte h e re d a d a . IX’ h ech o , e s to se h a c e a s í s ie m p re p o r d e fe c to , in c lu s o c u a n d o s e ¡
tie n e un c o n s tru c to r p a ra la c la s e d e riv a d a . E sto e s ló g ic o si s e tie n e e n c u e n ta q u e
1 p u b lic c ia o s Derivada extends Base
la c n c a p s u la c ió n c o n s id e ra la p o rc ió n h e re d a d a c o m o u n a s o la e n tid a d , y e l c o n s- (j
2 <
tr a c to r d e la c la s e b a s e in d ic a c o m o in ic ia liz a r d ic h a e n tid a d . t-
3 / / C u a lq u ie r coirponente no l i s t a d a se hereda s in cambios
4 / / excepto el constructor I o s c o n s tru c to re s d e la c la s e b a s e p u e d e n se r lla m a d o s e x p líc ita m e n te e m
5 p le u n d o e l m é to d o s u p o r . A sí. e l c o n s tru c to r p o r d e f e c to d e u n a c la s e d e riv a d a e s j
6 n componentes p ú b lic o s e n re a lid a d
7 / / C o n s t r u c t o r ( e s l 9 i e l c o n s t r u c t o r p o r d e f e c t o no e s v á l i d o
8 / / Métodos de l a c l a s e b ase rede f i n id o s i
p u b l ic D e riv a d a ( )
9 n Métodos p úbl ico» a d i c i o n a l e s
10 {
11 / / componentes p riv ad o s xuper < ) ;
'2 ti A tr ib u te s a d ic i o n a l e s (generalm ente privados»
13 t' Métodos p r i v a d o s a d i c i o n a l e s
14 )
L a lla m a d a a l m é to d o s u p e r p u e d e re a liz a rs e c o n lo s p a rá m e tro s q u e se a ju s
Figuro 4 2 E s q u e m a ge nera l d e la herencia, te n a l c o n s tru c to r d e la c la s e b a se . P o r e je m p lo , la F ig u ra 4 . 3 m u e s tra la c la s e 1
D e s b o r d a m i e n t o I n f e r i o r em p lead a e n la im p lem en tació n de las estructuras de
datos. D e s b o r d a m i e n t o i n f e r i o r se lanza a ta n d o se in ten ta o btener inform ación
4.2.1 Reglas d e visibilidad d e u n a e s tru c tu ra d e d a to s v acia . L os o b je to s d e tip o D e s b o r d a m i e n t o l n f e r i o r
s e c re a n e s p e c ific a n d o u n S t r i n g . D e K b o r d a m i e n t o l n f o r L o r n o in c o r p o
V a sa b e m o s q u e c u a lq u ie r c o m p o n e n te p riv a d a e s a c c e s ib le so lo p a ra lo s m é to d o s ra n u e v o s a tr ib u to s , p o r lo q u e l a c o n s tr u c c ió n d e o b je to s d e d ic h a su b c la s e
d e su c la s e . IX- e s te m o d o , las c o m p o n e n te s p riv a d a s d e la c la s e b a s e n o so n a c c e se re d u c e a c o n s tr u ir e l fr a g m e n to h e r e d a d o , e m p le a n d o e l c o n s tr u c to r d e
sib le s d e s d e la c la s e d e riv ad a F . x c e p t i on.
1 packag»* E x c e p c io n e s ;
U n c o ro la rio d e e s ta o b s e rv a c ió n e s q u e m i e s u n m é to d o triv ia l, ta l c o m o un
2 m e ro a c c e s o a un a trib u to . v s e d e c la ra c o m o f i n a l , e l c o m p ila d o r p u e d e r e e m
3 p u b lic c l a s s D e sb o rd a m ie n to In fe rio r ex te n d s Exception p la z a r la lla m a d a a f p o r mi d e fin ic ió n . A sí. la lla m a d a a l m é to d o s e ra su stitu id a
4 ( p o r u n a so la lín e a q u e re a liz a e l a c c e s o al a trib u to , g a n a n d o tie m p o . S i f n o se
5 public D esbordam ientolnferior< S trin g lanzador ) d e c la ra c o m o f i n a l e s to e s im p o sib le . >a q u e o b j p o d ría re fe re n c ia r a un o b je to
6 { d e la c la s e d e riv a d a , p ara e l q u e la d e fin ic ió n d e í s e ría d ife re n te . L o s m éto d o s
7 su p er( lanzador ): e stá tic o s n»» n e c e sita n d e o b je to c o n tro la d o r y su s lla m a d a s s e re su e lv e n e n tiem p o
8 )
d e c o m p ila c ió n m e d ia n te e l tip a d o e stá tic o .
9 }
L as c la s e s fin a le s son sim ila re s a lo s m é to d o s fin a le s. U n a c la s e fin al n o pued e
Figuro 4.3 Constructor p o r o u n o n u e v o e x c e p c i ó n D e s b o r d a m i e n t o l n f e r i o r s e r e x te n d id a . C o m o c o n se c u e n c ia , to d o s su s m é to d o s s o n a u to m á tic a m e n te m é to
que em plea su p e r. d o s fin a le s P o r e je m p lo , la c la s e i n t c g e r e s u n a c la s e fin al. N ó tese q u e e l h e c h o
d e q u e u n a c la s e te n g a m é to d o s fin a le s n o im p lic a q u e la c la s e s e a ta m b ié n fin al.
L as c la s e s fin a le s se c o n o c e n ta m b ié n p»»r c la s e s h o ja y a q u e e n la je r a rq u ía d e la
El m é to d o s u p e r s ó lo p u e d e e m p le a rs e c o m o p rim e ra lín e a d e u n c o n stru c to r.
h e re n c ia , q u e s e a s e m e ja a u n á rb o l, las c la s e s fin a le s e s tá n e n lo s b o rd e s , c o m o
Si é s te n o a p a re c e s e g e n e ra d e fo rm a a u to m á tic a u n a lla m a d a sin p a rá m e tro s a
la s hojas.
super.
v o id h a z l o ! Base o b j )
o b j.f ( 1;
4.2.5 Métodos y clases abstractos
E s im p o rta n te c o m p ro b a r q u e la o rd e n a c ió n p o r in s e rc ió n se c o m p o r ta c o rr e c
* Estodo inicial: 8 5 9 2 6 3
ta m e n te e n lo s d o s c a s o s e x tre m o s. E n p rim e r lu g a r, si e n la F ig u ra 4 . 1 1 el e le
Tras orden ar a<0 .1): 5 8 9 2 6 3 m e n to e n n e g rita e s e l m a y o r d e lo s q u e s e e n c u e n tra n e n e l g ru p o , e n to n c e s se
c o p ia e n la v a ria b le te m p o ra l e in m e d ia ta m e n te s e v u e lv e a in s e rta r e n e l v ecto r,
Tras ordenar a (0 .2): 5 8 9 2 6 3 p o r lo q u e e l a lg o ritm o e s c o rre c to . S i e n la m is m a fig u ra, e l e le m e n to e n n eg rita
e s e l m e n o r d e to d o s lo s d e l g ru p o , e n to n c e s e l g ru p o e n te r o se d e sp la z a y la v a ria
Tras orden ar a (0 3): 2 5 8 9 6 3
b le te m p o ra l se c o lo c a e n la p o sic ió n c e ro . S ó lo d e b e m o s te n e r c u id a d o d e n o s a
Tras ordenar a(0..4): 2 5 ó 8 9 3 lim o s tu e r a d e lo s lím ite s d e l v e c to r. A s í. p o d e m o s a se g u ra r q u e . c u a n d o e l bu cle
f o r m á s e x te r n o te rm in a , e l v e c to r e s tá o rd en ad o .
Tras ordenar a(0..5): 2 3 5 6 8 9
T o d o s lo s e je m p lo s d e h e re n c ia v is to s h a s ta a h o ra d e riv a n u n a c la s e a p a rtir de
c o n s e g u ir q u e lo s e le m e n to s e n tr e la s p o s ic io n e s 0 y p <d o n d e p to m a \ a lo re s e n tre
u n a ú n ic a c la s e b a se . F.n la h e r e n c ia m ú ltip le u n a c la s e p u e d e d e riv a rs e d e varias
IyN I > .V e s e l n ú m e ro d e e le m e n to s a o rd e n a r) q u e d e n c o n v c ta m e n te o rd e n a
c la s e s b a se . P o r e je m p lo , s u p ó n g a s e q u e s e tie n e n las c la s e s E s t u d i a n t e y
d o s. E n c a d a p a so , p a u m e n ta e n u n a u n id a d , lo q u e e s c o n tro la d o e n el b u c le d e la
T r a b a j a d o r , un E s t u d i a n t c T r a b a j a d o r p o d ría d e riv a rs e e n to n c e s d e am b a s
lín e a 4 e n la F ig u ra 4.9 . clases.
C u a n d o s e e je c u ta e l c u e rp o d e l b u c le f o r e n la lín e a 6. te n e m o s g a ra n tiz a d o
A u n q u e la h e re n c ia m ú ltip le e s a tra c tiv a y e n a lg u n o s le n g u a je s (in c lu y e n
q u e lo s e le m e n to s d e l s e c to r e n tre la s p o sic io n e s 0 y p I e s tá n y a o rd e n a d o s. La
d o (.'+♦> s e p u e d e im p le m e n ta r. e s tá ro d e a d a d e su tile s d e ta lle s q u e c o m p lic a n su
F ig u ra 4 . 11 m u e s tra m á s d e ta lla d a m e n te lo q u e v a m o s h a c ie n d o , re s a lta n d o e n c a d is e ñ o . P o r e je m p lo , e s p o sib le q u e las d o s c la s e s b a s e c o n te n g a n d o s m é to d o s con
d a c a s o la p a rte re le v a n te d e l v ecto r. E n c a d a p a s o n e c e sita m o s a ñ a d ir e l e le m e n to la m is m a s ig n a tu ra p e ro d is tin ta s im p lc m e n ta c io n e s. D el m ism o m o d o , a m b a s c la
e n n e g rita e n la p a rte d e l v e c to r p re v ia m e n te o rd e n a d a . F sto se lo g ra fá c ilm e n te s e s p u e d e n te n e r a trib u to s c o n n o m b re s id é n tic o s . E n to n c e s, ¿ c u á l d e b e ría m o s
a lm a c e n a n d o d ic h o e le m e n to e n u n a v a ria b le te m p o ra l \ d e s p la z a n d o U nios los u sar?
e le m e n to s m a y o re s q u e é l u n a p o s ic ió n a la d e re c h a . D e sp u é s d e e sto . p«xlem os S u p o n g a m o s q u e e n e l e je m p lo d e l E s t u d i a n t e T r a b a j a d o r . P e r s o n a es
c o p ia r e l c o n te n id o d e la v a ria b le te m p o ra l e n la p o s ic ió n a n te r io r al e le m e n to rc- u n a c la s e c o n e l a tr ib u to n o m b r e y e l m é to d o t o S t r i n g . S u p ó n g a s e a d e m a s q u e
c o lo c a d o q u e e s té m á s a la iz q u ie rd a (in d ic a d o c o n u n so m b re a d o m á s c la r o e n la E s t u d i a n t e e x tie n d e a P e r s o n a y s o b re sc rib e e l m é to d o t o S t r i n g p a ra in c lu ir
lín e a sig u ie n te ). S e m a n tie n e u n c o n ta d o r j . q u e e s la p o s ic ió n e n la q u e d e b e c o e l a ñ o d e g ra d u a c ió n d e l e s tu d ia n te . S u p o n g a m o s , ta m b ié n , q u e E m p l e a d o e x tie n
lo c a rs e la v a ria b le te m p o ra l, j d e c re c e e n u n a u n id a d c a d a v e z q u e se d e sp la z a un d e a P e r s o n a p e r o n o re d e f in c t o S t r i n g . s in o q u e lo d e c la ra c o m o
e le m e n to d e l v e c to r. L a s lín e a s e n tre la 6 y la I I iin p lc m e n ta n lo in d icad o . f inal.
I C o m o E s t u d i a n t e ? r a b a j a d o z h e re d a lo s a l ri b u to s d e E s t u d i a r r « > 4.5.2 Im p lem en tació n d e una interfaz
T r a b a j a d o r , ¿ s e tie n e n d o s c o p ia s d e n o m b r e ?
2. Si E s t u d l a n t e T r a b a j a d o r no re d e Tine to S trin g . ¿qué m é to d o U n a c la s e im p le m e n ta u n a in te rfa z si c u m p le los sig u ie n te s re q u isito s
t o S t r i n g d e b e m o s e m p le a r? 1. d e c la ra q u e im p le m e n ta la in te rfa z y
2. d e fin e im p lc m c n la c io n c s p a ra to d o s lo s m é to d o s d e la in terfa z.
C u a n d o e n la h e re n c ia interv ie n e n m á s c la s e s , lo s p ro b le m a s so n a u n m a v o re s.
I s l a ' d ific u lta d e s se tra d u c e n e n im p lc m c n la c io n c s o u lc n tilic a d o rc s d e a trib u to s E n la F ig u ra 4 .1 3 se m u e s tra un e je m p lo . L n é l se d e fin e la c la s e Mi E n t e r o ,
c o n flic tiv o s. C o m o c o n se c u e n c ia . J a v a n o p e rm ite la h e re n c ia m ú ltip le : sin e m b a r e m p le a d a c o m o c la s e e s tá n d a r a lo la rg o d e l te x to . L a c la s e Mi E n t e r o s e c o m p o r
g o . p re se n ta u n a a lte rn a tiv a lla m a d a in terfa z. ta <lc fo rm a id é n tic a a la c la s e p re d e fin id a d e J a v a i n t e g e r . p e ro a d e m á s p o d rá
u sa rse s ie m p re q u e s e re q u ie ra la m a n ip u la c ió n d e o b je to s C o m p a r a b l e s .
F.n la lín ea .3. e n la q u e la c la s e d e c la ra q u e im p le m e n ta la in terfu z . s e u s a la
4.5 La interfaz p a la b ra c la v e i m p l e m e n c s e n lu g ar d e e x t e n d s . L a c la s e p u e d e c o n te n e r to d o s
los m é to d o s q u e d e s e e , p e ro e n tre e llo s d e b e n fig u ra r lo s lista d o s e n la in te rfa z . L a
F n J a s a la í n t e r f a c e e s la c la s e m á s a b s tra c ta p o sib le . C o n s is te só lo e n m é to d o s in te rfa z se im p le m e n ta e n tre las lín e a s 23 y 30 N ó te se q u e e s o b lig a to rio im p le
p ú b lic o s a b stra c to s y a trib u to s p ú b lic o s \ fin ales. m e n ta r e x a c ta m e n te n u l a n n tix lo in d ic a d o e n la in terfa z. P o r e llo , e s to s m éto d o s
S e d ic e q u e u n a c la s e im p le m e n ta u n a in to rta / si d e fin e to d o s lo s m é to d o s ab s tie n e n c o m o p a rá m e tro u n o b je to C o m p a r a b l e en lu g a r d e u n o b je to K i E n t e r o .
tra c to s d e la in te rfa z . U n a c la s e q u e im p le m e n ta u n a in tc r la / s e c o m p o rta c o m o si l ’n a c lase que im p lem en ta u n a interfaz p u ede se r e x ten d id a a su v ez. siem p re que
h u b ie s e e x te n d id o u n a c la s e a b stra c ta e s p e c ific a d a p o r la in terfa z n o s e a final. A sí. c o m o Mi E n t e r o n o e s fin al, p o d ría se r e x te n d id a p o sterio rm en te.
l-ij p rin c ip io , la d ife re n c ia fu n d a m e n ta l e n tr e u n a in te rfa z y u n a c la s e ab stra c ta
e s q u e . a u n q u e a m b a s e s p e c ific a n c ó m o d e b e n c o m p o rta rs e la s su b c la se s, la in ter-
1 package Soporte;
l'az n o p u e d e d u i n in g ú n d e ta lle a c e rc a d e la im p le m e n ta c ió n d e lo s m é to d o s ni de 2
lo s a trib u to s L a c o n se c u e n c ia d e e s ta s re s tric c io n e s e s q u e la e x is te n c ia d e v arias 3 ta n a l p u b l ic c l a s s M iEntero impiements comparable
in te rfa ces n p re s e n ta i<>' m is m o s p ro b le m a s p o te n c ia le s q u e la h e re n c ia m ú ltip le 4 {
5 ZZ C o n s t r u c t o r
D e e s te m o d o , m ie n tra s q u e u n a c ia s e p u e d e e x te n d e r s ó lo a o tra c la s e b a se , s í que
6 p u b lic M iEntero( in t x '
p u e d e im p lc m e n ta r a v a ria s in terfa ces. 7 ( v a l o r ~ x; )
8
9 / / A igunon método»
10 public S tring to S trin g t >
4.5.1 Especificación d e una interfaz 11 ( rotura In to g er.toStrIngt v a l o r >; }
12
S in tá c tic a m e n te , n a d a e s m á s s e n c illo q u e e s p e c ific a r u n a in te rfa z. L a in te rfa z tie 13 public in t intV alorl }
n e la a p a rie n c ia d e u n a d e c la ra c ió n d e c la s e , s a lv o q u e e m p le a la p a la b ra c la v e 14 ( re tu rn valor; I
15
n t e r f a r e . C o n s is te e n u n a lista d o m é to d o s q u e d e b e s e r p o ste rio rm e n te im p le-
16 p u b lic boolean oq u alsf O bjoct Ider )
m e n ta d o s. U n e je m p lo e s la in te rfa z C o o ip a r a b i e , m o s tra d a e n la F ig u ra 4 .1 2 y 17 <
e m p le a d a v a ria s v e c e s a l o la r g o d e l tex to . 18 return I d e r i n s t a n c e o f I n t e g e r &&
L a in te rfa z c o m p a r a b l e e s p e c ific a d o s m é to d o s q u e c u a lq u ie r su b c la se su y a 19 v a l o r *= ( ( K í E n c e r o ) I d e r ) . v a l o r ;
20 )
d e b e im p le m e n ta r: c o m p a r a y m e n o r Q u e . c o m p a r a s e c o m p o r ta c o m o e l m é to d o 21
S t r i n g c o n p a r e T o . O b s e rv e q u e n o e s n e c e s a r io e s p e c ific a r q u e e s to s m éto d o s 22 / / Im pleiaentando la í n t e r l a r
so n p ú b lic o s (m e d ia n te p u b l i c ) > a b s tra c to s (m e d ia n te a b s t r a c t ) . C o m o e sto 23 p u b l i c i n t coirparat Comparable I d e r t
e s tá fo rz a d o e n lo s m é to d o s d e u n a in te rfa z , e s ta s p a la b ra s c la v e s p u e d e n , v d e b e n , 24
25 return v a lo r < ( ( M i E n t e r o ) I d e r ) . v a l o r ? -1 :
se r o m itid a s.
26 v a l o r *• ( (MlEr.terol I d e r ) . v a l o r ? 0 : 1 ;
27 |
28
1 packagc so porte;
29 p u b l i c b o o le a n menorQue( Comparable I d e r )
2 30 ( r e t u r n v a l o r <( ( M i E n t e r o ) I d e r I . v a l o r ; I
3 public : n te r £ a c e Camparabío 31
4 ( 32 / / A trib u to s
5 i n t roirparai Comparable Id e r ) : // S i m il a r a conparoTo 33 prívate int valor;
6 b o o lea n menorQue( Comparable I d e r ); 34 )
7 )
Figuro 4 13 La c la s e M i E n t e r o (versión prelim inar), q u e im p le m e n to \a Interfaz
F ig u ro 4 . 12 Interfaz C om p a r a b 1e C o m p a ra b le .
A d e m á s, c u a lq u ie r c la s e q u e im p le m e n te u n a in te rfa z p u e d e c x ic n d e r ta m b ié n 4.5.3 V arias interfaces
a o tra c la s e . P«»r e je m p lo , p o d ría m o s h a b e r e sc rito
C o m o y a h e m o s m e n c io n a d o a n te rio rm e n te , u n a c la s e p u e d e im p le m e n ta r varias
p u b l i c c l a s s M iE ntero e x te n d s l n t e g e r im plem ents Com parable in te rfa c e s y la s in ta x is p a ra h a c e rlo e s m u y se n c illa . U n a c la s e im p le m e n ta \a r ia s
in te rfa c e s si c u m p le lo s sig u ie n te s re q u isito s:
E s to s e r ía in c o rre c to , s ó lo p o rq u e l n t e g e r e s u n a c la s e fin al q u e n o p u e d e e x te n
1. e n u m e ra la s in te rfa c e s q u e im p le m e n ta y
d erse .
2. d e fin e im p le m e n ta c io n e s p a ra to d o s lo s m é to d o s d e d ic h a s in terfa ces.
1 l.l soporte directo de métodos y clases genérico* se encuentra en h actualidad bajo una lueite eonsidcr
Figuro 4.15 La clase M iE n te r o . q u e Im p le m e n to dos Interfaces ampliar para ello el lenguaje con la palabra clave g e ner i c. Actualmente la técnica descrita en esta sección es I;
1 / / C1 a n o C e l d a M e m o r i a 1 / / o r d o n a c i o n P o r I n s e r c i ó n : o r d e n a c i ó n d e l v e c t o r a.
2 //O b je c t leerl ) --> Devuelve e l v a l o r guardado 2 I I Forma p a r t e d e l a c l a s e E s t r u c t u r a s D a t o s . O r d e n a c i ó n
3 / / v o i d # * c i i b i r ( O b j e c t x-*-> x e n a l m a c e n a d o 3 / / E l p a q u e te Im porta S o p o rte.*
4 4
5 publ i c c l a s s CeldaMenor ;a 5 p r í v a t e s t a t i c v o id o rd e r-a c ío n P o rln serc io n ! Comparable [ ] a )
6 { 6
7 / / Métodos p ú b l ic o s 7 for! int p = 1; p < a . length: p-- )
8 p u b l i c Otoject l e e r ( ) ( r e tu r n valorC uar dado; ) 8
9 p u b l i c v o i d e s c r i b i r » O b j e c t xO v a l o r A l m a c e n a d o = x ; ) 9 i n t j = p;
10 10 Comparable tmp * a ( p |:
11 / / R epresentación in te rn a y privada de datos 11
12 p r i v a t e O b j e c t v a l o r Almacenado; 12 for! ; j > 0tmp.m enorOue( a[ j - 1 1 >¿ j
13 ) 13 «I j ) ■ a[ j - 1 1;
14 ai j ] = tsnp;
Figuro 4 16 Clase genérica C eldaM em or i a
15
16
Bibliografía
4 .7 . ¿ C u á l e s la d ife re n c ia e n tr e la s c la s e s fin a le s y e l re s to d e c la s e s ? ¿ P a ra
q u é se e m p le a n la s c la s e s fin a le s? L o s sig u ie n te s lib ro s d e s c rib e n lo s p rin c ip á is g e n e ra le s d e l d e s a rro llo d e l so ftw are
4.X. ¿Q u é e s un m é to d o a b stra c to ? o rie n ta d o a o b je to s:
4 .9 . ¿Q u é e s u n a c la s e a b stra c ta ?
1. B . M ey er. O b jet t <)n e n ie ti S o ftw a r e C o n str u c tio n . P re n tic e -H a ll. E n g lc-
4.1(1. ¿Q u é e s u n a in terfa /.? ¿ E n q u é s e d ife re n c ia u n a in te rfa z d e u n a c la s e a b s-
w ix x l C liffs. N J < 19X8).
ira c ta ? ¿ C ó m o d e b e n s e r lo s c o m p o n e n te s d e u n a in te rfa z ?
4 .1 1. ¿ C ó m o se im p lc m c n ta n e n J a v a lo s a lg o ritm o s g e n é ric o s? 2. B. B o o c h . O b je c t-O r ie n te d D e s ig n a n d A n a ly s is w u h A p p lic a tio n s. 2 * e d ..
B e n ja m ín C u m m in g s. R cd w tx x l C ity . C a lif. (1 9 9 4 )
Análisis de algoritmos
E n l a P a n e I h e m o s v is to c ó m o la p ro g ra m a c ió n o rie n ta d a a o b je to s pued e
a y u d a r e n e l d is e ñ o e im p le m e n ta c ió n d e g ra n d e s siste m a s. É sta e s. sin e m
b a rg o . la m ita d d e la h isto ria.
G e n e ra lm e n te u tiliz a m o s u n o rd e n a d o r p o rq u e n e c e sita m o s p ro c e s a r g ra n c a n
tid a d d e d a to s . C u a n d o e je c u ta m o s u n p ro g ra m a so b re u n a g ra n c a n tid a d d e d a to s
d e b e m o s e s ta r s e g u ro s d e q u e e l p ro g ra m a te rm in a d e n tr o d e un p l a / o ra z o n a b le
E sto e s in d e p e n d ie n te , e n la m a y o ría d e lo s c a s o s , d e l len g u aje d e p ro g ram ació n uti
lizad o . e in c lu so d e la m e to d o lo g ía e m p le a d a (ta le s c o m o p m c e d im e n ta l u o rie n ta d a
a o b je to s).
U n a lg o r iin u >e s un c o n ju n to d e in s tru c c io n e s c la ra m e n te e sp e c ific a d a s q u e el
o rd e n a d o r d e b e s e g u ir p a ra re s o lv e r un p ro b le m a . U n a v e z q u e s e h a d a d o u n a lg o
ritm o p a ra re s o lv e r u n p ro b le m a y s e h a probad»* q u e e s c o rre c to , e l sig u ie n te p aso
es d e te rm in a r la c a n tid a d d e re c u rs o s , ta le s c o m o tie m p o y e s p a c io , q u e e l a lg o rit
m o re q u e rirá p a ra su a p lic a c ió n . E ste p a s o se lla m a a n á lis is d e a l y o ritm o s. U n a l
g o ritm o q u e n e c e s ita v a rio s g ig a b y te s d e m e m o ria p rin c ip a l n o e s ú til e n la m a y o
ría d e la s m á q u in a s a c tu a le s , a u n q u e s e a c o m p le ta m e n te c o rre c to .
E n e s te c a p ítu lo v erem o s:
ra
l*.l p ro b le m a J e d e s c a r g a r u n fic h e ro J e In te rn e t n o s sirv e c o m o e je m p lo S u
su g ie re q u e las c u r s a s lin e a l. ÍX/V lo g AT). c u a d rá tic a y c ú b ic a re p re se n ta n tie m p o s p o n g a m o s q u e h a y u n re tra s o in ic ia l J e 2 se g u n d o s (p a ra e s ta b le c e r la c o n e x ió n ),
J e e je c u c ió n e n o rd e n d e c re c ie n te J e p re fe re n c ia . d e s p u é s J e l c u a l la d e s c a rg a se Ile s a a c a b o a l .h K scg. E n to n c e s. m e l ta m a ñ o
del fic h e ro e s d e V k ilo h x tc s . e l tie m p o d e d e s c a rg a v ie n e d e s c rito p o r la fó rm u la
71V t = V 1 .6 * 2 . lis ta e s u n a /u n c ió n lin e a l. P o d e m o s s e r q u e la d e s c a rg a d e un
fic h e ro d e 8 0 K ta r d a ría a p ro x im a d a m e n te 52 se g u n d o s, m ie n tra s q u e d e s c a rg a r un
fic h e ro e l d o b le d e g ra n d e t I 6 ( l k l c o n s u m iría a lre d e d o r d e 10 2 se g u n d o s, es d e c ir
c a s i e l d o b le . E sta p ro p ie d a d , p o r la c u a l e l tie m p o d e e je c u c ió n e s e s e n c ia lm e n te
p ro p o rc io n a l al ta m a ñ o d e la e n tra d a , c a ra c te riz a a un a lg o r itm o lin e a l, y e s e l e s
c e n a rio m á s fa v o rab le.
C o m o p u e d e s e r s e e n las g rá fic a s, a lg u n a s d e las c u rv a s n o lin e a le s co n d u c e n
a tie m p o s d e e je c u c ió n m a y o re s E s to in d ic a , e n p a rtic u la r, q u e un a lg o ritm o lineal
es m u c h o m e jo r q u e u n o c ú b ic o
E ste c a p ítu lo tra ta v a ria s c u e s tio n e s im p o rtan tes:
• ¿ E s im p o rta n te e s ta r s ie m p re s o b r e la c u r s a m á s fa v o ra b le ?
• ¿ C u á n to m e jo r e s u n a c u rv a q u e o tra ?
• ¿ C ó m o d e c id im o s so b re q u é c u r s a se e n c u e n tra u n a lg o ritm o p a rtic u la r?
• ¿ C ó m o d is e ñ a m o s a lg o ritm o s q u e e v ite n e s ta r s o b re la s c u r s a s n u la s ’
U n a fu n c ü m c u b ic a e s u n a fu n c ió n c u y o té r m in o d o m in a n te e s N m u ltip lic a
d o p o r a lg u n a c o n s ta n te . P o r e je m p lo . I 0 Y ’ ♦.% * + 40,V + 8 0 e s u n a fu n c ió n c u b i
TanuAo «Ic l.i entrad* (V)
ca IX: ig u al m a n e ra , u n a fu n c ió n c u a d rá tic a tie n e c o m o té rm in o d o m in a n te .V
p o r a lg u n a c o n s ta n te , y u n a fu n c ió n lin e a l tie n e c o m o té r m in o d o m in a n te \ p o r
Figuro 5 . 1 T iem pos d e e je c u c ió n p o r a ta m a ñ o s d e e n t r a d a p e q u e ñ o s
u n a c o n s ta n te . (H N lo g V ) re p re se n ta u n a fu n c ió n c u y o té rm in o d o m in a n te e s .V
v e c e s e l lo g a ritm o d e N . El lo g a ritm o e s u n a fu n c ió n q u e c re c e le n ta m e n te : p o r
e je m p lo , e l lo g a ritm o d e 1 .0 0 0 .0 0 0 (e n b ase 2» e s s ó lo 2 0 . L a fu n c ió n lo g aritm o
c re c e m á s le n ta m e n te q u e la r a í / c u a d ra d a , la r a í / c ú b ic a , o c u a lq u ie r r a í / E l lo
g a ritm o s e e s tu d ia e n m a y o r p ro fu n d id a d e n la S e c c ió n 5 .5
D adas d o s fu n c io n e s, u n a c u a lq u ie ra p u e d e se r m e n o r q u e la o tr a e n u n p u n to
d a d o , p o r lo q u e e n g e n e ra l n o tie n e s e n tid o afirm a r, p«*r e je m p lo , q u e h V )<(/*( V >.
Ni» o b sta n te , n o so tro s m e d im o s e l ín d ice d e c re c im ie n to d e las fu n cio n es. E s to viene
ju s tific a d o p o r tre s ra/.ones. P rim ero , p ara fu n cio n es c ú b ic a s , c o m o la m o s tra d a en
la fig u r a 5 .2. c u a n tío N e s I (100 e l v a lo r d e la fu n c ió n e s tá d e te rm in a d o casi c o m
p le ta m e n te p o r e l té rm in o cúbico. E n la fu n c ió n 10,V + N ~ * 4 0 V ♦ SO. p ara
,V= I (too. e l v a lo r e s 10.001 (r ío OSO. d e l c u a l 1 0 .0 0 0 .0 0 0 .0 0 0 e s d e b id o al térm in o
I0 V . S i u tiliz á ra m o s s o lo e l té rm in o c ú b ic o j u r a e stim a r e l v alo r to tal d e la fu n
c ió n . obtendrían»»* u n e rro r d e . ap ro x im a d a m e n te , e l 0.01 p»x c ie n to . P ara un V su
fic ien tem e n te g ra n d e , e l val«*r d e la fu n c ió n e s ta c o m p le ta m e n te d e te rm in a d o p o r su
té rm in o d o m in a n te (el s ig n ific a d o d e l té rm in o s u fic ie n te m e n te g r a n d e v a ría para
c a d a fu n c ió n ).
L a se g u n d a ra z ó n p o r la c u a l m e d im o s la la s a d e c re c im ie n to d e las (u n cio n es
e s q u e e l v a lo r e x a c to d e l c o e fic ie n te d e l té rm in o d o m in a n te no se c o n se rv a al
c a m b ia r d e m á q u in a (a u n q u e los v a lo re s re la lix o s »k e s te c o e fic ie n te p a ra fu n c io
n es d e c re c im ie n to id é n tic o p u e d e n se rlo ). P o r e je m p lo , la c a lid a d d e l c o m p ila d o r
p o d ría te n e r g ra n in flu e n c ia s o b re e s ta c o n sta n te . Y te rc e ro , lo s \a l o r e s p e q u e ñ o s
t a m a ñ o d e la e n t r a d a ( N I d e W g e n e ra lm e n te n o so n im p o rta n te s. P ara 2 0 . la f ig u ra 5.1 m u e s tra q u e lo-
d m lo s a lg o ritm o s te rm in a n a n te s d e 5 m s 1.a d ife re n c ia e n tr e e l m e jo r y e l p eo r
F ig u ro 5 .2 T ie m p os d e e j e c u c ió n p o r a t a m a ñ o s d e e n t r o d a m a y o r e s a lg o ritm o e s m e n o r q u e u n p a rp a d e o d e o jo s
U tiliz a re m o s la n o ta c ió n O p a ra re p re s e n ta r e l ín d ic e d e c re c im ie n to . P o r
Función Nom bre
e je m p lo , e l tie m p o d e e je c u c ió n d e u n a lg o ritm o c u a d rá tic o se d e s c r ib e c o m o
( X N ) (p ro n u n c ia d o « d e l o rd e n d e «V al c u a d ra d o » ). I.a n o ta c ió n o n o s p e rm ite C onstante
c
e s ta b le c e r un o rd e n re la tiv o e n tr e fu n c io n e s, c o m p a ra n d o lo s té rm in o s d o m in a n
log N Logarítm ica
tes. L a n o ta c ió n O s e d is c u te m á s fo rm a lm e n te e n la S e c c ió n 5.4.
P a ra v a lo re s p e q u e ñ o s d e N ( p o r e je m p lo , a q u e llo s m e n o re s q u e 3 0 ). la F ig u lo g 2 N Log arítm ica a l c u a d ra d o
ra 5.1 m u e s tra q u e h a y p u n to s p a ra lo s c u a le s u n a c u r v a e s in ic ia lm e n te m e jo r
N Lineal
q u e o tr a , a u n q u e a la p o s tre e s to d e ja d e s e r c ie r to . P o r e je m p lo , la c u rv a c u a d r á
tic a e s m e jo r in ic ia lm e n te q u e la c u r v a ( X N lo g N >. p e r o c u a n d o N se h a c e s u f i 1V log N NkogN
c ie n te m e n te g ra n d e e l a lg o r itm o c u a d rá tic o p ie r d e e s ta v e n ta ja . P a r a v a lo re s p e N 2 C u a d rá tica
q u e ñ o s d e l ta m a ñ o d e la e n tr a d a , e s d ifíc il c o m p a r a r la s fu n c io n e s p o rq u e la s
N ' C ú b ica
c o n s ta n te s m u ltip lic a tiv a s lle g a n a s e r m u y s ig n ific a tiv a s . L a fu n c ió n V + 2 .5 0 0
e s m a y o r q u e N ~ c u a n d o N e s m e n o r q u e 5 0 . A p a r tir d e u n p u n to , la fu n c ió n 2* Exponencial
lin e a l s e rá s ie m p re m e n o r q u e la fu n c ió n c u a d rá tic a . L o q u e e s m á s im p o rta n te ,
p a ra ta m a ñ o s p e q u e ñ o s d e la e n tr a d a lo s tie m p o s d e e je c u c ió n s o n in s ig n if ic a n Figuro 5.3 Funciones e n ord en c re c ie n te d e ín d ice d e crecim iento
te s . p o r l o q u e n o te n e m o s q u e p r e o c u p a m o s d e e llo s . P o r e je m p lo , la F ig u ra 5 . 1
m u e s tra q u e c u a n d o N e s m e n o r q u e 2 5 . to d o s lo s a lg o r itm o s d e s c r ito s p a r a e s te
p ro b le m a se e je c u ta n e n m e n o s d e 10 m s. P o r lo ta n to , c u a n d o lo s ta m a ñ o s d e 5.2 Ejem plos d e tiem po d e ejecu ción
la e n tr a d a s o n m u y p e q u e ñ o s u n a re g la p rá c tic a e s u tiliz a r e l a lg o r itm o m á s s e n d e algoritmos
c illo .
L a F ig u ra 5 .2 m u e s tra c la ra m e n te la s d ife re n c ia s e n tr e la s d ife re n te s c u rv a s E sta s e c c ió n e x a m in a tre s p ro b le m a s. T am bién e s b o z a p o sib le s so lu c io n e s y d e te r
c u a n d o el ta m a ñ o d e la e n tra d a e s g ra n d e . U n a lg o ritm o lin eal re su e lv e un p ro b lem a m in a q u é c la s e d e tie m p o d e e je c u c ió n te n d rá n lo s c o rre s p o n d ie n te s a lg o ritm o s,
d e ta m a ñ o 10.000 e n u n a p e q u e ñ a fra c c ió n d e seg u n d o . El a lg o ritm o ( X N log N ) sin d a r p ro g ra m a s d e ta lla d o s . El o b je tiv o d e la se c c ió n e s p ro p o rc io n a r a l lecto r
u tiliz a a p ro x im a d a m e n te d ie z v e c e s e s te tie m p o . N ó te se q u e las d ife re n c ia s d e c ie rta in tu ic ió n s o b re e l a n á lis is d e a lg o ritm o s. L a p ró x im a s e c c ió n p ro p o rc io n a
tie m p o d e p e n d e n d e las c o n s ta n te s in v o lu c ra d a s y , p o r ta n to , p o d ría n se r m a y o re s m á s d e ta lle s d e e s te p ro c e s o , m ie n tra s q u e la S e c c ió n 5 .4 d a u n e n fo q u e fo rm al al
o m e n o re s. A l d e p e n d e r d e e s ta s c o n s ta n te s , un a lg o ritm o ( X N lo g A l p o d ría se r p ro b le m a d e l a n á lisis d e alg o ritm o s.
m á s rá p id o q u e u n o lin eal p a ra ta m a ñ o s d e la e n tra d a b a sta n te g ra n d e s . S in e m b a r L o s p ro b le m a s q u e e x a m in a m o s e n e s ta se c c ió n son:
g o . e n la p rá c tic a , p a ra a lg o ritm o s d e c o m p le jid a d ló g ic a sim ila r, lo s a lg o ritm o s
lin e a le s s u e le n s e r m e jo re s q u e lo s a lg o ritm o s ( X N lo g N >. ELEMENTO M Í N I M O DE UN VECTOR
E s to n o e s c ie r to , sin e m b a r g o , p a ra lo s a lg o r itm o s c u a d rá tic o s y c ú b ic o s . D a d o un v e c t o r d e N e l e m e n t o s , e n c o n t r a r e l e l e m e n t o m á s p e q u e ñ o
L o s a lg o r itm o s c u a d rá tic o s so n c a s i s ie m p re im p ra c tic a b le s c u a n d o e l ta m a ñ o de
PUNTOS M Á S C E R C A N O S E N EL P L A N O
la e n tra d a e s m a y o r q u e u n o s p o c o s m ile s , y lo s a lg o r itm o s c ú b ic o s so n im p ra c ti
D a d o s N p u n t o s e n u n p l a n o ( e s d e c ir , u n c o n / u n / o d o p a r o s d e c o o r
c a b le s p a ra ta m a ñ o s d e la e n tr a d a ta n p e q u e ñ o s c o m o u n o s p o c o s c ie n to s . P ara
d e n a d a s x -y ). e n c o n t r a r e l p a r d e p u n t o s q u e s e e n c u e n t r a n m á s c e r
v e r e s to , in te n te e je c u ta r e l a lg o r itm o o í d e n a c i o n P o r l n s e r c i o n d e la S e c
ca n o s.
c ió n 4 .6 c o n 1 0 0 .0 0 0 e le m e n to s . E sté p re p a ra d o p a ra e s p e r a r un la rg o r a to p o rq u e
la o rd e n a c ió n p o r in s e rc ió n e s u n a lg o ritm o c u a d rá tic o . L o s a lg o ritm o s d e o rd e n a PUNTOS COLINEALES EN EL PLAN O
c ió n q u e s e d is c u te n e n e l C a p ítu lo X se e je c u ta n e n u n tie m p o s u b c u a d r á iic o (e s D a d o s N p u n t o s e n u n p l a n o (e s d e c ir , e n u n s i s te m a d e c o o r d e n a d a s
d e c ir, m e jo r q u e ( X N ' ) ) . lo q u e h a c e q u e la o rd e n a c ió n d e g ra n d e s v e c to re s s e a x-y). d e t e r m i n a r si e x is te n tro s q u e s e e n c u e n t r e n e n li n e a r e c t a
p ra c ticab le.
L a c a ra c te rís tic a m á s n o to ria d e e s ta s c u rv a s e s q u e lo s a lg o ritm o s c u a d rá tic o s E l p ro b le m a d e l e le m e n to m ín im o e s fu n d a m e n ta l e n c o m p u ta c ió n . P u e d e se r
v c ú b ic o s n o p u e d e n c o m p e tir c o n lo s re s ta n te s p a ra ta m a ñ o s d e la e n tra d a ra z o n a re s u e lto d e la s ig u ie n te m anera:
b le m e n te g ran d es. P o d e m o s im p le m e n ta r un a lg o ritm o c u a d rá tic o e n u n len g u aje
1. M a n te n e r u n a v a riab le m i n q u e a lm a c e n e e l e le m e n to m ínim o.
m á q u in a a lta m e n te e fic ie n te e im p le m e n ta r d e fo rm a s im p le u n a lg o ritm o lin e a l, y
2. In ic ia l iz a r m i n a l p rim e r elem en to .
el a lg o ritm o c u a d rá tic o s e g u irá p e rd ie n d o . In c lu so lo s tr u c o s d e p ro g ra m a c ió n m ás
3. H a c e r u n re c o rrid o scc u c n c ia l d e l v e c to r, a c tu a liz a n d o m i n d e fo rm a a d e
in te lig e n te s n o p u e d e n h a c e r q u e s e a rá p id o un a lg o ritm o in e fic ie n te . P o r ta n to ,
cuada.
a n te s d e p e rd e r tie m p o in te n ta n d o o p tim iz a r u n c ó d ig o , d e b e m o s tr a ta r d e o p tim i
z a r e l a lg o ritm o . L a F ig u ra 5 .3 o rd e n a e n o rd e n c re c ie n te d e ta s a d e c re c im ie n to El tie m p o d e e je c u c ió n d e e s te a lg o r itm o s e rá lin e a l, e s d e c ir ( X N ). p u e s re p e
d is tin ta s fu n c io n e s q u e d e s c rib e n c o m ú n m e n te e l tie m p o d e e je c u c ió n d e lo s a lg o tim o s u n a c a n tid a d fija d e tr a b a jo p o r c a d a e le m e n to d e l v e c to r. U n a lg o ritm o li
ritm o s. n e a l e s to d o lo b u e n o q u e p o d e m o s e sp e ra r. E s to e s d e b id o a q u e te n e m o s q u e
e x a m in a r c a d a e le m e n to d e l v e c to r, u n p ro c e s o q u e in e x o ra b le m e n te re q u ie re un (m o stra d o s e n n e g rita). C o m o u n s e g u n d o e je m p lo , p a ra la e n tra d a 11. 3. 4. - 2 .
tie m p o lineal. —I . 6 } . la re s p u e s ta e s 7 . y e n e s te c a s o la su b s e c u e n c ia a b a rc a lo s ú ltim o s c u a tro
El p ro b le m a d e l p a r d e p u n to s m á s c e rc a n o e s un p ro b le m a fu n d a m e n ta l e n las ele m e n to s.
a rte s g rá fic a s q u e p o d e m o s re s o lv e r d e la sig u ie n te m an era: E n J a v a , lo s v e c to re s e m p ie z a n e n e l ín d ic e c e ro , p o r lo q u e un p ro g ra m a e n i
Ja v a re p re s e n ta ría la e n tra d a c o m o u n a s e c u e n c ia d e s d e A0 b a s ta A¡y |. É ste e s un M
1. C a lc u la r la d is ta n c ia e n tre c a d a p a r d e p u n to s.
d e ta lle d e p ro g ra m a c ió n p o r lo q u e n o fo rm a p arte del d is e ñ o d e l alg o ritm o .
2. C o n s e rv a r la m ín im a d is ta n c ia .
A n te s d e d is c u tir lo s d is tin to s a lg o ritm o s p a ra e s te p ro b le m a , m e re c e la p e n a Q
S in e m b a rg o é s te e s un c á lc u lo c o s to s o , y a q u e h a y M .V - 1 ) 2 p a re s d e p u n c o m e n ta r e l c a s o d e g e n e ra d o e n e l c u a l to d o s lo s e n te ro s so n n eg a tiv o s. E l e n u n
t o s 1. P o r ta n to , hay a p ro x im a d a m e n te N ~ p a re s d e p u n to s. E x a m in a r to d o s e sto s c ia d o d e l p ro b le m a e s ta b le c e u n a s u m a m á x im a d e c e ro p a ra e s te c a s o . U n o p o d ría s
p a re s v c a lc u la r la d is ta n c ia m ín im a e n tre e llo s su p o n d rá u n tie m p o c u a d rá tic o . p re g u n ta rs e p o r q u é lo h a c e m o s a sí. e n v ez d e d e v o lv e r sim p le m e n te e l m a y o r (e s c
E x iste u n a lg o ritm o m e jo ra d o q u e se e je c u ta e n tie m p o ( X N lo g N ) q u e tra b a ja d e c ir, e l m e n o r e n m a g n itu d ) e n te r o n e g a tiv o . L a ra z ó n e s q u e la s u b s e c u e n c ia va- ^
e v ita n d o e l c á lc u lo d e to d a s la s d is ta n c ia s . E x iste a d e m á s un a lg o ritm o d e l q u e se c ía . fo rm a d a p o r n in g ú n e n te ro , ta m b ié n e s u n a su b s e c u e n c ia . y su s u m a e s c la r a
su p o n e q u e ta r d a u n tie m p o O i N ) . E sto s d o s ú ltim o s a lg o ritm o s u tiliz a n su tile s m e n te c e ro . E s to e s a n á lo g o a l h e c h o d e q u e e l c o n ju n to v a c ío e s su b c o n ju n to de
o b s e rv a c io n e s p a ra p ro p o rc io n a r re s u lta d o s d e fo rm a m á s rá p id a , y e s tá n m á s a llá c u a lq u ie r c o n ju n to . F.s im p o rta n te se r c o n s c ie n te d e q u e e l c a s o v a c ío e s siem p re
del a lc a n c e d e e s te texto. u n a p o sib ilid a d y q u e e n m u c h a s s itu a c io n e s n o e s u n c a s o e sp e c ia l.
F.l p ro b le m a d e lo s p u n to s c o lin e a le s e s im p o rta n te e n m u c h o s a lg o ritm o s g r á E l p ro b le m a d e la su b s e c u e n c ia d e s u m a m á x im a e s in te re sa n te , p rin c ip a l- H
fic o s. E s to s e d e b e a q u e la e x is te n c ia d e p u n to s c o lin e a le s in tro d u c e u n c a s o d e m e n te , p o rq u e h a y m u c h o s a lg o ritm o s p a ra re s o lv e rlo ; y e l re n d im ie n to d e e s to s d
g e n e ra d o q u e re q u ie re un tra ta m ie n to e s p e c ia liz a d o . P u e d e s e r re s u e lto d ir e c ta a lg o ritm o s v a ría ra d ic a lm e n te . E sta s e c c ió n d is c u te tre s d e e sto s a lg o ritm o s. F.l "
m e n te e n u m e ra n d o to d o s lo s g ru p o s d e tre s p u n to s . E sta s o lu c ió n e s a ú n m á s p rim e ro e s un a lg o ritm o in m e d ia to d e b ú sq u e d a e x h a u stiv a . L a m e n ta b le m e n te .
c o s to s a c o m p u ta c io n a lm e n te q u e la d e l p ro b le m a d e l p a r d e p u n to s m á s c e rc a n o , ta m b ié n e s m u y in e fic ie n te . F.l se g u n d o e s u n a m e jo ra so b re e l p rim e ro re a liz a d a a q
y a q u e e l n ú m e ro d e g ru p o s d ife re n te s d e tre s p u n to s e s N i N IH N - 2 ) /6 ( u tili p a rtir d e la o b s e rv a c ió n d e u n h e c h o sim p le . E l te rc e ro e s un a lg o ritm o m u y e fi- d
z a n d o un ra z o n a m ie n to s im ila r a l u s a d o p a ra e l p ro b le m a d e l p a r d e p u n to s m á s c íe n te , p e r o n a d a o b v io . P ro b a re m o s q u e su tie m p o d e e je c u c ió n e s lineal.
c e rc a n o ). E s to n o s in d ic a q u e e l e n fo q u e d ir e c to n o s lle v a ría a un a lg o r itm o c ú b i E l C a p ítu lo 7 p re s e n ta un c u a r to a lg o r itm o , c o n u n tie m p o d e e je c u c ió n
c o . E x iste ta m b ié n u n a e s tra te g ia m á s in te lig e n te (ta m b ié n m á s a llá d e l a lc a n c e de O iN lo g N ). D ic h o a lg o ritm o n o e s ta n e fic ie n te c o m o e l a lg o ritm o lin e a l, p e r o s í J
e s te te x to ) q u e re s u e lv e e l p ro b le m a e n u n tie m p o c u a d rá tic o (y m e jo ra s a d ic io n a b a sta n te m á s e fic ie n te q u e lo s o tro s d o s. s ie n d o u n e je m p lo típ ic o d e la c la s e de
les d e l m ism o s o n u n á re a d e c o n tin u a in v e stig a c ió n ). a lg o ritm o s c o n tie m p o d e e je c u c ió n 0 ( N log ¿V). L a s g rá fic a s m o s tra d a s e n las F i
L a sig u ie n te se cció n tr a ta u n p ro b le m a q u e ilu stra la d ife re n c ia e n tr e a lg o rit g u ra s 5.1 y 5 .2 s o n re p re se n ta tiv a s d e e s to s c u a tr o alg o ritm o s.
m os lin e a le s , c u a d rá tic o s y c ú b ic o s . M u e s tra ta m b ié n c ó m o e l re n d im ie n to d e e s
to s a lg o ritm o s s e c o m p a ra c o n u n a p re d ic c ió n m a te m á tic a . P o r ú ltim o , d e s p u é s de
d is c u tir las id e a s b á sic a s, s e e s tu d ia la n o ta c ió n O d e m a n e ra m á s form al.
5.3.1 El algoritm o 0 (N 3) obvio
(fl
>=() public static int subsecuenciaSumaMaxima( int ( ) a 1
V
II
~ 1 < = -Vv
>
P ~ I /> int s u m a Ma x = 0 ;
int s u m a A c t u a l = 0;
Figuro 5.7 Los su bsecuen cias utilizabas e n e l le o re m a í>.3. L a se cu e n cia a e s d e p
h asta q tiene u n a sum o q u e es. c o m o m ucho, igual q u e lo subsecuen- int i = 0. j = 0: j < a .length: j** >
c ia d e / a q En la p a rte d e la izquierda la se c u e n cia d e o q n o e s la I
m áxim a (por e l Teorem a 5 2). En lo p arte d e re c h a la se c u e n cia d e a q i sumaActual *= a [ j );
y a h a s*do co m p ro b ad a
i £ ( s u m a A c t u a l > s u ma Ma x l
su ma Ma x = s u m a A c t u a l ;
P a ra c a d a i. s e a A , ¿ la p r im e r a s e c u e n c ia q u e sa tis fa g a S , , < 0 . P u ta ñ se c ln i = i;
s e c F i n = j;
e e s . p a r a c u a lq u ie r i ^ /> y p ^ </. A . , „ o b ie n n o e s u n a su b s e c u e n c ia
m á x im a , o e s ig u a l a u n a s u b s e c u e n c ia m á x im a xa c o n sid e ra d a . oís© i í ( sumaActual < 0 >
S i /» = /. e n la m e s e s a p lic a b le e l T e o re m a 5 .2 . E n o tr a c a sa , c a m a e n e l 22 i - j *• 1:
23 sumaActual = 0;
T e o re m a 5 .2 . te n e m o s S¡ ¿ = S , r j. P u e sta q u e j e s e l m e n o r ín d ic e p a r a el
24
c u a l S ¡'j < 0 . s e s ig u e q u e S , r . ¡ > 0 . P a r ta n ta . Sr (/ $ S , ,r S i q > j 25
íilu s tr a d a e n la p a n e d e la iz q u ie rd a d e la F ig u ra 5.7), e n to n c e s p a r el 26
T e o re m a 5 .2 A , ,t n a e s u n a s u b s e c u e n c ia m á x im a , n i la e s A r <f. E n o tra 27 return s uma Ma x ;
c a so , c a m a s e m u e str a e n la p a r te d e r e c h a d e la h g u r a 5 .7 . la s u b s e c u e n 28
7 \ N ) s o iF ( N ) ) Ti l ( W » = I .OOOrY * = I 0 0 0 /L V ).
El crecim iento d e K N ) es < quo e l crecim ien to d e R N )
P o r ta n to , e l tie m p o d e e je c u c ió n d e u n p ro g ra m a c ú b ic o se in c re m e n ta p o r 1.000
F igu ro 5.9 Signlficodo d e los O ferentes funciones d e crecim iento (a s u m ie n d o u n ta m a ñ o N su fic ie n te m e n te g r a n d e > c u a n d o la e n tra d a se in c re m e n ta
d ie z. IX- fo rm a e s p e c ífic a , te n e m o s q u e / ( H>V) = «•( l(W » log < l ( W ). C u a n d o e x
Figura 5.4 Figura 5.5 Figura 7.18 Figura 5.8
p a n d im o s o b te n e m o s
N CHN-) O( N-) ( X V log N) O (N )
7( IO N >= lOc-V lo g <IO N >= lOr.V lo g N + lO rN log 1 0 = I07L V > + c 'N .
10 0.00103 0.00045 0.00066 0.00034
d o n d e c = IQ r log 10. C u a n d o N se h a c e m u y g ra n d e , e l c o c ie n te Ti IO N ) T( \ » se
100 0.47015 0.01112 0.00486 0.0CO63 v a a p ro x im a n d o a 10. p u e s c 'N T ( N ) 5 (1 0 log 10) lo g N s e v a h a c ie n d o c a d a vez
m á s p e q u e ñ o al in c re m e n ta r N. P o r c o n s ig u ie n te , si e l a lg o r itm o e s c o m p e titiv o
1.000 448 .77 1,1233 0.05843 0.00333 c o m p a ra d o c o n u n o lin eal p a ra u n N m u y g ra n d e , se g u irá s ie n d o c o m p e titiv o p ara
u n N un p o c o m ay o r.
10.00D NA 111.13 0.68631 0.03042 ¿ S ig n ific a to d o e s to q u e u n a lg o ritm o c u a d rá tic o o c ú b ic o n o e s útil ’ L a re s
p u e s ta e s n o . E n a lg u n o s c a s o s , e l a lg o ritm o c o n o c id o m á s e fic ie n te e s c u a d rá tic o
100 000 NA NA 8.01130 029832
o c ú b ic o . E n o tro s, e l a lg o ritm o m á s e fic ie n te e s in c lu so p e o r (e x p o n e n c ia l). A d e
------------------------------------ .
m á s . c u a n d o e l ta m a ñ o d e l a e n tra d a e s p e q u e ñ o , c u a lq u ie r a lg o ritm o e s ú til, y fr e
Figuro 5.10 Tiempos d e e je c u c ió n ob servad os (e n segundos) d e los diferentes a l c u e n te m e n te lo s a lg o ritm o s q u e n o so n a sin tó tic a m e n te e fic ie n te s s o n fá c ile s de-
goritm os p a ra e l c á lc u lo d e la su b secu eo cio d e sum a m áxim a. p ro g ra m a r. F in a lm e n te , hay q u e s e ñ a la r q u e u n a b u e n a fo rm a d e e v a lu a r u n a lg o
ritm o lin eal c o m p le jo e s c o m p a ra r su c o m p o r ta m ie n to c o n u n a lg o ritm o d e b ú s
p o r un fa c to r d e 10. E s to s e c o n firm a d e fo rm a a p ro x im a d a e x a m in a n d o e l c r e q u e d a e x h a u stiv a , l - i S e c c ió n 5 .8 d is c u te o tra s lim ita c io n e s d e l m o d e lo O.
c im ie n to e n lo s tie m p o s d e e je c u c ió n d e sd e N = 1 0 0 h a s ta 1.0 0 0 e n la F ig u ra 5 .1 0 .
R e c u e rd e q u e n o e s p e ra m o s u n a re s p u e sta e x a c ta , sin o u n a a p ro x im a c ió n ra z o n a
b le . T a m b ié n e s p e ra ría m o s q u e p a ra V = 1 0 .0 0 0 , h u b ie ra o tro c re c im ie n to p o r m il 5.5 Logaritmos
e n e l tie m p o d e eje c u c ió n .
E l re s u lta d o se ría q u e e l u so d e u n a lg o ritm o c ú b ic o re q u e riría , m á s o m en o s,
L a lista d e fu n c io n e s d e ta s a s d e c re c im ie n to típ ic a s in c lu y e v a ria s fu n c io n e s q u e
d o s se m a n a s d e tie m p o d e c ó m p u to . E n g e n e ra l, si e l ta m a ñ o d e la e n tra d a se in c o n tie n e n lo g a r itm o s. E sta s e c c ió n d e s c rib e c o n m á s d e ta lle e l fu n d a m e n to m a te
c re m e n ta p o r u n fa c to r / . e n to n c e s e l tie m p o d e e je c u c ió n d e u n a lg o ritm o c ú b ic o
m á tic o e n e l q u e s e b a s a n lo s lo g a ritm o s. L a sig u ie n te se c c ió n ilu stra c o m o a p a re
se in c re m e n ta a p ro x im a d a m e n te p o r u n fa c to r f \
c e n e n u n sim p le alg o ritm o .
P o d e m o s r e a liz a r c á lc u lo s s im ila re s p a ra lo s a lg o r itm o s c u a d r á tic o s y li El I
E m p e z a re m o s c o n la d e fin ic ió n fo rm a l p a ra s e g u ir c o n u n a se rie d e c o n s e
n e a le s. P a ra e l a lg o r itm o c u a d rá tic o . a s u m im o s q u e 7 N ) = c .N 2. Se s ig u e q u e
c u en cias.
/1 I O N ) = <1 !0 A '): . Y a l e x p a n d ir, o b te n e m o s va
h i in tu ic ió n d e la d e m o s tr a c ió n e s q u e u n a su m a d is c re ta s e p u e d e Ih
U n e n te r o s h o r t d e 16 b its re p re s e n ta lo s 6 5 .5 3 6 e n te ro s e n e l ra n g o d e
a p r o x im a r c o n u n a in te g r a l {co n tin u a ). L a d e m o str a c ió n u tiliza u n a c o n s
- 3 2 .7 6 8 a 3 2 .7 6 7 . E n g e n e ra l, l i b its so n s u fic ie n te s p a ra re p re s e n ta r 2 H e n te ro s
tr u c c ió n p a r a m o s tr a r q u e la s u m a //% p u e d e s e r a c o la d a su p e r io r e inte-
d ife re n te s. P o r ta n to , e l n ú m e r o d e b its H n e c e s a r io p a ra re p re se n ta r A 'e n te ro s c o n
i* d x
se c u tiv o s s a tis fa c e la e c u a c ió n 2 fí ^ N . O b te n e m o s e n to n c e s H > lo g .V. d e d o n d e r io r m e n te p o r | — . co n lím ite s a p r o p ia d o s . h> \ d e ta lle s se ven e n e l
s e sig u e q u e e l n ú m e ro d e b its m ín im o es f lo g .V ]. (A q u í fX 1 e s la fu n c ió n te c h o y
re p re s e n ta e l e n te r o m á s p e q u e ñ o m a y o r o ig u a l q u e X . 1.a fu n c ió n s u e lo c o rr e s E je r c ic io 5.17. / / v e s c o n o c id o c o m o e l n ú m e r o a r m ó n ic o N -ésim o .
p o n d ie n te . ^.Y J . re p r e s e n ta e l m a y o r e n te r o m e n o r o ig u al q u e X.)
I.a p ró x im a s e c c ió n m u e s tra c ó m o e l p rin c ip io d e s u c e s iv a s d iv is io n e s p o r la
m ita d c o n d u c e a u n a lg o ritm o d e b ú sq u e d a e fic ie n te .
D UPLICACIONES REPETIDAS
E m p e z a n d o c o n X = 1. ¿ c u á n t a s v e c e s d e b e s e r X d u p l i c a d o a n t e s
O e q u e s e a m ayor q u e N? 5.6 Problem a d e la búsqueda estática
S u p o n g a m o s q u e e m p e z a m o s c o n I e u ro y lo d u p lic a m o s c a d a a ñ o . ¿ C u á n to U n u s o im p o rta n te d e la s c o m p u ta d o ra s e s la b ú sq u e d a d e d a to s . S i lo s d a to s no
ta rd a ría m o s e n a h o rra r u n m illó n d e e u ro s ? E n e s te c a s o , d e s p u é s d e un a ñ o te n p u e d e n c a m b ia r (p o r e je m p lo , si e s lá n a lm a c e n a d o s e s u n C D -R O M ), d e c im o s q u e
d ría m o s 2 e u ro s : d e s p u é s d e 2 a ñ o s. 4 e u ro s : d e s p u é s d e 3 a ñ o s. 8 e u ro s , e tc. En so n e stá tic o s. U n a b ú s q u e d a e s tá tic a a c c e d e a d a to s e s tá tic o s . El p ro b le m a d e la
g e n e ra l, d e s p u é s d e K a ñ o s te n d ría m o s 2* e u ro s , p o r lo q u e q u e re m o s e n c o n tr a r el b ú sq u e d a e s tá tic a se fo rm u la c o m o sigue:
m e n o r K q u e s a tis fa g a 2 K 2 .V. É sta e s la m is m a e c u a c ió n d e a n te s , p o r lo que
K = \ log N~\. D e sp u é s d e 2 0 a ñ o s, te n d ría m o s a lre d e d o r d e u n m illó n do e u ro s . El PROBLEMA DE LA BÚSQUEDA ESTÁTICA
p r in c ip io d e la s d u p lic a c io n e s re p e tid a s a firm a q u e e m p e z a n d o e n I. p o d e m o s d u D a d o u n e n t e r o X y u n v e c t o r A . d e v o l v e r Id p o s i c ió n d e X e n A o u n o
p lic a r s ó lo log N 1 v e c e s a n te s d e a lc a n z a r N . i n d i c a c i ó n d e q u e n o e s t á p r e s e n t e . Si X a p a r e c e m á s d e u n a v e z .
d e v o l v e r c u a l q u i e r a p a r ic ió n . El v e c t o r A n u n c a s e r á m o d i f i c a d o .
SU C E SIV A S D IVISIO NES P O R LA MI TAD
U n e je m p lo d e b ú sq u e d a e s tá tic a e s b u s c a r a u n a p e rs o n a e n e l listín te le fó n i
E m p e z a n d o c o n X = N . si N s e d i v i d e d e fo r m o r e p e t i d o p o r l a m ita d .
¿ c u á n t o s v e c e s h a y q u e d iv id ir p a r a h a c e r N m e n o r o ig u a l q u e /? co . I.a e fic ie n c ia d e u n a lg o r itm o d e b ú sq u e d a e s tá tic a d e p e n d e d e si e l v ecto r
d o n d e s e b u s c a e s tá o n o o rd e n a d o . E n e l c a s o d e l listín te le fó n ic o , b u sc a r p o r
n o m b re e s fá c il, p e r o b u s c a r p o r n ú m e ro d e te lé fo n o e s a lg o d e s e s p e ra n te (a l m e
Si la d iv is ió n re d o n d e a a l e n te r o m á s c e rc a n o (o e s d iv is ió n re a l, n o e n te ra )
n o s p u ra lo s h u m a n o s ). E n e s la se c c ió n , e x a m in a m o s a lg u n a s s o lu c io n e s a l p ro b le
te n e m o s e l m ism o p ro b le m a q u e c o n la s d u p lic a c io n e s re p e tid a s , e x c e p to q u e a h o
m a d e b ú sq u e d a estática.
ra n o s m o v e m o s e n e l s e n tid o o p u e sto . U n a v e z m á s la re s p u e s ta e s Tlo g N 1 ite ra
c io n e s . S i la d iv is ió n re d o n d e a h a c ia a b a jo , la re s p u e sta s e r ía [ l o g A 'J. U i d ife re n
c ia p u e d e v e rse e m p e z a n d o c o n A = 3 . Se n e c e s ita n d o s d iv isio n e s, a m e n o s q u e la 5.6.1 Búsqueda secuencial
d iv isió n re d o n d e e h a c ia a b a jo , e n c u y o c a s o só lo s e n e c e sita una.
M u c h o s d e lo s a lg o ritm o s e x a m in a d o s e n e s te te x to te n d r á n lo g a ritm o s e n su s C u a n d o e l v e c to r n o e s tá o rd e n a d o , te n e m o s p o c a s a lte rn a tiv a s fu e ra d e u n a b ú s
tie m p o s d e e je c u c ió n d e b id o al p r in c ip io d e s u c e s iv a s d iv is io n e s p o r Ia m ita d . q u e d a s e c u e n c ia / lin e a l, re c o rrie n d o to d o e l v e c to r s e c u e n c ia l m e n te h a s ta q u e se
D ic h o p rin c ip io n o s d ic e q u e u n a lg o ritm o e s (X lo g A ') si la rd a u n tie m p o c o n s ta n e n c u e n tre e l e le m e n to b u sc a d o . 1.a c o m p le jid a d d e l a lg o r itm o se a n a liz a d e tres
te ( ( X I )) e n d iv id ir e l ta m a ñ o d e l p ro b le m a p o r u n a fra c c ió n c o n sta n te (q u e g e n e fo rm a s. P rim e n ), d a re m o s e l c o s te d e u n a b ú sq u e d a s in é x ito . D e sp u é s v e re m o s el
ra lm e n te e s 1 /2 ). E s to se d e d u c e d ire c ta m e n te d e l h e c h o d e q u e h a b rá (X lo g A ) c o s te e n e l c a s o p e o r d e u n a b ú sq u e d a c o n éx ito . F in a lm e n te , v e re m o s e l c o s te e n
e l c a s o m e d io d e u n a b ú sq u e d a c o n é x ito . I-I a n a li /a r d e fo rm a se p a ra d a lo s c a so s 1 /••
2 * R ealiza l a búsqueda b i n a r i a e stán d a r
e n lo s q u e la b ú sq u e d a tie n e é x ito e s típ ic o . T a m b ié n e s típ ic o e l q u e la s b ú s q u e
3 * u t i l i z a n d o dos comparaciones por n iv e l.
d a s sin é x ito c o n s u m a n m á s tie m p o q u e la s b ú sq u e d a s c o n é x ito (s im p le m e n te 4 * « e x c e p t i o n Element-oNoEr.contrado s i e s a p r o p i a d o .
p ie n s e e n la ú ltim a v e / q u e p e rd ió a lg o e n s u c a sa ). P a ra la b ú sq u e d a se c u e n c ia l. 5 * S r e tu r n ín d ic e donde s e e n c u e n tra e l elem ento.
el a n á lisis e s m u y fácil. 6 •/
7 public static int b u s q u e d a 3 i n a r i a ( C om parable [ ] a.
U n a b ú sq u e d a sin é x it o re q u ie re e x a m in a r c a d a u n o d e lo s e le m e n to s d e l v e c
8 Com parable x 1 throvrs ElementoNoEncontrado
tor. a s í q u e e l tie m p o s e rá Í X V ). E n e l p e o r c a s o , u n a b ú sq u e d a c o n é x ito ta m b ié n 9 {
re q u ie re e x a m in a r c a d a e le m e n to d e l v e c to r p o rq u e p o d ría m o s n o e n c o n tr a r e l e le 10 int i n i c i o = 0;
m e n to h a s ta la ú ltim a p o sic ió n . L u e g o e l tie m p o d e e je c u c ió n e n e l c a s o p e o r e n 11 int fin = a.len g th - 1;
ta m b ié n lin e a l. E n p ro m e d io , sin e m b a rg o , s ó lo b u s c a m o s e n la m ita d d e l v e c to r. 12 int medio:
13
E s d e c ir, p a ra c a d a b ú sq u e d a c o n é x ito e n la p o s ic ió n í . hay u n a b ú s q u e d a c o n é x i 14 w hilel i n i c i o <= f i n I
to c o rre s p o n d ie n te e n la p o sic ió n V - i (s u p o n ie n d o q u e e m p e z a m o s a n u m e ra r 15 [
d e sd e I ). S in e m b a rg o . N ! 2 s ig u e s ie n d o Ü ( N ). C o m o m e n c io n a m o s a n te rio rm e n te 16 medio = ( inicio » fin ) / 2;
e n e s te m ism o c a p ítu lo , to d o s e s to s té rm in o s e n n o ta c ió n O d e b e ría n ser. m á s c o r 17
18 i f C a ( medio ) . compara! x ) < 0 >
re c ta m e n te . té rm in o s (-). S in e m b a r g o , e l u s o d e la n o ta c ió n O e s m á s pop u lar.
19 i n i c i o = m e d i o * 1;
20 el se i f ( a ( medio ] . compara! x ) > 0 )
21 f i n = medio - 1 ;
5.6.2 Búsqueda binaria 22 else
23 r e t u r n medio;
24 1
S i e l v e c to r d e e n tra d a e s tá o rd e n a d o , e n to n c e s e x is te u n a a lte rn a tiv a a la b ú s q u e 25
d a se c u e n c ia l. la b ú s q u e d a b in a ria . L a b ú sq u e d a b in a ría se re a liz a d e s d e la m ita d 26 t h r o w new E l e m e n t o N o E n c o n t r a d o < ' L a b ú s q u e d a b i n a r í a f a l l a * l :
d e l v e c to r, e n v ez d e d e s d e e l final. 27 >
E n lo d o m o m e n to , m a n te n d re m o s d o s v a ria b le s i n i c i o y f i n . q u e d e lim ita n Figuro 5.11 Búsqueda binaría b á sica q u e distingue tres casos.
la p a rte d e l v e c to r e n la q u e e l e le m e n to , si a p a re c e , d e b e e n c o n tra rse . In ic ia l
m en te. e l ra n g o e s d e s d e 0 h a s ta -V I . S i i n i c i o e s m a y o r q u e f i n . sa b e m o s
q u e e l e le m e n to n o e s tá p re s e n te , a s í q u e la n z a m o s u n a e x c e p c ió n . E n o tro c a so , b ú sq u e d a s e c u e n c ia l req u ie re e n p ro m e d io 5 0 0 c o m p a ra c io n e s ap ro x im a d a m e n te .
ig u a la m o s la v a ria b le m e d i o a l p u n to m e d io e n e l ra n g o a c tu a l (re d o n d e a n d o h a E n m e d ia , la b ú sq u e d a b in a ría re q u ie re 8 ite ra c io n e s e n u n a b ú sq u e d a c o n é x ito
c ia a b a jo si e l ra n g o tie n e un n ú m e ro p a r d e e le m e n to s ) y c o m p a ra m o s e l e le m e n to (u tiliz a n d o la fó rm u la a n te rio r). Y a q u e c a d a ite ra c ió n u tiliz a 1.5 c o m p a ra c io n e s
q u e e s ta m o s b u sc a n d o c o n e l e le m e n to e n la p o sic ió n m e d i o . S i h a y é x ito , h e m o s e n p ro m e d io (u n a s v e c e s I y o irá s 2). e l to ta l e s d e 12 c o m p a ra c io n e s p a ra u n a
a c a b a d o . S i e l e le m e n to q u e e s ta m o s b u s c a n d o e s m e n o r q u e e l e le m e n to e n la p o b ú sq u e d a c o n é x ito . L a b ú sq u e d a b in a r ía m e jo ra a ú n m á s e n e l c a s o p e o r o c u a n d o
sic ió n m e d i o e n to n c e s d e b e ría e s ta r e n e l ra n g o d e s d e i n i c i o h a s ta m e d i o - 1 . Si la s b ú s q u e d a s n o tie n e n é x ito .
e s m a y o r, e n to n c e s d e b e e n c o n tr a rs e e n e l r a n g o d e s d e m e d i o * 1 h a s ta f i n . E n la S i q u e re m o s h a c e r la b ú sq u e d a b in a ria a ú n m ás rá p id a , te n e m o s q u e h a c e r m á s
F ig u ra 5 . 1 1. la s lín e a s d e la 18 a la 21 m o d ific a n e l r a n g o p o sib le , ese n c ia lm e n te a ju s ta d o e l b u c le m á s in tern o . U n a e s tra te g ia p o sib le e s e lim in a r la c o m p ro b a c ió n
d iv id ié n d o lo p o r la m ita d . P o r e l p rin c ip io d e d iv is io n e s s u c e s iv a s p o r la m itad , (im p líc ita ) e n e l c a s o d e u n a b ú sq u e d a c o n é x ito d e l b u c le m á s in te rn o y re d u c ir el
sa b e m o s q u e e l n ú m e ro d e ite ra c io n e s s e rá 0 ( l o g Af >. ra n g o a un so lo e le m e n to e n to d o s lo s c aso s. E n to n c e s p o d e m o s u tiliz a r u n a c o m
E n u n a b ú sq u e d a sin é x ito , e l n ú m e ro d e ite ra c io n e s d e l b u c le e s [ l o g V J + I p ro b a c ió n m á s fu e ra d e l b u c le p a ra d e te r m in a r si e l e le m e n to b u sc a d o e s tá e n el
E sto e s d e b id o a q u e e l r a n g o d e b ú sq u e d a s e d iv id e p o r la m ita d (re d o n d e a n d o v e c to r o n o . c o m o s e m u e s tra e n la F ig u ra 5 .1 2 . S i el e le m e n to q u e e s ta m o s b u s
h a c ia a b a jo si e l ra n g o tie n e un n ú m e ro p a r tic e le m e n to s ) e n c a d a ite ra c ió n A ñ a c a n d o e n la F ig u ra 5 .1 2 n o e s m a y o r q u e e l e le m e n to e n la p o s ic ió n m e d i o , e n to n
d im o s I p o rq u e e l ú ltim o ra n g o a b a rc a c e ro e le m e n to s . E n u n a b ú sq u e d a c o n é x i c e s e s tá e n e l ra n g o q u e in c lu y e la p o s ic ió n m e d i o . C u a n d o s a lim o s d e l b u c le , el
to . e l c a s o p e o r c o n s is te e n Llog .V J ite ra c io n e s, p o rq u e e n e l c a s o p e o r re d u c im o s ra n g o e s I . y p o d e m o s c o m p r o b a r si e s tá a h í e l e le m e n to b u scad o .
la p a n e d e v e c to r h a s ta u n ú n ic o e le m e n to . E n e l c a s o m e d io p re c is a re m o s só lo E n e l a lg o r itm o m e jo ra d o , e l n ú m e ro d e ite ra c io n e s e s sie m p re L log V j. pues
u n a ite ra c ió n m e n o s . E s to se d e b e a q u e la b ú sq u e d a d e la m ita d d e los e le m e n to s sie m p re s e re d u c e e l r a n g o a la m ita d , p o sib le m e n te re d o n d e a n d o . E l n ú m e ro de
n o s c o n d u c e al c a s o p e o r, u n c u a rto d e lo s e le m e n to s a h o rra n u n a b ú sq u e d a , y só lo c o m p a ra c io n e s n e c e s a ria s e s s ie m p re L log iV j + I.
u n o e n tr e 2 ' e le m e n to s a h o rra rá i ite ra c io n e s c o n re s p e c to a l c a s o p eo r. H e m o s L a b ú sq u e d a b in a r ía e s s o rp re n d e n te m e n te d e lic a d a d e im p le m e n ta r. E l E je rc i
p u e s d e c a lc u la r u n a m e d ia p o n d e ra d a , c a lc u la n d o la s u m a d e u n a s e r ie fin ita . El c io 5 .5 ilu stra a lg u n o s e rr o re s c o m u n es.
re s u lta d o e s q u e e l tie m p o m e d io d e e je c u c ió n p a ra c a d a b ú sq u e d a e s 0 (|o g N ). O bserv e q u e p a ra v alo res .V p e q u eñ o s, c o m o v a lo re s m e n o re s q u e b. p u e d e no
En e l E je rc ic io 5 .1 9 s e p id e c o m p le ta r e s te c á lc u lo . m e re c e r la p e n a la b ú sq u e d a b in aría. U tiliza m á s o m e n o s e l m ism o n ú m e ro d e c o m
P a ra v a lo re s d e N ra z o n a b le m e n te g ra n d e s , la b ú s q u e d a b in a r ía se e je c u ta de p a ra c io n e s p a ra u n a b ú sq u e d a c o n é x ito típ ic a , p e ro tiene la so b re c a rg a d e la línea
fo rm a m á s e fic ie n te q u e la b ú sq u e d a se c u e n c ia l. P o r e je m p lo , si N e s 1.000. la 19 e n c a d a iteració n . E n realid ad , las ú ltim as ite ra c io n e s d e la b ú sq u e d a b in a ría pro-
1 /•• E sta s h ip ó te sis s o n b a sta n te re s tric tiv a s, d e m o d o q u e e s p o s ib le q u e e n la
2 * R e a l i z a l a búscju^óa b i n a r i a e s t á n d a r
p rá c tic a n u n c a n o s c o n v e n g a u tiliz a r u n a b ú sq u e d a in te rp o la d a . P ero e s in teresa n te
3 • u t i l i z a n d o ur . a c o m p a r a c i ó n p o r n i v e l .
4 • ^ e x c e p t i o n Elemer.toNoEr.contrado s i e s a p r o p i a d o . v e r q u e h a y m á s d e u n a fo rm a d e re s o lv e r u n p ro b le m a , y q u e n in g ú n alg o ritm o ,
5 •U r e t u r n í n d i c e donde s e e n c u e n t r a e l e l e m e n t o . in c lu s o la c lá s ic a b ú sq u e d a b in a ria , e s e l m e jo r e n to d a s la s situ a c io n e s.
6 •/ I.a id e a b á sic a d e la b ú sq u e d a in te rp o la d a c o n siste e n q u e e s ta m o s d is p u e s to s a
7 p u b l ic s t a t i c i n t b u s q u e d a E m a r r a { Comparable ( | a. Comparable x ) in v e rtir m á s tie m p o si c o n e llo c o n s e g u im o s u n a su p o s ic ió n m á s c e rte ra c o n re s
6 th ro w s ElementoNoEncontradc
p e c to a d o n d e p o d ría e n c o n tr a rs e e l e le m e n to . 1.a b ú s q u e d a b in a r ía u tiliz a sie m p re
9 f
10 if ( a . l e n g t h == 01 t h r o w e l p u n to m e d io . S in e m b a r g o , s e r ía a b su rd o b u s c a r a P a b lo A lv a r e z e n la m itad del
11 new E l e m e n t o N o E r . c o n t r a d o | "La búsqueda ha fallado" ); listín te le fó n ic o : a lg ú n sitio c e rc a n o a l p rin c ip io s e ría c la ra m e n te m á s a p ro p ia d o .
12 P o r ta n to , e n v e z d e m e d io , u tiliz a m o s p r ó x i m o p a ra in d ic a r e l p ró x im o e le m e n to
13 int i n i c i o ■ 0;
14 int íir. = a .le n g th - 1; al q u e a c c e d e re m o s.
15 int medio; V e a m o s a h o ra u n e je m p lo d e h a s ta q u é p u n to la b ú s q u e d a in terp o larla p o d ría
16 se r b u e n a . S u p o n g a m o s q u e e l ra n g o d e b ú sq u e d a c o n tie n e 1.000 e le m e n to s , el
17 w hile( inicio <f i n » e le m e n to m e n o r e n e l ra n g o e s 1 .0 0 0 . e l m a y o r e s 1 .0 0 0 .0 0 0 . y e s ta m o s b u sc a n d o
18
e l v a lo r 12.000. S i los e le m e n to s están u n ifo rm e m e n te d is trib u id o s , e n to n c e s p o
19 medio = ( i n i c i o - fir. ) / 2;
20 d e m o s e s p e ra r e n c o n tra rlo e n a lg ú n lu g a r c e rc a n o al d u o d é c im o e le m e n to . L a fó r
21 i t t a(medio ) . com para( x > < 0 ) m u la a p lic a b le es
22 i n i c i o = medio * 1 ;
23 else
x - a [ in ic io \
24 f i n = medio;
p r ó x im o = in ic io x ( f i n ~ m ic io - 11
25 n\fin | a \in ic io \
26
27 if (a | i n i c i o ) . comparal x ) == 0 >
28 return inicio; L l su s tra e r I es u n a ju ste té c n ic o q u e s e h a m o s tra d o p o s itiv o e n la p rá c tic a . C la ra
29 m e n te . e s te c á lc u lo e s m á s c o s to s o q u e e l c á lc u lo d e la b ú sq u e d a b in a ria . In v o lu
30 t h r o w new E le m e n t o N o E r.c o n tr a d o < ’ La b ú s q u e d a h a fallado" ).- c ra u n a d iv isió n e x tr a (la d iv is ió n p o r 2 e n la b ú sq u e d a b in a ría e s s im p le m e n te un
31 } d e s p la z a m ie n to d e u n b it. ig u a l q u e d iv id ir p o r 10 e s s e n c illo p a ra las p e rso n a s),
Fi gur a 5. 12 Búsqueda binario bás*ca q u e distingue do s cosos u n a m u ltip lic a c ió n y c u a tr o re s ta s. E sto s c á lc u lo s d e b e n s e r re a liz a d o s u tiliz a n d o
o p e ra c io n e s d e p u n to flo ta n te . U n a ite ra c ió n p o d ría in c lu so s e r m á s le n ta q u e la
g rcsu n len tam en te. U n o p u e d e a d o p ta r una e stra te g ia h íb rid a e n la c u a l e l b u cle de b ú s q u e d a b in a ría c o m p le ta . S in e m b a rg o , si e l c o s te d e e s ta s o p e ra c io n e s e s in s ig
b ú sq u e d a b in aria te rm in a c u a n d o e l ran g o e s p e q u e ñ o , a p lic á n d o se e n to n c e s n ific a n te c o m p a ra d o c o n e l c o s te d e a c c e d e r a u n e le m e n to , e n to n c e s n o e s im p o r
una b ú sq u e d a sec u c n c ia l p a ra te rm in a r. IV fo rm a sim ila r, la g e n te b u sc a e n un listín tan te; s ó lo d e b e m o s p re o c u p a m o s d e l n ú m e ro d e ite ra c io n e s.
te le fó n ic o d e fo rm a 110 secu en c ia l. l 'n a v e z q u e han re d u c id o e l ra n g o d e la b ú sq u e E n e l c a s o p e o r, c u a n d o lo s d a to s n o e s tá n u n ifo rm e m e n te d is trib u id o s , e l
d a a u n a c o lu m n a , re a liz a n u n a b ú sq u e d a se c u e n c ia l. 1.a b ú sq u e d a e n u n listín te le tie m p o d e e je c u c ió n p o d ría s e r lin e a l y lin io s lo s e le m e n to s p o d ría n te n e r q u e ser
fó n ico n o e s se c u e n c ia l. p e r o ta m p o c o e s b in aria . S e d isc u te e n la p ró x im a se cció n . e x a m in a d o s. E l E je rc ic io 5 .1 8 p id e c o n s tru ir u n o d e e s to s c a s o s . S in e m b a rg o , b a
j o la su p o s ic ió n d e q u e lo s e le m e n to s e s tá n ra z o n a b le m e n te d is trib u id o s , c o m o e n
u n listín te le fó n ic o , e l n ú m e ro m e d io d e c o m p a ra c io n e s e s O flo g lo g jV ). E sto s ig
5.6.3 Búsqueda interpolada n ific a q u e a p lic a m o s e l lo g a ritm o d o s v e c e s se g u id a s. P a ra .Y = 4 b illo n e s , log .V es
a p ro x im a d a m e n te 4 2 . y log lo g N e s m á s o m e n o s 5. P o r su p u e s to , hay a lg u n a s
I.a b ú sq u e d a b in a ría e s m u y rá p id a so b re un v e c to r e stá tic o o rd e n a d o . D e h e c h o , c o n sta n te s m u ltip lic a tiv a s o c u lta s e n la n o ta c ió n O . p e ro el lo g a ritm o ex tra pued e
e s ta n rá p id a q u e d ifíc ilm e n te p o d ría m o s u s a r a lg o m e jo r. S in e m b a rg o , u n m é to d o re d u c ir c o n sid e ra b le m e n te e l n ú m e ro d e ite ra c io n e s, m ien tras n o s e p re se n te un c a s o
d e b ú sq u e d a e s tá tic a q u e e s e n o c a s io n e s m á s rá p id o e s la b ú s q u e d a in te rju d a d a . m alo . S in e m b a rg o , p ro b a r e l re s u lta d o d e fo rm a rig u ro sa e s b a sta n te c o m p licad o .
P a ra q u e la b ú sq u e d a in te rp o la d a s e a p rá c tic a , d e b e n s a tis fa c e rs e d o s h ip ó te sis:
1. C a d a a c c e s o d e b e se r m u y c o s to s o c o m p a ra d o c o n u n a in s tru c c ió n típ ic a .
P o r e je m p lo , e l v e c to r p o d ría e s ta r e n un d is c o e n v e z d e e n m e m o ria p rin
5.7 Com probar el análisis d e un algoritmo
c ip al. y c a d a c o m p a ra c ió n re q u ie re u n a c c e s o a d isc o .
2. I .os d a to s a d e m á s d e e s ta r o rd e n a d o s d e b e n e s ta r ta m b ié n u n ifo rm em en te l 'n a v ez q u e h e m o s e fe c tu a d o e l a n á lis is d e un a lg o ritm o , q u e re m o s v e r si e s c o
d istrib u id o s. P o r eje m p lo , u n listín te le fó n ic o e s tá u n ifo rm e m e n te d istrib u i rre c to y ta n b u e n o c o m o sea p o sib le . U n a fo rm a d e h a c e rlo e s im p le m e n ta r el p ro
do. P o r e l c o n tra río , si lo s e le m e n to s d e la e n tra d a s o n { I. 2 . 4 . 8 . Ib . . . . |. g ra m a y v e r si e l tie m p o d e e je c u c ió n o b s e rv a d o e m p íric a m e n te se a ju s ta c o n el
e n to n c e s la d is trib u c ió n 110 se ría u n ifo rm e . tie m p o d e e je c u c ió n p re d ic h o p o r e l an álisis.
C u a n d o /V se in c re m e n ta |H»r u n fa c to r «le d ie z , e l tie m p o d e e je c u c ió n se e le v a h a c e tic ta c só lo c a d a 10 m s. O b s e rv e ta m b ié n q u e n o h a y u n a g ra n d ife re n c ia e n tre
e n u n ta c to r d e 10 e n lo s p ro g ra m a s lin e a le s , d e 10 0 e n lo s p ro g ra m a s c u a d rá tic o s ( H N ) y ( H N lo g N ). P o r su p u e s to , un a lg o ritm o ( H N lo g N ) e s tá m á s c e rc a d e se r
y d e 1.000 e n lo s c ú b ic o s . L o s p ro g ra m a s q u e se e je c u ta n e n u n tie m p o O IV lo g N ) lin eal q u e d e s e r c u a d rá tic o . F in a lm e n te , te n g a e n c u e n ta q u e la m á q u in a u tiliz a d a
ta rd a rá n a lg o m a s d e d ie z v e ces m á s e n la s m ism a s c irc u n sta n c ia s. E sto s a u m e n to s e n e l e je m p lo tie n e s u fic ie n te m e m o ria p a ra a lm a c e n a r 6 4 0 (KM) o b je to s «en e l c a s o
p u e d e n s e r d ifíc ile s d e o b s e rv a r si lo s té rm in o » d e o rd e n in fe rio r tie n e n c o e fic ie n de e s te e x p e rim e n to , e n te ro s ). S i e s to n o e s c ie r to e n su m á q u in a , e n to n c e s n o p o
te s re la tiv a m e n te g ra n d e s y \ n o e s su fic ie n te m e n te g ra n d e U n e je m p lo , e s e l s a l d rá re p n x lu c ir sim ila re s resu ltad o s.
to d e V * 10 a N = KM) e n e l tie m p o d e e je c u c ió n d e la s d ife re n te s im p lc m c n ta c io - L a p ró x im a s e c c ió n d is c u te a lg u n a s d e las lim ita c io n e s d e l a n á lis is b a sa d o en
n e s p a ra e l p ro b le m a d e l c á lc u lo d e la s u b s e c u e n c ia d e s u m a m á x im a . T a m b ié n la n o ta c ió n O
p u e d e se r d ifíc il d ife re n c ia r u n p ro g ra m a lin e a l d e u n o (H N lo g N i b a s á n d o s e lan
s ó lo e n la e v id e n c ia e m p íric a .
O tr o tru c o u tiliz a d o a m e n u d o p a ra v e rific a r si u n p ro g ra m a e s ( H F i N )) e s c a l
5.8 Lim itaciones del análisis O
c u la r lo s v a lo re s d e 7 'lV ) F i ;V) p a ra u n a s e r ie d e v a lo re s d e N (g e n e ra lm e n te e s
p a c ia d o s p o r m ú ltip lo s d e d o s ), d o n d e T I N ) e s e l tie m p o d e e je c u c ió n o b s e rv a d o L l a n álisis O e s u n a h e rra m ie n ta niu> e le c tiv a , p e ro e s im p o rta n te c o n o c e r su s lim i
e m p íric a m e n te . S i F i N ) e s u n a re s p u e sta a ju s ta d a al tie m p o d e e je c u c ió n , e n to n ta c io n e s C o m o y a se h a m e n c io n a d o , n o e s a p ro p ia d o p a ra p e q u e ñ a s c a n tid a d e s
c e s lo s v a lo re s c a lc u la d o s c o n v e rg e n a u n a c o n sta n te p o sitiv a . S i F i N ) e s u n a s o d e d a to s U«»n p e q u e ñ a s e n tra d a s , u tilic e e l a lg o r itm o m á s sim p le . T a m b ié n , p a ra
b re e s tim a c ió n . lo s v a lo re s c o n v e rg e n a c e ro S i F i N ) e s u n a s u b e s tim a c ió n , y p o r un a lg o ritm o p a rtic u la r, la e o n sia n lc im p líc ita e n la n o ta c ió n O p u e d e re s u lta r d e
la n ío e rró n e a , lo s v a lo re s d iv e rg e n . m a sia d o g la n d e e n la p ra c tic a P o r e je m p lo , si e l tie m p o d e e je c u c ió n d e u n a lg o
P o r e je m p lo , su p o n g a m o s q u e e s c rib im o s u n p ro g ra m a p a ra re a liz a r N b ú s q u e ritm o e s tá g o b e rn a d o p o r la fó rm u la 2V log N y o tr o tie n e u n tie m p o d e eje c u c ió n
d a s a le a to ria s u tiliz a n d o e l a lg o r itm o d e b ú s q u e d a b in a ria . Y a q u e c a d a b ú s q u e d e l .(MK>V. e n to n c e s e l p rim e r a lg o r itm o s e rá p ro b a b le m e n te m e jo r, a u n q u e su lasa
d a e s lo g a r ítm ic a , e s p e r a m o s q u e e l tie m p o d e e je c u c ió n to ta l d e l p ro g r a m a sea d e c re c im ie n to s e a m ay o r. I-a s c o n s ta n te s g ra n d e s p u e d e n e n tr a r e n ju e g o c u a n d o
( H N log /V). L a F ig u ra 5 .1 3 m u e s tra lo s v a lo re s o b se rv a d o s p a ra e s ta ru tin a , p a ra u n a lg o ritm o e s e x c e s iv a m e n te c o m p le jo . T a m b ié n a p a re c e n p o rq u e n u e stro a n á li
v a n o s ta m a ñ o s d e la e n tra d a , s o b r e u n a c o m p u ta d o ra re a l L a ta b la m u e s tra q u e la sis n o tie n e e n c u e n ta las c o n s ta n te s y p o r ta n to n o p u e d e d if e re n c ia r c o s a s c o m o
ú ltim a c o lu m n a e s la c o lu m n a c o n v e rg e n te , c o n firm a n d o , p o r ta n to , n u e s tra p re a c c e so s a m e m o ria (q u e n o so n c o s to s o s ) d e a c c e s o s a d is c o ( q u e típ ic a m e n te son
d ic c ió n . m ie n tra s q u e lo s n ú m e n * c re c ie n te s p a ra T N su g ie re n q u e ( H N > e s una m u c h o s m ile s d e v e c e s m á s c o s to s o s ). N u e s tro a n á lisis su p o n e m e m o ria in fin ita ,
su b e s tim a c ió n . \ lo s v a lo re s rá p id a m e n te d e c re c ie n te s d e T N : su g ie re n q u e p e ro e n la s a p lic a c io n e s q u e in v o lu c ra n g ra n d e s c o n ju n to s d e dati*s. la fa lta d e m e
CHN~) e s u n a s o b re e stim a c ió n . m o ria su fic ie n te p u e d e s e r un s e n o p ro b lem a.
A v e c e s, a u n c u a n d o las c o n sta n te s y los té rm in o s n o d o m in a n te s s o n teñid»»' e n EIC
O b se rv e e n p a rtic u la r q u e n o te n e m o s u n a c o n v e rg e n c ia a b so lu ta m e n te d iá f a
c u en ta , s e p ru eb a e m p íric a m e n te q u e e l a n álisis e r a u n a so b re e stim a c ió n E n tal c a oc
n a. U n p ro b le m a e s q u e e l re lo j q u e u tiliz a m o s p a ra m e d ir e l tie m p o d e l p ro g ra m a roe
si». e l a n á lisis d e b e se r a ju s ta d o (g e n e ra lm e n te m e d ia n te u n a observ a c ió n m á s in teli
g e n te ) O tra s v eces la c o ta d e tie m p o d e eje c u c ió n e n p ro m e d io p u e d e se r sig n ifica-
liv a in e n te m e n o r q u e la c o ta e n e l c a s o pe.*r. y pi»f ta n to n in g u n a m ejo ra e n la c o ta prí
T iem po d e CPU T es p o sib le. H ay m u c h o s a lg o ritm o s c o m p lic a d o s p a ra lo s c u a le s la c o ta e n e l c a s o ve»
TiN TiN2 T i N lo g ;V ) :o
(rru h ieg u n d o s) pet»r se a lc a n z a p a ra u n a m ala en tra d a . |»cro e n la p rá c tic a e > g en e ra lm e n te u n a m v
' se<
b re c stim a c io n I)»»' ejem pli*s M*n lo s m éto d o s d e o rd e n a c ió n Shells»»rt v q u ic k so rt
10 00 0 100 001000000 0.00000100 0 00075257 (a m b o s se d is c u te n e n e l C a p ítu lo X).
S in e m b a rg o , las c o ta s e n e l c a s o p e o r s o n n o rm a lm e n te m á s fá c ile s d e o b te n e r EK
20 000 200 0.01000000 0.00000050 000069990 mi
q u e su s c o n tra p a rtid a s e n e l c a s o m e d io . P o r e je m p lo , h a s ta la fe c h a n o se h a p o d i
2
s*e
d o o b te n e r u n a n á lis is m a te m á tic o d e l tie m p o d e e je c u c ió n e n e l c a s o m e d io de
4 0 000 440 0.01100000 0.00000027 0.00071953 S h e llso rt. A v e c e s , in c lu s o d e f in ir c o n e x a c titu d lo q u e sig n ific a - c a s o m e d io - es
d ifíc il U tiliz a m o s u n a n álisis e n e l c a s o p e o r p o rq u e e s c o n v e n ie n te , y ta m b ié n
80 000 930 0 01162500 000000015 000071373
p o rq u e , e n la m a y o ría d e lo s c a s o s , e l a n á lis is e n e l c a s o p e o r e s b a sta n te sig n ific a
160 000 1 960 001225000 tiv o . A l re a liz a r e l a n á lis is , fre c u e n te m e n te p<*dremi»s d e c ir si ta m b ié n s e ria a p li
00 0 0 0 0 0 0 8 0 00070860
c a b le a l c a s o p ro m e d io .
320 000 4 170 0.01303125 000000004 000071257
Figura 5.13 Tiem po d e e je cu ció n em pírico po ro N búsquedas binorlos en un vecto r F.n e s te c a p ítu lo se h a in tro d u c id o e l a m p lio le m a d e l a n á lis is d e a lg o ritm o s y se
do N
elem entos h a m o s tra d o q u e d e c is io n e s a lg o rítm ic a s g e n e ra lm e n te in flu y e n m á s e n e l tie m p o
d e e je c u c ió n d e u n p ro g ra m a q u e lo s tr u c o s d e p ro g ra m a c ió n . T a m b ié n s e h a m o s p r i n c ip i o d e d u p li c a c io n e s r e p e t id a s P rin c ip io p o r e l c u a l si e m p e z a m o s c o n I,
tra d o la e n o rm e d ife re n c ia e n tre lo s a lg o ritm o s lin e a le s y c u a d rá rte o s y s e h a v isto p o d e m o s m u ltip lic a r p o r 2 só lo un n ú m e ro lo g a rítm ic o d e v e c e s, h a s ta a lc a n
c ó m o lo s a lg o ritm o s c ú b ic o s so n . e n la m a y o r p a rte , in s a tisfa c to rio s . Se h a e x a m i z a r N.
n a d o un a lg o ritm o q u e p o d ría to m a rs e c o m o b a s e p a ra n u e stra p rim e ra e stru c tu ra p r i n c ip i o d e s u c e s iv a s d iv is io n e s p o r l a m ita d P rin c ip io p o r e l c u a l si e m p e z a
d e d ato s. L a b ú sq u e d a b in a n a s o p o rta d e fo rm a e fic ie n te o p e ra c io n e s e s tá tic a s (es m os con p o d e m o s d iv id u d e fo rm a re p e tid a p o r la m ita d so la m e n te u n n ú
d e c ir, b ú sq u e d a p e r o n o a c tu a liz a c ió n ), p ro p o rc io n a n d o p o r ta n to u n a b ú sq u ed a m e ro d e v e c e s lo g a rítm ic o , h a s ta a lc a n z a r I. S e u tiliz a p a ra o b te n e r ru tin a s de
lo g a rítm ic a e n e l c a s o p e o r. C a p ítu lo s p o s te rio re s d e l te x to e x a m in a n e s tru c tu ra s b ú sq u e d a lo g a rítm ic a ',
d e d a to s d in á m ic a s q u e so p o rta n e fic ie n te m e n te la s a c tu a liz a c io n e s ( ta n to in s e r s u h c u a d r á t i c o A lg o ritm o c u y o tie m p o d e e je c u c ió n e ' e s tric ta m e n te m e n o i que
c ió n c o m o e lim in a c ió n ). c u a d rá tic o . L l tie m p o d e e je c u c ió n p u e d e s e r e s c r ito c o m o »»(A ■).
L n e l p ró x im o c a p ítu lo d e fin im o s las e s tru c tu ra s d e d a to s y s u ' o p e ra c io n e s
p e rm itid a s. Ia m b ic n se d e tie n e e n a lg u n a s a p lic a c io n e s d e la s e s tru c tu ra s d e d a to s
y d is c u te su e fic ie n c ia . Errores com unes
1. E n e l c a s o d e b u c le s a n id a d o s , e l tie m p o to ta l e s fu n c ió n d e l p ro d u c to del
ta m a ñ o d e lo s b u c le s . E n e l c a s o d e b u c le s c o n se c u tiv o s, no.
Elem entos del juego
2. N o c u e n te sim p lem en te el n ú m e ro d e b u cles. D o s b u c le s a n id ad o s, c a d a uno
d e lo s c u a le s s e e je c u ta d e s d e I h asta A " . re p re s e n ta n un tie m p o <)( V 4 ).
a lg o ritm o lin e a l U n a lg o ritm o c u y o tie m p o d e e je c u c ió n c re c e c o m o Ü\ A >. S i el 3. N o e s c ríb a e x p re s io n e s c o m o 0 (2 A , : ) o 0 ( A ’" + Ar). S ó lo e s n e c e sa rio el
ta m a ñ o d e la e n tra d a a u m e n ta p o r un fa c to r f . e n to n c e s e l tie m p o d e e je c u c ió n té rm in o d o m in a n te , sin la c o n s ta n te m u ltip lic a tiv a .
ta m b ié n a u m e n ta p o r e l m is m o facto r. E s e l tie m p o d e e je c u c ió n m á s fav o ra 4. U tilic e ig u a ld a d e s c o n la n o ta c ió n O . Í2. e tc . N o e s c r ib a q u e e l tie m p o de
b le p a ra un alg o ritm o . e je c u c ió n e s > ( A \ ,?): e s to n o tie n e s e n tid o p o rq u e la n o ta c ió n O e s una
b ú sq u e d a b in a r ia E l m é to d o d e b ú sq u e d a u tiliz a d o c u a n d o e l v e c to r d e e n tra d a c o ta s u p e rio r. N o e s c ríb a q u e e l tie m p o d e e je c u c ió n e s < O i N ~):; si el
e s tá o rd e n a d o . L a s b ú s q u e d a s s e re a liz a n d e s d e la m ita d e n v e z d e s d e e l final. p ro p ó s ito es d e c ir q u e e l tie m p o d e e je c u c ió n e s e stric ta m e n te m e n o r q u e
L a b ú sq u e d a b in a ria e s lo g a rítm ic a p o rq u e e l r a n g o d e b ú sq u e d a se re d u c e a la c u a d rá tic o . u tilic e la n o ta c ió n o.
m itad e n c a d a iteració n . 5. U tilic e la n o ta c ió n 12, y n o la n o ta c ió n O . p a ra u n a c o ta in ferio r.
b ú sq u e d a e stá tica E n c u e n tra u n e le m e n to e n u n c o n ju n to d e d a to s q u e n u n c a es b. U tilic e e l lo g a ritm o p a ra d e s c r ib ir e l tie m p o d e e je c u c ió n d e u n p ro b le m a
m o d ific a d o . r e s u e lto d iv id ie n d o p o r la m ita d su ta m a ñ o e n tie m p o c o n sta n te N o o b s
b ú sq u e d a in te rp o la d a A lg o ritm o d e b ú sq u e d a e s tá tic a q u e tie n e m e jo r re n d i ta n te ' i ta rd a m a s d e u n tie m p o c o n sta n te e n d iv id ir p o r la m itad e l tam a-
m ie n to O e n e l c a s o m e d io q u e la b ú sq u e d a b in a ria , p e ro q u e s ó lo s e p u e d e no, e l lo g a ritm o n o se ap lica
u tiliz a r e n c a s o s lim ita d o s y tie n e u n a c o m p le jid a d m a la e n e l c a s o p eo r. 7. L a b a s e d e l lo g a ritm o n o e s im p o rta n te c u a n d o se u tiliza la n o ta c ió n O . E s
b ú s q u e d a se cu e n cia l M é to d o lin e a l tic b ú sq u e d a q u e re c o rre e l v e c to r h a s ta q u e p o r ta n to in n e c e sa rio p re c isa rla , a u n q u e p o r e llo m ism o p o d e m o s e le g ir e n
e n c u e n tra e l e le m e n to . c a d a c a s o la b a s e m á s fa v o ra b le p a ra n u e s tro s ra z o n a m ie n to s.
cota en el ca so m e d io L a c o la e n la c u a l e l tie m p o d e e je c u c ió n se o b tie n e m e
d ia n te la m e d ia s o b re to d a s la s p o sib le s e n tra d a s d e ta m a ñ o N.
c o ta e n e l c a s o p eo r U n a g a r a n tía d e l c o s te s o b re to d a s la s e n tr a d a s d e c ie rto
En Internet
tam añ o .
lo g a r itm o E l lo g a ritm o d e N (e n b a s e 2 ) e s e l v a lo r A' tal q u e 2 e le v a d o a A es L o s tr e s a lg o ritm o s p a ra la o b te n c ió n d e la s u b s e c u e n c ia d e s u m a m á x im a , a s í
ig u al a <V. c o m o u n c u a rto to m a d o d e la S e c c ió n 7 .5 . e s tá n d is p o n ib le s, j u n t o c o n u n a fu n
n o ta c ió n i i N o ta c ió n s im ila r a l m a y o r o ig u al c u a n d o c o n s id e ra m o s ta s a s d e c r e c ió n ira i n q u e re a liz a lo s te s ts d e tie m p o d e e je c u c ió n . T a m b ié n s e p ro p o rc io n a
c im ien to . un a lg o ritm o d e b ú sq u e d a b in a ria e n e l p a q u e te D a t a S t r u c t u r e s . H e a q u í los
n o ta ció n (-) N o ta c ió n s im ila r a l ig u a l c u a n d o c o n s id e ra m o s ta s a s d e c re c im ie n to . n o m b res d e fic h e ro s y los d ire c to rio s:
n o tació n o N o ta c ió n s im ila r al m e n o r e s tric to c u a n d o se c o n sid e ra n ta s a s d e c re c i H in a r y S e a r c li.ja v a T ra d u c id o p o r B ú s q u e d a s i n a r i a . j a v a , c o n tie n e el
m ien to . a lg o ritm o d e la b ú sq u e d a b in a ria d e la F ig u ra 5 .1 2 ,
n o ta c ió n O N o ta c ió n u tiliz a d a p a ra c a p tu r a r e l té rm in o m á s d o m in a n te d e una a u n q u e lig e ra m e n te m o d ific a d o . Se e n c u e n tra e n e l d i
lu n c ió n . L a n o ta c ió n O e s sim ila r al m e n o r o ig u a l c u a n d o c o n s id e ra m o s tasas re c to rio D a t a S l r u c t u r e s . L a F ig u ra 5 . 1 1 s e e n c u e n tra
d e c re c im ie n to . e n e l d ir e c to r io ( ’h a p tc rO ?
n ú m e ro s a rm ó n ic o s Ll n ú m e ro a rm ó n ic o A f-ésuno e s la s u m a d e lo s in v e rs o s de \ 1 a v S u m le s t.ja v a T ra d u c id o por T e s tS u m a M a x . j a v a , c o n tie n e c u a tro a l
los ¡ \ p rim e ro s e n te ro s p o sitiv o s. L a ta s a d e c re c im ie n to ele lo s n ú m e ro s a rm ó g o ritm o s p ara e l p ro b le m a d e la su b secu en cia d e sum a
n ic o s e s lo g a rítm ic a . m áx im a. S e e n c u e n tra e n e l d ire c to rio C h a p tc ri)5
Ejercicios 5 .7 . E n té rm in o s d e N . ¿ c u á l e s e l tie m p o d e e je c u c ió n d e l s ig u ie n te a lg o ritm o
p a ra c a lc u la r ,Y V?
{
5 .1 . S e e x tra e n tre s b o la s d e u n a c a ja c o rn o s e e s p e c ific a e n e l T e o re m a 5 . 1 o b
double resu ltad o = 1 -0;
te n ié n d o se la s c o m b in a c io n e s d e s d e a ) h a s ta d ). ¿ C u á le s so n los c o rre s p o n
d ie n te s v a lo re s d e i . j y k ?
£or( int i = 0; i < n; i++ )
n) R o ja . 5 . 6 . resultado x;
b) A zu l. 5 . 6. retu rn resultado;
c) A zu l. 3. R oja. I
ü) 6 , 5 . R oja.
5 .8 . E v a lú e d ire c ta m e n te e l trip le su m a to rio q u e p re c e d e a l T e o re m a 5 .1 . V e ri
5 .2. ¿ P o r q u e n o e s s u fic ie n te u n a im p le m e n ta c ió n b a sa d a e x c lu s iv a m e n te e n el fiq u e q u e la re s p u e s ta es id é n tic a a la a llí o b ten id a.
5 .9 . P a ra e l a lg o r itm o c u a d rá tic o . d e te rm in e c o n p re c is ió n c u á n ta s v e c e s s e e je
T e o re m a 5.2 p a ra o b te n e r u n tie m p o d e e je c u c ió n s u b c u a d rá tic o p a ra e l
p ro b le m a d e la o b te n c ió n d e la su b s e c u e n c ia d e s u m a m á x im a ? c u ta e l b u c le m á s interno.
5 .II). U n a lg o ritm o ta rd a 0 .5 m ilise g u n d o s p a ra u n a e n tra d a d e ta m a ñ o 100.
5 .3. S u p o n g a q u e T ,(.V ) = ( X F { N ) ) y 7 > (V ) = ( X F ( N » . ¿ C u á le s e n to n c e s d e las
sig u ie n te s a firm a c io n e s so n c ie rta s ? ¿ C u á n to la rd a rá c o n u n a e n tra d a d e ta m a ñ o 5 0 0 si e l tie m p o d e eje c u c ió n
es e l sig u ie n te ?
a) 7 j( ,V ) + T x N ) = ( X F l N ) ) .
b) r i( N ) - T : ( N ) = 0 ( F l N ) ) . a) L in eal.
v) / j ( V ) T : (.V ) = r x i ) . b) ( X N lo g A ),
r) C u a d rá tic o .
d)
d) T d \ ' ) = O i T 2( N) ) .
C ú b ic o .
? .4 . S e a n a liz a n d o s p ro g ra m a s A y H y se v e q u e e n e l c a s o p e o r tie n e n tie m
p o s d e e je c u c ió n n o m a y o re s q u e I50.V log .V y N z. re s p e c tiv a m e n te . R es 5 .1 1 . U n a lg o ritm o ta rd a 0 .5 m ilise g u n d o s p a ra una e n tra d a d e ta m a ñ o 100.
¿ Q u é ta m a ñ o d e e n tra d a p u e d e p ro c e s a r e n u n m in u to , si e l tie m p o d e e je
p o n d a a la s sig u ie n te s c u e s tio n e s , c u a n d o e llo s e a p o sib le :
c u c ió n e s e l sig u ie n te ?
a) ,.Q u é p ro g ra m a d a la m e jo r g a r a n tía e n tie m p o d e e je c u c ió n p a ra v a lo
re s g ra n d e s d e V ( V > 1 0 .0 0 0 )? u) L ineal.
b) ¿ Q u é p ro g ra m a d a la m e jo r g a ra n tía e n tie m p o d e e je c u c ió n p a ra v a lo b) fX V log N ).
re s p e q u e ñ o s d e V (,V < 100)? c) C u a d rá tic o .
<') (.Q u é p ro g ra m a se e je c u ta rá m á s rá p id o e n p r o m e d io p a ra jV = 1.000? d) C ú b ic o .
d) ¿ E s p o s ib le q u e e l p ro g ra m a H se e je c u te m á s rá p id a m e n te q u e e l p ro 5 .1 2 . C o m p le te la ta b la d e la F ig u ra 5 .1 0 c o n e s tim a c io n e s p a ra tie m p o s d e e je
g ra m a A e n ro d a s la s p o sib le s e n tra d a s? c u c ió n q u e s o n d e m a s ia d o g ra n d e s p a ra s e r s im u la d o s. In te rp o le lo s tie m
p o s d e e je c u c ió n p a ra lo s c u a tr o a lg o ritm o s y e s tim e e l tie m p o n e c e sa rio
5 .5 . Rara la ru tin a d e b ú sq u e d a b in a ria d e la f i g u r a 5.1 I. m u e s tre la s c o n s e
p a ra c a lc u la r la s u b s e c u e n c ia d e su m a m á x im a d e un m illó n d e n ú m e ro s.
c u e n c ia s d e las s ig u ie n te s m o d ific a c io n e s e n e l có d ig o :
¿ Q u é h ip ó te sis h a a su m id o ?
a) L ín e a 14: u tiliz a n d o e l te st i n i c i o < f ir .. 5 .1 3 . O rd e n e las sig u ie n te s fu n c io n e s p o r ta s a d e c re c im ie n to : N . y '/V , N \
b) L ín e a 16: h a c ie n d o la a sig n a c ió n m e d i o ■ i n i c i o » f i n / 2 . \ ' 2, N log N , N log log N , N log* .V. N lo g (Ai2). 2 N . 2V. 2 V \ 3 7 . N ' y
c) L ín ea 19: a s ig n a n d o i n i c i o = m e d i o , .V2 lo g /V. In d iq u e q u é fu n c io n e s c re c e n a la m is m a v e lo c id a d .
i/) L ín e a 21: a s ig n a n d o f i n = m e d i o . 5 .1 4 . P a r a c a d a u n o d e lo s s ig u ie n te s fr a g m e n to s d e p ro g r a m a s , h a g a lo s i
g u iente:
Problemas teóricos.
a) D é un a n á lisis e n n o ta c ió n O d e l tie m p o d e e je c u c ió n .
5.6 . D e te rm in e , p a ra los a lg o ritm o s típ ic o s q u e u tiliz a p a ra re a liz a r c á lc u lo s a b) Im p ic m e n le e l c ó d ig o y e je c ú te lo p a ra d ife re n te s v a lo re s d e V.
m a n o , e l tie m p o d e e je c u c ió n e n h a c e r los sig u ien te: »•) C o m p a re su a n á lisis c o n lo s tie m p o s d e e je c u c ió n reales.
a)
h)
¿ C u á l se ría la m u lta e l d ía X )
¿ C u á n to s d ía s h a ría n falta p a ra q u e la m u lta a lc a n z a F e u ro s ? t l 'n a
Prácticas de program ación
re s p u e sta e n n o ta c ió n O s e rá su fic ien te.) 5 .2 4 . L a c rib a d e E ra tó s te n e s e s u n m é to d o u tiliz a d o p a ra c a lc u la r to d o s lo s p ri
m o s m e n o re s q u e N . E m p ie c e h a c ie n d o u n a ta b la d e e n te ro s d e sd e 2 h asta
5 .1 7 . D e m u e s tre e l T eorem a 5 .5 . P ista : M u e s tre q u e £ ' t < — . O b te n g a
2i J i <
A'. E n c u e n tre e l m e n o r e n te r o i q u e n o e s té ta c h a d o . E n to n c e s im p rim a i y
la c h e i, 2 /. 3 / . e tc . C u a n d o / > N N , e l a lg o ritm o te rm in a . S e h a p ro b a d o
lu e g o d e fo rm a sim ila r u n a c o ta in ferior.
5 .1 8 . C o n s tru y a u n e je m p lo e n e l c u a l u n a b ú sq u e d a in te rp o la d a e x a m in e c a d a q u e e l tie m p o d e e je c u c ió n e s (X V log log V ) . E sc rib a u n p ro g r a m a p a ra
e le m e n to d e l v ecto r. im p lc m c n ta r la c rib a y v e rifiq u e q u e e l tie m p o d e e je c u c ió n e s e n e fe c to el
5 .1 9 . A n alice e l c o s te e n p ro m e d io d e una b ú sq u e d a c o n é x ito p a ra e l a lg o ritm o se ñ a la d o . ¿ Q u é d ific u lta d h a e n c o n tr a d o p a ra d is tin g u ir e l tie m p o d e e je c u
d e b ú s q u e d a b in a ria . c ió n e n tre ( K N ) y (X.V lo g N )?
5 .2 5 . L a e c u a c ió n A ' + l i ' + C 5 ♦ / > s ♦ / ; 5 = I - 5 tie n e e x a c ta m e n te u n a so lu c ió n 11. 1). E. K n u th . T h e A r t o f C o m p u te r P ro g ra m m in g . V o l 2: S e m in u m e ric a l
e n te r a q u e s a tis fa g a 0 < A ^ B ^ C ^ D ^ L ^ F ^ 75. E sc rib a u n p ro A lg o r ith m s . 3.J e d .. A d d iso n -W e sle y . R ead in g . M a s s. < 1997).
g ram a p a ra e n c o n tra r d ic h a so lu c ió n . P ista: p rim e ro , c a lc u le to d o s lo s v a
lores d e X ' y a lm a c é n e lo s e n u n v ecto r. E n to n c e s, p a ra c a d a tu p ia (A . H. C. 12. D . E. K n u th . T h e A r t o f C o m p u te r P ro g ra m m in g . V o l .i: S o r tin g a n d
I). E ) . s ó lo n e c e s ita c o m p r o b a r si e x is te a lg ú n F e n e l v ecto r. H ay v arias S e a rc h in g , 2.a e d .. A d d iso n -W e sle y . R e a d in g . M ass. (1997).
fo rm a s d e b u sc a r F . U n m é to d o c o n s is te e n a p lic a r b ú sq u e d a b in a ria . Sin 13. Y. P e a rl. A . Ita i. y H A v n i. « In te rp o la tio n S e a rc h — A log log N S e a rc h » .
e m b a rg o p o d ría m o s p ro b a r q u e o tr o s m é to d o s p u e d e n se r m á s efic ie n te s. C o m m u n ic a tio n s o f tlie A C M 21 (1 9 7 8 ). 5 5 0 -5 5 4 .
5 .2 6 . Im p lem en te lo s a lg o ritm o s p a ra e l p ro b le m a d e la o b te n c ió n d e la su b -
sc c u e n c ia d e s u m a m á x im a , p a ra o b te n e r d a to s e q u iv a le n te s a lo s d e la F i 14. W . W . P e te rso n , « A d d rc ssin g fo r R a n d o m S to ra g e » . IB M J o u r n a l o f R e
g u ra 5 .1 0 . C o m p ile lo s p ro g ra m a s c o n la s o p c io n e s q u e c o n d u z c a n a una s e a r c h a n d D e v e lo p m e n t 1 (1 9 5 7 ) , 1 3 1 -132 .
m a y o r efic ie n c ia . 15. E. S. R o b erts. A p p lie d C o m b in a to ric s. P re n tic e -H a ll. E n g le w o o d C liffs.
N J (1 9 8 4 ).
3. 7. B a v e l. M a th C o tn p a n io n fo r C o m p u te r S c ie n c e . R e sto n P u b lish in g
C o m p a n y . R e s to n . V a (1 9 8 2 ).
9. R L . G ra h a m . D . E. K n u th . y O . P a ta s h n ik . C o n c r e te M a th e m a tic s .
A d d iso n -W e sle y . R e a d in g . M a ss. (1 9 8 9 ).
10. I). E. K n u th . T h e A r t o f C o m p u te r P ro g ra m m in g . V o l I : F u n d a m e n ta l
A lg o ritlim s, 3.a e d .. A d d iso n -W e sle y . R e a d in g . M a s s. (19 97 ).
C A P I T U L O __________________________________________________________
6 Estructuras de datos
M u c h o s a lg o ritm o s re q u ie re n u n a re p re se n ta c ió n a p ro p ia d a d e lo s d a to s
p a ra lo g ra r se r e fic ie n te s. E sta re p re se n ta c ió n ju n to c o n las o p e ra c io n e s
p e rm itid a s s e lla m a e s tr u c tu r a d e d a to s . T íp ic a m e n te to d a s las e s tru c tu
ra s d e d a to s p e rm ite n in s e rc io n e s a rb itra ria s . L a s e s tru c tu ra s d e d a to s v arían e n c ó
m o p e rm ite n e l a c c e s o a m ie m b ro s d e l g ru p o . A lg u n a s p e rm ite n ta n to a c c e s o s c o
lín* o p e ra c io n e s d e b o rrarlo a rb itra rio s . O tra s im p o n e n re s tric c io n e s , ta le s c o m o
p e rm itir e l a c c e s o s ó lo al e le m e n to m á s re c ie n te m e n te in se rta d o , o a l m e n o s re
c ie n te m e n te in s e rta d o d e l g ru p o .
E ste c a p ítu lo d is c u te siete d e las m á s c o m u n e s e s tru c tu r a s d e d a to s : p ila s, c o
las. lista s e n la z a d a s , á rb o le s, á rb o le s b in a rio s d e b ú s q u e d a , ta b la s h a s h > c o la s de
p rio rid a d . E l o b je tiv o e s d e fin ir c a d a e s tru c tu ra d e d a to s , a s í c o m o d a r u n a idea
in t u it o a d e la c o m p le jid a d e n tie m p o ríe las o p e ra c io n e s d e in s e rc ió n , b o rr a d o \
a c c e so . L a p re s e n ta c ió n d e u n a im p le m e n ta c ió n e fic ie n te se re tra sa h asta las P a r
te s IV y V.
E n e s te c a p ítu lo v erem o s:
E n u n a lis ia e n la z a d a , lo s e le m e n to s se a lm a c e n a n d e fo rm a n o c o n tig u a , e n v e /
d e e n un v e c to r d e p o sic io n e s ele m e m o ria c o n se c u tiv a s . P a ra c o n s e g u ir e s to , c a d a
e le m e n to s e a lm a c e n a e n u n n o d o q u e c o n tie n e e l o b je to y u n a re fe re n c ia a l s i
g u ie n te n o d o e n la lista, c o m o se m u e s tra e n la F ig u ra 6 .9 . E n e s te m a rc o , se m a n
tie n e n re fe re n c ia s a l p rim e r y ú ltim o n o d o d e la lista. P a ra s e r m á s p re c iso s, un
n o d o típ ic o e s e l sig u ien te:
c la s s N odoLista Figura 6.10 M od elo d e lista en lazad o : las e n tra d a s so n arbitrarias, cu alq u ier e le
[ m ento p u e d e salir y se soporta la iteració n , a u n q u e esta estructura de
O bject d a to ; / / A lgún elem ento d a te s n o e s e ficie n te en tiem po.
N odoLista s ig u ie n te ;
I
la lista a tra v é s d e u n a re fe re n c ia e s s e g u ro . P ara c o n s e g u ir e s to , d e fin im o s la lista
E n c u a lq u ie r m o m e n to , p o d e m o s a ñ a d ir un n u e v o ú ltim o e le m e n to x h a c ie n d o e n d o s p a rte s: u n a c la s e p a ra las listas y u n a c la s e ¡te ñ id o ra . L a F ig u ra 6 . 11 m u e s
lo sig u ien te: tra la in te rfa / b á sic a p a ra las lista*, e n la /a d a s . fa c ilita n d o m é to d o s q u e d e s c rib e n
so la m e n te e l e s ta d o d e la lista.
u l t i m o , s i g u i e n t e = new N o d o L i s t a ( J ; I i o d j u r . t a un n u e v o N o d o L i s t a
L a f ig u ra 6 .1 2 d e fin e u n a c la s e ite ra d o ra u tiliz a d a e n to d o s lo s a c c e s o s a la
ultim o = u ltim o .s ig u ie n te ; / / A ju sta e l últim o
lista. P a ra v e r c ó m o s e u tiliz a , v e a m o s e l c ó d ig o e s tá n d a r p a ra im p rim ir to d o s los
u ltim o .d a to = x; / / C o l o c a x e n e l nodo
e le m e n to s d e la lista. S i la lista e s tu v ie ra a lm a c e n a d a e n u n v e c to r c o n tig u o , un
ultim o .sig u ien te = n u il; / / Es e l ú ltim o ; a j u s t a s i g u i e n t e
c ó d ig o típ ic o s e r ía e l sig u ien te:
A h o ra, u n e le m e n to c u a lq u ie ra n o p u e d e e n c o n trarse c o n un ú n ic o a c c e so : p ara
e llo d e b e m o s ir re c o r rie n d o la lista. E s to e s sim ila r a la d ife re n c ia e n tre a c c e d e r a / / R ecorre e l v e c to r v. m ostrando cada elem ento
un e le m e n to e n u n d is c o c o m p a c to (u n a c c e so ) o e n u n a c in ta (s e c u c n c ia l). A u n for< i n t ín d ic e = 0; ín d ic e < tamanyo; Ín d ice» * )
q u e e s to pued e h a c e r p e n s a r q u e la s lista s s o n m e n o s a tra c tiv a s q u e lo s v e c to re s, S y s te m .o u t.p rin tln t v[ Ín d ice ) );
tie n e n su s v e n ta ja s. P rim e ro , u n a in s e rc ió n e n m e d io tic la lista n o re q u ie re m o v e r
E n J a \ a b á sic o , e l c ó d ig o p a ra ite ra r a tra v é s d e to d a la lista e n la z a d a es
lo d o s lo s e le m e n to s q u e s e e n c u e n tra n d e s p u é s d e l p u n to d e in s e rc ió n . L o s m o v i
m ie n to s d e d a to s so n m uy c o s to s o s e n la p rá c tic a . \ la s lista s e n la z a d a s p erm iten / / R e co rre la l i s t a u n u L is ta . m ostrando cad a elem ento
la in s e rc ió n c o n s ó lo u n a c a n tid a d c o n s ta n te d e in s tru c c io n e s d e a sig n a c ió n . io r i N odoL ista p = u n a L ista .prim ero; p ! = n u l 1; p = p .s i g u i e n t e >
M e re c e la p e n a h a c e r n o ta r q u e si p e rm itim o s a c c e s o s ó lo al p r i m e r o , e n to n S y s t e m . o u t . p r i n t l n ( p . d a t o ):
c e s te n e m o s u n a p ila, y si p e rm itim o s in s e rc io n e s só lo p o r e l u l t i m o y a c c e so s
só lo p o r e l p r i m e r o , te n e m o s u n a cola.
S in e m b a r g o , e n e s ta s s itu a c io n e s n e c e sita m o s h a b itu a lm e n te o p e ra c io n e s m ás 1 oackage E stru ctu rasD ato s;
g e n e ra le s, ta le s c o m o e n c o n tra r o e lim in a r c u a lq u ie r e le m e n to e n la lista, g u ia d o s 2
p o r su n o m b re . T a m b ié n n e c e s ita m o s s e r c a p a c e s d e in s e rta r u n e le m e n to e n c u a l 3 /■ i n t e r f a z Lisia
q u ie r p o sic ió n . E s to e s m u c h o m á s q u e lo q u e p e rm ite u n a p ila o u n a c o la . L a F i 4 /
5 // Acceso m e d ia n te l a c l a s e L ist.alter
g u ra 6. 1(1 ilu stra e sta s o p e ra c io n e s d e la s lis ta s e n la z a d a s.
6 /
P a ra a c c e d e r a los e le m e n to s e n la lista , n e c e sita m o s u n a re fe re n c ia a l c o rr e s 7 / * ................ OPERACIONES PÚB LI C AS * * * * .................... * ................
p o n d ie n te n o d o . S in e m b a rg o , c o n c e d e r e s te a c c e s o \ i o l a c la ra m e n te e l p rin c ip io 8 / / boolean esV a cia ( ) Devuelve t r u e s i v a c í a ; s i no, f a l s e
d e ix u lta m ic n to d e la in fo rm a c ió n . N e c e s ita m o s a se g u ra r q u e c u a lq u ie r a c c e s o a 9 // v o i d v a c i a r ( ) --> E l i m i n a t o d o s l o s e l e m e n t o »
10 / / * * • • * * .........• • • • « • • • " • • • E R R O R E S * ............. .......................................................... ..
11 // Ningún e r r o r e s p e c i a l
12
13 p u b lic in te r f a c e L ista
14 {
15 boolean esV acia( );
16 v o i d v a c i a r ! >;
p r i me r o úl t i mo 17 }
Figura 6.9 Una lista e n la z a d a simóle Figura 6.11 Interfaz p o ra lo lista a b stracta.
1 p a c k a g e Ext r u r t u i e s D e t o » ; 1 ímport R e tr u c tu r a s D a to s .*;
2 2 import E x ce p cio n e s.1;
3 import E x c e p c io n e s.1; 3
4 4 // Prograna B inple para probar las listas
5 // In te r faz L is ta l te r ; m antiene la posició n actual 5
6 // 6 public fin al c la s s T estL ista
7 II .................................................... OPERACIONES PÚ3LI CAS............................................................. 7 {
6 // v o i d inn«*rtar ( x I --> In se rta x despuésd e le p o sic ió n actu al 8 public s t a t i c void a a in l S trin g ( 1 args >
9 // void elim inar! x I --> Elim ina x 9
0 // boolean buscar! x » --> Actual i ra la p o sició n a c tu a l accediendo a x 10 L ista laL ista = n e w L i s t a E n l a z a d a ! »;
1 // void cero! I - - > C o lo c a a c t u a l a n t e s q u e e l p r i m e r e l «siento || L istalter iter = r.ew L i s t a E r . l a z a d a l t e r < l a L i s t a I;
2 // void prim ero! ) --> Coloca a c t u a l en e l prim er elem ento
12
3 // void avanzar! » - - > Avanza 13 / / i n s e r t a r r e p e t i dañar, t e e l e m e n t o s p o r e l principio
4 / / boolear. e s ta D e n tr o ! ) - - > t r u e . s i e s t á en una p o s i c ió n val ida 14 í o r < i n t i = 0: i < S; i - - )
5 I I Object re cu p e rar --> Devuelve e l elem ento a c t u a l
15
6 II ......................................................... ERRORES * • • ■ ■ • • • .................. .......................................
16 try
7 II Excepciones lanzadas en a cceso, in s e rc ió n o e lim in a c ió n i le g a l .
17 (i t e r . i n s e r t a r I r.ew I n t e g e r ! i » ) ; )
B
18 c a t c h ! E l e m e n t o N o E r . c o n t r a d o e ) ( ) I I No p u e d e ocurrir
9 public i n t e r 1a c e L i s t a l t e r
19 ite r.c e ro ( ): I I Mue ve i t e r a l p r i n c i p i o
0 <
1 void in s e r ta r ! O bject x ) 20
2 boolean b u sc a r! O bject x ); 21
3 void elim in ar ( Object x 22 S y ste m .o u t.p rin t( 'C ontenido:' ):
4 b o o l e a n e s t a D e n t r o ! 1; 23 f o r l i t e r .prim ero! >; i t e r . e s t a D e r . t r o ! ) ; i t e r . a v a n z a r < » )
5 Object re cu p e rar! ); 24 S y s t e m . o u t . p r i n t ( * * •i t e r . r e c u p e r a r I
6 void c e r o ( ); 25 System .out.println! ' í í n * »;
7 void p r i m e r o ! »; 26
8 void av an zar! }; 27 J
9 }
Figuro 6 13 E j e m p l o d o u s o d e l a s l utos l a s a f cda e s C o n t e n i d o : 4 3 2 1 0 f i n
igura 6 . 1 2 interfaz p a ra e i iterocJo • d e fcsta abstracto.
§ 8 2 §
L a in ic ia liz a c ió n a n te r io r al b u c le f o r se c o n sig u e lla m a n d o a l c o n s tru c to r de c o n ju n to d e n o d o s y un c o n ju n to d e a ris ta s q u e c o n e c ta n p a re s d e n o d o s. E n este
L i s t a l t e r . El test utiliza el m é to d o e s t a D e n t r c d e fin id o e n la c la s e L i s t a l t e j . te x to s o lo se c o n s id e ra n a r b o le s c o n ra íz. U n á rb o l c o n raíz lle n e las sig u ie n te s
E l m é to d o a v a n z a r a v a n z a a l sig u ie n te n o d o d e la lis ta e n la z a d a P o d e m o s a c c e c a ra c te rístic a s
xa
d e r a l e le m e n to a c tu a l lla m a n d o a l m é to d o r e c u p e r a r d e fin id o e n L i s t a l t e r .
• l ' n n o d o e s d is tin g u id o c o m o la raíz.
E l p rin c ip io g e n e ra l e s q u e g a ra n tiz a m o s la se g u rid a d , y a q u e to d o s |<* a c c e s o s a
• T o d o n o d o <. e x c e p to la ra íz , e s lá conectad»» p**r m e d io d e u n a a n s i a a un
la lista s e h a c e n a tra x é s d e la c la s e L i s t a l t e r . P o r ú ltim o , in d ic a re m o s q u e p o
ú n ic o n o d o p /» e s e l p a d re d e c . y < e s un** d e lo s h ijo s d e /*.
d ría m o s te n e r \ a n o s ite ra d o re s re c o rrie n d o , s im u ltá n e a p e r o in d e p e n d ie n te m e n te ,
• H a y un ú n ic o c a m in o d e s d e la ra íz a c a d a n o d o . E l n ú m e ro d e a ris ta s que
u n a ú n ic a lista.
d e b e n a tra v e sa rs e e s la lo n g itu d d e l c a m in o .
P a ra re a liz a r e s ta ta re a , la c la s e L i s t a l t e r d e b e m a n te n e r d o s o b je to s in te r
n o s. P rim e ro , n e c e sita u n a re fe re n c ia a l e le m e n to « a c tu a l» . Y e n se g u n d o lu g ar, L a f i g u r a 6.14 m u e s tra un á rb o l El n«*do raíz e s A . L o s h ijo s d e A so n H . C . D
ü <p £
n e c e sita u n a re fe re n c ia a la lista E sta re fe re n c ia e s in ic ia li/a d a (p o r ú n ic a vez» e n y E Y a q u e A e s la ra íz , n o tie n e p a d re E l re s to d e n**dos tie n e p a d re P o r e je m
e l c o n s tru c to r, lu í f ig u ra 6 .1 3 m u e s tra la in te ra c c ió n e n tr e la lista > su iterad o r. p lo . e l p a d re d e H e s A . A lo s n o d o s q u e n o tie n e n h ijo s se les lla m a h o ja s. L as
L o s d e ta lle s d e la im p le m e n ta c ió n d e la lista e n la z a d a s e v e rán e n e l C a p ítu lo 16 h o ja s d e e s te á rb o l so n lo s n o d o s C . F. G . / / . / y K . L a lo n g itu d d e l c a m in o d e A
E l u s o d e las té c n ic a s c o n p ila s y c o la s se v e rá e n e l C a p ítu lo 15. h a s ta A e s tre s (a ris ta s ). L a lo n g itu d d e l c a m in o d e sd e A a A e s c e ro a rista s . P ro -
1 // !ni r . e r í a z A r b o l ; lo: > d e t a l l e s son p a r e c ía o s a ios a e uisca
2
3 p u b l i*- j - t e ! ! a c e Ar b o
4 (
5 jo le a n esVacio(
6 :>id vaciar< )
7 )
8
9
ltíul /I /I Tn
.n : m antiene la posició n actual
ii
12 p u b l i c i n t e r f a c e A r b o 1 I t e r
13 {
Figuro 6.14 Un árbol. 14 oíd i n s e r t a r ! O b je c t x ) th ro w s Eiem entoNoEncontrado:
15 b o o l e a n b u s c a n O b je c t x l ;
16 v (vid e l i m i n a r ( O b je c t x > th ro w s Eiem entoNoEncontrado:
p ie d a d e s c o m o a sc e n d ie n te , d e s c e n d ie n te o h e rm a n o , p u e d e n ta m b ié n d e fin irse 17
18 void i r A R a i z ( >;
c o n e l s ig n ific a d o u su al. A sí. lo s h e rm a n o s d e C so n lo s n o d o s H. I ) \ F..
19 void prirrerttijot I ;
L o s á rb o le s s o n u n a e stru c tu ra d e d a to s fu n d a m e n ta l e n c o m p u ta c ió n . C a si to 20 void s i g u i e n t e H e r m a n o ! );
d o s lo s siste m a s o p e ra tiv o s a lm a c e n a n lo s fic h e ro s e n e s tru c tu ra s q u e so n á rb o les 21 b o o i e a n e s V a l i d o l ):
o s im ila re s . P o r e je m p lo , b a jo D O S . V M S «►U n ix , los d ire c to rio s s e a lm a c e n a n en 22 O bject r e c u p e r a r ! >;
lo s n o d o s in te rn o s q u e n o so n h o ja s d e l á rb o l, m ie n tra s q u e e l re s to d e fic h e ro s se 23 )
a lm a c e n a n e n las h o jas. A tra v e s a r u n a a ris ta , e s lo m ism o q u e d e s c e n d e r a un su b
Figura 6.15 interfaces p a ra la c la se ab stra cta úe los arp óles y su iterador
d ire c to rio . U na a ris ta e sp e c ia l q u e c o n e c ta d e v u e lta a l p a d re (a s a b e r, la e n tra d a
. . > p e rm ite fá c ilm e n te la v u e lta a trá s e n e l á rb o l (a u n q u e p o r c re a r c ic lo s , la e n
tra d a . . h ace q u e é s ta e s tru c tu ra s e a s ó lo p a r e c id a a un á rb o l, e n v e / d e u n árb o l
p ro p ia m e n te d ich o ).
C o n e s to e n m e n te , p o d e m o s v e r q u é tip o «le o p e ra c io n e s p e rm ite n lo s á rb o le s.
Q u e re m o s a ñ a d ir, b u s c a r y e lim in a r n o d o s d e l á rb o l. C o m o e n e l c a s o d e la s lista s
e n la z a d a s, d e fin ire m o s u n ite ra d o r q u e nos p e rm ita a c c e d e r a lo s nod o s, m a n te n ie n
d o la n o ció n d e n o d o a ctu a l. E n p a n ic u la r. d e b e m o s p ro p o rc io n a r m é to d o s q u e nos
p e rm ita n re c o rre r e l árb o l d e m a n e ra o rd en a d a. D e e sta fo rm a, e n la F ig u ra 6 .1 5 p re
se n ta m o s las in terfa ces p ara la c la s e d e lo s á rb o le s y su iterad o r, d e fo rm a a n á lo g a a
c o m o h icim o s p a ra las listas e n la z a d a s. L a s o p e ra c io n e s i r A R a i z . p r i m e r » i j o y Figura 6.16 Árbol d e la expresión ( a + b ) M c - d ) .
s i g u i e n t e H e r m a n o son su fic ie n te s p ara p e rm itirn o s re c o rre r e l árb«>l «le d ife re n te s
m a n e ras. E n e l C a p ítu lo 17 d e s c rib ire m o s u n a je r a rq u ía d e c la s e s q u e p e rm ite n re
c o rrid o s «le á rb o le s u tiliz a n d o so la m e n te lo s m é to d o s p r i m e r H i j o , r e c u p e r a r . 6.6 Árboles binarios d e búsqueda
e s V a i i d o y s i g u i e n t e H e r m a n o . E s to in c lu y e las c la s e s O r d e n S i m . P r e O r d e r . .
P o stO rd en y PorN iveles. E n la S e c c ió n 5 .6 . e x a m in a m o s e l p ro b le m a d e la b ú sq u e d a e s tá tic a , y v im o s que
U n a s e g u n d a a p lic a c ió n d e lo s á rb o le s c o rr e s p o n d e a l«*s d e n o m in a d o s á rb o le s si lo s e le m e n to s s e n o s d a n o rd e n a d o s , p o d e m o s re a liz a r la o p e ra c ió n b u s c a r en
•le e x p r e s io n e s , q u e s e ilu stra n e n la F ig u ra 6 .1 6 . E n e l á rb o l s in tá c tic o d e u n a e x tie m p o lo g a rítm ic o , e n e l c a s o p e o r. S e tra ta d e b ú sq u e d a e s tá tic a , p u es u n a vez
p re s ió n . e l val«>r «le un n o d o e s e l re s u lta d o d e a p lic a r e l o p e ra d o r e n e l n o d o u ti li q u e se n o s d a n lo s e le m e n to s . n«> p o d e m o s a ñ a d ir ni e lim in a r n in g u n o .
z a n d o c o m o o p e ra n d o s lo s val«>res d e lo s h ijo s . L as h o ja s se ev a lú a n a s í m ism as. S u p o n g a m o s a h o ra q u e sí n e c e sita m o s in s e rta r o e lim in a r e le m e n to s d in á m ic a
P«»r c o n s ig u ie n te , e l á rb o l s in tá c tic o «le la e x p re s ió n d e la F ig u ra 6 .1 6 s e e v a lú a a m e n te . U n a e s tru c tu ra d e «latos q u e lo p e rm ite s o n l«*s á rb o le s b in a r io s ,le b ú s q u e
t a * b ) • i c d > . L o s á rb o le s s in tá c tic o s d e e x p re s io n e s , y e l a n á lis is s in tá c tic o del d a . L a F ig u ra 6 .1 7 m u e s tra las o p e ra c io n e s b á s ic a s p e rm itid a s c o n lo s á rb o le s b i
á rb o l c o rre sp o n d ie n te . s«>n e s tru c tu ra s «le d a to s e s e n c ia le s e n la s e ta p a s «le a n á lisis n ario s d e b ú sq u ed a. S u in te rfa z se m u e s tra e n la F ig u ra 6. IX. O b s e rv e q u e s«^l«>
s in tá c tic o y g e n e ra c ió n d e c ó d ig o d e u n c o m p ila d o r. S e d a rá n m á s d e ta lle s e n la o b je to s q u e im p le m c n te n la in te rfa z c o m p a r a b l e se p u e d e n a lm a c e n a r e n u n á r
S e c c ió n 11.2. b o l b in a rio «le b ú sq u ed a.
E l á rb o l d e e x p re s ió n e n la F ig u ra 6 .1 6 e s u n á r b o l b in a r io , p u e s e l n ú m e ro de E l c o n ju n to d e o p e ra c io n e s p e rm itid a s s e e x tie n d e p a ra p e rm itir a p lic a c io n e s
hij«)s e s tá lim ita d o a c o m o m u c h o d«*s p o r n o d o . U n u s o im p o rta n te d e lo s á rb o les a rb itra ría s «le b u s c a r (p o r n o m b re ) a s í c o m o d e i n s e r t a r y e l i m i n a r . E l m é
b in a rio s se e x a m in a e n la p ró x im a secció n . to d o b u s c a r d e v u e lv e u n a re fe re n c ia a l o b je to q u e se a ju s ta a l e le m e n to b u scad o .
sica d e e sto s d o s e n fo q u e s e s q u e e n e l n u e s tro e l p ro g ra m a d o r d e b e e x p líc ita
a cualquier elemento m en te p ro p o rc io n a r c ó d ig o p a ra e l c a s o e n e l q u e la b ú sq u e d a fa lle . F.n e l e n fo q u e
\ por nombre o rango a lte rn a tiv o , si s e d e v u e lv e n u i l y n o se h a c e n in g u n a c o m p ro b a c ió n , e l re su ltad o
p o d ría s e r u n a N u l l P o i n t e r E x c e p t i o n e n tie m p o d e e je c u c ió n . F.n té rm in o s d e
¡ \ A rb o l e fic ie n c ia , la v e rs ió n c o n e x c e p c ió n p u e d e se r m e n o s e fic ie n te , p e ro se g u ra m e n te
b in a rio la s c o n s e c u e n c ia s n o s e n o ta ría n , e x c e p to q u iz á e n a lg u n a s e c c ió n d e c ó d ig o que
cíe b ú sq u e d a se e je c u ta ra m u y a m e n u d o . S in e m b a rg o , a l l o r / a r al p ro g ra m a d o r a tra ta r este
c a so , h e m o s h e c h o q u e e l c ó d ig o s e a m e n o s s u s c e p tib le a u n e r r o r e n tie m p o de
e jec u ció n .
Figuro 6.17 M od elo d e árbol binario d e bú squeda La bú squeda b inaria se g e n e D e la m ism a m a n e ra , la in serció n d e un e le m e n to q u e y a se e n c u e n tra e n e l á r
raliza p a ra perm itir inserciones y elm ino ciones
bo l se s e ñ a la c o n la e x c e p c ió n E l e m e n t o D u p l i c a d o . L)e n u e v o o tra s a ltern ativ as
so n p o sib le s: u n a e s p e rm itir q u e la n u e v a in serció n so b re sc rib a e l v a lo r a lm a c e n a
do. E s to e s lo q u e se h ace e n la S ecció n 6 .7 . c u a n d o s e d isc u te n las ta b la s h ash .
package E stru ctu rasD ato s;
2 C o n sid e ra m o s a h o ra u n á rb o l b in a r io d e b ú sq u e d a q u e a lm a c e n a c a d e n a s d e
3 im port S o p o r te .* ; im port Soport e . Comparable; c a ra c te re s. Y a q u e só lo se p u e d e n u tiliz a r o b je to s c o m p a r a b l e , n o p o d e m o s u tili
4 im p o r t E x c e p c i o n e s .*; zar d ire c ta m e n te e l tip o s t r i n g . D e m o d o q u e d e fin im o s u n a c la s e M i C a d e n a .
5 m o s tra d a e n la F ig u ra 6 .1 9 (e sta c la s e ta m b ié n im p le m e n ta e l in te rfa z H a s h a b i e .
6 // I n t e r f a z ArbolBúsqueda q u e se u tiliz a e n la S e c c ió n 6 .7 ). L a F ig u ra 6.2(1 m u e s tra c ó m o fu n c io n a u n árb o l
7
b in a rio d e b ú sq u e d a c o n o b je to s M i C a d e n a .
8 II ................. « « « • » » » • ‘ OPERACIONES PÚBLICAS*
9 // void i n s e r t a r ( x I --> I n s e rta x N u e stra interfaz. A r b o l B ú s q u e d a ta m b ié n p ro p o rc io n a d o s m é to d o s a d ic io n a
10 void e lim in a r! x ) Elim ina x le s: u n o p a ra b u s c a r e l e le m e n to m ín im o y o tro p a ra b u s c a r e l e le m e n to m áx im o .
11 void elim inaiM in < - - > E l i m i n a e l menor e le m e n t o R e su lta q u e c o n u n p o c o d e tra b a jo a d ic io n a l, ta m b ié n p o d e m o s s o p o r ta r a c c e s o al
12 Comparable b u s c a r < I - -> Devuelve e l elem en to qu e a j u s t a co n x K -é sim o m e n o r e le m e n to , p a ra u n K c u a lq u ie ra d a d o c o m o p a rá m e tro . Fisto s e c o
13 Com parable b u sc a rM in ! ) - - > D e v u e lv e e l menor e le m e n t o
n o c e c o m o b ú sq u e d a p o r p o s ic ió n e n e l o rd en .
14 C om parable bu sc a rK a x l I - - > D e v u e lv e e l mayor e le m e n t o
15 boolean esV acio ( } — > Devuelve t r u e s i v a c í o ; s i no f a l s e
16 void v a c ia r! ) --> E lim in a todos lo s elem entos 1 import S o p o rte .* ;
17 void im prim irA rbol! > Imprime e l á r b o l ordenadam ente 2 im port E s t r u c t u r a s D a to s .’ ;
18 • • • • • ■ ■ • ■ • « . . i . , , . , , , ,
' ERRORES * * • • • • • • • • * * • • • • • • • • * • • • • • • • • * * 3
19 // Muchas r u t i n a s l a n z a n E le m e r . to N o E n c o n tr a d o e n v a r i a s 4 public final c l a s s MiCadena implements Comparable, Hashabie
20 // condiciones degeneradas 5 {
21 // i n s e r t a r la n z a E lem entoD uplicado s i e l e le m en to ya e s t á en e l á rb o l 6 p u b l i c MiCadena! S t r i n g x 1
22 7 { v alor = x; )
23 p u b l i c í n t e r fa c e ArbolBusqueda 8
24 9 public S tring to S trin g ! )
25 void i n s e r t a r ( Comparable x ) throw s EiementoDupl icado; 10 { return valor; )
26 void e l i m i n a r f Comparable x > th row s Ele m entoN oE r.contrado; 11
27 oid elim inarM inl ) throws Elem entoNoEncontrado; 12 p u b l i c i n t c om para( Comparable l d e r I
28 om parableb u s c a r ( Comparable x > throws Ele m er.toN oEncontrado; 13 ( r e t u r n v a l o r . compareTo! ! (MiCadenal lder).valor I; )
29 Comparable buscarM in! ) throws ElementoNoEncontrado; 14
30 Comparable buscarMax( ) throws ElementoNoEncontrado; 15 p u b l i c b o o l e a n monorQue! C o m p a ra b le lder )
31 boolean esvacio( ) ; 16 ( r e t u r n compara! rh s ) < 0 ; J
32 void v a c i a r ! I; 17
33 void i m p r i m i r A r b o l < I; 18 p u b lic boolean eq u als! O bject lder )
34 19 { r e t u r n v a l o r . e q u a l s ( <( M i C a d e n a l lder».valor ); )
20
Figura 6.18 Interfaz d e á rb o l binario d e búsqueda. 21 p u b l ic i n t h ash! ir.t tamanyoTabla )
22 { r e t u r n TablaF.xploracionCundrat ica .h ash ! valor.
23 tamanyoTabla ); }
E sto a ju s te se hasa e n e l m é to d o c o m p a r a q u e d e b e s e r im p le m e n ta d o p o r lo s o b 24
25 private S trin g valor;
je to s d e la c la s e C o m p a r a b l e . S i un e le m e n to n o s e e n c u e n tra , b u s c a r la n /a u n a
26 >
e x c e p c ió n . É sta e s u n a d e c is ió n d e d is e ñ o : o tr a p o s ib ilid a d h a b ría sid o d e v o lv e r
sim p le m e n te n u i l c u a n d o n o >e e n c u e n tra e l e le m e n to b n s ia d o I a d ife re n . íit há- Fiaura 6.19 C la s e V . C a d e n a p a r a p r o b a r los p r o g r a m a s d e las F e ú r a s 6 20 y 6.23
1 im p o r t E at r u c t u r a a l i a t o e . * ; un á rb o l b in a rio , y p o r ta n to re q u ie re u n a s o b re c a rg a d e d o s re fe re n c ia s p o r e le
2 im p o r t E x c e p c i o n e s .* ; m en to . U n a v a ria n te m á s e la b o r a d a q u e so p o rta a c c e s o s e fic ie n te s e n e l c a s o p e o r
3
n e c e sita m á s e s p a c io a d ic io n a l p o r e le m e n to . El C a p ítu lo 18 d a m á s d e ta lle s sobre
4 Programa sim p le p a r a p ro b a r lo s a r b o l e s de búsqueda
5 la im p le m e n ta c ió n d e lo s á rb o le s d e b ú s q u e d a b in ario s.
6 public tinal class T e s t A r b o 1Bu s q u e & a
7 {
8 public static v o i d tna:n( String [ J args j 6.7 Tablas hash
9 {
10 A r b o l B úsque da a - new A r b o l B l n a r i o B u s q u w d n ( ); M u c h a s a p lic a c io n e s re q u ie re n b ú s q u e d a d in á m ic a b a sa d a só lo e n u n n o m b re. La
11 MiCadena r e s u l t a d o = n u i l ; a p lic a c ió n c lá s ic a e s la ta b la d e s ím b o lo s d e u n c o m p ila d o r. M ie n tra s c o m p ila un
12
p ro g ra m a , e l c o m p ila d o r d e b e g u a rd a r lo s n o m b re s (in c lu y e n d o tip o s , á m b ito y
13 t r y ( a . i n s e r t a r » n e w M i C a d e n a ( ' S u s a n a * ») ; }
a sig n a c ió n d e m e m o ria ) d e to d o s los id c n lific a d o re s d e c la ra d o s. C u a n d o e n c u e n tra
14 c a t c h í Elem entoDuplicado e ) ( ) / / N o puede ocurrir
15 un id c n tific a d o r fu e ra d e u n a in s tru c c ió n d e d e c la ra c ió n , e l c o m p ila d o r c o m p ru e b a
16 try si y a h a s id o d e c la ra d o . S i e s a sí. e l c o m p ila d o r e x tr a e la in fo rm a c ió n c o rre sp o n
17 ( d ie n te d e la ta b la d e sím b o lo s.
18 resultado = Y a q u e lo s á rb o le s b in a rio s d e b ú sq u e d a s o p o rta n u n a c c e s o e n tie m p o lo g a rít LOS
19 (M iC ad ena ) a . b u s c a r ! new M i C a d en a ! ' S u s a n a * ) ); *>P
m ic o a e le m e n to s c o n n o m b re a rb itra rio s , ¿ p o r q u é n e c e s ita m o s u n a n u e v a e s tru c
20 S y s t e m , o u t . p r i r . t I ‘E n c o n t r a d a ’ + r e s u l t a d o * ■;* ); elirr
} tu ra d e d a to s ? L a re s p u e sta e s q u e u n á rb o l b in a rio p o d ría p ro d u c ir u n c o s te lineal
21 bús<
22 c a tc h ! EiementoNoEncontrado e ) e n tie m p o p o r a c c e so , y a se g u ra r u n c o s te lo g a rítm ic o re q u e r iría a lg o ritm o s b a s lien
23 { S y s t e m . o u t . p r i n t l " S u sa n a no e n c o n t r a d a ; " ); ) ta n te so fistic a d o s. 0>0'
24 L a s ta b la s h a sh so n u n a e s tru c tu ra d e d a to s q u e e v ita n e s te cas»» peor, c o n s i
25 try g u ie n d o a d e m á s o p e ra c io n e s e n tie m p o c o n s ta n te , c a s i c o n se g u rid a d . U n ren d i LO S
26 { son
m ie n to d e g e n e ra d o e s p o sib le , p e ro e x tre m a d a m e n te im p ro b a b le . P o r ta n to , e n la cas
27 resultado =
28 ( M i C a d e n a ) a . b u s c a r ( n e w M i C a d e n a í “J u a n * > I ; práctica e l tiem p o d e acceso a cu a lq u ie r e lem en to n o d e p e n d e del n ú m e ro d e e le m e n son
29 S y s t e m . o u t . p r i n t < ' E n c o n t r a d o " * r e s u l t a d o • ••;* ) ; tos e n la tabla. L as tablas hash ta m b ién e v ita n rep elid as llam ad as a las ru tin as d e g es Olrx
30 ) tión d e la m em o ria. E sto las h ace tam bién m á s ráp id as e n la práctica. U n b en eficio DÚS
31 c a t c h í Elom*r.toNoEncontrado e l ad icio n al ele la s ta b la s h ash es q u e. a l co n trario d e lo s árb o les b in ario s d e búsqueda,
32 { S y s t e m .o u t .p r i n t ( * Juan no encontrado;* ); J
n o req u ieren q u e los o b je to s im p lem en lad o s im p lem en ten la in terfaz C o m p a r a b l e .
33
L as o p e ra c io n e s p e rm itid a s s e m u e s tra n e n la F ig u ra 6 .2 1 . y la in te rfa z se Par
34 S y stem .out.println( >;
m u e s tra e n la F ig u ra 6 .2 2 . A h o ra , la in s e rc ió n d e u n e le m e n to re p e tid o n o p ro d u ce une
35
det
36 ) e l la n z a m ie n to d e u n a e x c e p c ió n . L n v e / d e e llo , e l n u e v o e le m e n to re e m p la z a al
pro
viejo . L a s ta b la s h ash s ó lo fu n c io n a n c o n e le m e n to s q u e im p le m e n ta n la in te rfa z ún
Figuro 6.20 Program o ejem plo c o n árboles d e búsqueda la salida e s E n c o n t r a d a
Susana; Ju an no en co n trad o ;. H a s h a b l e . L a in te rfa z H a s h a b l e re q u ie re u n a fu n c ió n lutsli. q u e c o n v ie rte e l o b cor
je to H a s h a b l e e n u n e n te ro . T ie n e la sig u ie n te d e c la ra c ió n : ssp
ont
R e su m im o s a h o ra lo s tie m p o s d e e je c u c ió n d e e sta s o p e ra c io n e s . T e n e m o s e s i / D evuelve un e n te r o e n t r e 0 y tam anyoT abla - 1
p e r a n /a s d e q u e e l c o s te d e los m é to d o s b u s c a r , i n s e r t a r y e l i m i n a r se a . e n in t h a s h ( in t tam anyoTabla ) ;
e l c a s o p e o r, ( X log V ) . c o m o s u c e d e e n e l c a s o d e la b ú sq u e d a b in a ria e stática.
IX 'sg ra c ia d a m e n te . c o n la im p le m e n ta c ió n m á s s im p le d e lo s á rb o le s b in a r io s d e
b ú sq u e d a , e s to n o o c u rre . E l c a s o m e d io e s e n e fe c to lo g a rítm ic o , p e ro e l c a s o
p e o r e s O (A '). y p u e d e p re s e n ta rs e c o n c ie rta fre c u e n c ia . S in e m b a rg o , a p lic a n d o
a lg u n o s tru c o s a lg o rítm ic o s , p o d e m o s o b te n e r u n a e s tru c tu ra a lg o m á s c o m p le ja ,
q u e s í tie n e u n c o s te O l lo g .V) p o r o p e ra c ió n .
¿ Q u é o c u rre c o n lo s p ro c e d im ie n to s b u s c a r M i n . b u s c a r M a x y e l m á s g e n e
ral b u s c a r K e s i m o ? E n e l c a s o d e la b ú s q u e d a b in a ría , so n c la r a m e n te o p e ra c io
n es c o n sta n te s, p o rq u e in d e x a m o s un v e c to r. E n e l C a p ítu lo 18 v e re m o s q u e e sta s
o p e ra c io n e s ta rd a n lo m is m o e n u n á rb o l b in a rio d e b ú sq u e d a q u e la o p e ra c ió n
b u s c a r , e s to e s . CXIog ;V ) e n p ro m e d io , a u n q u e ( H \ ) e n e l c a s o p e o r. C o n su fi
c ie n te c u id a d o , la c o la e n e l c a s o p e o r p u e d e s e r re d u c id a a íX Io g N ) . C o m o s u Figura 6.21 M odoto d e las tablas hash cu alq u ier elem ento c o n nom bre p u e d e ser
g ie re e l n o m b re d e la e s tru c tu ra , e l á rb o l b in a r io d e b ú sq u e d a se im ple-m enta c o m o a c c e d id o o bo rrad o e n un tiem po e sen cialm en te constan te
packago K atructuranD atoa;
(E o s d e ta lle s d e c ó m o im p le m e n ta r la fu n c ió n h ash se v e rá n e n e l C a p ítu lo l ‘>.
port Soporte.*; d o n d e s e p ro p o rc io n a u n a fu n c ió n q u e fu n c io n a p a ra v a lo re s d e tip o s t r i n g . ) El
port E x c e p c i o n e s .*; m é to d o e q u a l s d e b e s e r ta m b ié n so b re sc rito . L a F ig u ra 6 .1 9 m u e s tra c ó m o los
o b je to s d e M iC a d c n a im p le m e n ta n la in te rfa z H a s h a b l e . p ro p o rc io n a n d o la s fu n
Interfaz TablaHash c io n e s h a s h y e q u a l s . E n la f i g u r a 6 .2 3 . s e m u e s tra u n e je m p lo d e l u s o d e tablas
h a sh s o b re o b je to s Mi C a d e n a .
...................................................... OPERACIONES PÚBLICAS............................................ U n u so c o m ú n d e las ta b la s h a s h lo re p re se n ta n lo s d ic c io n a rio s. U n d i n io m i
void i n s e r t a r ( x J --> in s e rta x n o a lm a c e n a o b je to s fo rm a d o s p o r u n a c la v e , p o r la c u a l s e h u s c a e n e l d ic c io n a alrr
void e lim in a r! x » --> Elim ina x dolí
rio. y su d e fin ic ió n , q u e e s lo q u e s e d e v u e lv e . P o d e m o s u tili/a r u n a ta b la hash
Hashable b u sc a r! x ) --> Devuelve e l elem entoquea j u s t a con x
p a ra im p le m e n ta r u n d ic c io n a rio d is ta n c iá n d o la d e la sig u ie n te m anera:
void v a c ia r! ) --> Elim ina todos l o s elem entos
......................... ERRORES..................... ................................................... 1. E l o b je to a lm a c e n a d o e s d e u n a c la s e q u e a lm a c e n a la c la v e y su d e fin i
b u s c a r y e l i m i n a r lanz an ElementoNoEncontrado c ió n .
in s e rta r so b re sc rib e e l v alo r a n te r io r en caso de re p e tic ió n 2. L as fu n c io n e s d e ig u a ld a d y d e sig u a ld a d y la fu n c ió n h ash s e b a s a n so la
m e n te e n la p a rle c la v e d e l o b je to a lm a c e n a d o
>lic í n t e r f a c e T ab la H a s h
3. U n a b ú sq u e d a s e re a liz a c o n s tru y e n d o un o b je to e c o n la c la v e y re a liz a n
IT void insertar! Hashable x ); d o b u s c a r e n la ta b la h ash
4. I.a d e fin ic ió n s e o b tie n e u tiliz a n d o u n a re fe re n c ia f a la q u e s e le a s ig n a el
20 void e lim in a r! Hashable x) th ro w s ElementoNoEncontrado;
21 Hashable b u s c a r! Hashable x | th ro w s Elem entoNoEncontrado; v a lí* d e v u e lto p o r b u s c a r . E l c a m p o d e fin ic ió n d e f e s lo q u e b u sc a m o s.
•a void v a c ia r ! );
23 1
A u n q u e lo s tr a b a jo s e n v ia d o s a u n a im p re so ra g e n e ra lm e n te s e c o lo c a n e n u n a la j
c o la, é s ta p u e d e n o sie m p re s e t la m e jo r o p c ió n . P o r e je m p lo , un tr a b a jo p u e d e se r p/it
im p o r t E s t r u c t u r a s D a t o s .*; oc>
p a rtic u la rm e n te im p o rta n te , p o r lo q u e q u e rría m o s e je c u ta rlo ta n p ro n to c o m o la
import E x cep cio n es.* ; al i
im p re so ra e s té d is p o n ib le . A la in v e rsa , c u a n d o la im p re so ra te rm in a u n tra b a jo y
e s tá n e s p e ra n d o v a rio s tr a b a jo s d e u n a p á g in a y u n tr a b a jo d e 100 p á g in a s . p«>dría
/ Programa s im p le p a ra pro b a r las tablas hash
se r ra/i> n u b le im p rim ir e l trabaje» la rg o e l ú ltim o , a u n c u a n d o n o s e a e l ú ltim o tr a
public f i n a l c l a s s TestTablaHash baje* e n v ia d o . (D e sg ra c ia d a m e n te , la m a y o ría d e le*s siste m a s n o h a c e n e sto , le» q u e
pueele se r p a rtic u la rm e n te m o le s to e n o casiones.»
public static v o id main! String [ | args ) I V la m ism a m a n e ra , e n u n ent«*rno m u ltiu su a rio . e l p la n ific a d o r ele ta re a s del
s iste m a o p e ra tiv o d e b e d e c id ir q u é p ro c e s o e je c u ta rá e n tr e varu>s. G e n e ra lm e n te , a
T a b l a H a s h h = new T a b l a F . x p l o r a c i o n C u a d r a t i c a ! >; c a d a p ro c e s o se’»lo s e le p e rm ite esta r e je c u tá n d o s e d u ra n te u n peru»do ele tiem p o
MiCadena r e s u l t a d o = n u i l ;
lije». U n p o sib le a lg o r itm o d e g e s tió n u ti li /a u n a c o la . Le*s tra b a jo s \ c c o lo c a n mi-
c iu lm c n tc a l fin al do la c o la . E l p la n ific a d o r h a rá re p e tid a m e n te lo sig u ien te: t o
h.insertar! new M i C a d e n a < new S t r i n g ! "Susana* ) i )j
m a rá e l p rim e r tr a b a jo e n la c o la , l o e je c u ta rá h a s ta q u e te rm in e o a g o te su lím ite
d e tie m p o , y lo v o lv e rá a c o lo c a r al fin a l ele la c o la si n o h a term in a d o . G e n e ra l
m e n te . e s ta e s tra te g ia n o e s m uy a p io p ia d a p o rq u e lo s tra b a jo s c o rto s d e b e n e s p e
17 resultado - (MiCadana) ra r m u c h o , p o r lo q u e p a re c e q u e ta rd a n m u c h o e n e je c u ta rs e . C la ra m e n te , los
:* h . b u s c a r ! new M iCaden a! ‘ S us ana * | ); u su a rio s q u e e s tá n u tiliz a n d o un e d ito r n o d e b e ría n v e r c o n g ra n re tra so lo s c a r a c
S y s te m .o u t.p r in tln ! 'E n co n trad a * * r e s u l ta d o ); te r e s e s c rito s . E n c o n s e c u e n c ia , lo s tr a b a jo s c o rto s (e s d e c ir, a q u é llo s q u e c o n s u
20
m e n p o c o s re c u rs o s ) d e b e ría n ten er p re fe re n c ia s o b re trabaj<*s q u e y a h a n c o n s u
** c a tc h ! ElementoNoEncontrado e )
m id o g ra n c a n tid a d tic re c u rs o s P e ro ta m b ié n a lg u n o s trahaj«v. d e c o n s u m o
^ ' S y s t e m . o u t . p r i n t l n ! ‘S u s a n a no s e h a e n c o n t r a d o * j; J
in te n siv o , c o m o p o r e je m p lo l»*s e je c u ta d o s p o r e l a d m in is tra d o r d e l siste m a , p o
24 ) d ría n se r m u y im p o rta n te s, p o r lo q u e d e b e ría n ta m b ié n te n e r p re fe re n c ia
Si a sig n a m o s a c a d a tra b a jo u n n ú m e ro p a ra m e d ir su p rio rid a d , lo s v alo res
Figuro 6.23 P ro g ram a d e ejem plo c o n ta b la s hash La sa lid a es E n c o n t r a d a m e n o re s (p á g in a s im p re sa s , re c u rs o s u tiliz a d o s ) a s ig n a rá n u n a m a y o r im p o rtu n a n
Susana.
P o r ta n to , u u c re m o s s e r c a p a c e s d e a c c e d e r a l e le m e n to m e n o r d e u n a co le c c ió n
do d e m o n i o s , y e lim in a r lo d o la c o le c c ió n . S o o b tie n e n a s i la s o p e ra c io n e s 1 im port E s tru c tu ra s D a to s .* ;
b u s c a r Mi n y e l i m i n a r M i n . L a e s tru c tu r a d e d a lo s q u e s o p o rta e sta s o p e ra c io 2 im port E xcepciones.*;
3 import S o p o rta .* ;
n es o s la d e n o m in a d a c o la d e ¡ m o n d a d . L a F ig u ra 6 .2 4 ilu stra la s o p e ra c io n e s b á
4
sicas d e la s c o la s d e p rio rid a d .
5 / / Program a sim.ple p a r a p r o b a r l a s c o l a s d e p r i o r i d a d
lu í F ig u ra 6 .2 5 m u e s tra la in te rfa z do la s c o la s do p rio rid a d , y u n p ro g ra m a 6 public fin a l c la s s T estC olaPrioridad
e je m p lo q u e ilu stra su u so so m u e s tra e n la F ig u ra 6 .2 6 . E l p ro g ra m a e je m p lo u tili 7 {
za u n a c o la d e p rio rid a d b a sta n te so fistic a d a , d e n o m in a d a m o n tíc u lo do e m p a re ja 8 public s ta tic v oid maint S tr in g [ | arys )
m ie n to s. q u e s e d is c u to e n e l C a p ítu lo 2 2 . C o m o e s u su a l, u n o n o n e c e sita sa b e r 9
10 C olaPrioridad c p = new M c n t i r u l o E m p a r e j a m i e n t o s l 1;
n a d a a c e rc a d e l m o n tíc u lo do e m p a re ja m ie n to s , e x c e p to q u e im p lo m o n ta la in te r
11
fa z d e las c o la s d e p rio rid ad .
12 cp . i n s e r t a r ! new K iE n te ro 1 4 ) I:
I n a v ez m á s . d e b e m o s p re g u n ta r: ¿ p o r q u é n o u s a r u n á rb o l b in a rio d e b ú s 13 cp . i n s e r t a r ( new M i E n t e r o 1 2 ) );
q u e d a ? Y u n a v e z m á s . la re s p u e sta e s q u e lo s á rb o le s b in a rio s d e b ú sq u e d a son 14 cp . i n s e r t a r ! new M iE ntero I 1 ) >;
in n e c e sa ria m e n te p o te n te s, tie n e n un re n d im ie n to p o b re e n e l c a s o p e o r, y re q u ie 15 cp . i n s e r t a r ! new M iE ntero l i l >;
16 cp . i n s e r t a r ! new M iE n tero l 0 l );
ren la s o b re c a rg a d e d o s re fe re n c ia s a n o d o s p o r e le m e n to . U tiliz a n d o u n á rb o l b i
17
n ario d e b ú sq u e d a s o fis tic a d o g a ra n tiz a ría m o s un re n d im ie n to lo g a rítm ic o e n el 18 System .O U t.print! 'C ontenido:* );
c a s o p e o r. P e ro p a ra lo g ra rlo n e c e s ita ría m o s un c ó d ig o e la b o ra d o q u e n o s c o n d u - 19 try
20
in sercav 21 for! ; ; )
22 S y s te m .o u t.p rin t( * * • cp.elim inarM in( ) );
23
24 catch! D esbordam ientolnferior e I { }
\ C o la de 25
26 S ystem .out.printlnI );
prioridad 27
28 )
Figura 6.24 M o a e lo d e c o la d e prioridad sólo e l e lem en to mínim o es accesib le. Figura 6 .2 6 Prog ram a ejem plo c o n co la s d e prioridad La salid a e s C o n t e n i d o :
0 12 3 4
publ ic c la s s D iccionario
Ejercicios
ni L a s pilas.
Prácticas de program ación
b) L a s c o la s ,
l n a p ila p u e d e s e r im p le m e n ta d a u tiliz a n d o un v e c to r y m a n te n ie n d o e l ta
r) L a s c o la s d e p rio rid a d .
m a ñ o a c tu a l. L os e le m e n to s d e la p ila s e a lm a c e n a n e n p o sic io n e s c o n s e
c u tiv a s d e l v e c to r, c o n e l e le m e n to d e la c im a s ie m p re e n la p o sic ió n 0.
Problemas teóricos O b se rv e q u e é s te n o e s e l m é to d o m á s e fic ie n te S e p id e h a c e r lo siguiente:
Recursión
U n m é to d o p a rc ia lm e n te d e fin id o e n té rm in o s d e s í m ism o re c ib e e l n o m b re
d e re c u rsivo . C o m o m u c h o s o tr o s le n g u a je s . J a v a s o p o rta m é to d o s re c u r s i
v o s. L a re c u rsió n . c o n s is te n te e n e l u s o d e m é to d o s re c u rsiv o s , e s u n a h e
rra m ie n ta d e p ro g ra m a c ió n p»*tenlc q u e e n m u c h o s c a s o s p u e d e p ro d u c ir a lg o rit
m o s c o rto s y e fic ie n te s. E ste c a p ítu lo e s tu d ia c ó m o fu n c io n a la re c u rsió n .
p ro p o rc io n a n d o u n a v isió n d e su s v a ria c io n e s , sus lim ita c io n e s y a lg u n o s d e sus
n u m e ro so s u so s. L a d is c u sió n so b re la re c u rsió n c o m ie n z a c o n u n e x a m e n del
p rin c ip io m a te m á tic o e n e l q u e s e b asa: la in d u c c ió n m a te m á tic a . D e sp u é s s e p riv
p o rc io n a n e je m p lo s d e m é to d o s re c u rsiv o s s im p le s y se d e m u e s tra q u e é s to s g e n e
ran re s p u e s ta s co rre c ta s.
E n e s te c a p ítu lo verem os:
• L a s c u a tr o re g la s b á s ic a s d e la re c u rs ió n . y v a n o s e je m p lo s sen cillo s.
• \p lic a c io o e s n u m é r ic a s d e la re c u rs ió n q u e n o s c o n d u c e n a la im p le m e n ta
c ió n d e un a lg o ritm o d e e n c n p ta c io n .
• U n a té c n ic a g e n e ra l lla m a d a d iv id e y v e n cerá s.
• U n a té c n ic a g e n e ra l lla m a d a p r o g r a m a c u m d in á m ic a q u e e s sim ila r a la r e
c u rs ió n p e ro q u e u sa ta b la s e n lu g ar d e lla m a d a s re c u rsiv a s.
• U n a té c n ic a g e n e ra l lla m a d a v u e lta a lia s q u e c o n siste e n u n a b ú sq u e d a s is
te m á tic a y e x h a u stiv a .
7.1 ¿Q u é es la recursión?
L a re c u rs ió n e s u n a h e rra m ie n ta m u s p o te n te d e re s o lu c ió n d e p ro b le m a s. M u
c h o s a lg o ritm o s se p u e d e n e x p re s a r m á s fá c ilm e n te u s a n d o u n a fo rm u la c ió n re c u r C la ra m e n te , e l te o r e m a e s c ie r to p a r a X = I . S u p o n g a m o s q u e e l te o re m a
siv a. ^ lo q u e e s m á s . h a y m u c h o s p ro b le m a s c u y a s so lu c io n e s m á s e fic ie n te s e s c ie r to p a r a to d o I < N < k . C o to n ees
u sa n e s ta fo rm u la c ió n re c u rsiv a n a tu ra l. P e ro d e b e m o s se r c u id a d o s o s p a ra n o
c re a r u n a ló g ic a c irc u la r q u e p ro d u z c a b u c le s in fin ito s. i ; ♦ , ' / = (* + D + i } = , ¿ . «7.i»
E n e s te c a p ítu lo s e e s tu d ia n la s c o n d ic io n e s g e n e ra le s q u e d e b e n sa tisfa c e r los
a lg o ritm o s re c u rsiv o s , o fre c ié n d o s e v a rio s e je m p lo s p rá c tic o s . T a m b ié n m u estra P u e sto q u e ¡fo r h ip ó te sis e l te o r e m a e s c ie r to p a r a k . p o d e m o s s u s titu ir la
q u e e n o c a s io n e s lo s a lg o ritm o s q u e se e x p re s a n d e u n a fo rm a n a tu ra l e n m o d o su m a d e l la d o d e re c h o d e la E c u a c ió n 7 .1 p o r A (A -t 1 ) 2 . o b te n ie n d o
re c u rs iv o d e b e n re s c rib irs e sin re c u rs ió n p a ra c o n s e g u ir m a y o r e fic ie n c ia .
I * * , 1 / - < * + I ) + k i k + I )/2. (7 .2 )
U n a m a n ip u la c ió n a lg e b r a ic a d e l la d o d e r e c h o d e la E c u a c ió n 7.2 p r o d u
7.2 Fundamentos: dem ostraciones ce ahora
E s to c o n firm a e l te o r e m a p a r a e l c a s o k + I. lu ie g o . p o r in d u c c ió n , e l te o
E n e s ta s e c c ió n se e s tu d ia la té c n ic a tic d e m o s tra c ió n m e d ia n te in d u c c ió n m a te m á
r e m a e s c ie r to p a r a lo d o s lo s e n te r o s V ? I .
tic a . (A lo la rg o d e e s te c a p ítu lo , se o m itirá la p a la b ra m a te m á tic a a l r e f e r im o s a
e s ta té c n ic a .) I.as d e m o s tra c io n e s p o r in d u c c ió n se u s a n h a b itu a lm e n te p ara d e
m o s tra r te o re m a s q u e c u m p le n lo s e n te ro s p o sitiv o s. P ara ilu s tra r la té c n ic a , c o ¿ P o r q u é c o n s titu y e e s to u n a p ru e b a .’ E n p rim e r lu g ar, e l te o re m a e s c ie rto
m e n z a re m o s p o r d e m o s tra r un te o re m a se n c illo . S e ría fácil d e m o s tra r e s te te o re m a p a ra X = I . al c u a l se le lla m a c a s o b a se. S e p u e d e v e r c o m o la b a s e d e n u e stra
u s a n d o o tr o s m é to d o s, p e ro s u c e d e b a sta n te a m e n u d o q u e u n a p ru e b a p o r in d u c c o n fia n z a e n q u e e l te o r e m a e s c ie r to e n g e n e ra l. E l c a s o b a s e e s e l c a s o (o c a so s )
c ió n e s e l m e c a n ism o m á s se n c illo . s e n c illo q u e d e m o s tra m o s d ire c ta m e n te . U n a v ez e s ta b le c id o e l c a s o b a s e , p o d e
m o s s u p o n e r q u e e l te o re m a e s c ie rto p a ra u n k a rb itra rio , su p o s ic ió n q u e re c ib e el
n o m b re d e h ip ó te sis d e in d u c c ió n . E n to n c e s se d e m u e s tra q u e si e l te o re m a es
c ie rto p a ra k , ta m b ié n e s c ie r to p a ra k + I . E n n u e stro c a s o , a p lic a n d o e l p ro ceso ,
P a ra to d o e n te r o X ¡2 I. la s u m a d e lo s X p r im e r a s e n te r o s , d a d a p o r p u e sto q u e s a b e m o s q u e e l te o re m a e s c ie r to p a ra e l c a s o b a s e X = I . o b te n e m o s
L ,v= , i = I + 2 + ... + X . e s ig u a l a V(A' -►I > 2. q u e e s c ie r to p a ra N = 2. P u e sto q u e e s c ie r to p a ra X = 2 . ta m b ié n d e b e se rlo p a ra
;V = 3 . y p o r la n ío p a ra ;V = 4 . y a s í su c e siv a m e n te . D e e s ta fo rm a v e m o s q u e el
te o re m a e s c ie r to p a ra lo d o e n te r o p o s itiv o a p a rtir d e ,V = I.
7.3 Recursión b ásica
A p liq u e m o s la in d u c c ió n a u n s e g u n d o p ro b le m a n o tan sim p le c o m o e l a n te
L as d e m o s tra c io n e s p o r in d u c c ió n n o s m u e s tra n q u e s i s a b e m o s q u e u n a a firm a
rio r. C o n s id e ra m o s la se c u e n c ia d e n ú m e ro s I 2, 2 2 — l “, 3 2 - 2 2 + I 2.
c ió n e s c ie r ta p a ra lo s c a s o s m á s se n c illo s, y p o d e m o s d e m o s tra r q u e la c e rte z a
4 “ - 3* + 2 - I . 5 ' - 4 ' + 3 2 - 2 : + I \ e tc . C a d a m ie m b ro re p re s e n ta la s u
p a ra u n c a s o im p lic a la d e l sig u ie n te , e n to n c e s sa b e m o s q u e la a firm a c ió n e s c ie rta
m a c o n a lte rn a n c ia d e sig n o s d e lo s N p rim e ro s c u a d ra d o s . L a s e c u e n c ia s e e v a lú a
a 1 , 3 . 6 . 10 y 15. P a re c e q u e . e n g e n e ra l, la su m a se rá e x a c ta m e n te ig u a l a la d e p a ra to d o s lo s c a s o s .
E n o c a s io n e s las fu n c io n e s m a te m á tic a s se d e fin e n re c u rsiv a m e n te . P o r e je m - ur
lo s K p rim e ro s e n te ro s, q u e . p o r e l T e o re m a 7 .1 . e s N ( N + \ )(2 . El T e o re m a 7 .2
d e m u e s tra e s te hecho. p ío . si S ( N ) d e n o ta la su m a d e lo s N p rim e ro s e n te r o s , te n e m o s S( I ) = I . y p o d e - sir
m o s e s c r ib ir 5<A0 = 5 ( V - I ) + N . H e m o s a s í d e fin id o la fu n c ió n S e n té rm in o s de
u n a in s ta n c ia m á s p e q u e ñ a d e s í m ism a . 1.a d e fin ic ió n re c u rsiv a d e S(Af> e s e q u iv a - J
le n te a la fo rm a e x p líc ita S (N ) = N ( N + I ) 2 . e x c e p to p o r e l h e c h o d e q u e la d e tim - m|
Im s u m a Z ,L iS< - I )v ' r = N2 - (N - 1 >2 + ( N - 2 )2... e.v ig u a l a
c ió n re c u rsiv a so la m e n te v a le p a ra e n te ro s p o s itiv o s y su v a lo r n o p u e d e c a lc u la r- ai(
N iN + 1)/2.
se d e fo rm a ta n d ire c ta .
A lg u n a s v e c e s e s m á s fá c il d e fin ir u n a fu n c ió n re c u rs iv a m e n te q u e h a c e rlo e n J
Im d e m o s tr a c ió n e s p o r in d u c c ió n .
fo rm a e x p líc ita . E n l a F ig u ra 7.1 se m u e s tra u n a im p le m e n ta c ió n d ire c ta d e la f u n
c ió n re c u rs iv a .V. E l c a s o N = I e s e l c a s o b a se , p a ra e l q u e s a b e m o s q u e 5( I ) = I .
C a so b a se : c la r a m e n te , e l te o r e m a e s c ie r to p a r a N = I .
E ste c a s o s e tra ta e n las lín e a s 5 y 6 . E s e l c a s o b a s e d e la re c u rsió n . p u e s e s la
in sta n c ia q u e s e p u e d e re s o lv e r sin lla m a d a s re c u rsiv a s . E n o tro c a s o , a p lic a m o s la
H ip ó te s is d e in d u c c ió n : s u p o n d r e m o s q u e e l te o r e m a e s c ie r to p a r a k:
d e fin ic ió n re c u rs iv a S íM = SbV - I > + N . s itu a d a e n la lín e a 8. E s d if íc il im a g in a r
I , V - f i f i » . u n a fo rm a m á s se n c illa d e im p le m e n ta r la fu n c ió n re c u rsiv a . E n to n c e s, la p re g u n ta
n atu ra l e s , ¿ fu n c io n a e s to re a lm en te?
P a so in d u c tiv o : d e b e m o s d e m o s tr a r q u e e l r e s u lta d o e s c ie r to p a r a k + I ; L a re s p u e s ta e s sí. C o n las lim ita c io n e s q u e d is c u tire m o s e n u n o s m o m e n to s,
es d e c ir , q u e e s ta ru tin a fu n c io n a c o rre c ta m e n te . V e a m o s c ó m o se e v a lú a la lla m a d a a s <4 >.
v. , . <*+!><* + 2) C u a n d o s e lla m a a s ( 4 ) . e l te s t d e la lín e a 5 fa lla , p o r lo q u e s e e je c u ta la lín e a 8.
“ <= * -*■i * — 1 ■ ----------- 1 ----------- • E sc rib im o s
d o n d e e v a lu a m o s s <3 >- C o m o e n e l c a s o d e o tro m é to d o c u a lq u ie ra , e s to req u ie re
u n a lla m a d a a s . c o n lo q u e lle g a m o s a la lín e a 5. d o n d e e l te st fa lla , p o r lo q u e
E ' - J + 1< - i >‘ * 1 ' ‘i2 = « + i >2 - I r + ( k - i )2. . . . (7 J) v a m o s a la lín e a 8. E n e s te p u n to lla m a m o s a s ( 2 ) . c o n lo q u e . d e n u e v o , lla m a
m o s a s s ie n d o a h o ra n ig u a l a 2. E l test d e la lín e a 5 v u e lv e a fa lla r, p o r lo q u e
S i re s c rib im o s e l la d o d e r e c h o d e la E c u a c ió n 7.3 o b te n e m o s lla m a m o s a s (1 ) e n la lín e a 8. A h o ra te n e m o s q u e n e s ig u al a 1. c o n lo q u e s 11)
d e v u e lv e I . E n e s te p u n to , p u e d e c o n tin u a r la e v a lu a c ió n d e s ( 2 ) . su m a n d o e l v a
s ¿ = * + , < - l ) * * , _ , í2 = ( k + I ) 2 - ( C - a ir ...» . lo r d e s i l ) a 2. c o n l o q u e s ( 2 ) d e v u e lv e 3. A h o ra c o n tin ú a la e v a lu a c ió n de
8 ( 3 ) su m a n d o e l v a lo r d e v u e lto p o r a ( 2 ) a n . q u e v a le 3 . c o n lo q u e s ( 3 ) d e
E s to p e r m ite u n a su s titu c ió n , o b te n ié n d o se v u e lv e 6 . E s to p e rm ite c o m p le ta r la lla m a d a a s ( 4 ) . q u e d e v u e lv e 10 fin alm en te.
O b se rv e q u e a u n q u e p a re c e q u e a s e e s tá lla m a n d o a s í m ism a , p o d e m o s in te r
S ,l= i . l( - l ) * " | - ' / 2 = « + I ) 2 I)‘ ^' / 2) (7.41 p re ta r q u e e n re a lid a d e s tá lla m a n d o a u n c l o n d e s í m ism a . D ic h o c lo n s e p u e d e
v e r c o m o u n m é to d o d is tin to q u e u sa un p a rá m e tro d ife re n te . E n c a d a m o m e n to
A p lic a n d o la h ip ó te sis d e in d u c c ió n . / yodem os s u s titu ir e l s u m a to r io d e l la so la m e n te h a y un c lo n a c tiv o : e l re s to e s tá n su s p e n d id o s. E s tr a b a jo d e l c o m p u ta
d o d e r e c h o d e la E c u a c ió n 7.4. o b te n ie n d o d o r y n o d e u n o lle v a r a c a b o las ta re a s d e b a jo n iv e l. E s c ie rto q u e si h u b iera
i d a a n ( - l ) . y e l p r o g r a m a f a l l a c v c n i u a l m c n l e p o r I ti ih r r i k 't i u « i j d u » lla m a d a * r e c u r x iv a * p e n d i e n t e * T e ñ e
a» h a s p r o g r e s o h a c i a u n c a s o h a * e - L l m é to d o t o S t r i n g d e J a v a p u e d e lo m a r c u a lq u ie r t a s e , p e r » m u c h o » le n g u a je s n o n e n e n e s ta ijp u c i d
L a s i t u a c i ó n e r r ó n e a m á s i n t e r e s a n t e a p a r e c e c u a n d o b a . s e e s I . C u a n d o tal
co sa suce de, la lla m ad a recu rs iva d e la línea 9 n o p r o g r e s a h a cia el c as o base, pu es E l a lg o r itm o i m p r i m e B a s e D i e z d e la F ig u ra 7 .2 im p rim e c o rr e c ta m e n te
los d o s p a rá m e t r o s d e la ll a m a d a re cursiva so n id én ti co s a los de la ll a m a d a ori gi n e n b a s e 10.
n a l . P o r e l l o e l s i s t e m a h a r á r e p e t i d a s l l a m a d a s r e c u r s i v a s h a s t a q u e s e q u e d e si n
e s p a c i o di sp o n ib le , m o m e n t o e n el q u e te rm in ará d e f o rm a p o c o e le ga nte la n zan d o S e a k e l n ú m e r o d e d íg ito s e n b a s e III d e n. luí d e m o str a c ió n s e r e a liza p o r V,
una excepción. in d u c c ió n s o b r e k.
P o d e m o s c o n s e g u i r q u e la rut ina sea m á s r obu sta a ñ a d i e n d o u n a c o m p r o b a
ción explícita del valor de b a s e . El problem a c o n dicha estrategia es que la c o m C a s o b a se : s i k = I. n o s e re a liza n in g u n a lla m a d a re c u rsiva , y la lín e a 7
p r o b a c i ó n se realiz aría e n c a d a u n a d e las ll a m ad a s recursivas a i m p r i m e E n t e r o . p r o d u c e c o r r e c ta m e n te c o m o s a lid a e l ú n ic o d íg ito d e n.
y n o s o l a m e n t e e n la p r i m e r a llamada. U n a v e z q u e b a s e e s vá lida e n la p ri m e ra
llamada, e s u n a tontería v o lv er a c o m p r o b a r lo , p u e s su valor n o c a m b i a a lo largo lii/H Íle sis d e in d u c c ió n : su p o n g a m o s q u e i m p t i m e B a s e D i e z fu n c io n a c o
d e las lla m ad a s recursivas, p o r lo q u e se guirá sie nd o válida. U n a f o r m a d e evitar r r e c ta m e n te p a r a to d o s lo s e n te r o s d e k > I d íg ito s.
esta incficiencia co nsiste e n in tro du c ir u n a rut ina guía. D i c h a ru tin a g u í a c o m F a so in d u c tiv o : v ea m o s q u e a fh ir lir d e e sta s h ip ó te sis p o d e m o s p r o b a r la
p r u e b a l a v a l i d e z d e b a s e y t r a s e l l o l l a m a a l a r u t i n a r e c u r s i v a . E n l a F i g u r a 7. 4 c o r r e c c ió n d e l a lg o r itm o p a r a c u a lq u ie r e n te r o n d e k + 1 d íg ito s. P u esto
se pre se nt a el p r o g r a m a d e im p re sió n c om ple to. El u s o de rutinas g u í a s o b r e p r o q u e k 2* I. la c o n d ic ió n d e la in stru c c ió n i f d e la lín e a 5 s e s a tis fa c e p a ra
g r a m a s r e c u r s i v o s e s u n a t é c n i c a habit ual. to d o e n te r o n d e k + I d íg ito s.
P o r h ip ó te sis d e in d u c c ió n , la lla m a d a re c u r siv a d e la lín e a ó im p r im e los
k p r im e r o s d íg ito s d e n. E n to n c e s la lla m a d a d e la lín e a 7 im p r im e e l ú lti
1 // Imprime n e n c u a l q u i e r base
2
m o d íg ito . P o r ta n to s i c u a lq u ie r e n te r o d e k d íg ito s s e im p r im e c o r r e c ta
3 s t a t i c f i n a l S t r i n g t a b l a D i g i t o s = , 0 1 2 3 4 5 6 7 8 9 a b c d e f •; m e n te . ta m b ié n s e im p rim irá c o r r e c ta m e n te u n o d e k + 1 d íg ito s . C o n c lu i
4 p r í v a t e s t a t i c f i n a l i n t maxBase ■ t a b l a D i g i t o s . l e n g t h ( ); m o s e n to n c e s q u e i m p r i m e B a s e D i e z fu n c io n a p a r a to d o k, y p o r ta n to
p a r a to d o n.
6 // R utina rocursiva
7 p u b l i c s t a t i c v o i d i n p r i - r e E n t e r o R e c <i n t n, in t base )
8 { L a d e m o s tra c ió n d e l T e o re m a 7 .3 ilu stra u n p rin c ip io im p o rta n te . C u a n d o se
9 lf< n >= b a s e ) d is e ñ a un a lg o ritm o re c u rs iv o , s ie m p re p o d e m o s a s u m ir q u e las lla m a d a s re c u rsi
>0 imprimeEnteroRec < n / b a se, b a s e );
v as in te rn a s fu n c io n a n c o rre c ta m e n te , y d ic h a su p o s ic ió n p o d rá u tiliz a rs e c o m o
11 S y s t e m . o u t . p r i n t I t a b l a D i g i t o s . c h a r A t ( n %b a s e I ) ;
12 J h ip ó te sis d e in d u c c ió n a l h a c e r la d e m o s tra c ió n d e la c o rre c c ió n .
13 A p rim e ra v is ta , ta l a s u n c ió n p u e d e p a re c e r e x tra ñ a . P ero re c u e rd e q u e a l ra z o
14 / / Ru t i r.a g u i a n a r e s tru c tu ra d a m e n te s o b re u n p ro g ra m a c o m p le jo n o re c u rs iv o , s ie m p re hem o s
15 p u b lic s t a t i c v oid imprim eEntero( i n t n. in t base )
16 { p o d id o s u p o n e r q u e las lla m a d a s a lo s m é to d o s fu n c io n a n c o rre c ta m e n te , y p o r
17 if( b a s e <= 1 | | b a s e > maxBase > ta n to la su p o s ic ió n d e q u e las lla m a d a s re c u rs iv a s fu n c io n a n n o e s m uy d ife re n te .
18 S y s te m .e r r .p r i n t ln ! 'B ase i l e g a l : ' * b a se ); C o m o c u a lq u ie r m é to d o , u n a ru tin a re c u rsiv a n e c e sita c o m b in a r las so lu c io n e s
19 else p ro d u c id a s p o r las lla m a d a s a o tr o s m é to d o s p a ra p ro d u c ir u n a s o lu c ió n , c o n la
20 {
p a rtic u la rid a d d e q u e ta le s m é to d o s p u e d e n s e r in s ta n c ia s m á s s e n c illa s d e l m é to
21 if< n < 0 )
22 ( d o o rig in a l.
23 n = -n; E sta o b s e rv a c ió n n o s c o n d u c e a la te r c e ra re g la fu n d a m e n ta l d e la recu rsió n :
24 S y s t e m . o u t . p r i n t ( ■-* ) ;
25 } 3. " P u e d e c r e e r lo • : a s u m a s ie m p re q u e to d a lla m a d a re c u rsiv a in te rn a f u n
26 im p rím e E n te ro R e c ( n , b a s e ) ; c io n a c o rre c ta m e n te .
27 }
28 ) I .a R e g la 3 n o s d ic e q u e c u a n d o d is e ñ a m o s u n m é to d o re c u rs iv o , n o te n e m o s U
q u e in te n ta r s e g u ir e l. p o sib le m e n te la r g o y to rtu o s o , c a m in o d e lla m a d a s re c u rsi
Fi guro 7. 4 P r o g r a m o robusto d e impresión d e números.
v a s. C o m o v im o s a n te rio rm e n te , é s ta p u e d e s e r u n a ta re a te d io s a q u e h a ría m u y Jj
d ifíc il e l d is e ñ o y v e rific a c ió n . D e h e c h o , e n m u c h a s o c a sio n e s, a u n q u e h a g a m o s „
7 .3 .2 ¿ P o r q u é f u n c io n a ? un b u e n u s o d e la re c u rsió n . d ic h a tr a z a p u e d e s e r c a s i im p o sib le d e co m p re n d e r.
In tu itiv a m e n te , e s ta m o s d e ja n d o q u e la m á q u in a s e o c u p e d e las ta re a s d e b a jo n i- c
E n esta sección se demuestra, de una forma rigurosa, que el a l g o r i t m o vcl ( la s lla m a d a s re c u r s iv a s in te rn a s), y a q u e si n o s o c u p á ra m o s n o s o tro s d ire c ta - *
i m p r i m e B a s e D i e z f u n c i o n a c o i r e c t a m c n t e . N u e s t r o o b j e t i v o e s v e r i f i c a r q u e el m e n te , e l c ó d ig o re s u lta n te se ría m u c h ísim o m á s larg o .
a lg o r itm o e s c o r re c to , por lo q u e a s u m i r e m o s q u e n o h e m o s c o m e t i d o n i n g ú n error E ste p rin c ip io e s ta n im p o rta n te q u e n o n o s c a n s a r e m o s d e re p e tirlo : a s u m a
en su codificación. sie m p r e q u e to d a lla m a d a re c u r siv a in te r n a fu n c io n a c o rr e c ta m e n te .
7.3.3 Cóm o funciona 7.3.4 D em asiada recursión p ued e ser peligrosa
Finura 7.5 P iln r io r o a ls tr n s r io n c t h / o c i ó n V del Una puMiCAHHi « t c n U l K j i r i n t e s i r a l de a l c a n c e iiH e in jc k k íjI \ cOMi w m I**
N o rm a lm e n te , h a c e r d o s lla m a d a s a u n m é to d o e n lu g a r d e u n a . d o b la r ía e l 1 / / E v a l ú a n!
2 public s t a ti c long fa c to r ia l! int n )
tie m p o d e e je c u c ió n d e un p ro g ra m a , p e ro e n e s te c a s o la situ a c ió n e s p e o r, p o r
q u e ta n to la lla m a d a a f i b ( n - l ) c o m o las lla m a d a s a f i b ( n - 2 ) h a c e n a su vez i f ( n < = 1 ) / / c a s o base
lla m a d a s a f i b ( n - 3 ) . lo q u e s ig n ific a q u e h a y e n re a lid a d tre s llam ad as r e t u r n 1;
a f i b ( n - 3 ) . A p a rtii d e a h í. la situ a c ió n s e v u e lv e a ú n p e o r: las lla m a d a s a else
f i b l n - 2 ) y a f i b ( n - 3 ) p ro d u c e n lla m a d a s a f i b ( n - 4 ) . c in c o e n to ta l. O b te n e return n * fa c to ria l( n - 1 );
m o s p o r ta n to u n e f e c to a c u m u la tiv o : c a d a lla m a d a re c u rs iv a p ro d u c e m á s y m ás
tr a b a jo red u n d an te. Figura 7.8 im plem entación recursiva d e la función f a c t o r i a l .
S e a C \ N ) c I n ú m e ro d e lla m a d a s a f i b d u ra n te la e v a lu a c ió n d e f i b ( n ) . C l a
Búsqueda binaria
ra m e n te . C (0 ) = C ( l ) = I. P a ra N ^ 2 . h a c e m o s la lla m a d a a f i b ( n ) . m á s to d a s
la s lla m a d a s q u e s e n e c e s ita n p a ra e v a lu a r f i b ( n - l ) y f i b ( n - 2 ) . re c u rs iv a e in
d e p e n d ie n te m e n te . L u e g o . C{ N) = C (V - I ) + C (N - 2 ) + I . P o r in d u c c ió n , p o d e
F.n la S e c c ió n 5 .6 .2 d e s c rib im o s la b ú sq u e d a b in a ria R e c u e rd e q u e e n u n a b ú s q u e
m o s fá c ilm e n te p ro b a r q u e p a ra N Z 3 se tie n e C(jV) = F v + 2 + F N _ , - I. En d a b in a ria , lle v a m o s a c a b o u n a b ú sq u e d a e n u n v e c to r o rd e n a d o A e x a m in a n d o e l
c o n s e c u e n c ia , e l n ú m e ro d e lla m a d a s re c u rs iv a s e s to d a v ía m a y o r q u e e l n ú m e ro e le m e n to d e l c e n tro . S i d ic h o e le m e n to e s e l q u e b u s c a m o s , y a h e m o s term in a d o .
d e E ib o n a c c i q u e q u e re m o s c a lc u la r y p o r e llo e s e x p o n e n c ia l. P o r e je m p lo ,
E n c a s o c o n tra rio , si e l e le m e n to q u e e s ta m o s b u s c a n d o e s m e n o r q u e e l e le m e n to
p ara N = 4 0 . F U) = 1 0 2 .3 3 4 .1 5 5 . m ie n tra s q u e e l n ú m e r o to ta l d e lla m a d a s re c u rsi del c e n tro , b u sc a m o s e n la m itad iz q u ie rd a d e l v e c to r, y si e s m a y o r, b u s c a m o s en
v as e s m a y o r q u e 3 0 0 m illo n e s. N o s e s o rp re n d a si su p ro g ra m a n o te rm in a . E n la
la m ita d d e re c h a . E sto , sie m p re q u e e l v e c to r e n c u e s tió n n o s e a v a cío , p u es s i lo
F ig u ra 7 .7 s e ilu stra e l c re c im ie n to e x p lo s iv o d e l n ú m e ro d e lla m a d a s re c u rsiv as.
e s. e n to n c e s c o n c lu im o s q u e e l e le m e n to b u s c a d o n o se e n c u e n tra e n e l v ecto r.
E ste e je m p lo ilu stra la c u a rta y ú ltim a re g la b á sic a d e la re c u rsió n :
E s to se tra d u c e d ire c ta m e n te e n e l m é to d o re c u rs iv o d e la F ig u ra 7.9. E l c ó d i
4. R e g la d e in te r é s c o m p u e s to : n u n c a d u p liq u e tr a b a jo re s o lv ie n d o la m ism a g o ilu stra la té c n ic a e n la q u e la ru tin a g u ía p ú b lic a h a c e u n a lla m a d a in ic ia l a una
in s ta n c ia d e un p ro b le m a e n lla m a d a s re c u rs iv a s se p arad as. ru tin a re c u rs iv a p riv a d a , y d e v u e lv e e l re s u lta d o re c ib id o (o re la n z a u n a e x c e p
c ió n ). A q u í, la g u ía in ic ia liz a lo s lím ite s in f e rio r y s u p e r io r d e l fra g m e n to d e l v e c
to r a 0 y a . l e n g t h - 1 .
1 /* *
2 • Lleva a cabo l a búsqueda b i n a r í a e s tá n d a r
3 * usando dos comparaciones por n iv e l.
4 • E s ta e s una g u í a que lla m a a l método recursivo.
5 V
6 public static int b u sq u e d a B in a ria ( Comparable | ] a,
7 Com parable x ) throw 3 ElementoNoEncontrae
1 p r iv a te void
2 p i n t a R e g l a ( G ra p h ics g, inc izd o . int deho, int nivel)
3 {
4 i£( nivel < 1 )
5 return;
6
7 int me d = ( i z d o * dc-ho ) / 2 ;
8
9 g . d r a w L i n e t med. 80. me d . 80 - n i v e l • 5 I;
10
11 p i n t a R e g l a <g . i z d o , raed - 1. n i v e l - 1 >;
12 p i n t a R e g l a <g . me d » 1, d e h o . n i v e l - 1 >
13 } Figuro 7.12 La figura d e la izquierda es una estrella fra c ta l d ib u jod a por e l progra
m a d e la Figura 7 13 La figura d e la d e re c h a e s la m ism a estrella antes
Figura 7.11 M é to d o recursivo p a ra d ibujar u n a regla d e a ñ a d ir e l últim o cu o d rad o
1 / / P in ta e l d ib u jo de l a F ig u ra 7.12 L o s a lg o ritm o s a q u í d e s c r ito s tie n e n la p ro p ie d a d d e q u e c u a n d o tra b a ja n con
2 p r i v a t e v o i d p m t a F r a c t a l ( G r a p h ic s g . i n t xCer.tro,
ese tip o d e o b je to s a ú n re q u ie re n u n a c a n tid a d ra z o n a b le d e tie m p o . S in em b arg o ,
3 i n t y C e n tro . i n t cotaDim )
4 { lo s m é to d o s q u e e s c rib im o s fu n c io n a rá n c o n e l tip o l o r . g . d e m o d o q u e p o d a m o s
5 int lado = c o t a D i m / 2; fá c ilm e n te c o m p r o b a r e l fu n c io n a m ie n to d e lo s a lg o ritm o s b á s ic o s . D e b id o a q u e
6 J a v a n o p e rm ite la s o b re c a rg a d e o p e ra d o re s, s e ría n e c e sa rio re s c rib ir e l c ó d ig o
7 if< lado < 1 ) u s a n d o m é to d o s c o n n o m b re , e n lu g a r d e o p e ra d o re s, si q u e re m o s u s a r o b je to s
8 return;
9 BigDecim al.
10 / / C álculo de la s esquinas
11 int izdo » xCentro - l a d o / 2;
12 in t sup = yC entro - lado 2;
13 in t dcho = xCentro » lado / 2; 7.4.1 Aritmética modular
14 int i n í = yC entro * lado / 2;
15
16 / / Dibujo recursivo de lo s c u atro cuadrantes E n lo s d is tin to s p ro b le m a s q u e a b o rd a m o s e n e s ta s e c c ió n , al ig u a l q u e s u c e d ía e n
17 pir.taF ractal < g. izdo. sup, cotaDim / 2 ); la im p le m e n ta c ió n d e la ta b la h ash d e la S e c c ió n 6 .7 y d e l C a p ítu lo 19. s e req u iere
18 p intaF ractal< g. iz d o . iní. c o ta D i m / 2 ); el u s o d e l o p e ra d o r d e m ó d u lo e n J u \ a . e l c u a l se d e n o ta m e d ia n te e l o p e ra d o r %.
19 pintaF ractal! g. d ch o . sup, c o ta D i m / 2 );
E ste o p e ra d o r c a lc u la e l re s to d e la d iv isió n e n tr e d o s v a lo re s d e tip o e n te ro . Por
20 pintaF ractal! g. dch o. inf. c o ta D im / 2 );
21 eje m p lo . 13% 10 se e v a lú a a 3 . al ig u a l q u e 3 * 1 0 y 23% lO . C u a n d o c a lc u la m o s e l
22 / / D ibuja el cuadro c e n t r a l . ques e so la p a con lo s cu ad ran tes re s to d e u n a d iv isió n p o r 10. e l ra n g o d e p o sib le s re s u lta d o s e s tá e n tre 0 y 9. E s to
23 g .£ i 11R e c t ( i z d o . s u p . d c h o - i z d o , i n f - s u p ) ; h ac e q u e e l o p e ra d o r * s e a ú til c u a n d o n e c e s ita m o s g e n e ra r e n te ro s p e q u eñ o s.
24 )
S i d o s n ú m e ro s A y R p ro d u c e n e l m is m o re s to a l d iv id ir lo s p o r A . d e c im o s
Figura 7.13 C ó d ig o p a ra dibujar la estrella fra c ta l d e la Fg u ra 7.12. q u e s o n c o n g ru e n te s m ó d u lo A . l o q u e s e d e n o ta p o r A «( m o d A >. E n ta l caso,
se c u m p lir á q u e A d iv id e a A - R. A d e m á s, e l re c íp ro c o ta m b ié n e s c ie rto : si A
d iv id e a A R. e n to n c e s A s « (m o d A ) . P u e s to q u e s ó lo h a y A p o sib le s re sto s
7.4 A p lica cio n es num éricas 0. I A - I — d e c im o s q u e lo s e n te ro s se div iden e n A c la s e s d e c o n g ru e n
c ia m ó d u lo A . E n o tr a s p a la b ra s, c a d a e n te r o se p u e d e c o lo c a r e n u n a d e las A c la
E sta se c c ió n e s tu d ia tre s p ro b le m a s q u e p ro c e d e n d e la te o ría d e n ú m e ro s. L a te o s e s . y a q u e llo s q u e p e rte n e c e n a la m ism a c la s e s o n c o n g ru e n te s e n tre sí. m ó d u lo
ría d e n ú m e ro s s e s o lía c o n s id e ra r u n a ra m a in te re sa n te p e ro in ú til d e las m a te m á A . H a y tr e s p ro p ie d a d e s im p o rta n te s q u e u s a m o s e n n u e s tro s a lg o ritm o s (d ejam o s
ticas. P e ro , e n lo s ú ltim o s 2 0 a ñ o s, h a su rg id o u n a im p o rta n te a p lic a c ió n d e la te o su d e m o s tra c ió n c o m o E je rc ic io 7.10):
ría d e n ú m e ro s: la s e g u rid a d d e lo s d a to s . L a d is c u s ió n c o m ie n z a c o n u n o s b re v e s
fu n d a m e n to s m a te m á tic o s , p a ra c o n tin u a r c o n s e n d o s a lg o ritm o s re c u rsiv o s p ara 1. Si A = R\ m o d A ). e n to n c e s p a ra c u a lq u ie r C . A + C = B + C (m o
2. Si A s « (m o d A >. e n to n c e s p a ra c u a lq u ie r />. A l ) s B IX m o d A).
re s o lv e r tre s p ro b le m a s. P o d e m o s c o m b in a r e s ta s ru tin a s, j u n t o c o n u n c u a rto a l
g o ritm o m á s c o m p le jo q u e s e d e s c rib e e n e l C a p ítu lo 9 . p a ra im p le m e n ta r u n a lg o 3. Si A = « (m o d A >. e n to n c e s p a ra c u a lq u ie r P . A 1' = R >\ m o d A ).
ritm o p a ra c o d if ic a r y d e c o d ific a r m e n sa je s. H a sta la fe c h a n a d ie h a sid o cap a /, de
E s to s te o re m a s p e rm ite n q u e a lg u n o s c á lc u lo s s e h a g a n c o n u n m e n o r e s f u e r
d e m o s tra r q u e e l e sq u e m a d e e n c rip ta c ió n a q u í d e s c rito n o e s su fic ie n te m e n te s e
zo. P o r e je m p lo , s u p o n g a m o s q u e q u e re m o s c o n o c e r e l ú ltim o d íg ito d e 3333*
guro.
P u e s to q u e e s te n ú m e ro tie n e m á s d e 1 5 .0 0 0 d íg ito s , e s d e m a s ia d o c o s to s o c a lc u
E sto s so n lo s c u a tr o p ro b le m a s q u e e stu d ia re m o s:
la r d ire c ta m e n te la re s p u e s ta . S in e m b a rg o , lo q u e q u e re m o s c a lc u la r e n re a li
1. L x / w n e n c i a c i ó n m o d u la r: c á lc u lo d e X v<m o d P ). d a d e s 3 3 3 3 5555(m o d 10). P u e s to q u e 3 3 3 3 = 3 (m o d 10). b a s ta c o n c a lc u la r
2. M á x im o c o m ú n d iviso r: c á lc u lo d e m c d iA , II). 3 5555(m o d 10). P u e sto q u e 34 - 8 1 . sa b e m o s q u e 34 = h m o d 10). y e le v a n d o a m
3. In v e r so m u ltip lica tivo ', re s o lv e r A .Y = H m o d P ) p a ra X. b o s la d o s a la p o te n c ia 1.388 o b te n e m o s 3 555" = h m o d 10). S i a h o ra m u ltip lic a
4. C o m p r o b a c ió n d e la p r o p ie d a d d e s e r p rim o : d e te r m in a r si A e s p rim o (se m o s a m b o s la d o s p o r 3 l = 2 7 . o b te n e m o s 3 5555 = 27 = 7<m od 10). c o m p le ta n d o
p o s p o n e h a s ta e l C a p ítu lo 9». así e l c á lc u lo . E n la sig u ie n te s e c c ió n se m u e s tra c ó m o g e n e ra liz a r e s te p ro ceso .
T o d o s lo s e n te ro s c o n lo s q u e p re te n d e m o s tra b a ja r so n g ra n d e s y re q u ie re n al
m e n o s 100 d íg ito s c a d a u n o . P o r e llo d e b e m o s d is p o n e r d e u n a fo rm a d e re p re s e n
ta r d ic h o s e n te ro s, j u n t o c o n u n a c o le c c ió n c o m p le ta d e a lg o ritm o s p a ra la s o p e ra 7.4.2 Exponenciación modular
c io n e s b á s ic a s c o m o la su m a , re s ta , m u ltip lic a c ió n , d iv is ió n , e tc J a v a I I p ro p o r
c io n a p a ra e s te p ro p ó s ito u n a c la s e d e n o m in a d a B i g D e c i m a l . Im p le m e n ta rla d e E n e s ta s e c c ió n s e m u e s tra c ó m o c a lc u la r d e fo rm a e fic ie n te X a (m o d P ). E s to se
fo rm a e fic ie n te n o e s u n a ta r c a triv ia l, y d e h e c h o e x is te u n a g ra n c a n tid a d d e lite p u e d e h a c e r in ic ia li/u n d o e l re s u lta d o t m p a I y d e s p u é s m u ltip lic a n d o re p e tid a
ra tu ra so b re e l tem a. m e n te e l re s u lta d o t m p p o r X y a p lic a n d o e l o p e ra d o r % tr a s c a d a m u ltip lic a c ió n .
A p lic a r e l o p e ra d o r * d e e s ta fo rm a , e n lu g a r d e h a c e rlo d e s p u é s d e la ú ltim a m u l 7.4.3 Máximo com ún divisor e inversos multiplicativos
tip lic a c ió n . h ace q u e las m u ltip lic a c io n e s s e a n m á s se n c illa s , y a q u e r e s u l t a d o
tm p se m a n tie n e p e q u e ñ o .
T ra s V m u ltip lic a c io n e s , r e s u l t a d o tm p e s la re s p u e sta q u e e s ta m o s b u sc a n C o n sid e re .lo s e n te ro s n o n e g a m o s A y R S u m á x im o c o m ú n d iv is o r. m c d iA . H).
d o . S in e m b a rg o , si A 'e s u n n ú m e ro d e 1 0 0 d ig n o s , la m u ltip lic a c ió n e s a u n im e s e l m a y o r e n te r o /> q u e d iv id e a A y a R P o r e je m p lo . ;»ir./t70. 25» e s 5.
p ra c tic a b le D e h e ch o , si V v a le m il m illo n e s, re s u lta im p ra c tic a b le e n c u a lq u ie r E s fácil v e rific a r q u e m c d iA . R ) s m c d iA - H. R ). S i I ) d is id e a A y a R . ta m
m á q u in a e x c e p to e n las m á s rá p id a s. b ié n d e b e d is id ir a A - R . y si I ) d iv id e a A - B y a H. e n to n c e s ta m b ié n d e b e
I 11 a lg o ritm o m á s rá p id o s e b a s a e n la sig u ie n te o b se rv a c ió n : si V e s p a r e n d iv id ir a A .
to n c e s .V v = (.V x h v 2 J y si e s im p a r e n to n c e s .V v - X X v 1 = X l X .Yí v 2 J. E sta o h s e r s a c ió n n o s lle v a a u n a lg o ritm o s im p le e n e l q u e re s ta m o s re p e tid a
(R e c u e rd e q u e L-YJ e s e l m a y o r e n te r o q u e e s m e n o r o ig u a l q u e X .) A l ig u al que m e n te fí a A . tra n sfo rm a n d o a s í e l p ro b le m a e n u n o m á s p e q u e ñ o . E v e n tu alm cn te
a n te s , a p liq u e e l o p e ra d o r i tra s c a d a m u ltip lic a c ió n . A se h a rá m á s p e q u e ñ o q u e //. y e n to n c e s p o d e m o s in te rc a m b ia r lo s p a p e le s d e A y
E l alg«*ritmo r e c u r s o o d e la F ig u ra 7 .1 4 re p re s e n ta u n a im p le m e n ta c ió n d ir e c R v c o n tin u a r a p a rtir d e ah í. E n a lg ú n p u n to . R s e lia ra 0 . y e n to n c e s , c o m o sabe
ta d e la e stra te g ia . E n las lín e a s 7 y X se tra ta e l cas.» b a se : .Y" v a le I p o r d e f in i m.*s q u e m a h A . 0» = A . y p u e s to q u e c a d a tra n s fo rm a c ió n p re s e rs a e l n u d d e los
c ió n *. E n la lin c a 10. h a c e m o s u n a lla m a d a re c u rs iv a b a sa d a e n la p rim e ra ig u a l A y R o rig in a le s , y a te n e m o s n u e stra re s p u e sta . A e s te a lg o ritm o se le lla m a a lg o
d a d d e l p á rra fo an te ri.rr S i V e s p a r. d ic h a fó rm u la c a lc u la la re s p u e sta d e se a d a , ritm o d e E u c lid e s y s e d e s c rib ió p o r p rim e ra v e / h a c e 2 .<M)0 a ñ o s. A u n q u e e s c o
y si e s im p a r n e c e sita m o s m u ltip lic a rla p o r u n a A' e x tra tu s a n d o d e sp u é s e l o p e ra n e c io , n o s e p u e d e u s a r p ara o b je to s d e la c la s e B i g D e c i m a l p o rq u e se re q u e riría
d o r >*,>. u n e n o rm e n ú m e ro d e restas.
E ste a lg o ritm o es m á s rá p id o q u e e l a lg o ritm o m á s sim p le p ro p u e s to a n te rio r U na m o d ific a c ió n q u e h a c e m á s e fic ie n te al a lg o ritm o se b a s a e n e l h e c h o di
m en te. S i A/ i A' ) e s e l n ú m e r o d e m u ltip lic a c io n e s u sa d a s p o r p o n e n c i a , e n to n c e s q u e restar re p e tid a m e n te B a A h a s ta q u e A e s m á s p e q u e ñ o q u e R . e s e q u iv a le n te
M i \ ) < S f V 2 J - 2; p u e s si X e s p a r. lle v a m o s a c a b o u n a m u ltip lic a c ió n m ás a c o n v e rtir A e n A n u x l R: e s d e c ir m c d iA . R 1 = n u d tR . A m o d R ). E sta d e fin ic ió n
la s q u e se g e n e ra n r e c e s iv a m e n te , m ie n tra s q u e si .V e s im p a r. r e a li/a m o s d o s re c u rsiv a , ju n to c o n e l c a s o b a se , e n e l q u e R = 0 . s e u s a d ire c ta m e n te p a ra .*btener
m u ltip lic a c io n e s m á s las q u e se e je c u ta n re c u r s iv a m e n té . P u e s to q u e ,1/(0) = 0 . la n itin a d e la F igura 7 . 15. P a ra so r c ó m o fu n cio n a, o b se rv e q u e e n e l e je m p lo a n te
p o d e m o s d e m o s tra r q u e M i V ) < 2 lo g ,V . E l ta c to r lo g a r ítm ic o se p u e d e o b te n e r rior se p ro d u ciría la sig u ien te secu en cia d e lla m a d a s recursiv a s p a ra d e d u c ir q u e e l
sin n e c e s id a d d e u n c á lc u lo d ir e c to a p lic a n d o e l p r in c ip io d e s u c e s iv a s d iv isio - n u d d e 7 0 y 25 e s 5: mrrA 7 0 . 2 5 ) ^ w « /< 2 5 . 2 0 ) ^ m e,¡i2 0 . 5 ) ^ m e d i5. 0» => 5.
n es p o r la m itad <v é a se S e c c ió n 5 .5 ). q u e n o s d a e l n ú m e ro d e lla m a d a s re c u rsiv a s E l n ú m e ro d e lla m a d a s re c u rs iv a s e s p ro p o rc io n a l al lo g a ritm o d e A . e s d e c ir,
a p o t e n c i a . A d e m á s , e l v a lo r m e d io d e M i N ) e s (3 2»log V . y a q u e e n c a d a p a s o e s d e l m ism o o rd e n d e m a g n itu d q u e e l re s to d e ru tin a s e s tu d ia d a s e n e s ta secció n .
recu rsiv o . es ig u a lm e n te p ro b a b le q u e Y s e a p a r o im p a r. S i .Y e s u n n ú m e ro d e E s to se debí- a q u e a l h a c e r u n a llam ad a re c u rs iv a e l a rg u m e n to se re d u c e a l m e
1 0 0 d íg ito s , e n to n c e s , e n e l p e o r c a so , s ó lo se n e c e s ita n 6 5 5 m u ltip lic a c io n e s (v n o s a la m ita d l - i d e m o s tra c ió n se d e ja c o m o E je rc ic io 7 .1 1.
s ó lo 5 0 0 e n m edia». E l a lg o ritm o d e n u d se u s a d e fo rm a im p líc ita p a ra a -s o lv e r un pn * b lem a m a
te m á tic o sim ila r. 1.a so lu c ió n I ^ X < X a la e c u a c ió n A X = I (m o d A l se llam a
in v e r s o m u ltip lic a tiv o d e A . m ó d u lo ,V. S u p o n g a m o s ta m b ié n q u e I ^ A < A’.
1 /•• C o m o e je m p lo , e l in v e rs o d e 3 m ó d u lo 13 e s 9 : 3 - 9 m o d 13 d e v u e lv e I.
2 • Devuelve x~n ( mod p) I.a p o s ib ilid a d d e c a lc u la r in v e rs o s m u ltip lic a tiv o s e s im p o rta n te p o rq u e e c u a
3 * Suponiendo que p e s p o s i t i v o y p o t e n c í a l o , 0. pi es 1 c io n e s c o m o 3 / s 7 (m o d 13) si- re su e lv e n fá c ilm e n te si c o n iv e m o s e l in v erso
m u ltip lic a tiv o . E ste tip o d e e c u a c io n e s su rg e n e n m u c h a s a p lic a c io n e s , in c lu y e n d o
5 public s ta tic long p o t e n c i a ( lo n y x, long n. long p >
e l a lg o r itm o d e e n c n p ta c ió n e stu d ia d o a l fin al d e e s ta se c c ió n . E n e l e je m p lo an te-
6 (
7 i ‘ ( n == 0 I
8 return 1;
9
1 /••
10 l o n g t rcp • p o t e n c i a l ( x • x » % p. n / 2, p »; 2 • Devuelvo «1 máximo común d i v i s o r .
11 i f ( n % 2 != 0 » 3 •/
12 tmp i ( tmp • x > % p; 4 public s t a t i c lo n g mcd( long a. long b >
13
5 (
14 return trp;
6 i(t b 0 1
15 )
7 r e t u r n a;
Figuro 7.14 R ufina d e e x p o n e n c lo c ió n m o d u la r 8 e l Be
9 r e t u r n mcdtb. a * b) ;
10 )
de cmc «Ipxiimo. t ? - I. Al c» ix>nevado» y / ’ c>. positivo. Fl aur o 7. 15 C á lc iJo det m áxim o com ún divisor
rio r. si m u ltip lic a m o s p o r e l in v e rso d e 3 í e s d e c ir. 9 ). o b te n e m o s i = 6 3 (m o d 13). 1 // V ariables i n t e r n a s d e mcdcompleto
p o r lo q u e i = 11 e s u n a so lu c ió n . Si 2 private sta tic l o n g x;
3 private sta tic l o n g y:
4
A X = K rn o d N ) 5 /*•
6 * Sigue hacia a trá s e lalgoritm o de E u c l i d e s p a r a e n c o n t r a r
e n to n c e s 7 * x e y tales quemcd(a. b) = 1,
8 * ax ♦ by = i.
A X + N Y = H m .x l N ) 9 •/
10 private sta tic v o i d m c d c o m p le to ( lor.g a . long b )
11 {
e s c ie r to p a ra c u a lq u ie r >'. P a ra a lg ú n e l la d o i/q u ie r d o d e b e s e r e x a c ta m e n te I.
12 lor.g x l . yl;
L u e g o la e c u a c ió n
13
14
NY =
if( b == 0)
AX + I 15
16 x ■ 1; / / S i a != 1, no hay i n v e r s o
17 y = 0; / / Omitimos e s t a com probación
tie n e s o lu c ió n si v s ó lo si A tie n e u n in v e rs o m u ltip lic a tiv o .
D ad o s A y B. m o s tra m o s c ó m o e n c o n tr a r A' e Y q u e c u m p la n
18 )
19 else
20 {
A X + B Y = I. 21 mcdCompletoI b, a % b );
22 x l = x; y l = y;
23 x = yl;
S u p o n d re m o s, sin p é rd id a d e g e n e ra lid a d , q u e 0 $ H < |A |. E x te n d e re m o s e l a l 24 y = x l - (a / b l * yl :
g o ritm o d e l m e d p a ra c a lc u la r X e Y. 25 )
C o n sid e re m o s p rim e ro e l c a s o b a s e B = 0 . p a ra e l c u a l te n e m o s q u e re s o lv e r 26 )
A X = 1. lo q u e im p lica q u e ta n to A c o m o X v a le n 1. y a q u e si A n o e s I , e n to n c e s 27
n o h a y in v e rso m u ltip lic a tiv o . U n a c o n se c u e n c ia d e e s to e s q u e A tie n e in v e rso 28 /* •
29 • R e s u e l v e a x ■= 1 (mod n i . s u p o n i e n d o q u e medí a . n ) ■ 1.
m u ltip lic a tiv o m ó d u lo N si y só lo si rn c d iA , N ) = I.
30 * ^ r e t u r n x.
S i B n o e s 0 . re cu erd e q u e m a lí A . B) = m cd*B. A nu>d B t. S e a A = B Q + H. d o n
31 •/
d e Q e s e l c o c ie n te y K e s e l re sto . L a lla m a d a re c u rsiv a e s e n to n c e s m a H B . B ). 32 public static lor.g i n v e r s o ( l o n g a , long n )
S u p o n g a m o s q u e p o d e m o s re s o lv e r r e c e s iv a m e n te 33 <
34 mcdCompleto( a . n );
35 return x > 0 ? x : x * n ;
B X i + R Y , = I.
36 >
Figuro 7.16 R u t i n a p a r a d e t e r m i n a r e l i n v e r s o mul t i pl i cat i vo
P u e s to q u e B = A B Q , te n e m o s
B X | + <A - B Q ) Y , = I.
7.4.4 El sistema de criptografía RSA
lo q u e s ig n ific a q u e
D u ra n te sig lo s s e p e n s ó q u e la te o r ía d e n ú m e ro s e r a u n a ra m a d e las m a te m á tic a s
c o m p le ta m e n te in ú til d e s d e e l p u n to d e v ista p rá c tic o , p e ro re c ie n te m e n te s e h a
A Y , + B i X , - Q Y t ) = I.
c o n v e rtid o e n u n c a m p o im p o rta n te d e b id o a su s a p lic a c io n e s a la crip to g ra fía .
E l p ro b le m a q u e c o n s id e ra m o s e s e l sig u ie n te : s u p o n g a m o s q u e A lic ia q u ie re
L u e g o ,Y = Y, y Y = X , = [ A B J ) '| e s u n a so lu c ió n d e AA’ + B Y = I. L a c o d if ic a e n v ia r u n m e n s a je a R o b e rto , p e ro q u e a e lla le p re o c u p a q u e la tra n s m is ió n sea
c ió n d e e s te a lg o ritm o a p a re c e e n la F ig u ra 7 .1 6 c o n e l n o m b re d e m c d c o m p l e t o . in te rc e p ta d a . P o r e je m p lo , si la tra n s m is ió n se re a liz a a tr a v é s d e u n a lín e a te le fó
L a ru tin a i n v e r s o sim p le m e n te lla m a a m c d c o m p l e t o . d o n d e .V e K so n v a ria n ic a y e l te lé fo n o e s tá p in c h a d o , e n to n c e s a lg u ie n m á s p u e d e e s ta r e sc u c h a n d o el
b le s e stá tic a s. Ll ú n ic o d e ta lle p e n d ie n te e s q u e e l v alo r d e A p o d ría se r n e g a tiv o , m e n s a je . S u p o n d re m o s , e s o s í. q u e in c lu s o si h a y e s c u c h a s e n la lín e a te le fó n ic a ,
e n c u y o c a s o la lín e a 3 5 d e i n v e r s o lo c o n v e rtirá e n p o sitiv o . L a d e m o s tra c ió n n o se p ro d u c e n in g ú n tip o d e d a ñ o s o b r e la se ñ a l; e s d e c ir. R o b e rto o b tie n e e x a c ta
d e la c o rre c c ió n s e p u e d e h a c e r p o r in d u c c ió n . m e n te lo u u e le e n v ía A lic ia .
U na so lu c ió n a c s lc p ro b le m a e s u s a r u n e s q u e m a d e e n c n p ta c ió n q u e c o n s ta
d e d o s p a n e s . P rim e ro . A lic ia c o d ific a e l m e n s a je y e n v ía e l re s u lta d o , e l c u a l y a
Algoritm os de codificación y decodificación
n o se p u e d e leer d ire c ta m e n te . C u a n d o R o b e rto re c ib e la tra n s m is ió n d e A lic ia , la
d e c o d ific a p a ra o b te n e r e l m e n s a je o rig in a l. L a se g u rid a d d e l a lg o ritm o se b a s a en P ara c o d if ic a r un e n te r o V/. e l e m is o r c a lc u la M 'í m o d .V) y lo e n v ía . E n n u e stro
q u e n a d ie m á s q u e R o b e rto p o d ría lle v a r a c a b o la d e c o d ific a c ió n d e l m e n s a je (ni c a s o A/ = 1 0 .237. lu e g o e l v a lo r e n v ia d o e s X.422. C u a n d o se re c ib e u n e n te r o c o
s iq u ie ra A lic ia , si n o h a g u a rd a d o e l o rig in a l). d ific a d o R . to d o lo q u e tie n e q u e h a c e r R o b e rto e s c a lc u la r R Ji\ m x \ -V). Para
P ara a p lic a r e l p ro c e s o . R o b e rto d e b e p ro p o rc io n a r a A lic ia un m é to d o d e en- R = 8 .4 2 2 s e p u e d e c o m p r o b a r q u e se o b tie n e d e n u e v o e l M = 10.237 o rig in a l, lo
c rip ta c ió n q u e so la m e n te é l s e p a c ó m o in v e rtir. E ste p ro b le m a e s un s e r io reto. c u a l n o e s e n a b s o lu to a c c id e n ta l. T a n to la c o d ific a c ió n c o m o la d e c o d ific a c ió n se
M u ch o s d e lo s a lg o ritm o s q u e h a n v e n id o s ie n d o p ro p u e s to s p u e d e n v e rs e c o m p u e d e n lle v a r a c a b o u s a n d o la ru tin a d e c x p o n c n c ia c ió n m o d u la r d e la F ig u
p ro m e tid o s p o r a lg u n a té c n ic a su til p a ra a v e rig u a r e l c ó d ig o . A q u í se d e s c rib e un ra 7 .1 4 .
m é to d o , lla m a d o s iste m a d e e m h p ta c ió n R S A (p o r la s in ic ia le s d e su s a u to re s) •.Por q u é fu n c io n a e l a lg o r itm o ? L a e le c c ió n d e e . d y N g a r a n tí/a (p o r m ed io
q u e e s u n a im p le m e n ta c ió n m u y e le g a n te d e u n a e s tra te g ia d e e n c n p ta c ió n . d e u n a d e m o s tra c ió n e n te o ría d e n ú m e ro s fu e ra d e l á m b ito d e e s te libro» q u e
N u e stro o b je tiv o e s d a r so la m e n te u n a v is ió n d e a lto n iv e l, m o s tra n d o c ó m o M , J = A f(m od A '), s ie m p re q u e N y M n o te n g a n fa c to re s c o m u n e s . P u e s to q u e los
in te ra c tú a n los m é to d o s e s c rito s e n e s ta s e c c ió n . L a s re fe re n c ia s c o n tie n e n p u n te ú n ic o s fa c to re s d e A so n d o s n ú m e ro s p rim o s d e 1 0 0 d íg ito s , e s p rá c tic a m e n te im
ros a d e s c rip c io n e s m á s d e ta lla d a s , a s í c o m o a d e m o s tra c io n e s d e la s p ro p ie d a d e s p o sib le q u e e s to s u c e d a 5. P o r ta n to , la d e c o d id e a c ió n d e l te x to c o d ific a d o d e v u e l
c la v e d e lo s alg o ritm o s. v e sie m p re e l te x to o rig in a l.
O b se rv e m o s p rim e ro q u e un m e n s a je c o n s ta d e u n a s e c u e n c ia d e c a ra c te re s y L o q u e h a c e q u e e l s iste m a q u e h e m o s v is to s e a s e g u ro es q u e e n p rin c ip io se
q u e c a d a c a rá c te r e s u n a se c u e n c ia d e b its; lu e g o u n m e n s a je e s. a l fin y a l c u b o , n e c esita d p a ra prx ler d e c o d ific a r un m en saje. A h o ra b ie n N y <• d e te rm in a n ú n ic a
una se c u e n c ia d e b its. S i p a rtim o s e l m e n s a je e n b lo q u e s d e H b its, p o d e m o s in te r m e n te a d . P o r e je m p lo , si f a c to ri/a m o s N . o b te n e m o s p y q y a p a rtir d e e llo s se
p re ta r e l m e n sa je c o m o u n a se rie d e n ú m e ro s m u y g ra n d e s , p o r lo q u e e l p ro b le m a p u e d e re c o n s tru ir d . E l p ro b le m a e s tá e n q u e f a c to r i/a r n ú m e ro s g ra n d e s e s a p a
b á s ic o se re d u c e a c o d if ic a r y d e s p u é s d e c o d ific a r n ú m e ro s g ran d e s. re n te m e n te m u y d ifíc il. E n c o n s e c u e n c ia , la se g u rid a d d e l s is te m a R S A s e b a s a e n
el h e c h o d e q u e s e p ie n s a q u e fa c to ri/a r n ú m e ro s m u y g ra n d e s e s in trín se c a m e n te
m u y d ifíc il. C o m o q u ie ra q u e h a s ta la fe c h a n a d ie h a s id o c a p a / d e f a c to r i/a r d e
fo rm a e fic ie n te , a u n q u e ta m p o c o te n e m o s la p ru e b a d e q u e e llo s e a u n h e c h o im
C álculo de las constantes RSA p o sib le . h a s ta e l m o m e n to e l m é to d o fu n c io n a b ie n .
E ste e s q u e m a g e n e ra l re c ib e e l n o m b re d e c r ip to g r a fía d e c la v e p ú b lic a . C u a l- Er
Ll a lg o r itm o R S A c o m i c n / a e x ig ie n d o q u e e l r e c e p to r d e l m e n s a je d e te rm in e q u ie ra q u e q u ie r a re c ib ir m e n sa je s, p u b lic a in fo rm a c ió n d e c o d ific a c ió n p a ra to d o s ck
c ie r ta s c o n s ta n te s a d e c u a d a s . P rim e ro , s e e lig e n a le a to ria m e n te d o s n ú m e r o s p r i a q u e llo s q u e q u ie r a n u sarla. E n e l s iste m a R S A . e y N s e c a lc u la ría n u n a v e / p o r ^
m o s g ra n d e s /> \ </. h a b itu a lm e n te d e 1 0 0 d íg i to s o m á s c a d a u n o . P a ra h a c e r m a p a rte d e c a d a re c e p to r y se h a ría n p ú b lic o s e n u n a lista. pi
n e ja b le e l e je m p lo , to m a r e m o s /> = 127 y «y = 21 I . O b s e r v e q u e R o b e rto , q u e es E l a lg o ritm o R S A se u s a a m p lia m e n te p a ra im p le m e n ta r c o rr e o se g u ro , a s í er
e l r e c e p to r, e s q u ie n e s t á h a c ie n d o e s te p ro c e s o . C o m o q u ie r a q u e h a y m u c h o s c o m o tra n s a c c io n e s s e g u ra s e n In tern et. C u a n d o v e a un c a n d a d o c e rr a d o ( fi i e n ce
n ú m e ro s p rim o s . R o b e rto p u e d e c o n tin u a r e lig ie n d o p a re s d e n ú m e ro s p rim o s la p a rte in f e rio r d e u n a p á g in a W e b e n N e tsc a p e N a v ig a to r. \e e s tá re a liz a n d o u n a ^
h a s ta q u e u n o d e e llo s c u m p la e l te s t d e p rim a lid a d , q u e s e d is c u tir á e n e l C a p í tra n sa c c ió n se g u ra u s a n d o c rip to g ra fía . E l m é to d o q u e se e m p le a re a lm e n te e s m á s
tu lo 9. c o m p le jo q u e e l a q u í d e sc rito . L a ra z ó n q u e ju s tif ic a d ic h o c a m b io d e m é to d o e s m
A c o n tin u a c ió n . R o b e rto c a lc u la N - p q y N ' = { p - \ ) ( q - I ) . E n n u e stro q u e e l a lg o ritm o R S A re s u lta le n to c u a n d o s e tr a ta d e e n v ia r m e n s a je s b a sta n te
e je m p lo , o b te n e m o s V = 2 6 .7 9 7 y N ’ s 2 6 .4 6 0 . R o b e r to c o n tin ú a e lig ie n d o un larg o s.
*' > I lal q u e m e d ie . A' ) = I . E n té rm in o s m a te m á tic o s , e lig e c u a lq u ie r c q u e s e a U n m é to d o m á s rá p id o e s e l lla m a d o D L S . A d ife re n c ia d e l a lg o ritm o R S A . ír
re la tiv a m e n te p r im o c o n Ar . D e n u e v o . R o b e rto p u e d e ir p ro b a n d o c o n d is tin D E S e s u n a lg o ritm o d e c la v e ú n ic a , lo q u e s ig n ific a q u e la m is m a c la v e s irv e p a ra
to s v a lo re s d e e . u s a n d o la ru tin a d e la F ig u r a 7 .1 5 . h a s ta e n c o n tr a r u n o q u e c o d if ic a r y d e c o d ific a r. E s to e s s e m e ja n te a l típ ic o c e rro jo e n la p u e rta d e n u e stra ^
s a tis fa g a la p ro p ie d a d . E n p a rtic u la r, c o m o c u a lq u ie r p rim o e v a ld ría , e n c o n ca sa . E l p ro b le m a c o n la c la v e ú n ic a e s q u e a m b a s p a rle s tie n e n q u e c o m p a rtir la a,
tr a r e e s ta n fá c il c o m o e n c o n tr a r u n n u m e r o p rim o . E n n u e s tr o c a s o , e = 1 3 .3 7 9 c la v e ú n ic a. ¿ C ó m o s e ase g u ra u n a p a rte d e q u e la o tra tie n e la c la v e ú n ic a ? E s to er
es u n a d e la s m u c h a s o p c io n e s . A c o n tin u a c ió n , s e c a lc u la e l in v e r s o m u ltip lic a se re s u e lv e u s a n d o e l a lg o ritm o R S A . U n a so lu c ió n h a b itu a l e s q u e. A lic ia g e n e ra cv
tiv o d e e m ó d u lo «V. d . u s a n d o la ru tin a d e la F ig u ra 7 .1 6 . E n e l e je m p lo . a le a to ria m e n te u n a c la v e p a ra la c o d ific a c ió n D E S. C o n e lla c o d ific a e l m e n s a je ül
d = 11.099. u s a n d o D E S . lo c u a l e s m u c h o m á s rá p id o q u e u s a r R S A . T ra n sm ite e l m e n sa je
U n a v e / q u e R o b e rto h a c a lc u la d o to d a s e s ta s c o n s ta n te s , h a c e lo sig u ien te; c o d ific a d o a R o b e rto . R ara q u e R o b e rto p u e d a d e c o d ific a r e l m e n s a je , p rim e ro n e
p rim e ro , d e s tru y e /*. q y N \ L a s e g u rid a d d e l s is te m a se p o d ría v e r c o m p ro m e tid a c e s ita o b te n e r la c la v e D E S. P u e sto q u e d ic h a c la v e e s re la tiv a m e n te c o r ta . A licia
si se c u e n ta c o n d ic h o s v a lo re s. E n to n c e s. R o b e rto le d ic e a lo d o e l m u n d o q u e
q u ie ra e n v ia rle u n m e n s a je c o d if ic a d o c u á le s s o n lo s v a lo re s d e e y N . a u n q u e ’ I -a n ú ' p r o b a b l e q u e g a n o l.i l o t e r í a p r i m i t i v a I ' « e m a n a * s e g u i d a s S i n e m b a r g o . ' i c a o o c u r r i e r a , e l « istc
g u a rd a e n s e c re to e l v alo r d e d . lid o . p o r q u e e l « n o / v e rá u n f a c t o r d e S
p u e d e u s a r K SA p a ra c o d if ic a r la c la v e D E S . e n v iá n d o la e n u n a se g u n d a tra n sm i P a ra re s o lv e r e s te p ro b le m a se p re s e n ta ro n tre s a lg o ritm o s d e d is tin ta s c o m p le
sió n a R o b erto . R o b e rto d e c o d if íc a la s e g u n d a tr a n s m is ió n , o b te n ie n d o a s í la c la v e jid a d e s. U n o d e e llo s e ra u n a lg o ritm o c ú b ic o b a sa d o e n u n a b ú sq u e d a e x h a u stiv a :
D E S . c o n la q u e se p u e d e d e c o d ific a r e l m e n s a je o rig in a l. E ste tip o d e p ro to c o lo s c a lc u lá b a m o s la su m a d e c a d a p o sib le su b s e c u e n c ia y e le g ía m o s la m á x im a Se
c o n re fu e rz o s fo rm a n la b a s e d e la m a y o r p a rte d e la s im p lc m e n ta c io n e s p rá c tic a s d e s c rib ió ta m b ié n u n a m e jo ra c o n tie m p o c u a d rá tic o q u e a p ro v e c h a b a e l h e c h o de
d e la c o d ific a c ió n . q u e la s u m a d e u n a n u e v a su b s e c u e n c ia s e p u e d e c a lc u la r e n tie m p o c o n s ta n te a
p a rtir d e la a n te rio r P u e s to q u e te n e m o s ( X N 2) s u b s e c u e n c ia s . é s ta e s la m c |o r c o
ta q u e s e p u e d e c o n s e g u ir u s a n d o u n a a p ro x im a c ió n q u e e x a m in e d ire c ta m e n te til
d as la s su b s e c u e n c ia s. V im o s, p o r ú ltim o , u n a lg o ritm o c o n c o s te e n tie m p o lineal
7.5 Algoritmos divide y ve n ce rás q u e e x a m in a b a so la m e n te u n as p o c a s su b s e c u e n c ia s. y c u y a c o rre c c ió n n o e r a o b
via.
U n a té c n ic a im p o rta n te d e re s o lu c ió n d e p ro b le m a s q u e h a c e u so d e la re c u rsió n D ise ñ a re m o s a h o ra u n a lg o ritm o d iv id e y v e n c e rá s . S u p o n g a m o s q u e la s u c e
e s la té c n ic a d e d iv id e y v e n c e rá s . L o s a lg o ritm o s d iv id e y v e n c e rá s Min a lg o rit sió n d a d a e s {4. - 3. 5. - 2. - I . 2. 6. - 2 ) . D iv id ire m o s e s ta e n tra d a e n d o s p a i
m o s r e c u r s o o s q u e c o n sta n d e d o s p arles: te s ig u a le s, tal y c o m o s e m u e s tra e n la f i g u r a 7 .1 7 . E n to n c e s la su b s e c u e n c ia d e
s u m a m á x im a p u e d e a p a re c e r e n u n a d e e sta s tre s fo rm as:
• D iv id ir se re s u e lv e n re c u rs iv a m e n te p ro b le m a s m á s p e q u e ñ o s (e x c e p to , p o r
su p u e s to , lo s c a s o s b ase ).
• C u s o I : e s tá to ta lm e n te in c lu id a e n la p rim e ra m itad.
• V e n c e r la s o lu c ió n a l p ro b le m a o n g in a l s e c o n s ig u e a p a rtir d e las s o lu c io
• C a s o 2: e s tá to ta lm e n te in c lu id a e n la s e g u n d a m itad
n es a lo s su b p ro b le m a s.
• C a s o 3: c o m ie n z a e n la p rim e ra m ita d , p e r o te r m in a e n la seg u n d a
T ra d ic io n a l m e n te , las ru tin a s e n la s q u e e l a lg o ritm o c o n tie n e a l m e n o s d o s
M o s tra re m o s c ó m o e n c o n tra r lo s m á x im o s v a lo re s d e c a d a u n o d e e s to s tre s c aso s,
lla m a d a s re c u rs iv a s s e lla m a n a lg o ritm o s d iv id e y v e n c e rá s , a l c o n tr a rio q u e la s
d e u n a fo rm a m á s e fic ie n te q u e la q u e c o rre s p o n d e ría a u n a b ú sq u e d a ex h a u stiv a .
ru tin a s c u y o te x to c o n tie n e so la m e n te u n a lla m a d a re c u rsiv a . E n c o n s e c u e n c ia , las
E m p e z a m o s p o r e l c a s o 3. Q u e re m o s ev ita r e l b u c le a n id a d o g e n e ra d o al c o n
ru tin a s re c u rs iv a s v istas h a s ta e l m o m e n to e n e s te c a p ítu lo , n o s o n a lg o ritm o s d iv i
sid e ra r in d e p e n d ie n te m e n te to d o s lo s V 2 p u n to s d e c o m ie n z o y lo s ,V 2 p u n to s d e
d e y v e n c e rá s . A d e m á s , lo s su b p ro b le m a s d e b e n se r d is ju n to s (m á s e x a c ta m e n te ,
fin a liz a c ió n . L a id e a e s su s titu ir d o s b u c le s a n id a d o s p o r d o s b u c le s c o n se c u tiv o s.
e s e n c ia lm e n te sin su p e rp o sic io n e s) p a ra e v ita r lo s c o s te s e x c e s iv o s q u e y a s e v ie
L o s b u c le s c o n se c u tiv o s, c a d a u n o d e ta m a ñ o \ ' 2. s e c o m b in a n , re q u irie n d o e n to
ro n e n e l c á lc u lo re c u rs iv o d e lo s n ú m e ro s d e F ib o n a c c i. E n e s ta s e c c ió n p re se n
ta l u n tie m p o lineal. P o d e m o s h a c e r e s to p»»rquc c u a lq u ie r su b s e c u e n c ia c o n tig u a
ta re m o s u n e je m p lo d e l p a ra d ig m a d iv id e y v e n c e rá s : v e re m o s c ó m o u s a r la re
q u e c o m ie n c e e n la p rim e ra m ita d > te rm in e e n la se g u n d a , d e b e in c lu ir e l ú ltim o
c u rs ió n p a ra re s o lv e r e l p ro b le m a d e la o b te n c ió n d e la su b s e c u e n c ia d e su m a
e le m e n to d e la p rim e ra m ita d y e l p n m e r o d e la se g u n d a m itad .
m á x im a . A c o n tin u a c ió n p re s e n ta m o s e l a n á lis is d e e s ta so lu c ió n re c u rsiv a , d e
L a F ig u ra 7 . 17 m u e s tra q u e p o d e m o s c a lc u la r, p a ra c a d a e le m e n to d e la p rim e
m o s tra n d o q u e su tie m p o d e e je c u c ió n e s ü ( N lo g N ) . A u n q u e y a v im o s u n a lg o
ra m ita d , la s u m a d e la su b s e c u e n c ia c o n tig u a q u e te r m in a e n e l e le m e n to situ a d o
ritm o lin e a l p a ra re s o lv e r e s te p ro b le m a , lo q u e p re s e n ta m o s a h o ra e s u n e je m p lo
m á s a la d e re c h a . H a c e m o s e s to c o n un re c o rrid o d e d e re c h a a iz q u ie rd a , p a rtie n d o
re p re s e n ta tiv o d e u n a g ra n v a rie d a d d e a p lic a c io n e s , in c lu y e n d o lo s a lg o ritm o s d e
d e l e le m e n to situad»» e n tre la s d o s m itad es. A n á lo g a m e n te , p o d e m o s c a lc u la r la
o rd e n a c ió n , c o m o m c rg e so rt y q u ic k s o rt. e s tu d ia d o s e n e l C a p ítu lo X R e su lta p o r
su m a d e to d a s las s u b s e c u e n c ia s c o n tig u a s q u e c o m ie n c e n c o n e l p rim e r e le m e n to
ta n to m u y im p o rta n te e s tu d ia r e s ta té c n ic a . P a ra te rm in a r, d is c u tire m o s la fo rm a
d e la se g u n d a m itad E n to n c e s se p u e d e c o m b in a r e s ta s d o s s u b s e c u e n c ia s p ara
g en e ral d e l tie m p o d e e je c u c ió n d e u n a a m p lia v a rie d a d d e a lg o ritm o s d iv id e y
v en cerás. fo rm a r la su b s e c u e n c ia d e su m a m á x im a q u e c ru z a la lín e a div is o n a . F n e l e je m
p lo d e la F ig u ra 7 .1 7 . la s e c u e n c ia re s u lta n te v a d e s d e e l p rim e r e le m e n to d e la
p n m e r a m ita d h a s ta e l p e n ú ltim o e le m e n to d e la se g u n d a m itad . 1.a su m a to tal es
la s u m a d e las d o s su b s e c u e n c ia s, 4 ♦ 7 = 11.
7.5.1 El problem a d e la subsecuencia d e suma máxima
R e c o rd e m o s e l p ro b le m a d e e n c o n tra r, e n u n a s e c u e n c ia d e n ú m e ro s , u n a su b sc -
c u e n c ia c o n tig u a d e s u m a m á x im a , q u e e s tu d ia m o s e n la S e c c ió n 5 .3 . P a ra fa c ili Pnmera m itad Segunda m itod
ta r la le c tu ra , v o lv e m o s a in c lu ir su e n u n c ia d o a c o n tin u a c ió n : 4 -3 5 -2 - 1 2 6 -2 Vatcres
S u p o n ie n d o q u e N e s u n a p o te n c ia d e 2. la s o lu c ió n a la e c u a c ió n Te
T iN ) = 2T0V2) + N , c o n c o n d ic ió n in ic ia l 7(1)= 1. e s Ti . N) = .N log N + N.
P a ra N s u fic ie n te m e n te g ra n d e , te n e m o s q u e T i N 2 ) = 2 / 4 A’ A) + N 2 p o r l)c
Figura 7.19 Traza d e las llam ad as recursivas d e l algoritm o d e lo su b secu en cia c o n lo q u e p o d e m o s u s a r la E c u a c ió n 7 .6 c o n V 2 e n lu g a r d e N . E n c o n s e -
tig ua d e sum a m áxim a. N =
8 elem entos.
c u e n c ia . te n e m o s
T i N ) = N T i \ ) + N log iV = N lo g N + N.
P o r su p u e s to , p a ra q u e la s e g u n d a e c u a c ió n te n g a s e n tid o e x a c to . N d e b e se r una
p o te n c ia d e d o s . E n «uro c a so , e n a lg ú n m o m e n to -V 2 n o s e rá p a r. U n a e c u a c ió n
m á s p re c isa , v á lid a p a ra to d o N . se ría A u n q u e e s te m é to d o d e p ru e b a p a re c e fu n c io n a r b ien , p u e d e se r d ifíc il a p lic a r
lo e n c a s o s m ás c o m p lic a d o s , p u es tie n d e a p ro d u c ir e c u a c io n e s m u y la rg as. A
T i N ) = T i L¿V'2J) + n i N a ] ) + O i N ) . c o n tin u a c ió n s e p re s e n ta u n se g u n d o m é to d o q u e p a re c e m á s se n c illo , p o rq u e g e
n e ra e c u a c io n e s v e rtic a lm e n te , q u e s e m a n ip u la n m á s fá c ilm e n te
N o o b sta n te , p a ra s im p lific a r lo s c á lc u lo s , su p o n d re m o s q u e N e s u n a p o ten c ia
d e 2 y re e m p la z a m o s e l té rm in o ( H N ) p o r N . E sta s su p o s ic io n e s so n m e n o re s y no
a fe c ta n al re s u lta d o O. E n c o n se c u e n c ia , s u p o n ie n d o q u e N e s u n a p o te n c ia d e 2.
D iv id im o s la E c u a c ió n 7 .6 p o r N . g e n e ra n d o u n a n u e v a e c u a c ió n b á sic a : Di
n e c e sita m o s o b te n e r u n a s o lu c ió n e x p líc ita d e 74 A’) p ara (\
7~( I ) = I. T (N ) _ TjN/2)
T i N ) = 2 T i N 2 ) + N. N " N¡2 + ‘
7.5.3 Una co ta superior general para los tiempos
E s ta e c u a c ió n e s a h o r a v a l u /a p a r a c u a lq u ie r X q u e s e a u n a p o len* ui d e ejecución d e los algoritmos divide
d e 2. lu r i:o ta m b ié n p o d e m o s e s c r ib ir la s sig u ie n te s r* u n cio n e s:
y vencerás
T(X) / ( V 2)
h n e l a n á lis is d e la s e c c ió n a n te r io r v e ía m o s q u e c u a n d o se d iv id e u n p ro b le m a e n Est<
Y ■V 2 d o s p a rte s ig u a le s, c o n un c o s te a d ic io n a l ( X N ) . e l re s u lta d o e s u n a lg o r itm o c o n ***
qut
c o s te ( H X lo g .V P e ro , ¿ q u é p a s a si d iv id im o s e l p ro b le m a e n tr e s p a rle s d e l m is
n»>
TiN 2l n .V 4 ) m o ta m a ñ o c o n c o s te lin eal a d ic io n a l? , ¿ o e n siete p a rte s c o n c o s te a d ic io n a l c u a
lutj
+ I d r i l i c o ’ ( V e a se e l E je rc ic io 7 .1 7 .) E sta s e c c ió n p ro p o rc io n a u n a fó rm u la g e n e ra l ton
V 2 V4
p a ra c a lc u la r e l tie m p o d e e je c u c ió n d e u n a lg o ritm o d iv id e > v e n c e rá s . L a fó rm u - co,
la re q u ie re tre s p a rá m e tro s: 001
riiV 4» n .v x i
(7.X ,
V4 Vs • A . q u e e s e l n ú m e r o d e su b p ro b le m a s.
res!
• B . q u e e s e l fa c to r d e re d u c c ió n d e l ta m a ñ o re la tiv o d e los s u b p ro b le m a s UJ
ip o i e je m p lo . II = 2 re p re s e n ta q u e lo s s u b p ro b le m a s tie n e n la m ita d d e l ta- aui
m a ñ a d e l p ro b le m a o rig in a l). e n<
/ '( 2 , do
• k. q u e re p re s e n ta e l h e c h o d e q u e e l c o s te a d ic io n a l e s (-)(Y * ).
■>
¡u irq u e n u lo s lo s d em á s té r m in o s s e c a n c e la n y h a y lo g Y e c u a c io n e s, de
m o d o q u e todos lo s u n o s a l f in a l d e e sa s e c u a c io n e s se su m a n p a r a p n u lu - A n te s ile d e m o s tra r e l T eo rem a 7 .5 . v e a m o s a lg u n a s a p lic a c io n e s d e l m ism o .
i i r log Y M u ltip lic a n d o p o r V e n a m b o s la d o s, o b te n e m o s la m ism a res E n e l p ro b le m a d e la o b te n c ió n d e la s u b s e c u e n c ia d e s u m a m á x im a , te n ía m o s d o s
p u e s ta f i l i a l q u e a n tes. su b p ro b le m a s . c a d a u n o d e e llo s c o n la m ita d d e ta m a ñ o q u e e l o rig in a l, y u n c o s te
a d ic io n al lin eal. Por ta n to , lo s v a lo re s d e los p a rá m e tro s so n A = 2. B = 2 y k = I . y
e n c o n se c u e n c ia se a p lic a e l se g u n d o c a s o d e l T e o re m a 7 .5 . o b te n ié n d o se asi un
O b s e rv e q u e si n o d iv id ié r a m o s p o r Y a l p r in c ip io d e la so lu c ió n , la su m a v a lo r O i N lo g N ) . q u e c o in c id e c o n n u e stro s c á lc u lo s p re v io s . S i. p o r e je m p lo , re
n o s e r ia te le s c ó p ic a . L a d e c is ió n s o b re la d iv is ió n n e c e s a ria p a ra a se g u ra r una so lv e m o s re c u rs iv a m e n te tr e s p ro b le m a s d e la m ita d d e l ta m a ñ o d e l p ro b le m a o ri
su m a te le s c ó p ic a re q u ie re a lg u n a e x p e rie n c ia y h a c e e l m é lo d o lig e ra m e n te m á s g in a l c o n u n c o s te a d ic io n a l lin e a l, te n e m o s q u e A = 3 . B s 2 y k = I . p o r lo <juc
d ifíc il d e a p lic a r q u e la p rim e ra a lte rn a tiv a . S in e m b a r g o , u n a \ e / h a e n c o n tr a a p lic a ría m o s la p rim e ra a lte rn a tiv a d e l te o re m a , o b te n ie n d o ( H N U,* ,X) = O i \ l >.
d o e l d iv is o r c o r r e c to , la se g u n d a a lte rn a tiv a tie n d e a g e n e ra r u n tr a b a jo q u e E n e s te c a s o p o d e m o s «*bservar q u e e l c o s t e a d ic io n a l n o c o n tr ib u y e a l c o s te t o
c a b e e n u n a h o ja d e p a p e l, d u n d o lu g a r c o n e llo a r e d u c ir lo s s u b s ig u ie n te s e r r o ta l d e l a lg o r itm o . C u a lq u ie r s o b r e c a rg a m e n o r q u e ( X N p r o d u c ir ía e l m ism o
re s m a te m á tic o s E n c o n tra s te , e l p rim e r m é to d o e s m á s u n a té c n ic a d e t u e r / a tie m p o d e c j c c u c h h i d e l a lg o r itm o re c u r s iv o . U n a lg o r itm o c o n tr e s s u b p r o b le
b ru ta. m a s d e la m ita d ile ta m a ñ o p e ro c o s t e a d ic io n a l c u a d r á tic o . te n d r ía u n tie m p o d e
O b s e rv e c u id a d o s a m e n te q u e sie m p re q u e te n e m o s un a lg o ritm o d iv id e y v e n e je c u c ió n ( H X ' ) . p u e s se a p lic a ría e l te r c e r c a s o . A h o ra , la s o b r e c a rg a d o m in a ,
c e rá s q u e re s u e lv e d o s p ro b le m a s d e la m ita d d e ta m a ñ o c o n u n c o s te lin e a l a d i u n a v e / é s ta e x c e d e e l u m b ra l Í ? ( Y ‘ " ') . E n e l u m b ra l, la p e n u li/a c ió n e s e l f a c
c io n a l. te n d re m o s u n tie m p o d e e je c u c ió n ( H X lo g .V ,. L a sig u ie n te s e c c ió n e x a to r lo g a r ítm ic o q u e a p a re c e e n e l s e g u n d o c a s o . P a s e m o s a h o ra a d e m o s tra r el
m in a lo q u e su c e d e e n un e n to r n o m á s g en eral T eo rem a 7 .5
D e f o r m a s im ila r a c o m o h ic im o s e n la p r u e b a d e l T e o re m a 7.4. su p o n d r e C u a n d o A = R 1. c a d a té r m in o d e la s u m a d e la E c u a c ió n 7 .1 0 e s I. P u esto
m o s <p ie N e s u n a p o te n c ia d e R. P o r ta n to , te n d r e m o s V E n to n ces q u e la s u m a c o n tie n e I + Io g /,N té r m in o s y A = /f4 im p lic a q u e A*1 N *.
N R = R xl 1 y V* = ( t f ' V = (/f* )4/. T o m a re m o s T i 11 = I r ig n o r a m o s e l o b te n e m o s
fa c to r c o n s ta n te e n ( ) ( N ). E n to n c e s o b te n e m o s la sig u ie n te e c u a c ió n b á
sica U N ) = ( X A Xl lo g g N ►= <X.\'l \ o g p N ) = ( X N 1 log V ).
T i l i xl ') m x l- 2)
7.6 Program ación dinám ica
Am 1 A " 2
T o d o p ro b le m a q u e s e p u e d e e x p re s a r re c u rs iv a m e n ie e n fo rm a m a te m á tic a (am
tíh s' 2) m t u ’)
(7.9) b le n se p u e d e e x p re s a r d ire c ta m e n te c o m o un a lg o r itm o re c u rsiv o . E n m u c h o s c a
ÁH -i
a m ~2 so s. h a c e r e s to p ro d u c e u n a m e jo ra s ig n ific a tiv a e n e l re n d im ie n to c o n re s p e c to a
u n a b ú sq u e d a e x h a u s tiv a in g e n u a . C u a lq u ie r fó rm u la m a te m á tic a re c u rs iv a s e p o
T i R 1) T l l f •. d ría tra d u c ir d ire c ta m e n te a u n a lg o ritm o re c u rs iv o , p e ro a m e n u d o e l c o m p ila d o r
i n o h a c e ju s tic ia a l a lg o r itm o re c u rsiv o y se o b tie n e u n p ro g ra m a in e fic ie n te . É ste
A1 A
es e l c a s o d e l c á lc u lo d e lo s n ú m ero s d e F ib o n a c c i d e s c rito s e n la S e c c ió n 7.3.4.
E n ta le s c a so s , p o d e m o s re s c rib ir e l a lg o r itm o re c u rs iv o c o m o un a lg o ritm o n o re
S i su m a m o s n u la s la s e c u a c io n e s d e la E c u a c ió n 7.9. su c e d e d e n u e v o que
c u rs iv o q u e s iste m á tic a m e n te g u a rd a las re s p u e s ta s d e lo s s u b p ro b le m a s re su e lto s
la m a y o r ía d e lo s té r m in o s d e l la d o iz q u ie rd o s e c a n c e la n c o n lo s c o r r e s
e n u n a ta b la . U n a té c n ic a q u e h a c e u s o d e e s ta e s tra te g ia e s la p r o g r a m a c ió n d in á
p o n d ie n te s e n e l la d o d e re c h o , p ro d u c ie n d o
m ic a . E sta té c n ic a se ilu stra c o n e l sig u ie n te p ro b lem a:
PROBLEMA DEL C A M B I O DE M O N E D A S
* , ( 0 Para u n a divisa co n m onedas d e C i . C 2 C ,v (unidades), ¿ c u á l es el
=^«(0
mínimo núm ero d e m onedas au e se necesitan p a ra devolver K unida
des d e ca m b io ?
© + ©©® ©
3 // e l mínimo núm ero d e monedas n e c e s a r i o p a r a c a m b i a r d e s d e 0 h a s ta
4 // max Ca mb io u n i d a d e s , y u l t i m a M o n e d a c o n t i e n e u n a d e l a s m o n e d a s
5 // n e c e s a r i a s p a ra h a c e r e l cambio.
6
0 + © ©© © 7
6
9
p u b l i c s t a t i c v o i d d e v o l v e r e a m b i o 1 i n t [ 1 monedas.
i r i t m o n e d a s D i s t i n t . a s . i n t ma x C a m b i o ,
i nt . ( | rnonedasUsadas, i n t [ 1 ultimaM oneda )
© + ©©
10 {
11 rnonedasUsadas! 0 ] - 0; ultimaM oneda! 0 ] = 1;
12
© + ©®© ©
13 for( int u n i d a d e s = 1; u n i d a d e s <= m a x C a m b i o ; unidades - - >
14 I
15 i n t minM onedas = u n i d a d e s ;
16 i n t nuevaMoneda ■ 1 ;
Figuro 7.22 Algoritm o recurstvo olternotivo poro e l p ro b lem a a e la devolución d e 17
cam b io 18 for< int j = 0; j < m onedasD istintas; j*‘ )
19 {
20 if ( m o n e d a s ! j ) > u n i d a d e s > / / No s e p u e d e u s a r l a m o n e d a j
21 C ontinué;
d e sus lla m a d a s re c u rs iv a s q u ita u n a u n id a d y re s u e lv e re e u rsiv a in e n te e l p ro b le
22 if ( rnonedasUsadas! u n i d a d e s - m onedas! j 1 1 * 1
m a p a ra 52 u n id a d e s . E ste tra b a jo re d u n d a n te p ro d u c e o tra v e / u n a g ra n c a n tid a d
23 < minMonedas )
d e tie m p o d e e je c u c ió n . S in e m b a rg o , si re p la n te a m o s ra d ic a lm e n te la fo rm a 24
d e im p le m e n ta r e l a lg o ritm o , p o d e m o s h a c e r q u e e l m isin o s e a ra z o n a b le m e n te 25 minMonedas •
rápido. 26 r n o n e d a s U s a d a s ! u n i d a d e s - m o n e d a s ! j ] ) * 1;
F l tru c o e s tá e n g u a rd a r la s so lu c io n e s d e lo s s u b p ro b lc m a s e n u n v e c to r. E sta 27 nuevaMoneda = m o n ed a s( j ];
té c n ic a d e p ro g ra m a c ió n d in á m ic a fo rm a la b a s e d e m u c h o s a lg o ritm o s. P u e sto 28
29 )
q u e la s o lu c ió n a un p ro b le m a g ra n d e d e p e n d e so la m e n te d e la s s o lu c io n e s d e p ro
30 rnonedasUsadasI unidades | = minMonedas;
b le m a s m á s p e q u e ñ o s , p o d e m o s ir c a lc u la n d o la s s o lu c io n e s ó p tim a s c o rr e s p o n
31 ultim aM oneda I unidades I = nuevaMoneda;
d ie n te s a c a m b ia r I u n id a d . 2 u n id a d e s . 3 u n id a d e s y a s í s u c e s iv a m e n te . E sta e s 32 }
tra te g ia s e im p le m e n ta e n e l p ro g ra m a d e la F ig u ra 7.23. 33 )
C o m e n /a m o s o b s e r v a n d o e n la lín e a 1 1 . q u e 0 u n id a d e s se p u e d e n c a m b ia r
Figura 7.23 AJgoritm o d e p ro g ram ació n d in á m ica p a ra resolver e l p ro b lem a d e la
u s a n d o c e ro m o n ed as. A c o n tin u a c ió n , a p a rtir d e la lín e a 13 v a m o s c a lc u la n d o e l
d evo lu ció n d e c a m b io q u e c a lc u la e l ca m b io óptim o p a ra to d as las
c a m b io ó p tim o p a ra c a d a v a lo r d e u n i d a d e s d e s d e I h a s ta e l v a lo r so lic ita d o c a n tid a d e s d e sd e 0 h asta m a x C a m b i o y m an tien e inform ación paro
maxCambio. E l v e c to r u l t i m a M o n e d a se u s a p a ra re c o rd a r c u á l fu e la ú ltim a m o construir la se cu e n cia d e m onedas
n e d a u s a d a p a ra d e v o lv e r e l c a m b io ó p tim o e n c a d a c a s o . P a ra c a lc u la r la fo rm a
ó p tim a d e d e v o lv e r u n i d a d e s u n id a d e s , p ro b a m o s c o n c a d a tip o d e m o n e d a , c o
m o s e in d ic a e n e l b u c le f o r d e la lín e a 18. S i e l v a lo r d e la m o n e d a e s m a y o r que
la c a n tid a d q u e q u e re m o s c a m b ia r, e n to n c e s n o h a c e m o s n a d a . E n c a s o c o n tra rio , 7.7 Algoritmos d e vuelta atrás
e n la lín e a 2 2 c o m p ro b a m o s si e l n ú m e ro d e m o n e d a s u s a d o p a ra re s o lv e r e l su b -
p ro b le m a re s ta n te m á s I (p o r la m o n e d a a c tu a l) e s m e n o r q u e la s u sa d a s h a s ta el
E sta s e c c ió n m u e s tra la ú ltim a a p lic a c ió n d e la re c u rsió n . V e re m o s, e n p a rtic u la r,
m o m e n to . S i e s a sí. re a liz a m o s la a c tu a liz a c ió n d e m i n M o n e d a s e n las lín e a s 25
c ó m o e sc rib ir u n a ru lin a q u e h a g a q u e e l c o m p u ta d o r s e le c c io n e un m o v im ie n to
a 2 7 . C u a n d o e l b u c le te rm in a , e n la s lín e a s 3 0 y 31 s e a lm a c e n a n lo s v a lo re s o b te ó p tim o e n e l ju e g o d e las tre s e n raya. I.a c la s e M e j o r , m o s tra d a e n la F ig u ra 7.24.
n id o s d e m i n M o n e d a s y n u e v a M o n e d a e n lo s v e c to res. s e u s a p a ra a lm a c e n a r el m o v im ie n to ó p tim o d e v u e lto p o r e l a lg o ritm o d e se le c
A l fin al d e l a lg o ritm o . r n o n e d a s U s a d a s I m a x C a m b i o ) re p re s e n ta e l m ín im o c ió n . F n la F ig u ra 7 .2 5 s e m u e s tra e l e s q u e le to p a ra u n a c la s e T r e s E n R a y a . E sta
n ú m e ro d e m o n e d a s n e c e s a ria s p a ra c a m b ia r m a x C a m b i o u n id a d e s . V o lv ie n d o h a c la s e tie n e un a trib u to t a b l e r o q u e re p re s e n ta e l e s ta d o a c tu a l d e l ju e g o . S e e s
c ia a tr á s a lo la rg o d e u l t i m a M o n e d a . p o d e m o s a v e rig u a r la s m o n e d a s n e c e sa ria s p e c ific a n u n a se rie d e m é to d o s, in c lu y e n d o ru tin a s p a ra lim p ia r e l ta b le ro , p ara
p a ra o b te n e r la s o lu c ió n ó p tim a . E l tie m p o d e e je c u c ió n e s e l d e lo s d o s b u c le s c o m p ro b a r si u n a c a s illa e s tá o c u p a d a , p u ra c o lo c a r u n a p ie z a e n u n a c a s illa v pura
f o r a n id a d o s , y p o r ta n to e s O ( X K ) . d o n d e X e s e l n ú m e r o d e m o n e d a s c o n d is tin c o m p ro b a r si a lg u n o d e los ju g a d o r e s h a g a n a d o . E o s d e ta lle s d e im p le m e n ta c ió n
tos v a lo re s y K la c a n tid a d (m á x im a ) d e c a m b io q u e q u e re m o s d e v o lv e r. se e n c u e n tra n e n e l e ó d io n e n rre s n o n d ie n le di*.nnnihle e n Internet
1 f i n a l c l a s s Mejor 1 class TreaEnRaya
2 ( 2 (
3 public s t a ti c final i n t HUMANO
3 int fila ;
4 public S ta tic final i n t COMPUTADORA - 1;
4 i n t colum na;
5 public s t a ti c final i n t VACIA = 2;
5 int valor;
6 6
7 public S tatic final int HUMANO_GANA = 0;
7 p u b l i c Mejor» i n t v ) 8 public static final int EMPATE
8 { th is I v, 0. 0 ); ) 9 public static íir.al int INCIERTO = 2;
9 p u b l i c Mejor» i n t v, in t f. in t c >
10 public static final int COMPUTADORA-GANA = 3:
10 {v a l o r v; f i l a í ; columna ■ c ; 1
11
11 1 12 / / C onstructor
Figura 7.24 C la s e p a r a a lm o c e n o r u n m o v im ie n to e v a lu a d o 13 p u b l i c TresEnPaya»
14 < lim piaTáblero» ); }
15
L a ru tin a in te re sa n te e s la q u e d e c id e , d e s d e c u a lq u ie r p o sic ió n , c u á l e s e l m e 16 l l C a l c u l a e l m ovim iento óptimo
17 p u b lic Mejor elegirM ovim iento» i n t lad o >
jo r m o v im ie n to . É sta e s la ru tin a e l e g i r M o v i m i e n t o . L a e s tra te g ia g e n e ra l usa
18 ( /* I m p l e m e n t a c i ó n e n l a F i g u r a 7 . 2 7 */ )
u n a lg o ritm o d e v u e lta a trá s, e s d e c ir, un a lg o r itm o q u e u sa re c u rs ió n p a ra p ro b a r 19
s iste m á tic a m e n te to d a s las p o sib ilid ad e s. 20 I I C alcula el v a lo r e s t á t i c o d el e stad o actu al
L a hase p a ra to m a r e s ta d e c is ió n se e n c u e n tra e n la ru tin a e s t a d o A c t u a l . 21 p r ív a te i n t valorEstado» >
22 { / * I m p l e m e n t a c i ó n e n l a F i g u r a 7 . 2 6 */ 1
que se m u e s tra e n l a F ig u ra 7 .2 6 . D ic h a r u tin a d e v u e lv e h u m a n o _g a n a .
23
COMPUTADORA_GANA. EMPATE o IN C IERTO , d e p e n d ie n d o d e la p o s ic ió n so b re el 24 / / Hace un m ovim iento, comprobando s u l e g a l i d a d
tablero. 25 p u b l i c b o o l e a n m o v i m i e n t o J u e g o » i n t l a d o , i n t f i l a , i n t co lu .T .-ia)
L a e s tr a te g ia q u e s e u s a h a b itu a lm e n te e s la e s tr a te g ia m in im a x . q u e c o n 26 ( /* Im plem entación en e l código d i s p o n ib le en In te rn e t * 1
27
s id e ra q u e a m b o s ju g a d o r e s ju e g a n d e fo rm a ó p tim a . E l v a lo r d e l e s ta d o es
28 / / Limpia e l t a b l e r o de juego
COMPJ:’ADORA_GANA si m e d ia n te u n a ju g a d a ó p tim a e l c o m p u ta d o r p u e d e fo rz a r 29 p u b lic void lim piaT ableroi >
u n a v icto ria. S i e l c o m p u ta d o r p u e d e fo rz a r un e m p a te p e ro n o u n a v ic to ria , e l v a 30 ( /* Im p le m e n t a c i ó n e n e l c ó d i g o d i s p o n i b l e on I n te r n e t */ 1
lo r d e l e s ta d o e s EMPATE; si la p e rs o n a p u e d e fo rz a r su \ ic to ria e l v a lo r d e l e s ta d o 31
32 / / Devuelve t r u e s i e l t a b l e r o e s t á lle n o
es hum ano.C A N A . P u e sto q u e q u e re m o s q u e e l c o m p u ta d o r g a n e , c o n sid e ra re m o s
33 p u b lic boolean tableroL leno» )
HUMANO_GANA<EMPATE<COMPUTADORA_GANA. 34 { /* Im plem entación en e l código d is p o n ib le en Internet * }
P ara e l c o m p u ta d o r, e l v a lo r d e l e s ta d o e s e l m á x im o d e lo s v a lo re s d e lo s e s ta 35
d o s q u e p u e d e n re s u lta r d e h a c e r un m o v im ie n to . S u p o n g a m o s q u e un m o v im ie n to 36 / / Devuelve t r u e s i a lg ú n ju g ad o r ha ganado
llev a a un e s ta d o g a n a d o r, d o s lle v a n a u n e m p a te y se is lle v a n a u n o p e rd e d o r. 37 b o o lean hayGanadorl in t lad o )
38 { / • Im plem entación en e l código d is p o n ib le en Internet * )
E n to n c e s e l e s ta d o in icial e s un e s ta d o g a n a d o r p o rq u e e l c o m p u ta d o r p u e d e c o n 39
s e g u ir la v ic to ria , sin q u e su riv a l p u e d a e v ita rlo . E l c o rre s p o n d ie n te m o v im ie n to 40 / / Hace un m ovim iento, p o s i b l e m e n te l i b e r a n d o una c a s i l l a
q u e lle v a a l c o m p u ta d o r a g a n a r e s e l q u e é s ta d e b e ría h a c e r. P a ra g e n e ra r e l c o m 41 p r í v a t e v o id lugar» in t f i l a , i n t columna, i n t f i c h a )
p o rta m ie n to d e la p e rs o n a , o b ra m o s d e fo rm a a n á lo g a p e ro u tiliz a n d o e l m ín im o 42 ( t a b l e r o I f i l a | ( columna ) = f i c h a ; )
43
e n lu g a r d e l m áx im o . 44 / / Comprueba s i u n a c a s i l l a e s t á v a c í a
E sto su g ie re u n a lg o r itm o re c u rs iv o p a ra d e te rm in a r e l v a lo r d e un e s ta d o . I na 45 p r í v a t e b o o le a n c a s i 1l a V a c í a » i n t f i l a , i n t columna )
v e / e s c rito é s te , lle v a r c u e n ta d e l m e jo r m o v im ie n to e s s im p le c u e s tió n d e a lm a c e 46 { r e t u r n t a b l e r o ! f i l a ) ( c o l u m n a ] = VACIA; )
n am ien to . S i e l e s ta d o e s final (e s d e c ir, se h a o b te n id o tre s e n ra y a o e l ta b le ro 47
48 p rivate int [ I I I tablero = new i n t [ 3 | [3 J;
e s tá lle n o ), e l v a lo r d e l e s ta d o s e o b tie n e d e fo rm a in m e d ia ta . E n c a s o c o n tra rio , 49 )
p ro b a m o s re cu rsiv a m e n té c a d a u n o d e lo s m o v im ie n to s p o s ib le s , c a lc u la n d o e l v a
Figura 7.25 E sq u e le to d e lo c la s e T r e s E n R a y a .
lo r d e c a d a e s ta d o re s u lta n te , y e le g im o s e l m á x im o v a lo r p o sib le . L a lla m a d a re
c u r s o a re q u ie re e n to n c e s q u e e l ju g a d o r h u m a n o e v a lú e e l e s ta d o . P a ra é l . e l v a lo r
del e s ta d o e s e l m e n o r d e lo s v a lo re s d e lo s p o sib le s e s ta d o s sig u ie n te s , p u e s to que m o v er. E l c ó d ig o d e las lín e a s 28 a 3 8 se e je c u ta u n a v e / p a ra c a d a m o v im ie n to
e l ju g a d o r h u m a n o e s tá tr a ta n d o q u e e l c o m p u ta d o r p ie rd a . E n c o n se c u e n c ia , el d is p o n ib le . In te n ta m o s m o v e r e n la lín e a 2 8 . e v a lu a m o s (« c u rsiv a m e n te e l m o v i
m é to d o re c u rs iv o e l e g i r M o v i m i e n t o . q u e s e m u e s tra e n la F ig u ra 7 .2 7 . to m a un m ie n to e n la lín e a 2 9 (g u a rd a n d o e l v a lo r o b te n id o ), y fin a lm e n te d e s h a c e m o s el
m o v im ie n to e n la lín e a 30. L a s lín e a s 3 3 y 3 4 c o m p ru e b a n si é s te e s e l m e jo r m o
p a rá m e tro l a d o , q u e in d ic a a q u ié n le to c a m o v e r.
L as lín e a s 12 y 13 tra ta n e l c a s o b a s e d e la re c u rsió n . S i te n e m o s u n a re sp u e sta v im ie n to h a s ta la fe c h a . S i e s a sí. a ju s ta m o s v a l o r e n la lín e a 3 6 y g u a rd a m o s el
in m e d ia ta , p o d e m o s te rm in a r. E n c a s o c o n tra río , e n la s lín e a s 15 a 22 d e te rm in a - m o v im ie n to e n la lín e a 3 7 . En la lín e a 4 1 . d e v o lv e m o s e l v a lo r d e l e s ta d o e n un
m n» I < \ ilorev ulrv-iiudiv. . ti- u n n;ir di* v:iri:ihlt*s Iim iln m ié H ila d o r le to c a o b je to M e j o r .
1 // C a l c u l a e l valor estático del estado actual A u n q u e la F ig u ra 7 .2 7 re s u e lv e d e fo rm a ó p tim a las tr e s e n ra y a , lle v a a c a b o
2 ptivate i n t valorEscado( ) e x c e s iv a s b ú sq u e d a s . Hn c o n c re to , p a ra e le g ir e l p rim e r m o v im ie n to e n u n tab lero
3 (
v a c ío , h ac e 5 4 9 .9 4 6 lla m a d a s re c u rsiv a s (e s te n ú m e ro se o b tie n e e je c u ta n d o el
4 r e t u r n h a y G a n a d o r ( COMPUTADORA ) ? COMPUTADORA_GA-‘1A :
p ro g ra m a ). U s a n d o a lg u n o s tru c o s a lg o rítm ic o s , p o d e m o s c a lc u la r e x a c ta m e n te la
5 hayGanador( HUMANO I ? HUMANO GANA :
6 tabieroLleno( I ? EMPATE : INCIERTO; m is m a in fo rm a c ió n u s a n d o m e n o s b ú sq u e d a s . U n o d e e so s tr u c o s se c o n o c e c o m o
7 ) p o d a a lfa -b e ta , y s e d e s c rib e e n d e ta lle e n e l C a p ítu lo 10. L a a p lic a c ió n d e la p oda
a lfa -b e ta re d u c e e l n ú m e ro d e lla m a d a s re c u rs iv a s a só lo 18.297.
Fi gur a 7 . 2 6 Rutina p o ra o b ten er e l valo r a e un estado
Resumen
1 / / C a lc u l a e l m ov im ien to óptimo
2 p u b l i c Mejor e le g í r M o v i n i e n t o ( i n t lado 1 E ste c a p ítu lo h a e x a m in a d o la re c u rsió n \ h a d e m o s tra d o q u e e s u n a h e rra m ie n ta
3 ( p o te n te d e re s o lu c ió n d e p ro b le m a s. A c o n tin u a c ió n a p a re c e n las re g la s fu n d a
4 i n t op; / / El l a d o o p u e s t o
m e n ta le s d e la re c u rs ió n . q u e u n o n u n c a d e b e ría o lv id ar:
5 Mejor r e p l i c a ; / / Mejor r e p l i c a d e l oponente
6 in t evalsim ple; / / R esultado de unae v a lu a c ió n sim ple
1. C a so s base: s e d e b e te n e r s ie m p re a l m e n o s u n c a s o b a s e q u e p u e d a re s o l
7 E s t a d o e s t a d o A c t u a l =n e w E s t a d o í c a b l e r o »;
8 in t r e jo r F il a = 0; v e rs e sin re c u rsió n .
9 i n t m e j o r C o l u m n a ■ 0; 2. P ro greso', c u a lq u ie r lla m a d a re c u rsiv a d e b e p ro g r e s a r h a c ia u n c a s o b ase.
10 in t valor; 3. « P u e d e c r e e r lo »: su p o n g a s ie m p re q u e las lla m a d a s re c u rsiv a s in te rn a s
M fu n c io n a n c o rre c ta m e n te .
'2 ií( ( evalsim ple = valorE stado( ) ) != INCIERTO ) 4. R e g la d e in te ré s c o m p u esto : n u n c a d u p liq u e tr a b a jo re s o lv ie n d o la m ism a
13 r e t u r n new M e j o r í e v a l s i m p l e );
in sta n c ia d e u n p ro b le m a e n lla m a d a s re c u rs iv a s se p a ra d a s.
14
15 i £ ( l a d o == COMPUTADORA > 1.a re c u rs ió n tie n e m u c h o s u so s, a lg u n o s d e lo s c u a le s h a n s id o d is c u tid o s e n
16
e s te c a p ítu lo . S e h a n e stu d ia d o tre s im p o rta n te s té c n ic a s d e d is e ñ o d e a lg o ritm o s
17 o p = HUMANO; v a l o r = HUMANO_GANA;
18 b a s a d a s e n la re c u rsió n : d iv id e y v e n c e rá s , p ro g ra m a c ió n d in á m ic a y v u e lta atrás.
19 else Ll s ig u ie n te c a p ítu lo e s tu d ia e l p ro b le m a d e la o rd e n a c ió n . E l a lg o ritm o d e o r
>0 d e n a c ió n m á s rá p id o q u e s e c o n o c e e s recu rsiv o .
-I Op = COMPUTADORA; V a l o r = COMPUTADORA_GANA
>2
>3
■4 for( i n t f i l a = 0 ; f i l a < 3; f i l a - * ) Elementos del juego
•5 f o r ( i n t colum na - 0 ; colum na < 3; c olum na»* I
■ó i f ( c a s i l l a V a c i a ( f i l a , columna > )
!7 ( a l g o r it m o d e v u e lt a a t r á s A lg o ritm o q u e u s a la re c u rsió n p a ra p ro b a r sis te m á ti
!® l u g a r ( f i l a , columna, l a d o / / i n t e n t a mover c a m e n te to d a s las p o sib ilid a d e s,
r e p l i c a = e le g irM o v im ie n to l o p ) ; / / Evalúa a lg o r itm o d e v o r a d o r A lg o ritm o q u e to m a d e c is io n e s lo c a le s ó p tim a s e n c a d a p a
l u g a r l f i l a , c o l u m n a , VACIA i ,- / / D e s h a c e e l m o v i m i e n t o so. E s c rib irlo s u e le s e r sim p le . S in e m b a rg o , n o s ie m p re fu n c io n a c o rre c ta
11 m ente.
® / / A c tu a liz a s i un jugador o b tie n e e l mejor e stad o a lg o r itm o d iv id e y v e n c e r á s T ip o d e a lg o ritm o re c u rs iv o g e n e ra lm e n te m u y e f i
>3 if( l a d o == COMPUTADORA &6. r e p l i c a . v a l o r > v a l o r
c ie n te. L a re c u rsió n e s la p a rte « d iv id e » > la c o m b in a c ió n d e las so lu c io n e s
^ | | l a d o ■■ HUMANO && r e p l i c a . v a l o r < v a l o r J
5 { re c u rsiv a s e s e l « v e n c e rá s » ,
6 valor ■ replica.valor; c a s o b a s e In s ta n c ia q u e se p u e d e re s o lv e r sin h a c e r lla m a d a s re c u rsiv a s. T o d a lla
'7 m e j o r F i l a = f i l a ; mejorColumna = columna; m a d a re c u rs iv a d e b e h a c e r p ro g re s o s h a c ia u n c a s o b a se . T a m b ié n , e n una
8 ) p ru e b a p o r in d u c c ió n , e s e l c a s o q u e se p u e d e d e m o s tra r d ire ctam en te,
9 j
c r i p t o g r a f í a d e c la v e p ú b lic a T ipo d e c rip to g ra fía e n la q u e c a d a e m is o r p u b lic a
0
e l c ó d ig o q u e o tr o s p u e d e n u sa r p a ra e n v ia r a d ic h o e m is o r m e n s a je s c o d if ic a
1 r e t u r n new M e j o r ( v a l o r , m ejorFila, mejorColumna );
d o s. p e ro g u a rd a e l c ó d ig o s e c re to d e d e c o d ific a c ió n ,
e n c r i p ta c i ó n E s q u e m a d e c o d ific a c ió n u s a d o e n la tra n s m is ió n d e m e n s a je s p ara
I g u r a 7.27 Rutina recursiva p a ra enco ntrar un m ovim iento Optimo en las tres e n raya. u u e n o p u e d a n s e r le íd o s p o r o tr a s p erso n as.
e s t r a t e g i a m in im a x E stra te g ia u s a d a p a ra las tre s e n ra y a y o tr o s ju e g o s e s tra té g i En Internet
co s q u e su p o n e q u e a m b o s ju g a d o re s ju e g a n d e fo rm a ó p tim a ,
h ip ó te s is d e in d u c c ió n H ip ó te s is c o n s is te n te e n q u e u n te o re m a e s c ie r to p a ra un Se p ro p o rc io n a to d o e l c ó d ig o q u e a p a re c e e n e l c a p ítu lo , in c lu y e n d o un p ro g ra m a
c a s o a rb itra rio d e p a rtid a S e u sa e n la s p ru e b a s p o r in d u c c ió n p ro b a n d o q u e a p a ra e l ju e g o d e la s tr e s e n ra y a F.n e l C a p ítu lo 10 s e d is c u te u n v e rs ió n m e jo ra d a
p a rtir d e d ic h a h ip ó te s is s e p u e d e d e m o s tra r q u e e l s ig u ie n te c a s o ta m b ié n es d e e s te j u e g o q u e u s a e s tru c tu ra s d e d a to s m á s so fistic a d o s T o d a s las ru tin a s e stán
c ierto . e n e l d ire c to rio C h u p tc r 0 7 . s a lv o c u a n d o s e in d iq u e e x p líc ita m e n te o tra c o s a . A
in d u c c ió n T écn ica d e d e m o s tra c ió n u sa d a p a ra d e m o s tra r te o re m a s q u e s e c u m c o n tin u a c ió n se e n u m e ra n lo s n o m b res d e lo s fich ero s:
p len p a ra lo s e n te ro s p o sitiv o s,
R e c S u m .ja v a In clu y e la ru tin a d e la F ig u ra 7.1. c o n un m n in sim ple.
in v e r s o m u lti p li c a ti v o S o lu c ió n I < X < V a la e c u a c ió n A X - Itm o d A '),
P r i n t l n t . ja v a In c lu y e la ru tin a tra d u c id a e n la F ig u ra 7 .4 p o r
m á x im o c o m ú n d iv i s o r (m cd > E l m á x im o c o m ú n d iv is o r d e d o s e n te ro s e s el
Im pr i me E n t e r o , la c u a l se u s a p u ra im p rim ir u n n ú
m a y o r e n te ro q u e lo s d iv id e a a m b o s,
m e ro e n c u a lq u ie r b a s e , v a d e m á s u n a fu n c ió n r a i n .
m é to d o r e c u r s iv o M é to d o q u e . d ire c ta o in d ire c ta m e n te , se h a c e u n a lla m a d a a sí
F a c to r ia l .ja v a In clu y e la tr a d u c c ió n d e la ru tin a d e la F ig u ra 7.X y
m ism o.
n ú m e r o s d e !a b o n a r e i S e c u e n c ia d e n ú m e ro s e n la q u e e l n ú m e r o i- e s im o e s la
u n a fu n c ió n rcain sim ple.
H in a r v S c a r c h .ja v a In c lu y e la ru tin a tr a d u c id a e n la F ig u r a 7 .9 por
s u m a d e lo s d o s a n te rio re s. L o s n ú m e ro s d e El b o r u c a a p a re c e n re p e tid a m e n te
b u s q u e d a B i n a r i a y u n a fu n c ió n n a i n .
e n la literatu ra
R u lc r.ja v u In c lu y e la r u tin a tra d u c id a e n la F ig u ra 7.11 p o r
p o d a a lf a - b e t a M ejo ra d e l a lg o ritm o m ín im a s.
p i n t a R e g l a . lis ta p a ra se r e je c u ta d a C o n tie n e ta m
p r o g r a m a c i ó n d in á m ic a T é c n ic a q u e e v ita la e x p lo s ió n re c u rs iv a g u a rd a n d o re s
b ién c ó d ig o q u e ra le n tiz a e l p ro c e s o d e d ib u jo
p u e sta s e n u n a tabla,
F r a c ta l S l a r .j a v a In c lu y e la r u tin a tr a d u c id a e n la F ig u ra 7 .1 3 p o r
r e g i s tr o d e a c ti v a c ió n M é to d o u s a d o p a ra re a liz a r la s ta r e a s d e b a jo n iv e l e n m u
p i n t a F r a c t a l . lis ta p a ra e je c u ta rs e C o n tie n e t a m
chos len g u ajes d e p ro g ram ació n . S e su e le usar u n a p ila d e re g istro s d e activ ació n ,
b ié n c ó d ig o q u e ra le n tiz a e l p ro c e s o d e d ib u jo .
r e g l a s d e la r e c u r s ió n I C a so s b a s e : s e d e b e te n e r sie m p re a l m e n o s u n c a s o b a
N u n u 'r ic n l.ja v a In clu y e la v e rs ió n in g le s a d e ru tin a s m a te m á tic a s de
se q u e p u e d a re s o lv e rs e sin lla m a d a s re c u rsiv a s . 2. P ro g re so : c u a lq u ie r lla m a
la S e c c ió n 7 .4 . ju n t o c o n u n a ru tin a p a ra c o m p ro b a r
d a re c u rs iv a d e b e p ro g re s a r h a c ia un c a s o b a se . 3 . « P u e d e c r e e r lo • : su p o n g a
si u n n ú m e ro e s p rim o , y u n a fu n c ió n m a i n : to
s ie m p re q u e las lla m a d a s re c u rs iv a s fu n c io n a n c o rre c ta m e n te . 4. R e g la d e
d a s e lla s e n e l d ire c to rio S u p p o r t i n g (tra d u c id o p o r
in terés c o m p u esto : n u n c a d u p liq u e tr a b a jo r e s o lv ie n d o la m is m a in s ta n c ia de
Soporte).
un p ro b le m a e n lla m a d a s re c u rsiv a s se p a ra d a s,
R S A .ja va In c lu y e e l a lg o ritm o R SA .
r u t i n a g u ía R u tin a q u e c o m p r u e b a la v a lid e z d e los a rg u m e n to s d e p a rtid a y llam a
M a x S u m .ja v a In c lu y e las c u a tr o ru tin a s d e l p ro b le m a d e la o b te n
d e sp u é s a la ru tin a recu rsiv a ,
c ió n d e la s u b s e c u e n c ia d e s u m a m á x im a te n e l d ire c -
s i s te m a d e c r i p t o g r a f í a R S A M é to d o p o p u la r d e e n c rip ta c ió n
tonoChupter05>.
s u m a te le s c ó p ic a D e sa rro llo s e n lo s q u e se g e n e ra u n a g ra n c a n tid a d d e té rm in o s
M k C h a n g c .ja v a In c lu y e la ru tin a tr a d u c id a e n la F ig u ra 7 .2 3 p<*c
q u e lu e g o s e can celan .
d e v o l v e r C a m b io y u n a tu n c ió n m a i n sim ple.
B e st, ja v a C la s e u s a d a e n e l a lg o ritm o d e las tre s e n ra y a , a q u í
tra d u c id a p o r M e j o r .
Errores com unes T ic T a c T o e .ja v a A lg o ritm o d e tre s e n ra y a b á s ic o (tra d u c id o a q u í por
Tre»F.nKaya>.
m é to d o re c u rs iv o f i b d e la S e c c ió n 7 .3 .4 .
L a p rim e ra ru tin a e s u n a g u ía q u e lla m a a la se g u n d a e im p rim e to d a s las
7 .1 3 . D e m u e s tre p o r in d u c c ió n q u e si ,4 > B ? 0 y la lla m a d a a m cd ( a . b ) lle v a
p e rm u ta c io n e s d e lo s c a ra c te re s d e l S t r i n g s t r . S i s t r fu e ra ’a b e ' . e n
a c a b o k 5? I lla m a d a s re c u rsiv a s , e n to n c e s A ^ l \ , 2 y B > I \ . | •
to n c e s la s c a d e n a s d e sa lid a s e ría n a b e . a c b . b c a . c a b y c b a . U se re c u r
7 .1 4 . D e m u e stre p o r in d u c c ió n q u e e n e l a lg o ritm o e x te n d id o d e l n i e l . |X < B
sió n e n la se g u n d a m tin a .
y \y \ < a .
7 .2 6 . E sc rib a u n p ro g ra m a q u e c a lc u le e l m á x im o v a lo r d e N q u e p u e d e m a n ejar
7 .1 5 . E scrib a u n a lg o ritm o a lte rn a tiv o p a ra e l c á lc u lo d e l m c d b a sa d o e n la s s i
e n su m á q u in a e l p ro g ra m a d e la F ig u ra 7.1. P ista : u s e la id e a d e la b ú s
g u ie n te s o b s e rv a c io n e s (s u p u e s to q u e A > B)
q u e d a b in a ria para d e te rm in a r A1; e l m e c a n ism o p a ra d e c id ir si u n a llam ad a
a) m e d { A . B ) = 2 m c d (A /2 . f í 2 ) si .4 y fí so n p ares a f tie n e é x ito c o n s is te e n c o m p r o b a r si s e h a la n z a d o a lg u n a e x c e p c ió n de
b) m e , ¡(A . B ) = m e d í A 2 . B ) si A e s p a r y H im p a r. la c la s e T h r o w a b l e .
7.27. E sc ríb a u n p ro g ra m a q u e d ib u je la F ig u ra 7.7.
7 .2 8 . E x p liq u e lo q u e s u c e d e si e n la F ig u ra 7 .1 3 d ib u ja m o s e l c u a d ra d o central
T
a n tes d e h a c e r las lla m a d a s re c u rsiv as.
i *
Prácticas de program ación i
7 .2 9 . L os c o e fic ie n te s b in o m iu le s C \ X . k ) s e p u e d e n d e fin ir re c u rs iv a m e n te en
>
la sig u ie n te form a:
C ( X . 0 ) = I . C<;V. X) = I
4
y para
0 < k < N . O A'. k ) = C i N - I. k ) + C (N - I.A - I)
E sc rib a u n m é to d o p a ra c a lc u la r lo s c o e fic ie n te s b in o m iu le s y p ro p o rc io n e
un a n á lisis d e s u tie m p o d e e je c u c ió n . E sc rib a e l m é to d o u san d o :
• in c l u d e " n o m b re fic h e ro *
p o r e l c o n te n id o d e n o m b i e f i c h e r o .
C A P Í T U L O __________________________________________________________
8 Algoritmos de ordenación
L a o rd e n a c ió n e s u n a a p lic a c ió n fu n d a m e n ta l e n c o m p u ta c ió n . L a m a y o ría d e
lo s d a to s p ro d u c id o s p o r u n p ro g ra m a e s tá n o rd e n a d o s d e a lg u n a m a n e ra , y
m u c h o s d e lo s c ó m p u to s s o n e fic ie n te s p o rq u e in v o c a n in te rn a m e n te a un
m é to d o d e o rd e n a c ió n . E n c o n s e c u e n c ia , la o rd e n a c ió n e s m u y p ro b a b le m e n te la
o p e ra c ió n m á s im p o rta n te y m e jo r e stu d ia d a e n c o m p u ta c ió n .
E ste c a p ítu lo e stu d ia el p ro b le m a d e o rd e n a r un v ecto r d e e lem en to s, d e sc rib ie n
d o y a n a liz a n d o v a rio s a lg o ritm o s d e o rd e n a c ió n L a s o rd e n a c io n e s q u e e s tu d ia re
m os e n e s te c a p ítu lo p u ed en re a liz a rse e n te ra m e n te e n m e m o ria p rin cip al, e n la m e
d id a e n q u e e l n ú m e ro d e e le m e n to s a o rd e n a r s e a m o d e ra d a m e n te p eq u eñ o (del
o rd e n d e u n o s p o c o s m illo n es). S o n ta m b ié n im p o rta n te s las o rd e n a c io n e s q u e 110
p u ed en realiz arse e n m e m o ria p n n cip .il y deb en se r realizad as e n d isc o o c in ta. E ste
tip o ríe o rd e n a c ió n , d en o m in a d a o rd e n a c ió n exte rn a , se e stu d ia e n la S ecció n 20.6.
L a d is c u s ió n so b re la o rd e n a c ió n q u e a q u í se p re s e n ta e s u n a m e z c la e n tr e te o
ría y p rá c tic a . In clu y e v a rio s a lg o ritm o s c o n d is tin to s re n d im ie n to s y m u estra c ó
m o e l a n á lisis d e l re n d im ie n to d e u n a lg o r itm o p u e d e lle v a rn o s a c o n c e b ir u n a ím
p le m e n ta c ió n q u e d is te b a sta n te d e se r o bvia.
E n e s te c a p ítu lo v erem o s:
• Q u e la o rd e n a c ió n p o r in se rc ió n , m o s tra d a y a e n la I ig u ra 4 .IN . s e e je c u ta
e n tie m p o c u a d rá tic o .
• C ó m o im p le m e n ta r S h e lls o rt (la o rd e n a c ió n d e S h e ll), u n m é to d o d e o rd e n a
ció n sim p le y e fic ie n te , c o n u n tie m p o d e e je c u c ió n su b c u a d rá tic o .
• C ó m o e sc rib ir lo s a lg o ritm o s u n p o c o m á s c o m p lic a d o s d e q u ic k s o rt y m er-
g e so rt. q u e tie n e n un tie m p o d e e je c u c ió n e n O t.V log.Y ).
• Q u e u n a lg o ritm o d e o rd e n a c ió n d e p ro p ó s ito g e n e ra l re q u ie re íi».Y log V i
c o m p a ra c io n e s.
E n la S e c c ió n 5 .6 v im o s c ó m o b u s c a r e n u n v e c to r o rd e n a d o e s m á s se n c illo q u e
b u s c a i e n u n o q u e n o lo e sté . E s to n o e s só lo c ie r to p a ra a lg o ritm o s a s e r e je c u ta
d o s p o r m á q u in a s, s in o ta m b ién p a ra e l p ro c e d e r c o tid ia n o d e las p e rs o n a s. Por
e je m p lo , e n c o n tra r e l n o m b re d e a lg u ie n e n e l listín te le fó n ic o e s fá c il, m ie n tra s 8.2 Preliminares
q u e b u s c a r u n n ú m e ro d e te lé fo n o sin c o n o c e r e l n o m b re d e la p e rso n a a la que
c o rre s p o n d e e s . e n la p ra c tic a , u n a ta re a c a s i im p o sib le . C o m o c o n se c u e n c ia , m u
T o d o s lo s a lg o ritm o s d e s c r ito s e n e s te c a p ítu lo s o n in te rc a m b ia b le s. T o d o s recib en
c h a d e la in fo rm a c ió n d e v u e lta p o r u n c ó m p u to se p re s e n ta d e fo rm a o rd e n a d a d e
un v e c to r q u e c o n tie n e los e le m e n to s , y s ó lo p u e d e n se r o rd e n a d o s o b je to s q u e irn-
m o d o q u e su m a n e jo re s u lte m u c h o m á s se n c illo . A lg u n o s e je m p lo s son:
p le m e n te n e l in te riu / C o m p a r a b l e . P o r ta n to , las ú n ic a s o p e ra c io n e s d isp o n ib le s
• l as p a la b ra s d e un d ic c io n a rio e s tá n o rd e n a d a s (ig n o ra n d o la d is tin c ió n e n p a ra o b te n e r in fo rm a c ió n so b re e l o rd e n re la tiv o d e lo s e le m e n to s so n ~ < t • ■_ ¿r
tre m a y ú s c u la s y m inúscu las» . \ c o m p a r a . L o s a lg o ritm o s q u e o rd e n a n b a jo e s ta s c o n d ic io n e s s e d en o m in a n
• L o s fich ero s d e u n d ire c to rio g e n e ra lm e n te s e m u e s tra n o rd e n a d o s a lg o r itm o s d e o r d e n a c ió n p o r c o m p a ra , n>n. T o rio s lo s a lg o ritm o s d e o rd e n a c ió n
• L l ín d ic e d e u n lib ro e s ta o rd e n a d o i ig n o ra n d o la d is tin c ió n e n tre m a y ú s c u q u e v e re m o s so n m é to d o s e s tá tic o s d e I j c la s e o r d e n a c i ó n (en e l p a q u e te
las ) m in ú sc u la s). F .s tr u c t u r a s D a t o s ) . fin e s te c a p itu lo . V e s e l n ú m e ro tic e le m e n to s a o rd e n a r
• L l c a ta lo g o d e u n a b ib lio te c a e s tá o rd e n a d o p o r a u to r y p o r títu lo .
• L l lista d o ile c u rs o s o fre c id o s p o r u n a u n iv e rsid a d se o fre c e o rd e n a d o , p ri
m e ro p o r d e p a rta m e n to s y d e s p u é s p o r n ú m e ro d e c u rs o , p o r e je m p lo .
• M u c h o s b a n c o s o fre c e n e s ta d o s d e c u e n ta s d o n d e lo s c h e q u e s e s tá n o rd e n a 8.3 Análisis d e la ordenación por inserción
d o s p o r su n ú m ero . y otras ord enaciones simples
• F.n un p e rió d ic o , e l c a le n d a rio ríe e v e n to s e s tá o rd e n a d o p o r fecha.
• L o s d is c o s c o m p a c to s m u s ic a le s e s tá n o rd e n a d o s e n u n a tie n d a d e d is c o s por
F l m é to d o d e o rd e n a c ió n m ás sim p le , d e n o m in a d o o rd e n a c ió n p o r in s e rc ió n , se
el n o m b re d e l artista.
d is c u tió e n la S e c c ió n 4 .3 .1 . I.a im p le m e n ta c ió n e n la F ig u n i 8.2 re p ite la p re s e n
• E n lo s p ro g ra m a s im p re s o s p a ra c e re m o n ia s d e g ra d u a c ió n , los d e p a rta m e n
ta d a e n la F ig u ra 4 18. D e b id o a lo s b u c le s a n id a d o s , c a d a u n o d e lo s c u a le s pued e
to s s e lis ta n e n o rd e n > lo s e s tu d ia n te s d e c a d a d e p a rta m e n to ta m b ié n se
r c a li/a r N ite ra c io n e s, e l a lg o ritm o d e o rd e n a c ió n p o r in s e rc ió n e s Af*). E s m ás.
m u esU an o rd e n a d o s.
e s ta c o ta e s a lc a n /a h le . y a q u e u n v e c to r d e e n tra d a o rd e n a d o r e n o rd e n in v erso
N o e s s o rp re n d e n te p o r ta n to , q u e g ra n p a rte d e l tr a b a jo re a liz a d o e n c o m p u ta re q u ie re e n e fe c to u n tie m p o c u a d rá tic o . E n c á lc u lo p re c is o m u e s tra q u e e l test d e
c ió n in v o lu c re la o rd e n a c ió n A d e m á s, hay ta m b ié n u s o s in d ire c to s d e la o rd e n a la lín e a 10 p u e d e e je c u ta rs e , c o m o m u c h o . ! ’ * I v e c e s , p o r c a d a v a lo r d e / ’. S u
c ió n P o r e je m p lo , su p o n g a q u e q u is ié ra m o s a \c r ig u u r si e n u n v e c to r e x is te n e le m a n d o so b re to d o s lo s p o sib le s o b te n e m o s un to tal de
m e n to s d u p lic a d o s L a F ig u ra 8.1 m u e s tra u n m é to d o s e n c illo d e l c u a l s e v e
in m e d ia ta m e n te q u e e n e l c a s o p e o r re q u ie re u n tie m p o c u a d rá tic o . L a o rd e n a c ió n ¡ { P + 1> = 2 + 3 + 4 + + A' = 0 ( J V 2).
n o s p ro p o rc io n a u n m é to d o a lte rn a tiv o : si o rd e n a m o s u n a c o p ia d e l v e c to r, lo s e le
m e n to s d u p lic a d o s a p a re c e rá n ju n to s y p o d rá n s e r d e te c ta d o s m e d ia n te u n re c o rri
P o r o tr o la d o , si e l v e c to r d e e n tra d a y a v ie n e o rd e n a d o , e l tie m p o d e e je c u c ió n
d o s e c u e n c ia l d e l v e c to r. L l tie m p o d e e s te a lg o ritm o e s tá d o m in a d o p o r la o rd e n a e s ( ) { \ ) y a q u e e l test d e l b u c le f o r m á s in te rn o ta lla in m e d ia ta m e n te . D e h ech o ,
c ió n . p o r lo q u e si p o d e m o s o rd e n a r e n un tie m p o su b c u a d rá tic o . te n d re m o s un
si e l \e c to r d e e n tra d a e s tá c a s i o rd e n a d o (e l té rm in o c a s i o r d e n a d o sera d e fin id o
a lg o ritm o m e jo r q u e e l d e p a rtid a . H a y m u c h o s o tr o s a lg o ritm o s c u y o tie m p o de
fo rm a lm e n te e n b re v e ), la o rd e n a c ió n p o r in s e rc ió n s e e je c u ta rá rá p id a m e n te E sto
e je c u c ió n s e ve m e jo ra d o d e fo rm a s ig n ific a tiv a o r d e n a n d o lo s d a lo s in ic ia lm e n te . s ig n ific a q u e e l tie m p o d e e je c u c ió n n o d e p e n d e e x c lu s iv a m e n te d e la c a n tid a d de
I n a g ra n m a y o ría d e lo s p ro y e c to s d e p ro g ra m a c ió n u tili/a n la o id c n a c ió n en
a lg ú n m o m e n to , y e n m u c h o s c a so s , e l c o s te d e l a o rd e n a c ió n d e te rm in a su c o ste
g lo b a l P o r ta n to , q u e re m o s se r c a p a c e s d e im p le in e n ta r la o rd e n a c ió n d e fo rm a 1 // ordenacionP orlnser'rion: ordena e l vector a
rá p id a y segura. 2
3 p u b lic s t a t i c v o i d o r d e n a c i o n P o r l n s e r c i o r . ( Cr-rrparable I ’. a )
1 u Devuelvo t t u e ni vector contiene duplicados: talaa, 4 t
en o t r o caso 5 fo ri i n ; p * 1; p < a . l e n g t h ; p*- i
2 6 I
3 public s t a ti c boolean duplicadost Obiect. ) a i 7 com parable tnp = a ’ p !;
4 ( 8 ;nt. 3 = P ¡
5 f o r ( i n t 1 = ü; i < a . l e n y t b ; i •• i
9
ó f o r I in* ' - i - i ; j < a . l a i Q ' t h ; í** •
10 íor < : j > 0fci. t r cp. meno: Qu4»< a| ' - 1 1 1: 1--
7 j f ( a í i J .u q u a 1a (.»{ ) | ) I
3 return true: E n contrado un d u p licad o 11 al 3 i *> a t j - 1 1;
9 12 *1 j i = tm p:
10 re tu rn ta ls e ; / / No h a y d u p l i c a d o s 13
11 ) 14 )
Figuro 8 .1 Algoritm o sim ple d e co ste c u a d rá tic o po ro d e te cta r du plicad os Figura 8.2 O rd en ació n a e n e o c a por Inserción
d a lo s , s in o ta m b ié n d e l o rd e n e s p e c ífic o d e e s to s d a to s . D e b id o a e s ta g ra n v a ria
T o d o a lg o r itm o q u e o rd e n e m e d ia n te in te r c a m b io d e e le m e n to s a d y a c e n - Te<
c ió n . m e re c e la p e n a a n a liz a r e l c o m p o rta m ie n to e n e l c a s o m e d io . R e su lta q u e el
te s re q u ie re , e n p r o m e d io , u n tie m p o Q (V >.
tie m p o m e d io d e la o rd e n a c ió n p o r in s e rc ió n , a l ig u al q u e e l d e o tr o s a lg o ritm o s
sim p le s d e o rd e n a c ió n , e s O riV "). Ih
E l n ú m e ro m e d io d e in v e r sio n e s d e l v e c to r d e p a r tid a es Vf.Y / 1/4. C a
U na in v e r s ió n e n u n v e c to r d e n ú m e ro s e s to d o p a r ( i . j ) c o n ¡ < j y A, > A¡. P o i
d a in te r c a m b io e lim in a e x a c ta m e n te u n a in v e r sió n , p o r l o q u e e l n ú m e ro
e je m p lo , la s e c u e n c ia {8. 5 . Ó. 2 . 6 . 3 J c o n tie n e d ie z in v e rs io n e s q u e c o rre sp o n d e n d e in te rc a m b io s n e c e sa r io s e s 12t N~).
a lo s p a re s (8 . 5 ) . (8 . 2». |X . 6 ). (8 . 3 ) . (5 . 2 ). (5 . 3 ). ( 9 , 2 ) . (9 . 6 ). (9 . 3» y (6 . 3).
P u ed e o b se rv a rse q u e e l n ú m e ro d e in v e rs io n e s d e l v e c to r d e p a rtid a e s ig u a l al É ste e s un e je m p lo d e c á lc u lo d e u n a c o la in fe rio r. E s v á lid a n o s ó lo p a ra la la
n ú m e ro d e v e c e s q u e se e je c u ta la lín e a 1 1 d e la f i g u r a 8 .2 a l o rd e n a rlo . Listo es o rd e n a c ió n p o r in s e rc ió n , q u e re a liz a im p líc ita m e n te in te rc a m b io s d e e le m e n to s un»
Til
a s í p u e s e l e fe c to d e la in s tru c c ió n d e a sig n a c ió n e s in te rc a m b ia r lo s e le m e n to s a d y a c e n te s, s in o ta m b ié n p a ra o tro s a lg o ritm o s s im p le s (n o d e s c r ito s a q u í) , c o m o
ren
¿a • j J v a 13 - 1 1. (E n re a lid a d , e v ita m o s ta n to s in te rc a m b io s u tiliz a n d o u n a v a ria la o rd e n a c ió n p o r e l m é to d o d e la b u rb u ja o la o rd e n a c ió n p o r se le c c ió n . M á s en cu<
b le a u x ilia r, p e ro a ú n a s í s e tra ta d e u n in te rc a m b io a b s tra c to .) In te rc a m b ia r d o s g e n e ra l, e s v á lid a p a ra to d a u n a c la s e d e a lg o ritm o s, in c lu y e n d o a lg u n o s q u e no se nh<
e le m e n to s q u e n o e s tá n b ie n c o lo c a d o s e lim in a e x a c ta m e n te u n a in v e rs ió n , y un h a b rá n d e s c u b ie rto a ú n : to d o s a q u é llo s q u e re a liz a n s ó lo in te rc a m b io s d e e le m e n
v e cto r o rd e n a d o n o c o n tie n e n in g u n a in v e rsió n . P o r ta n to , si al p rin c ip io d e l a lg o to s a d y a c e n te s. M
’*1<
ritm o te n e m o s / in v e rsio n e s , d e b e m o s re a liz a r / in te rc a m b io s im p lícito s. Y a q u e el O b s e rv e q u e la o b te n c ió n e x p e rim e n ta l d e re s u lta d o s v á lid o s p a ra to d a una
coi
te s to d e l tra b a jo re a liz a d o p o r e l a lg o ritm o e s (MN) , e l tie m p o d e e je c u c ió n d e la d a s e d e a lg o ritm o s re q u e rirá , e n g e n e ra l, la e je c u c ió n d e to d o s lo s a lg o ritm o s d e Olo
o rd e n a c ió n p o r in s e rc ió n e s ( MI + .Y), d o n d e / e s e l n ú m e ro d e in v e rs io n e s e n el l a cla se . E s to n o e s p o sib le e n c u a n to el n ú m e ro d e p o s ib le s a lg o ritm o s vea in f in i ad
v e cto r o rig in a l. L u eg o e l a lg o ritm o d e o rd e n a c ió n p o r in s e rc ió n se e je c u ta e n to . D e m o d o q u e c u a lq u ie r re s u lta d o o b te n id o e x p e rim e n ta lm e n te s ó lo s e a p lic a ría
tie m p o lin e a l si e l n ú m e ro d e in v e rs io n e s e s (X N ). a a q u e llo s a lg o ritm o s c o m p ro b a d o s. E s to h a c e q u e la c o n firm a c ió n e x p e rim e n ta l
P o d em o s c a lc u la r c o ta s p re c isa s d e l tie m p o d e e je c u c ió n e n e l c a s o m e d io del de la v a lid e z d e u n a h ip o té tic a c o ta in fe rio r s e a m u c h o m á s d ifíc il q u e la c o n fir
a lg o ritm o d e o rd e n a c ió n p o r in s e rc ió n , c a lc u la n d o e l n ú m e ro m e d io d e in v e r s io m ac ió n d e la v a lid e z d e u n a c o ta s u p e r io r d e u n ú n ic o a lg o ritm o , a la q u e e sta m o s
a c o stu m b ra d o s. U n c ó m p u to só lo p o d ría re fu ta r u n a c o n je tu ra s o b re u n a c o ta in
n es e n e l v e c to r. lX T im r c o rre c ta m e n te lo q u e s ig n ific a « e n e l c a s o m e d io » n o es
te rio r: p e ro , e n g e n e ra l, n u n c a p o d ría p ro b arla.
fá c il. A s u m ire m o s q u e n o hay e le m e n to s re p e tid o s ts i p e rm itim o s re p e tic io n e s , no
A u n q u e la d e m o s tra c ió n d e la c o ta in fe rio r a rrib a o b te n id a e s b a sta n te sim ple,
e s tá c la r o lo q u e s ig n ific a ría e l n ú m e ro m e d io d e re p e tic io n e s). E n to n c e s p o d e m o s
e n g e n e ra l, p ro b a r u n a c o ta in f e rio r e s b a sta n te m ás c o m p lic a d o q u e p ro b a r una
s u p o n e r, sin p e rd id a d e g e n e ra lid a d , q u e lo s d a to s d e e n tra d a so n u n a c ie r ta re o r
c o ta su p e rio r. E o s a rg u m e n to s p a ra p ro b a r u n a c o ta in f e rio r s o n b a sta n te m á s a b s
g a n iz a c ió n d e lo s N p rim e ro s n ú m e ro s n a tu ra le s (y a q u e s ó lo e l o rd e n re la tiv o e n
tra c to s q u e su s c o n tra p a rtid a s p a ra la s c o ta s su p e rio re s.
tre e llo s im p o rta ): e s ta s re o rg a n iz a c io n e s se d e n o m in a n p e rm u ta c io n e s. P o d e m o s
L a c o ta in fe rio r o b te n id a n o s in d ic a q u e p a ra q u e u n a lg o ritm o d e o rd e n a c ió n
ra z o n a b le m e n te a s u m ir q u e to d a s e s ta s p e rm u ta c io n e s so n e q u ip ro b a b le s . B a jo e s
sea s u b c u a d rá tie o . e s to e s . e s té e n (M\’2). d e b e h a c e r c o m p a ra c io n e s y . e n p a rtic u
ta s h ip ó te s is , p o d e m o s e s ta b le c e r e l T e o re m a 8.1. lar. in te rc a m b ia r e le m e n to s , q u e e s té n a le ja d o s e n tr e sí. U n a lg o ritm o d e o rd e n a
c ió n p ro g re s a e lim in a n d o in v e rsio n e s . P ara q u e se e je c u te e fic ie n te m e n te , debe
e lim in a r m á s d e u n a in v e rsió n p o r in tercam b io .
/:'/ n ú m e r o m e d io d e in v e r sio n e s d e u n v e c to r d e N n ú m e ro s d is tin to s es
Vt.V - 1 ) 4 .
8.4 Shellsort
P a ro c a d a v e c to r d e n ú m e r o s A. d e n o te m o s p o r A , e l v e c to r e n o r d e n in !'n
El p rim e r a lg o ritm o q u e m e jo ró d e fo rm a s u s ta n c ia l la o rd e n a c ió n p o r in serció n
verso. P or e je m p lo , e l in v e r so d e l v e c to r ( I, 5 . 4 . 2. ó . 3 ) e s fJ , 6 . 2. 4 . 5 . I ). ul(
fu e S h e lls o r t. E l a lg o ritm o d e o rd e n a c ió n d e S h e ll. S h e llso rt. fu e d e s a rro lla d o e n
C o n sid e r e m o s c u a lq u ie r p a r d e n ú m e ro s t.v. y ) d e l vecto r, c o n v > x. Sut
1 9 5 9 p o r D o n ald S h ell. A u n q u e h o y e n d ía n o e s e l a lg o ritm o c o n o c id o m á s rápi ’.ll
C x a c ta m c n tc e n u n o d e lo s v e c to r e s A o A ,, e s te p a r r e p r e s e n ta u n a i n
d o . s ó lo e s a lg o m á s larg o y c o m p le jo q u e la o rd e n a c ió n p o r in s e rc ió n , lo q u e le p«<
v e r s ió n . E l n ú m e r o to ta l d e p a r e s e n A y A , e s N ( N — 1) ‘2 . P o r ta n to , e n ...
h a ce e l m á s s im p le d e lo s a lg o ritm o s m á s rá p id o s.
p r o m e d io te n d r e m o s la m ita d d e e s te n ú m e ro d e in v e r sio n e s , es d e c ir .
L a id e a d e S h ell fue e v ita r g ra n c a n tid a d d e m o v im ie n to s d e d a to s c o m p a ra n d o
M jV - 1 ) 4 .
p rim e ro e le m e n to s q u e e s tu v ie ra n m u y s e p a ra d o s , p a ra d e s p u é s c o m p a ra r e le m e n Sh
9"
to s a lg o m á s c e rc a n o s , y a s í s u c e s iv a m e n te , re d u c ié n d o se g ra d u a lm e n te a l m é to d o 5©
D el T e o re m a X I se d e d u c e q u e la o rd e n a c ió n p o r in s e rc ió n e s c u a d rá tic a en d e in s e rc ió n S h e lls o rt u tiliz a u n a s e c u e n c ia h , . h »....... h ,. d e n o m in a d a secu en cia IV
4000 1. 936 61 59 54
Dospubs o o O 3 - c r d o n a c o n 28 12 11 35 15 41 58 17 94 75 81 96 95
3 2 CCO 131911 869 752 575
--------------------------- J
Después Oo o 1 o rd en accn 11 12 15 17 28 35 41 58 75 81 94 95 96
64 000 520 000 2 091 1 705 1 1 249
_______________ 1----------------------------- 1
Figura 8 3 Shellsort d e s p u é s d e c o d a p o s o , c o o n d o l a s e c u e n c i a d e « c r e m e n t o s Fi g ur o 8 5 T i e m p o d e e j e c u c i ó n <on m i l i s e g u n d o s ) d e i o o r d e n a c i ó n p o r i n s e r ci ó n y
e s ( ) . 3. 5). d e Shellsort c o n v a n a s s e c u e n c i a s d e i n c r e m e n t o s .
C u a n d o se u lili/a n Ion In c re m e n to s d e S h e ll, se p u e d e p ro b a r q u e e l c a s o p e o r a d ic io n a l m ín im o e n lo q u e s e re fie re a la c o m p le jid a d ló g ic a d e l a lg o ritm o . Un
e s (X A - ). E sta c o ta s e a lc a n z a c u a n d o A e s u n a p o te n c ia d e 2 . lo d o s los e le m e n to s sim p le c a m b io e n la s e c u e n c ia d e in te rv a lo s p u e d e m e jo ra r to d a v ía m á s e l re n d i
g ra n d e s e s tá n e n p o sic io n e s p a re s d e l v e c to r y lo d o s lo s p e q u e ñ o s e n p o sic io n e s m ie n to . S e p u e d e n c o n s e g u í! m e jo ra s a ú n m a y o re s (c o m o se v e rá e n e l E je rc ic io
im p a re s. C u a n d o se a lc a n z a la ú ltim a ite ra c ió n , to d o s lo s e le m e n to s g ra n d e s e s ta 8 .1 8 ). A lg u n a s d e e s ta s m e jo ra s tie n e n un fu n d a m e n to te ó ric o , p e ro n in g u n a s e
rán to d a v ía e n las p o sic io n e s p a re s , y to d o s lo s p e q u e ñ o s e n p o sic io n e s im p ares. c u e n c ia c o n o c id a m e jo ra a p ie c ia b le m e n le la m o s tra d a e n la F ig u ra 8 .4
U n calcule» d e l n ú m e ro d e in v e rsio n e s re s ta n te m u e s tra q u e la ú ltim a ite ra c ió n re El re n d im ie n to d e S h e lls o rt e s b a sta n te a c e p ta b le e n la p rá c tic a , a u n c o n v a lo
q u e rirá un tie m p o c u a d rá tic o . I.a a firm a c ió n d e q u e é s te e s e l p e o r c a s o s e sigue re s d e A d e d e c e n a s d e m iles. I.a s im p lic id a d d e l c ó d ig o h a c e q u e s e a e l a lg o ritm o
d e l h e c h o d e q u e u n a /^ -o rd e n a c ió n c o n s is te e n h t o rd e n a c io n e s p o r in s e rc ió n d e. a e le g ir p a ra o rd e n a r e n tra d a s d e ta m a ñ o m o d e ra d a m e n te g ra n d e . E s ta m b ié n un
a p ro x im a d a m e n te . A h , e le m e n to s . P o r c o n s ig u ie n te , e l c o s te d e c a d a ite ra c ió n es b u e n e je m p lo d e a lg o ritm o m u y s im p le c o n un a n á lis is e x tre m a d a m e n te co m p lejo .
O t/ij< A /j¿)'>. o s e a (X A - li¡). A l s u m a r s o b re to d a s la s ite ra c io n e s, o b te n e m o s
(X A ‘ L//<). Y a q u e lo s in c re m e n to s g e n e ra n , a p ro x im a d a m e n te , u n a se rie g e o m é
tric a . la s u m a e s tá a c o ta d a p o r u n a c o n s ta n te . El re s u lta d o e s q u e e l tie m p o d e e je
c u c ió n e s c u a d rá tic o e n e l c a s o p e o r. T a m b ié n s e p u e d e p ro b a r, a tra v é s d e u n a r 8.5 Mergesort
g u m e n to c o m p le jo , q u e c u a n d o A e s u n a p o te n c ia d e 2 . e l tie m p o m e d io d e
e je c u c ió n es (X.Y *). P o r ta n to , e n p ro m e d io , la s e c u e n c ia d e in c re m e n to s d e
E n la S e c c ió n 7 .5 v im o s c ó m o la re c u rs ió n p u e d e u tiliz a rse p a ra d e s a rro lla r a lg o
S h e ll re p r e s e n ta u n a m e jo ra s ig n ific a tiv a so b re la o rd e n a c ió n p o r in serc ió n . ritm o s su b c u a d rá tic o s. E n c o n c re to , u n a lg o ritm o d iv id e y v e n c e rá s e n e l c u a l se
U n c a m b io m ín im o e n la se c u e n c ia d e in c re m e n to s p u e d e e v ita r e l c a s o p e o r
resuelv e n recursiv á m e n te d o s p ro b le m a s c o n la m ita d d e ta m a ñ o , c o n u n a s o b re
c u a d rá tic o . S i a l d iv id ir i n t e r v a l o p o r 2 e l re s u lta d o e s p a r. e n to n c e s le su m a re
c a rg a (X A ), e s u n a lg o ritm o (X A Io g A ). M erg eso rt e s u n o d e e sto s a lg o ritm o s, o fre
m o s I p a ra h a c e rlo im p ar. E n e s te c a s o se p u e d e p ro b a r q u e e l c a s o p e o r y a n o e s
c ie n d o u n a m e jo r c o ta , a l m e n o s a n iv el te ó ric o , q u e las a firm a d a s p a ra S h ellso rt.
c u a d rá tic o . s in o (X A "). A u n q u e la d e m o s tra c ió n e s c o m p lic a d a , s e b a s a e n q u e
El a lg o ritm o m e rg e so rt c o n s ta d e tr e s pasos:
e n e s ta n u e v a s e c u e n c ia d e in c re m e n to s, lo s in c re m e n to s c o n s e c u tiv o s n o c o m p a r
te n n in g ú n fa c to r c o m ú n (m ie n tra s q u e p a ra la s e c u e n c ia d e in c re m e n to s d e S h e ll 1. S i e l n ú m e ro d e e le m e n to s a o rd e n a r e s 0 o I . a c ab ar.
e s to s í o c u rría ). C u a lq u ie r s e c u e n c ia q u e c u m p la e s ta p ro p ie d a d (y c u y o s in c re 2. O rd e n a r re v u lsiv a m e n te las d o s m ita d e s d e l v ecto r.
m e n to s d e c re z c a n , a p ro x im a d a m e n te , d e fo rm a g e o m é tric a ) te n d r á u n tie m p o de 3. M e z c la r las d o s m ita d e s o rd e n a d a s e n un v e c to r o rd e n a d o .
e je c u c ió n e n e l c a s o p e o r (X A * “V . S e d e s c o n o c e e l re n d im ie n to e n p ro m e d io del
a lg o ritm o c o n e s to s n u e v o s in c re m e n to s, p e r o b a s á n d o s e e n sim u la c io n e s p arece P ara a firm a r q u e e l a lg o ritm o e s (X A Io g V). e s s u fic ie n te d e m o s tra r q u e la
se r O iN ' \ m e z c la o rd e n a d a d e d o s v e c to re s o rd e n a d o s p u e d e re a liz a rs e e n tie m p o lin e a l. En
U n a te rc e ra se c u e n c ia , q u e se c o m p o rta b ie n e n la p rá c tic a , a u n q u e s e d e s c o la sig u ie n te s u b s e c c ió n v e re m o s c ó m o m e z c la r d o s v e c to re s A y H. c o lo c a n d o el
n o z c a e l fu n d a m e n to te ó r ic o d e e llo , c o n s is te e n d iv id ir p o r 2 .2 e n v e z d e p o r 2. re s u lta d o e n u n te r c e r v e c to r C . D e s p u é s m o s tra re m o s u n a im p le m e n ta c ió n sen ci
P a re c e q u e c o n e llo c o n s e g u im o s u n tie m p o d e e je c u c ió n e n p ro m e d io p o r d e b a jo lla d e m e rg e so rt. L a ru tin a d e m e z c la e s la p ie d r a a n g u la r d e m u c h o s a lg o ritm o s
d e (X A 4) í q u i / á s (X A a u n q u e e s to e s tá to d a v ía p o r p re c isa r. C o n u n n ú m e d e o rd e n a c ió n e x te r n a . E s to s e ilu stra rá e n la S e c c ió n 20.6.
ro d e e le m e n to s e n tre 10 0 .0 0 0 y 1 .0 0 0 .0 0 0 . típ ic a m e n te se m e jo ra e l re n d im ie n to
e n tre un 25 y un 3 5 p o r c ie n to , a u n q u e n a d ie s a b e m u y b ie n p o r q u é . U n a im p le-
m e n ta c ió n d e S h e lls o rt c o n e s ta s e c u e n c ia d e in c re m e n to s se p re s e n ta e n la F ig u ra 8.5.1 M ezcla lineal de vectores ordenados
8 .4 . E l c ó d ig o c o m p lic a d o d e la lín e a 8 e s p a ra e v ita r q u e i n t e r v a l o s e p u ed a
h a c e r ig u a l a 0. S i ta l c o s a o c u rrie ra , e l a lg o ritm o n o fu n c io n a ría c o rre c ta m e n te ,
E l a lg o r itm o d e m e z c la b á s ic o p a rte d e d o s v e c to re s d e e n tra d a A y B . p ro d u c ie n
p u e s n u n c a se h a ría u n a I-o rd e n a c ió n . L a lín e a 8 a s e g u ra q u e c u a n d o i n t e r v a l o
d o u n v e c to r d e s a lid a C . a p o y á n d o s e e n tre s c o n ta d o re s A c o m . B c o m y C c o n t. im -
v a le 2 . p a s a a v a le r I . y n o 0.
c ia liz a d o s a l p rin c ip io d e lo s v e c to re s re s p e c tiv o s. E n c a d a p a s o e l m e n o r d e los
L a ta b la d e la F ig u ra 8 .5 c o m p a ra e l re n d im ie n to d e la o rd e n a c ió n p o r in s e r
v a lo re s A \A c o n t] y B \B c o n i\ se c o p ia e n la p ró x im a p o s ic ió n d e C . a c tu a liz á n d o s e
ció n > e l d e S h e llso rt. c o n v a ria s se c u e n c ia s d e in te rv a lo s. E sto s re s u lta d o s se o b
lo s c o n ta d o re s a p ro p ia d o s. C u a n d o u n o d e lo s v e c to re s d e e n tra d a s e a c a b a , e l re s
tu v ie ro n e n u n a m á q u in a ra z o n a b le m e n te rá p id a . El te st c la ra m e n te e s tá p re d is
to d e l o tro v e c to r s e c o p ia e n C.
p u e sto e n c o n tr a d e la se c u e n c ia d e in te rv a lo s o rig in a l, p u e s A se e lig e 125 v e ces
V e a m o s c ó m o fu n c io n a la ru tin a d e m e z c la so b re la sig u ie n te e n trad a:
u n a p o te n c ia d e 2. A s í e l re d o n d e a r h a c ia a rrib a h a s ta u n n ú m e ro im p a r e s p a rtic u
la rm e n te b e n e fic io s o , e s p e c ia lm e n te c u a n d o A se h a c e g ra n d e . P o d ría m o s c o n c lu ir
fá c ilm e n te q u e S h e lls o rt. in c lu so c o n la se c u e n c ia d e in te rv a lo s m á s sim p le , p ro
24 26
7 15 77 58
p o rc io n a u n a m e jo ra sig n ific a tiv a s o b re la o rd e n a c ió n p o r in se rc ió n , c o n u n c o s te 1 13
l c / a i n v o l u c n n l a . « * w c r v c q u e r r v t .i r I . e n v e / d e « u m u r I . n o f u n c i o n u P o r e j e m p l o , m S e s IX ft. I.i s e c u e n c i a
Ai'onl Hiihii
*». .V I . e n Id q u e i o d o s lo> i n i i c m e n i o s c o m p a r t e n 3 c o m o l a c l o * c o m ú n .
C u a n d o e l v e c to r A c o n tie n e lo s e le m e n to s I. 13. 2 4 y 2 6 . y H c o n tie n e lo s e le F in a lm e n te , e l re s to d e l v e c to r H se c o p ia e n C
m e n to s 2 . 15. 2 7 . 3 8 . e l a lg o r itm o so c o m p o r ta ele la sig u ie n te m a n era : e n p rim er
lu g a r, so c o m p a ra n lo s e le m e n to s | y 2 . c o n lo q u e I se c o p ia e n C : tra s e l l o se
c o m p a ra n los e le m e n to s 13 y 2:
1 13 24 26 s 15 27 13 15 | 24 | 26 j 27 | 38
1 13 24 26 s 15 27 3K
' .3« ont H, ont
/
C '« ont
At ont
í
R, ont Cn u i l
F.l tie m p o n e c e sa rio p a ra m e z c la r d o s v e c to re s o rd e n a d o s e s lin eal p u es c a d a
c o m p a ra c ió n in c re m e n ta C c o n t (lim ita n d o , p o r ta n to , e l n ú m e ro d e c o m p a r a c io
E l 2 s e a ñ a d e a C . y so p a s a n a c o m p a ra r lo s e le m e n to s 13 \ 15:
nes!. C o m o resultad**, un a lg o ritm o d iv id e y v e n c e rá s q u e u tilic e u n p ro ced im ien -
to d e m e z c la lin eal so e je c u ta rá e n e l cas*» p e o r e n u n tie m p o (MA lo g ,V>. É ste ta m
b ién se rá e l tie m p o d e e je c u c ió n e n e l c a s o p ro m e d io , e in c lu s o e n e l c a s o m ejo r,
1 13 24 26 > 15 27 38
•- 1 2
y a q u e la m e z c la e s s ie m p re lineal.
C o m o e je m p lo d e a p lic a c ió n d e l a lg o ritm o m e rg e so rt o rd e n e m o s e l vecnw de
8 e le m e n to s «24. 13. 2 6 . I. 2. 2 7 . 3 8 . 15) D e sp u é s d e o rd e n a r, re-cursivam ente, los
fU ,m i Co
4 p rim e ro s e le m e n to s y l**s 4 ú ltim o s . o b tencnu»s < I . 13. 2 4 . 2 6 . 2. 15. 2 7 . 38). F i
n a lm e n te so m e z c la n las d o s m itad es, o b te n ie n d o e l v e c to r final ( 1 . 2 . 13. 15. 24.
El 13 se añ a d e a ( '. y so c o m p a ra n lo s e le m e n to s 2 4 \ 15: 2 6 . 2 7 . 38).
I 13 24
*
26 15 2? 38
un 13 1
2
3
4
Método i n t e r n o q u e r e a l i z a l a s l la m a d a s r e c u r s i v a s .
9paiam a un v e c to r do elem entos do t i p o Comparable.
i »par am v e c t o r T e x p u n v e c t o r p a r a c o l o c a r e l r e s u l t a d o de la
Acont ¡U ont Ctont
13 24 26
T
15 27 38
cu 13 15
9
10
11
12
Comparable ( J vectorTem p. In t i z q . in t d e r )
*
Vi ont Hr <DI Cionl 13 int centro = i z q » d e r > / 2;
14 mergesort < a v e c to rT e m p . i z q , c e n t r o I;
15 nergeSortt a vectorTem p. c e n t r o * 1. d e r );
16 ctorT em p. iz q . c e n t r o * 1. der
17
18
19
20
21
22 •r.tos d e t i p o C o r p a r a o i e .
b l e le m e n to 2 6 so a ñ a d e a C c o n lo q u e e l v e c to r A so a c a b a 23
24 m e r g e s o r t( Comparable [ ) a >
25
1 13 24 26 | 26 'c a p a r a L l v e c t o r T e m p = new C o m p a r a b l e ( a . l e n g t h
s
í í
15 27 13 | 15 | 24 26 27
•
28 /ectorTenp. 0. a.len g th - 1 j;
29
3< ont ll< ont C u un
F igu ro 8 6 Rutinas básicas d e m**i g e S o r t.
8.5.2 El algoritm o mergesort U n a v a ria c ió n d e m c rg c so ii se p u e d e im p le m e n ta r d e fo rm a n o re c u rsiv a . IX*
c u a lq u ie r fo rm a, p a ra a p lic a c io n e s s e n a s d e o rd e n a c ió n in te rn a e l a lg o ritm o u tili
L a F igura K.6 m urM ra u n a im p lem en tació n m u y te r n illa d e m rrg o o v i E l m e r g e s o r t z a d o su e le se r q u ic k s .n i. d e s e n to e n la p ró x im a secció n .
p ú b lic o e s u n s im p le e n v o lt o r i o q u e d e c la ra u n \ e c l o r te m p o r a l y lla m a a l r e r -
g e S o r t re c u rs iv o c o n lo s lim ite s d e l v e c to r. L a ru tin a ¡ n o v e l a r s ig u e la d e s c rip
c ió n d a d a e n la s e c c ió n a n te rio r. U tiliz a la p rim e ra m ita d d e l v e c to r (in d e x a d o 8.6 Quicksort
d e s d e i z q a c e n t r o » c o m o A . la s e g u n d a ilu ta d lin d e v a d a d e s d e c e n t r o * 1
h a s ta d e r » c o m o H y e l v e c to r a u x ilia r c o m o C . I.a F ig u ra X.7 m u e s tra la ru tin a
( ) in c i s o r t2 e s e l a lg o ritm o d e o rd e n a c ió n m ás rá p id o c o n o c id o . S u tie m p o d e e je ©u|
m ezclar P o r u ltim o , e l v e c to r a u x ilia r se c o p ia e n e l v e c to r o rig in a l.
c u c ió n p ro m e d io e s C X M o g N ). S u ra p id e z se d e b e p rin c ip a lm e n te a u n bu cle
A u n q u e e l tie m p o d e e je c u c ió n d e m e rg e so rt e s (H V lo g V>. ra ra ve/, se u tiliza
in te rn o m u y a ju s ta d o y a lta m e n te o p tim iz a d o . T ie n e u n re n d im ie n to c u a d rá tic o en
p a ra o rd e n a c io n e s e n m e m o ria . E s to e s d e b id o a q u e la m e z c la d e d o s s u ln e c to re s :
e l c a s o p e o r, p e r o e s te c a s o p u e d e h a c e rs e e s ta d ís tic a m e n te im p ro b a b le c o n p o c o >mc
o rd e n a d o s u l i l i / a un e s p a c io a d ic io n a l lin e a l, y e l tra b a jo a d ic io n a l d e b id o a las
e sfu e rz o . El a lg o ritm o q u ic k so rt e s re la tiv a m e n te fá c il d e e n te n d e r, a s í c o m o d e od<
c o p ia s h a c ia y d e s d e e l v e c to r a u x ilia r a l o rig in a l, la le n li/u n c o n sid e ra b le m e n te la
d e m o s tra r su c o rre c c ió n , y a q u e s e b a s a e n la re c u rs ió n . S in e m b a rg o su im p le - lap
o rd e n a c ió n . l as c o p ia s s e p u e d e n e v ita r in te rc a m b ia n d o a lte rn a tiv a m e n te lo s p a ai0
m e n ta c ió n re q u ie re a te n c ió n , p u e s c a m b io s m ín im o s e n e l c ó d ig o p u e d e n re p e r c u
p e le s d e a y v e c t o i A u x e n la s lla m a d a s re c u rsiv a s. rOp
tir c o n s id e ra b le m e n te e n e l tie m p o d e e je c u c ió n . E sta s e c c ió n c o m ie n z a d e s c ri
cxd
1 •• b ie n d o e l a lg o ritm o e n u n s e n tid o a m p lio , p a ra p ro p o rc io n a r d e s p u é s u n a n álisis en
2 • M é t o d o i n t e r n o q u e m e z c l a d o s m i t a d e s o r d e n a d a s de u n q u e m u e s tra su s tie m p o s d e e je c u c ió n e n e l c a s o p e o r, e n p ro m e d io , y e n e l c a s o
m e jo r. U tiliz a re m o s e s te a n á lisis p a ra fija r c ie rta s d e c is io n e s so b re la im p lc m e n ta -
3 • ír -a r a n a u n v e c t o r d e e l e m e n t o s d e t i p o C o m p a r a b l e . c ió n e n Ja v a , a te n d ie n d o a c ie rto s d e ta lle s , tales c o m o e l tr a ta m ie n to d e e le m e n to s
4 * 9param vectorTemp un v e c t o r p a r a c o l o c a r e l resu ltad o de la d u p lic a d o s.
5 * dparam p o a l z q e l í n d i c e mas a l a i z q u i e r d a d e l v e c t o r ,
6 • 3param porDer e l í n d i c e d e c o m i e n z o d« l a s e g u n d a n i t a d .
7 • 8param p o sF in e l í n d i c e mas a l a d e r e c h a d e l v e c t o r . 8.6.1 El algoritmo quicksort
8 •/
9 p r í v a t e . s t a t i c v o i d m e z c l a r ( C o m p ara b le l ) a. E l a lg o ritm o b á s ic o Q ttu k s o n iS ) e s re c u rs iv o , c o n s is tie n d o e n lo s sig u ie n te s c u a EIC
'0 Comparable | ’ vectorA ux. int pcslzq. bá
tr o pasos:
Ha
1. S i e l n ú m e ro d e e le m e n to s d e S e s ( l o 1. term in ar. piv
13 ha
14 2 . E sc o g e r u n e le m e n to « iu ilq u ie r a v d e S . E ste e le m e n to se d e n o m in a rá p i
'er
vote
.V H a c e r u n a p o n u io n d e S | » } (e l re s to d e e le m e n to s d e S i e n d o s g ru p o s
17 d is ju n to s: / * i* € s ;»•; | « ^ »•; y l ) = \x e S - {»•; | * ^ »•;.
4 . D e v o lv e r e l re s u lta d o d e <J u u k s o m l i . seguid.» d e v y se g u id o d e l re s u lta
d o d e Ch i u i s o r t l ) ) .
20 v e c t o r A u x [ posAux** ) - a ¡ posIzq** ]
21 else Hay q u e p u n tu a liz a r una se rie d e c u e stio n e s. E n p rim e r lu g a r, e l c a s o b á s ic o de EH
22 v ectorA ux[ posAux-• ) • a( poiiDer** j
23 la re c u rsió n in c lu y e la p o sib ilid a d d e q u e S s e a v a c ío . E s to e s n e c e sa rio , y a q u e las H
24 n C opiar e l r e s to de la prim era m itad lla m a d a s re c u rsiv a s p u ed en g e n e ra r s u b c o n ju n to s v a c ío s . S e g u n d o , e l a lg o ritm o ::
28 w h i l e í p o s I z q <= t i n l z q ) p e rm ite q u e c u a lq u ie r e le m e n to s e a u s a d o c o m o p iv o te . El p iv o te d iv id e a lo s e l e mi
26 vectorAux| posAux** ] = a l p o s l z q * * ) m e n to s d e l v e c to r e n d o s g ru p o s: lo s m e n o re s y lo s m a y o re s q u e é l. E l a n á lisis q u e
re a liz a re m o s m o s tra rá que a lg u n a s e le c c io n e s d e l p iv o te so n m e jo re s q u e «Mras
28 /. C o piar r e s t o de l a segunda mitad
P o r ta n to , a l p ro p o rc io n a r u n a im p le m e n ta c ió n c o n c re ta , n o u tiliz a re m o s u n p iv o te
29 w h i l e ( posDvr <• p o s F i n >
c u a lq u ie ra ; tra ta re m o s d e h a c e r u n a b u e n a e le c c ió n a l resp ecto . El
30 v e c to rA u x [ posAux-* ' = a ’ posDer** '
31 E n e l p a s o .le p o n u io n . c a d a e le m e n to d e 5 . e x c e p to e l p iv o te , se c o lo c a b ien cc
e n /. q u e re p re s e n ta la p arte iz q u ie rd a d e l v e c to r, o e n I ) . q u e re p re s e n ta la parte en
82 // Copiar v . vector tenporal en e l original
33 e<
d e re c h a d e l v e c to r. E l o b je tiv o e s q u e lo s e le m e n to s m e n o re s q u e e l p iv o te v a y a n
<X
34 a : posrin | * vectorAux! poaFin I a /. m ie n tra s q u e lo s e le m e n to s m a y o re s van a I). S in e m b a rg o , la d e s c r ip c ió n del
35 }
Figuro 8 7 R utina m e z c l a r : N del T OnWnjiion upuki. cu ingUS.
a lg o ritm o n o p u n tu a liz a q u é h a c e r c o n lo s h ip o té tic o s e le m e n to s ig u a le s a l pivote. c a d a p a s o s e a lm a c e n a ría n e n u n a p a rte d e l v e c to r d e lim ita d a p o r i n i y t i n . D es
Se p e rm ite q u e e n c a d a c a s o u n e le m e n to ta l v a y a a c u a lq u ie ra d e lo s su b c o n ju n - p u é s d e l p a s o d e p a rtic ió n , e l p iv o te te rm in a ría e n a lg u n a p o s ic ió n p d e l v e c to r y
lo s. e s p e c ific á n d o s e ú n ic a m e n te q u e d e b e ir a u n o s ó lo . C arie d e u n a b u e n a im ple- la s lla m a d a s re c u rsiv a s s e h arían c o n los su b v c c lo rc s d e s d e i n i h a s ta p - 1 y d esd e
m e n ta c ió n e n J a v a re s id irá e n tr a ta r e s te c a s o ta n e fic ie n te m e n te c o m o s e a p o sib le. p * l h a sta f i n .
U n a ve/, m ás. e l a n á lisis n o s p e rm itirá to m a r u n a d e c is ió n b ie n fu n d a m e n ta d a . L a c o rre c c ió n d e l a lg o ritm o s e b a s a e n los sig u ie n te s h ech o s:
L a F ig u ra 8 .8 m u e s tra e l e fe c to d e q u ic k s o rt so b re u n c o n ju n to d e n ú m e ro s. Se
• E l su h e o n ju n to d e e le m e n to s p e q u e ñ o s se o rd e n a c o rre c ta m e n te , e n v irtud
lo m a c o m o p iv o te (s in q u e h a y a n in g u n a ra z ó n e sp e c ia l p a ra h a c e rlo a sí) e l n ú m e
d e la recu rsió n .
ro 6 5 . E l re s to d e e le m e n to s e n e l c o n ju n to se se p a ra n e n d o s su b c o n ju n to s d e ta
• E l m a y o r e le m e n to e n e l su h e o n ju n to d e e le m e n to s p e q u e ñ o s n o e s m a y o r
m añ o m en o r. C a d a u n o s d e e sto s su b c o n ju n to s s e o rd e n a re c u rsiv a m e n te . A p lic a n
q u e e l p iv o te , d a d o c ó m o se h ace la p a rtició n .
d o la te rc e ra reg la d e la re c u rs ió n . p<xlem os s u p o n e r q u e e s te p a s o fu n c io n a
• E l p iv o te n o e s m a y o r q u e e l m e n o r e le m e n to e n e l su h e o n ju n to d e e le m e n
c o rre c ta m e n te . P o r ú ltim o , s e o b tie n e d e fo rm a in m e d ia ta e l re s u lta d o o rd e n a d o
to s g ra n d e s , d a d o c ó m o s e h ace la p a rtició n .
d e l c o n ju n to o rig in a l. E n u n a im p le m e n ta c ió n e n J a v a . los e le m e n to s a o rd e n a r e n
• E l su h e o n ju n to d e e le m e n to s g ra n d e s se o rd e n a c o rre c ta m e n te , e n v irtu d de
la re c u rsió n .
El caso mejor
1 Quicksort con Quicksort con
El c a s o m e jo r p a ra q u ic k s o rt s e p re s e n ta c u a n d o e l p iv o te d iv id e al c o n ju n to e n
elementos pequeños elementos grandes f
d o s su b c o n ju n to s d e ig u al ta m a ñ o . E n tal c a s o te n e m o s d o s lla m a d a s c o n u n ta m a
ñ o d e la m ita d y u n a s o b re c a rg a a d ic io n a l lin e a l, ig u al q u e e n m e rg e so rt. E n c o n
se c u e n c ia . e n e s te c a so , e l tie m p o d e e je c u c ió n e s ( ) ( \ l o g N ) . ( N o h e m o s p ro b a d o
fo rm a lm e n te q u e é s te s e a e n e fe c to e l m e jo r c a s o . T a l d e m o s tra c ió n e s p o sib le ,
ju n q u e n o la v e re m o s aq u í.)
El caso peor
Y a q u e lo s su b c o n ju n to s d e ig u al ta m a ñ o so n lo s m e jo re s p a ra q u ic k s o rt. u n o p o
Figuro 8.8 Los posos d e quicksorl d ría e s p e ra r q u e lo s d e m uy d is tin to s ta m a ñ o s s e a n m alo s. Y e s to e s. e n e le c to , lo
q u e («curre. S u p o n g a m o s q u e e n c a d a p a s o d e la re c u rs ió n . e l p iv o te e s e l m e n o r a p lic a c ió n p a rtic u la r d e q u ic k s o rl q u e p re s e n ta m o s a q u í, n o c o n s titu y e u n a d e m o s
e le m e n to . E n tal c a s o , e l su b c o n ju n to / d e e le m e n to s p e q u e ñ o s se rá v a c ío y e l sub- tra c ió n fo rm a l. L o s a n á lis is e n e l c a s o m e d io n o p u e d e n re a liz a rse a la lig era. S u
c o n ju n to I ) d e e le m e n to s g ra n d e s c o n te n d rá to d o s lo s e le m e n to s , e x c e p to e l p iv o p o n g a m o s . p o r e je m p lo , q u e te n e m o s u n a lg o ritm o p a ra e le g ir e l p iv o te q u e g a ra n
te. H ab rá a h o ra q u e lla m a r (« c u rsiv a m e n te a q u ic k s o rt c o n e l su b c o n ju n to D. S u tiz a se le c c io n a r e l m e n o r o e l m a y o r e le m e n to , c a d a u n o c o n p ro b a b ilid a d 1/2.
p o n g a m o s q u e l \ N ) e s e l tie m p o d e e je c u c ió n d e q u ic k s o n c o n -V e le m e n to s y que E n to n c e s e l ta m a ñ o m e d io d e l su b c o n ju n to c o n e le m e n to s p e q u e ñ o s e s a p ro x im a
e l tie m p o d e o rd e n a r 0 o I e le m e n to e s so la m e n te u n a u n id a d . S u p o n g a m o s ta m d a m e n te N 2 . a s í c o m o e l d e l s u b c o n ju n to d e e le m e n to s g ra n d e s ( y a q u e c a d a uno
b ié n q u e h a c e r la p a rtic ió n d e ;V e le m e n to s re q u ie re N u n id a d e s d e tie m p o , E n to n d e e llo s tie n e c o n ig u a l p ro b a b ilid a d 0 o V I e le m e n to s ) P e ro e l tie m p o d e e j e
c e s. p a ra N > I . o b te n e m o s u n tie m p o d e e je c u c ió n q u e sa tisfa c e c u c ió n d e q u ic k s o rt c o n e s ta s e le c c ió n del p iv o te s e rá s ie m p re c u a d rá tic o . y a q u e
sie m p re se re a liz a u n a d iv is ió n p o b re d e los e le m e n to s . IX -bem os s e r m u y c u id a
T XN) = T \ N - \ ) + N . (8.1» d o s o s e n c ó m o a sig n a m o s la e tiq u e ta « e n e l c a s o m e d io » . S ie n d o m á s p re c iso s,
p o d e m o s a rg u m e n ta r q u e e l c o n ju n to d e e le m e n to s p e q u e ñ o s ten d rá c o n ig u al p ro
E n o tra s p a lab ras, la E c u a c ió n 8.1 a firm a q u e e n e s te c a s o e l tie m p o q u e n ecesita b a b ilid a d 0 . I . 2 o V - I e le m e n to s , lo q u e ta m b ié n e s c ie r to p a ra e l s u b c o n
q u ic k so rl p ara o rd e n a r iV e le m e n to s e s igual a l tie m p o d e o rd e n a r re c u rsiv a m en te los ju n to d e e le m e n to s m a y o re s. P a rtie n d o d e e s ta h ip ó te sis, s í p o d e m o s p ro b a r q u e el
N - I e le m e n to s del su b c o n ju n to d e e le m e n to s m a y o re s m á s la s N u n id ad es del tie m p o d e e je c u c ió n d e q u ic k s o n e n e l c a s o m e d io s e r ía O LV log;V ).
c o ste d e r e a li/a r la p a rtició n . E s to a s u m ie n d o q u e e n to d o s los p a so s d e la recu rsió n P u e s to q u e e l c o s te d e q u ic k s o rt p a ra N e le m e n to s e s ig u a l a N u n id a d e s c o
so m o s tre m e n d a m e n te d e sa fo rtu n a d o s y to m a m o s c o m o p iv o te e l m e n o r elem e n to . rre sp o n d ie n te s a la p a rtic ió n , m á s e l c o s te d e d o s lla m a d a s re c u rs iv a s , n e c e sita m o s
P ara sim p lific a r e l an álisis, no rm al i/a m o s e lim in a n d o los fa c to re s c o n sta n te s Pode d e te rm in a r e l c o s te m e d io d e c a d a lla m a d a re c u rsiv a . S i 7LV) re p re s e n ta e l c o s te
m os re s o lv e r la re c u rre n c ia d e sp le g a n d o re p e tid a m e n te la E c u a c ió n 8 . 1: m e d io d e q u ic k s o rt p a ra /V e le m e n to s , e l c o s te m e d io d e c a d a llam ad a re c u rs iv a es
ig u a l a la m e d ia , s o b re to d o s lo s p o sib le s ta m a ñ o s d e lo s s u b p r o b lc n m . d e l co ste
T N ) = T[N - I) + N m e d io d e u n a lla m a d a re c u rs iv a c o n u n su b p ro b lem a:
T I N - I ) = TXN — 2) + (V - I)
710) + 7 1 1 ) + 712) + — + 7 N - I)
UN - 2) = 71jV - 3) + (/V - 2) (8.2) 71/» = 7 1 /» = --------------------------- - --------------------------- (8.4)
, l 1 1 1 \ 5
3 C • 2 ’ 3 ............... , V - l ) :
Partición con la m ediana de tres
= D llo g A 'i
E le g ir e l e le m e n to c e n tra l c o m o p iv o te e v ita lo s c a s o s d e g e n e ra d o s q u e re p re s e n
ta n e n tra d a s n o a le a to ria s. S in e m b a rg o , é s ta e s u n a e le c c ió n p a siv a . E s d e c ir, no
L a ú ltim a lín e a d e la E c u a c ió n 8 .1 0 s e d e d u c e del T e o re m a 5.5 . C u a n d o m u ltip li
in te n ta m o s e le g ir u n b u e n p iv o te; e n v e z d e e so . e v ita m o s ú n ic a m e n te e le g ir uno
c a m o s a m b o s la d o s p o r A '+ I. o b te n e m o s e l re s u lta d o final
m alo . L a p a r tic ió n c a n la m e d ia n a d e tr e s e s un in te n to d e se le c c io n a r un p iv o te
m e jo r q u e e l c e n tra l.
7(A’) = íX V Io g V ) . ( 8 .1 1)
L a m e d ia n a d e un g r u p o d e A’ e le m e n to s e s e l f.-V 2 1 -ésim o m e n o r e le m e n to .
L a m e jo r e le c c ió n d e l p iv o te s e r ía c la ra m e n te la m e d ia n a , p u e s g a ra n tiz a ría u n a
d iv is ió n u n ifo rm e d e lo s e le m e n to s . D e s g ra c ia d a m e n te , c a lc u la r la m e d ia n a n o es
8.6.3 Seleccionan do el pivote fácil y ra le n tiz a ría c o n s id e ra b le m e n te a q u ic k s o rt. L o q u e q u e re m o s e s o b te n e r
u n a b u e n a e s tim a c ió n d e la m e d ia n a s in g a sta r d e m a s ia d o tie m p o . D ic h a e s tim a
A h o ra q u e h e m o s e s ta b le c id o q u e e l tie m p o d e e je c u c ió n e n p ro m e d io tic q u ic k - c ió n p u e d e h a c e rs e p o r m a e s tre o : e s d e c ir, lo m a m o s u n su b c o n ju n to d e lo s e le
so rt e s ( ) { N lo g A1), n u e stro o b je tiv o c e n tr a l s e r á a se g u ra rn o s q u e e l p e o r c a s o n o se m e n to s a o rd c n a i y b u s c a m o s su m e d ia n a . E ste e s e l m é to d o c la s ic o u tiliz a d o en
p re s e n ta n u n ca. R e a liz a n d o u n a n á lis is c o m p le jo , p o d e m o s c a lc u la r la d e sv ia c ió n lo s so n d e o s d e o p in ió n . C u a n to m a y o r sea la m u e s tra , m á s a c e rta d a será la e s tim a
típ ic a del tie m p o d e e je c u c ió n d e q u ic k s o rt. L l re s u lta d o e s q u e si p a rtim o s d e una c ió n . S in e m b a rg o , c u a n to m a y o r s e a la m u e s tra m á s ta rd a re m o s e n h a c e r los c á l
p e rm u ta c ió n a le a to ria , e s c a s i s e g u ro q u e e l tie m p o d e e je c u c ió n p ara o rd e n a rla c u lo s . S e h a p ro b a d o q u e u n a m u e s tra d e ta m a ñ o ta ’s p ro p o rc io n a u n a p e q u e ñ a
e s ta rá p ró x im o al c a s o m e d io . P e ro d e b e m o s te n e r c u id a d o d e q u e las e n tra d a s d e m e jo ra e n e l c a s o p ro m e d io d e q u ic k s o rt. y ta m b ié n s im p lific a el c ó d ig o d e partí-
c ió n re s u lta n te . e lim in a n d o a lg u n o s c a s o s e sp e c ia le s . S e h a p ro b a d o ta m b ié n que
m u e s tra s d e g ra n ta m a ñ o n o m e jo ra n e l re n d im ie n to d e fo rm a sig n ific a tiv a , p o r lo
q u e n o m e re c e n la pena.
L os tre s e le m e n to s q u e u tiliz a re m o s e n n u e stra m u e s tra s o n e l p rim e ro , e l c e n Figura 8.11 Algontm o d e partición: los elem entos m al c o lo c a d o s 8 y 2 son inter
tral y e l ú ltim o . P o r e je m p lo , te n ie n d o c o m o e n tra d a (8 . I. 4 . 9 . 6 . 3 . 5 . 2 . 7 . 0 ) , el cam b iad o s
e le m e n to m á s a la iz q u ie rd a e s 8 . e l d e m á s a la d e re c h a e s 0 y e l d e l c e n tr o e s 6;
p o r ta n to , e l p iv o te e s c o g id o s e r ía 6 (c u a n d o hay d o s e le m e n to s e n e l c e n tro , se A l c o n tin u a r la e je c u c ió n d e l a lg o ritm o , i se p a ra e n e l e le m e n to m a y o r q u e el
e lig e e l d e m á s a la iz q u ie rd a ). O b s e rv e q u e p a ra v e c to re s y a o rd e n a d o s , m a n te n e p iv o te . 9 . y j s e p a ra e n e l e le m e n to m e n o r. 5. U n a v ez m á s . lo s e le m e n to s q u e se
m o s e l e le m e n to c e n tr a l c o m o p iv o te , lo q u e v u e lv e a re p re s e n ta r e l m e jo r caso . sa lta n i y j d u ra n te e l p ro c e s o e s tá n b ien c o lo c a d o s . L a F ig u ra 8 .1 2 m u e s tra el
re su lta d o : lo s e le m e n to s d e lo s e x tre m o s (s in in c lu ir e l p iv o te ) e s tá n c o lo c a d o s c o
rre c tam e n te .
8.6.4 Estrategia d e partición Ix> sig u ie n te q u e hay q u e h a c e r e s in te rc a m b ia r lo s e le m e n to s in d e x a d o s p o r i
y j . c o m o m u e s tra la F ig u ra 8 .1 3 . E l re c o rrid o c o n tin ú a , c o n i p a rá n d o s e e n el
E x is te n v a ría s e stra te g ia s d e p a rtic ió n u tiliz a d a s c o n a sid u id a d . S e s a b e q u e la d e s
e le m e n to m a y o r q u e e l p iv o te . 9 . y j p a rá n d o s e e n e l e le m e n to m e n o r. 3. S in e m
c rita e n e s ta s e c c ió n d a b u e n o s re su lta d o s. A c o n tin u a c ió n se d is c u te la e stra te g ia
b a rg o . e n e s te m o m e n to lo s ín d ic e s i y j s e h a n c ru z a d o , p o r lo q u e u n in te rc a m
d e p a rtic ió n m á s sim p le . F u n c io n a e n tre s p a s o s . L a S e c c ió n 8 .6 .6 m u e s tra las m e
b io n o te n d r ía se n tid o . E s to s e m u e s tra e n la F ig u ra 8 .1 4 , e n la c u a l v e m o s q u e el
jo r a s o b te n id a s c u a n d o s e u tiliz a la m e d ia n a d e tres.
e le m e n to in d ex ad o p o r j e s tá c o lo c a d o c o rre c ta m e n te , p o r lo q u e no d e b e m o v erse.
El p rim e r p a s o e n e l a lg o ritm o d e p a rtic ió n e s q u ita r e l p iv o te d e e n m e d io
E n la F ig u ra 8 .1 4 s e m u e s tra q u e to d o s lo s e le m e n to s sa lv o e l p iv o te e s tá n c o - t
in te rc a m b iá n d o lo c o n e l ú ltim o e le m e n to . El re s u lta d o so b re n u e s tro e je m p lo de
rre c ta m e n te c o lo c a d o s . ¿ N o s e r ía b o n ito q u e c o n u n in te rc a m b io p u d ié ra m o s u b i- <
e n tra d a s e m u e s tra e n la F ig u ra 8 .9 . E l p iv o te s e m u e s tra c o n e l s o m b re a d o m ás
c a rio c o rre c ta m e n te , p a ra a s í te r m in a r? P u e s s í. p o d e m o s . T o d o lo q u e te n e m o s 1
o sc u ro , a l final d e l vector.
q u e h a c e r e s in te rc a m b ia r e l p iv o te c o n e l e le m e n to d e la p o s ic ió n i . E l re s u lta d o
P o r ah o ra , a su m ire m o s q u e to d o s lo s e le m e n to s so n d is tin to s y d e ja re m o s p ara
s e m u e s tra e n la F ig u ra 8 .1 5 . E l e le m e n to a p u n ta d o p o r i e ra m a y o r q u e el p iv o te
d e sp u é s q u é h a c e r e n p re s e n c ia d e d u p lic a d o s . C o m o c a s o lím ite , n u e stro a lg o rit
p o r lo q u e p a sa rlo a la ú ltim a p o s ic ió n e s ac e rta d o .
m o d e b e ría fu n c io n a r c o rre c ta m e n te c u a n d o h u io s lo s e le m e n to s s o n ig u a le s.
O b s e rv e q u e e l a lg o ritm o d e p a rtic ió n n o n e c e s ita m e m o ria a u x ilia r y q u e c ad a
E n e l s e g u n d o p a so , u tiliz a m o s n u e s tra e s tra te g ia d e p a rtic ió n p a ra m o v e r t o
e le m e n to e s c o m p a r a d o c o n e l p iv o te e x a c ta m e n te u n a vez. C u a n d o se e s c r ib e el
d o s lo s e le m e n to s m e n o re s a la p a n e d e la iz q u ie rd a , y to d o s lo s e le m e n to s m a y o
c ó d ig o , e s to se tra d u c e a un b u c le in te rn o m u y a ju s ta d o .
re s a la p a n e d e la d ere c h a . E n las F ig u ra s d e la 8 .1 0 a la 8 .1 5 . la s c e ld a s b lan c a s
so n c e ld a s q u e sa b e m o s q u e e s tá n b ie n c o lo c a d a s . N o s e s a b e to d a v ía s i la s q u e
e s tá n e n p e n u m b ra e s tá n b ie n c o lo c a d a s.
B u sc a m o s d e iz q u ie rd a a d e re c h a un e le m e n to m a y o r. P a ra h a c e r e s to u tiliz a
m os un c o n ta d o r i . in ic ia liz a d o a i n i . P o r su p a n e , b u sc a m o s d e d e re c h a a iz Figura 8.12 Algontm o d e partición: i se p a ra en e l elem en to m ayor q u e e l p ivo te 9.
q u ie rd a u n e le m e n to m e n o r. L o h a c e m o s u tiliz a n d o u n c o n ta d o r j , in ic ia liz a d o a j se p a ra en e l elem ento m enor. 5.
f i n - 1 . L a F ig u ra 8 .1 0 m u e s tra q u e la b ú sq u e d a d e l e le m e n to m a y o r p a ra e n e l 8 y
la b ú sq u e d a d e l m e n o r p a ra e n e l 2 . E s ta s c e ld a s h a n s id o s o m b re a d a s lig e ra m e n te .
O b s e rv e c o m o h e m o s s a lta d o e l 7 . p o rq u e sa b e m o s q u e e l 7 n o e s m e n o r q u e el
p iv o te p o r lo q u e e s tá b ie n c o lo c a d o . E n c o n s e c u e n c ia q u e d a c o lo re a d o d e b lan co .
A h o ra te n e m o s e n e l la d o iz q u ie rd o d e l v e c to r, u n e le m e n to m a y o r q u e e l p iv o te , Figura 8.13 Algoritm o d e partición los elem entos m al co lo ca d o s 9 y 5 son Inter
el 8 . y u n o m e n o r, e l 2. e n la p a rte d e re c h a . D e b e m o s in te rc a m b ia rlo s p a ra c o lo cam b iad o s
c a rlo s c o rre c ta m e n te , c o m o m u e s tra la F ig u ra 8 . 11.
2 4 5 0 3 8 7
b ~\
8 | 1 | 4 | 9 | 0 | 3 5 | 2 | 7
1 / Método d e s e l e c c i ó n i n t e r n o qu é h a c e l a s lla m a d a s r e c u i s i v a s .
U n p ro b le m a m u y r e la c io n a d o c o n la o rd e n a c ió n e s e l p ro b le m a d e s e le c c ió n . E n
2 // C o l o c a e l k - é a i m o m e n o r e l e m e n t o <*n a [ k - U .
e l m is m o , d a d o u n v e c to r d e N e le m e n to s , s e d e b e e n c o n tr a r e l k - é s im o m e n o r 3 // La l l a m a d a i n i c i a l e s s e l e c c i o n R a p i d a i a . 0 . a . l e n g t h , . . . k .>
e le m e n to , l 'n c a s o e s p e c ia l im p o rta n te e s e l d e e n c o n tr a r la m e d ia n a , o s e a e l 4
.V 2 -«Sim o e le m e n to . O b v ia m e n te , p o d e m o s h a c e rlo o rd e n a n d o e l v e c to r, p e ro es 5 p r i v a t e s t a t i c void
d e e s p e ra r q u e s e le c c ió n s e a u n p ro c e s o m á s rá p id o , al so lic ita rs e u n a m e n o r in f o r 6 s e i e c c i o n F a p i d a ( Comparable [ 1 a. int ini, int fin, int k ) ,
m a c ió n . lis to e s a sí. e n e le c to . H a c ie n d o u n p e q u e ñ o c a m b io e n q u ic k s o rt. p o d e 7 1 . " AAA . A , .
m o s re s o lv e r e l p ro b le m a d e s e le c c ió n e n tie m p o lin e a l, e n p ro m e d io . L la m a m o s a 8 ift i n i * LI MI TE > f i n I
este a lg o ritm o s e le c c ió n n íp id ti. L o s p a s o s q u e r e u li/a s c lc c c io n R ó p iJ n (S . k ) son 9 ordenacionPor In se rció n ( a. ini, tín >; *:- *•
los sig u ien tes: 10 else
11
12 // ordenar ini. medio, fin
1. S i el n ú m e ro d e e le m e n to s e n S es I . e n to n c e s p re s u m ib le m e n te k ta m b ié n
13 i n t m e d i o » < i n i • í i n > / 2;
e s I. p o r lo q u e se p u e d e d e v o lv e r e l ú n ic o e le m e n to e n S.
14 i f t a l medio I .menorQue( a i i n i l . l Li . L u / j ; <,u,>
2. E le g ir u n e le m e n to v d e S c o m o e l p iv o te. 15 i nt ercarr.bi a r P e f e r e n c i a s 1 a . L n g .
3. H a c e r u n a p a rtic ió n d e S {v ) e n / y I ) . e x a c ta m e n te ig u a l a c o m o s e h a 16 ift a l f i n ] .m enorQuet a [ i n i ] ) > ,
\t 11* •j z litmlL fiw J J» *
c ía e n q u ick so rt. 17 in terran ^i.irH ^fo ren cias ( a, ani. f i n ) :
4. S i k e s m e n o r o ig u a l q u e e l n ú m e ro d e e le m e n to s e n /. e n to n c e s e l e le 18 i f t a l f i n ] .monorOuel a | n e d i o ' T V » ’
m en to q u e e s ta m o s b u sc a n d o d e b e e s ta r e n /. p o r lo q u e s e lla n ta re c u rsi 19 i n t e r c a m b i a r R e f e r e n c i a s ‘t ' a, m b d i o ; •fí f í ' Vf e ,<l
v a m e n te a s e le c c ia n R á p itia tI. k ). S i k e s e x a c ta m e n te ig u a l a u n o m á s q u e 20
e l n ú m e ro d e e le m e n to s d e /. e n to n c e s e l p iv o te e s e l A -ésim o m e n o r e le 21 / / Colocar e l p iv o te en la p o sic ió n fin - i
22 i n t e r c a m b i a r R e f e r e n c i a s (- a , m e d i o . U n - H t —
m en to y s e p u e d e d e v o lv e r c o m o re s p u e sta . E n «uro c a s o , e l A -ésim o m e
23 Comparablep i v o te = ai fin ->'.!•» J »<•». '«
n o r e le m e n to e s ta rá e n / ) IX* n u e v o p o d e m o s h a c e r u n a lla m a d a re c u rsiv a
24
y dev o lv e r e l re s u lta d o o b te n id o .
25 // Empezar l a p a r t i c i ó n ; ' v.T.i' » -.Vi . >'
26
L a s e le c c ió n rá p id a p re c is a u n a ú n ic a lla m a d a re c u rsiv a , e n c o m p a r a c ió n c o n
27 forí i = ini. j = fir. - 1;. ; )
la s d o s q u e h a c e q u ic k s o rt. P e se a e llo , e l p e o r c a s o e s id é n tic o a l d e q u ic k s o rt. 28
sie n d o , p o r ta n to , c u a d rá tic o . S e p re s e n ta c u a n d o la lla m a d a re c u rs iv a s e re a liz a 29 w hile(a [ >*i J .'menorfríe f p l v b t e y )
c o n só lo u n e le m e n to m e n o s . E n ta l c a so , la se le c c ió n rá p id a n o a h o rra g ra n co sa. 30
S in e m b a rg o , p o d e m o s m o s tra r q u e e l tie m p o e s lin eal e n p ro m e d io , u tiliz a n d o un 31 w hilet pivote.m enorQ uet a| --j ,| . .mutv
a n á lisis sim ila r a l d e q u ic k s o rt {v é a se e l E je rc ic io 8.*)). 32
L a im p le m e n ta c ió n d e la s e le c c ió n rá p id a e s a ú n m á s s im p le d e lo q u e n u estra 33 if< i < j h,.
34 intercambaarReferonqias t a, i,
d e s c rip c ió n a b stra c ta p u e d e h a c e r p e n s a r U n a im p le m e n ta c ió n c o m p le ta se m u e s
tra e n la F ig u ra 8 .2 0 . E x c e p to p o r e l p a rá m e tro a d ic io n a l A y la re a liz a c ió n d e una 35 else
36 break: ,
so la lla m a d a re c u rsiv a , e l a lg o ritm o e s id é n tic o a l d e q u ic k s o rt. O b s é rv e s e q u e
c u a n d o te rm in a la e je c u c ió n del a lg o ritm o , e l A -ésin to m e n o r e le m e n to e s tá e n su 37 ' A 'A A ’ A ,A . • . ’¡ A " •« A i A,
38
p o sic ió n c o rre c ta e n e l v e c to r o rd e n a d o . A d e m á s, e n la s p o sic io n e s a n te rio re s te n
39 / / Colocar el pivote
d re m o s lo s A - I m e n o re s e le m e n to s d e l v e c to r, a u n q u e n«> o rd e n a d o s , y e n las 40 i n t e r c a m b i a r l e f e r e n c i a á ' f ó , ' i ; :‘ f i n '1
n - k ú ltim a s U>s m á s g ra tu le s. U n ic a m e n te h a y q u e te n e r c u id a d o c o n e l h e c h o d e 41
q u e a l e m p e z a r a c o n ta r lo s ín d ic e s e n 0 . e l c u a rto e le m e n to , p o r e je m p lo , e s ta rá 42 // R e c u r s i ó n r s ó l o c a m b i a e s t a p a r t e
e n la p o sic ió n tre s , y n o e n la c u a tro . P o r o tr a p a rte , c o m o e l p ro c e s o se h a c e in 43 i f t k - i . e - ú i . ’í • \.n»wv.
s im e l o rd e n o rig in a l d e l v e c to r d e s a p a re c e . S i n o se d e s e a e s te e f e c to la te ra l, d e - 44 seleccionRapidaí a,',¿na,.\'i -si, k Ai*'**.1 -v.s >
hcm«>s h a c e r q u e la ru tin a e n v o lto rio p a s e u n a c o p ia d e l v e cto r 45 else.sif-(,k - 1,'j* i - . . t
U tiliz a n d o la p a rtic ió n c o n la m e d ia n a d e tr e s s e c o n s ig u e q u e la p ro b a b ili 46 . seleccionRapidat a,% i \ .l. íla. k ).:
47 :
d a d d e l c a s o p e o r s e a c a s i d e s p re c ia b le . E lig ie n d o c u id a d o s a m e n te e l p iv o te ,
48 )
p u e d e d e m o s tra r s e q u e e l c a s o p e o r n u n c a p u e d e o c u rr ir, c o n l o q u e e l tie m p o d e
e je c u c ió n s e ría lin e a l a u n e n e l p e o r d e lo s c a s o s . S in e m b a r g o , e l a lg o r itm o re Figuro 8 . 2 0 So le cció n réjpido c o n porlrcióo c o n la m e d ia n a d e tres y un limite p ara
s u lta n te s o la m e n te tie n e u n in te ré s te ó r ic o , o u e s la c o n s ta n te u u e o c u lta la lu n a d e te c ta r vecto res pequeños. .... ....
8.8 Una c o ta inferior p ara la ordenación la s p e r m u ta c io n e s . P o r e l p r in c ip io d e s u c e s iv a s d iv is io n e s [to r la m ita d . L
s a b e m o s q u e a l m e n o s s e n e c e sita n [ log ( A " ) l c o m p a r a c io n e s p a r a e s a e n
trada.
A u n q u e le ñ e m o s a lg o ritm o s d e o rd e n a c ió n O (.V Iog.V ). n o e s tá c la r o q u e e s to sea
lo m e jo r q u e p o d e m o s c o n se g u ir. E n e s ta s e c c ió n p ro b a m o s q u e c u a lq u ie r a lg o rit
¿ C ó m o d e g ra n d e e s f lo g (A !)T ? E s a p ro x im a d a m e n te A M ogV - 1.44M
m o d e o rd e n a c ió n q u e só lo u tilic e c o m p a ra c io n e s n e c e s ita Q tV I o g V ) c o m p a ra c io
n e s (y p o r ta n to a l m e n o s e l m is m o tie m p o ) e n e l c a s o p e o r. E s to s ig n ific a q u e
c u a lq u ie r a lg o r itm o q u e o r d e n e u tiliz a n d o c o m p a r a c io n e s e n tr e e le m e n to s d e b e
u tiliz a r n o m e n o s d e u n a s A’lo g N c o m p a ra c io n e s p a r a a lg u n a e n tr a d a . S e p u ed e Resumen
u tiliz a r u n a té c n ic a s im ila r p a ra p ro b a r q u e e s to ta m b ié n e s c ie r to e n p ro m ed io .
¿ T o d o m é to d o d e o rd e n a c ió n d e b e b a sa rse e n c o m p a ra c io n e s ? L a re s p u e sta es E n la m a y o ría d e las a p lic a c io n e s g e n e ra le s d e o rd e n a c ió n in te rn a , e l m é to d o e l e
n o . S in e m b a rg o , lo s a lg o ritm o s q u e n o u tiliz a n c o m p a ra c io n e s só lo fu n c io n a n , en g id o e s la o rd e n a c ió n p o r in se rc ió n . S h e lls o rt o q u ic k s o rt. L a d e c is ió n d e c u á l u sa r
p rin c ip io , c o n tip o s re s trin g id o s, c o m o lo s e n te ro s. A u n q u e p u e d e q u e a m e n u d o d e p e n d e d e l ta m a ñ o d e la e n tra d a .
só lo n e c e s ite m o s o rd e n a r e n te ro s ( v é a se e l E je rc ic io 8 .1 3 ). un a lg o ritm o d e o rd e L a o rd e n a c ió n p o r in s e rc ió n e s a p ro p ia d a p a ra p e q u e ñ a s c a n tid a d e s d e d ato s.
n a c ió n d e p ro p ó s ito g e n e ra l n o p u e d e h a c e r a s u n c io n e s ta n re s tric tiv a s so b re la e n S h e llso rt e s u n a b u e n a e le c c ió n p a ra o rd e n a r c a n tid a d e s m o d e ra d a s d e d a to s . C o n
tra d a . S ó lo p u e d e a su m ir la o b v ia d e q u e si lo s e le m e n to s h a n d e s e r o rd e n a d o s, u n a se c u e n c ia d e in c re m e n to s ap ro p ia d a , tie n e u n e x c e le n te re n d im ie n to , n e c e si
c u a le s q u ie ra d o s e le m e n to s p u e d e n s e r c o m p a ra d o s. ta n d o s ó lo u n a s p o c a s lín e a s d e c ó d ig o . Q u ic k so rt tie n e e l m e jo r re n d im ie n to , p ero
P ro b a m o s a c o n tin u a c ió n u n o d e lo s te o re m a s fu n d a m e n ta le s d e la c o m p u ta e s c o m p lic a d o d e im p le m e n ta r. A sin tó tic a m e n te . tie n e u n re n d im ie n to c e rc a n o a
c ió n (T e o re m a 8 .3 ). A n te s d e c o m e n z a r re c u e rd e q u e e l p ro d u c to d e lo s N p rim e 0 ( N \ o g N ) c u a n d o se u s a u n a im p le m e n ta c ió n c u id a d o s a . H e m o s v is to q u e d ic h o
ro s e n te r o s p o s itiv o s e s N \. L a d e m o s tra c ió n e s u n a d e m o s tra c ió n e x is te n c ia l. un re n d im ie n to e s e s e n c ia lm e n te ta n b u e n o c o m o c a b e e sp e ra r. L a S e c c ió n 2 0 .5 e s tu
ta n to a b stra c ta . D e m u e s tra q u e s ie m p re d e b e e x is tir a lg u n a e n tr a d a m ala. d ia o tro m é to d o in te rn o m u y c o m ú n , h e a p s o r t (m é to d o d e l m o n tíc u lo ).
C u a n d o q u e re m o s o rd e n a r d a to s q u e n o c a b e n ju n to s e n m e m o ria p rin c ip a l, se
n e c e sita n té c n ic a s d ife re n te s. L a té c n ic a g e n e ra l s e d is c u te e n la S e c c ió n 2 0 .6 . U ti
C u a lq u ie r a lg o r itm o q u e o r d e n e u tiliz a n d o ú n ic a m e n te c o m p a r a c io n e s e n liz a e l a lg o ritm o m e z c l a r d e s c rito e n la S e c c ió n 8.5.
tre e le m e n to s d e b e u s a r a l m e n o s \ lo g ( A '! ) l c o m p a r a c io n e s , c o n a lg u n a P a ra p ro b a r y c o m p a r a r lo s m é r ito s d e lo s d ife re n te s a lg o ritm o s d e o rd e n a c ió n ,
s e c u e n c ia d e en tra d a . n e c e s ita m o s s e r c a p a c e s d e g e n e ra r e n tra d a s a le a to ria s. L a a le a to rie d a d e s u n tem a
im p o rta n te e n g e n e ra l q u e se e s tu d ia e n e l c a p ítu lo sig u ie n te .
P iu le m o s c o n s id e r a r c o m o p o s ib le s e n tr a d a s la s p e r m u ta c io n e s d e /. 2 ......
N . E s to e s a s í p u e s s ó lo im p o r ta e l o r d e n r e la tiv o d e lo s e le m e n to s, n o su
v a lo r c o n c re to . P o r ta n to , e l n ú m e ro d e p o s ib le s e n tr a d a s e s e l n ú m e ro d e Elementos del juego
p e r m u ta c io n e s d ife r e n te s d e Af e le m e n to s, q u e e s e x a c ta m e n te A'!. D e n o te
m o s p o r P, e l m á x im o n ú m e r o d e p e r m u ta c io n e s q u e p u e d e n s e r c o n s is te n
a lg o r itm o d e o r d e n a c ió n b a s a d o e n c o m p a r a c io n e s U n a lg o ritm o q u e to m a
te s c o n la in fo r m a c ió n o b te n id a d e s p u é s d e q u e e l a lg o r itm o h a p r o c e s a d o
d e c is io n e s so b re e l o rd e n u tiliz a n d o s ó lo c o m p a ra c io n e s ,
i co m p a ra c io n e s. S e a E e l n ú m e ro d e c o m p a r a c io n e s r e a liza d a s c u a n d o
d e m o s tr a c ió n d e l a c o ta in f e r i o r d e la o r d e n a c i ó n C o n firm a q u e c u a lq u ie r a lg o
te r m in a la a p lic a c ió n d e l a lg o ritm o . S e tie n e lo s ig u ie n te : ( a l P0 = .V! y a
ritm o d e o rd e n a c ió n b a sa d o e n c o m p a ra c io n e s d e b e u sa r a l m e n o s unas
q u e to d a s la s p e r m u ta c io n e s s o n p o s ib le s a n te s d e la p r im e r a c o m p a ra
A 'lo g A’ c o m p a ra c io n e s , ta n to e n p ro m e d io c o m o e n e l c a s o peor,
cióni; {b) Pf. = I, y a q u e s i fu e r a n p o s ib le s m á s d e u n a p e r m u ta c ió n , e l a l
in v e r s ió n l*n p a r n o o rd e n a d o d e e le m e n to s d e u n v e c to r. U tiliz a d a s p a ra m e d ir el
g o ritm o n o in id ria te r m in a r to d a v ía , a l n o p o d e r e s ta r s e g u r o s d e q u e
grado de desorden
h a y a p r o d u c id o e l re s u lta d o c o r r e c to ; (c ) P , ^ P ¿_ , / 2 . p o r q u e d e s p u é s d e
m e r g e s o r t M é to d o d e o rd e n a c ió n q u e u tiliz a d iv id e y v e n c e rá s p a ra o b te n e r u n a
u n a c o m p a r a c ió n , c a d a p e r m u ta c ió n v a a u n o d e e sto s d o s g ru p o s: e l g r u
p o d e la s a ú n p o s ib le s y e l g r u p o d e la s q u e y a n o s o n p o s ib le s . E l m a y o r o rd e n a c ió n íX A lo g A ').
o r d e n a c ió n p o r d is m in u c ió n d e in t e r v a l o s O tr o n o m b re p a ra S hellsort.
d e e s to s d o s g r u p o s d e b e c o n te n e r a l m e n o s la m ita d d e la s p e r m u ta c io
p a r tic ió n c o n la m e d ia n a d e t r e s Se u tiliza c o m o p iv o te la m e d ia n a d e l p rim e r e le
n e s. d e m o d o q u e s i e l re s u lta d o d e la ú ltim a c o m p a r a c ió n re a liza d a co -
m en to . e l cen tral y e l últim o. E s to sim p lific a la fase d e p a rtic ió n d e q u ick so rt.
rr e sp o n d e a d ic h o g r u p o m a y o r, e l ta m a ñ o d e l c o n ju n to d e p e rm u ta c io n e s
p a r tic ió n P a so d e q u ic k s o rt q u e c o lo c a c a d a e le m e n to d e l v e c to r, e x c e p to e l p iv o
c o n s is te n te s s ó lo p o d r ía d iv id ir se p o r la m ita d tra s c a d a c o m p a r a c ió n . E l
te. e n u n o d e d o s p o sib le s g ru p o s, u n o fo rm a d o p o r lo s e le m e n to s m e n o re s q u e
e fe c to d e l a lg o r itm o d e o rd e n a c ió n e s . p o r ta n to , ir d e s d e e l e s ta d o P 0, en
e l p iv o te y o tro fo rm a d o p o r lo s m a y o re s q u e él.
e l c u a l so n p o s ib le s to d a s la s N \ p e r m u ta c io n e s , a l e s ta d o fin a I I f . e n el
p iv o te E n q u ic k s o rt. e l e le m e n to q u e sirv e p a ra d iv id ir e l v e c to r e n d o s g ru p o s:
c u a l s ó lo e s p o s ib le u n a p e r m u ta c ió n , c o n la re s tr ic c ió n d e q u e e x is te u n a
u n o c o n lo s e le m e n to s m e n o re s q u e é l y o tro c o n lo s e le m e n to s m ay o res.
e n tr a d a ta l q u e e n c a d a c o m p a r a c ió n , s ó l o s e p u e d e n e lim in a r la m ita d de
q i m k s o r t ll n a lg o ritm o d iv id e y v e n c e rá s rá p id o , c u a n d o se im p lc m c n ia a p ro p ia <) Mergesort
d a m e n te . E s . d e h e c h o , e l a lg o ritm o d e o rd e n a c ió n b a s a d o e n c o m p a ra c io n e s i/) Q u ic k s o rt. u tiliz a n d o e l e le m e n to c e n tr a l c o m o p iv o te y sin lím ite
m á s rá p id o e n la p ráctica, (m u e stre to d o s los pasos),
s e le c c ió n P ro c e s o p a ra b u s c a r e l A -ésim o m e n o r e le m e n to d e un vector, e) Q u ic k so rt. u tiliz a n d o la m e d ia n a d e tr e s c o m o p iv o te y un lím ite de
s e le c c ió n r á p i d a A lg o ritm o u tiliz a d o p a ra re a liz a r u n a s e le c c ió n , sim ila r a q u ic k tres.
sort. p e r o c o n u n a s o la lla m a d a re c u rsiv a . F l tie m p o d e e je c u c ió n e n p ro m e d io
8 .2 . U n a lg o ritm o d e o rd e n a c ió n e s e s ta b le si lo s e le m e n to s ig u a le s p e rm a n e
es lineal.
c e n e n su o rd e n o rig in a l. ¿ C u á le s d e los a lg o ritm o s d e o rd e n a c ió n v is to s en
S h e lls o r t A lg o ritm o s u b c u a d rá tic o q u e fu n c io n a b ie n e n la p rá c tic a y e s s im p le d e
e s te c a p ítu lo s o n e s ta b le s v c u á le s n o ? ¿ P o r q u é ?
im p le m e n la r. E l re n d im ie n to d e S h e lls o rt d e p e n d e e n g ra n m e d ia d e la se c u e n
8 .3 . E x p liq u e p o r q u é e l a lg o ritm o q u ic k s o rt d e l te x to e s típ ic a m e n te m e jo r que
c ia d e in c re m e n to s e n q u e s e b a se . C o n lle v a u n a n á lis is d e s a fia n te , to d a v ía ni*
p e rm u ta r a le a to ria m e n te la e n tra d a y e le g ir e l e le m e n to c e n tra l c o m o p iv o
c o m p le ta m e n te resu ello .
te.
Problemas prácticos se c u e n c ia s d e in c re m e n to s. E n u n te st p o r s e p a r a d o o b te n g a e l n ú m e ro m e
d io d e c o m p a ra c io n e s e n tre o b je to s C o m p a r a b l e , y e l n ú m e ro d e a s ig n a
H .I2 . U n e stu d ia n te m o d ific a la ru tin a d e la F ig u ra 8 .1 9 re a liz a n d o los sig u ie n te s c io n e s d e re fe re n c ia s a o b je to s C o m p a r a b l e . H a g a u n g ra n n ú m e ro J e
p ru e b a s , p e ro s in q u e s e a n e c e sa rio , p o n g a m o s , m á s d e u n a h o r a d e tie m p o
c a m b io s e n las lín e a s d e la 2 b a la 3 1.
d e C IH I. I-as se c u e n c ia s d e in c re m e n to s mmi las sig u ie n te s:
Bibliografía
L a re fe re n c ia c lá s ic a p a ra lo s a lg o ritm o s d e o rd e n a c ió n e s | 5 |. U n a re fe re n c ia m á s
re c ie n te , c o m p le ta d a c o n re s u lta d o s p u e sto s al d ía . e s ( 3 |. El a lg o ritm o d e S h ell-
so rt a p a re c ió p o r p rim e ra v ez e n |7 |. U n e s tu d io e m p íric o d e su tie m p o d e e je c u
c ió n f u e re a liz a d o e n |X |. Q u ic k s o rl fu e d e s c u b ie rto p o r H o a re (4 ], E l a rtíc u lo ta m
b ié n in c lu y e e l a lg o ritm o d e s e le c c ió n rá p id a , y d e ta lla m u c h a s d e las c u e s tio n e s
d e im p le m e n ta c ió n . U n m in u c io s o e s tu d io d e l a lg o ritm o d e q u ic k s o n . in c lu y e n d o
a n á lisis p a ra la v a ria n te c o n la m e d ia n a d e tre s, a p a re c e e n ( 6 |. U n a im p lc m cn ta-
ció n d e ta lla d a e n C q u e in c lu y e m e jo ra s a d ic io n a le s p u e d e e n c o n tra rs e e n 111. L a
c o ta in fe rio r ílb V Io g A ') p a ra los a lg o ritm o s d e o rd e n a c ió n b a s a d o s e n c o m p a ra
c io n e s se h a to m a d o d e (2]. L a p re s e n ta c ió n d e S h e lls o rt s e h a a d a p ta d o d e |9 |.
2. L . R F o rd y S . M . Jo h n s o n . «A T o u m a m e n t P ro b le m » . A m e r ic a n M a th e-
m a n e s M o n th ly 6 6 <1 9 5 9 ). 3 8 7 -3 8 9 .
3. G . H. G o n n e l y R B a e z a -Y a te s. H a n d b o o k o f A lg o rith n is a n d D a ta S iria
tu re s, 2.J e d .. A d d iso n -W e sle y . R e a d in g . M a s s. (1 9 9 1 ).
C A P I T U L O __________________________________________________________
9 Números aleatorios
E n m u c h a s o c a s io n e s e n la c o m p u ta c ió n s e re q u ie re e l u s o d e n ú m e ro s a le a
to rio s. P o r e je m p lo , la c rip to g ra fía m o d e rn a , lo s s is te m a s d e sim u la c ió n y.
so rp re n d e n te m e n te , in c lu s o a lg u n o s a lg o ritm o s d e b ú s q u e d a y o rd e n a c ió n ,
se b a sa n e n la g e n e ra c ió n d e n ú m e ro s a le a to rio s. S in e m b a rg o , n o e s ta n fá c il im -
p le m c n ta r b u e n o s g e n e ra d o re s d e n ú m e ro s a le a to rio s. P o r to d o e llo , e n e s te c a p ítu
lo e stu d ia re m o s la g e n e ra c ió n y e l u s o d e n ú m e ro s aleato rio s.
M á s c o n c re ta m e n te , e n e s te c a p ítu lo v erem o s:
• C ó m o s e g e n e ra n n ú m e ro s ale a to rio s.
• C ó m o s e g e n e ra n p e rm u ta c io n e s a le a to ria s.
• C ó m o lo s n ú m e ro s a le a to rio s n o s p e rm ite n d is e ñ a r a lg o ritm o s e fic ie n te s,
m e d ia n te e l u s o d e u n a té c n ic a c o n o c id a c o m o a lg o r itm o s a le a to rio s.
L o s n ú m e ro s a le a to rio s se e m p le a n e n n u m e ro sa s a p lic a c io n e s . E s ta s e c c ió n d is c u
te v arias d e las m á s c o m u n e s .
U n a im p o rta n te a p lic a c ió n d e los n ú m e ro s a le a to rio s e s la c o m p ro b a c ió n d e lc
p ro g ra m a s (testing). S u p o n g a m o s, p o r e je m p lo , q u e d e s e a m o s c o m p r o b a r si lo s a l- al
g o ritm o s d e b ú sq u e d a d is e ñ a d o s e n e l C a p ítu lo X so n c o rre c to s. E s fácil p ro b a rlo s ln<
to m a n d o e n tr a d a s c o n p o c o s d a to s , p e ro si d e s e a m o s c o m p r o b a r su c o rre c c ió n p a - pj
ra la s e n tra d a s d e g ra n ta m a ñ o p a ra las q u e h a n s id o d is e ñ a d o s , n e c e s ita m o s su m i- ¡d
n is tra r u n m o n tó n d e d ato s. G e n e ra r u n a e n tra d a d e d a to s o rd e n a d a , c o m o p o r en
e je m p lo la s e c u e n c ia 1. 2 . . . . . ;V, s e ría se n c illo , p e ro c o n e llo s ó lo c o m p ro b a ría m o s H
e l b u e n fu n c io n a m ie n to d e lo s a lg o ritm o s e n u n c a s o lím ite . E sto s a lg o ritm o s ne- H
c e sita n te s ts g e n e ra le s , p o r m e d io d e lo s c u a le s o b te n g a m o s c o m p ro b a c io n e s m á s P
c o n v in c e n te s . P o r e je m p lo , p o d ría m o s p r o b a r lo s p ro g ra m a s h a c ie n d o 5 .0 0 0 o rd e
n a c io n e s so b re e n tr a d a s d e ta m a ñ o 1.000. E s to re q u ie re la e s c r itu r a d e u n a ru tin a
p a ra g e n e ra r d a to s a rb itra rio s , p a ra lo c u a l s e n e c e sita a su v e z . la g e n e ra c ió n de
n ú m e ro s ale a to rio s.
C o n tin u a n d o c o n e l e je m p lo , u n a v e / q u e te n e m o s los d a to s g e n e ra d o s a le a to d o r. m u c h o tie m p o , d e m o d o q u e p ro b a b le m e n te e l relo j n o c a m b ia rá m ie n tra s la
ria m e n te . ¿ c ó m o p o d e m o s s a b e r si e l a lg o ritm o h a fu n c io n a d o c o rre c ta m e n te ? s e c u e n c ia e s tá g e n e rá n d o s e . In c lu so si e l tie m p o se m id e e n m ilise g u n d o s y e l p r o
U n a c o n d ic ió n n e c e sa ria e s q u e e l re s u lta d o d e la o rd e n a c ió n s e a u n v e c to r o r d e g ra m a e s ta h a c ie n d o m ás c o s a s e n tre las lla m a d a s al g e n e ra d o r, la s e c u e n c ia de
n a d o e n o rd en n o d e c re c ie n te , lo q u e p u e d e s e r c o m p ro b a d o e n tie m p o lin eal. Pero, n ú m e ro s g e n e ra d a n o s e ría a le a to ria , y a q u e e l tie m p o tra n s c u rrid o e n tre las lla m a
¿ c ó m o sa b e m o s q u e lo s e le m e n to s d e la s a lid a so n e x a c ta m e n te lo s e le m e n to s de d a s a l g e n e ra d o r s e r ía p rá c tic a m e n te id é n tic o e n c a d a in v o c a c ió n d e l p ro g ra m a ,
la e n tra d a ? U n a fo rm a d e c o m p ro b a rlo e s e x ig i r q u e la e n tra d a s e a u n a p e rm u ta c o n lo q u e lo s re s u lta d o s q u e s e p ro d u c iría n a l re a liz a r d is tin ta s e je c u c io n e s serían
c ió n d e lo s \ p rim e ro s e n te ro s. R e c u é rd e se d e l C a p itu lo S. q u e u n a p e rm u ta c ió n d e m a s ia d o p arecid as.
^ 1 .2 jV e s u n a s e c u e n c ia d e e n te ro s e n la q u e c a d a u n o d e e llo s ap arece L o q u e n e c e s ita m o s e s u n a se c u e n c ia d e n ú m e ro s p se u d o a le a to rio s. e s decir,
(e x a c ta m e n te ) u n a v e / . D e este m o d o , n o im p o rta c o n q u é p e rm u ta c ió n c o m e n c e u n a s e c u e n c ia c o n las m ism a s p ro p ie d a d e s q u e u n a s e c u e n c ia a le a to ria . S u p o n g a
m o s. e l re s u lta d o d e la o rd e n a c ió n d e b e s e r la s e c u e n c ia I. 2 N . lo q u e se c o m m o s q u e n e c e s ita m o s g e n e ra r n ú m e ro s a le a to rio s e n tre 0 y 9 9 9 . u n ifo rm e m e n te
p ru e b a fá cilm en te. d is trib u id o s . E n u n a d is tr ib u c ió n u n ifo r m e . to d o s lo s n ú m e ro s e n e l ra n g o e s p e c ifi
A d e m á s d e a y u d a m o s a g e n e ra r d a to s d e e n tra d a p a ra c o m p r o b a r la c o rre c c ió n c a d o tien en la m ism a p ro b a b ilid a d d e s e r e le g id o s . M u c h a s d is trib u c io n e s pueden
d e lo s p ro g ra m a s, lo s n ú m e ro s a le a to rio s n o s so n ú tile s p a ra c o m p a ra r la e fic ie n c ia d e riv a rse a p a rtir d e la d is trib u c ió n u n ifo rm e , p o r e s ta ra z ó n se c o n s id e ra e n p ri
d e d is tin to s a lg o ritm o s. E s to e s d e b id o , u n a v e / m á s . al h e c h o d e q u e p u e d e n e m m e r lu g ar. E n e l e s q u e m a d e c la s e m o s tra d o e n la F ig u ra 9 . 1 a p a re c e n m u c h a s d e
p le a rse p a ra g e n e ra r m u ltitu d d e e n tra d a s rep re se n ta tiv a s. e lla s. L a s sig u ie n te s p ro p ie d a d e s s o n v e rific a d a s p o r u n ía d is trib u c ió n u n ifo rm e d e
O tra u tilid a d d e lo s n ú m e ro s a le a to rio s s e e n c u e n tra e n la sim u la c ió n . S i d e v a lo re s d e l in te rv a lo 0 ... 999:
se a m o s c o n o c e r e l tie m p o m e d io q u e ta rd a u n s e rv id o r (c o m o e l s e rv ic io d e in f o r
m a ció n d e un b a n c o ) e n p ro c e s a r u n a s e c u e n c ia d e p e tic io n e s , p o d e m o s m o d e la r • E l p rim e r n ú m e ro p u e d e se r c u a lq u ie ra e n tre 0 y 9 9 9 . T o d o s e llo s so n e q u i-
e l s is te m a e m p le a n d o u n c o m p u ta d o r. E n e s ta s im u la c ió n p o r c o m p u ta d o r, la s e p ro b ab les.
c u e n c ia d e p e tic io n e s s e g e n e ra e m p le a n d o n ú m e ro s a le a to rio s. • E l n ú m e ro i-é sim o p u e d e s e r c u a lq u ie ra e n tr e 0 y 9 9 9 . D e n u e v o , lo d o s so n
A ún q u e d a o tro u s o im p o rta n te d e lo s n ú m e ro s a le a to rio s, q u e c o rre s p o n d e a la eq ui p ro b a b le s.
té c n ic a d e lo s a lg o r itm o s a le a to rio s. E n e llo s s e e m p le a u n n ú m e r o a le a to rio p ara • L a m e d ia d e to d o s lo s n ú m e ro s g e n e ra d o s e s 4 9 9 .5 .
d e te rm in a r (de fo rm a p ro b a b ilís(ic a ) e l sig u ie n te p a s o q u e se rá e je c u ta d o p o r e l a l
g o ritm o . L a c ia s e m á s c o m ú n d e e sto s a lg o ritm o s se b a s a e n la s e le c c ió n (a le a to E sta s p ro p ie d a d e s p > r s í m ism a s n o so n su fic ie n te m e n te re stric tiv a s. P o r e je m
ria ) d e u n a a lte rn a tiv a e n tre v a ria s. m a s o m e n o s in d istin g u ib le s. I’o r e je m p lo , e n p lo . p o d ría m o s g e n e ra r e l p rim e r n ú m e ro e x a m in a n d o e l relo j del s is te m a , c u y a
lo s p ro g ra m a s c o m e rc ia le s d e a je d re z , e l c o m p u ta d o r g e n e ra lm e n te e lig e su p ri p re c isió n e s d e un m ilise g u n d o . e m p le a n d o e l n ú m e ro d e m ilise g u n d o s. L o s s i
m er m o v im ie n to d e fo rm a a le a to ria , e n lu g a r d e ju g a r d e fo rm a d e te rm in is ta (e s g u ie n te s v a lo re s se iría n o b te n ie n d o a ñ a d ie n d o u n a u n id a d a l n u m e ro a n te rio r. E s
d e c ir, e n lu g a r d e re a liz a r s ie m p re e l m ism o m o v im ie n to ). E ste c a p ítu lo e x a m in a c la ro q u e tr a s g e n e ra r m il n ú m e ro s, se v e rific a n to d a s la s p ro p ie d a d e s an terio res.
m u c h o s d e lo s p ro b le m a s q u e p u e d e n re s o lv e rs e d e m o d o m á s e fic ie n te e m p le a n S in e m b a r g o , n o se c u m p le n o tr a s m á s fu e rte s. A lg u n a s d e e s ta s p ro p ie d a d e s q u e
d o a lg o ritm o s ale a to rio s. ta m b ié n d e b e n v e rific a r lo s n ú m e ro s a le a to rio s u n ifo rm e m e n te d is trib u id o s so n las
sig u ie n te s:
• L a s u m a d e d o s n ú m e ro s a le a to rio s g e n e ra d o s c o n s e c u tiv a m e n te d e b e se r
9.2 G en erad ores de números aleatorios
p a r o im p a r c o n la m ism a p ro b a b ilid a d .
• S i se g e n e ra n a le a to ria m e n te m il n ú m e ro s, a lg u n o s d e e llo s e s ta rá n d u p lic a
¿ C ó m o s e g e n e ra n n ú m e ro s a le a to rio s ? L a v e rd a d e ra a le a to rie d a d e s im p o sib le d e d o s (e n c o n c re to , a p ro x im a d a m e n te !óS d e e llo s n o a p a re c e rá n ).
a lc a n z a r e n u n c o m p u ta d o r, y a q u e lo s n ú m ero s o b te n id o s d e p e n d e n d e l a lg o ritm o
e m p le a d o e n su g e n e ra c ió n y e s to lo s c o n v ie rte e n n o a le a to rio s. A h o ra b ie n , g e n e N u e stro s v a lo re s n o s a tisfa c e n e s ta s p ro p ie d a d e s. L a su m a d e d o s n ú m ero s
ra lm en te. e s s u fic ie n te p ro d u c ir n ú m e ro s p s e u d o a le a to r io s . e s to e s . n ú m e ro s que c o n s e c u tiv o s s ie m p re e s im p a r, y n u e s tra s e c u e n c ia e s tá lib re d e d u p lic a c io n e s.
p a r e c e n a le a to rio s, e n e l s e n tid o d e q u e s a tisfa c e n m u c h a s d e la s p ro p ie d a d e s que C o m o c o n s e c u e n c ia , n u e stro g e n e ra d o r d e n ú m e ro s p se u d o a le a to rio s n o h a p asad o
c u m p le n lo s n ú m e ro s a le a to rio s. A u n q u e e s to e s m u c h o m á s fá c il d e d e c ir q u e de d o s p ru e b a s e s ta d ístic a s . E s b ie n c ie r to q u e to d o s lo s g e n e ra d o re s d e e s te tip o a c a
c o n se g u irlo . b a n p o r n o p a s a r a lg ú n te st e s ta d ís tic o , a u n q u e los m e jo re s s í q u e p asan lo s tests
S u p o n g a m o s q u e n e c e s ita m o s s im u la r e l la n z a m ie n to d e u n a m o n e d a . U n a fo r q u e fa lla n lo s m e n o s b u e n o s. El E je rc ic io 9 .1 4 d e s c rib e u n test e s ta d ís tic o muy
m a d e h a c e rlo e s e x a m in a r e l re lo j d e l siste m a . E ste re lo j in d ic a e l n ú m e ro d e s e u tiliz a d o e n la p rá c tic a .
g u n d o s d e la h o r a a c tu a l. S i e s ta c a n tid a d e s p a r p o d e m o s d e v o lv e r 0 (c a r a ), v si es E n e s ta se c c ió n e stu d ia re m o s e l g e n e ra d o r u n ifo rm e m á s s e n c illo q u e s a tis f ic e
im p a r p o d e m o s d e v o lv e r I (c ru z ). E l p ro b le m a e s q u e e s ta e s tra te g ia n o fu n c io n a un n ú m e ro ra z o n a b le d e te s ts e s ta d ístic o s . D e sd e lu e g o n o e s e l m e jo r g e n e ra d o r
c o rre c ta m e n te si n e c e sita m o s g e n e ra r u n a s e c u e n c ia d e n ú m e ro s a le a to rio s. E n tal p o sib le , p e ro re s u lta a p ro p ia d o p ;u a s e r e m p le a d o e n a p lic a c io n e s e n las q u e se
c a so , lo m á s p ro b a b le e s q u e se g e n e re u n a s e c u e n c ia d e to d o c e ro s o to d o u n o s y. a c e p ta n b u e n a s a p ro x im a c io n e s d e se c u e n c ia s a le a to ria s. E l m é to d o s e g u id o e s el
e v id e n te m e n te . e s to d is ta m u c h o d e s e r a le a to rio . U n se g u n d o e s . p a ra e l c o m p u ta g e n e r a d o r lin e a l d e c o n g r u e n c ia s . d e fin id o p o r p rim e ra v ez e n 1951. D ic h o g en e-
1 // C l a s e Random L o s v a lo re s a d e c u a d o s d e las c o n s ta n te s A y M se c o n c re ta rá n e n b re v e . N ó tese
2 // q u e to d o s lo s n ú m e ro s g e n e ra d o s se rá n m e n o re s q u e A l. P a ra in ic ia r la se c u e n c ia
3 / / CONSTRUCCIÓN: c o n ( a j n i n g u n a i n i c i a l i z a c i ó n o (b> u n e n t e r o n e c e s ita m o s un v a lo r X,¡. E ste v a lo r s e c o n o c e c o m o se m illa . S i Y(, = 0 la se c u e n
4 // que e s p e c if ic a e l e sta d o i n i c i a l d e l generador c ia n o s e r ía a le a to ria , y a q u e se g e n e ra ría n ú n ic a m e n te c e ro s . P e ro si y A l so n
5 //
c u id a d o s a m e n te e le g id o s , e n to n c e s c u a lq u ie r s e m illa q u e c u m p la I $ .Y() < A l es
6 // • • • • - • • • • • • • • • • • • • O P E R A C I O N E S PÚBLI CAS................................. .......................
7 // Devuelve u n número a l e a t o r i o s i g u i e n d o una c i e r t a v á lid a . E n la F ig u ra 9 .2 se c o n s tru y e u n o b je to R andom e n e l q u e se in ic ia liz a el
d istribución v a lo r d e la se m illa . S i A l e s p rim o e n to n c e s X, n o p u e d e se r 0. E n p a rtic u la r, si
8 // i n t randomlr.t ( > - -> uniform e, 1 a 2*3 1-1 M = W . A — l y la s e m illa X „ = 1. lo s n ú m e ro s g e n e ra d o s son
9 // d o u b le randoraReal{ ) - -> Uniforme, 0 ..1
10 // i n t randomlnt < i n t l i n f , i n t ls u p ) Uniforme l i n £ . . l s u p 7 , 5 . 2 . 3 . 10. 4 . 6 . 9 . 8. 1 . 7 . 5 . 2 ........
11 // i n t p o isso n ) double v alorE sperado ) --> Poisson
12 // d o u b l e n eg E x p l d o u b l e v a l o r E s p e r a d o ) - - > E x p o n e n c i a l G e n e ra r un n ú m e ro c a d a se g u n d o p ro d u c e u n a s e c u e n c ia re p e titiv a . E n n u e stro c a
13 // Un m é t o d o e s t á t i c o r e l a c i o n a d o :
so . la s e c u e n c ia se rep ite d e s p u é s d e M - 1 = 10 n ú m e ro s. L a lo n g itu d d e la s e
14 // void perm ute) O bject l i a ) --> Perm utación a l e a t o r i a
c u e n c ia h a s ta q u e s e e n c u e n tra un n ú m e ro g e n e ra d o a n te rio rm e n te s e c o n o c e c o
16 /• • mí» p e r io d o d e la se c u e n c ia . E l p e rio d o o b te n id o c o n e s ta e le c c ió n d e A e s.
17 • C l a s e d e n ú m e r o s a l e a t o r i o s q u e e m p l e a un c la ra m e n te , e l m e jo r p o sib le v a q u e to d o s lo s n ú m e ro s n o n u lo s m e n o re s q u e M
18 • g e n e ra d o r l i n e a l de c o n g ru en c ia s 31- b i t . so n g e n e ra d o s . (N e c e sa ria m e n te d e b e m o s te n e r u n n ú m e ro re p e tid o e n la I l-é sim a
19 • O b s é r v e s e q u e j a v a . ú t i l c o n t i e n e u n a c l a s e Random,
ite ra c ió n .)
20 • p o r l o que s e deb en v i g i l a r l o s c o n f l i c t o s d e nombres.
21 •/ S i M e s p rim o , d is tin ta s e le c c io n e s d e A p e rm ite n g e n e ra r u n p e rio d o c o m p le to
22 public class Ra ndom de Al - I v a lo re s. E sta c la s e d e g e n e ra d o re s re c ib e n e l n o m b re d e g e n e r a d o r e s li
23 { n e a le s d e c o n g r u e n c ia s c o n p e r io d o c o m p le to . O tra s e le c c io n e s d e A n o g e n e ra n
24 p u b l i c Random( >
un p e rio d o c o m p le to . P o r e je m p lo , si A = 5 y Y „ = I . la s e c u e n c ia tie n e co m o
25 { /• Figura 9.2 • / }
26 p u b l i c Random( i n t v a l o r I n i c i a l ) p e rio d o 5 . al o b ten erse:
27 { /• Figura 9.2 •/ 1
28 p u b lic in t random lnt( ) 5 .3 . 4 . 9 . 1 . 5 . 3 . 4 .....
29 < /• Figura 9.3 •/ )
30 p u b lic double randomPeal( ) Si se elig e c o m o v alo r d e A l un p rim o 31-b it m u y a lto , e l perio d o es su ficiente
31 ( re tu rn random lnt( ) / <d o u b l e ) M; ) m en te a lto p a ra la m ay o ría d e las aplicaciones. El p rim o M - 2 1 = 2.147.483.647
32 public i n t random lnt(i n t l i n f , in t lsup )
33 { /• Figura 9.8 • / }
1 /••
34 p u b lic i n t p o is s o n ( double valorE sperado > 2 • C o n s t r u c c i ó n d e u n o b j e t o Ra ndom c u y o
35 { / • Figura 9.5 • / ) 3 • estado in ic ia l se obtiene del re lo j d el sistem a.
36 p u b l ic double negExpl double v a lo rE sp e ra d o ) 4 •/
37 { /• Figura 9.6 • / )
5 p u b l i c Random) )
38 p u b lic s t a t i c f in a l v oid permute) O bject ( J a ) 6 (
39 { / • Figura 9.7 •/ )
7 this) (int) ( System .cutrentT im eK illis( )
40
8 % I nt egor . MAX_VALUE ) >;
41 private int estado;
9 }
42
10
11 /••
Figura 9.1 Esquem a d e u n a c la se g e n e ra d o ra d e núm eros aleatorios 12 • C o n s t r u c c i ó n d e u n o b j e t o Random
13 • e sp ecifican d o un estad o i n i c i a l .
14 • Sparam v a l o r l n i c i a l e l e s t a d o i n i c i a l .
ra d o r e s un g e n e ra d o r d e n ú m e ro s a le a to rio s e n e l q u e so n g e n e ra d o s lo s v alo res
15 •/
X t. X 2 v e rific á n d o se 16 p u b l i c Random) i n t v a l o r l n i c i a l (
17 (
R a n d o m .j a s u
N u m c r ic a l.ja v a
C o n tie n e la c la s e R a n d o m .
C o n tie n e la ru tin a d e te st d e p rim a lid a d d e la F ig u
Prácticos d e program ación
ra 9 .9 a d e m á s d e la s ru tin a s m a te m á tic a s d e la .Sec 9 .1 1 . U n a lg o ritm o a lte rn a tiv o p a ra g e n e ra r p e rm u ta c io n e s e s re lle n a r e l v ecto r
c ió n 7.4. d e sd e a [ 0 ] h a s ta a ( n - 1 1 d e l s ig u ie n te m o d o : p a ra re lle n a r a [ i I s e gene-
ra n n ú m e ro s a le a to rio s h a s ta q u e a p a re z c a u n o q u e n o h a y a s id o u s a d o p rc q u ie r b u e n lib ro d e p ro b a b ilid a d y e s ta d ís tic a s e p u e d e e n c o n tr a r in fo rm a c ió n a d i
v ium ente. P ara re a liz a r e s ta c o m p ro b a c ió n p u e d e e m p le a rs e un v e c to r de c io n a l so b re lo s n ú m e ro s ale a to rio s.
b o o lc a n o s . E v a lu é e l tie m p o e s p e r a d o d e e je c u c ió n (¡o jo ! tie n e tru c o ) y e s
1. J. B e n tle y . « P ro g ra m m in g P e a rls» . C o m m u n ic a tio n s o f th e A C X I 30
c rib a u n p ro g ra m a q u e c o m p a re e l tie m p o real d e e je c u c ió n d e la ru tin a , e l
(1 9 8 7 ). 7 5 4 -7 5 7 .
tie m p o o b te n id o p o r la e s tim a c ió n y la n itin a d e la F ig u ra 9 .7 .
2. G . L. M iller, « R ie m a n n 's H y p o th e sis a n d T e s ts f o r P rim a lity » . J o u r n a l o f
9 .1 2 . S u p o n g a m o s q u e se q u ie r e g e n e ra r u n a v a ria c ió n a le a to ria d e N e le m e n to s
C o m p u te r a n d S y ste m S c ie n c e 13 <1976). 3 0 0 -3 1 7 .
d is tin to s d e n tro d e l ra n g o I. 2 M . (E l c a s o M = N c o rre s p o n d e a la g e
3. S . K. P ark y K W . M ille r, « R a n d o m N u m b e r G e n e ra to rs: G o o d O n e s A re
n e ra c ió n d e p e rm u ta c io n e s.) E l a lg o ritm o d e F lo y d p a ra c o n s e g u irlo e s e l
lla r d t o F in d » . C o m m u n ic a tio n s o f th e A C M 31 (1 9 8 8 ) 1 1 9 2 -1 2 0 1 . (S ee
sig u ie n te : v a m o s g e n e ra n d o d e fo rm a re c u rs iv a u n a v a ria c ió n d e V - I
a ls o T e c h n ic a l C o rre s p o n d e n c e in 3 6 (1 9 9 3 ) 105-110.)
e le m e n to s d is tin to s d e n tro d e l ra n g o I . 2 X I - I. T r a s h a c e rlo g e n e ra
4. M . O . R u b ín . « P ro b a b ilistic A lg o rith m s f o r T e stin g P rim a lity » . J o u r n a l o f
m o s u n e n te r o a le a to rio e n tr e I y M . S i e l n ú m e r o n o e s tá to d a v ía e n la
N u m h e r T h e o n 12 (1 9 8 0 ). 128-138.
p e rm u ta c ió n s e a ñ a d e e l m is m o , y si y a e s tá s e a ñ a d e M D e b e h a c e r lo si
g uiente:
a) P ru eb e q u e e s te a lg o r itm o n o g e n e ra e le m e n to s re p e lid o s.
h) P ru eb e q u e c a d a v a ria c ió n p o s ib le a p a re c e d e fo rm a e q u ip ro b a h le .
c) D e u n a im p le m e n ta c ió n re c u rs iv a d e l a lg o ritm o .
d) D é u n a im p le m e n ta c ió n ite ra tiv a d e l a lg o ritm o .
9 .1 3 . U n p a s e o a le a to r io e n d o s d im e n s io n e s e s e l s ig u ie n te ju e g o , q u e s e d e s a
rro lla e n e l s iste m a d e c o o rd e n a d a s v. y . S e c o m ie n z a e n e l o rig e n (e s to e s.
e n (0 . O)). C a d a ite ra c ió n c o n siste e n d a r u n p a so , a le a to ria m e n te e le g id o
e n tre lo s sig u ie n te s: u n a u n id a d h a c ia a rrib a , h a c ia a b a jo , h a c ia la d e re c h a
o h a c ia la iz q u ie rd a . E l p a s e o te rm in a c u a n d o e l c a m in a n te re g re sa a l o ri
g en . P u e d e p ro b a rse q u e e s to a c a b a o c u rr ie n d o m á s ta r d e o m á s te m p ra n o
c o n p ro b a b ilid a d I e n d o s d im e n s io n e s . S in e m b a rg o , si g e n e ra liz a m o s el
p ro b le m a a l e s p a c io d e tre s d im e n s io n e s , la p ro b a b ilid a d p a s a a s e r m e n o r
q u e I. E scrib a u n p ro g ra m a q u e re a lic e 100 p a se o s in d e p e n d ie n te s y c a lc u
le e l n ú m e ro d e p a so s d a d o s e n c a d a d ire c c ió n .
9 .1 4 . U n te s t e s ta d ís tic o m u y s e n c illo , a la v e z q u e e f e c tiv o , e s e l te s t d e la
/• c u a d r a d o . S u p ó n g a s e q u e g e n e ra m o s , d e fo rm a s u p u e s ta m e n te u n ifo rm e .
;V v a lo re s e n tr e XI p o sib le s ( p o r e je m p lo , g e n e ra m o s N n ú m e ro s e n tre I y
XI. a m b o s in c lu siv e ). El n ú m e ro d e a p a ric io n e s d e c a d a v a lo r e s u n a v a ria
b le a le a to ria d e m e d ia p - N M . P a ra q u e el te s t, q u e c o m p ru e b a la u n ifo r
m id a d . s e a s ig n ific a tiv o d e b e v e rific a rse p > 10. S e a f e l n ú m e ro d e veces
q u e i e s g e n e ra d o . E n to n ce s se c a lc u la e l v a lo r /- c u a d r a d o V = X) j ) - p )2/u.
E l re s u lta d o d e b e e s ta r p ró x im o a XI. S i e l re s u lta d o e s lá le jo s d e M d e m a
s ia d a s v e c e s (en c o n c re to , si lo s u p e r a e n m á s d e 2 N M . e n u n o d e c a d a
diez, in te n to s ), e n to n c e s e l g e n e ra d o r n o h a p a sa d o e l test. Im p le m e n te e s te
te st y e je c ú te lo s o b re su im p le m e n ta c ió n d e l m é to d o r a n d o m l n t (co n
l i n f = I y 1 s u p = 10 0 ).
Bibliografía
E n | 3 | p u e d e e n c o n tra rs e a m p lia in fo rm a c ió n so b re lo s g e n e ra d o re s d e n ú m e ro s
a le a to rio s. El a lg o ritm o d e la s p e rm u ta c io n e s s e d e b e a R. F lo y d y p u e d e e n c o n
tra rse e n II I. E l te s t d e p rim a lid a d a le a to rio s e h a to m a d o d e 12 1 y 1-41. E n c u a l
ru //c ni
Aplicaciones
C A P I T U L O __________________________________________________________
10 Juegos y diversión
L a e n tra d a p a ra e l p ro b le m a d e la s o p a «/<• le tr a s e s u n v e c to r b id im e n s io n a l d e i.
c a ra c te re s y u n a lista d e p alab ras. E l o b je tiv o e s e n c o n tra r las p a la b ra s e n la m a-
tr i/. E sta s p a la b ra s p u e d e n a p a re c e r e n h o ri/.n n tu l, v e rlic u l o d ia g o n a l e n c u u lq u ic - 1
ra d e lo s d o s s e n tid o s (h a y u n to tal d e o c h o d ire c c io n e s ). C o m o e je m p lo , la so p a
m o s tra d a e n la E ig u ra 1 0 .1 c o n tie n e la s p a la b ra s l a d o . l o s . p e r y c u a l . I-a p a la
b ra l a d o c o m ie n z a e n la fila 0 . c o lu m n a 0 . e s d e c ir, e n e l p u n to (0 . 0 ). y s e e x tie n
d e h a s ta e l t(). 3 ); la p a la b ra l o s v a d e s d e (0 . 0 ) h a s ta (2 . 0 ); p e z d e sd e ( 3 . 0)
h a s ta ( 1 . 2 ) : y c u a l d e s d e ( 3 . 3) h a s ta «0. 0).
lo c u a l n o e s u n g ra n p ro b le m a p a ra u n a m á q u in a m o d e rn a . P e ro si c o n sid e ra m o s
u n a v a ria c ió n e n la q u e so la m e n te se p ro p o rc io n a la so p a y la lista d e p a la b ra s p o E l ú n ic o d e ta lle a lg o rítm ic o p e n d ie n te d e tra ta r e s la im p le m e n ta c ió n d e la
sib le s v ie n e d a d a p o r a q u e lla s q u e a p a re c e n e n e l d ic c io n a rio , e n to n c e s e l n ú m e ro c o m p ro b a c ió n d e p re fijo . E s d e c ir, s u p o n ie n d o q u e la se c u e n c ia d e c a ra c te re s a c
tic p a la b ra s se e le v a ría h a s ta 4 0 .0 0 0 e n lu g a r d e 4 0 . g e n e rá n d o s e u n o s 8 0 m illo n e s tu al n o p e rte n e c e a la lista d e p a la b ra s, ¿ c ó m o p o d e m o s d e c id ir si e s u n p re fijo de
d e c o m p ro b a c io n e s . S i se d o b la e l ta m a ñ o d e la i n a i n / te n d ría m o s 3 2 0 m illo n e s de a lg u n a p a la b ra d e la lis ta ? L a re s p u e sta e s b a sta n te sim p le . E l a lg o ritm o d e b ú s
q u e d a b in a ria d e la F ig u ra 5 .1 2 re d u c e e l d o m in io d e b ú sq u e d a a un o b je to y
c o m p ro b a c io n e s , lo q u e d e ja d e se r u n c á lc u lo triv ia l Q u e re m o s u n a lg o ritm o que
e n to n c e s m ira si c o in c id e c o n e l e le m e n to b u sc a d o . S u p o n g a m o s q u e e n lu g ar
p u e d a re s o lv e r u n a s o p a d e letras d e e s te ta m a ñ o e n a p ro x im a d a m e n te u n se g u n d o .
d e h a c e r la c o m p ro b a c ió n , s im p le m e n te d e v o lv e m o s la p o s ic ió n y d e ja m o s q u e el
P ara e llo c o n s id e re m o s e l sig u ie n te a lg o ritm o a lte rn a tiv o :
u su a rio u s e la in fo rm a c ió n . E n to n c e s, p o r su p u e s to , e s fá c il p a ra e l q u e h a c e la
lla m a d a c o m p r o b a r si e l e le m e n to e n la p o s ic ió n d e v u e lta c o in c id e o n o c o n el
para cada f i l a P
p a r a c a d a colum na C
1 /••
para cada d irec ció n D 2 • L leva a cabo l a búsqueda b i n a r í a p a ra e l problema de la
para cada lo n g itu d de palabra L 3 * sopa de l e t r a s usando una comparación por n iv e l.
com probar s i lo s L c a r a c te re s a p a r t i r de la
4 • Devuelve la ú ltim a p o s ic ió n exam inada, l a c u a l o bien
5 • c o n ti e n e a x. o b ie n x es un p r e f i j o suyo, o b ien
p o s i c i ó n ( F . CJ e n l a d i r e c c i ó n 6 • no hay ninguna p a la b r a de la quo x os p r e f i j o .
D form an una p a la b ra 7 -z
8 prívate s ta tic int busquedaPrefijol String ( J a.
9 String x. I n t n )
E ste a lg o ritm o m o d ific a e l b u c le p a ra e v ita r la b ú sq u e d a d e c a d a p a la b ra de 10 (
la lista S u p o n g a m o s q u e la lo n g itu d d e la s p a la b ra s e s tá lim ita d a a 2 0 c a ra c te re s . 11 int iní e 0;
12 int sup = n - 1;
E n e s te c a s o , e l n ú m e ro d e c o m p ro b a c io n e s re a liz a d a s p o r e l a lg o ritm o e s I 6 0 F C
13
P a ra u n a s o p a d e 32 Illa s p o r 3 2 c o lu m n a s , e s to su p o n e u n as 1 6 0 .0 0 0 c o m p ro b a 14 w hilet in f < sup »
c io n e s . F l p ro b le m a e s tá a h o ra e n q u e te n e m o s q u e d e c id ir si u n a p a la b ra p e rte n e 15 {
ce a la lis ta d e p a la b ra s S i u sa m o s u n a b ú sq u e d a lin eal p e rd e m o s to d o lo g a n a d o . 16 i n t med • < i n f • nup » / 2:
17 i£ l a ( ned ] -conpareTot x 1 < 0 )
P e ro si u sa m o s u n a b u e n a e s tru c tu ra d e d a to s , p o d e m o s e s p e ra r q u e la b ú sq u e d a 18 i n í » med t 1 ;
s e a e fic ie n te S i la lista d e p a la b ra s e s tá o rd e n a d a , lo q u e e s d e e s p e ra r e n un d ic 19 else
c io n a rio . e n to n c e s p o d e m o s u sa r u n a b ú sq u e d a b in a ria (m o s tra d a e n la F ig u 20 s u p = med?
21 1
r a 5 . 12) c o n lo q u e p a ra c a d a c o m p ro b a c ió n se re a liz a n lo g P c o m p a ra c io n e s e n tre
22
c a d e n a s. P ara 4 0 .0 0 0 p a la b ra s , e s to s ig n ific a re a liz a r u n a s 16 c o m p a ra c io n e s p o r 23 return inf;
c o m p ro b a c ió n , d a n d o un to ta l d e m e n o s d e 3 m illo n e s d e c o m p a ra c io n e s . E s to se 24 )
p u e d e h a c e r c o n to d a se g u rid a d e n u n o s p o c o s se g u n d o s. E ste a lg o ritm o e s m e jo r Figura 10.2 Bú sq u ed a b inaria m o d ific a d a p a ra d e vo lve r e l últim o punto d e la
q u e e l a n te r io r e n u n fa c to r d e 10 0 . bú squeda.
e le m e n to b u s c a d o S i n o e s a sí. ta m b ié n e s fá c il v e t si la s e c u e n c ia d e c a ra c te re s M lila s v c o lu m n a s p a ra la s o p a , y u n ta m a ñ o m á x im o d e d ic c io n a rio d e HXMXK)
b u s c a d a e s un p re fijo d e a lg u n a p a la b r a d e la lista . > a q u e e n ta l c a s o d e b e s e r un p a la b r a s , d e ja n d o e l p ro b le m a d e s u p r im ir e s ta s re s tr ic c io n e s p a ra e l E je r c i
p r e f ijo tic la c a d e n a s itu a d a e n la p o s ic ió n d e v u e lta (e n e l E je rc ic io 10.3 s e le c io 10.6. L a p a rte p ú b lic a d e la c la s e c o n s ta d e u n c o n s tru c to r y u n ú n ic o m é to d o
p id e q u e d e m u e s tre e s to ) . E n la F ig u ra 10.2 m o s tra m o s e s te a lg o r itm o m o d if ic a r e s o l v e r S o p a . L a s e c c ió n p riv a d a in c lu y e lo s a trib u to s y las ru tin a s d e so p o rte .
d o lla m a d o b u n q u o d a P r e f i j o .
L a F ig u ra 10.4 p ro p o rc io n a e l c ó d ig o d e l c o n s tru c to r, q u e sim p le m e n te a b re é i<
y lee lo s d o s fic h e ro s c o rre s p o n d ie n te s a la so p a d e le tra s y a la lista d e p a la - lo*
b ru s. L a ru tin a d e so p o rte a b r e F í c h e r o . m o s tra d a e n la L ig u ra 10.5. so lic ita re- £ J
10.1.2 Im plem entación en Ja v a
p e tid a m e n te e l n o m b re d e u n fic h e ro h asta q u e la a p e rtu ra tie n e é x ito . L a ru tin a ^
N u e stra im p le m e n ta c ió n s ig u e la d e s c r ip c ió n d e l a lg o ritm o ca si a l p ie d e la Icira. cc
er
D ise ñ a m o s u n a c la s e lla m a d a B ú s q u e d a P a l a b r a n p a ra a lm a c e n a r la so p a y la
lista d e p a la b ra s a s í c o m o lo s c o rre s p o n d ie n te s c a n a le s d e e n tra d a . El e sq u e le to 1 /• •
2 * C onstructor para ia c la se B u s q u e c a P a 1a b r a s . S o l i c i t a
d e la c la s e s e m u e s tra e n la F ig u ra 10.3 P o r s im p lic id a d , a su m im o s u n lím ite d e 3 * e l n o m b r e de lo s f i c h e r o s do l a s e p a y d e l d i c c i o n a r i o .
4 •/
1 // Clase para re so lv e r el problema de ¿a ñopa d o l e t r a s 5 p u b l ic B usquedaPalabrasl >
2 // 67 1 s o p a S t r e a m =a b r e F i c h e r o ( ‘ I n t r o d u z c a f i c h e r o dela sopa' i;
3 CONSTRUCTOR: s i n i n i c i a l i r a c i ó n
8 p a l n b r a S t r e a m *a b r e F i c h e r o ( " y e l d e l d i c c i o n a r i o • >j
4 / / ........................ * ........................OPERACIONES PUBLICAS..................... * ............................
5 i n t r e s o l v e r S e p a ( > - - > imprime to d a s l a s p a l a b r a s e n c o n t r a d a s 9 le e S o p a ( );
6 // e n l a a o p a ; d e v u e l v e e l número d e p a l a b r a s 10 l e e P a l a b r a a ( >;
7 11 1
8 p u b lic c l a s s BúsquedaPnlabras
Figuro 10.4 C o n stru c to r d e B u s q u e d a P a l a b r a s .
9 <
10 p r í v a t e s t a t i c f i n a l i n t MAX_FILAS = 6 4 ;
4 B ú s q u e d a P a l a b r a s p = new 3 u s q u e d a P a l a b r a s < ):
5 S y s t e m . o u t . p r i n t l n < *P o s o ] v i e n d o . . . * ) ; Figuro 10.11 P o d o alfa- b eta después d e a u e se b a y a e v a lu a d o h ja . C ? q u e e s el
6
7 )
p .re s o lv e r S o p a l I; H
m enor d e los 2. e s un e m p a te e n e l m ejor d e los casos, por lo q u e no
p u e d e ser u n a m eiora resp ecto a C i Por tanto, n o necesitam os evo-
Figuro 10.10 R utin a m a in sim ple p a ro e l p ro b le m a d e la sop a d e lefros luat H? „ . H. c y h ,d . y se p u e d e pasar D irectam ente a C j
N o n e c e s ita m o s e v a lu a r c a d a n o d o c o m p le ta m e n te ; p a ra a lg u n o s n o d o s basta 1 / / E n c u e n tr a e l m ovim iento óptimo
c o n e n c o n tra r u n a re fu ta c ió n . E s to s ig n ific a q u e a lg u n o s b u c le s p u e d e n term in a r 2 p r i v a t e Mejor e le g irM o v im ie n to t i n t la d o , int alfa, int teta I
a n te s d e tiem p o . E n c o n c re to , c u a n d o e l h u m a n o e v a lú a u n a p o s ic ió n , c o m o C 2 . 3 {
4 i n t op; / / E l oponente
e n c o n tra r u n a re fu ta c ió n e s ta n b u e n o c o m o e l m e jo r m o v im ie n to a b so lu to . La 5 Mejor r e p l i c a ; / / Mejor r é p l i c a d e - oponente
m ism a ló g ic a se a p lic a a l c o m p u ta d o r. E n c u a lq u ie r p u n to , a l f a e s e l v a lo r q u e e l 6 in t evalSim ple: / / R e su lta d o de una e v a l u a c i ó n inm ediata
h u m a n o h a d e re c h a z a r, y b e c a e s e l v a lo r q u e e l c o m p u ta d o r h a d e re c h a z a r. 7 i n t n e j o r r i l a = 0:
C u a n d o e l h u m a n o h a c e u n a b ú sq u e d a , c u a lq u ie r m o v im ie n to m e n o r q u e a l i a es 8 i n t m e j o r C o l u m n a = 0;
e q u iv a le n te a a l f a ; si la b ú sq u e d a la re a liz a e l c o m p u ta d o r e n to n c e s c u a lq u ie r 9 in t valor;
10
m o v im ie n to m a y o r q u e b e t a e s e q u iv a le n te a b e t a . E sta e s tra te g ia re c ib e el 11 i £ ( { evalSiir-pie = v a lo r E s ta d o » » 1 != INCIERTO
n o m b re d e p o d a a lfa -b e ta . 12 r e t u r n new M e j o r t e v a l S i m p l e );
C o m o se m u e s tra e n la F ig u ra 10.12. la p o d a a lfa -b e ta s e o b tie n e re a liz a n d o so 13
la m e n te u n o s p o c o s c a m b io s e n e l e g í r M o v i m i e n t o . T a n to a l f a c o m o b e t a se 14 i£( l a d o == COMPUTADORA I
p asa n c o m o p ará m e tro s a d icio n a le s. In ic ia lm e n te , se lla m a a e l e g i r M o v i m i e n t o 15
16 o p = HUMANO; v a l o r = a l i a ;
c o n v a lo re s HUMANO_GANA y COMPUTADORA_GANA p a ra a l f a y b e t a re s p e c tiv a 17
m en te. L as lín e a s 16 a 20 re fle ja n un c a m b io en la in ic ia liz a c ió n de 18 else
v a l o r . L a e v a lu a c ió n d e un m o v im ie n to e s s ó lo lig e ra m e n te m á s c o m p le ja q u e la 19
o rig in a l d e la F ig u ra 7 .2 7 . L a lla m a d a re c u rsiv a d e la lín e a 29 in c lu y e lo s p a rá m e 20 o p ■ COMPUTADORA; v a l o r ■ beta;
21
tro s a l f a y b e t a , c u y o s v a lo re s s e a ju s ta n e n la s lín e a 3 6 o 3 8 . c u a n d o e llo es
22
n e c e sa rio . E l o tro c a m b io a p a re c e e n la lín e a 4 2 . q u e p ro v o c a la te rm in a c ió n p o r 23 E xterior:
a n tic ip a d o c u a n d o s e e n c u e n tra u n a re fu ta c ió n . 24 f o r t i n t f i l a = 0; f i l a < 3: f i l a * * >
P a ra b e n e fic ia rse lo m á x im o p o sib le d e la s v e n ta ja s d e la p o d a a lfa -b e ta , los 25 í o r ( i n t c o lu m n a ■ 0 ; colum na < 3; c o lu m n a * • )
26 i f t c a s i l l a V a c i a ( f i l a , columna ) »
p ro g ra m a s d e ju e g o s n o rm a lm e n te in te n ta n a p lic a r h e u rís tic a s p a ra c o lo c a r los
27 <
m e jo re s m o v im ie n to s a l c o m ie n z o d e la b ú sq u e d a . E s to p ro d u c e m á s p o d a q u e la 28 l u g a r ( f i l a , c o l u m n a , l a d o »;
e s p e ra d a e n u n a b ú s q u e d a a le a to ria d e e s ta d o s . E n la p ra c tic a , la p o d a a lfa -b e ta 29 r e p lic a = elegirM ovim iento! o p . a l i a , b e t a ):
lim ita la b ú s q u e d a a so la m e n te (M s N ) n o d o s, d o n d e N e s e l n ú m e ro d e n o d o s 30 l u g a r » f i l a , c o l u m n a . VACIA ) ;
31 i f < l a d o == COMPUTADORA re p lic a .v a lo r > valor
q u e s e e x a m in a ría n sin p o d a a lfa -b e ta . E s to su p o n e u n a g ra n c a n tid a d d e a h o rro
32 | | l a d o ■■ HUMANO fcfc r e p l i c a . v a l o r < v a l o r )
El e je m p lo d e las tre s e n ra y a n o e s id e a l a l re s p e c to p o rq u e lo s v a lo re s s o n d e m a
33 l
s ia d o s im ila re s e n tre sí. p e ro a u n a s í la b ú sq u e d a in ic ia l s e re d u c e a u n o s 18.000 34 / / Se h a e n c o n t r a d o e l m e j o r m o v i m i e n t o
estad o s. 35 i£( l a d o == COMPUTADORA l
36 a lfa = valor = r e p lic a .v a lo r ;
37 else
38 beta = valor = re p lic a .v a lo r:
10.2.2 Tablas d e transposición 39
40 m ejorPila = fila ;
41 mejorColumna = columna:
O tra p rá c tic a e m p le a d a n o rm a lm e n te c o n siste e n u s a r u n a ta b la p a ra g u a rd a r to d o s 42 i £ ( a l f a >= beta )
43 break E x te rio r; / / Refutación
lo s e s ta d o s q u e y a h a n sid o e v a lu a d o s. P o r e je m p lo , e n e l c u rs o d e la b ú sq u e d a del
44
p rim e r m o v im ie n to , e l p ro g ra m a e x a m in a rá lo s e s ta d o s m o s tra d o s e n la F ig u
45
ra 10.13. S i s e g u a rd a n lo s v a lo re s d e lo s e s ta d o s , la s e g u n d a v e z q u e a p a re z c a u n o 46
d e e llo s n o será n e c e sa rio c a lc u la r su v a lo r d e n u e v o , lo q u e h a c e q u e d ic h o e stad o 47 r e t u r n new Mejor» valor. m ejorFila, mejorColumna ):
s e c o n v ie rta e n te rm in a l. L a e s tru c tu r a q u e a lm a c e n a lo s e s ta d o s re c ib e e l n o m b re 48 )
d e ta b la d e tr a n s p o s ic ió n . la c u a l se im p le m e n ta u s a n d o u n a ta b la h a s h . E n m u Figura 10.12 Rutina e le g ir M o v im ie n t o p a ra c a lc u la r e l m ovim iento óptim o
c h o s c a so s , la a p lic a c ió n d e e s ta té c n ic a , a n á lo g a a la im p le m e n ta c ió n d e l a p ro usando p o d a a lfa b o ta
g ra m a c ió n d in á m ic a q u e v im o s e n la S e c c ió n 7 .6 . p u e d e a h o rra r u n a g ra n c a n tid a d
d e c á lc u lo s.
P a ra im p le m e n ta r la ta b la d e tr a n s p o s ic ió n , d e fin im o s p rim e ro u n a c la s e L o s c a m b io s n e c e s a rio s e n la c la s e T r e s E . n R a y a so n m ín im o s y s e m u estran
E s t a d o , m o s tra d a e n la F ig u ra 10.14. q u e se u s a p a ra a lm a c e n a r c a d a e s ta d o y su e n la F ig u ra 10.15. S e a ñ a d e un n u e v o a tr ib u to e n la lín e a 3 y se m o d ific a la d e c la
v a lo r c a lc u la d o . E s ta c la s e im p le m e n ta e l in te rfa z d e H a s h a b l e . T a m b ié n p ro p o r ra c ió n d e e l e g i r M o v i m i e n t o . A h o ra p a sa m o s a l f a y b e t a (ig u a l q u e h icim o s
c io n a m o s un c o n s tru c to r q u e s e p u e d e in ic ia liz a r c o n u n ta b le ro (v e c to r b id im e n - e n la p o d a a lfa -b e ta ) y ta m b ié n la p r o f u n d i d a d d e la re c u rs ió n . q u e e s in icial-
sio n al). m e n te c e ro . L a lla m a d a in ic ia l a e l e g i r M o v i m i e n t o a p a re c e e n las lín e a s 7 y 8.
1 c l a s e TresEnRaya
2 {
3 p r í v a t e TablaHash tr a n s p o s i c i ó n •
4 new T a b l a E x p l o r a c i o n C u a d r a t i c a l );
5 publicM ejor elegirM ovim ientol in t lado )
6
7 r e tu r n elegirM ovim rentol lado. H*JXANO_GANA.
S COMPUTADORA_GAI¿A. 0 I;
10
11 1
Figuro 10 15 C a m b i o s ©n l a c í a s © T r e s E n R a y a p a r a I n c o r p o r a r l a t a b l a d © t r a n s
posición y la p o d a a lf a b e f a .
<i> S e d o b la e l n ú m e r o d e palabras.
S e p ro p o rc io n a e l c ó d ig o c o m p le to d e lo s d o s e je m p lo s e s tu d ia d o s , a u n q u e el b) S e d o b la n sim u ltá n e a m e n te e l n ú m e ro d e fila s y c o lu m n a s.
in te rfa z d e l j u e g o d e las tr e s e n ra y a d e ja b a sta n te q u e d e s e a r A m b o s s e e n c u e n
10 .5. D e sc rib a e l e f e c to d e e s c r ib ir u n m é to d o E q u a l s e n lu g a r d e u n m é to d o
tran e n e l d ire c to rio < H a p te rlO A c o n tin u a c ió n s e e n u m e ra n lo s n o m b re s d e lo s
fic h e ro s: e q u a l s . p a r a la c la s e E s t a d o .
11 Las pilas
m a r u n e m p a te . F.n la s tr e s e n ra y a e s to n o e s u n p ro b le m a p o rq u e e l p ro
g ra m a e v e n tu a lm e n te g a n a rá . M o d ifiq u e e l p r o g r a m a d e la s tr e s e n ra y a
d e fo rm a q u e c u a n d o s e e n c u e n tre u n e s ta d o g a n a d o r, s ie m p re to m e el
m o v im ie n to q u e lle v e a la v ic to ria m á s rá p id a m e n te . P u e d e h a c e r e s to s u
m a n d o 9 - p r o f u n d i d a d a C O M P U T A D O R A _ G A N A d e fo rm a q u e la v ic to ria
m á s rá p id a p ro d u z c a e l m a y o r v alo r.
y los compiladores
10.12. U s e un i n t e n lu g a r d e un v e c to r b id im e n s io n a l p a ra a lm a c e n a r e l ta b le ro
e n 18 b its , listo c la ra m e n te a h o rra e sp a c io . ¿ A h o rra ta m b ié n tiem p o ?
10 .13 . C o m p a re la e fic ie n c ia d e l p ro g ra m a d e las tre s e n ra y a c o n y sin p o d a alfa-
beta.
1 0 .1 4 . Im p le m e n te e l a lg o ritm o d e la s tre s e n ra y a y m id a la e fic ie n c ia c u a n d o se
p e rm ite a lm a c e n a r v a lo re s e n la ta b la d e tra n sp o sic ió n a d is tin ta s p ro fu n d i
d ad es. M íd a la ta m b ié n c u a n d o n o s e u s a ta b la d e tra n sp o sic ió n . ¿ C ó m o se
v e n a fe c ta d o s lo s re su lta d o s p o r la |M>da a lta -b e ta ?
S i e s tá in te re s a d o e n ju e g o s d e c o m p u ta d o r, u n b u e n p u n to d e p a rtid a e s e l s i
g u ie n te a rtíc u lo , c o n te n id o e n un n ú m e ro e s p e c ia l d e d ic a d o e x c lu s iv a m e n te al te 11.1.1 El algoritm o básico
m a. E n c o n tra rá g ran c a n tid a d d e in fo rm a c ió n y re fe re n c ia s a o tro s tr a b a jo s so b re
Ur*
a je d re z , d a m a s y o tr o s ju e g o s d e c o m p u ta d o r. E n e s ta situ a c ió n e s ú til u n a p ila p o rq u e sa b e m o s q u e c u a n d o e n c o n tra m o s u n s ím - ull|
1. K. L e e y S . M a h a ja n . « T h e D e v e lo p m e n t o f a W o rld C la s s O th e llo P ro - b o lo d e te rm in a c ió n c o m o ) . d e b e e m p a re ja rs e c o n e l { a n te rio r m á s re c ie n te a ú n da
g ra m » . A r tific ia l h u tU ig e n c c 4 3 (1 9 9 0 ), 2 1 -3 6 . n o e m p a re ja d o . P o r ta n to , c o lo c a n d o lo s sím b o lo s d e a p e rtu ra e n u n a p ila , p o d e - '»<
m o s fá c ilm e n te c o m p r o b a r si la a p a ric ió n d e u n s ím b o lo d e te rm in a c ió n e s o no
o p o rtu n a . E n c o n c re to , te n e m o s e l s ig u ie n te a lg o ritm o : 11.1.2 Im p lem en tació n
1. In ic ia l i A ir u n a p ila v acía .
L a F ig u ra 11.2 m u e s tra la c la s e A n a l i z a d o r J a v a . q u e re a liz a to d o e l trab ajo .
2. L e e r sím b o lo s h asta e l fin a l d e l fic h e ro .
A d e m á s d e l c o n s tru c to r, l a ú n ic a o tra ru tin a v isib le p ú b lic a m e n te e s c o m p r o b a r -
a) S i e l s ím b o lo e s d e a p e rtu ra , a p ila rlo e n la pila. E q u i l i b r a d o s , q u e a p a re c e e n la lín e a 2 6 . E l re s to so n ru tin a s a u x ilia re s o a tri
b) S i e l sím b o lo e s d e te rm in a c ió n y la p ila e s tá v a c ía , p ro d u c ir u n e rro r b u to s d e la c la se . E m p e z a m o s d e s c rib ie n d o lo s a trib u to s d e la clase.
c) E n tu ro c a s o , d e s a p ila r la c im a d e la pila. S i e l sím b o lo d e sa p ila d o no
e s e l c o rre s p o n d ie n te sím b o lo d e a p e rtu ra , p ro d u c ir u n error. 1 II C lase A nalizadorJava: comprobación de sím bolos e q u ilib r a d o s
2 II
3. A l f in a li/a r e l fic h e ro , si la p ila n o e s tá v a c ía , p ro d u c ir u n error. 3 // CONSTRUCCIÓN: c o n u n o b j e t o P u s h b a c k R e a d e r
E n e s te a lg o ritm o , ilu stra d o e n la F ig u ra 1 1.1. lo s sím b o lo s c u a rto , q u in to y se x to
4 II ............................* ....................... OPERACIONES PÚBLICAS ......................... ..
5 n i n t c o m p r o b a r E q u i l ib r a d o s ( ) - - > Imprime l o s e r r o r e s y
g e n e ra n e rro re s . L a ) e s un e rr o r p o rq u e e l s ím b o lo d e s a p ila d o e s (. p o r lo q u e se 6 II d e v u e l v e e l número d e e r r o r e s
d e te c ta u n m al e m p a re ja m ie n to . E l » p ro v o c a un e rr o r p o rq u e la p ila e s tá v a c ía , d e 7 ¡! ERRORES*
m o d o q u e n o e x is te e l c o rre s p o n d ie n te {. F in a lm e n te , e l ( p ro v o c a un e rro r, q u e 8 / / S e producen e r r o r e s a i comprobar c o m e n tario s o cadenas
9
s e d e te c ta c u a n d o fin a liz a e l fic h e ro y la p ila n o e s tá v ac ía .
10 is p o rt java.io.*;
P a ra q u e e s to fu n c io n e c o n p ro g ra m a s e n Ja v a , n e c e sita m o s c o n s id e ra r to d o s 11 isport E stru ctu rasD a to s . *;
lo s c o n te x to s e n lo s c u a le s lo s p a ré n te s is , la s lla v e s y lo s c o rc h e te s n o tie n e n por 12 is p o rt Excepciones.*;
q u é e s ta r e m p a re ja d o s . P o r e je m p lo , n o d e b e ría m o s c o n s id e ra r u n p a ré n te sis c o m o 13 im port Soporte.*;
14
u n s ím b o lo c u a n d o a p a re c e d e n tro d e un c o m e n ta rio , d e u n a c a d e n a d e c a ra c te re s 15 c la s s A nalizadorJava
c o n sta n te o e s u n a c o n s ta n te c a rá c te r. N e c e sita m o s, p o r ta n to , ru tin a s q u e s e sa lte n 16 {
lo s c o m e n ta rio s, las c a d e n a s c o n s ta n te s y lo s c a ra c te re s c o n s ta n te s . E n J a v a es 17 public A n a l í z a d o r J a v a ( P u s h b a c k R e a d e r cadenaEr.trada )
18 {
b a sta n te c o m p le jo d e te c ta r u n a c o n s ta n te c a rá c te r d e b id o a la s se c u e n c ia s d e e s c a
19 e r r o r e s ■ 0;
p e. p o r lo q u e s im p lific a re m o s la s h ip ó te s is d e tra b a jo . El o b je tiv o s e rá d is e ñ a r un 20 c a r = 1 \ 0 1;
p ro g ra m a q u e fu n c io n e p a ra la m a y o r p arte d e e n tra d a s c o m u n e s. 21 l i n e a A c t u a l = 1;
22 entrada * cadenaEntrada;
P a ra q u e e l p ro g ra m a s e a ú til, n o s ó lo d e b e m o s tra r lo s fa llo s d e e m p a re ja
23 tokensPendientes = n e w PilaVec( );
m ie n to . s in o ta m b ié n id e n tific a r la lín e a d o n d e a p a re c e n . E n c o n s e c u e n c ia , lle v a 24 }
re m o s c u e n ta d e l n ú m e ro d e lín e a d o n d e s e e n c u e n tra c a d a s ím b o lo le íd o . C u a n d o 25
se d e te c ta un e rro r, c o m p o n e r e l m e n s a je a p ro p ia d o s ie m p re re s u lta c o m p lic a d o . 26 public i nt c o m p r o b a r E q u i 1 i b r a d o s < I
27 { /• F i g u r a 11.8 •/ )
S i h a y u n a ) d e m á s , ¿ s ig n ific a q u e so b ra la } . o q u e falta u n a {? M a n te n d re m o s
28
el tra ta m ie n to d e e rr o re s ta n sim p le c o m o s e a p o sib le . Irre m e d ia b le m e n te e s p o s i 29 private PushbackReader entrada; / / L a cadena de entrada
b le q u e u n a v e z q u e s e m u e s tra un e rr o r e l p ro g ra m a se d e s o rie n te y e m p ie c e a 30 p r i v a t e c h a r car; // C a r á c t e r actual
m o s tra r m u c h o s e rro re s P o r ta n to , s ó lo d e b e m o s , e n p rin c ip io , b u s c a r la c a u s a del 31 private int lineaActual; // Línea actual
32 private Pila tokensPendientesj // Símbolos de apertura
p rim e r e rro r d e te c ta d o e n c a d a z o n a d e l te x to e x a m in a d o . A p e s a r d e to d a s e sta s pendientes
lim ita c io n e s, e l p ro g ra m a q u e d e s a rro lla m o s re s u lta b a sta n te útil 33 p r i v a t e i nt e r r o r e s ; // N ú m e r o d e e r r o r e s e n c o n t r a d o s
34
Símbolos: ( t i l ) [ 35 private boolean siguienteCar< )
36 ( / • Figura 1 1 . 4 •/ )
37 private v o i d devolverCarl )
38 { /* F i g u r a 1 1 . 4 */ }
39 prívate void saltarComentario( i nt c o m i e n z o )
40 { /* Figura 11.5 */ }
[ 41 private void saltarCadena( char tipoCadena I
I L u L U L l I I I I I L U I __ 42 { /* F ig u ra 11.6 */ )
( [ I I * >* ( c o f* 43 private boolean siguienteSimbolo( )
44 { /* F i g u r a 1 1 . 7 •/ )
E r r o r e s ( in d ic a d o s con • ) :
45 private void procesarBarra( )
I cuando s e e s p e r a b a un )
46 { /* F i g u r a 1 1 . 7 •/ }
I con n in g ú n sím b o lo d e a p e r t u r a con e l que em parejarlo 47 p r i v a t e v o i d c o m probarParejal S í m b o l o simAper, S i m b o l o s i m F í n )
[ sin p a re ja a l term inar la entrada 48 { /* F i g u r a 11.9 */ }
49 )
Figura 11.1 O p eracio n es sobre la pila e n e l algoritm o d e co m p ro b ació n d e sím bo
los equllibrodos. Figura 11.2 Esqueleto d e la c la se p a ra e l p rogram a d e co m p ro b ació n d e símbolos
a m lilitvnrtrK
e n t r a d a e s u n o b je to d e la c la s e P u s h b a c k R e a d e r y s e in ic ia liz a e n e l c o n s 1
tru c to r. U n o b je to d e la c la s e P u s h b a c k R e a d e r es c o m o u n B u f f e r e d R e a d o r . 2 • s i g u i e n t e C a r da v a l o r a c a r b a s á n d o s e e n e l s i g u i e n t e c a r á c t e r
• e n l a l í n e a d e e n t r a d a . d e v o lv e rC a r d e v u e lv e e l c a r á c t e r a la
e x c e p to p o r e l h e c h o d e q u e ta m b ié n p ro p o rc io n a u n m é to d o u n r e a d . E l c a rá c te r
• cadena. Sólo debe u t i l i z a r s e una vez después d e sig u ien teC ar.
actu a l q u e e s tá sie n d o e x p lo ra d o s e a lm a c e n a e n c a r . y e l n ú m e ro d e lin c a a c tu a l se • Ambas r u t i n a » a c t u a l i z a n l i n e a A c t u a l c u a n d o e l l o e s n e c e s a r i o .
a lm a c e n a e n l i n e a A c t u a l . E l a lg o ritm o p a ra c o m p ro b a r sím b o lo s eq u ilib ra d o s
n e c e sita q u e c o lo q u e m o s lo s sím b o lo s d e ap c H u ra e n u n a p ila . P ara p o d e r im p rim ir p riv a te boolean siguienteC arI i
d ia g n ó stic o s, a lm a c e n a m o s un n ú m e ro d e lín e a c o n c a d a sím b o lo , c o m o s e m u e stra f
e n la c la s e S ím b o lo d e l a F ig u ra 11.3. L a p ila s e lla m a t o k c n s P e n d ie n t e s . y se try
I
d e c la ra e n la lin e a 3 2 . F in a lm e n te , e n la lín e a 33 s e d e c la ra u n e n te r o p a ra c o n ta r
in t valorL eido = en trad a.read ( >;
e l n ú m e ro d e e rr o re s e n c o n tra d o s. i 2( v a l o r L e i d o -1 I
El c o n s tru c to r , m o s tra d o e n la s lin c a s d e la 17 a la 2 4 . i n i e ia l i/ a e l c o n ta return false:
d o r d e e r r o r e s a 0 y e l n ú m e r o ríe lin c a a c tu a l a I . y d a v a lo r a la re fe re n c ia 4 c ar = Ichar) valorL eido;
P u s h b a c k R e a d e r . E l re s to d e a trib u to s , a sa b e r, c a r y t o k e n s P e n d ie n t .e s , se l í l c a r *= ' v n ’ )
6 1 i n e a A c t u a l ^ + .-
in iz ia liz a n a d e c u a d a m e n te . E n e l c a s o d e t o k e n s P e n d i e n t e s , s e u tiliz a un c o n s
re tu rn tru e ;
tru c to r s in p a rá m e tro s p a ra c re a r u n a p ila vacía.
)
P o d e m o s p a s a r a e x a m in a r a lg u n a s d e la s ru tin a s a u x ilia r e s . M u c h a s d e e lla s c a t c h < lOException e I
tie n e n q u e v e r c o n e l tr a ta m ie n to d e la lín e a a c tu a l, y c o n la d if e re n c ia c ió n de 20 { return false; )
s ím b o lo s q u e re p r e s e n ta n to k e n s d e a p e r tu r a o c ie r r e d e a q u e ll o s q u e e s tá n 21 >
d e n tr o d e c o m e n ta rio s , c a d e n a s o c o n s ta n te s d e c a ra c te re s . T o d o e s to se e n g lo b a 22
23 p r iv a te v o id devolverC ar! )
d e ni n i d e l d e n o m in a d o a n á lis is lé x ico . L a F ig u ra 1 1.4 m u e s tra u n p a r d e ru tin as.
24 {
s i g u i e n t e C a r y d e v o l v e r C a r . s i g u i e n t e C a r le e e l sig u ien te c a rá c te r, lo asigna
25 i f ! c a r == ' \ n * )
a c a r . y actu a liza 1 in e a A c t u a l c u a n d o se trate d e un sa lto d e línea. F inalm ente, de- 26 1i n e a A c t u a l
vuelvc f a l s e c u a n d o se a lca n z a e l final d e fich ero . El p ro ced im ien to co m p le m e n ta 27 try
rio. d e v o l v e r C a r . c o lo c a d e n u ev o e l c a rá c te r ( c a r ) e n la c a d e n a d e entrada, y de- 28 t entrada.unreadl lin t) c ar ); )
crem en tu l in e a A c t u a l c u a n d o ello es o p o rtu n o E s c laro q u e d e v o lv e r C a r 29 c a tc h ! lOException e ) l )
30 1
d e b e ría lla m a rse s ó lo u n a v e z e n tre d o s lla m a d a s a s i g u i e n t e C a r . Y a q u e e s una
ru tin a p riv a d a , n o n o s p re o c u p a m o s d e a b u so s p o r p a rte d e la c la s e u su aria.
Figuro 11.4 Rutina s i g u i e n t e C a r p o ra leer e l siguiente c a rá c te r, actualizar
D e v o lv e r c a ra c te re s a la lín e a d e e n tra d a e s u n a té c n ic a c o m ú n e n e l a n á lisis sin
1 i n e a A c t u a l c u a n d o ello e s n e ce sario y d evo lver t r u e c u a n d o no
tá c tic o . E n m u c h o s c a so s, s e h a n leíd o d e m a sia d o s c a ra c te re s y e s p reciso d e sh a c e r
estam os a l final d e l fichero Rutina d e v o l v e r C a r p a ra d evo lver c a r
e l p ro c e so d e le c tu ra . E n n u e stro c a s o , e s to o c u rre c u a n d o p ro c e sa m o s u n a / . D e b e a la e n tra d a y octualizar 1 i n e a A c t u a l c u a n d o e lo es necesario.
m o s v e r si e l s ig u ie n te c a rá c te r c o rre s p o n d e a l to k e n d e c o m ie n z o d e c o m e n tario .
S in e m b a rg o , c u a n d o e llo n o e s a sí. n o p o d e m o s ig n o ra r e s te u ltim o c a rá c te r leíd o ,
p u e s p o d ría s e r u n s ím b o lo d e a p e rtu ra o c ie rre , o u n a s c o m illa s . P o r ta n to , d e b e L a sig u ie n te ru tin a a c o m e n ta r e s s a l t a r C o m e n t a r i o , m o s tra d a e n la Figu-
m o s a c tu a r c o m o si to d a v ía n o h u b ie ra s id o leíd o . ra 1 1.5. F.l p ro p ó s ito d e e s ta ru lin a e s s a lta rs e lo s c a ra c te re s d e u n c o m e n ta rio , p a
ra q u e d e s p u é s s e s ig a le y e n d o la e n tra d a a p a rtir d e l s ig u ie n te c a rá c te r tra s la f in a
liz a c ió n d e l c o m e n ta rio . L a s c o s a s s e c o m p lic a n p o r e l h e c h o d e q u e lo s c o m e n ta
1
2 • S ir r b o lo que r e p r e s e n t a e l o b je t o q ue s e a p i l a r á . rio s p u e d e n e m p e z a r b ie n p o r / / , e n c u y o c a s o e l c o m e n ta rio te rm in a c o n la lín ea,
3 •/ o c o n / * . e n c u y o c a s o * / te rm in a e l c o m e n ta rio . C u a n d o e s ta m o s e n e l prim er
4 c l a s s S ím b o lo c a s o , le e m o s re p e tid a m e n te e l sig u ie n te c a rá c te r, h a s ta q u e s e a lc a n z a e l lin a l del
5 I fic h e ro ( e n c u y o c a s o , la p rim e ra p a rte d e l o p e ra d o r u u fa lla ) o e l fin al d e lín ea.
6 c h a r to k e n :
T r a s h a c e rlo a c a b a m o s . O b s e rv e q u e e l n u m e r o d e lín e a e s a c tu a liz a d o a u to m á ti
7 ín t l a L in e a :
c a m e n te p o r s i g u i e n t e C a r . F.l c a s o / • s e p ro c e s a a p a rtir d e la línea 17. L a po-
8
9 S ím b o lo ! c h a r t o k . i n t l i n e a > s ib lc a p a ric ió n d e / * * s e tra ta a n te s d e lla m a r a e s ta ru tin a ( v é a se la F ig u ra 11.7,
10 | lín e a s 17 y 18).
11 to k e n = t o k ; L a ru tin a s a l t a r C o m e n t a r i o u tiliz a u n a m á q u in a d e e sta d o s sim p lific a d a .
12 la l . l n e n ■ l i n e a ; U i m á q u in a d e e s ta d o s e s u n a té c n ic a c o m ú n e n e l a n á lis is d e sím b o lo s. E n c a d a
13 }
14 J m o m e n to la m á q u in a s e e n c u e n tra e n un d e te rm in a d o e s ta d o , c a d a n u e v o carácter
d e e n tra d a , n o s lle v a a u n n u e v o e s ta d o . S i to d o v a b ie n a c a b a m o s p o r a lc a n z a r un
Figuro 11.3 C lase d e o b s ta s a u e se insenan en la Dí a. í-nI'.kIii i-ii .-I m a l «*l s ín ih o lo h a sid o n v u n n r i d n
1 /••
/•• 2 • P r e c o n d i c i ó n : E s t a m o s a p u n t o d e p r o c e s a r u n a c a d e n a ; y a hemos
• Precondición: Estamos a p u n t o d e procesar u n comentario; hemos 3 * encontrado la prim era com illa.
en c o n t r a d o ya e l t o k e n da c omienzo d e comentarlo. 4 • P o s t c o n d i c i ó n : La e n t r a d a s e g u i r á l e y e n d o j u s t o a p a r t i r
• postcondición: La entrada seguirá leyendo justo a partir 5 • de la com illa de c ie r r e correspondiente.
• del token de finalización de comentarlo 6 •/
•/ 7 p r ív a te v o id sa ita rC a d e n a ( c h a r tipoCadena )
p r í v a t e v o i d s a l t a r C o m e n t o r i o ) int c o m i e n z o ) 8 (
( 9 w hile( síguienteC ar( ) I
ífl comienzo - - SLASH..3LASH ) 10 (
{ 11 ift c a r == t i p o C a d e n a )
while) s i g u i e n t o C a r ) > fcfc ( c o r *\n‘ ) )
12 return:
13 i f t c a r == ’ \ n ' )
retu r n ; 14 <
15 erroree»»;
16 S y stem .o u t.p rin tln ) " F a l t a c e r r a r cad e n a en l a l í n e a *
17 l i n e a A c t u a l I;
16 / / B u scar l a se c u e n c ia • /
18 return;
17 booiean estado = talse; // true s i hemos e n c o n t r a d o *
19 )
18 20 e i s e 1 £< c a r -- * \\' )
19 w hile) siguier.teC ar( ) > 21 s i g u i e n t e c a r ) );
20 | 22 J
21 if)estado car == ' / ' 1 23 )
22 return;
23 estado = ( car - - >;
Figura 11.6 Rutina s a i t a r C a d e n a . p a ra co lo ca m o s justo después d e u n a cons
24 l
ta n te c a rá c te r o c a d e n a y a em p e z ad a
25 errores*»;
26 S y stem .o u t.p rin tln I *¡Comentario s i n te r m in a r ! " )j
27 1
c o m p ro b a n d o s i h e m o s e n c o n tra d o un c o m e n ta rio ; si n o . d e s h a c e m o s la se g u n d a
le c tu ra . S i te n e m o s u n a c o m illa . lla m a m o s a p r o c e s a r C a d e n a . S i te n e m o s un
Figura 11.5 Rutina s a i t a r C o m e n t a r i o . p a ra c o lo c a rse después d e u n co m e n
tarlo y a em pezado. sím b o lo d e a p e rtu ra o c ie rre , p o d e m o s a c a b a r. E n o tr o c a s o , se g u im o s le y e n d o
h a sta q u e s e a c a b e la e n tra d a o se e n c u e n tre u n s ím b o lo d e a jv r tu r a o c ie rre . L a
ru tin a c o m p le ta s e m u e s tra e n la F ig u ra 1 1.7.
L n l.i ru tin a s a i t a r C o m e n t a r i o . e n c a d a m ó n te n le s e h a b rá n tra ta d o 0 . I o 2 comprobar Equilibrados e s tá im p le m e n ta d o e n la F ig u ra 11.8. S ig u e la
ca ra c te re s d e l fin a liz a d o r • / . co rre sp o n d ie n te s a lo s e sta d o s 0 . 1 y 2 . S i y a s e h a n
d e s c rip c ió n d e l a lg o ritm o c a s i a l p ie d e la letra. L o s sím b o lo s d e a p e rtu ra s e ap ilan
leíd o lo s d o s c a ra c te re s, p o d e m o s term in ar. P o r ta n to , d en tro d e l b u c le só lo p in je e n la p ila ju n to c o n e l n ú m e ro d e lín e a a c tu a l. C u a n d o s e e n c u e n tra un s ím b o lo d e
m o s esta r e n lo s estad o s 0 o I. y a q u e si e sta m o s e n e l e s ta d o Iy en co n tram o s u n a /. c ie rre y la p ila e s tá v a c ía , e l sím b o lo e s in e s p e ra d o ; e n o tro c a so , e lim in a m o s el
te rm in a m o s in m e d ia ta m e n te . L n c o n s e c u e n c ia , e l e s ta d o p u e d e re p re s e n ta rs e m e
e le m e n to d e la c im a y c o m p ro b a m o s s i e l sím b o lo d e a p e rtu ra q u e e s ta b a e n la
d ia n te u n a s a n a b l e b o o leu n a q u e e s c ie rta c u a n d o la m á q u in a e s tá e n e l e s ta d o I. pila c a s a c o n e l sím b o lo d e fin a liz a c ió n q u e s e a c a b a d e leer. E s to s e h a c e e n la
S i n o a c a b a m o s , v o lv e m o s al e s ta d o I c u a n d o e n c o n tr a m o s u n • . o a l e s ta d o 0 . en ru tin a c o m p r o b a r P a r e j a , m o s tra d a e n la F ig u ra 1 1.9. U n a v e z a lc a n z a d o e l final
o tro c a so . E s to se h ace e n la lín e a 23.
d e l fic h e ro , to d o s lo s sím b o lo s e n la p ila n o te n d ría n p a re ja ; é s to s , d e e x is tir a lg u
S i n u n c a se e n c u e n tra e l to k e n d e fin a liz a c ió n d e c o m e n ta rio . s i g u i e n t e C a r n o . s o n m o s tra d o s e n la s a lid a p o r e l b u c le w h i l e q u e e m p ie z a e n la lín e a 4 1 . Se
a c a b a rá d e v o lv ie n d o f a l s e y e l b u c le w h i l e te rm in a rá , p ro v o c a n d o u n m e n sa je d e v u e lv e e l n ú m e ro to tal d e e rro re s d e te c ta d o s.
d e e rro r. s a l t a r C a d e n a . m o s tra d a e n la F ig u ra 11.6. e s sim ila r. A q u í, e l p a rá m e O b s e r v e q u e la im p le m e n ta c ió n a c tu a l p e r m ite v a r ia s H um adas a
tro e s e l c a rá c te r d e c o m ie n z o d e c a d e n a , q u e p u e d e se r " o ’ . E n c a d a c a s o , d e b e c o m p r o b a r E q u il i b r a d o s . S in em bargo, si la en trad a n o s e re in ic ia li/a ex tern a
m o s e x a m in a r e l c a rá c te r q u e te rm in a la c a d e n a . A d e m á s , d e b e m o s e s ta r p re p a r a
m ente. lo ú n ic o q u e o cu rrirá es q u e se d etec tará in m ed iatam en te e l fin d e fichero, aca
d o s p a ra tra ta r e l c a rá c te r \ ; e n o tr o c a so , e l p ro g ra m a p ro d u c iría e rr o re s c u a n d o b an d o in m ed iatam en te. L a F igura 1 1.10 m u estra q u e lo q u e se e sp era es q u e se cree
s e e je c u ta ra , p o r e je m p lo , s o b r e su p ro p io c ó d ig o . V a m o s, p u e s, tra ta n d o c a ra c te un o b jeto d e la clase A n a l i z a d o r J a v a y se llam e a c o m p r o b a r E q u i l i b r a d o s . En
re s . C u a n d o e l c a rá c te r le íd o e s u n a c o m illa d e c ie rre , h e m o s te rm in a d o . S i e n c o n n u e stro e je m p lo , s i n o h a y a rg u m e n to s e n la lín e a d e c o m a n d o s , u n o b je to d e la
tra m o s un fin d e lín e a , te n e m o s u n a c o n s ta n te c a rá c te r o c a d e n a sin te rm in a r Por c la s e P u s h b a c k R e a d e r s e a s o c ia c o n S y s t e m , in. E n o tro c a s o , s e u tiliz a n re p e
u ltim o , s i e n c o n tra m o s u n a \ . le e m o s e l sig u ie n te c a rá c te r sin e x a m in a rlo . tid a m e n te o b je to s d e la c la s e P u s h b a c k R e a d e r a s o c ia d o s a lo s fic h e ro s in d ic a d o s
U n a v e z e s c rita la ru tin a d e sa llo , e s fá c il e s c r ib ir a i g u i e n t e S i m b o l o . S i e l e n la lista d e a rg u m e n to s s u m in is tra d a e n la lín e a d e c o m a n d o s
1 /•• 1 /••
2 • Después de e n c o n tr a r l a b a r r a / , t r a t a r elsiguiente
2 * Im prime un m e n s a j e d e e r r o r en c a s o d e d e t e c t a r d e s e q u i l i b r i o s .
3 • c a r á c t e r . Si comienza un c o m e n tario , t r a t a r l o ;
3 • « r e t u r n número d e e r r o r e s d e t e c t a d o s .
4 • en caso c o n tra rio , devolver e l c a rá c te r s i no s e t r a t a
4 */
5 • d e l c a r á c t e r de nueva lín e a
5 public in t com probarEquilibrados I )
6 •/
6 <
7 private sta tic íinal int SLASH_SLASH = 0;
7 Sím bolo p a r e j a = nuil;
8 private sta tic final int SLASH_STAR = 1;
8
9
9 e r r o r e s - 0;
10 p riv a te void procesarB arra< )
10 l i n e a A c t u a l = 1;
11 <
11 w hile! siguienteSim bolo! > )
12 i f ( siguienteC ar( ) )
12 {
13 {
13 c h a r ultim oC ar = car;
14 i f ( c a r »» ••• )
14 S í m b o l o u l t í r o o S í m b o l o = new S i m b o l o ! u l t i m o C a r .
15 {
15 lin eaA ctual );
16 / / com entario para Javadoc
16
17 i £ ( s i g u i e n t e C a r ( ) && c a r ! = ••• )
17 s w itc h ( ultim oC ar >
18 d evolvorC ar! );
18 {
19 s a l t a r C o m e n t a r i o ! slash_ star ) ;
19 case ’ (': case '(': case *{':
20 1 20 to k e n s P e n d ie n te s. a p i l a r ( ultím oSim bolo );
21 else if( c a r == •/' 1
21 break;
22 s a lta rC o m e n ta rio ! SLA SH _SLA SH );
22 case • )': case • ) ' : case ’| ':
23 else i f ( c a r != *\n' )
23 try
24 d e v o lv e rC a r( );
24
25 )
25 pareja = (Simbolo)
26
26 to k en sP e n d ie n tes.c im a Y D e sa p ila r< );
27
27 c o m p ro b arP areja( p a r e j a , ultim oSim bolo );
28 /■ •
28 }
29 • Llegar a l sig u ie n te sím bolo de a p e r tu r a oc i e r r e .
29 catch! D esbordam ientolnferior e )
30 *D e v o l v e r f a l s e s i s e acaba e l fich e ro .
30 {
31 • S a lta r com entarios y c o n stan tes c a r á c te r o cadena
31 errores*»;
32 •/
32 S y s t e m . o u t . p r i n t l n ! " I n e s p e r a d o " +■ u l t i m o C a r *
33 private boolean siguienteSim bolol )
33 "e n l i n e a * * l i n e a A c t u a l );
34 (
34 }
35 w hile! siguienteC ar! ) >
35 broak;
36 l
36 default: // no puede o c u r r i r
37 if( c a r == ' / ' )
37 break;
38 p r o c e s a r B a r r a ( );
38 )
39 e l s e i f ( c a r == ' \ " | | c a r == • * ' »
39 J
40 s a l t a r C a d e n a ( c a r >;
40
41 else i £ ( c a r - - ' { ' | | c a r == * | * || c a r == |
41 w hile! ¡tokensPendientes.esV acia! ) )
42 c a r ■■ ' ) ' | | c a r ■» ' | | c a r ■» ')' )
42 {
43 retu rn true;
43 errores**;
44 >
44 try
45 return false; / / Final de fichero
45 { p a r e j a = (Simbolo) t o k e n s P e n d i e n t e s . c i m a Y D e s a p i l a r ( ) ; }
46 )
46 c atch ! D esbordam ientolnferior e ) ( )/ / No p u e d e o c u r r í r
47 System .out.println!p areja.to k en * * no emparejado " +
Fi g u r a 11. 7 R utina s i g u i e n t e S i m b o l o . p a ra saltar com entarios y c a d e n a s , y
48 " en la lin e a " * p a r e j a . laL inea );
d evo lver e l siguiente sim bolo d e ap ertu ra o cierre
49 }
50 return errores;
51 )
10-4-3
1 / / R u tin a p r i n c i p a l d e l comprobador de sím b o lo s d e s e q u ilib r a d o s . 2 * 3 * 3
2 public static v o i d main( String f 1 nrgs )
3 ( d o n d e * e s e l o p e ra d o r d e e x p o n e n c ia c ió n . ¿ Q u é re s ta y q u é e x p o n e n c ia c ió n d e b e
4 A n a l i z a d o r J a v a p;
e v a lu a rs e p rim e ro ? I-as re s ta s s e e v a lú a n d e iz q u ie rd a a d e re c h a , d a n d o c o m o re
5
s u lta d o 3. P o r e l c o n tra rio , las p o te n c ia s s e e v a lú a n , g e n e ra lm e n te , d e d e re c h a a
6 i f ( args.length 0 )
iz q u ie rd a , p o r l«» q u e la e x p re s ió n re f le ja ría 2 e n lu g ar d e (2 ) . E s d e c ir, la resta
7 |
a so c ia d e iz q u ie rd a a d e re c h a , m ie n tra s q u e la e x p o n e n c ia c ió n a s o c ia d e d e re c h a a
8 p = new Ana l i z a d o r J a v a < new P u s h b a c k P . e a d e r (
iz q u ie rd a . T o d a s e s ta s p o sib ilid a d e s su g ie re n q u e la e v a lu a c ió n d e u n a e x p re s ió n
9 new I n p u t S t r e a m R e a d e r < S y s t e m . l n I ) ):
10 if! p . c o n p r o b a r E q u i l i b r a d o s l ) == 0 i com o
11 System .out.println! "|N o hay e r r o r e s ! * >;
12 return; i - 2 - 4 ‘ 5 * 3 * 6 / 7 ~ 2 * 2
13 )
14 re p re s e n ta ría u n s e r io reto.
15 for( int i ■ 0; 1 < a r g s . l e n g t h ; i** I S i lo s c á lc u lo s se re a liz a n c o n m a te m á tic a e n te r a ( e s d e c ir, re d o n d e a n d o h a c ia
16 { a b a jo e n la div is ió n ), la re s p u e sta s e r ía - 8 . P ara p ro b a r e sto , in tro d u c im o s p a ré n te
17 try sis p a ra ilu s tra r e l o rd e n c o rr e c to d e lo s c á lc u lo s :
18
19 FileRoader i - new F i l o R e a d o r » argui i ) );
( l - 2 ) - ( M 4 * 5 ) * 3 l * 6 ) / ( 7 * | 2 * 2 ) > )
20
21 S y ste m .o u t.p r in tln ! argst i1 • “: * );
A u n q u e lo s p a ré n te s is d e sa m b ig u u n e l o rd e n d e e v a lu a c ió n , e s d ifíc il a rg u m e n ta r
22 p = n e w A n a l i z a d o r J a v a ( new
q u e h a c e n m ás c la ro e l m e c a n is m o d e e v a lu a c ió n . R e su lta q u e u n a fo rm a d e e x
23 PushbackReader| f ) I;
24 i f ( p . c o m p r o b a r E q u i l i b r a d o s ( I == 0 ) p re s io n e s d ife re n te , d e n o m in a d a e x p r e s ió n p o s tfijo , p ro p o rc io n a u n m e c a n ism o d i
25 System .out.println» * . . . s i n e rro re s" ): re c to d e e v a lu a c ió n . L a s sig u ie n te s se c c io n e s m u e s tra n c ó m o fu n c io n a . E n la p ri
26 ? .c i ó s e » I; m e ra e s tu d ia m o s la n o ta c ió n p o s tfija , m o s tra n d o c ó m o las e x p re s io n e s e s c rita s c o n
27 ) e s ta n o ta c ió n p u e d e n e v a lu a rse c o n u n sim p le re c o rrid o d e iz q u ie rd a a d e re c h a . La
28 catch! lOExceptlon e I s ig u ie n te s e c c ió n m u e s tra c ó m o la s e x p re s io n e s o rig in a le s , q u e u tiliz a n la n o ta
29 ( S ystem .err.println( e ♦ argsl i 1 »; ) c ió n h a b itu a l in fija . s e p u e d e n c o n v e rtir a n o ta c ió n p o s t f i j a . F in a lm e n te , se p re s e n
30 | ta u n p ro g r a m a J a v a , q u e e v a lú a e x p re s io n e s in fija s q u e c o n te n g a n o p e ra d o re s a d i
tiv o s . m u ltip lic a tiv o s y d e e x p o n e n c ia c ió n . a s í c o m o p a ré n te sis. S e u tiliz a un
a lg o ritm o d e e v a lu a c ió n d e e x p re s io n e s c o n p re c c d e n c iu e n tr e o p e ra d o re s.
11.2.1 M áq u in as postfijas ExprrsuinpoMfija 1 2 - 4 S * 3 • 6 • 7 2 2 * * /
U n a e x p r e s ió n p o s tfija e s tá fo rm a d a p o r u n a s e r ie d e o p e ra d o re s y o p e ra n d o s . S e
e v a lú a u tiliz a n d o u n a m á q u in a p o s tfijo , e n la sig u ie n te fo rm a : c u a n d o s e e n c u e n tra X
u n o p e ra n d o , se a p ila e n la p ila ; c u a n d o se e n c u e n tra u n o p e ra d o r, e l n ú m e ro a p r o i 4 4
p ia d o d e o p e ra n d o s so n d e s a p ila d o s d e la p ila , s e e v a lú a la o p e ra c ió n , y e l re s u lta 1 -1 -1 “ I
3 • S
123 • *
■>
lu í e v a lu a c ió n p ro c e d e d e la s ig u ie n te m a n e ra : e l 1 . e l 2 y e l 3 s o n a p ila d o s, e n e s e i ■> 4
o rd e n , e n la p ila . P a ra p ro c e s a r e l *. se d e sa p ila n lo s d o s e le m e n to s su p e rio re s de 7 7 2.401
7
la p ila : e s to e s. e l 3 y d e s p u é s e l 2 . O b s e rv e q u e e l p rim e r e le m e n to d e s a p ila d o s e 18.432 1 8432 18.432 18.432 7
c o n v ie rte e n e l p a rá m e tro d e re c h o d e l o p e ra d o r, y e l se g u n d o e n e l iz q u ie rd o ; por -1 -I -1 -1 -1 -K
ta n to , lo s p a rá m e tro s s e o b tie n e n d e la p ila e n o rd e n in v e rso al n atu ral. P a ra la 2 /
m u ltip lic a c ió n , e s to n o im p o n a , p e ro p a ra la re sta y la d iv is ió n , d e s d e lu e g o q u e
sí. E l re s u lta d o d e la m u ltip lic a c ió n e s 6 . y e s a p ila d o e n la p ila . E n e s te m o m e n to Rguro 11.11 Pasos p a ro la e va lu a ció n d e u n a expresión postfija
la c im a d e la p ila e s u n 6 ; y d e b a jo h a y un 1. P a ra p ro c e s a r e l *. s e d c sa p ila n e l 6
y e l 1. y su su m a . 7 . se a p ila . E n e s te p u n to , l a e x p re s ió n se h a le íd o c o m p le ta
m e n te . y la p ila tie n e só lo u n e le m e n to . P o r ta n to , la re s p u e sta fin a l e s 7. g u n d o o p e ra n d o . P o r c o n sig u ie n te , d e b e m o s g u a rd a rlo te m p o ra lm e n te e n u n a e s
T o d a e x p re s ió n in fija v á lid a p u e d e c o n v e n ir s e a n o ta c ió n p o stfija . P o r e je m tru c tu ra a d e c u a d a . S i c o n sid e ra m o s u n a e x p re s ió n c o m o
p lo . la e x p re s ió n in fija v ista a n te s p u e d e e s c rib irs e e n n o ta c ió n p o stfija c o m o
¿ó o o o cr a
12 -4 S ' 3 * 6 •7 2 2 * ' y -
la c u a l e n n o ta c ió n p o stfija es
• O p e r a n d o s : P a sa n in m e d ia ta m e n te a la salid a.
E n g e n e ra l, c u a n d o p ro c e s a m o s u n o p e ra d o r d e la e n tra d a , d e b e m o s s a c a r d e la p i • P a ré n te s is d e re c h o : D e sa p ila r sím b o lo s h a s ta e n c o n tra r u n p a ré n te s is iz
la a q u e llo s o p e ra d o r e s q u e d e b a n se r p ro c e s a d o s a te n d ie n d o a la s re g la s d e p re c e q u ierd o .
d e n c ia y aso c ia tiv id a d . • O p era d o r: D e s a p ila r to d o s lo s sím b o lo s h a s ta q u e e n c o n tre m o s u n sím b o lo
U n s e g u n d o e je m p lo , a lg o m i s c o m p le jo , lo re p re s e n ta la e x p re s ió n in fija d e m e n o r p re c e d e n c ia o un s ím b o lo d e ig u a l p re c e d e n c ia c o n a so c ia tiv id a d
p o r la d ere c h a . A p ila r e n to n c e s e l o p e ra d o r e n c o n tra d o .
3 * 2 * 5 - 1 • F in d e la e n tra d a : D c s a p ila r e l re s to d e sím b o lo s e n la pila
l - 2 3
é •
¿ Q u é o cu rre c o n lo s p a ré n te s is ? U n p a ré n te sis iz q u ie rd o p u e d e c o n sid e ra rse ♦ 6 • ♦ 7 •
c o m o u n o p e ra d o r d e m á x im a p re c e d e n c ia c u a n d o e s tá e n la e n tra d a , p e ro d e p re < 1
c e d e n c ia m ín im a c u a n d o e s tá e n la p ila . E n c o n s e c u e n c ia , e l p a ré n te sis iz q u ie rd o
d e la e n tra d a , s e a p ila rá s ie m p re sin m á s . C u a n d o e n c o n tre m o s u n p a ré n te sis d e re A 6 ' • 7
• U p e ra m io s: P a s a n in m e d ia ta m e n te a la salid a.
E n g e n e ra l, c u a n d o p ro c e s a m o s u n o p e ra d o r d e la e n tra d a , d e b e m o s s a c a r d e la p i • P a ré n te s is d e r e c h o : D e s a p ila r sím b o lo s h a s ta e n c o n tr a r un p a ré n te sis iz
la a q u e llo s o p e ra d o re s q u e d e b a n se r p ro c e s a d o s a te n d ie n d o a la s re g la s d e p re c e q u ie rd o .
d e n c ia y a so c iu tiv id a d . • O p era d o r: D e sa p ila r to d o s lo s sím b o lo s h a s ta q u e e n c o n tre m o s u n sím b o lo
U n se g u n d o e je m p lo , a lg o m á s c o m p le jo , lo re p re se n ta la e x p re s ió n in fiju d e m e n o r p re c e d e n c ia o u n sím b o lo d e ig u al p re c e d e n c ia c o n a so ciu tiv id ad
p o r la d e re c h a . A p ila r e n to n c e s e l o p e ra d o r e n co n trad o .
3 * 2 * 5 • 1 • P in d e la e n tra d a : D e s a p ila r e l re s to d e sím b o lo s e n la pila.
•
¿ Q u é o c u rre c o n lo s p a ré n te s is ? U n p a ré n te s is iz q u ie rd o p u e d e c o n sid e ra rs e 4 * 7
6 • ♦ e •
c o m o u n o p e ra d o r d e m á x im a p re c e d e n c ia c u a n d o e s tá e n la e n tra d a , p e ro d e p re ( (
c e d e n c ia m ín im a c u a n d o e s tá e n la pila. E n c o n s e c u e n c ia , e l p a ré n te sis iz q u ie rd o
A 6 i • 7
d e la e n tra d a , s e a p ila rá s ie m p re s in m á s . C u a n d o e n c o n tre m o s u n p a ré n te sis d e re
c h o e n la e n tr a d a , d e sa p ila re m o s h a s ta e n c o n tr a r e l c o rre s p o n d ie n te p a ré n te sis iz Postfijo: 1 2 3 5 6 * * • -
En Internet
Problemas prácticos
L as d o s a p lic a c io n e s e s tá n d is p o n ib le s e n e l d ir e c to r io C h a p t e r l l . R e c o m e n d a
11.6. U tiliz a r p a ra la c x p o n e n c ia c ió n e l o p e ra d o r A p u e d e c o n fu n d ir a lo s p ro
m o s q u e d e s c a rg u e e l p ro g ra m a d e c o m p ro b a c ió n d e sím b o lo s e q u ilib ra d o s ; p u ed e
g ra m a d o re s J a v a (p u e s e n d ic h o le n g u a je s e u tiliz a p a ra d e n o ta r e l o p e ra
a y u d a rle a d e p u ra r p ro g ra m a s e n Ja v a . L o s n o m b re s d e lo s fic h e ro s son:
d o r O -e x c lu s iv o b it a b it). R e sc rib a la c la s e E v a l u a d o r to m a n d o c o m o
J a v a A n a li /.e r .ja v a T ra d u c id o p o r A n a l i z a d o r J a v a . j a v a , c o n tie n e el o p e ra d o r d e e x p o n c n c ia c ió n • * .
p ro g ra m a d e c o m p ro b a c ió n d e sím b o lo s e q u ilib ra d o s. 11.7. E l e v a lu a d o r in fijo a c e p ta c ie rta s e x p re s io n e s ile g a le s , e n las c u a le s los
E n e l d ire c to rio 1*8113 p u e d e e n c o n tra rs e u n a v e rsió n o p e ra d o re s e s tá n m a l c o lo c a d o s. S e p id e h a c e r lo sig u ien te:
q u e in c lu y e u n g e n e ra d o r d e re fe re n c ia s c ru z a d a s {véa
a) ¿ C ó m o s e e v a lu a ría 1 2 3 + * ?
s e C a p ítu lo 12). h) ¿ C ó m o p o d e m o s d e te c ta r e s ta s ile g a lid a d e s?
E v a lu a t o r j a v a T ra d u c id o p o r E v a l u a d o r . J a v a , c o n tie n e e l p ro g ra - «•> M o d ifiq u e la c la s e E v a l u a d o r p a ra q u e las d etec te.
Prácticas de program ación
C A P I T U L O
Utilidades
! 1.8. M o d ifiq u e e l e v a lu a d o r d e e x p re s io n e s d e m o d o q u e a d m ita n ú m e ro s n e g a
11.9.
tiv o s e n la en trad a.
Im p lem en to u n e v a lu a d o r c o m p le to d e e x p re s io n e s d e J a v a . T ra te to d o s los
o p e ra d o re s d e J a v a q u e p u e d a n a c e p ta r c o n s ta n te s y te n g a n se n tid o a ritm é
12
tico.
1 1 .1 0 . Im p le m e n te un e v a lu a d o r d e e x p re s io n e s J a v a q u e in c lu y a v a ria b le s . S u
p o n g a q u e e x is te n c o m o m u c h o 27 v a ria b le s , e s d e c ir, d e la a a l a z . y que
se p u e d e a s ig n a r u n v a lo r a u n a v a ria b le c o n e l o p e ra d o r = d e m ín im a p re
c e d e n c ia (c o m o e n Java).
1 1 .1 1 . E sc rib a un p ro g ra m a q u e le a u n a e x p re s ió n ín flja y g e n e re u n a e x p re sió n
postfija.
1 1 .1 2 . E sc rib a un p ro g ra m a q u e le a u n a e x p re s ió n p o stfija y g e n e re u n a e x p re s ió n
infija.
1 1 .1 3 . D iseñ e u n ap p let q u e im p le m e n te u n a c a lc u la d o ra q u e u tilic e e l te c la d o p a E n e s te c a p ítu lo se d is c u te n d o s u s o s d e las e s tru c tu r a s d e d a to s e n e l m arco
ra la e n tra d a . d e la s d e n o m in a d a s u tilid a d es', la c o m p r e s ió n d e d a to s y la g e n e r a c ió n de
11.14. E sc rib a u n a p p le t q u e ilu stre c ó m o la s d o s p ila s v a n c a m b ia n d o d u ra n te la r e f e r e n c ia s c ru z a d a s . L a c o m p r e s ió n d e d a to s e s u n a té c n ic a m u y im p o r
e je c u c ió n d e l e v a lu a d o r d e e x p re s io n e s infijos. ta n te e n c o m p u ta c ió n . S e e m p le a p a ra re d u c ir e l ta m a ñ o d e lo s fic h e ro s g u a r d a
11.15. E scrib a u n a a p lic a c ió n J a v a q u e p ro p o rc io n e u n a G U I c o n e l p ro g ra m a de d o s e n d is c o ( a u m e n ta n d o d e e s ta fo rm a su c a p a c id a d ) y p a ra a u m e n ta r la ta s a de
c o m p ro b a c ió n d e sím b o lo s d e se q u ilib ra d o s. U tilic e u n a c a ja d e d iá lo g o de e f e c tiv id a d e n la tr a n s m is ió n d e d a to s m e d ia n te m ó d e m s (a l tra n s m itirs e m e n o s
fic h e ro s, y c o lo q u e la s a lid a e n u n á re a d e te x to . d a to s re p e lid o s ) . E n la a c tu a lid a d , p r á c tic a m e n te to d o s lo s m ó d e m s re a liz a n a l
g ú n tip o d e c o m p r e s ió n d e d a to s . L a s ta b la s d e re f e re n c ia s c r u z a d a s c o n s titu y e n
u n a té c n ic a d e b ú sq u e d a y o rd e n a c ió n q u e s e u sa . p o r e je m p lo , p a ra h a c e r e l ín d i
Bibliografía c e d e un libro.
E n e s te c a p ítu lo v erem os:
E l a lg o ritm o d e a n á lis is d e e x p re s io n e s c o n p re c e d e n c ia d e o p e ra d o re s u tiliz a d o
• L a e x p o sic ió n d e u n a lg o ritm o d e co m p re sió n d e d a to s d e n o m in a d o a lg o ritm o
p a ra c o n v e rtir u n a e x p re s ió n in fija e n u n a p o stfija fu e d e s c r ito p o r p rim e ra v e z e n
d e H u ffm a n , y u n a d e sc rip c ió n d e c ó m o p u e d e im p le m e n ta rse d ic h o a lg o ritm o
| 3 |. I I | y |2 | so n d o s b u e n o s libro*, so b re la c o n s tru c c ió n d e c o m p ila d o re s.
(s u im p le m e n ta c ió n c o m p le ta q u e d a fuera d e lo s o b je tiv o s del texto).
1. A . V . A b o . R S e th i. > J . D. U llm a n , C o m p ilc r D csig n : P rin c ip ia s, T tc h n i- • U n a im p le m e n ta c ió n d e u n p ro g ra m a d e g e n e ra c ió n d e re fe re n c ia s cru z a d a s
i/lie s, a n d T o o ls. A d d iso n -W e sle y . R e a d in g . M a s s. (1 9 8 6 ). q u e e n u m e ra , d e fo rm a o rd e n a d a , to d o s lo s id e n tific a d o re s q u e a p a re c e n en
2. C . N . E isc h c r y R J. L c B Ia n c . C r a ftin g a C u m p l ía w iih C . B enjum in u n p ro g ra m a Ja v a , in d ic a n d o lo s n ú m e ro s d e lín e a d o n d e a p a re c e c a d a uno.
C u m m in g s. R e d w o o d C ity . C a lif. (1 9 9 1 ).
3. R . W . F lo y d . -S y n ta c tic A n a ly s i\ a n d O p e ra to r P re c e d e n c e » . J o u r n a l o f
th e A C M 1 0 :3 (1 9 6 3 ). 3 1 6 -3 3 3 .
12.1 Com presión d e ficheros
E l c o n ju n to d e c a ra c te re s A S C II e s tá fo rm a d o p o r u n o s 100 c a ra c te re s im p rim í- un
b les. P a ra d is tin g u ir in te rn a m e n te e sto s c a ra c te re s se n e c e s ita n [ log 1 0 0 1 = 7 b its . «*
S ie te b its p e rm ite n la re p re se n ta c ió n d e 128 c a ra c te re s , d e m o d o q u e e l c o n ju n to ^
d e c a ra c te re s A S C II c o n tie n e a d e m á s a lg u n o s c a ra c te re s n o im p rim ib le s. S e añade
u n o c ta v o b u p a ra p o d e r re a liz a r tests d e p a rid a d . C e n tré m o n o s , n o o b s ta n te , e n el
h e c h o d e q u e si e l c a rd in a l d e u n c o n ju n to d e c a ra c te re s e s C . entonce*, se n e c e si
ta n [ lo g C l b its p a ra u n a c o d if ic a c ió n d e lo n g itu d fija e stá n d a r.
S u p o n g a m o s q u e te n e m o s u n fic h e ro q u e c o n tie n e s ó lo c a ra c te re s a . e. i. s, t.
a d e m á s d e e s p a c io s e n b la n c o ( s p ) y c a ra c te re s d e n u e v a lín e a (n /l. S u p o n g a m o s
q u e la fre c u e n c ia d e c a d a c a rá c te r e s 10. 15. 12. 3. 4 . 13 y I . re s p e c tiv a m e n te . C o
m o se m u e s tra e n la ta b la d e la F ig u ra 1 2 .1 . e s te fic h e ro o c u p a ría 174 b its , y a que
c o n tie n e 58 c a ra c te re s y e n e s te m a rc o c ad a c a rá c te r n e c e s ita ría só lo 3 b its p ara
se r re n re se n ia d n
C ará cter C ódigo Frecu en cia Bits totales
a 000 10 30
e 001 15 45
l 010 12 36
s 011 3 9
t 100 4 12
sp 101 13 39 Figura 12.2 R ep resentación m eó a n te un á rb o l á e la c o d ifica ció n onginal.
ni 110 i 3
Total 174
En e s te m o m e n to te n e m o s se is á rb o le s, y d e n u e \ o s e s e le c c io n a n lo s d o s de
m e n o r p e so : 7 I > /. S e m e z c la n e n un n u e v o á rb o l, c o n r a íz 7 2 y p e s o 8. E sto se
m u e stra e n la F ig u ra 12.8. E l te r c e r p a s o m e z c la T 2 y a . c re a n d o 7 3 . c o n p eso
Figuro 12.4 Árbol q u e g e n e ra e l c ó d ig o óptim o sin prefijos. 10 + 8 = 18. L a F ig u ra 12 9 m u e s tra e l re s u lta d o d e e s ta o p e ra c ió n .
a 001 10 30 ít T rrf c íJ
e 01 15 30
l 10 12 24
Figura 12.9 El algoritm o d e Huffm an tras la te rce ra m ezcla
s coooo 3 15
t 0001 4 16
5P 11 13 26
ni 00001 1 5 D e sp u é s d e h a b e r c o m p le ta d o la te r c e ra m e z c la , lo s d o s á rb o le s d e m e n o r peso
so n lo s á rb o le s c o n un ú n ic o n o d o c o rre s p o n d ie n te s a lo s c a ra c te re s i y b la n c o . La
Total 146 F ig u ra 1 2 .1 0 m u estra c ó m o d ic h o s á rb o le s se c o m b in a n e n u n o n u e v o , con raíz 7 4 .
E l q u in to p a s o c o n siste e n m e z c la r lo s a rb o le s c o n raíz e y T 3 . y a q u e é sto s so n a h o
Figura 12.5 C ó d ig o sin prefijos óptim o
ra lo s d e m e n o r p e so . F.1 re s u lta d o d e e s te p a s o se m u e s tra e n la F ig u ra 1 2 .1 1.
U n e je m p lo ilu stra rá e l fu n c io n a m ie n to d e l a lg o ritm o . L a F ig u ra 12.6 m u e stra
e l b o s q u e d e p a rtid a ; e l p e s o d e c a d a á rb o l se in d ic a c o n un n ú m e ro d e ta m a ñ o
p e q u e ñ o a l la d o d e la raíz S e m e z c la n lo s d o s á rb o le s d e m e n o r p e so , p o r m ed io
d e la n u e v a raíz T í . p a ra a s i g e n e ra r e l b o sq u e d e la F ig u ra 12.7. H e m o s h e c h o d e
fo rm a a rb itra ria q u e s s e a e l h ijo iz q u ie rd o d e l n u e v o á rb o l, p e ro la e le c c ió n c o n
tra ria se ría p e rfe c ta m e n te v á lid a . El p e s o to ta l d e l n u e v o á rb o l e s la s u m a d e los
p e so s d e lo s á rb o le s q u e lo g e n e ra n , e s to e s 4.
O 1' ( 3 ©
Figura 12.10 El algoritm o d o Huffm on tras la cu a rta m ezcla
Flaura 12 6 Cnnfini irn rlán m lrín! rl*»4 nlnrvrtmr» ria Mi iH m or
C aró cter Peso Podre Tipo d e hijo
0 a 10 9 1
1 e 15 11 1
2 12 10 0
3 s 3 7 0
4 1 4 8 1
Figura 12.11 El algoritm o d e Huffm an tras la quinta m ezcla.
5 5D 13 10 1
8 T? 8 0 0
0 T3 18 11 0
10 T4 25 12 1
11 T5 33 12 0
1O
•X T6 58 0
--------------
Figuro 12.13 fo b la d e co d ltlca cto n (tos núm eros d e to izquierda son los indlces del
vector).
M ás la rd e o m á s te m p ra n o , c u a n d o q u e ra m o s u tiliz a r su in fo rm a c ió n , n e c e s ita re
12.1.3 La fase d e codificación m os d e sc o m p rim ir u n fic h e ro c o m p rim id o . P a ra h a c e rlo , d e b e m o s in c lu ir c ie rta
in fo rm a c ió n e x tra e n e l fic h e ro c o m p rim id o . O b v ia m e n te , d e s e a m o s in c lu ir tan
U n a vez. q u e e l á rb o l h a sid o c o n s tru id o , d e b e m o s d e c id ir e l c ó d ig o d e c a d a c a r á c p o c a in fo rm a c ió n c o m o s e a p o sib le S u p o n g a m o s q u e e s ta m o s e m p le a n d o e l c o n
ter. E s to p u e d e h a c e rs e si c a d a n o d o d e l á rb o l tie n e in fo rm a c ió n a c e rc a d e su p a ju n to d e c a ra c te re s A S C II.
d re . e in d ic a si e s su h ijo d e re c h o o iz q u ie rd o . S i te n e m o s C c a ra c te re s , e n to n c e s el U n a p o s ib ilid a d e s a lm a c e n a r la fre c u e n c ia d e c a d a c a rá c te r. E s to re q u ie re 128
á rb o l tie n e 2 C - I n o d o s. E n e s ta fa se p o d e m o s e m p le a r u n v e c to r c o n u n a e n tr a e n te ro s. S e g u ra m e n te s e rá s u fic ie n te h a c e rlo c o n e n te ro s 2 4 -b it. e s d e c ir, e n te ro s
d a p o r c a d a n o d o . D ich as e n tr a d a s e s tá n c o m p u e s ta s p o r e l p e s o , e l p a d re y ia in 3 -b y te (p ro b a b le m e n te , lo s e n te ro s 16 -b it n o b a s te n y a q u e e s p o sib le , si e l fich ero
fo rm a c ió n d e si e l n o d o e s h ijo d e re c h o o iz q u ierd o . l*n g ra n d e , q u e a lg ú n c a rá c te r a p a re z c a m a s d e 6 5 .5 3 5 veces». E n to ta l se n ec e sita n
L a ta b la d e c o d ific a c ió n p a ra n u e s tro á rb o l d e H u ffm a n s e m u e s tra e n la F ig u 3 8 4 b y te s p ara e l a lm a c e n a m ie n to d e l fichero,
ra 12.13. C a d a c a rá c te r n o e s tá a lm a c e n a d o e n e l v e c to r sin o q u e s e e m p le a c o m o U n a a lte r n a tiv a e s a lm a c e n a r la in fo rm a c ió n d e l tip o d e h ijo y e l p a d re d e
ín d ice d e la ta b la (a s í a ' in d e x a la p o s ic ió n 9 7 . q u e e s su c ó d ig o A S C II. " d ‘ in- c a d a n o d o . C o m o c a d a p a d re e s u n n o d o c o m p le ta m e n te n u e v o , su v a lo r c> un
d e x a la p o sic ió n 9 8 . y a s i su c e s iv a m e n te ). P o r e je m p lo , e l p a d re d e n i e s / I y n i n ú m e r o e n tr e 128 y 2 5 4 . C o m o c o n s e c u e n c ia , n e c e s ita m o s 7 b u s p a ra a lm a c e
e s su h ijo d e re c h o . P o d e m o s e s c r ib ir e l c ó d ig o d e n i g e n e ra n d o re c u rsiv a m e n te el n a rlo . D e h e c h o , p o d e m o s u sa r u n c a rá c te r d e 8 b its: s u m a n d o 128 a l v a lo r re
c ó d ig o d e 71 y lu e g o e l tip o d e h ijo q u e e s. N ó te se q u e 7 6 tie n e a 0 c o m o p ad re. p re s e n ta d o p o r lo s 7 b u s m e n o re s o b te n d r e m o s la p o s ic ió n d e l p a d re ( l a raíz
E sto n o s in d ic a c u á n d o fin a liz a r la re c u rs ió n . C o m o e l ra n g o d e los c ó d ig o s A SC II p u e d e u s a r la p o s ic ió n 2 5 5 c o m o su p a d re ). E s to d e ja lib re e l o c ta v o bit (e s
s e e x tie n d e d e s d e 0 h a s ta 127. e l v e c to r te n d r á d e s d e la c a s illa 0 h a s ta la 2 5 4 . p ara d e c ir, e l m á s s ig n if ic a tiv o ) p a ra re p r e s e n ta r e l tip o d e s u h ijo . C o m o c o n s e c u e n
p o d e r re p re se n ta r e l h e c h o d e q u e . a d e m á s d e la s h o ja s , s e n e c e s ita n , a l o su m o . c ia . se n e c e s ita n 2 5 5 b y te s p a ra a lm a c e n a r la in f o rm a c ió n a u x ilia r d e la c tn lih -
C - I sím b o lo s in tern o s. c a c ió n .
12.1.5 C o n sid e ra cio n e s p rá c tica s n o se e n c u e n tra e n la lisia, s e c re a u n n u e v o o b je to L d N o d o c o n e l id e n tific a d o r y el
n ú m e ro d e lín e a , y se in s e rta e n la lista e n la z a d a . D e sp u é s d e q u e la e n tra d a c o m
A n ic s d e in ic ia r la c o m p re s ió n d e d a to s , s e n e c e sita c o n ta b iliz a r la fre c u e n c ia de p le ta h a s id o le íd a, p o d e m o s re c o rre r la lista e n la z a d a y m o stra r su c o n te n id o . S in
c a d a c a rá c te r S i e l fic h e ro e s lo su fic ie n te m e n te p e q u e ñ o p a ra p o d e r s e r a lm u ce e m b a rg o , u n a lista e n la z a d a o rd e n a d a tiene u n c o m p o r ta m ie n to a s in ló tic o p o b re,
n a d o e n la m e m o ria p rin c ip a l, p o d e m o s le e r e l fic h e ro v o lc á n d o lo e n u n v ecto r, p o r lo q u e e n su lu g a r e m p le a re m o s u n á rb o l b in a rio d e b ú sq u e d a y h a re m o s un
c a lc u la r las fre c u e n c ia s d e los c a ra c te re s y a p lic a r e l a lg o ritm o P e ro , ¿ q u é su ce d e re c o rrid o e n o rd e n s im é tric o p a ra o b te n e r la s a lid a fin al.
si e s d e m a s ia d o g ra n d e ? C a d a o b je to : d N o d < a lm a c e n a u n id e n tific a d o r > lo s n ú m e ro s d e lín e a e n las
E s o b \ io q u e n o d e s e a m o s le e r e l fic h e ro d o s v e c es; la F. S a tra v é s d e d is c o es q u e a p a re c e F l id e n tific a d o r s e re p re se n ta m e d ia n te un S t r i n g L o s n ú m e ro s de
e x tre m a d a m e n te le n ta U n a p o s ib ilid a d e s d iv id ir e l fic h e ro e n b lo q u e s q u e p u ed an lin ea p u e d e n re p re se n ta rse c o n u n a c o la d e c u te ro s. E s to re s u lta a d e c u a rlo y a q u e
s e r a lm a c e n a d o s e n la m e m o ria p rin c ip a l, y c o m p rim ir c a d a u n o d e e llo s p o r s e p a c u a n d o m o s tra m o s lo s n ú m e ro s d e lín ea, a p a re c e r á n e n e l m is m o o rd e n e n e l q u e
rad o . M u c h o s c o m p u ta d o re s m o d e rn a s p u e d e n a lm a c e n a r m u c h o s m e g a b y te s. asi fu ero n re c o rrid a s , e s to e s. e n o rd e n c re c ie n te . A s í c a d a i d N o d o a lm a c e n a u n a re
q u e n o p a re c e e x c e s iv o te n e r q u e a lm a c e n a r re p e tid a s ta b la s d e c ó d ig o s c o n 2 5 5 fe re n c ia a u n a c o la a la q u e se le a s ig n a m e m o ria c u a n d o se d e c la ra e l i d N o d o . L a
b y te v im p le m e n ta c ió n se d e s c rib e e n la s ig u ie n te su b s e c c io n
U na a lte rn a tiv a e s a su m ir q u e e l fic h e ro d e e n tra d a e s -típ ic o » . P o r e je m p lo ,
es b ie n c o n o c id a la d is trib u c ió n d e lo s c a ra c te re s e n lo s p ro g ra m a s im p le m e n ta d o s
e n J a v a U na v e n ta ja d e e s te m é to d o e s q u e n o n e c e s ita m o s a lm a c e n a r e n c a d a f i 12.2.2 Im plem entación en Ja v a
chen» la ta b la d e c ó d ig o s . E s to e s particu lar•m en te a tra c tiv o c u a n d o lo s fic h e ro s .1
a lm a c e n a r n o so n m u y g ra n d e s . O tra s m u c h a s p o sib ilid a d e s h a n s id o e x p lo ra d a s, L a F ig u ra 12.14 m u e s tra la c la s e i d N o d o tq u e s ó l o c o n tie n e c o m p o n e n te s de
al ig u a l q u e o tr o s e s q u e m a s d e c o m p re s ió n m a s c o m p le jo s q u e fu n c io n a n m e jo r a c c e s o a m is to s o ). U n I d N o d o c o n s is te e n u n a c a d e n a d e c a ra c te re s \ u n a r e f e
q u e la c o d ific a c ió n d e H u ffm a n . V éa se la s re fe re n c ia s b ib lio g rá fic a s p a ra u n a in re n c ia a u n a c o la d e e n te r o s . El c a m p o S t r i n g lla m a d o p a l a b r a se d e c la ra en
fo rm a c ió n m á s co m p leta, la lín e a ó ; 1 i n e a s . q u e e s la re f e re n c ia a la c o la d e e n te r o s , se d e c la ra e n la li-
1 /• •
12.2 G en erad o r de referencias cruzadas 2 * O b j e t o b á o i c o . q u e s e a l m a c e n a r á en u n á r b o l do bú sq u e d a .
3 • para el generador de r e fe re n c ia s cruzadas.
4 •I m p l e m e n t a e l i n t e r f a z C o m p a r a b l e . í r p l e n e n t a n d o
E n e s ta s e c c ió n d is e rta re m o s u n p ro g ra m a q u e e x a m in a un c ó d ig o J a v a y m u e stra 5 • compara y manarQue.
to d o s lo s identiP icado res d e l m ism o , ju n to a lo s n ú m e ro s d e lín ea e n los q u e a p a re 6 •
7 ciasn IdNodo im p le m e n tr Com parable
c e n A d e m á s, lo s id e n tific a d o re s s e m u e s tra n o rd e n a d o s a lfa b é tic a m e n te . E s to se
S {
c o n o c e c o m o v e n e ra c ió n d e r e fe r e n c ia s c ru z a d a s. U n a a p lic a c ió n e n e l te rre n o de 9 S trin g palabra; Un i d e n t i t r e a d o r
la c o m p ila c ió n e s e n u m e ra !, p a ra c a d a fu n c ió n , lo s n o m b re s d e las fu n c io n e s q u e 10 Cola lir.uaa; L in e a s donde a p a re c e
in v o c a d ire c ta m e n te . 11
S in e m b a rg o , é s te e s u n p ro b le m a g e n e ra l q u e a p a re c e e n m u c h o s o tro s c o n 12 H C onstructor
13 IdKodol S tr ir .g l a P a i a t r a , int lm eaA ctual )
te x to s. P o r e je m p lo , g e n e ra liz a la c re a c ió n d e l ín d ic e d e un libro. O tro u so . la re \ 1-
14
sió n o rto g rá fic a , se d e sc rib e e n e l E je rc ic io 12.1b. U n re v iso r o rto g rá fic o d e te c ta 15 p a i a b t a = new S t r i n g ( l a b a i a b r a >;
la s p a la b ra s m a l e s c rita s e n u n d o c u m e n to , q u e se m u e s tra n ju n to a lo s n ú m e ro s d e 16 l i n e a s = new c o i a I l ;
lin e a s d o n d e a p a re c e n . E s to e v ita im p rim ir v a ria s v e c e s la m is m a p a l a lira in c o 17 ] i r.e a .i . i n s e r t a r ( new I n t e g e r l l i n o a A c r u a l l I:
rre c ta y n o s in d ic a d ó n d e se h a n p ro d u c id o lo s e rro re s. 18
19
20 / t Métodos de o rd en ació n
21 p u b l i c b o o l e a n ¡r enor Cr' i e I C o m p a r a b l e Ld e r l
12.2.1 Ideas básicas 22
23 r e t u r n p a l a c r a .ccrrpareTo 1 1 lld'iodoi idei ) .palabra 1 < >
24
C a d a id e n tific u d o r y e l n u m e ro d e lin e a d o n d e a p a re c e s e a lm a c e n a rá n e n u n o b je 25
to d e l tip o i d N o d o . M a n te n d re m o s u n a c o le c c ió n o rd e n a d a d e id N i t o s C u a n d o 26 publir ;nr com para< Comparable lder I
e l fic h e ro fu e n te s e h a y a le íd o , n o s d e s p la z a re m o s a tra v é s d e la c o le c c ió n , m o s 27 (
tr a n d o lo s id e n tific u d o rc s y su s n ú m e ro s d e lín e a s c o rre sp o n d ie n te s. 28 r e t u r n p a la b r a .c o o p a x e T o < ( (TdN odol ld e r » .p a la b r a I ;
29
U n a p o sib ilid a d e s e m p le a r u n a lista e n la z a d a d e o b je to s i d * í o d o . C u a n d o se Ice
30
un id e n tific a d o r. d e b e m o s c o m p ro b a r si y a e s tá e n la lista Si e s así. a ñ a d im o s la lí
n e a a c tu a l al o b je to i d í J o d o rc fc re n c ia d o m e d ia n te u n a lla m a d a a e r . c . n t r a r . Si Figura 12.14 C lase Id N o d c
n e a 10. 1:1 c o n s t r u c t o r i m p l c m e n l a d o e n l a s l i n c a s I.» a IX. i m c i a l i / a u n I d N o d o
1.a c la s e d e la F ig u ra 12.15 e s sim ilar a la m o s tra d a e n la F ig u ra 11 2 . q u e e ra
c o n u n S t r i n g y u n n ú m e r o t i c l í n e a . E l c o m p o n e n t e S t r i n g s e i n k i a l i z a e n la
p a rle d e u n p ro g ra m a d e e q u ilib ra d o d e sím b o lo s (el c ó d ig o e n In tern et e s lina v e r
f o rm a habitual l i n o a » e s t n i c i a l i / u d o c r e a n d o u n a c o l a e n la q u e se- i nser t a
sió n e n la q u e s e m e /.c la n e s la s d o s c la s e s e n u n a sola» M u c h o s d e lo s m é to d o s ya
í i n e a A c t u a l . L l r e s t o t ic la c l a s e I d N o d o i m p l e m e n t a e l i n i e r t a / C o m p a r a b l e .
h a n s id o e x p lic a d o s , p o r lo q u e n o re p e lim o s sus im p le m e n ta c io n e s. N o se e m p le a
h e re n c ia . I j p o sib ilid a d d e c re a r u n a c la s e a b stra c ta y d o s c la s e s d o m a d a s s e d e ja
1 // I n t e r faz Anal i z a d o » J a v a : genera roSorenc:ac cruzadas c o m o e je rc ic io a l le c to r ( E je r c ic io 12.13».
I j s n u e v a s rutinas d e co m p ilació n tratan el re c o n o cim ien to d e identificadores Un u
3 / / CCWSTPDCCIÓH: cor . u n o b j e t o B u f f e r e d P e a d e i la lín ea 31. se d ecla ra u n o b je to Id N o d o . É ste a lm a c e n a rá e l id cn tilícad o r q u e esta c<
4 H ................................................ OPERACIONES PÚ B LIC A S ................................................
S 2 S
sien d o p rtv e sa d o . E sto e> debid»» a q u e c o m o m an ejam o s un árb o l d e o b je to s Id N od o.
5 // v oid generaF.eferenciaC ruzada< | - - > E l nombre lo d i c e todo
n ecesitam o s un Id N o d o c o m o p arám etro d e las ra tin a s b u s c a r c i n s e r t a r .
• 11 ...............................................................ERRORES..................................................................
7 '/ Comprobación de e r r o r e s s o b r e cocaencarios y C c o il l a s U n id e n itfic a d o r d e J a v a e s u n a s e c u e n c ia d e c a ra c te re s u lfu n u m é h c o s y g u io
1
B n e s. c o n la re s tric c ió n d e q u e e l p n m e r c a rá c te r n o p u e d e se r u n d íg ito . m tin a
9 im port j a v a .l o . * ; d e la F ig u ra 12.16 c o m p r u e b a si e l c a rá c te r d a d o p u e d e fo rm a r p a rte d e u n id en li-
10 im port E s tr u c tu r a a D a t o s .•;
fic a d o r. 1*11 m é to d o t o m a S t r in q »k* la F ig u ra 12.17 a s u m e q u e e l p rim e r c a rá c te r
11 import E xcepclonoii. • ;
12 inporr Soporte.*; d e u n id c n lific a d o r y a h a s id o le íd o , y a lm a c e n a d o e n e l a tr ib u lo c a r . E sta rutina
13 lee re p e tid u m e n lc c a ra c te re s h a s ta q u e s e e n c u e n tra u n o q u e n o p u e d e fo rm a r p arte
14 /• •
d e lo s id e n tilic a d o re s . Un e s c m o m e n to , v o lv e m o s al c a rá c te r a n te rio r y d e s o í v e
15 • C lase que genera referencias c ru z a d a s p a ra programas Jav a. m o s un S t r i n g 2.
16 •/
17 c l a s s Anal iz a d o rJa v a I-.I m é to d o t o m a S i g u i e n t e l d . m o s tra d o e n la F ig u ra 12. IX. e s s im ila r a la
18 < r a tin a d e la F ig u ra 1 1.7 I .a d ife re n c ia e s q u e a q u í, e n la lín e a 15. si s e d e te c ta el
19 p u b l i c Anal i ¿ a d o r J a v a ( PushbackReader cadenaE ntrada > p n m e r c a rá c te r d e u n id c n lific a d o r. re lle n a m o s a c t u a l Id N o d o .p a l a c r a c o n d i
20
c h o id c n lific a d o r.
21 e r r o r e s ; 0; U n a v e / e s c r ita s to d a s la s ra tin a s a u x ilia re s, p in te m o s im p lem en tar e l m é to d o S»
22 c a r » •\0*;
p rin c ip a l. g e n e r a R e f e r o n c i a C r u z a d a . q u e s e m u e s tra e n la F ig u ra 12.1*7 E n et
23 1IneaA ctual ■ i;
24 e n tr a d a • cader.aEr.trada; la s lín e a s 6 y 7 se d e lin e u n á rb o l b in a r io d e b ú sq u e d a d e o b je to s Id N o d o . Un las
25 a c t u a l I d N o d o * new I d N o d o t **. 1 ); lín e a s d e s d e la 10 h a s ta la 2X se p ro c e s a e l fic h e ro fu e n te . Un las lín e a s 14 y 15. se
26
e je c u ta b u s c a r p a ra c a d a id e n tific a d o r. c o n e l lin d e sa b e r si y a h a sid o e n c o n tra
27
d o a n te s S i b u 8 c . t r tie n e é x ito , e n las lín e a s 16 y 17 in s e rta m o s la lín e a a c tu a l e n
28 p u b lic void generaPeferenelaCruzadat l
29 < / • F ig u r a 12.19 * 1 la c o la c o rre sp o n d ie n te . U n c a s o c o n tra rio , se tr a ta «U- u n n u e v o id e n tific a d o r. q u e
30 a ñ a d im o s e n e l á rb o l d e b ú sq u e d a , e n la s lín e a s 2 1 a 26.
31 prívate IdNodo a c t u a l I d N o d o i R e c u é rd e se q u e e l m é to d o i n s e r t a r n e c e s ita u n o b je to Id N o d o . P o r ta n to . Si
32
lla m a n d o al c o n stru c to r d e la F ig u ra 12.14 c re a m o s u n n u e v o n o d o , sin n o m b re ®l
33 pr iv a te a t a t i c int esldChart ch )
C o lo c a re m o s e n e l á rb o l u n a re fe re n c ia a d ic h o Id N o d o . E s to sig n ific a q u e e n el
34 { /• F ig u r a 12.16 • 1
35 p»ivate S trin g tom aStringí ) Id N o d o in s e rta d o e n e l á rb o l, s u c a m p o 1 i n c o a re fe re n c ia a la c o la . ,r
36 { /• Figura 1 2 . 1 7 • ] c
37 prívate int tom aSigulenteId( ) 1 /• • <1
2® { / • F ig u ra 12.18 * )
2 • Devuelve t rué s i c a r puede to re a r p a r t e de un ident i f icador Java
39
3 •/
40 / / los s i g u i e n t e s so n l o s mismos q u e l o s d e l a P i g u r a 11.2 4 p r ív a te boolean esldC ari char car »
41 p r í v a t e P u s h b a c k R e a d e r e n t r a d a : / / La c a d e n a e n t r a d a 5 !
« p rív ate char car; //C a rá c te r actual 6 r e t u r n c a r *> | | C h a r a c le r . ioUpperCane< car )
43 p r ív a te int lineaA ctual; / /L i n e a actual 7 || C h a r a c te r . ísLowerCasel car )
44 p r ív a te int e rro re a ; / / S u r e r o d e e r r o r e s e n c o r . t : adoa 8 | | C haracter. IsD igitI car »
45 p r ív a te boolean sig u ie n te C a r( l 9 )
46 p riv a re void devolverC ar! I
47 p r l v a t r v oid a a l t a r C o m e n t a n o i i n t comienzo ) Fi gu r o 12. 16 R utina p a ra com prooar si un cárd ete» p u o d e form ar p arte d e un
48 p r i v a t e v o id saltarCaderia! c h a r tipoCadena > Idon tifie odor
49 p r i v a r »- v o i d i r r o c e n a r B a r r a l i
50 |
22
23 l o s l d e n t i f i c a d o r o s . I n s e r t a r ( new IdNodo
■Devuelve e l s i g u i e n t e l d e n t i t i c a d o r . s a l tá n d o s e lo s c o a e n t a r l o s . 24 i a c tu a l I d N o d o .p a l a b r a . l in e a A e t u a l l
• l a s c o n s t a n t e s S t r i n g y l a s c o n s t a n t e s de t i p o c a r á c t e r . 25
• C o l o c a e l i don*, i ! i c a d o r « n a r r u a l I d N o d c . p a l a b r a y d e v u e l v e t a l u e 26 c a t c h ( E lom ontoD upl ic a d o ex I
* cuando s e a lc a n z a e l í i n a l de l a e n tra d a . 27
28
p r ív a te boolean tom aS tguienteim ¡ 29 / / I t e r a c i ó n a lo l a r g o d e l A rb o l y s a l i d a
30 / / d e lo s i d e n t i f i c a d o r e s y » u s n ú m ero s d e l i n e a .
w h ile l s l g u i e n t e C a r ( ) l 31 t r y
32
1fI c a r »• ‘ / 1 I 33 OrdenSlraBuu i t r = new O rdenS lm H u» < l o a l d e n t 1fica d o r e o ):
34 f o r I i t r .p r im e ro l 1; i t r .esV a 1i d o < ); i t r . avar.iai I
p ro c e sa rB a :i a ( ):
35
e i s e i f i c a r * • ’ \ ‘ | | c a r == ” * i
36 IdNodo o i r o N o d o ■ C d N o d o l i t r . rocuperar I
s a l t a i C a d e n a ( c a r »; 37
e l s e i £ 1 í C h a r a c t e r . í s D i g l t i c a r > tfc 38 / / M u e u lia e l i d e n t i í ic a d o r y la p r im e ra l i n e a do n d e a p a re e
ealdCar I car 1 l 39 S y a t M . o u t . p r i n t ( e s te N o d o . p a l a b r a * *: " •
40 I I n te g e r I e s te N o d o .1 m e a s .q u ir a r ? r im © r o <
actualIdN odo.pal abra - tom aStringl l; 41
return true; 42 t) Im prim e e l r e s t o d e l i n e a s d o n d e a p a re e ©
43 whil«H ! © s t e N o d o . i i n « a 6 . e s V a c i a | í l
44
22 return false; /> F i n a l d e fichero 45 e s te N o d o . 1 i n e a s . q u i t a r ? r i r
23 ] 46
47
F igura 12 18 R ufina p e r a a s ig n a r a a c t u a l I d N o d o . p a l a b r a ol s ig ts e n te <1ontifi 48
cooor 49 c a t c h ( E le m e n to K o E n c o n tra d o e )
50 c a tc h ! D e s b o rd a m ie n to e > ( ) / / N o p u e d e s u c e d e r
51
l ’n a v e / q u e h e m o s c o n s tr u id o e l á rb o l d e b ú s q u e d a , s ó lo le ñ e m o s q u e re c o
Figura 12.19 Algoritm o pclru pal p a ra g enerar referencias cru z ad as1
rre rlo e n o rd e n s im é tr ic o P a ra h a c e rlo , u s a m o s la v lu.se 1 d e n s i ir. d e s c r ita e n la
S e c c ió n 17 4 .2 . E l ite n id o r vim iu lo s n o d o s d e l á rb o l b in a r io e n e l o rd e n a d e c u a
d o . S e e m p le a d e fo rm a a n á lo g a a L U t a i t e r E l llo ra d o r se d e c la r a e n la lin c a im p rim im o s re ilc ra d u m e n le su s e le m e n to s g ra c ia s a l b u c le d e las lín e a s 4 3 a 4 5 .
3 3 . m ie n tra s q u e e n la lín e a M se e m p ic a n lo s m é to d o s e s tá n d a r d e ite ra c ió n d e la 1.a in s tru c c ió n d e la lín e a 4 6 im p rim e u n a lín e a e n b la n c o . N o im p le m c n ta m o s un
c la s e O r d e n S i m . E n la lin c a 36. o s t © N o d o e s u n a re fe re n c ia a l o b je to I d N o d o p ro g ra m a m a m . y a q u e e s p rá c tic a m e n te id é n tic o a l d e la F ig u ra 1 1.10
a lm a c e n a d o e n e l n o d o a c tu a l d e l á rb o l d e b ú sq u e d a E n la s lin eas 3 9 y 44). s e im p ri
m e la p a la b ra y e l p rim e r n ú m e ro d e lín e a. a la v e / q u e e s te u ltim o se saca d e la c o la ' N 4 f t 1 I j c l M O r t t o n r . ) » , * que « a r r e e cu Ul l n M3 1. cs M n u U . í b .14 I7 o. >Wn£,. Sól
lle n e m o s g u ra m i/.id o q u e la co lu n o e s tá v a c ía ). M ie n tra s q u e la c o la n o e s té v acía . en une ui u arboles N i u m » Je Itu-uu.Jj. en luí-»r <V*¿rlmlr* tunaran no iMikfUÚ»'
Resumen Ejercicios
13 Simulación
• C ó m o sim u la r u n ju e g o m o d e la d o so b re e l p r o b le m a J o se p h u s.
• C ó m o sim u la r e l c o m p o rta m ie n to d e u n b a n c o d e m ó d em s.
d irse . ( in ic ia s a e llo h e m o s p o d id o sú b e r d e e s te ju e g o ; e n e le c to . Jo s e p h u s h i / o 1 ••
tr a m p a s 1. 2 * Devuelve e l ganador del problema Jofiephus.
3 • Imp i « m e n t a c i ó n m e d i a n te u n a l l e t a e n l a z a d a .
S i M s 0. ento n ces se van e lim in a n d o lo s ju g a d o re s e n o n lc n y e l ú ltim o ju g a d o r
4
sie m p re gana. Para otro> v alo res d e M . la s c o sa s no so n tan obv ias. L a Figura 13.1 5 public static Int josephus! ir.t p e rs o n a s , in t pases l
m u e stra q u e ' i Af= 5 y M = I. e n to n c e s lo s ju g a d o re s so n e lim in ad o s e n e l sig u ien te 6 t
o rd e n : 2 . 4 . I. 5 E n e s te c a s o g a n a e l ju g a d o r 3 . L o s p a so s so n lo s sig u ie n te s: 7 L istaE niazaáalcer p = r.ew L i s t a E n l a z a r i a l t e r l
8 r.uw L l s t a E r t l a x a d a t l >
1. A l p rin c ip io la p a ta ta e s tá e n m a n o s d e l ju g a d o r n ú m e ro I. D e sp u é s d e p a 9 Construye la l is ta
sa rla u n a v e /, la tie n e e l ju g a d o r n ú m e ro 2. 10 t r y
2. E l ju g a d o r 2 e s e lim in a d o . E l ju g a d o r 3 lo m a la p a ta ta y s e la p asa a l ju g a 11 (
d o r 4. 12 íort i n t : = 1 ; i <= p e r s o n a s ; i * ‘ )
13 p . i n s e r t a : l n«W I n t o g e r i i l >;
3. El ju g a d o r 4 e s e lim in a d o . E l ju g a d o r 5 to m a la p a ta ta y s e la p a s a a l ju g a
14
d o r I. 15 c a tc iH ElementoNoEnContrado o l [ 1 / / N o puede o c u rr í:
4. E l ju g a d o r I e s e lim in a d o . El ju g a d o r 3 lo m a la p a ta ta y s e la p a sa a l ju g a- 16
d o r 5. 17 // Juega al *u«00;
5. El ju g a d o r 5 e s e lim in a d o . > p o r ta n to e l ju g a d o r 3 g a n a . 18 // O b s e rv e : p e s t á s i e m p r e e n e l ju g a d o r a n t e r i o r
19 w h ile 1 p e r s o n a B - - != i )
E n p rim e r lu g ar e sc rib ire m o s u n p ro g ra m a q u e sim u le , p a s o a p a so , e l ju e g o 20
p ara c u a le s q u ie ra v a lo re s d e V y M El tie m p o d e e je c u c ió n d e la s im u la c ió n es 21 fori int L = Os i < p a s e s : i-- >
ÍH M X t . lo c u a l e s a c e p ta b le si e l n ú m e ro d e v e c e s q u e s e p asa la p a ta ta e s p e q u e 22
23 p.avanzar! ): Avanzar
ñ o C a d a p aso lleva u n tie m p o O (M ) p o rq u e e n é l s e lle v a n a c a b o M p a se s M o s 24 if lip.estaD entrol ) )'/ Si n o s p a s a m o s r ie l ú l t i m o
tra re m o s e n to n c e s c ó m o im p le m e n ta r c a d a p a s o e n u n tie m p o (J ilo g /V). in d e p e n 25 p.prim erol l; • ju g a d o r v o l v e r n o s a ! p r i m e r .
d ie n te m e n te d e l n ú m e ro d e p a se s q u e s e re a liz a n . El tie m p o d e la s im u la c ió n es 26
e n to n c e s <HN lo g ,V j. 27
28 if l ’. p . e l im in a r S ig ( I i E l im in a e l S i g u i e n t e ju g a d o r
29
30 // eiim inarSig f a l l a s i p e s e l ú ltim o elem ento, luego
13.1.1 La solución simple 31 p . c e r o l >: ' / p a ra «1 ú l t i m o e l e m e n t o , a s i g n a a p
32 p. eiitnir-arSig < ) ; / . e l e le m e n to 0 p a ta e l i m i n a r e l 1
1.a la s e d e p a s a r la p a ta ta e n e l p ro b le m a Jo s e p h u s su g ie re q u e re p re se n te m o s los 33
ju g a d o re s m e d ia n te u n a lista ciila/.ad a. C re a m o s u n a lista e n la /a d a e n la q u e los 34
35 / Obtiene e l p rim er y ún ico jugador y devuelve e l * a*--
e le m e n to s I. 2 ,V so n in se rta d o s e n o rd e n . I n ic ia li/a m o s e n to n c e s u n iterado!
jugadorao
c o n e l p rim e r e le m e n to . C a d a p a s e d e la p a ta ta c o rre sp o n d e a u n a o p e ra c ió n
36 p . p r i m e r o ! );
a v a n z a r so b re e l itc rad o r. C u a n d o lle g a m o s a l ú ltim o ju g a d o r d e lo s q u e q u ed en 37 r e t u r n I ( I n * . e g * r ) ( p. r e c u p e r a r t > * i . i n t v a l u e l >:
38
T < M g iie r t r e l a t o c s u h m to n a l a v e r s i ó n g u c n i M m i r e v o t e n * * d i l i c r r d e l o e x p l i i 'a c i ó n f a t i ó n c u
le p u l e ,|U C r e s u e l v a lu v e r s i ó n h i s t ó r i c a Figuro 13.2 im p le m e n ta c ió n d e l p ro b le m a Josephus usand o listos enlazadas
B n la F ig u ra I 3.2. e l c ó d ig o d e la s línea* 21 a 3 3 lle v a a c u b o un p a s o d e l a lg o m e n ta c ió n d e e s ta e s tru c tu ra d e d a to s . q u e s e p ro p o rc io n a e n c a p ítu lo s p o ste rio re s,
ritm o p a sa n d o la p a ia ia (lín e a s 2 1 u 2 6 » y e lim in a n d o d e sp u é s un ju g a d o r i lín e a s 28 d e ja c o m o e je rc ic io la im p le m e n ta c ió n d e b u s c a r K e s i m o .
a 3 3 ). E s to s e re p ite h a s ta q u e e l te st d e la lín ea l ‘> n o s d ic e q u e so la m e n te q u e d a U sa m o s la c la s e A B B C o n R a n g o q u e s o p o rta la o p e ra c ió n b u s c a r K e s i m o y
un ju g a d o r B n e s e m o m e n to , o b te n e m o s e l ju g a d o r re sta n te lla m a n d o al m é to d o q u e se im p le m e n ta c o m p le ta m e n te e n la S e c c ió n 18.2. S e b a s a e n e l á rb o l b in a rio
p r i m e r o e n la lín e a 3 6 . (R e c u e rd e q u e d u ra n te la m a y o r p a ite del a lg o ritm o , el d e b ú sq u e d a o rd in a rio y p o r ta n to n o tie n e e fic ie n c ia lo g a rítm ic a e n e l c u s o p eo r
a e r a d o r se e n c u e n tra e n e l ju g a d o r a n te rio r al ac tu a l). E n la lin e a 3 7 a c c e d e m o s al sin o so la m e n te e n m e d ia . E n c o n s e c u e n c ia , n o p o d e m o s lim ita m o s a in s e n a r los
ju g a d o r y d e v o lv e m o s su n ú m e ro . e le m e n to s s e c u e n c ia lm c n te ; e s to p ro v o c a ría q u e e l á rb o l d e b ú sq u e d a e x h ib ie ra su
E s fácil v e r q u e e l tie m p o d e e je c u c ió n d e e s ta ru tin a e s ü { M N ) p o rq u e é s te es p e o r c o m p o rta m ie n to .
e x a c ta m e n te e l n ú m e ro d e p a se s q u e s e p ro d u c e n d u ra n te e l a lg o ritm o , lo c u a l es
a c e p ta b le pitra M p e q u e ñ o . S in e m b a rg o , o b s e rv e q u e e n e l c a s o e n q u e M = 0 . el 1 /* *
tie m p o d e e je c u c ió n n o e s f 7(0). s in o O I V ». y a q u e c u a n d o s e in te rp re ta u n a e x p re 2 • C o n a t r u y * r e c u r u l v a m o n t e un á r b o l p e r í a c t a m a n t a e q u i l i b r a d o
3 • e n t i e m p o 0 ( ?í l o g N ) m e d i a n t e r e p e t i d a s i n s e r c t o r . e s .
sió n O n o b a s ta c o n m u ltip lica r.
4 • En l a l l a n a d a i n i c i a l a d e b e r í a © s t a r v a c i o .
5 •/
6 p u b l i c s t a t i c v o : d c o n s t r u í r A r b o l ( ABBCo n Ra n g o a .
7 int. i n i , i n t a u p )
13.1.2 Un algoritm o m ás eficiente 8 <
9 int centro * i in? • nup ) / 2¡
10
S e p u e d e o b te n e r u n a lg o r itm o m á s e fic ie n te si u sa m o s u n a e s tru c tu ra d e d a to s q u e 11 ifi inf <= s u p )
s o p o rte e l a c c e s o a l A -étim o e le m e n to m á s p e q u e ñ o (e n tie m p o lo g a rítm ic o ). E sto 12 <
n o s p e rm ite im p le m e n ta r c a d a ro n d a d e p a s e s c o n u n a ú n ic a o p e ra c ió n . L a F ig u 13 try
14 | a . i n s e r t a r I n e w Mi E n t u r o ( c o n t r o ) ) ; ]
ra 13.1 m u e s tra p o r q u é . S u p o n g a m o s q u e q u e d a n V ju g a d o r e s _v q u e e s ta m o s ac 15 c a t c h ( E l e m e n t a D u p l i c a d o e ) ( ) / / No p u e d e s u c e d e r
tu a lm c n te e n e l ju g a d o r P e m p e z a n d o p o r el p rin c ip io . In ic ia lm e n te N e s el n ú m e 16
ro to tal d e ju g a d o r e s v / ’ e s I. D e sp u é s d e M p a se s, e s ta re m o s e n e l ju g ad o r 17 conatruirA rbol( a. I n í . cen tro - 1 i;
U M + / ') m o d V ). e x c e p to si te n e m o s q u e d e v o lv e r e l ju g a d o r 0 . e n c u y o c a s o v a 18 construirA rbol( a. c e n t r o - 1 . su p );
19 )
m o s ul ju g a d o r V . E l c á lc u lo e s a lg o re b u s c a d o , p e ro e l c o n c e p to n o lo es. 20 ¡
A p lic a n d o e s te c á lc u lo a la F ig u ra 13 .1 . v e m o s q u e c o m o M e s I . ,V e s in icial- 21
m e n te 5 . y / ’ e s in ic ia lm c n lc I . e l n u e v o v a lo r d e / ' e s 2 . T ra s la e lim in a c ió n . A’ se 22 /••
re d u c e a 4. p e r o a ú n e s ta m o s e n la p o sic ió n 2 (c o m o la p a rte I b ) d e la fig u ra su g ie 23 • Devuelve e l ganador del problema Jo sep h u s.
24 • tmpioraontaclón usando un á rb o l de búsqueda.
re ). E l sig u ie n te v a lo r d e /* c s 3 (c o m o s e m u e s tra e n la p a rte (!»)). lu e g o se e lim in a
25 •
e l te rc e r e le m e n to d e la lista v V se re d u c e a 3 . E l sig u ie n te v a lo r d e P e s 4 m o d 3. 26 public s ta tic int Josephust int personas, int pases >
e s d e c ir I, c o n lo q u e v o lv e m o s a l p rim e r ju g a d o r d e la lista (c o m o se m u e s tra en 27 ¡
la p a rte f e » . S e e lim in a e s te ju g a d o r y V p a s a a v a le r 2. P u e sto q u e 2 m o d 2 e s 0 . 28 ABBCo nR an g o a = r.ew ABBConRango t > ;
29 try
h a c e m o s q u e P v a lg a V . y p o r ta n to e l ú ltim o ju g a d o r d e la lista e s e l e lim in a d o . I.»
30 i
c u a l c o n c u e rd a c o n la p a rte (d>. T ra s la e lim in a c ió n . V e s I y h e m o s term in ad o . 31 c o n s tru irA rb o l( a. 1, p e r s o n a s I :
T o d o lo q u e n e c e sita m o s e s u n a e s tru c tu ra q u e s o p o rte d e fo rm a e fic ie n te la 32
o p e ra c ió n b u s c a r K e s i m o y un m é to d o p a ra in s e n a r s e c u e n c ia lm c n te lo s ju g a d o 33 i n t r a n g o = 1:
34 w h ile< personas > 1 )
re s e n la e s tru c tu ra d e d a to s . May v a ria s a lte rn a tiv a s p a re c id a s. T o d a s e lla s u sa n el
35 <
h e c h o d e q u e un á rb o l b in a rio d e b ú sq u e d a s o p o rta la o p e ra c ió n b u s c a r K e s i m o 36 rango a « rango * p a so s I * pernonas;
e n tie m p o m e d io lo g a rítm ic o o s i u sa m o s un á rb o l b in a rio d e b ú sq u e d a so fistic a d o 37 i f l r a n g o == 0 >
e n u n tie m p o lo g a rítm ic o e n e l c a s o p e o r. E n c o n se c u e n c ia , si s o m o s c u id a d o s o s 38 rancio = p e r s o n a s ;
39
p o d e m o s e s p e ra r u n a lg o ritm o O i M lo g ;Vj.
40 a.elim inari a .buscarK esim o( rango ) 1:
F.l m é to d o m á s s im p le c o n s is te e n in s e rta r lo s e le m e n to s s e c u e n c ia lm c n te en 41 pornonau--;
un á r b o l b in a r io d e b ú s q u e d a e f ic ie n te e n e l p e o r d e lo s c a s o s , c o m o u n á rb o l 42
ro jin e g ro , u n A A -á rb o l o u n á rb o l d e e n s a n c h a m ie n to (to d o s e s t o s á rb o le s s e e s 43
44 r e t u r n t <M lE ntero I ( a . buscarKesimo ( 1 ) > | . i n t V a l u a ( );
tu d ia n e n c a p ítu lo s p o ste rio re s). E n to n c e s c u a n d o s e a o p o rtu n o p o d e m o s lla m a r a
45
b u s c a r K e s i m o y a *>1 i n i n a r R e su lta q u e los á rb o le s d e e n sa n c h a m ie n to so n una 46c a t c h ( E x c e p tio n e )
e le c c ió n e x c e le n te p u ra e s ta a p lic a c ió n , p o rq u e la s o p e ra c io n e s b u s c a r K e s i m o e 47 { r e t u m -1 ; ) //N o puede suceder
i n s e r t a r so n in u s u a lm e n te e fic ie n te s y <>| i n ú n a r n o e s d e m a s ia d o d ifíc il de 48 )
c o d ific a r. N o o b s ta n te a q u í u sa re m o s u n a e s tru c tu ra a lte rn a tiv a , p o rq u e la im p le - Figuro 13.3 S o lu o ó n CKV lo g N) p o ra e l p ro b le m a Josephus.
H a y v a n a s o p c io n e s , u n a d e la s c u a le s c o n s is te e n in s e rta r u n a p e rm u ta c ió n In ic iu li/u rc m o s e l tie m p o d e l a s im u la c u m e n cer«> lie s E n to n c e s a v a n z a m o s
a le a to ria d e I N e n e l á rb o l d e b ú sq u e d a. O tra , c o n s is te e n c o n s tru ir un árbol e l re lo j u n tic c a d a v e z . c o m p r o b a n d o si se p r o d u c e u n e v e n to . S i se p ro d u c e ,
b in a rio d e b ú sq u e d a p e rfe c ta m e n te e q u ilib ra d o u sa n d o un m é to d o d e la c lase p ro c e s a m o s e l e v e n to («> e v e n to s ) y r e c a l a d .u n o s |«>s v a lo re s e s ta d ís tic o s . C u a n
P u e sto q u e u n m é to d o d e la c la s e te n d ría a c c e s o al m a n e jo in te rn o d e l á rb o l d e d o y a n o q u e d a n c lie n te s e n la s e c u e n c ia d e e n tr a d a y to d a s la s v e n ta n illa s e s tá n
b ú sq u e d a , se p o d ría h a c e r e n tie m p o lin eal. Se d e ja e sc rib ir e s ta ra tin a c o m o el lib re s , la s im u la c ió n h a te r m in a d o . E sta e s u n a s im u la c ió n d ir ig id a \ u n tie m p o s
E je rc ic io 1 8 .1 9 . u n a vez s e h a y a n e s tu d ia d o lo s á rb o le s. d is c re to s .
E l m é to d o q u e u tiliz a m o s c o n s is te e n e s c r ib ir u n a ru tin a q u e in s e rte e le m e n to s El p ro b le m a d e e s ta e s tr a te g ia d e s im u la c ió n e s q u e su tie m p o «le e je c u c ió n
e n o rd e n e q u ilib ra d o . In s e rta n d o e l e le m e n to c e n tra l e n la ra íz y c o n s tru y e n d o re- n«» d e p e n d e d e l n ú m e r o d e c lie n te s «> «le e v e n to s te n e s te c a s o h a y d«»x e v e n to s
c u rs iv a m e n te lo s d o s su h iirb o lcs d e la m ism a m a n e ra , o b te n e m o s u n á rb o l e q u ili p«»r c lie n te ) , s in o d e l n ú m e r o «le lie s, q u e e n r e a lid a d n o e s p a rte d e la e n tra d a .
b rad o . E l c o s te d e n u e stra ru tin a e s u n a c e p ta b le < X \ lo e N ). A u n q u e n o e s tan P a ra v e r p o r q u é e s to es im p o rta n te , s u p o n g a m o s q u e c a m b ia m o s la s u n id a d e s
e fic ie n te c o m o lo se ría la ru tin a lin eal d e la c la s e , n o a fe c ta d e fo rm a a d v e rs a al «leí re lo j a m ic ro tic s y q u e m u ltip lic a m o s to d o s lo s tie m p o s d e l a e n tr a d a p o r I
tie m p o d e e je c u c ió n a s in tó lic o d e l a lg o r itm o c o m p le to . S e g a ra n tiz a q u e la s o p e ra m illó n E l r e s u lta d o s e r ía q u e la s im u la c ió n ta r d a r ía I m illó n «le v e c e s m á s e n
c io n e s o ] i m i n a r s o n lo g a rítm ic a s. I:sta ru tin a se lla m a c o n s t r u í i A i I jo I . y su e je c u ta rs e .
c ó d ig o a p a re c e e n la F ig u ra 13.3. ju n t o c o n e l m é to d o jo s e p h u s . L a c la v e p a ra e v it a r e s te p ro b le m a e s ir a v a n z a n d o e l relo j e n c a d a p a s o h asta
e l m o m e n to e n e l q u e se p ro d u ce el s ig u ie n te e v e n to . L u e g o te n e m o s u n a s im u la
c ió n d ir ig id a p a r e v e n to s. E s to e s c o n c e p lu a lm c n te fácil d e h a c e r. E n c u a lq u ie r
13.2 Sim ulación dirigida por eventos p u n to , e l s ig u ie n te e v e n to q u e p u e d e p ro d u c irse e s «» b ien la lle g a d a d e l sig u ien te
c lie n te , o b ie n la s a lid a J e u n o d e l«>s c lie n te s «le u n a v e n ta n illa . P u e sto q u e los
tie m p o s e n los q u e s e p ro d u c e n e v e n to s e s tá n d is p o n ib le s , volúntente n ece sita m o s
P a sa m o s a h o ra a l p ro b le m a d e la s im u la c ió n d e un b a n c o d e s c r ito e n la in tro d u c
e n c o n tra r e l e v e n to m á s c e rc a n o e n e l tie m p o y p ro c e s a r d ic h o e v e n to (a c tu a liz a n
c ió n T e n e m o s u n s iste m a e n el q u e los c lie n te s lle g a n y e sp e ra n e n u n a c o la h a sta
d o e l re lo j c o n e l tie m p o e n e l q u e se p ro d u c e e l e v e n to ).
q u e u n a d e las v e n ta n illa s e s tá lib re . L.a lle g a d a d e lo s c lie n te s e s tá g o b e rn a d a p o r
Si e l e v e n to e s u n a sa lid a , e l p ro c e s a m ie n to in c lu y e la a c tu a liz a c ió n d e lo s v a
u n a fu n c ió n d e d is trib u c ió n d e p ro b a b ilid a d e s, a l ig u a l q u e e l tie m p o d e serv ic io al
lo re s e s ta d ís tic o s c o n l«*s d a to s d e l c lie n te q u e se m a rc h a y m ira r la c o la p a ra v e r si
c lie n te « can tid ad d e tie m p o d u ra n te e l q u e e s a te n d id o u n a v e z q u e una v e n ta n illa
hay o tro c lie n te e sp e ra n d o . S i e s a sí. a ñ a d im o s e s e c lie n te , re c a lc u la m o s lo s v a lo
e stá lib re). E s ta m o s in te re sa d o s e n e s ta d ís tic a s c o m o c u á l e s e l tie m p o m e d io que
re s e s ta d ís tic o s q u e p ro c e d a , c a lc u la m o s la h o ra e n q u e s e m a rc h a rá el c lie n te y
tie n e q u e e s p e r a r un c lie n te e n la c o la y q u é p o rc e n ta je d e l tie m p o d e d ic a c a d a
a ñ a d im o s su s a lid a a l c o n ju n to d e e v e n to s a la e s p o ra d e p ro d u cirse.
e m p le a d o a a te n d e r p e tic io n e s . tS i hay d e m a s ia d a s v e n ta n illa s, a lg u n o s n o h a rán
Si e l e v e n to e s u n a lle g a d a , c o m p ro b a m o s s i hay u n a v e n ta n illa lib re. S i no
n a d a d u ra n te larg o s p e río d o s.)
hay n in g u n a c o lo c a m o s a l c lie n te e n la c o la . E n c a s o c o n tra rio . Ic asig n a m o s al
P ara c ie rta s d is trib u c io n e s d e p ro b a b ilid a d y v a lo re s «le k . s e p u e d e n c a lc u la r
c lie n te u n a v e n ta n illa , c a lc u la m o s e l tie m p o d e s a lid a d e l c lie n te , y a ñ a d im o s d i
e sto s v a lo re s e s ta d ís tic o s d e fo rm a e x u d a . P e ro a m e d id a q u e k se h ac e m á s g ra n
c h a s a lid a a l c o n ju n to «le e v e n to s a la e s p e ra «le p ro d u cirse.
d e e l a n á lis is se h a c e c o n s id e ra b le m e n te m á s d ifíc il, p o r lo q u e re s u lta a tra c tiv o
L a c o la «le c lie n te s se p u e d e im p le m e n ta r c o m o u n a c o la . P u e s to q u e n e c e sita
u sa r u n c o m p u ta d o r p a ra s im u la r e l fu n c io n a m ie n to d e l b a n c o . I) e e s ta fo rm a, los
m o s e n c o n tr a r e l e v e n to m á s c o re a n o e n e l tie m p o , e l c o n ju n to d e e v e n to s d e b e
d ire c to re s d e l b a n c o p u cilen d e c id ir c u á n ta s v e n ta n illa s s e n e c e sita n p a ra a se g u ra r
o rg a n iz a rse c o m o u n a c o la «le p rio rid a d . E l s ig u ie n te e v e n to e s «. b ie n u n a llegadu
un s e rv ic io ra z o n a b le m e n te d e s a h o g a d o , l . a m a y o r p a ite d e la s s im u la c io n e s im
o u n a s a lid a il o q u e «xmrrn a n te s ); a m b o s tip o s d e e v e n to s e s tá n ig u a lm e n te d is p o
p lican c o n o c im ie n to s «le p ro b a b ilid a d , e s ta d ís tic a y te o ría d e c o la s
n ib le s. U n a s im u la c ió n d irig id a p o r ev en to * es a p ro p ia d a m se e s p e r a q u e e l num e
ro d e tic s e n tr e e v e n to s s e a g ran d e
5
* P r o d u c e u n a a a l i d a como ¡ a d e l a F i g u r a 1 1 . 4 .
l \m noH . l.y I
■
>
6 (
7 Evento e = n u il;
C l ’xaano l. l>y
c
1 'slMTH‘O. lop
i lo n g d u r a c ió n ;
9
c(
10 W hilec *c o r . j E v e n t o s . e s V a c i a [ ) >
T«uorío r T.ip J
12 t r y ■
' • " <E v e n t o ) c o n j E v o n t o a . e l m i n a r M i n t >; )
c a t c h . D esb o rd ar» !e n r o l e 2a r l o r e x , ( ) / / No p u e d e s u c e d e r
■> IL-
L±SL * | l'aiarw» ? Top 4
¡5 lí( «-‘ . t i e m p o »t p o P a r a d a )
17 break;
)■
cc
16 COLGADO i.r.Ani' y
t.
1? e . q u e ■■ E v e n t o . COLGADD ) I I COLGADO 0 1 'SUJMO 1. l0*> S 0 1 »turi.i: t.«n 4 ~ i »u.m.» 1 . lop
2* módemsLibres**;
» S y s t e m . o u t . p r i n t l n . - EI u s u a r i o * . e .c p n e n . h
li'UUNI I. l i f 5 I vunn : 1<ip4
14 Huuri
2^ * r u <“l a a e n m i n u t o * . . t i e m p o | f
“ a jB n // MARCADO
ia :
14
25 S y s t e m . o u t . p r i n t I *E1 u s u a r i o * . e . q u i e n • llv u n o I. Tif l wjrm 1 lop 4 l Miam» t. lop 1 1 I Muño 5. T««c '
y
• m a r c a e n m i n u t o * • e . t i e m p o . • • >,
•3 *. fl m o d e n u L i b r e s > 0 )
30 : -AT * 1M’-'
6 ( «tuno 1 Ln» ' 6 l «uno ü f«i|»4 14 t Mi.itin ion 11 ® [ i »u.
•J nv o de ac L i b r e s - - ;
« d u r a c i ó n . r . p o i a a o n l tpoM edioL lam ada );
cü
^ S y s t e m . o u t . p r i n t l n ( *y s e c o n e c t a d u r a n t e *
.. • d u r a c ió n • • minutos* »; [ «uno I. Top < I MJtKI Top 4 y L -~ || 7 h Mían'.. ~ T . y S ^)
rj e . tlem po .* d u r a c i ó n .
IT o . q u e s E v e n t o . C OLGADO;
Jj c o n j E v e n t o s .l n a e .t a r { e ); -.a:
' - ''- i )
» ol se
l vuartol Top4
14 i\üjik> y. inp 1 I >mi»' Iu p s J J
S y a t m . o u t . p r i n t l n . - p e r o r e c i b e s e f t a i d e o c u p a d o * >;
44
)
45 ) HAS *
l | 1 4 | h s ¿ t _Lsi 15t mimo ~ lop » 8 l aun.»*, h ? "
Figuro 13.9 Rufino b á s c a d o w nuloclón
Figuro 13.10 Estodo d e lo co ta d e prioridad p a ra la sim ulación del b a n c o d e m ó
dem s fias c a d a p aso d e la umutac»ón
1. S e in s e ría el p rim er m a r c a d o .
2. D esp ués de e lim in a r m a r c a d o , se co n ecta a l usuario , k» c u a l genera un
COLGADO y u n a nueva p etició n de m a r c a d o . ft S e p ro c e s a u n a p e tic ió n d e COLGADO ( J o s v e c e s).
3. S e procesa una p etició n de COLGADO. 7. U n a petición de m a r c a d o nene éxito , y se uAailcn un evento m a r c a d o y
4. S e procesa una petición de m a rc a d o que resulta en una conexión. por lo que otro COLGADO.
se anuden lan ío un evento m a rc a d o co m o un evento COLGADO tires veces)
IX- n u e v o , s i E v e n t o lu c ra u n a c la s e b a s e a b stracta, s e n a d e e sp e ra r q u e s e d e fi
3. U n a p etició n d e MARCADO falla; en su lugar se genera una nueva petición
de MARCADO tires veces). n iera un p ro c e d im ie n to p r o c e s a r E v e n t o a tra v é s d e ia je ra rq u ía E v e n to , c o n lo
u n e n o n e c e sita ría m o s la rg a s c a d e n a s d e in stru c c io n e s i t e l s o . S in e m b a rg o .
1 /•• Errores c o m u n e s
2 * m a m r á p i d o cor. a . p r o p o s i t o «le h a c e r p r u e o a s .
3 • G e n e r a l a s a l i d a d e 2a F i g u r a 1 1 . 4
I. E l e rr o , m á s h a b itu al e n s im u la c ió n c o n s is te e n basam«»> e n un m o d elo
4 •/
5 p u b lic s t a t i c v o i d r a l n ( String I } args» I p ro b a b ilísim o p o b re . U n a sim u la c ió n re s u lta ta n b u e n a c o m o a c e rta d a sea
6 ( la d e l c o rre s p o n d ie n te m o d elo .
7 S im M o d e m s - new S im K o d e .T i 3 , 5 . 0 , 1 );
6 a .• je c S :m ( 20
9 J
En Internet
Figuro 13.11 R utina n a : n srm pio p a r a e je c u ta r la s m x J a a ó n
T o d o s lo s e je m p lo s d e e s te c a p ítu lo e s tá n d is p o n ib le s e n la r e d e n e l d ire c to rio
p ara acced er a la c o la d e prio rid ad , q u e e stá e n la cla.sc d e la sim u lac ió n . n ecesitaría t h a p te r L V A c o n tin u a c ió n se e n u m e ra n l«»s n o m b re s d e lo s fich ero s.
m os q u e F v e n t o alm acen ara, c o m o un airíhuiti. u n a referen cia a Li clase sim M odem
J o s e p h u s .ju * u C o n tie n e las d«»s im p lc m e n ta c io n e s d e j c s e p h u » > un
(en la q u e e s tá co n ten id o ) lis to se liaría e n e l m o m c n lo di- a p lic a c ió n «leíe«HisjnKU*
m a i n p a ra p ro b arlo s.
E n la F ig u ra 1 3 .1 1 se m u e s tra u n a ru tin a rrwiin q u e g e n e ra la sa lid a m o s tra d a
M o d c m S im .ju v a C o n tie n e e l c ó d ig o d e la s im u la c ió n del b a n c o «le m ó
e n la F ig u ra 13 4 N o o b sta n te , n o c \ a p ro p ia d o u s a r u n a d is trib u c ió n d e P o isso n
dem s
p a ra m o d c li/a r e l tie m p o d e c o n e x ió n . U n a e le c c ió n m e jo r s e ría u sa r u n a d is trib u
c ió n e x p o n e n c ia l tp e i o las r a /o n e s d e q u e e s to sea e n e le c to a s í q u e d a n fu e ra del
a lc a n c e «le e s te libro). T a m p o c o e s a d e c u a d o a s u m ir u n (icmp«> fij«» e n tre c a d a dos
in te n to s d e m o rcad o . IX- n u e v o , s e ria m e jo r u s a r u n a d is trib u c ió n e x p o n e n c ia l p ara Ejercicios
d e fin ir l«»s in te rv a lo s «le tie m p o e n tr e m a rc a d o s. S i m o d ific a m o s la s im u la c ió n p a
ra itK«»rjH*rar e s ta s d is in b u c n * n e \. e l re lo j d e b e ría se r d e tip«» d o u b l e . E n e l E je r Cuestiones breves
c ic io 13 . 13 se le p id e q u e im p le m e n to cst«*> c a m b io s
1 3 .1 . S i M = <>., q u ié n g a n a e l ju e g o J o s e p h u s?
13 2. M u e s tre e l fu n c io n a m ie n to d e l a lg o ritm o J o s e p h u s c o n u n á rb o l b in an .» d e
Resumen búsqueda p a ta e l e a - o d e 7 p e rs o n a s >' > p a s e s . In c lu y a u n d ib u jo d e l á rb o l
d e sp u é s d e c a d a e lim in a c ió n
L a s im u la c ió n e s u n á re a im p o rta n te d e la c o m p u ta c ió n . H ay m u c h a s m á s d ific u l I3 J. ¿ H a y a lg ú n v a lo r d e M p a ra e l q u e e l ju g a d o r I g a n a u n ju e g o J«*sephus d e
tad e s im p lic a d a s e n e l te m a q u e la s q u e p«xkm«*s d is c u tir 1.a sim u la c ió n se rá 3 0 p e rv o n a s?
a c e rta d a e n la m e d id a e n q u e e l m o d e lo p ro b a b ilísim o lo s e a . lu e g o se re q u ie re 13.4. M u e stre e l e s ta d o d e la c o la d e pn«>ndad d e s p u é s d e c a d a u n a d e las d ie z
u n a só lid a fo rm a c ió n e n p ro b a b ilid a d , e s ta d ís tic a > te o r ía «le c o la s p a ra d e c id ir p rim e ra s lín e a s «le la s im u la c ió n m o s tra d a e n la F ig u ra 13 4
a c e rta d a m e n te lo s tip o s d e d is trib u c io n e s d e p ro b a b ilid a d a u tiliz a r e n c a d a caso .
L a s im u la c ió n e s. a d e m á s, u n a im p o rta n te á re a «le a p lic a c ió n «le las té c n ic a s do
m « x leli/acio n o rie n ta d a s a «>bjetos.
Problemas teóricos
133. S e a V = 2* p a ra u n e n te r o i D e m u e stre q u e s i M e s I . e n to n c e s e l juga«l«*r
I s ie m p re g a n a e l ju e g o Jo se p h u s.
Elementos del juego 13.6. S e a J i \ ) e l g a n a d o r d e un ju e g o Jo s e p h u s c«»n N ju g a d o r e s y M - i . uc-
P rácticas d e p ro g ra m a c ió n
1 3 .1 5 . Im p le m e n te el a lg o ritm o Jo s e p h u s u s a n d o á rb o le s d e e n sa n c h a m ie n to
i v é a s e e l C a p itu lo 2 1 1 e in s e rc ió n se c u e n e ia l. (L a c la s e d e á rb o le s d e e n
s a n c h a m ie n to e s ta d is p o n ib le e n la re d . p e ro n e c e sita rá a ñ a d ir u n m é to d o
b u s c a r K e s i m o ) . C o m p a re su e fic ie n c ia c o n e l q u e a p a re c e e n e l lib ro y
c o n u n a lg o ritm o q u e uso u n a lg o r itm o lin eal d e c o n s tru c c ió n d e u n á rb o l
e q u ilib ra d o .
13.16. R esc rib a e l a lg o ritm o Jo s e p h u s d e la F ig u ra 13 .3 p u ra u sa r u n m o n tó u to di
m e d ia n a s (E je rc ic io 6 2 0 ). I s e u n a im p le m e n ta c ió n sim p le d e l m o n tíc u lo
d e m e d ia n a s e n la q u e lo s e le m e n to s se m a n te n g a n o rd e n a d o s C o m p a re
los tie m p o s d e e je c u c ió n d e e s te a lg o ritm o y d e l q u e u sa u n á rb o l b in a rio
d e b ú sq u ed a.
13.17. S u p o n g a q u e la FU I h a in s ta la d o u n s iste m a e l c u a l, c u a n d o lo s m ó d e m s
e s tá n o c u p a d o s , p o n e la s M antudas d e te lé fo n o e n u n a c o la R e sc rib a la ru
tin a J e s im u la c ió n p a ra p e rm itir c o la s d e d is tin to s ta m a ñ o s e in c lu so d e ta
m a ñ o in fin ito .
13.18. R e sc rib a la sim u la c ió n p a ra re c o g e r m e d ic io n e s e s ta d ís tic a s e n lu g a r d e
p ro d u c ir c o m o s a lid a c a d a e v e n to . D e sp u é s c o m p a re la v e lo c id a d d e la si
m u la c ió n , s u p o n ie n d o q u e s e d is p o n e d e v a rio s c ie n to s d e m ó d e m s > q u e
la sim u la c ió n e s m u y la rg a , c o n o tr a s q u e u tilic e n o tra s v e rs io n e s d e c o la s
c o n p rio rid a d (a lg u n a s d e la s c u a le s e s tá n d is p o n ib le s e n la red ), c o m o p o r
e je m p lo la s sig u ie n te s;
14.1 Definiciones
l n g r a to ( i = «V'. E ) e s ta fo rm a d o p o r un c o n ju n to d e v é rtic e s . V’. y u n c o n ju n to d e
a n s ia s . E. C a d a a n s ia e s u n p a r <v. *»•). d o n d e v . m e V E n o c a s io n e s lo s v é rtic e s se
d e n o m in a n iuhIo s . y la s arista s orcos. S i lo s p a re s q u e d e fin e n las a ris ta s e s tá n o r
denad*»'. s e d ic e q u e e l g ra to e s d ir ig id o . L o s grat*»s d irig id o s se den**minan e n
o c a sio n e s d ¡ g r a jo s . E n u n d ig r a ló . e l x é rtic e w e s a d y a c e n te a l v é rtic e » si y s ó lo si
(»•. u l € E. A lg u n a s v e c e s las a ris ta s tie n e n u n a te r c e ra c o m p o n e n te , d e n o m in a d a
¡teso o c o ste . E n e s te c a p ítu lo u n io s lo s g ra fo s q u e c o n s id e ra m o s se rá n d irig id o s.
El g r a f o d e la E ig u ra 14.1 tie n e lo s sig u ie n te s 7 v értices:
y = ¡Vu. L |. l : . \ \ v Á. VV l ’„;
y 12 a rista s :
I s S S
e n e l c a m in o P o r e je m p lo , V„. \ \ . V s e s u n c a m in o d e s d e e l v é rtic e Vu al i y La
p o n g a m o s q u e l«»s v é rtic e s se n u m e ra n d e fo rm a s e c u e n c ia ! e m p e z a n d o e n 0 . c o m o
lo n g itu d d e l c a m in o e s d o s a rista s , y la lo n g itu d d e l c a m in o c o n p e so s e s 0 (é s te es
e l c a m in o m as c o rto d e V’„ a V\». S in e m b a rg o , si e l c o s te e s im p o rta n te , e l c a m in o su g ie re e l g ra fo d e la F ig u ra 14 1 U n a f«»rma se n c illa d e re p re se n ta r u n g ra fo es
c o n p e so s m ás c o r to e n tre e s to s v é rtic e s tie n e c o s te f> y e s l ’, h \ \ . V,,. \ \ C o n s id e u tiliz a r u n a m a tn z b id im c n s io n a l. E sta representa».ion se d e n o m in a m a m ; d e
r
ra m o s e n p a rtic u la r c a m in o s d e un v é rtic e a é l m is m o . C u a n d o u n c a m in o ta l no u d s a c e n , u i. P a ra c a d a a rista (v. «•>. a | v | [w] re p re s e n ta e l c o s te d e la a n s i a : las
c o n tie n e a n s ia s , s u lo n g itu d e s 0 ; é s ta e s la fo rm a m á s c o n v e n ie n te d e tra ta r e s te a ris ta s in e x iste n te s s e p u e d e n re p r e s e n ta r m e d ia n te u n i n f i n i t o ló g ic o , l a ini
c a s o e s p e c ia l, U n c a m in o s im p le e s u n c a m in o e n e l q u e lo d o s los v é rtic e s so n d is c ia liz a c ió n d e l g r a f o p a re c e re q u e rir q u e la m a triz d e a d y a c e n c ia c o m p le ta s e ini-
tin to s. e x c e p to e n lo q u e re fie re a l p rim e ro y a l ú ltim o , q u e s í p u e d e n s e r ig u ales. c ía lic e a I N F I N I T O y , d e sp u é s , p a r a c a d a a rista se a c tu a lic e la e n tra d a a p ro p ia d a
I n c ic lo e n un g ra fo d irig id o e s u n c a m in o d e lo n g itu d al m e n o s I q u e c u m p le d e la m a triz . F n e s te m a re o , la in ic ia ti/a c ió n c o n lle v a ría un tie m p o ÍX |V |* ). A u n
q u e e s p o s ib le e v ita r e l tie m p o c u a d rá tic o d e i m e ta liz a c ió n ( v é a se E je rc ic io 14.3).
h , = h v ; e s te c ic lo e s sim p le si e l c a m in o lo e s U n g ra fo d irig id o a c íc lic o . a v e
c e s re fe re n e ia d o p o r s u a b re v ia tu ra . G D A . e s u n g r a to d irig id o sin ciclo s. e l c o s te e n e s p a c io s e rá a ú n 0 ( |V |2). q u e r e c i t a ra z o n a b le p a ra g ra fo s d e n s o s p e ro
U n e je m p lo d e la v ida re a l q u e p u e d e m o d e la rs e m e d ia n te u n g ra fo e s u n Mste e s to ta lm e n te in a c e p ta b le p a ra g ra f o s d is p e rso s
m a d e a e ro p u e rto s. C a d a a e ro p u e rto e s u n v é rtic e . D o s v é rtic e s e s tá n c o n e c ta d o » P ara g ra f o s d is p e rs o s , u n a re p re se n ta c ió n m e jo r e s la s u m in is tra d a p o r la s lis
i l
p o r u n a a ris ta si h a y u n v u e lo sin p a ra d a s e n tre lo s c o rre s p o n d ie n te s a ero p u e rto s ta s d e a d y a c e n c ia . P a ra c a d a v é rtic e , s e m a n tie n e u n a lista e n la z a d a d e lo d o s sus
L a a ris ta p u e d e te n e r un c o s te , re p re s e n ta n d o e l tie m p o , la d is ta n c ia o e l c o ste del v é rtic e s a d y a c e n te s. L a re p re se n ta c ió n m e d ia n te listas d e a d y a c e n c ia d e l g ra fo «Ic
l U
v u e lo G e n e ra lm e n te , la e x is te n c ia d e u n a a n s i a (» •..» » im p lic a ra la e x is te n c ia d e la la F ig u ra 14.1 s e m u e s tra e n la F ig u ra 14.2. Y a q u e c a d a a ris ta a p a re c e e n u n n o d o
a rista ( u . i » P e ro e s ra z o n a b le su p o n e r q u e e l c o s te de- e sta s a n s ia s p o d ría se r d i d e u n a lis ta , e l n ú m e ro d e n o d o s e n las listas e s e x a c ta m e n te ig u a l a l n ú m e ro d e
fe re n te . y a q u e v o la r e n s e n tid o d ife re n te p o d ría llev a r m á s tie m p o (d e p e n d ie n d o a n s ia s E n c o n s e c u e n c ia , se u tiliz a u n e s p a c io ( X \E \ ) p a ra a lm a c e n a r lo s n o d o s. Y a
d e lo s v ie n to s d o m in a n te s ) o c o s ta r m á s (d e p e n d ie n d o d e la s ta n t a s U v ales» . Un q u e te n e m o s | l ' | ItM as. ta m b ié n se n e c e s ita u n e s p a c i o a d ic io n a l D (|V |) . S i asu
p ro b le m a n a tu ra l q u e n o s g u s ta ría re s o lv e r c o n c ie r ta c e le rid a d e> e l d e d e te rm in a r m im o s q u e lo d o v é rtic e e s tá e n a lg u n a a ris ta , e l n u m e r o d e a ris ta s e s . a l m e n o s .
e l m e jo r v u e lo e n tr e d .* a e ro p u e rto s, d o n d e - m e jo r - |*Hlriu s ig n ific a r e l c a m in o n i 'i / 2 1 . p o r l o q u e se p u e d e d e s c a rta r to d o te rm in o D ( |V |) c u a n d o e s tá p re s e n te un
c o n m e n o r n ú m e ro d e a ris ta s , o p o d ría e n te n d e rse c o n re s p e c to a a lg u n a d e las m e té rm in o D(|E1». P o r c o n s ig u ie n te , d e c im o s q u e e l e s p a c io n e c e sa rio e s o li
_
d u la s d e p e s o (d is ta n c ia , co sto , etc.). n e a l c o n re s p e c to a l ta m a ñ o d e l g rafo .
U n se g u n d o e je m p lo d e la v id a real q u e p o d e m o s m o d e la r c o n u n g r a f o e s el L a s lista s d e ad y a c e n c ia p u e d e n c o n stru irse e n tiem p o lin eal a p a rtir d e la lista
e n v ío d e m e n s a je s d e c o rr e o e le c tró n ic o a tra v é s d e u n a te d d e c o m p u ta d o re s l o s d e a n s ia s P a rtim o s d e todas las listas v a c ía s, y c u a n d o n o s e n c o n tra m o s c o n una
n o n
v é rtic e s re p re se n ta ría n c o m p u ta d o re s , la s a r i M a s e n la c e s e n tre p a re s d e e m p i n a a rista (v . m . r v „ ). a ñ a d im o s a la lista d e a d y a c e n c ia d e v u n a e n tra d a fo rm a d a p o r «
d o re s y e l c o s te d e c a d a a rista s e r ia e l c o s te d e la c o m u n ic a c ió n (p a s o s d e te lé fo n o y e l c o ste « . . . I-a in serció n pued e realizarse e n c u a lq u ie r p u n to d e la liMa. p e ro re
p o r m c g a b y te ). o s t e d e re tra s o (s e g u n d o s p o r m e g a b y te ). o c o m b in a c io n e s d e é s su lta d a e s p e c ia lm e n te c o n v e n ie n te h a c e rlo a l p rin c ip io d e la lista, p a ra a s í g a ra n ti
to s y o tro s facto res. z a r tie m p o c o n sta n te . D e e s ta fo rm a c a d a a rista pued e in sertarse e n tie m p o c o n s ta n
F.n la m a y o ría d e lo s g ra to s , hay c o m o m u c h o u n a a ris ta e n tr e u n v é rtic e v v te. p o r lo q u e la e stru c tu ra d e listas d e a d y a c e n c ia p u e d e c o n stru irse e n tiem p o
o tro u (e s to in c lu y e e l c a s o e n e l q u e hay u n a a rista e n c a d a d irecció n » . E n c o n s e lin eal. O b se rv e q u e c u a n d o in sertam o s u n a arista tu* c o m p ro b a m o s si y a e s tá p re se n
c u e n c ia . |E1 ^ |V |‘ . C u a n d o la m a y o ría d e lo s v é rtic e s e s tá n p re s e n te s, te n e m o s te . E s to n o p u ede h acerse e n tie m p o c o n sta n te (s i u tiliz a m o s u n a lista e n la z a d a sin
l£ l = 0 f |V |* >. y e l g ra fo se d e n o m in a d e n s o (p u e s tie n e un g ra n n u m en » d e a n s ta s i. m ás», y la c o m p r o b a c ió n a c a b a ría c o n la c o ta lin e a l e n tie m p o d e la c o n stru c c ió n
F.n la m a y o ría d e la s a p lic a c io n e s , lo s g ra f o s so n d is p e r s o s e n v e / d e d en so s
P o r e je m p lo , e n e l m .»delo d e lo s v u e lo s , n o e s p e r a m o s q u e h a y a v u e lo s d ire c to s
e n tre c a d a p a r d e a e ro p u e rto s P o r e l c o n tra rio , s e d a rá e l c a s o e n e l q u e a lg u n o s
p o c o s a e ro p u e rto s e s tá n m u y b ie n c o n e c ta d o s y e l re s to tie n e re la tiv a m e n te p o c o s
v u e lo s. D e la m ism a fo rm a, e n un s iste m a c o m p le jo d e tra n sp o rte do m u ltitu d e s
q u e in v o lu c re tre n e s y a u to b u s e s , d e s d e u n a e s ta c ió n se p u e d e n a lc a n z a r d ile c ta
m e n te . lo q u e e s ta rá re p re s e n ta d o p o r u n a a ris ta , s ó lo u n a s p .v a s e s ta c io n e s T a m
b ié n . e n u n a re d d e c o m p u ta d o re s , la m a y o r ía d e l«*s c o m p u ta d o re s eM an e n v e t a
d a s a u n o s p o c o s c o m p u ta d o re s U v ale s. P«»c ta n to , e n la m a y o r ía «le l«» c a s o s . e l
gral.» e s re la tiv a m e n te dis/>erso. te n ié n d o se |£1 = <-X|V|». o q u i/ a s a lg o m á s (n o F ig u ra 14.1 G r a t o d ir e c to
0 1(2) ant n o m b re ady
D C iU D 2U3UU0L
1 4.10) 3 .3 ) 2(19)
1 76 0
A n 81 A
0 (4 ) 5ói 0 -1
E 0 43
B E 11 .3 12 n 4 ( 11 )
3 4 .2 ) ► 6.4 ) 5 (8 ) 2 .2)
4 2.1 y E 0 (43)
Tabla de l girufa
6 (6 )
h 5d)
Figuro 14.4 El e le m e n to básico a lm a c e n a d o e n u n a lista d e a d ya c e n c ia . Figuro 14.6 Esqueleto d e lo clase G r a t o (p a n e 1: la p a rte publica).
33 prívate s ta tic final I n t TAMANY0_TABLA_1NI = 5 0 ; 1 /• •
34 private sta tic final i n t VEFTICE_NULO = -ir 2 * Esta clase representa la ent ra da básica
40 8 <
41 p riv a te void duplicarV ectorT abla< I 9 pubiic String nombre; // Ei nombre real
42 ( / • muy u s u a l , n o m o s t r a d o • / > 10 public int rango: // F.l n u m e r o « s i g n a d o
52 p r í v a t e void s in P e s o s l i n t nodoOrig ) 20
53 { /• F ig u ra 14.24 • / I 21 public b o o l e a n equals! Object lder )
55 { I* F i g u r o 1 4 . 2 9 * / 1 23 }
56 p r iv a te b o o l e a n n e g a tiv o s ! in t nodoOrig )
Figura 14.9 E l e n e n t o H a s h utilizado p a r a im p ie m e n ta r e l d ic c io n a rio
57 { /* F i g u r a 1 4 .3 1 V }
58 p r í v a t e boolean a c l c l í c o ! in t nodoOrig >
59 ( / • F ig u ra 1 4 .3 4 •/ }
60 ) 1 /• *
2 • Si nombreVertlee ya os un vértice, devuelvo su
Figuro 14.7 Esqueleto d e lo cióse G r a t o (p o rte 2: lo p a rte p rivad a). 3 * número interno. E n o t r o caso, lo añ a d e c o m o nuevo vértice.
4 • y devuelva au nuevo número int e r n o .
5 •
tic e . E s to se d is c u tir á b re v e m e n te al e s tu d ia r la im p le m e n ta c ió n . ü i lín e a 38 6 private int insNodo! String nombreVertice )
e s la ta b la d e l g ra f o . t a b l a . E l n ú m e r o d e v é rtic e s e n la ta b la s e a lm a c e n a en 7 (
8 ElementoHash hashV = new ElementoHashI norobreVertice i:
r . u m V e r t i c e s (lin c a 39» E l re s to d e la c la s e p ro p o rc io n a m é to d o s p a ra r e a l i/ a r la
9 E l e m e n t o H a s h resultado;
in ic ia liz a c ió n . a ñ a d ir v é rtic e s , im p rim ir e l c a m in o m á s c o n o y re a liz a r v a rio s c á l
10
c u lo s d e c a m in o s m ín im o s. C a d a ru tin a se d is c u te a l e s tu d ia r su im p le m e n ta c ió n
11 try
L o p rim e ro e s e l c o n s tru c to r. L a F ig u ra 14.8 m u e s tra q u e e l c o n s tru c to r in ic ia - 12 (
liz a e l n ú m e ro d e v é rtic e s a 0 y c o n s tru y e la t a b l a . S e c re a u n d ic c io n a rio v a c ío . 13 resultado = (EiomentoHashl d i c V e r t i c o o .b u s c a r ( hashV )¡
Para im plem cntar e l diccionario, decla ram o s u n a clase den o m in ad a E l e n e n t c H a sh 14 return resultado.rango;
q u e a lm a c e n a rá e l n o m b re d e l v é rtic e , n o m b i e . y su n ú m e ro in te rn o , r a n g o . L a 15 }
16 catch( ElementoNoEncontrado e l
ig u a ld a d y la fu n c ió n h a s h se re a liz a n so la m e n te a p a rtir d e l c a m p o n o m b r e . L a s
17 (
im p lc m e n ta c io n e s ve m u e s tra n e n la F ig u ra 14 9
18 // V é r t i c e n u e v o
19 hashV. rango = numVertices;
3 • 22
4 p u b iic G rato! i 23 if( numVertices == t a b l a .l e n g t h I
5 ( 24 d u p l i c a r V e c t o r T a b l a ! i;
6 n u m Ve r t i c e s = 0 ; 25 cabial numVertices ) = new V é r t i c e ! h a s h V .n o m b r e I:
7 tabla = new V e r t i c e | TAMA!«Y0_7ABLA_INI ] ; 26 return numVertices*»;
8 d i c V e r t i c e s ■ new T a b i a E x p l o r a c í o n C u a d r a t i c a < i; 27 )
’ ) 28 )
1.a ru tin a d e la F ig u ra 1 4 .1 1 a ñ a d e u n a a ris ta c u y o s v é rtic e s v ie n e n d a d o s p o r p r iv a t e v o id ín * > rím irC a m ln o R e c < i n t nodoD ost )
(
nú m cn*s in te rn o s É sta e s u n a ru tin a se n c illa p o rq u e lo ú n ic o q u e p re c is a c \ c re a r
i f t t a b l a ! nodoD eat J . a n t f V E R T IC E .N U LO >
un o b je to d e la c la s e A r i s t a c o n e l v é rtic e d e s tin o y e l c o s te , c in s e rta r lo e n la í
lista d e a d y a c e n c ia s c o rre s p o n d ie n te al v é rtic e d e o rig e n I.a ru tin a d e u s o p ú b lico im p rím irC a m ln o R e c I t a b l a ! nodoD est J . a n t ) ;
s e m u e s tra e n la F ig u ra 14.12. i n s A r i s t a in s e rta u n a a rista c u y o s v é rtic e s v ie n e n S y s t e m . o u t . p r in t ( * a * ) ;
I
S y s t e m . o u t . p r in t ( t a b l a ! nodoDeat 1 .nom bre >;
1
1
2 * Anade un» a r i s t a « bul os l o s nú m ero s i n t e r n o s d e sus v ó r t i c e s .
3 •/ Figuro 14.14 R utina re cu rsiv a p a r a m p ñ m r e l c a m in o m ínim o
4 p r í v a t e v o id in sA r i s t .i I n t e r n a ( i n t o r i g . in t d e s t . i n t c o s t o l
5 {
6 L i s t a l t e r p * new L i s t a E n l a z a d a l t e r ( t a b l a l o r i g l .a d y );
1 /• •
2 • R u t in a g u ia p a r a t r a t a r c a s o s in a l c a n z a b l e s e
7 t r y
• in q jilm ir e l c o s t e t o t a l . Lla m a a l a r u t i n a r e c u r s iv a
8 { p . i n s e r t a r ( new A r i s t a ( d e s t . c o s t e ) ) ; )
• p a r a im p r im ir e l ca m in o m ín im o a n o d o D e st.
9 c a tc h l E io m u n tu N o K n co n trad o e ) ( ) / / No p u e d o o c u r r i r
10 )
p r i v a r e v o id iir p r im ir C a m ir .o ( i n t nodoD est )
[
Figuro 14 11 A b o d e a g rafo la arista ( o r i g . dest. c o s t e ) a se d á n d o lo dentro d e
l f ( t a b l a | nodoD est J . d i s t ** IN F IN IT O )
la teta d e o d y o c e n c o d e o r i g . o r i g v d e s t son núm eros internos
S y s t e m . o u t . p r in t I n t t a b l a ! n odoD est ) .n ceto re *
• e s i n a l c a n z a b l e ’ ) j
1 /•• e ls e
2 * Aflade la a r i s t a t o r i g . d e s t . c o a t e i a l g r a f o . I
3 •/ u rp r im irC a m in o R e c t n o d o D est ) ;
4 p u b l i c v o id i n s A r i n t a l S t r i n g o r i g . S t r i n g d e s t . in t c o a t e »
S y s t e m .o u t .p r in t I n t * ( e l c o a t e e s * •
5 I t a b l a ! nodoD eat 1 . d i s t • *>* J ;
6 i naA ri a t a I n t e r n a ! m sN o d o ! o r l a ). in sN o d o ! d e « r ). c o a t e );
)
7 ) S y s t e m . o u t . p r ln t ln ( );
P a ra re s o lv e r e l p ro b le m a d e l c a m in o m ín im o sin p e so s, u tiliz a m o s e l g ra fo d e la
F ig u ra 14 1. c o n V': c o m o n o d o o rig e n O . P o r a h o ra , n o s o c u p a re m o s d e e n c o n tra r
la lo n g itu d d e lo s c a m in o s m ín im o s M ás ta rd e , ta m b ié n lle v a re m o s c u e n ta d e l c o
rre sp o n d ie n te ca m in o .
In m e d ia ta m e n te , p o d e m o s d e c ir q u e e l c a m in o m á s c o r to d e s d e O a V 2 e s un
c a m in o d e lo n g itu d 0. E sta in fo rm a c ió n p ro d u c e e l g r a to d e la F ig u r a 14.18 A h o
ra p o d e m o s e m p e z a r a m ira r lo s v é rtic e s q u e e s tá n a d is ta n c ia I d e O S i h ac e m o s
e sto , v e m o s q u e l ’,» y \ \ e s tá n a u n a a rista d e d is ta n c ia d e O . E s to s e m u e s tra e n la
F ig u ra 14.19. Figuro 14 20 G ra to después d o enco ntrar todos los vérticos c u y o ca m in o mínimo
d e sd e & origen tiene longitud 2
1
2 • C a l c u l a e l c a m in o mínimo s i n p e s o s . 14.3.1 Teoría: algoritm o d e Dijkstra
3 •/
4 p r í v a t e void o in P eo o st in t nodoOrig 1 E l p ro b le m a d e los c a m in o s m ín im o s c o n p e so s s e re s u e lv e d e u n a m a n e ra sim ila r t
5 { al p ro b le m a sin p e s o s . S in e m b a rg o , d e b id o a l c o s te d e las a rista s , u n as p o c a s c o
o -ü
6 Int v, w;
sa s c a m b ia n .
7 C o la q = r. ew C o l a V e c ( );
8 I-as sig u ie n te s c u e s tio n e s d e b e n se r e x a m in a d a s:
9 1i m p i a r D a t o s { );
1. ¿ C ó m o s e a ju s ta / ) „ ?
10 t a b l a ! nodoOrig i . d i s t = 0;
2. ¿ C ó m o b u sc a m o s e l sig u ie n te v é rtic e v e n e l q u e c e n tra r n u e s tra ate n c ió n ?
11 q . i n s e r t a r ( new I n t e g . f r ( n o d o O r i g | );
12 E m p e z a m o s e x a m in a n d o c o m o s e a lte ra />*- A l re s o lv e r e l p ro b le m a sin p e so s,
13 try
si /) „ = c c . h a c ía m o s l ) w = ¡K + 1 p o rq u e re b a já b a m o s e l v a lo r d e ¡ K s i e l v é rti
14 (
15 w hilet !q.esV acia( ) I c e v o fr e c ía un c a m in o m á s c o r to a w. L a d in á m ic a d e l a lg o ritm o a se g u ra b a q u e
16 < S ólo n e c e sitá b a m o s a lte ra r /) » u n a v e z . S u m á b a m o s I a l ) w p o rq u e la lo n g itu d del
17 v = l í l n t e g e r ) q . q u i t a r P r i n v e r o í ) ) . i n t V a l u e ( >; c a m in o a w e s 1 m á s q u e la lo n g itu d d e l c a m in o a v. S i a p lic a m o s la m ism a ló g ica
18 L i a t a l t e r p * newL i s t a E n l a z a d a l t e r ( t a b l a I v 1. a d y ) i al c a s o c o n p e s o s , d e b e ría m o s h a c e r P K, = I), + <v c u a n d o e s te n u e v o v a lo r de
19 f o r t ;p . e s t a D e n t r o í ); p.avanzar! ) t
P n sea m e jo r q u e e l o rig in a l. S in e m b a rg o , a h o ra n o p o d e m o s g a ra n tiz a r q u e D n
20 {
se a c tu a lic e u n a so la v ez. E n c o n s e c u e n c ia . P , d e b e ría m o d ific a rse si su v a lo r a c
21 w=t ( A r i s t a ) p . r e c u p e r a r t I >.dest,-
22 ift t a b l a ! w 1 . d i s t *= I N F I N I T O ) tu al e s m a y o r q u e D y + c v te n vez d e s im p le m e n te c o m p a ra rlo c o n x ) . S im p le
23 { m e n te . e l a lg o ritm o d e c id e si d e m o m e n to e s u n a b u e n a id e a p a s a r p o r v p a ra ir
24 tabla! w ] .d is t = tabla! v 1 . d i s t » 1; h a s ta h . E l c o s te o rig in a l P n e s e l c o s te sin u tiliz a r r ; e l c o s te P , + r , „ e s e l c a
25 t a b l a ! w 1 . a n t » v? m in o m á s b a ra to u tiliz a n d o lo s v é rtic e s »• c o n s id e ra d o s h a s ta la fecha.
26 q . i n s e r t a r ( new I n t e - g e r t v ) ) ;
L a F ig u ra 14.25 m u e s tra u n a s itu a c ió n típ ic a . A n te rio rm e n te d u ra n te la e je
27
28 } c u c ió n d e l a lg o r itm o , se re b a jó ia d is ta n c ia a w a X c u a n d o fija m o s n u e s tra a te n
29 | c ió n e n e l v é rtic e u. S in e m b a r g o , c u a n d o c o n s id e ra m o s v. n e c e s ita m o s v o lv e r a
30 ) c a m b ia r la d is ta n c ia a u . r e b a já n d o la a 6 . p u e s te n e m o s u n n u e v o c a m in o m ín i
31 catchí D esbordam ientolnferior e ) { } //N o puede o c u rrir m o p ro v is io n a l. E s to n u n c a o c u rr ía e n e l a lg o r itm o s in p e so s p o rq u e to d a s las
32 l
a ris ta s s u m a b a n I a la lo n g itu d d e l c a m in o , p o r lo q u e D m ^ P t im p lic a b a
Figura 14.24 Algontm o p a ro e l p roblem a d e l ca m in o m inm o sin pesos utilizando P„ + I í IK + I . y p o r ta n to P„ ¡$ P , + 1. A q u í, a u n q u e <Pu P „ e s to d a v ía
u n a b ú sq u ed a e n an ch u ra p o sib le q u e e l c a m in o a w s e m e jo re a l c o n s id e ra r v.
L a F ig u ra 14.25 m u e s tra «uro p u n to im p o rta n te . C u a n d o s e re b a ja la d is ta n c ia
a n . e s s ie m p re p o rq u e e s a d y a c e n te a a lg ú n v é rtic e e n e l q u e h e m o s fija d o n u e stra
a te n c ió n . P o r e je m p lo , d e s p u é s d e v is ita r » y c o m p le ta d o \ u p ro c e s a m ie n to , e l v a
lo r d e />„ s e rá b \ e l ú ltim o v é rtic e e n e l c a m in o se rá u n n o d o y a v is ita d o . D e f o r
m a a n á lo g a , e l v é rtic e a n te rio r a v d e b e h a b e rse v isita d o , v a s i su c e s iv a m e n te P o r
ta n to , e n c u a lq u ie r m o m e n to , e l v a lo r d e />„ re p re se n ta u n c a m in o d e sd e O h a sta
h u tiliz a n d o c o m o n o d o s in te rm e d io s so la m e n te v é rtic e s q u e h a n s id o y a v is ita
d o s. E ste h e c h o c ru c ia l n o s llev a a l T e o re m a 14.1.
Fi guro 14.25 T e n em o s f f o d o lo a te n c ió n e n e i v e r t c e v ; w e s o a y o c e n t e . D * d e
b e ría re d u c irse a 6
¡.Jam em os - p a s o » a c a d a v is ita a u n n a d a . P ro b a re m o s p o r in d u c c ió n q u e .
d e sp u é s d e c a d a /h is o . la s va la re s d e />, p a r a v e rile e s y a v isita d o s c o r r e s
p o n d e n a l c a m in a m ín im a , y q u e lo s v a la r e s d e D , p a r a lo s d e m á s v é rtices
co rres/ro n d en a l c a m in o m á s c o r ta b o sta e lla s q u e u tiliza so la m e n te c o m o
n o d o s in te rm e d ia s v é rtic e s y a v isita d a s. Ya q u e e l p r im e r n o d o v is ita d o es
e l o rig e n , l a a fir m a c ió n e s c ie r ta /Mira e l p r im e r ¡h i s o . S u p o n g a m o s q u e es
c o rr e c ta /h iiii lo s p r im e r o s k e sta d o s S e o v e l v é rtic e v is ita d o e n e l p a s o
k -f I . S u p o n g a m o s, c o n la in te n c ió n d e lle g a r a u n a c o n tr a d ic c ió n , q u e luis
un c a m in o d e O a v d e lo n g itu d m e n o r q u e D , . E ste c a m in a d e b e p a s a r p a r
un v é r tu e in te r m e d io q u e n a lu isa sid a tiu la v ía v isita d a . ¡J a m e m o s u al
p r im e r v é rtic e in te r m e d ia e n e l c a m in a q u e n a h a y a s id a v is ita d a ¡ ai si
tu a c ió n se m u e str a e n la F ig u r a 14.2b. E l ( a m in a b a sta u u tiliza sa la n a
d a s in te rm e d ia s v is ita d a s, p o r In q u e . p o r in d u c c ió n . /)„ re p r e se n ta la d i s
ta n c ia ó p tim a a r . E s m á s . D u < />,.. p o r q u e u e s tá e n e l su p u e s to c a m in o
a v. E s to e s u n a c o n tr a d ic c ió n , p o r q u e s i fu e r a a s í h a b ría m o s e le g id o u
c o m o sig u ien te vértice a v is ita r e n lu g a r ¡le v . l a d e m o s tr a c ió n s e i a m p ie
l a m o str a n d o q u e e l r e s to d e va lo re s I), ¡ u n a m u lo s n o v isita d o s sig u en
sie n d o c o r r e e n es. e s to e s e v id e n te , d m la la re g la d e a c tu a liz a c ió n .
24 p u b li c ín t com para» C o m p a ra b le ld e r I 49
50 re tu rn tr u c :
25 { r e t u r n c o s t e < < (C am ino ) ld e r ) .c o s t e ? - 1 i
26 c o s t e > ( (C am ino ) ld e r ) .c o s t e ? 1 : 0 ; ) 51 ) ^
27 ) Figuro 14 29 A lgoritm o O o t x a o u e d a d e c a m in o s rrW wrx» c o n p©*o« c*gocitm o d e
U n a a p lic a c ió n im p o rta n te d e la o rd e n a c ió n to p o ló g ic a e s su u s o p a ra re s o lv e r el
p ro b le m a d e lo s c a m in o s m ín im o s s o b re g r a ló s a c íc lic o s . L a id e a e s la sig u ien te:
ir v is ita n d o lo s v é rtic e s se g ú n un o rd e n to p o ló g ic o .
®6
® ® ® ®
© ®
n o se h a c e n in g ú n c a lc u lo d e d is ta n c ia s . E n o tr o c a s o , e n las lín e a s d e la 3 9 a la 35
4 4 . u tiliz a m o s e l m is m o c á lc u lo q u e e n e l a lg o ritm o d e D ijk s tra p a ra a c tu a liz a r />,. 36 if( tabla! v J.dist == I NF I NI T O )
c u a n d o e llo e s o p o rtu n o . 37 c o n t in u é ;
38
3 9 int cvw • I ( A ris ta ! p . r e c u p e r a r (
40 it( tabla! w J.d ist > tab lal v 1.dist • cvw )
14.5.4 Una ap licació n : análisis d e cam inos críticos 41
42 tablal w J.d ist ■ tabla! v ) .díst * cvw:
E n e s ta s e c c ió n im p le m e n ta re m o s las p ila s y c o la s e m p le a n d o un v e c to r. L o s a lg o
ritm o s re s u lta n te s s o n e x tre m a d a m e n te e fic ie n te s y se n c illo s d e codificar.
15.1.1 Pilas
5 II C lase PilaVec
b c d p 1 11 6 //
7 CONSTRUCCIÓN: s i r . n i n g u n a ieializació n
a c d p (0 | 8 //
a a c d p (0 i
9 // -OPERACIONES PÚBLICAS*.• • • * • • .• ............................
c d p (- l) 10 U void api l a r ( x ) --> In serta x
11 / / void d e s a p ila r( ) --> Elim ina e l ú ltim o elem ento in s e r ta d
F ig u ro 15.1 C om portorrvento d e las rutinas d e las p4as: pita v o c ia ; a p i l a r ( a ) , 12 / / O b ject cim at ) - -> Devuelve e l ú ltim o elem ento i n s e r t a
api la r ( b ) :d esapilar. 13 / / O b j c c t c i m a Y D e s a p l l n r ( ) - - > D e v u e l v e , y e l i m i n a , el e l e m e n t o m a s r
14 / / booiean esVacia l l - -> Devuelve t r u e s i p i l a v a c ia : s i n o , fa
15 / / void v aciar ( ) - - > E lim in a to d o s l o s olemer.tos
16 ¡ f • • • • • • • • • • • • • • * • • • • • • • • • • • • • • ERRORES* * * * .............................................................
17 / / d e s a p i l a r , cima y c im a Y D e sa p ila r s o b r e una p i l a v a c i a
L a F ig u ra 15.2 m u e s tra e l e s q u e le to d e la c la s e P i l a v e c b a s a d a e n u n vector. 18
E n e lla s e e sp e c ific a n d o s a trib u to s . e l V e c t o r . q u e s e e x p a n d e sie m p re q u e es 19 /••
20 • Im plem entación de lasp ila s basada en un v e cto r.
n e c e sa rio , a lm a c e n a lo s e le m e n to s d e la p ila . c i . - r u j D e P l l a e s e l ín d ic e d e la c im a 21 • /
a c tu a l «le la p ila F n u n a p ila v a c ía d ic h o ín d ic e e s - I . E l c o n s tru c to r c o rre s p o n 22 public c la s s PilaV ec impiements Pila
d ie n te s e m u e s tra e n la F ig u ra 15.3. 23 (
L o s m é to d o s p ú b lic o s s e e n u m e ra n e n la s lín e a s 27 a 3 8 d e l e sq u e le to . L a im - 24 public Pilavecl J
25 < / • F i g u r a 1 5 .3 •/ )
p lc m c n ta c ió n «le m u c h a s d e e sta s ru tin a s e s sim p le . L l m é to d o a p i ’ u i se m u e stra
26
e n la F ig u ra 15.4. C u a n d o n o e s n e c e sa rio d o b la r e l ta m a ñ o d e l v e c to r, lo q u e es 27 p u b lic booiean e sV a cia ( 1
un e je r c ic io e s tá n d a r y a e s tu d ia d o , su c ó d ig o se re d u c e a l q u e a p a re c e e n la lín ea 28 { r e t u r n cim aDePila -l; )
9 . R e c u é rd e se , d e la S e c c ió n 1.4.3. q u e e l u s o p re fijo d e l o p e ra d o r - * s ig n ific a 29 p u b lic void vaciar! >
30 { c im a D eP il a ■ -1 ; )
q u e c i m a D e P i i a s e in c re m e n ta p rim e ro , y s u n u e v o v a lo r s e e m p le a p u ra in d ex ar
31 p u b lic v o id ap i l a r ( O bject x )
e l V e c t o r . L a s ru tin a s re s ta n te s so n ig u a lm e n te b re v e s , tal y c o m o se m u e s tra en 32 { / • F ig u r a 1 5 .4 •/ 1
las F ig u ra s 15.5 y 15.6. b.l o p e ra d o r p o stfijo - - e m p le a d o e n la F ig u ra 15.6 sig n i 33 public O b ject cim at > throws D e sb o rd a m ie n to ln fe rio r
fica q u e . a u n q u e c i m a D e P i l a s e d e c rc m e n ta . e s su v a lo r «'riginal e l q u e s e e m 34 { /• Figura 15.5 */ J
p le a p a ra in d e x a r e l V e c t o r . 35 public v o id d e s a p l l a r I I throwa D e sb o rd a m ie n to ln fe rio r
36 { /* F i g u r a 15.5 */ }
C u a n d o e l v e c to r n o s e d u p lic a , c a d a o p e ra c ió n s e re a liz a e n tie m p o c o n sta n te . 37 public O bject c:m aYDesapiiarI » throwa D e sbordam ientolnferior
F o r su p a n e , la c o m p le jid a d «le u n a o p e ra c ió n a p i l a r q u e in c lu y a la d u p lic a c ió n 36 { /• F ig u ra 15.6 • / )
d e l v e c to r e s O ( N ) . S i fu e se n e c e sa ria la d u p lic a c ió n c o n m u c h a fre c u e n c ia , d e b e 39
40 p r í v a t e Object | J elV ector;
ría m o s p re o c u p a m o s ; sin e m b a rg o , e s to c la ra m e n te n o e s a s í, y a q u e la d u p li
41 p r í v a t e i n t cim aD ePila;
c a c ió n d e u n v e c to r d e V e le m e n to s d e b e e s ta r p re c e d id a p o r, a l m o n o s. .V 2 42
o p e ra c io n e s a p i l a r q u e n o n e c e s ita n d e la d u p lic a c ió n d e l v e c to r. C o m o c o n s e 43 static final i n t CAPACIDAD_POR_DEFECTO = 10;
c u e n c ia . p o d e m o s re p a rtir e l c o s te ( X N ) d e la d u p lic a c ió n e n tr e la s o p e ra c io n e s de 44
a p i l a r , a u m e n ta n d o su c o s te sól«» e n u n a p e q u e ñ a c o n s ta n te . E sta té c n ic a recib e 45 p r í v a t e void d u p lic a rV e c to r< I
46 { /• Im plem entación u s u a l, no s e m u estra */ )
el n o m b re d e a n u m iz a c ió n . 47
U n e je m p lo d e a m o r tiz a c ió n e n la v id a r e a l e s e l p a g o d e im p u e s to s . L n lu
g a r d e p a g a r la c u a n tía to ta l e l 15 «le a b ril, e l g o b ie r n o re c ib e e l d in e r o a tra v é s F ig u ra 15.2 Esqueleto d e la c la s e P i l a V e c
«le la s re te n c io n e s . L a c u a n tía to ta l e s la m ism a , la ú n ic a d if e r e n c ia e s c u á n d o
se p a g a n lo s im p u e s to s L o m is m o e s c ie r to p a ra e l tie m p o e m p ic a d o e n la s o p e 1
ra c io n e s a p i l a r . P o d e m o s c o n s id e ra r e l c o s te d e la d u p lic a c ió n e n e l m o m e n to 2 • C o n stru ye la p i l a .
e n e l q u e s e p ro d u c e , o s u p o n e r lo re p a r tid o e n tr e la s o p e r a c io n e s a p i l a r p r e
3 •
4 p u b lic P i la V e c ( )
v ia s . ig u a la n d o s u c o s te . U n a c o ta a m e n i z a d a in d ic a q u e v a lo r a m o s c a d a o p e r a
5 (
c ió n d e u n a s e c u e n c ia c o m p a r tie n d o d e fo rm a ju s ta e l c o s te to ta l. E n n u e s tro 6 e lV e c t o r * n o v O b jo c t ! CAPACIDAD_POR_DEFECTO 1 ;
e je m p lo , u s a n d o e s te c o n c e p to o b te n e m o s q u e e l c o s te d e la d u p lic a c ió n d e l v e c 7 c im a D e P ila = - 1 ;
to r n o e s e n a b s o lu to e x c e s iv o , c o n s e rv á n d o s e d e h e c h o e l c o s te (a m o rtiz a d o ) 8 J
c o n s ta n te . Finura 15 3 C. nnst n i r t r v si n n n r ñ m ^ r r n s rip Ins P i I a s hasodO S Ófl Ufl vector
15.1.2 C o las
* I n s e r t a un nuevo elem ento en l a p i la .
• íporam x e l elem ento a i n n e r t a r .
L a fo rm a m i s se n c illa d e im p le m e n ta r u n a c o la c o n s is te e n a lm a c e n a r s u s e le m e n
p u b lic v oid a p i l a r ( Object x ) to s e n un v e c to r, c o lo c a n d o e l e le m e n to e n c a b e r a e n la p rim e ra p o s ic ió n del
( m ism o (e s d e c ir, e n e l ín d ic e 0 ). S i f i n re p re s e n ta la p o s ic ió n d e l ú ln m o e le m e n to
if( c i m a D e P i l a * 1 == e l V e c t o r . l e n g t h ) d e la c o la , e n to n c e s para in s e rta r u n e le m e n to n o te n e m o s m á s q u e in c re m e n ta r
d u p ilc a rV e c to r ( I; í i n . in s e rta n d o e l e le m e n to e n e s a p o sic ió n . L l p ro b le m a e s q u e la o p e ra c ió n
e l V e c t o r [ * * c im a D e P ila ] = x;
q u i t a r P r i m e r o e s m u y c o s to s a . E llo e s d e b id o a la e x ig e n c ia d e p o s ic io n a r los
10 )
e le m e n to s d e la c o la d esd e e l p rin c ip io d e l v e c to r, c o n lo q u e fo r ra m o s a la ru tin a
Figuro 15.4 M éto d o a p i l a r d e k » P i la s b a sad o s en un vecto r q u i t a r P r i m o r o a d e sp la z a r u n a p o s ic ió n to d o s lo s e le m e n to s d e l v e c to r, u n a vez
e lim in a d o e l p rim e ro .
Ln la F igura 15.7 se m u e s tra c ó m o s e re s u e lv e este p ro b le m a , b a s ta ría c o n in
c re m e n ta r c a b e z a c u a n d o se re a liz a u n a o p e ra c ió n q u i t a r P r i m e r o . e n lu g a r d e
d e sp la z a r to d o s lo s e le m e n to s . E n to n c e s, c u a n d o la c o la tie n e u n ú n ic o e le m e n to ,
Devuelve e l ú ltim o elem ento i n s e r t a d o en l a p i l a . f i n y c a b e z a re p re se n ta n la p o sic ió n e n e l v e c to r d e d ic h o e le m e n to . C o n s is te n
S r e t u r n eL ú l t i m o e l e m e n t o i n s e r t a d o e n l a p i l a . te m e n te . e n u n a c o la v a c ía , f i n d e b e in ic ta lira rs c a c a b e z a - 1 .
Se x c ep llo n D e sb o rd a m ie n to ln íe rio r cuando l a p i l a e s t é v a cia. L sta im p le m e n ta c ió n h a c e q u e ta n to i n s e r t a r c o m o q u i t a r P r i m e r o se e je
7
c u te n e n tie m p o c o n sta n te . El p rin c ip a l p ro b le m a q u e p re s e n ta e s ta c o d ific a c ió n se
p u b lic Object c ío a( 1 throws D eabordanuentolníor ior
( a p re c ia e n la p rim e ra lín e a d e la F ig u ra 15.8. D e s p u é s d e tre s e je c u c io n e s m á s de
i f I onVae ia( ) ) q u i t a r P r i m e r o . n o p o d ría m o s a ñ a d ir m á s e le m e n to s , a u n q u e la c o la (m á s e x a c
t h r o w r.ew D e s b o i d a m i e n t o l n f e r i o r ( “C i m a ’ »; ta m e n te . e l v e c to r q u e la s u s te n ta ) n o e s té re a lm e n te llen a. L a d u p lic a c ió n d e l v ec-
1 r e t u r n e l V e c t o r | cim aDePila |;
I )
: :n
l
1 esV acia( )
1 • Elim ina e l ú ltim o elem ento i n s e rta d o en l a p i l a .
1 • © oxceplion D e sb o rd a m ie n to ln íe rio r cuando l a p i l a e s t é v a c ia . tamarto - 0 cabeza
1
1 p u b lic void desapi l a r < ) throws D esbordam ientolníerior
1 fin
19 if( esV acia( ) )
insertar(al ii
20 t h r o w new D e s b o r d a m i e n t o l n í e r i o r ( "D esopilar* >;
21 cim aD ePila--; i amaño= 1 cabeza
22 )
umaño=2 cabeza
1 /**
2 * Devuelve y e lim in a e l u ltim o elem ento in s e r ta d o
fm
3 * en l a p i l a .
4 * a r e t u r n e l ú ltim o elem ento in se rta d o en l a p i l a qultarPrim oro( ) b
5 * 3exception D esbordam ientolníerior si la p ila e s tá vacia.
l a ma ñ o - l cabeza
7 p u b lic O b ject cim aY D esap ilar( I throws D e sb o rd a m ie n to ln íe rio r
8 (
9 if( esV acia( ) ) í :n
'0 t h r o w new D e s b o r d a m i e n t o l n f e r i o r ( "CimaYDesapilar* ); qu3tarPr-m erc-( )
11 r e tu r n e lV ec to rl cim aD ePila-- |;
1
12 > i amaño =0 cabeza
lla m a d a a n e w . P a ra im p le m c n ta r e l m é to d o d e s a p i l a r , b a s ta c o n d e sp la z a r la
c im a d e la p ila a l se g u n d o e le m e n to d e la lista (s i e s q u e e x is te ). L a p ila v a c ía se
15.2 Im plem entaciones c o n listas enlazadas
re p re se n ta m e d ia n te la lista v acía .
C la ra m e n te , c a d a o p e ra c ió n e s c o n s ta n te , y a q u e a l re s trin g ir la s o p e ra c io n e s
U n a a lte rn a tiv a a la im p le m e n ta c ió n c o n tig u a e m p le a n d o v e c to re s, c o n s is te e n u ti
a l p rim e r e le m e n to d e la lista , c o n se g u im o s q u e to d o s lo s c á lc u lo s s e a n in d e p e n
liz a r u n a lista e n la z a d a . R e c u e rd e d e la S e c c ió n 6 .4 . q u e e n u n a lista e n la z a d a a l
d ie n te s d e l ta m a ñ o d e la m ism a . T o d o e s to s e c o n s e r v a e n las im p le m e n ta c io n e s
m a c e n a m o s c a d a e le m e n to e n u n o b je to d is tin to , q u e c o n tie n e a d e m á s u n a re fe re n
e n Jav a.
c ia a l s ig u ie n te o b je to d e la lista.
L a F ig u ra 15.17 m u estra la d e c la ra c ió n d e lo s n o d o s d e la lista. U n N o d o L i s t a
L a v e n ta ja d e la s lis ta s e n la z a d a s e s q u e e l e x c e s o d e g a s to d e m e m o ria e n q u e
e s tá c o m p u e s to p o r d o s atrib u to s: d a t o g u a rd a u n e le m e n to y s i g u i e n t e a lm a
se in c u rre s e re d u c e a u n a re fe re n c ia p o r e le m e n to , m ie n tra s q u e e l a lm a c e n a m ie n
c e n a u n a re fe re n c ia q u e a p u n ta a l s ig u ie n te n o d o d e la lista. S e d isp o n e d e d o s
to c o n tig u o e n v e c to re s e x ig e un e s p a c io e v e n tu a lm e n te m ay o r, ig u a l a ! n ú m ero
c o n stru c to re s p a ra N o d o L i s t a . E l p rim e ro d e e llo s s e p u e d e e m p le a r e n la fo rm a
a c tu a l d e p o sic io n e s v a c ía s d e l v e c to r (a d e m á s d e a lg o d e m e m o ria a d ic io n a l d u
sig u ie n te
ran te e l p ro c e s o d e d u p lic a c ió n ). E s c ie r to q u e e n J a v a e s ta v e n ta ja e.s p o c o re le
v an te y a q u e las p o s ic io n e s v a c ía s d e l v e c to i re p re s e n ta n re fe re n c ia s n u la s , q u e
N o d o L i s t a n o d o l = new N o d o L i s t a ( x ) ;
c o n su m e n m uy p o c o e s p a c io . S in e m b a rg o , e n o tro s le n g u a je s d e p ro g ra m a c ió n ,
e s ta v e n ta ja s e r ía im p o rta n te y a q u e la s p o sic io n e s v a c ía s s u e le n g u a rd a r in s ta n d o n d e x e s u n e le m e n to . E l s e g u n d o p u e d e u sa rse p a ra im c ia liz a r la re fe re n c ia s i
c ia s d e o b je to s n o in ic ia liz a d a s . q u e c o n su m e n u n n o ta b le e sp a c io . A d e m á s d e p o r g u ie n te p o r m e d io d e u n a re fe re n c ia N o d o L i s t a ( o n u i l >:
e s te m o tiv o , las im p lc m e n ta c io n e s c o n listas e n la z a d a s s e d is c u te n p o r la s s ig u ie n
te s razo n es: N o d o L is ta nodo2 = new N o d o L is ta ( x . n o d o l ) ;
1 /• •
2 • D e v u e lv e y e l i m i n a e l e l e m e n t o más a n t i g u o i n s e r t a d o
3 • e n -a c o l a .
Figura 15.20 im ptem enfación d e u n a c o la b a s a d o en u n a lista en lazad a,
4 * S re c u rn e l elem ento r a s a n tig u o i n s e rta d o en l a c o la .
5 • t í e x c e p t i o n D e s b o r d a m l e n t o l n f c r i o r s i l a c o l a e s t á v a c ia .
ckage E s tru e tu ra s D a to s ; 6 •
7p u b l i c O b je c t q u it a r P r im e r o ! i throw o D o s b o r d a m ie n t o ln f e r io r
p o r t E x c e p c io n e s .• ; 8 <
9 i f l e s V a c ia ! » >
C la s e C o la L i 10 th ro w new D e s b o r d a m ie n t o ln íe r io r t 'Q u it a r P r im e r o * I ;
11
CONSTRUCCIÓN: s í r . n in g u n a I n i c i a l i r a c ió n 12 o b jo c t v a lo r D o v u o lt o ■ c a la z a . d a t o ;
13 cabeza = c ab eza.sig u íen te;
.................. ..................... OPERACIONES PÚ B LIC A S................................................................ 14 r e t u r n v a lo r D o v u o lt o :
v o id I n s e r t a r í x t
O b je c t p r im e ro ( )
- - > In s e r t a x
- - > D e v u e lv e e l e le m e n to más a n t ig u o in s e r t a d o
15 )
O b je c t q u lt a r p r jp w r o t j - - > D e v u o lv e y e l im in a e l e le m e n to más r e c ie n t e Figuro 15.22 M éto d o q u i t a : P r i m e r o po ro la c la se C o l a b a s a d a en u n a lista
b o o le a r. e s V a c ia ( ) D e v u e lv e t r u e s i c o la v a c i a ; s i n o , f a ls e e n la z a d a ( C o l a L i) .
v o íd v a c ia r < ) - - > E lir n ln a to d o s lo s e le m e n to s
. . . . . . . . . .............. • ERRORES * ...........
p r im e r o o q u it a r P r im e r o s o b r e una c o la v a c ía 1 /* •
2 • Dovuolv* e l ú l ti m o e le m e n to i n s e r t a d o en l a c o la .
3 • No m o d i f i c a l a c o l a .
Im p le m e n ta c ió n d e l a s c o la s b a s a d a e n u n a l i s t a e n la z a d a . 4 • S re tu rn e l ú ltim o elem ento in se rta d o on la c o la .
5 * éexception D esbordam ientolníerior si i a cola e s tá vacia.
b l i c c l a s g C o l a L i im piem er.es C o la
6 •/
p u b lic C o la L it ) 7 p u b lic Object prim ero! ) throw s D estordariiontolnle* ior
i v a c ia r ! ) ; ) 8 (
9 i f < o s V a c ia ! ) )
p u b li c b o o le a n e s V a c ia ! > 10 t h r o w newD e s b o r d a m i e n t o l n f e r i o r t "Primero* ):
f re tu rn cab eza » * n u i l ; J 11 r e t u r n c a b e z a .d a to ;
p u b li c v o id v a c i a r ( ) 12 )
l cabeza = f in = n u i l ; |
p u b li c O b je c t q u it a r P r im e r o ! l th ro w s D e s b o r d a m ie n t o ln íe r io r Figura 15.23 M éto d o p r im e r o p o ra la c la se C o la b a s a d a on u n a Iota e n la z a d a
{ / ’ F ig u r a 2 5 . 2 2 •/ | (ColaLi)
p u b li c O b je c t p r im e r o ! l th ro w s D e s b o r d a m io n t o ln íe r io r
( / * F ig u r a 1 5 .2 3 •/ J
p u b l i c v o id i n s e r t a r ( O b je c t x )
[ / ■ F ig u r a 1 5 . 2 5 •/ 15 .3 C o m p a r a c ió n d e lo s d o s m é to d o s
p r i v a t e N o d o L is t a c a b e z a ; U is o p e ra c io n e s d e las d o s v e rsio n e s p re s e n ta d a s, h u sa d a s e n v e c to re s y listas e n
p r iv a t e N o d o L is ta f i n ; la z a d a s. s e e je c u ta n e n tie m p o c o n s ta n te . P o r ta n to , so n tan rá p id a s c o m o p a ra no
s u p o n e r u n c u e llo d e b o te lla p a ra n in g ú n alg o ritm o . C o m o c o n se c u e n c ia , ra ra
15.21 E sq u e le to d e l a c la s e C o l a b a s o d a e n u n a listo e n la z a d a ( C o l a L i ) . m en te im p o n a q u é v e rs ió n s e e s té e m p le a n d o .
E l se g u n d o in c o n v e n ie n te a p a re c e e n o tro s le n g u a je s d e p ro g ra m a c ió n , p e ro n o
e n Ja v a . C u a n d o d u p lic a m o s un v e c to r, n e c e sita m o s te m p o ra lm e n te tre s v e c e s m á s
e s p a c io d e lo q u e la c a n tid a d d e d a to s p o d ría s u g e rir E s to e s d e b id o a q u e c u la
d u p lic a c ió n s e n e c e sita m e m o ria p a ra a lm a c e n a r ta n to e l v e c to r v ie jo c o m o e l n u e
Ames v o (d e ta m a ñ o d o b le ). M ás a ú n . si la c o la a lc a n z a u n g ra n ta m a ñ o , e l ín d ic e de
o c u p a c ió n d e l v e c to r e s ta rá e n tr e e l 5 0 y e l 100 p o r c ie n to : e n m e d ia , e s to su p o n e
q u e e s tá lien»» e n u n 75 p o r c ie n to , e s d e c ir, q u e p o r c a d a tre s e le m e n to s d e l vector,
u n a p o sic ió n e s tá v acía . C o m o c o n se c u e n c ia , e l e sp a c io p e rd id o e n m e d ia e s e l 33
p o r c ie n to d e l u tilizad o , y c u a n d o la ta b la e s tá m e d io lle n a lle g a a se r d e l 10 0 por
c ie n to . E n J a v a e s to n o su p o n e un g ran p ro b lem a, y a q u e c a d a e le m e n to del v ecto r
e s só lo u n a re fe ren cia. E n o tro s le n g u ajes, c o m o C + + . lo s o b je to s s e a lm a c e n a n d i
rec ta m en te. e n lu g a r d e se r re fe re n c ia d o s. E n e sto s le n g u ajes, e l e s p a c io perd id o
Después p u ed e se r sig n ific a tiv o , c u a n d o lo c o m p a ra m o s c o n las v e rsio n e s b a sa d a s e n lisias
e n la z a d a s, q u e req u ieren ú n ic a m e n te u n a re fe re n c ia e x tra p o r c a d a elem en to .
.aDoble e x t e n d s ColaVec
Ejercicios
.c v o i d a n y a d i r P o r D e l a r . t e ( C b j e e t x *
'• E j e r c i c i o 1 5 .5 */ J C uestiones breves
.c v o i d a n y a d i r P o r D e t r a 3 l O b j e c t x \
m sortari x l ; ) 1 5 .1 . D ib u je e l v a lo r d e la s e s tru c tu ra s q u e so p o rta n la im p le m e n ta c ió n d e las p i
.c O b j e c t e l i m i n a r P o r D e l a n t e ! I t h r o w a Desbordaría e n t o l n t e r io r la s y d e la s c o la s «para las im p le m c n ta c io n e s c o n v e c to re s y c o n lis ta s e n
retu rn q u ita r P r im e r o ! I; ) la z a d a s) tra s c a d a p a s o d e la sig u ie n te s e c u e n c ia d e o p e ra c io n e s; a ñ a d ir i I ).
,c O b j e c t e l i m i n a r PorD et r a s { ) t h r o w s Desbordara i e n t o I n í e r i o r a ñ a d ir i 2 ). e lim in a r . a ñ a d ir i3). a ñ a d ir i4 ). e lim in a r, e lim in a r, a ñ a d ir i5 ). En
'• E je rc ic io 15.5 • / }
la im p le m e n ta c ió n c o n v e c to re s, s u p o n e r q u e e l ta m a ñ o in ic ia l d e la e s tru c
ic O b j e c t v e r F i n a l ! ) t h r o w s D e s b o r d a m i e n t o l n f e r i o r
'• E je r c ic io 15.5 •/ } tu ra e s tres.
jVacia, v a c i a r y prim ero son métodos heredados
Problem as p rácticos
:ias© d e tas co la s dobles C o l a D o b l e d e rivo d a a partir d e C o l a V e c
15.3. C o m p a re lo s tie m p o s d e e je c u c ió n d e las d o s v e rs io n e s d e la c la s e P i l a , la
b a sa d a e n v e c to re s y la b a sa d a e n listas e n la z a d a s. E m p le e o b je to s d e tip o
1. L a im p le m e n ta c ió n c ir c u la r d e v e c to re s re q u e rid a e n e l c a s o d e las c o la s m a c ió n a l p ro b le m a ?
15.8. E l c ó d ig o d e la d u p lic a c ió n d e v e c to re s d e la c la s e C o l a V e c e s e x c e s iv a
p u e d e h a cerse fá c ilm e n te d e fo rm a e rró n e a c u a n d o se in ten ta re d u c ir e l c ó
m e n te c o s to s o d e b id o a las re p e tid a s lla m a d a s a i n c r e m e n t a r . E scrib a
d ig o necesario . P o r e je m p lo , n o d e b e e v ita rse e l u s o d e t a m a n y o A c t u a l .
u n a v e rs ió n m á s e fic ie n te , e v ita n d o to d a s las lla m a d a s a i n c r e m e n t a r .
in te n ta n d o c a lc u la r e l ta m a ñ o d e l v e c to r a p a rtir d e f i n y c a b e z a .
P a ra h a c e rlo d e b e c o n tro la r c u a n d o s e e m p ic a la c irc u la rid a d . D e se r así.
2. U tiliz a r u n a im p le m e n ta c ió n d e e s ta s e s tru c tu ra s e n la q u e n o p u e d a g a
e m p le e d o s b u c le s s e p a ra d o s p a ra re a liz a r la c o p ia . E n c u a lq u ie r o tro c a so ,
ra n tiz a rs e e l a c c e s o a la e s tru c tu ra d e d a to s e n tie m p o c o n sta n te e s u n g r a
v e e rro r. N o e x is te m n e u n a lu s tific a c ió n p a ra u n a in e fic ie n c ia tal. u se un s o lo b u cle.
1 5 .9 . U sa r u n V e c t o r pura im p le m c n ta r u n a c o la b a sa d a e n u n v e c to r e s a lg o C A P Í T U L O
p ro b le m á tic o , y a que e l m é to d o s e t S i z e n o e s lo q u e s e n e c e sita . M u e s
tre c ó m o re d istrib u ir lo s e le m e n to s d e la c o la tra s la o p e ra c ió n s e t S i z e .
d e m o d o q u e s ó lo c a m b ie n , a lo s u m o , la m ita d d e la s re fe re n c ia s del
V e c t o r . (N o o b s ta n te , e s to sig u e e m p le a n d o m á s m o v im ie n to s q u e la im
16 Listas enlazadas
p le m e n ta c ió n q u e n o u s a la c la s e V e c t o r . )
P rácticas d e p ro g ra m a c ió n
15.10. U na c o la d o b le re s trin g id a p e rm ite in s e rta r e le m e n to s e n a m b o s e x tre m o s
d e la e stru c tu ra , p e ro só lo p e rm ite a c c e s o s y e lim in a c io n e s e n la c a b e z a .
S e p id e h a c e r lo sig u ie n te :
a) E m p le e h e re n c ia p a ra d e riv a r e s ta n u e v a c la s e a p a rtir d e C o l a .
n e l C a p ítu lo 1 5 s e m o s tró q u e s e p u e d e n u s a r las lis ta s e n la z a d a s p a ra a l
E
/>) E m p le e h e re n c ia p a ra d e riv a r e s ta n u e v a c la s e a p artir d e C o lu D o b l e.
m a c e n a r e le m e n to s d e fo rm a n o c o n tig u a , l^as lis ta s e n la z a d a s u sa d a s e n ese
1 5 .1 1 . S u p o n g a m o s q u e d e s e a m o s a ñ a d ir la o p e ra c ió n e n c o n t r a r M in im o (p e ro
c a p ítu lo e ra n sim p le s d e b id o a q u e to d o s lo s a c c e s o s s e re a liz a b a n e n uno
n o e l ir a m a r M in im o ) e n e l re p e rto rio d e la s p ilas. S e p id e h a c e r lo s i
d e lo s d o s e x tre m o s. E n e s te c a p ítu lo v erem os:
g u ien te:
• C ó m o p e r m itir e l a c c e s o a c u a lq u ie r e le m e n to u s a n d o u n a lista e n la z a d a g e
a) E m p le e h e r e n c ia p a ra d e r iv a r la n u e v a c la s e , e im p le m e n te
neral.
e n c o n t r a r M in im o d e m o d o q u e se re c o rra s c c u e n c ia lm e n te la p ila
• L o s a lg o ritm o s g e n e ra le s u sa d o s p a ra las o p e ra c io n e s so b re lis ta s en laz ad as.
d e ele m e n to s.
• C ó m o la c la s e ite ra d o ra p ro p o rc io n a u n m e c a n is m o s e g u ro p a ra re c o rre r y
/>) E n lu g a r d e e m p le a r h e re n c ia , im p le m e n te la n u e v a c la s e e m p le a n d o
a c c e d e r a las listas e n la z a d a s.
d o s p ila s, ta l y c o m o se p ro p u s o e n e l E je rc ic io 6 .5 .
• V a ria c io n e s d e las lista s, c o m o las lis ia s d o b le m e n te e n la z a d a s y las lis ta s
r) E m p le e h e re n c ia , j u n t o c o n e l a lg o r itm o d e s c rito e n e l E je rc ic io 6 .5 .
e n la z a d a s c i n u la res.
p a ra la d e riv a c ió n d e la n u e v a clase.
• C ó m o p o d e m o s u s a r la h e re n c ia p a ra d e riv a r u n a c la s e d e lis ta s e n la za d a s
15.12. S u p o n g a m o s q u e q u e re m o s a ñ a d ir la o p e ra c ió n e n c o n t r a r M in im o (p e ro o rd e n a d a s .
n o e l im in a r K in ir o o ) e n e l re p e rto rio d e la s c o la s d o b le s . S e p id e h a c e r
lo sig u ien te:
16.1 Id e as básicas
a) E m p le e h e r e n c ia p a ra d e r iv a r la n u e v a c la s e , e im p le m e n to
e n c o n t r a r M in im o d e m o d o q u e s e re c o rra s e c u e n c ia lm e n te la p ila
E ste c a p ítu lo im p le m e n ta las listas e n la z a d a s y p e rm ite a c c e s o g e n e ra l (o p e ra c io
d e e le m e n to s . D e b e h a c e r la s e le c c io n e s a d e c u a d a s p a ra d e c id ir q u e n es d e in se rc ió n , e lim in a c ió n y c o n s u lta a rb itra ria s d e u n e le m e n to ) a la lista. La
a trib u to s s e rá n p ro te g id o s. lista e n la z a d a b á s ic a c o n s ta d e u n a c o le c c ió n d e n o d o s situ a d o s e n la m e m o n a d i
h) E n lu g a r d e e m p le a r h e re n c ia , im p le m e n te la n u e v a c la s e e m p le a n d o n á m ic a c o n e c ta d o s e n tre sí. E n u n a lis ta s im p le m e n te e n la z a d a , c a d a n o d o se c o m
c u a tro c o la s . S i u n a e lim in a c ió n v a c ía u n a c o la , d e b e n re o rg a n iz a rs e p o n e d e u n d a to y u n a re fe re n c ia a l sig u ie n te n o d o d e la lista. El ú ltim o n o d o d e la
lo s e le m e n to s re sta n te s. lis ta c o n tie n e u n a re fe re n c ia sig u ie n te n u l 1. S u p o n d re m o s q u e e l n o d o vien e d a d o
15.13. Im p le m e n te un a p p le t q u e m u e s tre c ó m o v a ría e l e s ta d o d e u n a p ila c u a n p o r la d e c la ra c ió n N o d o L is t a d e l C a p ítu lo 15:
d o s e a p lic a n so b re e lla la s o p e ra c io n e s b á sic a s. In c lu y a u n a G U I q u e p e r
m ita a l u s u a rio e s p e c ific a r la s o p e ra c io n e s. A d e m á s , d e b e p e rm itirse la c l a s s N o d o L is t a
e le c c ió n « m ed ian te u n a c o m p o n e n te d e e le c c ió n ) e n tr e la im p le m e n ta c ió n l
b a sa d a e n v e c to re s y la im p le m e n ta c ió n b a sa d a e n lista s e n la z a d a s. Object d a to ;
1 5 .1 4 . R e p ita e l E je rc ic io 15.13 p a ra e l c a s o d e u n a c o la . N o d o L is t a s i g u i e n t e ;
II C o n stru cto re s
)
L a e lim in a c ió n s e p u e d e e je c u ta r c o n u n s im p le c a m b io d e u n a re fe re n c ia .
L a s d o s o p e ra c io n e s b á s ic a s q u e s e p u e d e n re a liz a r so n la in s e rc ió n y elim in a c ió n L a F ig u ra 16.3 m u e s tra q u e p a ra e lim in a r e l e le m e n to x d e la lista e n la z a d a , h a c e
d e un e le m e n to a rb itra rio x. m o s q u e a c t u a l s e a e l n o d o a n te r io r a x . tra s lo q u e h a c e m o s q u e la re fe re n c ia
E n e l c a s o d e la in s e rc ió n , d e b e m o s d e te rm in a r d ó n d e \ a a te n e r lu g ar la in s e r s i g u i e n t e d e a c t u a l s a lte p o r e n c im a d e x. E s to s e e x p re s a m e d ia n te la s i
c ió n . S i p a rtim o s d e u n a re fe re n c ia a a lg ú n n o d o d e la lista, e l lu g a r d o n d e m á s g u ie n te in stru c c ió n
fác ilm en te se p u e d e in s e rta r es e l in m e d ia ta m e n te p o s te rio r a e s c e le m e n to . C o m o
a c t u a l .s ig u ie n te = a c tu a l.s ig u ie n te .s ig u ie n te ;
e je m p lo , e n la F ig u ra 16.2 s e m u e s tra c ó m o in s e rta m o s x d e s p u é s d e l e le m e n to a
e n u n a lista e n la z a d a . D e b e m o s lle v a r a c a b o lo s sig u ie n te s p a so s:
L a lista . . . a , x , b , . . . e s a h o ra . . . a . b , . . . .
E sto resu m e e l c o m p o rta m ie n to b á s ic o d e in s e rta r y e lim in a r e n p o sic io n e s a rb i
tmp = new N o d o L i s t a ( ) ; I I C re a r un nodo nuevo tra ria s d e u n a lista e n la z a d a . L a p ro p ie d a d fu n d a m e n ta l d e las listas e n laz ad as es
tm p.dato = x; / / C o lo c a r x e n e l campo d a t o q u e se p u ed en h a c e r c a m b io s e n u n a lista re a liz a n d o una c a n tid a d c o n sta n te d e m o-
tm p.siguiente = a c tu a l.sig u ie n te ; / / El s i g u i e n t e a l nodo x e s b v im ie n to s d e d a to s , lo cual e s u n a g ra n m ejo ra re s p e c to a la im p le m e n ta c ió n usando
a c t u a l . s i g u i e n t e = tm p; / / E l s ig u ie n te a l nodo a es x v e cto re s, y a q u e la c o n tig ü id a d e n un v ecto r im p lic a q u e siem p re q u e s e añ a d e o
e lim in a u n e le m e n to , se d e b e n d e sp la z a r lo d o s lo s e le m e n to s q u e le siguen.
1 / / D e v u e lv e e l número d e e l e m e n t o s q u e c o n t i e n o l a L l s t a
2 s t a t i c p u b lic in t lo n g L israt L istaE r.larada la L is ta )
3 I
F ig u ro 16.5 Lela v a c ía c u a n d o se usa un nod o c a b e c e ra
4 m t l o n g i t u d = 0;
5 L i s t a E n . a z a d a t t & r i t r = new L l s r a E n i a z a r i a l t e r t l a L i s t a );
6
16.1.2 Clases iteradoras 7 for< itr.prim ero! I; itr.estaD en tro l ); itr.avanzar! ) I
0 long1t ud• * j
9 re tu rn ionqitud:
1.a e s tra te g ia p rim itiv a h a b itu a l id e n tific a u n a lista e n la z a d a c o n u n p u n te ro a l n o 10 )
d o c a b e c e ra . E n to n c e s se p u e d e a c c e d e r a c a d a e le m e n to in d iv id u a l d e la lista p ro
p o rc io n a n d o u n p u n te ro a l n o d o q u e lo c o n tie n e . El p ro b le m a c o n e s ta e s tra te g ia Figuro 16.6 M é to d o q u e d e v u e lv e la lo n g itu d d e u n a lista
e s q u e e s d ifíc il c o m p ro b a r si s e p ro d u c e n e rro re s. U n u s u a rio p o d ría c a m b ia r un
p u n te ro d e fo rm a q u e a p u n ta s e a a lg o q u e e s tá e n o tra lista, l i n a fo rm a d e g a ra n ti
z a r q u e e s to n o p u e d e p a sa r e s a lm a c e n a r la p o s ic ió n a c tu a l c o m o p a rte d e l a c la s e 16.2 Im plem entación en Ja v a
L i s t a . P a ra e llo , a ñ a d im o s u n s e g u n d o a trib u to , a c t u a l . E n to n c e s, p u e s to q u e
to d o s lo s a c c e s o s a la lista s e re a liz a n a tra v é s d e lo s m é to d o s d e la c la s e , p o d em o s C o m e n z a m o s la im p le m e n ta c ió n d e la s lis ta s e n la z a d a s m ostrand»* e l e s q u e le to
e s ta r s e g u ro s d e q u e a c t u a l sie m p re re p re s e n ta u n p u n ten » a u n n o d o d e la lista, d e su c la s e . Im p le m e n ta m o s la in te rfa z d e s c r ita e n la S e c c ió n 6 .4 . L a c la s e
un p u n te ro a l n o d o c a b e c e ra o b ie n e s ig u a l a n u i l . L i s t a E n i a z a d a s e m u e s tra e n la F ig u ra 16.7. E n la lin e a 2S. d e c la ra m o s e l ú n ic o
E ste e s q u e m a tie n e u n p ro b le m a : p u e s to q u e so la m e n te se d is p o n e d e u n a p o a trib u to d e la c la s e , esl»* e s. e l p u n te r o a l n o d o c a b e c e ra .
sic ió n . n o s e s o p o rta e l c a s o e n q u e d o s a e ra d o r e s n e c e site n a c c e d e r in d e p e n d ie n El c o n s tru c to r d e la lin c a 2 0 a s ig n a m e m o ria a l n o d o c a b e c e ra . O b s e rv e q u e el
te m e n te a la lis ta . U n a fo rm a d e e v ita r e s te p ro b le m a c o n s is te e n d e fin ir u n a c la se a trib u lo d a t o d e l n o d o c a b e c e ra a lm a c e n a la re fe re n c ia n u i l . S e d e c la ra n d o s
d e r a d o r a se p a ra d a . L a c la s e L i s t a n o m a n te n d ría e n to n c e s n in g u n a n o c ió n de m é to d o s, e s v a c i a y v a c i a r , a m b o s c o n s is te n te s e n u n a s o la lín ea. L a c la s e
p o s ic ió n a c tu a l y so la m e n te c o n te n d ría lo s m é to d o s q u e tra ta n a la lista c o m o u n a <u t a E n l a z a d a e s sim p le p o rq u e la m a y o r p a rte d e l tra b a jo se tra s la d a a la c la s e
u n id a d , c o m o e a V a c i a y v a c i a r . L a s ru tin a s q u e d e p e n d e n d e l c o n o c im ie n to de iterad o ra.
¿ a c k a g c K st i u c t u r a o P o t o i r . -
1 ix»ckd<j~ Km» r u t ' t u r r t i i H a i O t t :
2 .r t p o r t E x c e p c l e n e s . • :
3 '/ Clano LixtaKnlaxada
4 / C lase L iacaE nlazaC alcer: m antiene la ‘p o s i c i ó n a c t u a l '
5 / CONSTRUCCIÓN: n i n I n i c i a l l z a d o r
6 ' / £1 a c c e s o s e r e a l i r a a t r a v é s d e la c l a s e LlstaEr..azada!r«*: CCNSTRUCC10 i ¡ : c o n i á LlSC«Enlazada a »a que L i f l t a l t e r
e s r a p e : «sanen te m e r t e lig a d a
8 // ..................................................OPERACIONES PUBLICAS....................................................
9 b o o i e a n e s V a c i a i i - - > D e v u e l v e t r u e s i *rs v a c ; a ................................................ OPERACIONES P U B LIC A S......................................
10 / / void vaciar < » - - » K l i s j n a Codos l o a v l e o e n t O B voiJ in s e rta n x l --> I n s e rta x t r a a la p o sic ió n a c tu a l
]j ^ • • • • • • • • • • • • • • • • • • • • • • • • • « Pfi s ••*•••**•••••••••••••••••• v o :J elim inan. x i — > E linlr.a x
12 No h a y * i r o r + * ialvi. booiean C unear( x i --> Coloca a c t u a l p a r a podar v e r x
13 ' voló cero) * — > Coloca a c t u a l a n te s de la p o s i c ió n 1
/ s'óid p r : n e r o i 1 - - * C o l o c a a c t u a l e n ia p o s i c i ó n 1
15 * Imj»lenn’n t a c i ó n d e l a » l i s t a s u s a n d o 1 l i t a s e n l a r a d a n c o n n o d o v oid avanza i « i - - » Avanza
16 • c a b e c e r a . E* a c c e s o a l a l i s t a e s v í a L i s t a E n i a t a d a l t e r « Ooo-éaJ< é sia L* e x itro i i T ru e s i e s ana p o s ic ió n v a ia a a
J b je c t i ocuj>«> r a i - • E lem en to en La t r a i c i ó n a c t u a l
18 p u b l i c c l a s s L lS i«E nlazada Implemente L ista ............... * .....................................ERRORES........................................................................
19 { >' E x c e p c i o n e s p o r a r c e s o e , . n a p r e í o n a n o <*1 ( m i r a c i o n e s l l é g a l o s .
20 p u b lic LlfltaEnlaxada ( »
21 I c a b e c e r a = new N o d o L i s t a i n u i l 1: | 22 ••
sa rio e je c u ta r la s e g u n d a m itad . I t r .siguiente - itr.sig u ien te,sig u ien te; / / Elim inación
N n álo g am cn te. e l m é to d o e l i m i n a r .le la F ig u ra U>.I4 b u s c a e l e le m e n to x. actual = laL lnta.cabecera: <> I n i c i a l i z a a c t u a l
20 )
A l h n a l d e l b u c le , i t r o b ie n a p u n ta al n o d o a n tc n o r a l q u e c o n tie n e x . o b ie n ai
ú ltim o n o d o , si n o s e h a e n c o n tr a d o x . E n to n c e s s e lle v a a c a b o la e lim in a c ió n Figuro 16.14 R utina e l i m i n a r p a ra t a closo L i o t a E n l a z a d a l t e r
u sa n d o e l a lg o ritm o d e s c rito p re v ia m e n te El re s to d e la s ru tin a s >c m u e s tra n e n la
F ig u ra 16.15. S o n to d a s e lla s ru tin a s m u y se n c illas 1 /••
2 • Devuelve el e ié m en to almacenado e n la posición a c t u a l .
3 • ¿ r e t u r n «1 e!*»rr. ento a l m a c e n a d o o n u i l si l a posición
1 4 * actual n o e s ta en l a l i s t a .
2 • Inserta t r a s la p o s i c i ó n a e r i a l . 5 •/
3 • actual ap u n ta a l nodo i n s e r ta d o ron é x i t o . 6 p u b lic Object recuperar! >
4 • 'Jparum x «1 elem ento a i n s e r t a r . 7 <
5 • U.ixcop' io n K lener.toM oEr.rontrado s i . a p o s i c i ó n a c t u a l ya n u l l 8 re tu rn estaD entrOt I ? actual.dato : nuil;
6 • 9 )
P a ra re a liz a r u n a im p le m e n ta c ió n c o m p le ta d e u n a lista d o b le m e n te e n la z a d a ,
n e c e s ita m o s d e c id ir q u é o p e ra c io n e s s e van a s o p o rta r. E s ra z o n a b le e s p e r a r que
h a y a e l d o b le d e o p e ra c io n e s q u e e n las listas e n la z a d a s sim p le s. C a d a p ro c e d i-
En Internet
Resumen
L a c la s e d e lis ta s e tila /a d a s . in c lu y e n d o las listas e n la z a d a s o rd e n a d a s , e s tá d is p o
En e s te c a p ítu lo s e lian im p le m e n ta d o las lista s e n la z a d a s u s a n d o u n a c la s e do n ib le e n e l d ire c to rio Ü a ta S tr u c tu r c s . E n el d ire c to rio < h a p t e r l 6 s e p ro p o rc io n a
ra d o ra . N u e s tr a c la s e ite ra d o r a L i s t a i t o r tr a b a ja c o n la c la s e L i s t a . C u a l un p ro g ra m a d e p ru e b a q u e ta m b ié n in c lu y e los m é to d o s d e la F-igura 16 .6 y d e la
q u ie r o p e ra c ió n q u e d e p e n d a d e a lg u n a m a n e r a d e l n o s ic io n a m ie n to e n la lis ta se l i»iira 16 I I v i*l n n io n m n d e la l-i»iira 16 ' I
16.10. Im p le m e n te u n a c la s e P í l a e fic ie n te u s a n d o u n a L i s t a E n l a z a d a c o m o
Linkedl.isl.java C o n tie n e la im p le m e n ta c ió n m e d ia n te lista s e n lu /a a trib u to . N e c e sita rá u n ite ra d o r L i s t a E n l a z a d a l t e r . q u e p u e d e s e r o
d as d e la s lisia s (tra d u c id a p o r L i s t a E n l a z a d a ) . b ie n u n a tr ib u to o u n a v a ria b le lo c a l e n a q u e lla s ru tin a s q u e lo n ecesiten .
l .i n k c d l .i s t l t r .j u v a C o n tie n e la im p le m e n ta c ió n m e d ia n te listan e n la 16.11. Im p lem en te una c la s e C o l a e fic ie n te u sa n d o (c o m o e n e l E je rc ic io 16.10):
z a d a s d e u n ite ra d o r p a ra las lisias (tra d u c id o p o r
L i s t a E n l a z a d a l t e r ). a) U n a lis ia e n la z a d a c a e r a d o r e s a p ro p ia d o s . ¿ C u á n to s d e e s to s llo ra
S o r t l .i s t l f r .j a v u d o re s d e b e n s e r a tr ib u to s p a ra c o n s e g u ir u n a im p le m e n ta c ió n e f i
C o n tie n e la im p le m e n ta c ió n d e u n ite ra d o r p a ra lisias
o rd e n a d a s (tra d u c id o p o r l i s t a i t e r O r d ) . c ie n te ?
T e s t l .i s t . ja v a C o n tie n e un p ro g ra m a d e p ru e b a p ara la s lisias h) U n a lista d o b le m e n te e n la z a d a e « o ra d o re s a p ro p ia d o s.
" h ic h l n s e r t .ja v a C o n tie n e la ru tin a d e la F ig u ra 16.21.
16.12. Im p le m e n to r e t r o c e d e r p a ra las listas e n la z a d a s sim p le s. O b s e rv e que
la rd a rá u n tie m p o lineal.
16.13. Im p le m e n to las lis ta s e n la z a d a s sin n o d o c a b e c e ra .
Ejercicios
1
a
Ir a l principio.
A ñ ad ir texto tras la (¿neo a c tu a l h a sta enco ntrar un
puntoO
17 Árboles
d Borrar lín ea a c tu a l
dr num man Borrar vanas lineas.
f ñame C a m b ia r e l nom bre del fichero a c tu a l (p a ro la siguiente
esentura)
g num Ir a u n a linea.
h O b te n er a yu d a
i C o m o c o n c a te n a r pero a ñ a d e ios lin eas antes d e la lí
n e a actu al.
m nuir. M o ver la fcnea a c tu a l después d e otra anea
mr n u m n u m m a n M o ver varias líneas co m o u n a u nid ad después d e otra E l á rb o l e s u n a e s tru c tu ra fu n d a m e n ta l e n la c o m p u ta c ió n C a s i to d o s los s i s
linea te m a s o p e ra tiv o s a lm a c e n a n lo s fic h e ro s e n á rb o le s o e n e s tru c tu ra s d e a s
n A ctiva r y d e sa ctiva r la num eración d e líneas p e c to a rb ó re o . L o s á rb o le s se u s a n ta m b ié n e n d is e ñ o d e c o m p ila d o re s , p ro
P Imprimir la lín ea a c tu a l c e s a m ie n to d e te x to s y a lg o ritm o s d e b ú sq u ed a. E n e l C a p ítu lo IS s e d is c u te esta
pr num num Imprimir varias lineas ú ltim a a p lic a c ió n .
q! Salir sin guardar E n e s te c a p ítu lo verem os:
r ñam e le e r y p e g ar otro fichero en e l oefual
• l 'n a d e fin ic ió n d e á rb o l g e n e ra l y una d is c u sió n so b re c ó m o s e u s a e n u n sis
s t e x c text Sustituir un texto por otro.
te m a d e Ficheros
t num C o p ia r la finea a c tu a l después d e otro línea • U n e s tu d io d e lo s a r b o le s b in a rio s.
tr n u m n u m n u m C o p ia r varias líneas después d e otra linea • C ó m o se im p le m e n ta n las o p e ra c io n e s so b re lo s á rb o le s u s a n d o re c u rsió n
w G u a rd a r fichero e n disco. • C ó m o se r e c o r re un á rb o l d e fo rm a n o recu rsiv a.
x! Salir guardand o
$ Ir a la ultim a linea
- Sube u n a lin ea 17.1 Árboles generales
■f Bajar u n a línea.
=
» Imprimir e l núm ero o ctu a l d e (¡nea la»s á rb o le s s e p u e d e n d e fin ir d e d o s fo rm as: re cu rsiv a > n o recu rsiv u m cn tc. l-a d e fi
/ text Buscar h a c ia d e la n te un patrón n ic ió n no re c u rsiv a e s la m á s d ireeiu . p o r lo q u e c o m e n z a m o s p o r ella. L a fo rm u la
? text Buscar h a c ia atrás un patrón c ió n re c u r s o .i n o s p e rm ite e sc rib ir a lg o ritm o s sim p le s p u n í m an ip u lar arboles.
# imprimir & num ero d e lineas y c a ra c te re s d e l fichero.
• S e d is tin g u e un n o d o c o m o ra íz .
• A c a d a n o d o c . e x c e p tu a n d o la r a í / , le lle g a u n a a n s i a d e s d e e x a c ta m e n te
o tro n o d o /». a l c u a l s e le lla m a p a d r e d e r . D e c im o s q u e c e s u n o d e los
h ijo s d e p .
• H a y u n ú n ic o c a m in o d e s d e la ra íz h asta c a d a n o d o . E l n ú m e ro d e a ris ta s del
m isin o re c ib e e l n o m b re d e lo n g itu d d e l c a m in o .
U n a fo rm a d e im p le m e n ta r un á rb o l c o n s is tiría e n te n e r e n c a d a n o d o u n a re fe re n
Figura 17.1 Un árbol. c o n inform ación do altu ra y p ro fu n id a d c ia a c a d a u n o d e su s h ijo s a d e m á s d e a lo s d a to s q u e c o n tie n e P e ro d e b id o a que
e l n ú m e ro d e h ijo s p u e d e v aria r m u c h o y d ic h o n ú m e ro n o se c o n o c e a p r io n . puc
d e q u e e l h e c h o d e c o n e c ta r a lo s h ijo s d ire c ta m e n te c o n e l p a d re e n la e stru ctu ra
e je m p lo , e l p a d re d e t i e s A . L o s n o d o s q u e n o tie n e n hij<*s re c ib e n e l n o m b re d e
d e d a to s s e a im p ra c tic a b le p o r la g ran c a n tid a d d e e s p a c io n e c e sa rio . L a so lu c ió n
h o ja s L a s h o ja s d e e s te á rb o l so n C . F . ( i . I I . I y K L a lo n g itu d d e l c a m in o d e A a
e s sim p le: m a n te n e r lo s h ijo s d e c ad a n o d o e n u n a lista e n la z a d a d e n o d o s E sto
K e s tre s (a n s ia s ), y la d e l c a m in o d e A a A e s d e c e ro aristas.
h a ce q u e c a d a n o d o g u a rd e d o s re fe re n c ia s- u n a a su h ijo m á s a la iz q u ie rd a ts ie m
t n á rb o l c o n N n o d o s d e b e te n e r A I a ris ta s p o rq u e a c a d a m id o , e x c e p to a
p re q u e n o s e a y a u n a h o ja ' y o tra a su h e rm a n o d e la d e re c h a (s ie m p re q u e n o sea
la r a í /, le lle g a u n a a rista. L a p r o fu n d id a d d e un n o d o e n u n á rb o l e s la lo n g itu d
y a el s itu a d o m ás a la d e re c h a ). A e s te tip o d e im p le m e n ta c ió n s e Ic lla m a m éto d o
del c a m in o q u e v a d e s d e la r a í / h asta e s e n o d o . E n c o n se c u e n c ia , la p ro fu n d id a d
p r im e r h ijo sig u ien te h e rm a n o y se ilu stra e n la F ig u ra 17.3. L as fle c h a s q u e a p u n
de la r a í / e s s ie m p re ü. y la d e c u a lq u ie r n o d o e s la d e su p a d re m á s u n o . L a a lia ra
ta n h a c ia a b a jo so n re fe re n c ia s a l p r i m e r H i j o . y las q u e v a n d e iz q u ie rd a a d e re
d e un n o d o e s la lo n g itu d d e l c a m in o q u e v a d e s d e e l n o d o h a s ta la h o ja m á s p ro-
c h a so n re fe re n c ia s al s i c j u i e n t e H f r r M n o . L a s re fe re n c ia s n u i l n o s e m u estran
tu n d a b a jo e l L u e g o la a ltu ra d e E e s 2. L a a ltu ra d e c u a lq u ie r n o d o e s I m á s que
e n e l d ib u jo p u e s h a y d e m a s ia d a s , y p u e d e n d e d u c irs e d e l m ism o F.n este á rb o l, el
la m a y o r altu ra d e u n h ijo s u s o . I a a ltu ra d e un á rb o l se d e fin e c o m o la a ltu ra de
n o d o t i tie n e u n a re fe re n c ia a su h e rm a n o C y a su p rim e r h ijo E . m ie n tra s que
su r a í/.
o tro s n o d o s p o se e n so la m e n te u n a d e e sta s re fe re n c ia s y alg u n o s d e e llo s n in g u n a
Ia*s n o d o s q u e tie n e n e l m ism o p a d re s o n h e rm a n o s. lu e g o ti. ( '. I ) y E so n
d e la s d o s. D a d a e s ta re p re se n ta c ió n , e s un e je rc ic io s e n c illo e scrib í! u n a c la s e de
lo d o s h e rm a n o s. S i hay un c a m in o d e l n o d o a a l n o d o r . e n to n c e s d e c im o s q u e u
á rb o le s q u e im p le m e n te la in te rfa z d e la F ig u ra 6 .1 5 .
es u n a s c e n d ie n te d e r y q u e i e s u n i l e u t u llie n te d e a . S i a v. e n to n c e s n e s un
a s c e n d ie n te p r o p io d e »• y v e s un d e s c e n d ie n te p r o p io d e ir. Ll ta m a ñ o d e un n o d o
e s ig u a l a l n ú m e r o d e d e s c e n d ie n te s q u e tie n e (in c lu y e n d o d ic h o n o d o ). E l ta m a
ño d e t i e s 3. y e l d e C e s I. E l ta m a ñ o d e un á rb o l s e d e fin e c o m o e l ta m a ñ o d e
su r a í / , lu e g o e l ta m a ñ o d e l á r b o l d e la F ig u ra 17 I e s ig u a l a l ta m a ñ o d e A . q u e
e s 11.
Se p u e d e d a r u n a d e fin ic ió n a lte rn a tiv a d e lo s á rb o le s e n fo rm a re c u rsiv a : un
á rb o l e s o b ie n v a c ío o c o n siste e n u n a r a í / y c e ro o m á s su b á rb o le s ih» v a c ío s f , .
T; 7*- c a d a u n a d e c u y a s ra íc e s e s tá c o n e c ta d a p o r m e d io d e u n a a ris ta c o n la
H ay m u c h a s a p lic a c io n e s d e lo s á rb o le s. U n a d e las m á s c o n o c id a s e s la e s t r u c
tu ra d e d ir e c to r io s e n m u c h o s d e lo s s is te m a s o p e r a tiv o s m á s u tiliz a d o s , c o m o
Figuro 17.2 Un árb ol visto d e fo rm a rocursiva. U n ix . V A X V M S y D O S . L a F ig u ra 17 4 m u e s tra un d ir e c to r io típ ic o e n e l s is - |
void Ilutar I int pro! » 0 > // t.n p r o f u n d i d a d es I n i cialmente 0
/ " ,
chl tli2 chl
A ch2 chl
/\ ch2
I
'v i
I
s\ I
Figuro 17.5 Pso od ocóO g o po ro listar e l co n ten id o d e un directorio y sus subdirec-
torlos ©n un sistem a jerárq u ico d e ficheros.
• nuperí nombre );
9
10
r a l z - new N o d o B in a río t o le m R a iz . a l . r a í z , a 2 . r a i z ) :
T
S o d o B i n o r i o r a l : ; n e w í J o d c B i n a n o i d a t o »:
l < i i z q u i e r d o 1- n u i l i / S I n o y u n A r b o l I z q u i e r d o
ca i r . : r.q'JierdG * 1 2 C ( u i e r d o . d u p l i c a r I 1; D u p l ic a r l e T 1
10 ; f i d e r e c h o :* n u i l i s i h a y un A r b o l d e r e c h o
11
12
i;
r a í z . d e r e c h o = d a r e c h o . d u p l i c a r l >.
return r a l:;
. / D uplicarlo
Devolver *1 art»-. r a a u l t a n t a
li
fig u ro 17 17 Rutina p a ra d evolver u n a c o p ia ani á rb o l cor» ra í/ « n e l n o d o a c tu a l _____ i - ~Hi ¡try • = M/-1V ( Hi * 1 Mn * II
1 /•• ' d i r p r i*irPr*Ord«*n( )
2 • D e v u e lv * la a ltu ra d e l ártw l binario con ra:z * n «. 2
. o u t . p r i n t l n l
S y a t m <Uto »: <> Nodo
3 •/
4 talle I n t a l t u r a l !•'idoBinar ;<j a i f ( izquierdo 1 = n u i l l
i z q u i e r d o . i m p r I m i r P r e O r d e n ( ) ; / / I z q u i e r d o
5 <
I f l d e r e e h p ! = nuil )
6 ;f < a - - n u i l ) d«recho.inpr¿»irPreO rden( >; / / Derecho
7 r e tu r n - i:
8 e ls e
9 return 1 * M ach.-ax( altura) a . i z q u i e r d o ). d irs p rim n P ostO rdorH i
10 altura! « d e r e c h o » )j
11 lf( i z q u i e r d o (» n u i l 1
lia jitu » ii^ iiK iiM tO id e n li // Izquierdo
Figuro 17 21 Rutina p a ra c a lc u la r la aftm a a© un nodo i f l d e r e c h o != n u i l I
d e re c h o , i m p r i m í r P o s f O r d e n ( I ; // O orecho
S y ste m .o u c .p rin tln « dato l; " Nodo
d e l á rb o l v a c ío c o m o - I A h o ra , c o m o u n a h o ja lic n e d o s su b á rb o le s t k a ltu ra
- I. su a ltu ra q u e d a c o rre c ta m e n te d e fin id a c o m o 0 L a ru tin a re s u lta n te se m u e s
tra e n la F ig u ra 17.21. void im prInirOrdenSin ( )
21 i£( Izquierdo I- n u il »
22 Izquierdo i r *>r í a i r O r d e n S i n í »: ' izquierdo
23 S y ste m .o u t.p rin tln ( dato / / Nodo
17.4 Recorrido d e árboles: clases iteradoras
25 derecho, i mp t i m l rOrdenf-lmi ); // Derocho
E n e s te c a p ítu lo h e m o s v is to c ó m o s e p u e d e u sa r la re c u rs ió n p a ra im p lc n tc n la r 26 )
los m é to d o s d e los á rb o le s b in a rio s . C u a n d o s e a p lic a la re c u rs ió n . c a lc u la m o s in Fi g u r a 17. 22 Ruteva» p o r a e n o n r r w o s n o o o s e n p r e o r d e n . p o s t e r d o n y o r d e n simé-
fo rm a c ió n n o so lo so b re u n n o d o , sin o ta m b ié n s o b re to d o s su s d e sc e n d ie n te s. triCO
D e c im o s e n to n c e s q u e e s ta m o s re c o rrie n d o e l á rb o l. D o s re c o rrid o s c o n o c id o s
q u e v a h e m o s v is to a n te rio rm e n te so n e l re c o rrid o e n p rc o rd e n y e l re c o rrid o en
p o sto rd en .
L n u n r c c o m d o e n p rc o rd e n . p rim e ro se p ro c e s a e l n o d o y d e s p u é s s e p ro cesan
re c u rsiv a m e n te sus h ijo s. U ru tin a d u p l i c a r e s u n e je m p lo tic re c o rrid o en
p rc o rd e n . p u es lo p rim e ro q u e h a c e m o s e s c re a r la r a í /. D e sp u é s se c o p ia n d e fo r
m a re c u rsiv a lo s h ijo s iz q u ie rd o y d e re c h o
F n u n re c o rrid o e n p o sto rd e n , e l n o d o d a d o s e p ro c e s a d e sp u é s d e h a b e r p ro c e
s a d o re c u rsiv a m e n te sus h ijo s. D os e je m p lo s d e e llo s o n lo s m é to d o s ta m a n y o y
a l i u r a . E n a m b o s c a s o s , s ó lo p o d e m o s c a lc u la r e l v a lo r c o rre s p o n d ie n te d e un
n o d o d a d o «por e je m p lo , s u ta m a ñ o o su altu ra» d e s p u é s d e h a b e r c a lc u la d o e l c o Fi gu r o 17.23 Rutas d o a c c e s o p a ra ios recom dos en proord en postorden y orden
rre sp o n d ie n te v a lo r p a ra s u s h ijo s. sim etnco.
I n te r c e r re c o rrid o re c u rsiv o h a b itu a l e s e l r e c o r r id o e n o r d e n sim é tric o , e n el
cual p rim e ro se p ro c e s a re c u rsiv a m e n te e l h ijo iz q u ie rd o , lu e g o s e p ro c e s a e l n o d o ¿ D e b e m o s n e c e s a ria m e n te u s a i re c u rs ió n p a ra im p le m e n ta r lo s re c o rrid o s ?
a c tu a l, y fin a lm e n te s e p ro c e s a re c u rs iv a m e n te e l h ijo d e re c h o . E ste m e c a n ism o se C la ra m e n te la re s p u e s ta e s n o . D a d o q u e . c o m o y a se d is c u tió e n la S e c c i ó n / . . • »
u sa pora g e n e ra r la e x p re s ió n a lg e b r a ic a c o rre s p o n d ie n te a u n á rb o l d e e x p re sió n . re c u rsió n s e im p le m e n ta in te rn a m e n te u s a n d o u n a p ila . D e m o d o q u e p o d ría m e »
P o r e je m p lo , e n la F ig u ra 17 11. e l re c o rrid o e n o rd e n sim é tric o g e n e ra la e x p re u sa r n u e s tra p ro p ia p ila E l re s u lta d o e s g e n e ra lm e n te u n p ro g ra m a a lg o m á s rá p i
sió n (a » ( ( b - c > * d ) ) d o . d a d o q u e . so la m e n te te n e m o s q u e g u a rd a r e n la p ila lo q u e n e c e sita m o s e n ca
L a F ig u ra 17 22 ilu stra ra tin a s q u e im p rim e n los n o d o s d e u n á rb o l b in a rio d a cas*, e n lu g ar d e h a c e r q u e e l c o m p ila d o r c o lo q u e u n re g is tro d e a c u v a c i n
u s a n d o c a d a u n o d e lo s a lg o ritm o s re c u rs iv o s d e re c o rrid o d e a rb o le s. L a F ig u c o m p le to . L a d ife re n c ia e n v e lo c id a d e n tr e un a lg o ritm o « c u r s iv o y o tro n o re c u r
ra 17 2 3 m u e s tra e l o rd e n e n q u e se v isitan lo s n o d o s p a ra c a d a u n a d e la s tr e s e s s iv o d e p e n d e m u c h o d e la p la ta fo rm a . E n la m a y o ría d e lo s c a s o s , la « j o r a e n
tra te g ia s. El tie m p o d e e je c u c ió n d e to d a s e lla s e s lin e a l, lis to e s a s í. p u es e n lo d o s v e lo c id a d n o ju s tif ic a e l e s f u e rz o im p lic a d o e n la e lim in a c ió n d e a .
lo s c a s o s c a d a n o d o s e im p rim e e x a c ta m e n te u n a v e / , d e m o d o q u e e l n ú m e ro lev a si. v a le la p e n a s a b e r c ó m o h a c e r lo p .., s , a c a s o n u e stra p la ta fo rm a e s d e t a q u e
tal d e lla m a d a s re a liz a d a s (in c lu y e n d o e l tr a b a jo c o n s ta n te d e b id o a la s o p e ra c io p u e d e b e n e fie ta rs e .le la e h m .n a .u m d e la re c u rs ió n . y ta m b u la p o rq u e e n o .a s u >
n e s d e a p ila r y d c s a p ila r d e la p ila d e e je c u c ió n in te rn a ) e s u n a p o r n o d o , e s d ec ir n e s v e r c ó m o se im p le m e n ta u n p ro g ra m a d e fo rm a n o « c u r s i v a p u e d e h a c e r q u e
( X N ) . L u e g o e l tie m p o to ta l d e e je c u c ió n e s (X N ) . l.i recursión se enhenó:» m ás claram ente.
lu í F ig u ra 17.24 p ro p o rc io n a u n a c la s e a b stra c ta p a ra la ite ra c ió n so b re lo s á r
P re s e n ta re m o s tr e s c la s e s iterad o ra* . c o n e l m ism o e s p íritu q u e e n la s lista s e n
b o le s . C a d a ite ra d o r a lm a c e n a rá u n a re fe re n c ia a l á rb o l y u n p u n te ro a l n o d o ac
la z a d a s. C a d a u n a d e e lla s n o s p e rm itirá ir a l p rim e r n o d o , a v a n z a r al sig u ie n te n o
tu a l. lo s c u a le s se d e c la ra n re s p e c tiv a m e n te e n la s U ncos 45 y 4 b . in ic ia liz á n d o sc
d o . c o m p ro b a r si h e m o s lle g a d o a l ú ltim o n o d o y a c c e d e r a l n o d o a c tu a l. L l o rd e n
e n e l c o n s tru c to r. L os d o s so n d e c la ra d o s c o m o p r o t e c t e d p a ra p e rm itir a c c e d e r
e n q u e se a c c e d e a lo s n o d o s e s tá d e te rm in a d o p o r e l tip o d e re c o rrid o . Im p lc m e n -
a e llo s a la s c la s e s d e riv a d a s. E n las lín e a s 2 9 a 4 3 s e d e c la ra n v a rio s m é to d o s.
ta re m o s ta m b ié n u n re c o r r id o p o r n iv e le s, e n e l q u e lo s n o d o s se v is ita n d e arrib a
L o s m é to d o s e s v a l i d o y r e c u p e r a r so n in v a ria n te s e n la je r a r q u ía p o r lo que
a b a jo y d e iz q u ie rd a a d e re c h a . E ste re c o rrid o e s in h e re n te m e n te n o re c u rs iv o y d e
se p ro p o rc io n a u n a im p le m e n ta c ió n y se d e c la ra n c o m o f i n a l P o r su p a rte , c a d a
h e c h o u s a u n a c o la e n lu g a r d e u n a p ila . H ec h a e s ta sa lv e d a d , re s u lta s e r b a sta n te
tip o d e ite ra d o r d e b e p ro p o rc io n a r lo s m é to d o s a b s tra c to s p r i m e r o y a v a n z a r .
p a re c id o a l re c o rrid o e n p re o rd e n .
O b s e rv e q u e e l m é to d o a v a n z a r d ifie re d e l d e la s lis ta s e n la z a d a s p o rq u e la n z a
u n a e x c e p c ió n . S e h a h e c h o a s í p a ra ilu s tra r d is tin ta s e strate g ias.
1 package E stru ctu rasD ato s;
2
3 im port Excepciones.*;
4
17.4.1 Recorrido en postorden
5 / / C lase A rb o llce r; m antiene ia "posición actual*
6 ii
7 I I CONSTRUCCIÓN: c o n e l á r b o l a l q u e e s t a l i g a d o e l iterador El re c o rrid o e n p o sto rd e n se im p le m e n ta u s a n d o u n a p ila p a ra a lm a c e n a r e l e s ta d o
o / a c tu a l. L a c im a d e la p ila re p re s e n ta rá e l n o d o q u e e s ta m o s v is ita n d o e n u n c ie rto
9 11 ....................................................OPERACIONES PÚBLICAS.................................................... in sta n te e n e l re c o rrid o e n p o sto rd e n . P e ro p o d e m o s e n c o n tra m o s e n tre s situ a c io
10 ,l p r i x e r o y a v a n z a r son a b s t r a c t o s : l e s demas so n f i n a l e s
11 // boo lea n o sV a líd o l 1 --> True s i estam os an una p o s i c i ó n v a li d a n es d istin ta s:
12 II O b je ct r e c u p e r a r ( | --> Devuelve elem ento en p o s i c i ó n a c t u a l
13 U void primerot 1 --> Coloca p o sic ió n a c tu a l en e l primero 1. A p u n to d e h a c e r u n a lla m a d a re c u rs iv a a l h ijo izq u ierd o .
14 // void a v an zar< ) - - > Avanza ( p r e f i j o ) 2. A p u n to d e h a c e r u n a lla m a d a re c u rs iv a a l h ijo d e re c h o .
15 ll e rro re s .............
3. A p u n to d e p r o c e s a r e l n o d o actual.
16 // Excepciones lanzadas por accesos o avances ile g a le s
E n c o n s e c u e n c ia , e n e l c u rs o d e l re c o rrid o c a d a n o d o se c o lo c a rá e n la p ila tre s
18 /••
v e c e s. C u a n d o se d e s a p ila u n n o d o d e la p ila p o r te r c e ra v e z . p o d e m o s m a rc a rlo
19 • Clase ite ra d o ra de árb o les.
20 •/ c o m o e l n o d o a c tu a l a s e r v isitad o .
21 abntract public c la s s A rbollter E n c a s o c o n tra rio , e l n o d o se e s tá d e s a p ila n d o p o r p rim e ra o s e g u n d a v e z . d e
22 | m o d o q u e a ú n n o e s tá listo p a ra s e r v isita d o , p o r lo q u e v o lv e m o s u a p ila rlo e n la
23 public A rb o llter! A rbolB inario elA rbol > p ila y s im u la m o s u n a lla m a d a re c u rsiv a . S i e l n o d o e s tá s ie n d o d c s a p ila d o p o r p ri
24 (
25 a = elA rbol; m era v e z . n e c e s ita m o s a p ila r e l h ijo iz q u ie rd o e n la p ila, si e s n o v a cío . S i e s tá
26 actual • nuil; s ie n d o d e s a p ila d o p o r s e g u n d a v ez a p ila m o s e l h ijo d e re c h o , si e s n o v a c ío . En
27 ) to d o c a s o , d e sa p tla m o s d e sp u é s , p a s a n d o a a p lic a r e l m ism o test. O b se rv e q u e c a
28
d a vez q u e d e sa p ila m o s, e s ta m o s s im u la n d o la lla m a d a re c u rs iv a a l h ijo a p ro p ia
29 abstract p u b lic void prim ero! );
30 d o . S i e l h ijo e r a v a c ío y p o r ta n to n u n c a fu e a p ila d o e n la p ila , e n to n c e s c u a n d o
31 final p u b lic boolean ejiV a!ido( ) d c sa p ile m o s. e s ta re m o s d c s a p ila n d o d e n u e v o e l n o d o o rig in al.
32 ( E v e n tu a lm e n te , o b ie n e l p ro c e s o d e s a p ila u n n o d o p o r te rc e ra v e z . o b ie n la
33 return actual !• n u il; p ila q u e d a v a c ía . E n e s te ú ltim o c a s o , h e m o s re c o rrid o y a to d o e l á rb o l In ic iu li/a -
34 >
35 m o s e l a lg o ritm o a p ila n d o u n a re fe re n c ia a la ra íz . U n e je m p lo d e c ó m o se m a n i
36 fin a lp u b lic O bjectrecuperar! ) th ro w s E lenentoN oE ncont rado p u la la p ila se m u e s tra e n lu F ig u ra 17.25.
37 \ U n re s u m e n rá p id o : la p ila c o n tie n e lo s n o d o s q u e y a h e m o s re c o rrid o p ero
38 i f t a c t u a l «« n u i l ) q u e a ú n n o h e m o s tra ta d o c o m p le ta m e n te . C u a n d o u n n o d o s e a p ila e n la p ila, e l
39 t h r o w new E i e m e n t o N o E n c o n t r a d o ( ' r e c u p e r a r de A r b o l l t e r " );
40 r e tu rn a c t u a l .dato; c o n ta d o r e s re s p e c tiv a m e n te 0 . I o 2 e n c a d a u n a d e las sig u ie n te s s itu a c io n e s:
41 ,
42 1. S i e s ta m o s a p u n to d e p ro c e s a r e l h ijo iz q u ierd o .
a b s t r a c t publ i c v o i d a v a n z a r ( ) th ro w s EleroentoNoEncontrado: 2. S i e s ta m o s a p u n to d e p ro c e s a r e l h ijo d e re c h o .
3. S i e sta m o s a p u n to d e p ro c e s a r e l nodo.
85 p ro te c te d A rbolBinario a; / / El árbol
46 ^ p r o t e c t e d NodoBlnario a c t u a l ; / / Posición actu al S ig a m o s la tra z a d e lo q u e su c e d e e n e l re c o rrid o e n p o sto rd e n . In ic ia l iz a m o s
e l re c o rrid o a p ila n d o la ra íz a e n la p ila , e in m e d ia ta m e n te s e d e sa p ila a p o r p ri
m e ra v e z . p o r lo q u e v u e lv e a c o lo c a rs e e n la p ila y a p ila m o s su h ijo iz q u ie rd o b.
Figuro 17.24 C lase ite ro d o ra a b stra c ta p a ra los artxxes
1 pack a g o E«truCtur**D»tOBj
2
3 i »*>or t E x c e p c i ó n * » » . * :
5 / / C l a s e P o s tO r d e n ; m a n t i e n e una ‘p o s i c i ó n a c t u a l *
6 // de a cu e rd o con un r o c o r r l d o en p o s to r d e n
31 {
d e s a p ila p o r se g u n d a v e / y v u e lv e a la p ila d e n u e v o . C o m o ta m p o c o tie n e h ijo
32 p . v a c i a r l );
d e re c h o , n o se a p ila n ad a, s in o q u e d se d c sa p ila p o r te rc e ra v e /, s ie n d o m a rca d o 33 i í ( a .r a íz t = nuli 1
c o m o n o d o v is ita d o A c o n tin u a c ió n s e d e s a p ila b p o r te rc e ra v e / , m a rc á n d o se 34 p . a p i l a r ! new N o d o P l ! a . r a i z ) I
ta m b ié n c o m o v is ita d o 35 t r y
36 ! a v a n z a r ! 1; )
IX -spues se d e s a p ila a p o r s e g u n d a v e /, c o lo c á n d o s e d e n u e v o e n la p ila ju n to
37 c a t c h ! BlementoNoKncontrado o > I ) II Arbol v a c u
c o n su h ijo d e re c h o c . Se d e sa p ilu c p o r p rim e ra v e /, p o r lo q u e v u e lv e d e n u e v o a
38 1
la p ila , a p ilá n d o se s u h ijo i/q u ie r d o e . A c o n tin u a c ió n e e s d e s a p ila d o . a p ila d o , 39
d c s a p tla d o d e n u e v o y v u e lto a a p ila r, v fin a lm e n te s e d e v a p ila p»*r te rc e ra v e / (e s 4 0 protected P ila p: H P Ü * d e o b j e t o s NodoPl
t o s u c e d e p a ra u n ía s las h o ja s). L u e g o se m a rc a a e c o m o n o d o v is ita d o . IX -spués 41 )
42
s e d e s a p ila c |>or s e g u n d a v e /, v u e lv e a la p ila y c o m o n o tie n e h ijo d e re c h o , es
43 c l a s s NodoPl
in m e d ia ta m e n te d e s a p ila d o p o r te rc e ra v e / y m a rc a d o c o m o v is ita d o F in a lm e n te
44 {
s e d e sa p ila a p o r te rc e ra v e / y se m a rc a c o m o v is ita d o F n e s te m o m e n to la p ila 45 NodciBinario nodo:
e s tá v a c ía , c o n c lu y e n d o e l reco rrid o . 46 in t vecesDesapi
1.a c la s e P o s t O r d e n . q u e se m u e s tra e n la F ig u ra 17.2b, s e im p le m e n ta d ire c 47
48 NodoPl < N o d o B i n a n o n I
ta m e n te u s a n d o e l a lg o ritm o d e s c r ito p re v ia m e n te L a c la s e N o d o P l re p re s e n ta los
4 9 1 nodo • n : vece»U e»ap « O ; )
o b je to s q u e se c o lo c a n e n la p ila S u s o b je to s c o n tie n e n u n a re fe re n c ia a un n o d o 50 )
ju n to c o n un e n te r o q u e a lm a c e n a e l m im en» d e v e c e s q u e s e h a d e s a p ila d o e l n o
d o e n c u e stió n . L o s o b je to s N o d o P l se im c iu li/a n s ie m p re re fle ja n d o e l h e c h o d e Figuro 17.26 C ia s e P o s tO r d e n (c la s e c o m p le ta e x ce p tu an d o a v a n z a r ) .
q u e a ú n n o h a n s id o d c s j p i lad o s
1.a c la s e P o s t O r d e n se d e riv a ilc la c la s e A r b o l I t e r . A ñ a d e u n a p ila in tern a
U F ig u ra 17.27 im p le m e n ta a v a n z a r . S ig u e la d e s c rip c ió n anMOTOT
a los a trib u to s h e re d ad » * L a c la s e P o s t O r d e n se im e ia li/a in ic ia li/a n d o p rim en»
p ie d e la le tra L a lín e a H c o m p ru e b a si la p ila e s tá v a c ía . t . * ____ ^
lo s a trib u to s d e A r b o l n ® r p a ra d e s p u é s a p ila r la r a í / e n la p ila. E s to se ilu stra e n
e l c o n s tru c to r, e n la s lín e a s 23 a 2 8 . E l m é to d o p r i m e r o s e im p le m e n ta lim p ia n d o c o m p le ta d o la ite ra c ió n y p o d e m o s a s ig n a r n u i l a a c t u a l .
51 n o . lle v a m o s a c a b o re p e tid o s a p ila d o s y d e s a f i a d o s h a s ta q u e s e d e s o p ila u
la p ila, a p ila n d o la r a í / y lla m a n d o a o v / i n n u .
1 /••
2 ' A v a n z a la p o s i c i ó n a c t u a l a l s i g u i e n t e n o d o e n e l A r b o l .
17.4.2 Recorrido en orden simétrico
3 * d e a c u e r d o c o n el e s q u e m a d e r e c o r r i d o e n p o s t o r d e n .
4 • B e x c e p t i o n E i c m e n t o N o E n c o n t r a d o s i la p o s i c i ó n a c t u a l e s n u i l . E l re c o rrid o e n o rd e n sim é tric o e s a n á lo g o a l re c o rrid o e n p o sto rd e n e x c e p to p o r el
5 •/ h e c h o d e q u e u n n o d o se d e c la ra v isitad o c u a n d o se d c sa p ila p o r se g u n d a v ez. A nles
6 public void avanzar! ) throw* ElementoNoEncontrado
d e c o n c lu ir c o n e l nodo, e l ite ra d o r a p ila su h ijo d e re c h o !si e x is te ) e n la p ila , d e
7 <
8 if( p.esV acia! I I
9 1 package EstructurasD atos;
10 if< a c t u a l *■ n u i l )
2
11 t h r o w n e w E l e m e r . t o N o E n c o n t r a d o < ‘A v a n z a r d e P o s t O r d e n ' )¡ 3 i m p o r t E x c e p c i o n e s .* i
12 a c t u a l ■ nuil»
13 return; 5 / / C l a s e O rdenSim : m a n t i e n e u n a ‘p o a i e i ó n a c t u a l *
14 6 // d a a c u e r d o c o n e l r e c o r r i d o e n order. si f f t é t r i c o
15
16 NodoPl cnodo; 6 // CONSTRUCCIÓN: c o n a l árbol a l que e s ta ligado a l iterador
17
9 / /
18 for! ; ; » 10 // ....................................................OPERACIONES PÚBLICAS....................................................
19
11 // Las m s o o s que A rb o llte r
20 try
m ................................. ERRORES............................ *............. ..
21 ( cnodo ■ I NodoPl ) p.cimaYDesapilar( ); )
13 / / Excepciones lanzadas por a cc eso s o avances i le g a le s
22 catch! Desbordamientolníerior e )
23 ( r e t u r n ; ) // N o p u e d e o c u r r i r
24 15 public c l a s s OrdenSlm ex te n d n PootOrdan
25 ifI ••c n o d o . v e c e s D e s a p •• 3 ) 16 < . , W, V
26 17 p u b l ic OrdenSial A rbolB inario e-Arboi I
27 actual • cnodo.nodo; 16 { super! elA rbol ); 1
28 return; 19
29 ) 20 p u b l i c v o i d a v a n z a r ! ) t h r o w s E l e m e n t o N o E n c o n t r a d o
30 21 (
31 p . a p i l a r ! c n o d o ); 22 i í i p .e s V a c i a ! > )
32 ifl c n o d o . v e c e s D e s a p » • 1 ) 23 1
33 < 24 ifI a c t u a l == n u i l )
34 ifl c n o d o . n o d o . i z q u i e r d o !■ n u i l i 25 t h r o w new E l e m e n t o N o E n c o n t r a d o ! ‘ a v a n z a r d e O r d a n s i i * I
35 p . a p i l a r ! n e w N o d o P l ! c n o d o .n o d o . i z q u i e r d o ) ): 26 actual ■ n u il:
36 > 27 return;
37 else // c n o d o .v e c e s D e s a p •• 2 28
38 ( 29
39 ifl c n o d o . n o d o . d e r e c h o !■ n u i l I 30 NodoPl cnodo;
40 p . a p i lar! n e w N o d o P l ! c n o d o . n o d o . d e r e c h o > ); 31 for! ; : I
41 32 (
42 33 try
43 ) 34 ( c n o d o * ! NodoPl I p . c i m a Y D e s a p i l a r ! ): )
J 5 catch! D esbordam iantolnferlo: e I
Figuro 17.27 M é to d o a v a n z a r p o r a lo c la s e ite ro d o ra P o s t O r d e n 35 ( return; ] / / No p u e d e s u c e d e r
37
38 i f ( • « c n o d o . v e c e s D e s a p =■ 2 I
e le m e n to p o r te r c e ra vez. C u a n d o e s to su c e d e , e l te st d e la lín e a 2 5 tie n e é x ito y 39
p o d e m o s te rm in a r E n c a s o c o n tr a n o . e n la lin e a 31 v o lv e m o s a a p ila r e l e le m e n to 40 a c t u a l » cnodo.nodo;
41 i f ! c n o d o .n o d o .d e re c h o !« n u i l )
e n la p ila <o b s e rv e q u e la c o m p o n e n te v e c e s D e s a p y a h a s id o in c re m e n ta d a e n la p . a p i l a r ! new N o d o P l ! c n o d o . n o d o . d e r e c h o l I»
42
lin ca 25). E n to n c e s s im u la m o s la lla m a d a re c u rsiv a . S i e l n o d o h a s id o d e sa p ila d o 43 r e t u r n ;
18 /••
19 • C lase ite r a d o r a PorN iveles.
20 •/ Resumen
21 public c la s s PorN iveles extends A rb o llte r
22 { E n e s te c a p ítu lo h e m o s e s tu d ia d o lo s á r b o le s y . e n p a rtic u la r, lo s á r b o le s b in a rio s.
23 public PorNiveles! ArboiBinario elArbol I
H e m o s v is to c ó m o se p u e d e n u s a r lo s á rb o le s p a ra im p le m e n ta r lo s siste m a s d e
24
fic h e ro s d e m u c h o s c o m p u ta d o re s y ta m b ié n a lg u n a s o tr a s a p lic a c io n e s , c o m o los
25 s u p e r l « lA r b o l );
26 c = new ColaV«c( i; á rb o le s d e e x p re s ió n y d e c o d ific a c ió n , q u e se e s tu d ia n c o n m á s d e ta lle e n la P a n e
27 c.insertar! a.raiz I; III L o s a lg o ritm o s q u e tra b a ja n sobre á rb o le s h a c e n un u s o e x te n s iv o d e la re c u r
28 s ió n . H e m o s e x a m in a d o tre s a lg o ritm o s re c u rs iv o s d e r e c o m d o d e á rb o le s — re o r
29
d e n . p o sto rd e n y o rd e n s im é tric o — y h e m o s v is to c ó m o se p u e d e n im p le m e n ta r d e
30 public void primero! I
31
fo rm a n o re c u rsiv a . T a m b ié n h e m o s e x a m in a d o e l re c o rrid o p o r n iv e le s, q u e t u r
32 c . v a c i a r ( I;
m a la b a s e d e u n a im p o rta n te té c n ic a d e b ú sq u e d a lla m a d a b ú sq u e d a e n an ch u ra.
33 if< a.raiz •• n u i l > E n e l sig u ie n te c a p ítu lo e stu d ia re m o s o tr o tip o fu n d a m e n ta l d e á rb o l e l á r b o l b i
34 c .i n s e r t a r ( a . r a i z >; n a ru» J e b ú s q u e d a .
35 try
35 { avanzar I I ; )
37 catch! ElementoNoEncontrado e ) ( ) // Á r b o l vacio
38 ) Elementos d e l juego
39
40 public void a v a n z a r ! It h r o w s E l e m e n t o N o E n c o n t r a d o
41 ( /• F ig u r a 1 7 . 3 2 • / ) a l t u r a L o n g itu d d e l c a m in o q u e v a d e s d e u n n o d o a la h o ja m á s p ro fu n d a p o r d e
42 b a jo d e é l. .
43 p r í v a t e C o l a c; // C o l a deobjetos NodoBinario á r b o l D e fin id o n o rc c u rsiv á m e n te , u n á rb o l e s u n c o n ju n to d e n o d o s y o tro a e
a n s ia s o rie n ta d a s q u e lo s c o n e c ta n e n tre s í. L o s á rb o le s se d e fin e n d e u n a lo r-
m a n a tu ral d e m a n e ra rc c u rs iv a d ic ie n d o q u e u n á rb o l e s o b ie n v a c ío , o b reo
R® uro 1731 C k » e Itefo d o fa P o r N i v e l e s co n lo m ayorto d e sus m étodos i y í h i h i l r u n a r»( r v r e m t i m á s s u h á r b o l e s .
re n te s d e la s u tiliz a d a s e n e s te c a p ítu lo . E sas c la s e s ta m b ié n d e b e n g u a rd a rse e n el
á rb o l b in a r io A rbol e n e l q ue n in g ú n n o d o p u e d e Ic n c r m ás d e d o s h ijo s . S e p u e
d ire c to rio E s t r u c t u r a s D a t o s L a s v e rs io n e s o rig in a le s s e e n c u e n tra n e n e l d ire c to
d e d e fin ir re c u rsiv a m e n té d e m a n e ra m u y c o n v e n ie n te ,
asce n d ie n te y d e sce n d ie n te S i hay u n c a m in o d e un n o d o u a o tro v, e n to n c e s u es rio D a la S tr u c tu r c s
|. a s v e rs io n e s o r ig in a le s d e las c la s e s N o d o B i n a r i o . A r b o l B i n a r i o y
a s c e n d ie n te d e v y »• e s d e sc e n d ie n te d e ir.
S i n t e r n a F i c h e r o d e e s te c a p itu lo s e e n c u e n tra n e n e l d ire c to rio ( h a p l e r l 7 .
a sce n d ie n te p ro p io y d e sce n d ie n te p ro p io E n u n c a m in o d e u n n o d o u a o tr o v.
si ii ¿ »•. e n to n c e s u e s u n a s c e n d ie n te p ro p io d e v y i e s u n d e s c e n d ie n te p r o B in a n N odeja v a C o n tie n e la c la s e tra d u c id a p o r N o d o B in a r io e n la
p io d e u. F ig u ra 17 12.
h e rm a n o s N o d o s c o n e l m is m o p ad re, B in a r y T r c e .ja v a C o n tie n e la c la s e tra d u c id a p»x A i b o l B m a r i o e n la
h o ja N o d o d e un á rb o l q u e n o tie n e hiji»s. F ig u ra 17.13
m éto do p r im e r h ijo /sig u ie n te h e rm a n o Im p le m e n ta c ió n d e u n á rb o l g e n e ra l e n F ile S y s lr m j a v a Im p le m e n ta e l r e c o r rid o d e d ire c to rio s, traducid»» e n la
la q u e c a d a n o d o g u a rd a d o s re fe re n c ia s |x»r e le m e n to : u n a a l h ijo m á s a la iz F ig u ra 17.10 p o r S is t e m a F ic h e r o .
q u ie rd a «si n o e s u n a h o ja ) y o tr a al h e rm a n o s itu a d o a su d e re c h a , In O r d c r ju v a C o n tie n e la c la s e tra d u c id a p o r O td o n S im .
p u d re e h ijo P a d re s e h ijo s s e d e fin e n d e fo rm a n atu ra l U n a a n s i a o n e n tg d a c o L e v e lO r d e r .ja v a C o n tie n e la c la s e tra d u c id a p o r P o r N i v a l e s .
n e c ta a l p a d re c o n c a d a hijo , P o s tO r d e r.ja v a C o n tie n e la c la s e tra d u c id a p o r p o s t o r d u n .
p ro fu n d id a d L o n g itu d d e l c a m in o d e la ra íz h a sta e l nixio. P r e O r d e r .ja v a C o n tie n e la c la s e tra d u c id a p o r P r e O r d e n .
r e c o r r id o en o rd e n s im é tr ic o T ip o d e re c o rrid o e n e l q u e s e p ro c e s a e l n o d o a c
tu a l e n tre las lla m a d a s n x u r s iv a s p a ra su s hijos,
r e c o r r id o en p m lo r d c n T ip o d e re c o rrid o e n e l q u e s e v isita e l n o d o d e s p u é s d e
h a b e r p ro c e s a d o lo s h ijo s. T a r d a u n tie m p o c o n s ta n te p o r n o d o , Ejercicios
r e c o r r id o en p r c o r d c n T ip o d e re c o rrid o e n e l q u e se v isita c a d a n o d o a n te s d e
p ro c e s a r s u s h ijo s. L l re c o rrid o req u ie re u n tie m p o c o n s ta n te p o r n o d o ,
C uestiones breves
r e c o r r id o p o r n ive le s T ip o tic re c o rrid o e n e l q u e lo s n o d o s s e v ista n d e fo rm a 17.1. P u ra e l á rb o l d e la I ig u ra 17.33. d e te rm in e lo sig u ien te:
d e sc e n d ie n te y d e iz q u ie rd a a d e re c h a . S e im p le m e n ta u s a n d o u n a c o la . C o
a) ¿ C u a l e s e l n o d o r a í /?
rre sp o n d e a u n a b ú s q u e d a e n an c h u ra
h) , Q u é n o d o s s o n las h o ja s ?
ta m a ñ o d e u n n o d o N ú m e ro d e d e sc e n d ie n te s q u e tie n e u ii n o d o (in c lu y é n d o le a
é l m ism o ). , ) .C u á l e s la p ro fu n d id a d d e l á rb o l?
,1) E l re s u lta d o d e lo s re c o rrid o s e n p re o rd e n . p o s to rd e n , o rd e n sim é tric o
y p»n n iv eles.
Errores com unes 17.2. P a ra c a d a n o d o d e l á rb o l d e l a F ig u ra 17.33. h a g a lo sig u ien te:
a) N o m b re e l rxxlo padre
1. P erm itir q u e u n n o d o p e rte n e z c a sim u ltá n e a m e n te a d o s ártx ile s e s g e n e ra l
b) L iste lo s h ijos
m e n te u n a id e a p o c o a fo rtu n a d a p u e s a l re a liz a r c a m b io s e n u n s u h á fb o l se
c) L iste lo s h erm an o s.
p o d ría n p ro v o car, sin d e se a rlo , c a m b io s sim u ltá n e o s e n v a n o s su b árb o ies.
,1) C a lc u le la altu ra.
2. ( )lv a la r la c o m p ro b a c ió n d e q u e un á rb o l e s v a c ío e s u n e rr o r c o m ú n . S i e s
O C a lc u le la p ro fu n d id a d
to su ced e e n e l m areo ile u n a lg o ritm o re cu rsiv o , p ro b a b le m e n te e l p ro g ra
f ) C a lc u le e l ta m a ñ o .
m a abortará.
3. U n e rro r c o m ú n c u a n d o s e tra b a ja c o n a rb o le s c o n siste e n p e n sa r ite ra tiv a
m en te e n lu g ar d e h a c e rlo re c u rs o á m e n te D ise ñ e p rim en» l«» a lg o ritm o s de
fo rm a r e c u r s iv a y só lo d e sp u é s c o n v ié rta lo s a ite rativ o s, d e re su lta r c o n v e
niente.
En Internet
M u chos ele lo s ejem p lo s d iscu tid o s e n e s te c a p ítu lo s e u tiliza n e n e l C a p itu lo IX. e n el
q ue se estu d ian los árb o les b in a rio s d e b ú sq u ed a E l c ó d ig o p a ra la s c la se s iteradoras
e s parte del p aq u ete E s t r u c t u r a s D a t o s y d e b e g u a rd a rse e n e l d ire c to rio E stru c -
tu n is D u tn s l a s versiones originales se encuentran e n e l d irecto rio D u ta S I n K lu r w
Estos itenulores usan r l . w « w a / * a d i - . , i « «, d i - — : ~ i;------------- Flauta 17.33 ArCOl D ora los e|erc»ctos 17.1 y 17.2.
1 7 .3 . ¿ C u á l e s la s a lid a del m é to d o d e la F ig u ra 17.34 p u ra e l á rb o l d e la F ig u
Prácticas de programación
ra 17.25?
1 7 .1 1 Im p lem en te un c o m a n d o q u e liste to d o s lo s fic h e ro s d e un d ire c to rio d a d o ,
17.4. M u e stre las o p e ra c io n e s re a liz a d a s so b re la p ila a l re c o rre r e n o rd e n sim é in c lu y e n d o to d o s lo s su b d ire c to rio s, o rd e n a d o s p o r ta m a ñ o d e c re c ie n te . In
tric o y e n p re o rd e n e l á rb o l d e la F ig u ra 17.25.
c lu y a los ta m a ñ o s y c u a lq u ie r o tra in fo rm ac ió n q u e p u e d a o b te n e r d e lo s
ficheros.
Problem as teóricos 17.13. M ed ian te un p ro g ram a s e pued e g e n e ra r au to m á tic a m e n te u n á rb o l bin ario
p ara a u to ed ició n . E sto se p o d ría h a c e r a sig n a n d o u n a c o o rd e n a d a U . y ) a
c a d a n o d o d e l á rb o l, d ib u ja n d o un c írc u lo a lre d e d o r d e d ic h a c o o rd e n a d a y
17.5. M u e stre q u e e l n ú m e ro m á x im o d e n o d o s e n u n á rb o l b in a rio d e a ltu ra H es
c o n e c ta n d o c a d a n o d o d is tin to d e la ra íz c o n su p adre. S u p o n g a m o s q u e
2 — 1.
d is p o n e m o s d e un á ib o l b in a rio a lm a c e n a d o e n m e m o ria y q u e c a d a n o d o
17.6. U n n o d o c o m p le to e s un n o d o c o n d o s hijos. D e m u e stre q u e e n un árbol
tie n e d o s atrib u to s e x tra e n los q u e a lm a c e n a r su s c o o rd e n a d a s . S u p o n g a
b in ario , e l n ú m e ro d e h o ja s e s ig u a l a l n ú m e ro d e n o d o s c o m p le to s m á s I.
m os q u e (0 . 0» se co rre sp o n d e c o n la e sq u in a su p e rio r izq u ierd a. S e pid e
17.7. ¿ C u á n to s hijos ig u a le s a n u i l ha> e n u n á rb o l b in a rio d e ;V n o d o s ? ¿ C u á n
h a c e r lo siguiente:
to s hay e n un á rb o l M a rio d e N n o d o s0
I7.H. C o n sid e re m o s u n á rb o l b in a rio c o n h o ja s / )t l2 IM a p ro fu n d id a d e s d¡. a) L a c o o rd e n a d a x se p u e d e calc u lar u s a n d o e l n ú m e ro q u e le c o rre sp o n
^ 2 .........<l\i- re sp ectiv am e n te . D e m u e stre q u e I ; w_ , 2 _ ', ‘ $ I (lla m a d a d e s i d e e n e l re c o rrid o e n o rd en sim étrico . E scrib a u n a ru n n a que h a g a e sto
g u a ld a d d e K ra fi) y d e te rm in e c u a n d o se d a la igualdad. p ara c a d a n o d o del árbol.
/.> L a c o o rd e n a d a y s e p u e d e c a lc u la r u s a n d o la p ro fu n d id a d d e l n o d o . E s
c rib a una ru tin a q u e h a g a e s to para c a d a n o d o d e l árb o l,
Problem as prácticos r) D e term in e, e n té rm in o s d e u n a u n id a d im a g in a ria , c u á le s se rá n las d i
m en sio n es del d ib u jo . T a m b ié n d e te rm in e c ó m o a ju s ta r la s u n id ad es
17.9. E scrib a m é to d o s e fic ie n te s (p ro p o rc io n e las m e d id a s O ) q u e d a d a u n a re fe d e fo rm a q u e la a ltu ra d e l árb o l s ie m p re s e a a p ro x im a d a m e n te d o s te r
ren cia a un á rb o l b in a rio T c a lc u le n lo sig u ien te: c io s d e su an ch u ra.
d) D em u estre q u e c u a n d o se u s a e s te siste m a , las arista s n o se c ru z a n y
a) E l n ú m e ro d e h o ja s d e T. q u e p a ra c a d a n o d o X. to d o s lo s e le m e n to s d e l su b árb o l iz q u ie rd o d e X
b) El n ú m e ro d e n o d o s d e T q u e c o n tie n e n e x a c ta m e n te un h ijo d istin to a p a re c e n a su izq u ie rd a y to d o s lo s e le m e n to s del s u b á rb o l d e re c h o de
de n u i l . X a p a re c e n a su derech a.
c) El n ú m e ro d e n o d o s d e f q u e c o n tie n e n e x a c ta m e n te d o s h ijo s d is tin r) D e te rm in e si a m b a s c o o rd e n a d a s se p u e d e n c a lc u la r p o r m e d io d e un
to s d e n u i l . ú n ico m éto d o recursivo.
f) E sc rib a un p ro g ra m a d e d ib u jo d e árb o les tic p ro p ó s ito g en eral que
17.10. Im p lem en te a lg u n a s de la s ru tin as re c u rsiv a s in c lu y e n d o co m p ro b a c io n e s
c o n v ie rta u n á rb o l e n u n a se c u e n c ia d e in stru c c io n e s d e g e n e ra c ió n de
q u e g a ra n tic e n q u e n o s e re a liz a n in g u n a llam a d a re c u rsiv a so b re un subár- g rá fico s d e l sig u ien te e s tilo (lo s c írc u lo s e s tá n n u m erad o s e n el o rd en
bol n u l 1. C o m p a re e l tie m p o d e e je c u c ió n c o n ru tin as id én tic as q u e re tra
e n q u e se p in tan ):
sen e l te st h asta la p rim e ra lín e a del m é to d o recu rsiv o .
17.11. R e sc rib a la c la s e ite ra d o ra d e m o d o q u e se la n c e u n a e x c e p c ió n c u a n d o se c i r c u l o ! x , y ) ; / / D i b u j a u n c i r c u l o c o n c e n t r o e n ( x . y)
a p lic a p r i m e r o a un á rb o l v a c ío . ¿ P o r q u é p u e d e se r e s to u n a id e a p o co d ib u ja L in e al i . j ); / / C onecta e l c ir c u lo i con e l j
afo rtu n ad a?
g» E scrib a un p ro g ra m a q u e le a la s in stru c c io n e s d e g e n e ra c ió n d e g rá fi
c o s y g e n e re c ó d ig o J a v a p ara d ib u ja r so b re u n lie n z o (o b serv e q u e tie
1 p u b lic v o id im p r im lr M ia t e r ío s o ( N o d o B ín a r lo a )
2 n e q u e e sc a la r la s co o rd e n a d a s a lm a c e n a d a s e n pixcls).
3 i f ( a !• n u i l ) 17.14. D iseñe u n a p p le t q u e ilu stre las d istin ta s e stra te g ia s d e re co rrid o d e árb o les
4 (
5 S y s t « n . o u t . p r i n t I n t a . d a t o ):
6 i m p r i m i r M i s t e r i o s o t a . i z q u i e r d o ).-
7 S y s te m .o u t.p r in tln t a .d a to );
8 im prim irM isterxosot a.d e rec h o );
9 S y s t e m . o u t . p r i n t l n t a . d a t o >:
10
11
18 Árboles binarios
de búsqueda
• E n q u e c o n s is te e l á rb o l b in a rio d e b ú sq u e d a b ásico .
• C ó m o in c lu ir b ú s q u e d a s p o r p o s ic ió n e n e l o rd e n ( e s to e s . la o p e ra c ió n
e n c o n e r a r K e s im o I.
• T re s m in io s d ife re n te s d e e lim in a r e l c a s o p e o r ( U N ) ( lo s á rb o le s A V I., los
á rb o le s ro jin e g ro s > lo s A A -á rb o le s).
• C ó m o p u e d e m e jo ra rse la e fic ie n c ia d e las c o n s u lta s e n u n a b a s e d e d a lo s «le
g ran ta m a ñ o , e m p le a n d o B -árb o les.
P o r lo g e n e ra l, u n e le m e n to se b u s c a p o r su c la v e . I \ h e je m p lo , un e stu d ia n te p u e
d e b u s c a rs e e n la b a s e d e d a to s u tiliz a n d o su D N I. E n e s te c a s o , e l n ú m e ro «le DNI
se c o n s id e ra la c la v e d e l e le m e n to .
E l á r b o l b in a r io d e b ú s q u e d a e s un á rb o l b in a rio q u e sa tisfa c e la p ro p ie d a d d e
la b ú sq u e d a o rd e n a d a . E s to sig n ific a q u e p a ra c a d a n o d o .V d e l á rb o l, lo s v alo res
d e to d a s la s c la v e s «le su s u b á rb o l iz q u ie rd o s o n m e n o re s q u e la c la v e d e X > los
v a lo re s d e to d a s las c la v e s d e su subárb««l « ierecho so n m a y o re s q u e la c la v e «le X.
E n la F ig u ra 1S. I . e l á rb o l «le la iz q u ie rd a e s un árb o l b in a rio d e b ú sq u e d a , m ie n
tr a s q u e e l á rb o l «le la d e re c h a n o lo e s (la c la v e H n o «leberia p e rte n e c e r al su b ár-
bo l iz q u ie rd o d e la c la v e 7 ). 1.a p n * p ied ad q u e d e fin e l«>s á rb o le s binaru>s «le bus-
q u e d a im p lic a q u e U nios lo s e le m e n to s d e l á rb o l p u e d e n o rile n a rse d e fo rm a
c o n s is te n te (el re c o rrid o e n o rd e n s im é tric o «le la e s tru c tu ra m u e s tra los e le m e n to » p«
o rd e n a d o s e n fo rm a a sc e n d e n te ). D ic h a p ro p ie d a d l i o p e rm ite e n p rin c ip io la exis*
L a o p c ru c ió n m á s c o m p lic a d a e s e l i m i n a r . U n a vez q u e h e m o s e n c o n tra d o e lli
e l n o d o q u e d e b e se r b»*nado. e s prccis»* c o n s id e ra r v a n a s a lte rn a tiv a s. E l p ro b le com
m a e s q u e la e lim in a c ió n d e u n n o d o p u e d e d e s c o n e c ta r v a n a s p a n e s d e l árb o l. O sn
noja
D e b e m o s s e r c u id a d o s o s e n s u m a n ip u la c ió n d e m o d o q u e se m a n te n g a s ie m p re la árba
p ro p ie d a d d e la b ú sq u e d a o rd e n a d a . A d e m á s , e s n e c e sa rio e v ita r q u e e l á rb o l te n no d
g a d e m a s ia d a p ro fu n d id a d , p u e s to q u e . c o m o y a h e m o s c o m e n ta d o antcn»»rm enle. deve
la p ro fu n d id a d d e l á rb o l in flu y e e n e l tie m p o d e e je c u c ió n d e lo s alg»»ntm»>v
S i e l nod»> a b o rra r e s u n a h o ja , su e lim in a c ió n n o desc»*nectará e l á rb o l, p o r lo Sun
q u e p u e d e s e r e lim in a d o sin m á s S i e l n tx lo tie n e u n s o lo h ijo . p o d em t* \ e lim in a r uvci
Figura 18.1 Dos árboles o ra rlo s (sólo e l d e la iz q u era a es a e búsqueda)
lo d e sp u é s »ie q u e su p a d re h a y a a ju s ta d o su s re fe re n c ia s h a c ia lo s h ijo s , sa lta n d o
dúo
a l n o d o e lim in a d o E s to se m u e s tra e n la F ig u ra 18.3. e n la q u e e lim in a m o s e l 5. •ere»
te n c ia d e e le m e n to s d u p lic a d o s, p e ro e s s e n c illo g e n e ra liz a rla d e m o d o q u e s e p e r O b s e rv e q u e e s to im p lica q u e e l i m i n a r M i n y e i i m i n a r M a x n o stin e x c e s iv a r*to
m ita la re p e tic ió n d e c la v e s. G e n e ra lm e n te , e s m e jo r g u a rd a r lo s e le m e n to s c o n la m e n te c o m p le jo s , y a q u e lo s n o d o s a fe c ta d o s s o n h o ja s o tie n e n u n ú n ic o hijo . N ó case
m ism a c la v e e n u n a e s tru c tu ra s e c u n d a ría . S i lo s e le m e n to s s o n d u p lic a d o s e x a c te s e ta m b ié n q u e la ra íz es u n c a s o e sp e c ia l p o rq u e n o tie n e p a d re S in e m b a rg o , que
to s. la m e jo r o p c ió n s u e le se r te n e r u n o s o lo y m a n te n e r u n c o n ta d o r c o n e l n u m e c u a n d o im p lc m e n te m o s e l m é tix io e l i m i n a r , é s te s e tra ta rá e n p rin c ip io d e fo r
r o d e re p e tic io n e s. m a u n ifo rm e , sin s e r n e c e s a r io un tra ta m ie n to e sp e c ia l.
E l c a s o c o m p lic a d o lle g a c u a n d o d e b e m o s e lim in a r un n o d o c o n d o s h ijo s. L a Un n
e s tra te g ia g e n e ra l e s re e m p la z a r el elem enh» d e e s e mvdo c o n e l m e n o r e le m e n to niios
18.1.1 Las operaciones d e su s u b á rb o l d e re c h o (q u e . c o m o y a h e m o s c o m e n ta d o , se e n c u e n tra fácilm en te)
el m
oes
y e lim in a r d e s p u é s e l n o d o d e l m e n o r e le m e n to (q u e s e c o n s id e ra v a c ío d e sd e el do*c
L a m a y o ría d e las o p e ra c io n e s d e lo s á rb o le s b in a rio s d e b ú sq u e d a so n s e n c illa s d e
p u n to d e v ista ló g ic o ) L a s e g u n d a o p e ra c ió n e l i m i n a r e s s e n c illa , y a q u e e l n o eim
c o m p re n d e r P o d e m o s re a liz a r u n a o p e ra c ió n b u s c a r c o m e n z a n d o e n la ra íz y corrí
d o mínim»* d e u n á rb o l n o tie n e h ijo iz q u ie rd o I j F ig u ra 18 4 m u e s tra u n á rb o l
d e sp la z á n d o n o s re p e tid a m e n te p o r la s ra m a s iz q u ie rd a o d e re c h a , d e p e n d ie n d o del acf
re s u lta d o d e la s c o m p a ra c n m c s . P o r e je m p lo , p a ra e n c o n tra r e l e le m e n to 5 e n el e+en
á rb o l binan»* »lc b ú sq u e d a d e la F ig u ra 1 8 .1 . e m p e z a n m s e n e l 7 y \a n u * s p o r la
ra m a iz q u ie rd a . E s to rv*' c o n d u c e a l 2 . > »k*\de a q u í vam»*s a la d e re c h a . A sí. lle
g a m o s al 5 P ara e n c o n tr a r e l 6 . h u b ié ra m o s s e g u id o e l m ism o c a m in o . Cuand»* e s
tu v ié se m o s e n e l 5. iría m o s p»*r la d e re c h a , e n c o n tr a n d o u n a re fe re n c ia n u i l . p«*r
lo q u e e l 6 n o e s tá e n e l á rb o l L a F ig u ra 18.2 m u e s tra q u e e l 6 p u e d e in se rta rse en
e l lu g a r d o n d e h a fin a liz a d o su b ú sq u e d a fa llid a
El árb«*l b in a rio d e b ú s q u e d a s o p o r ta d e m o d o e fic ie n te la s o p e ra c io n e s
b u s c a r M i n y b u s c a rM .x x . P a ra e je c u ta r b u s c a r M i n . p a rtim o s d e la raíz v re c o
rre m o s re p e tid a m e n te U nios lo s n o d o s iz q u ie rd o s h a s ta lleg ar a u n no»lo q u e no
te n g a h ijo iz q u ie rd o . D ic h a h o ja e s e l e le m e n to m ín im o d e l árb o l. b u s c a r M a x e s Figura 18 3 lo s árboles tunarlos d e bú squeda antes y después d e eim inor e l 5 (que
anák*ga. s a lv o p o r e l h e c h o d e q u e e l re c o rrid o e s a h o ra p o r la d e re c h a N»*tcse que tenia ix i único hijo)
e l c o s te d e a m b a s o p e ra c io n e s e s p ro p o rc io n a l a l n ú m e ro d e nod»>\ d e l c a m in o de
b ú sq u e d a . El c o s te e n m e d ia e s lo g a rítm ic o , p e ro p u e d e se r lin eal e n e l p e o r d e los
c a s o s E s to se e x p lic a postcn»*rm cntc e n e s te c a p ítu lo
1 p a c k a g e E s t r u c t u r a G D a t o a ;
lin p rin c ip io , lo s a rb o le s b in a rio s d e b ú sq u e d a so n se n c illo s d e im p le m c n ta r. U nas 2
p e q u e ñ a s sim p lific a c io n e s e \ itu n q u e e l c ó d ig o s e c o m p liq u e e n e x c e s o . P a ra e m 3 im p o r t S o p o r t e . * : im p o r t S o p o r t e . C o m p a r a b l e ;
5
los a trib u to s e s a m is to s o , p e r o la c la s e s ó lo e s a c c e s ib le d e s d e d e n tro d e su p a q u e
6 / / C l a s e A r b o l B i n a r i« B u o q u e d a
te. lin las lín e a s 31 a 3 3 h e m o s in c lu id o a lg u n o s a trib u to s a d ic io n a le s , y a q u e d e 7 II
s e a m o s e m p le a r las m ism a s d e c la ra c io n e s e n á rb o le s b ín a n o s d e b ú sq u é d a m ás 8 / / C O N S T R U C C IÓ N : s i n n in g u n a i n i c i a l i z a c i ó n
14 / / C o m p a r a b le b u s c a r ( x ) - - > D e v u e lv e e l e le m e n t o q u e a ju s t a c o n x
15 II c o m p a r a b le b u s c a r M i n I ) - - > D e v u e lv e e l m e n o r e le m e n t o
1 packago E stru c tu ra a D a to a : 16 / / C o m p a r a b le b u s c a r M a x ! 1 D e v u e lv e e l m a y o r e le m e n t o
2 17 / / b o o le a n e s V a c i o ! ) — > D e v u e lv o t r u e si v a c í o ; s i n o . f a l s o
3 im port S o p o rte .* ; import S o p o rte.C om parable: 18 / / v o i d v a c i a r ! ) - - > E l i m i n a t o d o s l o s e le m e n t o s
4 19 II v o i d I m p r i m i r A r b o l ! > - - > I m p r im e e l á r b o l o r d e n a d a m e n t e
Figuro 18.5 Lq C-OSe ü fi IOS nodos los O rh r*w h irw in c ri#» h u v r . orín C m i r n IB A Ce™ uilt.tr» l o rlOV* I r K í i l Ki n i l l i p B U S q u e d a (COTÍ© 1 )
51 p r o t e c t e d NodoBinario e l í m i n a r M i n e lim in a e l m e n o r e le m e n to d e l á rb o l, y la n z a u n a e x c e p c ió n si
52 b u s c a r l Com parable x. N o d o B in ario t ) th ro w s Elem entoNoEncontrado é s te e s tá v a c ío , e l i m i n a r e lim in a d e l á rb o l e l e le m e n to in d ic a d o x ; ta m b ié n la n
53 ( / • F ig u ra 10.8 •/ | za. c v e n tu ttlm e n tc . u n a e x c e p c ió n E l e m e r . t o N o E n c o n t r a d o . v a c i a r y e s V a c i o
54
so n la s ru tin a s u su ales.
55 p r o t e c te d NodoBinario
A l ig u a l q u e e n la n u v o r í a d e las e s tru c tu r a s d e d o lo s, la o p e ra c ió n b u s c a i es
56 buscarM ini N odoB inario t ) t h r o w s Ele w er.toN oE ncontrado
57 ( / • F ig u ra 10.9 • / ) m u c h o m á s se n c illa q u e i n s e r t a r , e i n s e r t a r e s m á s sim p le q u e e l i m i n a r .
58 L a F ig u ra 18.8 m u e s tra la ru tin a b u s c a r . E n e lla , m ie n tra s n o se a lc a n c e u n a re fe
59 p r o t e c t e d NodoBinario re n c ia n u l 1 . o b ie n s e h a e n c o n tra d o e l e le m e n to buscad»» o d e b e m o s re c o rre r las
60 buscarMax! N odoB inario t ) throw s ElenentoN oEncontrado ra m a s iz q u ie rd a o d e re c h a p a ra h a c e rlo . El c ó d ig o im p le m e n ta e s te a lg o ritm o de
61 ! / • F ig u ra 18.9 • / 1
62 fo rm a b ie n su c in ta O b se rv e e l o rd e n e n e l q u e se re a liz a n las c o m p ro b a c io n e s . F s
63 p r o t e c t e d NodoBinario c ru c ia l q u e se re a lic e p rim e ro e l te st p a ra la re fe re n c ia n u i l ; d e o tro m o d o , e l ac
64 i n s e r t a r ! Comparable x, N odoBinario t ) throw s Elem entoDuplicado c e s o t . d a t o se ria in c o rre c to . L os te s ts re s ta n te s s e o rd e n a n c o lo c a n d o e n ú ltim o
65 I / • F ig u ra 1 8 .1 0 */ ) lu g a r e l m e n o s p ro b ab le.
66
A p rim e ra v ista p a re c e q u e las in s tru c c io n e s c o m o t = t . i z q u i e r d o m o d ifi
67 p r o t e c t e d NodoBinario
c a n la raí/, d e l á rb o l, p e ro e s to n o e s a sí. N ó tese q u e e n la lla m a d a in ic ia l, t es
68 elÍB in a rM in ( NodoBinario c ) throws ElementoNoEncontrado
69 { / • F i g u r a 1 0 .1 1 • / 1 sim p le m e n te o tr a re fe re n c ia a l n o d o a l q u e a p u n ta r a i z . A u n q u e t c a m b ie , p a
70 s a n d o a re fc re n c ia r a o tr o s m u lo s, r a i z n o lo h a c e . L a s lla m a d a s a b u s c a r M i n y
71 p r o t e c t e d NodoBinario b u s c a r M a x so n in c lu s o m á s se n c illa s , y a q u e e l r e c o r rid o s e h a c e s ie m p re e n la
72 e l i m i n a r ! Comparable x. N o d o B in ario t ) th r o w s ElomentoNoEncontrado m is m a ra m a E sta s ru tin a s se m u e s tra n e n la F ig u ra 18.9. O b s e rv e c ó m o se m an eja
73 ( / • F ig u ra 1 8 .1 2 • / )
74 c u id a d o s a m e n te e l c a s o d e l á rb o l v a cío .
75 p r o t e c t e d v o i d impr in u rA rb o l l N odoB inario t > L a ru tin a i n s e r t a r s e m u e s tra e n la F ig u ra 18.10. P a ra sim p lific a r e l c ó d ig o
76 ( / * No s e m u e s t r a : v e r e l c ó d i g o e n I n t e r n e t c o n IntT ree*/} >c e m p ic a re c u rs ió n . E s p o s ib le ta m b ié n u n a im p le m e n ta c ió n n o re c u rsiv a ; esta
77
té c n ic a s e e m p ic a rá m á s tard e e n e s te m ism o c a p ítu lo e n lo s á rb o le s ro jin e g ro s . El
78 p r o t e c te d NodoBinario raíz;
79 1 a lg o ritm o b á s ic o e s m u y se n c illo . S i e l á rb o l e s tá v a cío , c re a m o s u n n u e v o á rb o l
c o n u n ú n ic o n o d o . I.a c o m p ro b a c ió n s e re a liz a e n la lín e a 12. y e l n u e v o n o d o se
Fi gu r o 18.7 Esqueleto d e lo c ia se A r b o l B i n a r i o B u s q u e d a (p a rte 2) in s e rta e n la lín e a 13. A l ig u al q u e a n te s , lo s c a m b io s lo c a le s d e t s e p ie rd e n . A sí.
d e v o lv e m o s la n u e v a r a l / t e n la lín e a 2 0 . E n la ru tin a p ú b lic a i n s e r t a r , s e m o
E n e l e s q u e le to a p a re c e n s ie te m é to d o s q u e a c tú a n so b re e l n o d o q u e se p asa d if ic a r a i z a s ig n á n d o le e l v a lo r q u e d e v u e lv e la ru tin a i n s e r t a r o c u lta .
c o m o p arám etro . Y a se h a u tiliz a d o a n te rio rm e n te e s ta té c n ic a g e n e ra l e n e l C ap ítu
lo 17. L a id e a e s q u e las c la s e s p ú b lic a s lla m e n a e s ta s ru tin a s o c u lta s , p a sá n d o le s
1 /• •
la r a í z c o m o p a rá m e tro . S o n las ru tin a s o c u lta s la s q u e r e j l i / a n to d o e l trabajo. 2 * M é t o d o i n t e r n o p a r a b u s c a r u n e l e m e n t o e n un s u b á r b o l .
H ay d o s d e ta lle s q u e d e b e m o s te n e r e n c u e n ta F.l p rim en» d e e llo s e s q u e lo s m é 3 * «param x e l e lo m e n to a b u s c a r .
to d o s q u e d e s d e u n p u n ió d e v ista ló g ic o so n p riv a d o s, tie n e n c o m o a trib u to de 4 • 0param t l a r a i z d e l s u b á r b o l .
5 * « r e tu r n e l nodo que c o n tie n e e l elem ento buscado.
v isib ilid a d p r o t e c t e d . e n lu g a r d e p r í v a t e . F.sto e s d e b id o a q u e . m á s lard e en
6 • « e x c e p tio n ElementoNoEncontrado s i e l elem ento
e s te c a p itu lo , d e riv a re m o s o tra c la s e a p a rtir d e A r b o l B i n a r í o B u s q u e d a . E l se 7 • no e s t á en e l su b á rb o l.
g u n d o d e ta lle e s q u e lo s m é to d o s p riv a d o s n o so n e s tá tic o s , a u n q u e re s u lte te n ta 8 * •/
d o r h a c e rlo s e s tá tic o s . Per»» e s q u e si a s í s e h ic ie ra n o p o d ría e m p le a rs e p o s te rio r 9 p r o t e c t e d NodoBinario
m e n te e l tip a d o d in á m ic o e n la e x te n s ió n d e A r b o l B i n a r í o B u n q u e d a . 10 b u s c a r ! C o m p a r a b l e x . N o d o B i n a r i o t. ) t h r o w a F . l e n e n t o N o E r . c o n t r a d o
E l re s to d e l esq u eleto d e A r b o l B m a r i o B u s q u e d a e s una sen cilla enum eración 11 l
12 w hile! t I■ n u i l I
d e lo s m étodos c u y a s im p lem cn tacio n es in v o c a n a I** m é to d o s o cu lto s E l c o n s 13 l f l x .compara! t.d ato I < 0 I
tru c to r. d e c la ra d o e n la linea 3 0 . só lo in icializa la re fe re n c ia r a í z a n u i l . D e la lí 14 t
■ t.izq u ierd o ;
n e a 3 3 a la 5 0 se e n u m e ra n lo s m é to d o s p ú b lic o s ju n to c o n su s im p le m e n ta d o n c s . 15 e ls a i e ( x . comparal t . d a t o I > 0 I
i n s e r t a r a ñ a d e e l e le m e n to x e n e l á rb o l lla m a n d o a la ru tin a o c u lta 16 t • t.derecho:
17 else
i n s e r t a r y p a s á n d o le r a í z c o m o p a rá m e tro S e p r o d u c ir á u n e rr o r si x e s tá y a
18 return t; II Encaja
e n e l á rb o l, e n c u y o c a s o , s e la n z a rá u n a e x c e p c ió n E l e m e n t o D u p l i c a d o . 19
b u s c a r M i n . b u s c a r M a x y b u s c a r d e v u e lv e n e l e le m e n to m e n o r, m a y o r o ju s to 20 th r o w new E ie m e n to N o E n c o n tra d o l ‘ b u s c a r d e A r b o 1B ú s q u e d a * ):
e l in d ic a d o , re s p e c tiv a m e n te . S i e l e le m e n to n o e s tá e n e l á rb o l, b ien p o rq u e e l á r 21 :
b o l s e a v a c ío o p o rq u e n o h a y a m o s in s e rta d o e l e le m e n to p re v ia m e n te , s e la n z a
Figuro 18.8 O p e r a c i ó n b u s c a r d e io s ó r b o le s b in a rio s d e b ú s q u e d a
u n a e x c e p c ió n d e l tip o E le m e n to N o E n c o n r
• Método i n t e r n o p a r a b u s c a r e l m enor e l e m e n t o d e u n s u b á r b o l . S i e l á rb o l n o e s v a c ío le ñ e m o s lie s p o s ib ilid a d e s . S i e l e le m e n to a in s e rta r es
• Oparam t l a r a í z d e l s u b á r b o l . m e n o r q u e e l e le m e n to d e l n o d o t . lla m a m o s re c u rs iv a m e n te a i n s e r t a r s o b re el
• O r e t u r n e l nndo q u e c o n t i e n e e l menor e l e m e n t o . s u b á rb o l d e re c h o . S i e s m a y o r, lla m a m o s re c u rs iv a m e n te a i n s e i t u r so b re e l su -
• 0 e x c e p tio n EiementoNoEncontrado s i e l s u b á rb o l e s t á v a c ío .
•/ b á rb n l iz q u ierd o . T o d o e s to s e c o d if ic a e n las lin c a s 14 a 17 N ó te se q u e d e v o lv e
p r o t e c t e d NodoBinario m o s e l re s u lta d o d e la lla m a d a re c u rs iv a a i n s e r t a r . Hl te r c e r c a s o e s q u e el e le
b u scarM in ( NodoBinario t ) throw s EiementoNoEncontrado m e n to a in s e rta r c o in c id a c o n e l e le m e n to d e l n o d o t ; e n e s te c a s o la n z a m o s una
e x c e p c ió n .
ifl t == n u i l ) L a s re s ta n te s ru tin a s c o rre s p o n d e n a las o p e ra c io n e s d e e lim in a c ió n . C o m o se
t h r o w new El e m e n t o N a E n c o n t r a d o ! ‘ b u s c a r M i n d e A r b o l B u sq u e d a ' )
h a in d ic a d o a n te rio rm e n te e n e s te c a p ítu lo , la o p e ra c ió n e l i m i n a r M i n e s s e n c i
whi l s l t . i z q u i e r d o 1 = r . u l l ) lla . y a q u e e l n o d o m ín im o n o tie n e h ijo iz q u ierd o . S ó lo d e b e m o s s a lta r so b re el
t = t . Izquierdo n o d o e lim in a d o . P u e d e p a re c e r q u e e n c a d a p u so s e n e c e s ita c o n o c e r e l p u d re del
return t; n o d o a c tu a l, p e ro u n a v e z m á s . e m p le a n d o la re c u rsió n p o d e m o s e v ita r la re fe re n
1
c ia e x p líc ita a l p a d re . E l c ó d ig o s e m u e s tra e n la F ig u ra 1 8 .1 1.
S i e l á rb o l t e s v a c ío , e l m é to d o © 1 i m i n a r M i n falla. F.n c a s o c o n tra rio , si t E n
p r o te c te d NodoBinario 4 • £ r e t u r n l a n u e v a r a í z .
{ 6 •/
ií( t == n u i l i 7 p r o t e c t e d N o d o B i n a r io
t • new N o d o B in a r io ! x . n u i l , n u i l ) ; 8 e l i m i n a r M i n < N o d o B in a r io t ) t h r o w n E ie m e n t o N o E n c o n t r a d o
e l s e i f ( X.comparal t . d a t o l < 0 l 9 (
t. . i z q u i e r d o - i n s e r t a r ! x . c . i z q u i e r d o ); 10 ifl t = = nuil >
e ls e l í i x.com paral t . d a t o l > 0 ) U t h r o w n e w Elc-mentoNoEnconti a d o l ' e l i m i n a r M i n d e A r b o l B ú s q u e d a
t.d e r e c h o = i n s e r t a r ! x. t.d e r e c h o ); 12 if( t.i z q u i e r d o != n u i l >
elae 13 t . i z q u i e r d o * el!«nlnarMln( t . Izquierdo );
t h ro w new E ie m e n t o D u p l ic a d o I " i n s e r t a r de ArbolBúsqueda' I; 14 else
r e tu rn tr 15 t ■ t.derecho:
16 r e t u r n t;
17 J
iro 10.10 Versión recursiva del m étodo i n s e r t a r d e los arboles bínanos d e búsqueda
Fmi i r n 1A 11 M é to d o o i nH n * r M ; n <if» k l r .l H S f i A r : . E 'r .a x - Búsqueda
18.2 Búsqueda por posición en el orden
2 • Método i n t e r n o p a ^ a e l i m i n a r e n u n s u b á r b o l .
3 • Qparam x e l e l e m e n t o a e l i m i n a r . El á rb o l b in a rio d e b ú sq u e d a n o s p e rm ite e n c o n tra r lo s e le m e n to s m ín im o o m á x i
4 • Qparam t l a r a í z d e l s u b á r b o l .
m o e n tie m p o e q u iv a le n te a l d e u n a o p e ra c ió n a rb itra ria b u s c a r . E n a lg u n a s o c a
5 ' 0r e t u r n l a n u e v a r a í z .
6 • Oexceptiuri ElementoNoEncontrado s i e l e le m en to que a j u s t a s io n e s e s im p o rta n te p o d e r a c c e d e r a l K -é s im o m e n o r e le m e n to , p a ra u n v alo r a r
1 ' con x e s t á en e i subárbol de r a íz t . b itra rio K . E s to s e c o n sig u e fá c ilm e n te si m a n te n e m o s in fo rm a c ió n so b re el
8 •/ ta m a ñ o d e c a d a n o d o d e l árb o l.
9 p r o t e c t e d NodoBinario R ecu erd e, d e la S e c c ió n 1 7 .1. q u e e l ta m a ñ o d e u n n o d o e s su n ú m e ro d e d e s
10 e l i m i n a r <C o m p a r a b l e x . N o d o B i n a r i o t I t h r o w s E l e m e n t o N o E n c o n t r a d o
c e n d ie n te s (in c lu y é n d o le a é l m ism o ). S u p o n g a m o s q u e se d e se a e n c o n tra r e l K é s i
11 (
12 if( t == n u i l ) m o m e n o r e le m e n to y q u e K e s m a y o r o ig u al q u e I y m e n o r o ig u al q u e la can tid ad
13 t h r o w rurw E l e m e n t o N o E n c o n t r a d o [ “e l i m i n a r d e A r b o l B ú s q u e d a - 1 ; d e n o d o s d e l árb o l. L a F igura 18.13 m u e s tra q u e e x iste n tre s c a so s p o sib les, d e p e n
i £I x .co m p ara ( t . d a t o 1 < 0 ) d ie n d o d e la re lació n en tre K y e l ta m a ñ o d e l su b árb o l iz q u ierd o , d e n o ta d o p o r S¡,
*5 t . i z q u i e r d o « e l i m i n a r ( x , t . I z q u i e r d o I .• S i K es igual a SL + I en to n c e s e l K -ó sim o m enor e le m e n to e s la raíz, y h e m o s te rm i
16 e ls e i f ( x.com para! t . d a t o I > 0)
n ado. Si K e s m enor o igual q u e S L en to n c e s el K -ésim o m e n o r e lem en to d e b e estar
17 t .d e r e c h o « e l i m i n a r l x. t . d e r e c h o t;
18 e l s e i f ( t . i z q u i e r d o ! « n u i l t . d e r e c h o != n u i l i / / Do s h i j o s e n e l subárbol izq u ierd o , y p o d e m o s en co n trarlo d e fo rm a recursiva. U n a vez m ás. la
recu rsió n n o es o b lig ato ria: se em p lea p a ra sim p lificar la d e scrip ció n d e l algoritm o.
20 t . d a t o • buacaiM :r.( t .d e r e c h o > . d a to : En el c a s o restante, e l A -¿sim o m enor e lem en to e s e l (A' - I t-ésim o elem ento
21 t.d e re c h o = elim inarM in( t.d e rec h o ): m ás p eq u e ñ o d e l subárbol derecho, y tam bién pued e en co n trarse d e fo rm a recursiva.
22
E l m a y o r e s f u e rz o se c o n c e n tra e n m a n te n e r e l ta m a ñ o d e lo s n o d o s d u ran te
23 else / / Camhio d e r a í z
24 t = ( t.izquierdo ¡« n u il ) ? t.izqu ierd o : t.derecho; lo s c a m b io s. E sta s m o d ific a c io n e s s e p ro d u c e n e n la s o p e ra c io n e s i n s e r t a r ,
25 return t; e l i m i n a r y e i i m i n a r M i n . E n p rin c ip io , e l m a n te n im ie n to d e la in fo rm a c ió n es
26 } b a sta n te sim p le . D u ran te u n a in s e rc ió n , c a d a n o d o d e l c a m in o h a s ta e l p u n to d e
in serció n g a n a u n n o d o e n su su b árb o l. C o m o c o n se c u e n c ia , e l ta m a ñ o d e c a d a uno
Figura 18.12 M éto d o e l i m i n a r d e la c la se A r b o l B u s q u e d a B i n a r i o . d e e llo s se in c re m e n ta e n una u n id a d , y e l n u e v o n o d o in s e rta d o tie n e ta m a ñ o I En
e i i m i n a r M i n , c ad a n o d o d e l c a m in o h asta e l m ín im o p ie rd e u n n o d o e n su su b á r
c o n tra rio , si e l e le m e n to a e lim in a r n o s e a ju s ta a l n o d o a c tu a l, lla m a m o s recu r- bol. y a sí. su tam añ o d e c re c e e n u n a u n id ad . D u ran te u n a o p e ra c ió n e l i m i n a r , to
siv a m e n te a e l i m i n a r m o d ific a n d o su p a rá m e tro , h a c ie n d o q u e é s te s e a e l h ijo d o s los n o d o s d e l c a m in o h asta e l q u e v a a se r e lim in a d o ta m b ié n p ierd en u n n o d o
iz q u ie rd o o el d e re c h o , s e g ú n c o rre sp o n d a . E n o tro c a s o a lc a n z a m o s la lín e a 18. e n su s su h á rb o le s. C o m o c o n se c u e n c ia d e to d o e llo , p o d e m o s m a n te n e r fá c ilm e n te
h a b ie n d o e n c o n tra d o e l n o d o a e lim in a r. e l ta m a ñ o d e lo s n o d o s c o n u n a p e q u e ñ a c a n tid a d a d ic io n a l d e esfu erzo .
R e c o rd e m o s q u e c u a n d o e l n o d o a e lim in a r tie n e d o s h ijo s , lo re e m p la z a m o s
c o n e l m e n o r e le m e n to d e l s u b á rb o l d e re c h o y d e s p u é s e lim in a m o s d ic h o e le m e n
to m ín im o F s to s e c o d ific a e n la s lín e a s 2 0 y 21. E n c a s o c o n tra rio , te n e m o s u n o o
nin g ú n hijo. S i e x iste h ijo iz q u ierd o , e n to n c e s se ig u ala t a su h ijo iz q u ie rd o , tal y
c o m o se h a n a e n e lim in a r M a x . S i n o . sab e m o s q u e n o h a y h ijo iz q u ie rd o y p o d e
m o s ig u a la r t a s u h ijo d erech o . T o d o e s to s e c o d if ic a d e fo rm a b rev e y se n c illa e n
la lín ea 2 4 . e n la q u e ta m b ié n se c u b re e l c a s o d e la s h o ja s. T ra s c u a lq u ie ra d e esias
a lte rn a tiv a s, e l m é to d o e l i m i n a r d e v u e lv e la raíz d e l su b á rb o l e n la lín e a 25.
E x iste n d o s d e ta lle s e n e s ta im p le m e n ta c ió n q u e d e b e m o s c o m e n ta r. E n p ri
m e r lu g ar, d u ra n te las o p e ra c io n e s b á s ic a s d e i n s e r t a r , b u s c a r , o e l i m i n a r ,
se h a c e n d o s c o m p a ra c io n e s p o r n o d o , c o n e l p ro p ó s ito d e d is tin g u ir e n tre lo s c a Figuro 18.13 Em pleo del otributo t a m a n y o poro Im plem entar ©I méfcxJo
so s <, = y >. P e ro p o d ría m o s c o n s e g u ir lo m is m o c o n u n a so la c o m p a ra c ió n p o r b u s c a r K e s im o.
n o d o . L a e s tra te g ia e s m u y sim ila r a la s e g u id a e n e l a lg o ritm o d e b ú sq u e d a b in a
ria d e la S e c c ió n 5.6. L a a d e c u a c ió n d e e s ta té c n ic a p a ra lo s á rb o le s b in a rio s d e
b ú sq u e d a se d is c u te e n la S e c c ió n 18,6.2. d o n d e s e tra ta e l a lg o ritm o d e e lim in a 18.2.1 Im plem entación en Ja v a
c ió n d e lo s A A -á rb o le s.
D e sd e e l p u n to d e v is ta ló g ic o , lo s ú n ic o s c a m b io s n e c e sa rio s s o n a ñ a d ir la o p e ra
E l se g u n d o p u n to e s q u e n o te n e m o s p o r q u é e m p le a r la re c u rsió n p a ra la in
c ió n b u s c a r K e s im o y m a n te n e r la in fo rm a c ió n d e l a tr ib u to ta m a n y o e n las ru ti
se rc ió n d e e le m e n to s . D e h e c h o , u n a im p le m e n ta c ió n re c u rs iv a e s . p ro b a b le m e n te ,
n a s i n s e r t a r , e l i m i n a r y e i i m i n a r M i n . D e riv a m o s u n a n u e v a c la s e a p a rtir
m á s le n ta q u e u n a n o re c u rsiv a . F.n la S e c c ió n 18.5.3 s e d is c u te u n a im p le m e n ta -
d e A r b o lB in a r io B u s q u e d a . c u y o e s q u e le to se m u e s tra e n la F ig u ra 18.14.
c ió n ite ra tiv a d e i n s e r t a r , e n e l c o n te x to d e lo s á rb o le s ro iin e e m s .
1 packngo Eytructut.iHDanos;
2 2 * M é to d o i n t e r n o p a r a b u s c a r él K - é s im o m e n o r e le m e n t o d e un s u b á r b o l .
3 import S o p o r t e . * ; import S o p o rte -C o n p ara b le : 3 * íp a r a ir . k e l o r d e n d e l e le m e n t o d e s e a d o (1 e s e l m e n o r e le m e n t o ) .
4 i m p o r t E x c e p c i o n e s . •; 4 •S r e t u r n e 1 r-odo q u e c o n t ie n o o l K - é s im o menor e le m e n t a d e l x u b á r t x » ! .
5 5 • g e x c e p t i o n E le m e n t o N o E n c o n t r a d o si k e s m e n o r q u e
7 / / 7 */
6 CONSTRUCCIÓN: s : r . n i n g u n a I n i c i a l j z a c l ó n 8 p r o t e c t e d N o d o B in a r io
9 9 b u s c a r K e s í m o t i n t k. N o d o B l n a r l o t i t h r o w a E l e m e n t o N o E n c o n t r a d o
JO // ................. OPERACIONES PÚ BLICA S* ..................... 10 (
11 // void in a e rta r! x » --> inuerta x 11 : f t t ■ » n u i l I
12 t iir o w n e w E le m e n t o N o E n c o n t r a d o ! - b u s c a r K e s í m o d e AB8R- ) ;
12 11 void elim inar! X i --> Elim ina x
13 l n t t a m a n y o l z q u i e r d o = <t. i z q u i e r d o t= n u i l ) ? t .iz q u i e r d o , t a m a n y o ; C
13 // void «1 i m i n a r H i r i l i - - > E l i m i n a «.l m e n o r o l u m a n t o
14
14 // Comparable b u s c a n x I — >D e v u e l v e e l e l e m e n t o q u e a j u s t a c o n x 15 ;f( k <= )
t a m a n y o l z q u l e r d o
15 C o m p a ra b le IxiscarMin» I - - > D e v u e lv e e l menor e le m e n t o 16 r e t u r n l k. t . i z q
b u w c a r K e o ir o o u i e r d o ):
16 Comparable buscarM axt > --> D evuelve e l nayor elem ento 17 if l k == ta m a n y o lz q u ie rd o * 1 )
17 II Comparable b u sc a rK e s ia o < in t k ) 18 r e t u r n t ;
' / ~*> Duocar K-ésimo menor e le m en to 19 e is e
19 booiean esV aciol I —> Devuelve t r u e s i v a c io ; s i no. f a ls e 20 r e t u r n b u s c a r K e s in o t k - t a m a n y o I z q u ie r d o - 1. t . d e r e c h o 1;
20 / / void v a ciar! » --> Kllmlrui t o d o s l o s e l e m e n t o s 21 >
21 / / void im prim irArbol ( > --> imprime e l á r b o l o rdenadam ente
22 / * ..............................................................ERRORES* • • *.* .....................................* ........................ .. Figuro 18 15 Operoc»<5n b u s c a r K e s í m o d e los á rb o le s b in o rlo s d e b ú s q u e d a con
23 // Muchas r u t i n a s l a n z a n E l e m e n t o N o E n c o n t r a d o e n c o n d i c i o n e s b ú s q u e d a po» p o sició n
degeneradas
24 // i n s e r l a r l a n z a KlementoDupl i c a d o s i e l e l e m e n t o e s t á e n e l á r b o l n e c e sa ria , y a q u e k p u e d e n»» s e r válid»». E n la lin c a 13 s c c a lc u la e l ta m a ñ o del
25
s u b á rb o l i/quier»!»». S i é s te e x is te , e l a c c e s o a su a tr ib u to ta m a n y o n o s d a la re s
26
p u e s ta p e d id a . S i n o e x is te , p o d e m o s c o n s id e ra r q u e m i la m a ñ o e s c e ro . N«»tcse
27 • imp.ementa un a r b o i b i n a r i o d e búsqueda s i n e q u i l i b r a r .
28 N ó tese que to d a s la u c o n p a r a r io n e s s e b asan en e l método compara. q u e e s te te s t se re a liz a d e s p u é s d e a s e g u r a r q u e la re fe re n c ia t n«> e s n u i l .
29 •/ i n s e r t a r s e m u e s tra e n la F ig u ra 18.16. L a p a n e q u e p o te n c ia lm e n te tie n e inl
p u b l i c c l a s s ABBConRango e x re n d o A r b o lB in a r io B u s q u o d a el !
30 tru c o e s q u e c u a n d o la in s e rc ió n tie n e é x ito , q u e re m o s e n e fe c to in c re m e n ta r el
un
32 p u b lic C o m p a ra b le b u s c a r K e s ím o < Lnt k ) th ro w s E le m en to N o En co n tra d o
1 *nM
33 { r e t u r n b u a ca rK e B im o t k , r a í z ) .d a t o ; )
34 2 • M étodo i n t e r n o p a r a L n a e r t a i en un s u b á r b o l . a s u s t a n d o t oJ
3 • e l tañarte s e g ú n c o r r e s p o n d a . cuj
35 I I L o s m étodos In t e r n o c i n s e r t a r . e l i m in a r y e lim in a r M in se 4 • éparam x e l ele m en to a i n s e r t a r .
36 ii s o b r e s c r ib e n . S e añad e e l m étodo in t e r n o p a r a b u s c a rK e s ím o o\.
5 • ¿parata t l a r a í z d é l s u b á r b o l . éx
37 )
6 * í r e t u r n l a nueva raí?..
7 • í e x c e p t i o n Elem entoD uplicado s i e l e le m e n to que a j u s t a con
Figuro 18.14 Esqueleto d e la clase d e los árb oles bínanos d e bú squeda c o n bús 8 x ya e s t á en e l subárbol de r a íz t .
q u e d a por posición.
9 •
10 p r o c e c c e d NodoBir-ario
11 i n s e r t a r t Comparable x. N o d c B in ario t ) throw e Elener.toPupi icado
V eaim ts los n u e v o s m étod»» púb lico s C o m o e l co n stru c to r i h » s c d e fin e explícita-
12 t
m em e. se em p lea e l co n stru cto r g e n e ra d o p o r d efecto : lo s atrib u to s h ered ad o s so n ini- 13 Ifl t
== n u i l i
c ia li/ailo s p o r e l c o n slru c to r d e A r b o lB in a r io B m iq u c d a . E l n u e v o m é to d o p ú b lico 14 r o t u r e . ntrw N o d o B i n a r i o l x, n u i l , n ü l l I:
15 eise ill x.compara! ' . d a t e ) < 0 )
b u s c a r K e s ím o se d ecla ra e n la lín ea 32 y lla m a a l m é to d o privad»* corresp o n d ien te.
16 r . i rqui oído * in p e rto rt x. t . i z q u i e r d o >
E o s m é to d o s p ú b lic o s, c o m o i n s e r t a r , n o n e c e sita n p ro g ra m a rs e d e n u e v o , y a 17 eise iíi x.com paxat t .«Uto I > 0 I
q u e su s c u e rp o s s o n id é n tic o s a la s v e rs io n e s e n A r b o l b ¡ n a r io B u s q u e d a . 18 t . d e r e c h o = i n s e r t a r ! x. t.d e r e c h o );
L o s q u e c a m b ia n s o n l»»s m é to d o s »le a y u d a p riv a d o s . N e c e s ita m o s q u e el
20 t h r c w new E l e m o n t o ó - i p i i c a d o ! -inserrar d e APBR* ll
i n s e r t a r p ú b lic o in v o q u e a l c o rre s p o n d ie n te m é to d o d e a y u d a p riv a d o . O b serv e ,
21
sin e m b a rg o , q u e lo s m é to d o s p riv a d o s n o d e b e n te n e r e l a tr ib u to s i a t i c . y a que 22 t . t a n a n y o ••;
la d e c is ió n d e b e h a c e rs e e m p le a n d o lig a d o d in á m ic o , e n lu g a r d e ligad»» e stá tic o . 23 return t;
E a o p e ra c ió n b u s c a r K e s ím o d e la F ig u ra 18.15 s c lia e s c r ito d e fo rm a re c u r 24 j
s iv a . a u n q u e c la r a m e n te n o n e c e sita se rlo . F.sia ru tin a s ig u e la d e s c r ip c ió n d e l a l Figuro 18.16 O p e ra ció n i r . s e r t « ir á e los arb oles binarlos d e bú squeda c o n bús
g o ritm o . lin c a a lin ca, L a c o m p ro b a c ió n d e la re fe re n c ia n u i l e n la lin e a 11 es q u e d a p o f posición
a trib u to t a m a n y o d e t y d e v o lv e r la n u e v a r a í / d e l su b á rb o l. P e ro si la llam ad a
2 • Método i n t e r n o p a r a e l i m i n a r e l m enor e l e m e n t o d e u n s u b á r b o l ,
3 * ajustando
e l tamaño de l o s nodo s cuando corresponda. re c u rsiv a fa lla , d ic h o a trib u lo n o d e b e m o d ific a rs e , d e b ié n d o s e l a n / a r u n a e x c e p
4 • «param c l a r a í -del subárbol. c ió n . A h o ra b ie n , ¿ e s p o sib le q u e e n u n a in s e rc ió n fa llid a lo s turnarlo* d e alg u n o s
5 • 9returr. la nueva raíz. n o d o s c a m b ie n ? L a re s p u e sta e s no: t a m a n y o s ó lo se a c tu a liz a si la lla m a d a re-
6 • « e x c e p tio n ElementoNoEncontrado s i el subárbol e stá vacío. c u rs iv a te r m in a sin la n /a r n in g u n a e x c e p c ió n . N ó te se q u e c u a n d o s e g e n e ra un
7 • /
n u e v o n o d o m e d ia n te la lla m a d a n e w . e l a tr ib u to t a m a n y o s e in ic ia li/a a I e n e l
8 p r o t e c t e d PJodoBinario
c o n stru c to r d e N o d o B i n a r i o .
9 elim in arM ial N odoBinario t i t h r o w s Elemer.toNoEr.contrado
10 ( L a F ig u ra 18 17 m u estra q u e e l m ism o tr o c o p u e d e u tilizarse e n e l i m i n a r H i n .
11 i f ( c == n u i l ) S i la lla m a d a re e u rsiv u fin a liz a c o n é x ito , e l a trib u to t a m a n y o s e d e c re m e n tu ; si la
E n to n c e s, .c u á l e s la m e d ia ? .T ie n d e n la m a y o ría d e lo s a rb o le s b in a r io s de
S e a / > .V) la lo n g itu d m e d ia d e l <a n im o in te r n o d e lo s a r b o le s d e \ n o d o s . D et
b ú sq u e d a a in c lin a rs e h a c ia lo s c a so s b ie n o m al e q u ilib ra d o s, o e x is te a lg ú n puní.»
/ » ,! ! = O. U n á r b o l 7 c o n S n o tlo s e s ta /o r in a d o p o r u n \u b a ib o l i:q u ic rd o
m e d io , c o m o N N ? L j re s p u e sta e s id é n tic a a la o b te n id a e n e l c a s o d e q u ic k s o n :
d e i n o d o s , u n s u b á r b o l d e r e c h o d e i N ~ i - 11-n o d o s, a d e m a s d e u n a ra í:
e l c a s o m e d io e s un 3 8 p o r c ie n to p e o r q u e e l c u s o m e jo r.
a p r o fu n d id a d 0 c o n O í j / < S P o r hi/H ítcsis. c a d a v a lo r d e i e s ig u a l
E n e s ta s e c c ió n d e m o s tra m o s q u e la p ro fu n d id a d m e d ia d e lo s n o d o s d e un
m e n te p ro b a b le . P a ra un i d a d o . D i i l e s lo lo n g itu d m e d ia d e l e a n u n o
á rb o l b in a rio d e b ú sq u e d a e s lo g a rítm ic a , a s u m ie n d o q u e c a d a á rb o l s e g e n e ra
m ie n to d e l s u h tir b 'd t: q u ic id o re s p e c to a su m iz . E n T. to d o s e sto s m u lo s
c o m o re s u lta d o d e se c u e n c ia s a le a to ria s d e in s e rc ió n ( s in o p e ra c io n e s d e u p o
e s tá n u n n iv e l m á s a b a jo A s i. la c o n tr ib u c ió n m e d ia d e lo s n o d o s d r l
e l ¿ m i n a r I P ara c o m p r e n d e r q u é s ig n ific a e s to , c o n s id e re e l re s u lta d o d e in sertar
s u b á r b o l iz q u ie r d o a la lo n g itu d m e d ia d e l c a m in o in te r n o d e T es
tre s e le m e n to s e n e l á rb o l v a c ío . C o m o só lo e s im p o rta n te su o rd e n re la tiv p . p o d e
<I IX ¡). m á s I p a r a c a d a n o d o d e l su b iirb o l iz q u ie rd o . Iu> m ism o
m o s su p o n e r, sin p é rd id a d e g e n e ra lid a d , q u e lo s tre s e le m e n to s so n I . 2 y 3 . E n
se v e rific a p a r a e l s u b á r b o l d e re c h o . O b te n e m o s a s i la re c u rre n c ia
to n c e s . e x is te n s e ts p o s ib le s ó rd e n e s d e in s e rc ió n : ( I . 2 . 3 |. ( I . 3 . 2 ). (2 . I . 3>.
f ) { \ ) = {2 ,V) ( IM i)l * .V I . q u e es id é n tic a a lo re c u rre n c ia o b te
(2 . 3. I). ( 3 . I. 2 ) y (3 . 2. 1 1. E n n u e stra d e m o s tra c ió n a s u m ire m o s q u e c a d a u n o
n id o p o r o q u ic k s o r l. n i lo S e c c ió n fi.b . y q u e a l l í r e s o lv im o s , i o n io c o n
d e e s to s c a s o s e s c q u ip ro b a b le . L o s á rb o le s b in a rio s d e b ú sq u e d a q u e re s u lta n de
s e c u e n c ia , o b te n e m o s q u e lo lo n g itu d m e d io d e l c o m in o in te r n o rv
e sta s in s e rc io n e s se m u e s tra n e n la F ig u ra 18.20. N ó te se q u e e l á rb o l d e r a í / 2 se
í7(<VlogiV).
g e n e ra ta m b ié n p o r la s e c u e n c ia «2. I. 3). A s i q u e a lg u n o s á rb o le s so n m á s p ro b a
b le s q u e o tro s y. tal y c o m o s e m u e s tra , lo s a rb o le s b ie n e q u ilib ra d o s so n m á s p ro
E l a lg o ritm o d e in s e rc ió n im p lica q u e e l c o s te d e u n a in s e rc ió n e s ig u al a l c o s la i
b a b le s q u e lo s m a l e q u ilib ra d o s ta u n q u e e s to n o e s e v id e n te a p u ilir d e l e je m p lo
car
p ro p u e s to p o r ser é s te d e m a s ia d o p e q u e ñ o ). te d e u n a b ú sq u e d a s in é x ito , e l c u a l se m id e u s a n d o la lo n g itu d d r l i o m in o ex te r-
om
C o m e n / j i i h *s c o n la sig u ie n te d e fin ic ió n : m>. E n a lg u n a s o c a s io n e s , d u ia n te u n a in s e rc ió n o e n u n a b ú sq u e d a sin é x ito , se
a lc a n /a e l te s t t = = n u l l . R e c o rd e m o s q u e e n u n á rb o l d e N n o d o s e x is te n \ + I tysM
re fe re n c ia s n u i l . 1-a lo n g itu d d e l c a m in o e x te rn o e s e l n ú m e r o to ta l d e n o d o s a
D E F IN IC IO N : lo n g itu d d e l c a m in o in te r n o d e un á rb o l b in a rio e> ig u a l a lo s q u e s e a c c e d e , in c lu y e n d o e l n o d o n u i l p a ra c a d a u n a d e e s a s N + I re fe re n
la su m a ile las profundid ades d e sus nodos c ia s n u i l . E n o c a s io n e s e l n o d o n u i l re c ib e e l n o m b re d e n o d o e x te r n o , lo que
e x p lic a e l té r m in o lo n g itu d d e ! c o m in o e x te rn o . C o m o se m u e s tra p o ste rio rm e n te
C u a n d o e n un á rb o l d iv id im o s la lo n g itu d d e su c a m in o in te rn o p o r e l n ú m e ro e n e s te m ism o c a p itu lo , a v eces e s c o n v e n ie n te e m p le a r u n su s titu to p a ra e l n o d o
d e n o d o s d e l á rb o l, o b te n e m o s la p ro fu n d id a d m e d ia d e u n n o d o . In c re m e n ta n d o n u il.
e s ta m e d ia e n u n a u n id a d , o b te n e m o s e l c o s te m e d io d e u n a b ú sq u e d a c o n é x ito e n
e l á rb o l, P o r e s te m o tiv o d e s e a m o s c a lc u la r la lo n g itu d m e d ia d e l c a m in o in te rn o D E F I N I C I Ó N : L a lo n g itu d d e l c o m in o e x te r n o d e u n á rb o l b in a r io d e b ú s
d e u n árb o l b in a rio d e b ú s q u e d a , d o n d e la m e d ia se c a lc u la c o n sid e ra n d o eq u ip ro - q u e d a e s la s u in a d e los c o s te s d e a c c e s o a to d a s las re fe re n c ia s n u l 1. P ara
b u b lc s to d a s las p e rm u ta c io n e s d e e n tra d a . E s to se h a c e fá c ilm e n te c o n sid e ra n d o e sto s p ro p ó s ito s , la re fe re n c ia n u l 1 ik* las h o ja s s e c o n s id e ra c o m o u n nodo.
e l á rb o l d e s d e e l p u n to d e v ista re c u rsiv o y e m p le a n d o la s té c n ic a s ilu s tr a d a s e n el
a n á lisis d e l q u ic k s o rl e n la S e c c ió n 8 .6 . L a lo n g itu d m e d ia d e l c a m in o in te rn o se D iv id ie n d o la lo n g itu d m e d ia d e l c a m in o e x te r n o c n ta - V ♦ I . o b te n e m o s el
e s ta b le c e e n a l T e o re m a 18.1.
c o s te m e d io d e u n a in s e rc ió n o d e u n a b ú sq u e d a sin é x ito . A l ig u al q u e e n e l a lg o
ritm o d e b ú sq u e d a b in a ria , e l c o s te m e d io d e u n a b ú sq u e d a sin é x ito e s lig e ra
m e n te s u p e rio r a l c o s te d e u n a b ú sq u e d a e x ito s a É sta e s la c o n c lu s ió n d e l T e o re
m a 18 2
P a ra c u a lq u ie r á r b o l T . si I P U T ) e s lo lo n g itu d d e s u c a m in o in te r n o y 7
EPLA T ) lo lo n g itu d d e su <o m in o e xtern o , e n to n c e s , si 1 tie n e V m u lo s, se
tie n e E P I á T ) = IP U T ►+ 2 ,\.
Ftguio 18 20 Arboles tunados d e b ú sq u ed a ob tenidos d e la Inserción d e la perm u
lo c ió n d e 1. 2 y 3: la p ro b ab ilid ad d e o b ten er e l árbol t>en equilibra /
E l te o r e m a ve d e m u e s tr a / u n in d iie e iá n v s e d e ja c o m o e je r c ic io o l le c to r
d o det ce n tro e s e l d o b le q u e la d e ob toner c a d a uno d e los restan
tes resultodos e n e l E je r c ic io IS .S .
E s te n ta d o r c o n c lu ir sin m á s q u e d e e sto s re s u lta d o s se s ig u e q u e el tie m p o e q u ilib rio . D ic h a c o n d ic ió n d e b e se r fácil d e m a n te n e r, a se g u ra n d o q u e la p ro fu n
m e d io d e e je c u c ió n d e to d a s la s o p e ra c io n e s e s O ílo g ,V). E s to p a re c e se r c ie r to en d id a d d e l á rb o l s e a s ie m p re (><log .V». L a id e a m á s se n c illa e s e x ig ir q u e los su b ár-
la p rá c tic a , p e ro n o h a s id o e s ta b le c id o a n a lític a m e n te d e b id o a q u e e n la d e m o s b o lc s iz q u ie rd o y d e re c h o te n g a n la m ism a p ro fu n d id a d . L a re c u rs ió n n o s in d ica
tra c ió n d e los re su lta d o s a n te rio re s n o se lia te n id o e n c u e n ta e l e fe c to d e las o p e q u e d ic h a id e a s e a p lic a a to d o s lo s n o d o s del á rb o l, y a q u e c a d a u n o d e e llo s e s a
ra c io n e s d e e lim in a c ió n . IV h e c h o , u n e x a m e n m á s d e ta lla d o s u g ie re q u e n u e stro su v e z la r a í / d e a lg ú n su b á rb o l. E sta c o n d ic ió n a s e g u ra q u e la p ro fu n d id a d d e l
á rb o l e s lo g a rítm ic a . S in e m b a rg o , e s d e m a s ia d o re s tric tiv a y a q u e e s c o m p lic a d o
a lg o ritm o d e e lim in a c ió n p ro b a b le m e n te p la n te a rá p ro b le m a s, y a q u e e l i m i n a r
sie m p re re e m p la z a u n n o d o b o rra d o c o n d o s h ijo s c o n u n n o d o d e l s u b á rb o l d e re m a n te n e r la c o n d ic ió n d e e q u ilib rio a l in s e rta r n u e v o s e le m e n to s A sí. lo s á rb o le s
A V L e m p le a n u n a n o c ió n d e e q u ilib rio q u e e s a lg o m ás d é b il, p e ro lo s u fic ie n te
c h o P o d ría p a re c e r q u e e l e fe c to d e este r e c m p la /a n iie n to e s e l d e se q u ilib rio del
m e n te fu e rte p a ra g a ra n tiz a r la p ro fu n d id a d lo g a rítm ic a .
árb o l, in c lin á n d o lo h a c ia la iz q u ie rd a . IX* h e c h o se h a d e m o s tra d o q u e si se c o n s
tru y e u n á rb o l b in a rio d e b ú sq u e d a d e fo rm a a le a to ria y s e h a c e n so b re é l V ; p a
res d e c o m b in a c io n e s a le a to ria s . n s e r t m e l i m i n a r le n la s q u e e l o rd e n de
i n s e r t a r y e l i m i n a r s e a ta m b ié n a le a to rio ), e n to n c e s l o s á rb o le s d e b ú sq u e d a 18.4.1 Propiedades
b in a rio s re s u lta n te s te n d rá n u n a p ro fu n d id a d d e ü \ AT. S in e m b a rg o , n o s e ha
p o d id o d e m o s tra r q u e si n o s lim ita m o s a u n a c a n tid a d ra z o n a b le d e o p e ra c io n e s D E F I N I C I O N : U n á r b o l A V I. e s u n á rb o l b in a rio d e b ú sq u e d a c o n u n a p ro
i n s e r t a ; y e l i m i n a r a le a to ria s e l á rb o l s e d e s e q u ilib re d e fo rm a a p re c ia b lc . IX* p ie d a d a d ic io n a l d e e q u ilib rio , se g ú n la c u a l, la s a ltu ra s d e lo s h ijo s d e re c h o e
h e c h o , y d e fo rm a u n ta n to so rp re n d e n te , p a ra á rb o le s d e b ú sq u e d a p e q u e ñ o s, el iz q u ie rd o só lo p u e d e n d ife rir, a lo su m o , e n u n a u n id a d . C o m o e s u su a l, to m a
a lg o r itm o e l ¡rr ; n a i p a re c e e q u ilib ra r e l á rb o l. C o m o c o n s e c u e n c ia , p a re c e ra z o m o s - I c o m o la a ltu ra d e l á rb o l vacío.
n a b le a su m ir q u e p a ra d a to s d e e n tra d a a le a to rio s, to d a s la s o p e ra c io n e s tie n e n , en
m e d ia , c o s te lo g a rítm ic o , a u n q u e e s to n o h a y a s id o probad»» fo rm a lm e n te . E n el L a F ig u ra 18.21 m u e s tra d o s á rb o le s b in a rio s d e b ú sq u e d a . E l á rb o l d e la iz
E je rc ic io 18.26 s e d e s c r ib e n a lg u n a s e s tra te g ia s a lte rn a tiv a s d e e lim in a c ió n q u ie rd a s a tis fa c e la c o n d ic ió n d e los a rb o le s A V L y p o r ta n to e s u n u rb o l A V I.. El
E l p ro b le m a m á s im p o rta n te n o e s e l p o s ib le d e s e q u ilib rio c a u s a d o p o r e l a lg o - á rb o l d e la d e re c h a , q u e s e o b tie n e a l in s e rta r I e m p le a n d o e l a lg o ritm o o rd in a rio ,
ritm o e l i m i n a r , s in o e l h e c h o d e q u e la s e c u e n c ia d e e n tra d a e s té o rd e n a d a , es n o e s u n á rb o l A V E . y a q u e lo s h ijo s iz q u ie rd o s d e los n o d o s m á s o s c u r o s so n d o s
e n to n c e s c u a n d o n o s e n c o n tra m o s e n e l c a s o p e o r C u a n d o e s to o c u rre , te n e m o s u n id a d e s m á s p ro f u n d o s q u e lo s c o rr e s p o n d ie n te s h ijo s d e re c h o s . S i se in s e rta el
un g ra v e p ro b le m a : e l c o s te d e c a d a o p e ra c ió n e s lin e a l (p a ra se c u e n c ia s d e V o p e e le m e n to 1 3 e m p le a n d o e l a lg o ritm o o rd in a rio d e in s e rc ió n e n u n á rb o l b in a rio de
ra c io n e s ) e n lu g a r d e lo g a rítm ic o . L a situ a c ió n s e c o rre s p o n d e a la d ife re n c ia e n tre b ú s q u e d a , e l n o d o 16 ta m p o c o c u m p lir ía la c o n d ic ió n . E s to e s d e b id o a q u e
el a lg o ritm o q u ic k s o rt y e l d e la o rd e n a c ió n p o r in se rc ió n . El tie m p o d e e je c u c ió n la a ltu ra d e l s u b á rb o l iz q u ie rd o s e r ía I. m ie n tra s q u e la d e l s u b á r b o l d e re c h o s e
re s u lta n te e> c o m p le ta m e n te in a c e p ta b le . ría - I.
M i s a ú n . n o so n s ó lo p ro b le m á tic a s la s e n tra d a s o rd e n a d a s , s in o c u a lq u ie r e n L a c o n d ic ió n d e e q u ilib rio A V L im p lic a q u e e l á rb o l tie n e sie m p re u n a p ro
tra d a q u e c o n te n g a se c u e n c ia s la rg a s 110 a le a to ria s. U n a so lu c ió n a e s te p ro b lem a fu n d id a d lo g a rítm ic a . P ara d e m o s tra rlo , b a s ta m o s tra r q u e un á rb o l d e a ltu ra H d e
es in s istir e n u n a c o n d ic ió n e s tru c tu ra l a d ic io n a l lla m a d a e q u ilib r io , n o se p e rm ite b e te n e r, p o r lo m en o s. C H n o d o s, d o n d e ( e s u n a c o n sta n te m a y o r q u e I E n o tra s
q u e n in g ú n n o d o e s té a d e m a s ia d a p ro fu n d id a d
p a la b ra s, e l n ú m e ro m ín im o d e n o d o s d e u n á rb o l c re c e e x p o n e n c ia lm e n te c o n la
E x iste n n u m e ro s o s m é to d o s p u ra im p le m e n la r á rb o le s b in a r io s ,lc b ú sq u e d a a ltu ra A sí. la p ro fu n d id a d m á x im a ¡le u n á rb o l c o n ,V e le m e n to s e s lo g , <V. El
b ie n e q u ilib r a d o s . M u c h o s d e e llo s so n b a sta n te m i s c o m p lic a d o s q u e lo s á rb o le s T e o re m a 18.3 m u e s tra q u e to d o á rb o l A V L d e a ltu ra / / tie n e m u c h o s n o d o s.
b in a rio s d e b ú sq u e d a e s tá n d a r, y e n m e d ia , c o n su m e n m á s tie m p o e n la s in s e rc io
n es y las e lim in a c io n e s . S in e m b a rg o , e v ita n lo s p ro b le m a s d e lo s e m b a ra z o s o s c a
s o s sim p les. A d e m á s, a l g e n e ra r á rb o le s e q u ilib ra d o s, s e c o n sig u e q u e lo s a c c e so s
s e a n nuis e fic ie n te s. N o rm a lm e n te , la s lo n g itu d e s d e su s c a m in o s in te rn o s e stán
b a sta n te m a s c e rc a d e l c a s o ó p tim o i \ lo g ,V q u e lo q u e s u p o n d ría e l 1.3 XA lo g .V
q u e se a lc a n z a b a e n e l c a s o o rd in a rio , d e m o d o q u e e l tie m p o d e b ú sq u e d a m e d io
v ie n e a s e r u n 25 p o r c ie n to m e n o r q u e e n d ic h o c a so .
1. U n a in s e rc ió n e n e l s u b á rb o l iz q u ie rd o d e l h ijo iz q u ie rd o d e X.
D e l E je rc ic io 7.S. le ñ e m o s F, í 0 ‘ N 5 d o n d e i*> = ( I + N 5 ) 2 i 1,618. C o
2. U n a in s e rc ió n e n e l s u b á rb o l d e re c h o d e l h ijo iz q u ie rd o d e X.
m o c o n s e c u e n c ia , u n á rb o l A V I. d e « llu ra I I n e n e , a p ro x im a d a m e n te . 5
3. U n a in s e rc ió n e n e l s u b á rb o l iz q u ie rd o d e l h ijo d e re c h o d e A'.
n o d o s. A si. su p ro fu n d id a d e s . a lo s u m o , lo g a rítm ic a . M á s e x a c ta m e n te , la a ltu ra
4. U n a in s e rc ió n e n e l s u b á rb o l d e re c h o d e l h ijo d e re c h o d e X.
d e u n á rb o l A V I. sa tisfa c e
L o s c a s o s I y 4 so n s im é tric o s re s p e c to d e X . a l ig u al q u e lo s c a s o s 2 y 3 . C o
//< 1.44 lo g (AT + 2 ) - 1 .3 2 8 <18.1) m o c o n se c u e n c ia , s ó l o e x is te n d o s c a s o s b á s ic o s , a u n q u e d e s d e la p e rs p e c tiv a de
la p ro g ra m a c ió n , d e b a m o s s e g u ir d is tin g u ie n d o c u a tr o c a s o s (y b a s ta n te s s u b e a s o s
lu e g o la altu ra e n e l c a s o p e o r e s a lo s u m o u n 44 p o r c ie n to m a y o r q u e la m ín im a
e sp e c ia le s).
p o sib le e n los a rb o le s b ín a n o s .
E l p rim e r c u so , e n e l q u e la in s e rc ió n se p ro d u c e e n lo s « m á rg e n e s » (e s d e c ir,
1.a p ro fu n d id a d m e d ia d e u n n o d o e n u n á rb o l A V L c o n s tr u id o a le a to r ia
a la iz q u ie rd a d e la iz q u ie rd a o a la d e re c h a d e la d e re c h a ), s e re c u p e ra c o n u n a
m e n te . tie n d e a a c e rc a rs e a lo g JV. Ll \ a l o r e x a c t o a ú n n o h a s id o e s ta b le c id o
ro ta c ió n s im p le d e l á rb o l U n a ro ta c ió n s im p le in te rc a m b ia los p a p e le s d e lo s p a
a n a lític a m e n te . T o d a v ía n o se s a b e si e s d e la fo rm a lo g N + C o d e la fo rm a
d re s y d e lo s h ijo s , m a n te n ie n d o la o rd e n a c ió n d e l á rb o l E l s e g u n d o c a s o , e n el
1 1 + c ) lo g \ + C . p a ra a lg ú n ¡:. q u e p o d ría se r a p ro x im a d a m e n te 0 .0 1 . lu is sim u
q u e la in s e rc ió n se p ro d u c e « d e n tro » (e s d e c ir, a la iz q u ie rd a d e la d e re c h a o a la
la c io n e s n o h a n s id o c a p a c e s d e d e m o s tra r d e m o d o c o n v in c c n te q u e u n a fo rm a
d e re c h a d e la iz q u ie rd a ), s e re su e lv e d e fo rm a m á s c o m p le ja m e d ia n te u n a r o ta
s e a m á s p la u s ib le q u e la otra.
c ió n d o b le . É s ta s so n las o p e ra c io n e s b á s ic a s s o b re á rb o le s, e m p le a d a s e n n u m e ro
U n a c o n se c u e n c ia d e e sta s a rg u m e n ta c io n e s e s q u e to d a s la s o p e ra c io n e s de
sa s o c a s io n e s e n lo s a lg o ritm o s d e e q u ilib ra d o do á rb o le s. E l re s to d e e s ta secció n
b ú sq u e d a e n u n á rb o l A V L tie n e n c o ta lo g a rítm ic a e n e l c a s o p e o r. L a d if ic u l
d e s c rib e e s ta s ro ta c io n e s y d e m u e s tra q u e a m b a s s o n su fic ie n te s p a ra m a n te n e r la
ta d e s trib a e n q u e las o p e ra c io n e s q u e m o d ific a n e l á rb o l, c o m o i n s e r t a r y
c o n d ic ió n d e eq u ilib rio .
e l i m i n a r , n o so n tan s im p le s c o m o a n te s . E sto e s d e b id o a q u e u n a in s e rc ió n (o
u n a e lim in a c ió n ) p u e d e d e s tru ir e l e q u ilib rio d e v a n o s n o d o s d e l á rb o l, tal y c o m o
se m u e s tra e n la F ig u ra 18.21. S e d e b e re c u p e ra r e l e q u ilib rio d e l á rb o l a n te s de
c o n s id e ra r fin a liz a d a la o p e ra c ió n . F l a lg o ritm o d e in s e rc ió n se d e s c rib e a q u í, d e 18.4.2 Rotación simple
já n d o s e c o m o e je r c ic io e n e l E je rc ic io 1 8 .1 0 e l a lg o ritm o d e e lim in a c ió n .
U n a o b s e rv a c ió n c la v e e s q u e tra s u n a in s e rc ió n , s ó lo lo s n o d o s q u e s e e n
L a F ig u ra 18.23 m u e s tra la ro ta c ió n s im p le q u e re s u e lv e e l c a s o I. E l g rá fic o que
c u e n tra n e n e l c a m in o d e s d e e l p u n to d e in s e rc ió n h a s ta la r a í / p u ed en v e r a lte ra d o
m u e s tra e l á rb o l a n te s d e l a ju ste e s e l d e la iz q u ie rd a : a la d e re c h a s e m u e s tra el
su e q u ilib rio , y a q u e s ó lo se m o d ific a n su b á rb o le s d e d ic h o s n o d o s. E s to m ism o
á rb o l d e s p u é s d e d ic h o a ju s te . V e a m o s lo q u e v a m o s a h a c e r. E l n o d o k 2 in c u m p le
la p ro p ie d a d d e e q u ilib r io A V L y a q u e su s u b á rb o l iz q u ie rd o e s d o s n iv e le s m á s
p ro fu n d o q u e su s u b á rb o l d e re c h o te n e s ta se c c ió n e m p le a m o s las lín e a s p u n te a
d as p a ra m arcar lo s n iv e le s). 1.a situ a c ió n d e s c r ita e s l a ú n ic a p o sib le d e n tro del
c a s o I q u e p e rm ite a l n o d o k 2 s a tis f a c e r la p ro p ie d a d A V L a n te s d e la in s e rc ió n e
in c u m p lirla d e sp u é s . E l s u b á rb o l A h a c re c id o e n un n iv e l, p ro v o c a n d o q u e sea.
e x a c ta m e n te , d o s n iv e le s m á s p ro fu n d o q u e C . II n o p u e d e e s ta r a l m is in o n iv el
q u e e l n u e v o A . y a q u e si n o k 2 n o e s ta ría b ie n e q u ilib ra d o a n te s d e la in serció n , fí
ta m p o c o p u e d e e s ta r al m ism o n iv el q u e C , y a q u e . d e e sta rlo , k , s e r ía e l prim er
m»do e n e l c a m in o q u e in c u m p liría la c o n d ic ió n d e e q u ilib rio A V L <> e s ta m o s su
Figuro 18.22 A rb ol m im m o e a ltura H. p o n ie n d o q u e lo e s k 2 ).
liz a m u c h o e n o tr o s a lg o ritm o s d e e q u ilib ra d o p re s e n ta d o s e n e s te c a p ítu lo . D e b i
d o a e llo , la h a c e m o s fo rm a r p a rle del p a q u e te R o t a c i o n e s .
L a F ig u r a 18.25 m u e s tra q u e d e s p u é s d e la in s e rc ió n d e I e n e l á rb o l A V L . el
n o d o 8 e s tá d e se q u ilib ra d o . C la ra m e n te e sta m o s e n e l p rim e r c a s o , y a q u e I está
e n e l s u b á rb o l iz q u ie rd o d e l h ijo iz q u ie rd o d e 8. E n c o n s e c u e n c ia , re a liz a m o s u n a
ro ta c ió n s im p le e n tre 8 \ 4 . o b te n ié n d o s e e l á rb o l d e la d e re c h a . C o m o y a h e m o s
m e n c io n a d o a n te r io r m e n te e n e s ta s e c c ió n , e l c a s o 4 e s s im é tr ic o a é s te . L a ro
ta c ió n a d e c u a d a s e ilu s tra e n la F ig u ra 1 8 .2 6 . y e l c ó d ig o q u e la im p le m e n ta
se m u e s tra e n la F ig u ra 18.27. E ste m é to d o ta m b ié n fo rm a p a rte d e l p a q u e te
P o ta c io n e s .
1 /•'
2 • R o t a c i ó n d e un n o d o d e u n á r b o l b i n a s i o c o n h i j o i z q u i e r d o . 1
3 • F.n l o o A r b o l e a AVL, e n l a r o t a c i ó n s i m p l e p a r a e l c a n o 1. 2 • R o t a c i ó n d e u n n o d o cl«r u n á r b o l b i n a r l o c o n h i j o d e r e c h o
4 •/ 3 • En l o s a r b o l e s AVL. e s l a r o t a c i ó n s i m p l e p a r a e l c a s e 4.
5 a t a r l e N odoB inario c o n H ijo :z q u le rd o t N a rtn fl ln ario k2 l 4 •/
6 f 5 s t a t i c N o d o B i n a r i o c or . Hi j o D e r e c h o I N o d o B i n a r i o k l )
7 NodoBinario k l = k2. iz q u ie rd o ; 6 [
8 k2 .Iz q u ie rd o * k l.d e re c h o ; 7 NodoBinario k2 ■ k l.d e re c h o :
9 k l .derecho = k2 ; 8 k l.derecho = k 2 . izquierao;
10 re tu rn kl; 9 k2.izquierdo ■ kl;
11 ) •0 r e t u r n k2;
11 1
Figuro 18.24 C ó d ig o p o ra la ro to a o n sim ple (caso 1>
Fioiifn 1A 07 Z"Vvürv\ r w n Ir* f r e w \ A'
C o m o eje m p lo , la F igura 18.30 m u estra e l re su ltad o d e insertar 5 e n u n árbol
18.4.3 Rotación d o b le A V L . E l d e se q u ilib rio d e las altu ras s e p ro d u ce e n e l n o d o 8. p o r lo q u e estam os e n el
cas») 2. R e alizam o s u n a ro tació n d o b le e n e s e n o d o , g en e ra n d o e l áib o l d e la d erech a
L a ro tació n sim p le tie n e u n p ro b lem a . T a l y c o m o m u e s tra la F ig u ra 18.28. n o fu n
L a F ig u ra IX .3I m u e s tra e l c a s o s im é tric o 3 . q u e ta m b ié n p u e d e se r a rre g la d o
c io n a e n e l c a s o 2 (n i. p o r sim e tría , e n e l c a s o 3 ). El p ro b le m a e strib a e n q u e e l s u b
c o n u n a ro ta c ió n d o b le P o r ú ltim o , n ó te s e q u e a u n q u e la ro ta c ió n d o b lo p a re z c a
árbol Q e s d e m a s ia d o p ro fu n d o , u n a ro ta c ió n sim p le n o re d u ce lo su fic ie n te su p ro
fu n d id ad . Ij ro ta c ió n d o b le q u e re su e lv e e l p ro b le m a se m u e stra e n la F ig u ra IX.2V c o m p le ja , e s e q u iv a le n te a h a c e r lo sig u ien te:
1:1 h e c h o d e q u e e n la F ig u ra IX.2X se in s e rte u n e le m e n to e n e l s u b á rb o l Q • U n a ro ta c ió n s im p le e n tre e l h ijo d e .V y su n ie to , s e g u id a d e
g a ra n tiz a q u e n o e s tá v a cío . A su m ire m o s q u e tie n e u n a r a í / y d o s s u h á rb o le s (p o • u n a ro ta c ió n s im p le e n tre .V y su n u e v o h ijo .
s ib le m e n te v a c ío s ), a s i q u e p o d e m o s v e r e l á rb o l c o m o c u a tr o su h á rb o le s c o n e c ta
A sí e s p o s ib le o b te n e r u n c ó d ig o m u y c o m p a c to p a ra im p le m e n ta r la ro ta c ió n
d o s p o r tr e s n o d o s R e n o m b ra m o s d ic h o s su h á rb o le s c o m o A . H. C y D. C o m o su
d o b le d e l c u s o 2. q u e se m u e s tra e n la F ig u ra 18.32. F.I c ó d ig o p a ra e l c a s o s im é tri
g ie re la F ig u ra 18.29, e x a c ta m e n te u n o d e lo s á rb o le s H o C e s d o s n iv e le s m á s
c o 3 s e e n c u e n tra e n la F ig u ra 18 .3 3 .
p ro fu n d o q u e D . a u n q u e n o p o d e m o s a s e g u r a r c u á l d e e llo s e s. E s to c a re c e d e im
p o rta n c ia p o r l o q u e . e n la fig u ra , ta n to f í c o m o C se h a n d ib u ja d o 1.5 n iv e le s por
d e b a jo d e D .
Pura re c u p e ra r e l eq u ilib rio , o b se rv a m o s q u e e s im p o sib le d e ja r A» c o m o raí/., v
a d e m á s q u e la ro ta c ió n e n tre Ai y A( n o fu n c io n a , tal y c o m o s e c o m p ru e b a e n la
F ig u ra 18.28. L a ú n ic a a lte rn a tiv a e s c o lo c a r a k2c o m o n u e v a raíz. E s to fu e rza a k,
a se r e l h ijo i/q u ie r d o d e A« y a A i a sor e l h ijo d e re c h o d e A.. T o d o e llo d eterm in a
c o m p le ta m e n te las p o sic io n e s d e los c u a tro su h á rb o le s. E s fácil c o m p ro b a r q u e el
á rb o l resu ltan te c u m p le la p ro p ie d a d A V I A d e m á s, c o m o e n e l c a s o d e la ro tació n
sim p le , e s to re sta b le c e la a ltu ra q u e te n ía e l á rb o l a n te s d e la in se rc ió n , g a ra n tiz a n d o
que la recuperación del e q u ilib rio y la m o d ificació n d e a ltu ras han sid o com pletadas.
2 • R o t a c i ó n d o b l © d e un n o d o d e u n á r b o l b i n a r i o : p r i i m ? r o
e l h ijo iz q u ierd o con su h ijo derecho;
3 • d e s p u é s e l nodo k 3 c o n s u nuevo h i j o i z q u i e r d o .
4 • E n l o a A r b o l e s A VL. e s l a r o t a c i ó n d o b l © p a r a r e i i o l v o r ©* c a n o ...
6 atatlc NodoBinario dobleC onH tjotzquierdot N o d o B i n a r i o k3 )
7 <
8 k3.izquierdo = conH ijoD erecho( k3. iz q u ie rd o l:
9 return conH ijolzquierdo! k3 ) :
10 )
F ig u ro 18.32 C ó d ig o p a ra la ro ta c ió n d o b le (c aso 2)
Figura 18.29 R o ta c ió n rtohie bm i r-rrin n ^ r p r o n m r n mriwiinr rn«;n ?
1 / • •
2 • R o t a c i ó n d o b i e cte u n r.odci d « u n á r b o l b i n a r i o ; p r i m e r o 1. C a d a n o d o e s tá c o lo re a d o c o n lo s c o lo re s r o jo o n eg ro .
3 • e l h i j o d e r e c h o c o n mu h i j o i z q u i e r d o ; d e s p u é s v i no d o kl 2. L a ra íz e s n eg ra
4 • con au nuevo h i j o d e re c h o . 3. S i u n n o d o e s ro jo , sus h ijo s d e b e n s e r negros.
5 * E n l e s á r b o l e s AVL. e s l a r o r a c i ó n d o b l e p a r a r e s o l v e r e l c a s o }. 4. T o d o s lo s c a m in o s d e sd e u n n o d o u u n a re fe re n c ia n u l 1 d e b e n c o n te n e r el
6 •/
m is m o n u m e ro d e n o d o s n e g ro s.
7 static NodoBinario dohleConH ijoDerecho( NodoBisiario k l I
8 (
E n n u e stra s re p re se n ta c io n e s, e n b la n c o y n e g ro , d e lo s á rb o le s ro jin e g ro s , los
9 kl.derecho = conH ijolzquierdol k l.derecho I;
n o d o s ro jo s se m o s tra rá n s o m b re a d o s. E n la F ig u ra 18.34 s e p re s e n ta u n á rb o l ro ji
10 r e t u r n conHijoDerechoi kl i ;
11 1 n eg ro . T o d o c a m in o d e n le la r a í / a u n a re fe re n c ia n u l l c o n tie n e tre s nod o s n egros.
Se p u e d e d e m o s tra r p o r in d u c c ió n q u e si c u a lq u ie r c a m in o d e s d e la r a íz a u n a
Figura 18.33 C ó d ig o p a ra la ro tación d o b le (c a s o 3)
re fe re n c ia n u l 1 c o n tie n e H n o d o s n e g ro s , e n to n c e s e l á rb o l d e b e te n e r, a l m en o s.
2b I n o d o s n e g ro s . M á s a ú n . c o m o la raí/, e s n e g ra y n o p u e d e n e x is tir d o s n o
d o s c o n se c u tiv o s d e c o lo r ro jo e n u n c a m in o , la a ltu ra d e u n á rb o l ro jin e g ro e s a lo
18.4.4 Resumen d e la inserción en un árbol AVL s u m o 2 lo g (.V + I ). C o m o c o n s e c u e n c ia , e s tá g a ra n tiz a d o q u e la b ú sq u e d a e s una
o p e ra c ió n lo g a rítm ic a .
C o n c lu ire m o s c o n un b re v e re s u m e n d e c ó m o se im p le m e n ta la in s e rc ió n e n un L a d ific u lta d , c o m o sie m p re , e s q u e a lg u n a s o p e ra c io n e s p u e d e n m o d ific a r el
á rb o l A V I.. I.a fo rm a m á s se n c illa d e h a c e rlo e s e m p le a r u n a lg o ritm o re c u rsiv o á rb o l y d e s tru ir a s í s u s p ro p ie d a d e s d e c o lo re a d o . E s to d ific u lta la in s e rc ió n y c o n
P ara in s e rta r u n n u e v o n o d o c o n c la v e -V e n u n á rb o l A V L T. s e le in s e rta reciirsi- v ie rte a la e lim in a c ió n e n u n a o p e ra c ió n e s p e c ia lm e n te c o m p lic a d a . E n la p ró x im a
\ á m e n te e n e l s u b á rb o l a d e c u a d o d e T ( lla m a d o Í I M). S i la a ltu ra d e / íA. n o can» se c c ió n , se im p le m e n ta la .in se rc ió n y se e s tu d ia e l a lg o ritm o d e e lim in a c ió n
b ia . >a h e m o s a c a b a d o . E n c a s o c o n tra rio , si s e p ro d u c e e n / ' u n d e s e q u ilib rio d e
las a ltu r a s re a liz a m o s l a c o rre s p o n d ie n te ro ta c ió n s im p le o d o b le d e p e n d ie n d o d e
X y d e las c la v e s d e / y T , R. tra s lo q u e h a b re m o s te rm in a d o (y a q u e la a ltu ra o ri 18.5.1 Inserción ascendente
g in a l e s la m ism a q u e la q u e se o b tie n e tra s la ro ta c ió n ). E sta d e s c rip c ió n le c u rsi-
v a se h a e x p lic a d o c u id a d o s a m e n te , p o r re s u lta r m á s fá c il d e e n te n d e r y c o n te n e r R e c o rd e m o s q u e u n n u e v o e le m e n to s e inserta sie m p re e n e l á rb o l c o m o u n a hoja.
to d o s lo s e le m e n to s c sc n c iu le s d e c u a lq u ie r im p le m e n ta c ió n a lte rn a tiv a . S in e m S i c o lo re a m o s e l n u e v o e le m e n to d e n eg ro , e sta m o s se g u ro s d e in c u m p lir la cu arta
b a rg o . re s u lta m e jo ra b le . P o r e je m p lo , o b se rv a m o s q u e e n c a d a n o d o c o m p a ra m o s p ro p ie d a d , y a q u e a s í g e n e ra m o s un c a m in o c o n m á s n o d o s n egros. C o m o c o n s e
la s a ltu ra s d e m is d o s su b á rb o le s. E n g e n e ra l, es m á s e fic ie n te a lm a c e n a r d ir e c ta cu e n c ia . e l n u e v o n o d o d e b e ser. e n p rin c ip io , ro jo . IX- e s ta fo rm a, si el p a d re es
m e n te e n e l n o d o e l re s u lta d o d e l a c o m p a r a c ió n e n lu g a r d e g u a rd a r m i a ltu ra . E s n e g ro y a h e m o s a c a b a d o : a sí. la in serció n d e 25 e n e l á rb o l d e la F ig u ra 18.34 es
to ev ita c á lc u lo s re p e titiv o s a c e rc a d e l e q u ilib rio . P o r o tr a p a rte , e n e s ta o c a s ió n la triv ia l. P e ro si e l p a d re es ro jo , e sta ría m o s in c u m p lie n d o la te rc e ra p ro p ie d a d , a l h a
re c u rsió n im p lic a u n a s o b re c a rg a s u b s ta n c ia l re s p e c to a la v e rs ió n ite ra tiv a . E sto b er d o s n o d o s ro jo s c o n se c u tiv o s. F.n e s te c a s o d e b e m o s a ju s ta r e l á rb o l p a ra hacer
e s d e b id o u q u e . h e m o s d e re c o rre r e l á rb o l h a c ia a b a jo p a ra d e s p u é s v o lv e r h asta q u e se c u m p la la p ro p ie d a d 3 sin q u e d e je d e c u m p lirse la c u a rta p ro p ied ad . L as
la ra íz, e n lu g a r d e d e te n e m o s ta n p ro n to c o m o l a ro ta c ió n s e re a lic e . C o m o c o n s e o p e ra c io n e s b á s ic a s q u e e m p le a re m o s so n lo s c a m b io s d e c o lo r y las ro ta c io n e s.
c u e n c ia . e n la p rá c tic a . se e m p le a n o tro s e s q u e m a s d e e q u ilib r io d e á rb o le s. E x iste n v a rio s c a s o s (c a d a u n o c o n su c o rre s p o n d ie n te s im é tric o ) q u e d e b e m o s
c o n s id e ra r c u a n d o e l p a d re e s ro jo . E n p rim e r lu g a r, s u p o n g a m o s q u e e l h e rm a n o
d e l p a d re e s n e g ro (a d o p ta m o s e l a c u e rd o d e q u e la s re fe re n c ia s n u i l so n n eg ro s).
18.5 Árboles rojinegros
L i im p le m e n ta c ió n c o n c re ta e s c o m p le ja n o só lo p o r la g ra n c a n tid a d d e ro ta c io
n e s p o sib le s. T a m b ié n e s c o m p lic a d a por la p o s ib ilid a d d e q u e a lg u n o s su h á rb o le s
(c o m o e l s u b á rb o l d e re c h o d e 10 ) p u e d e n e s ta r v a d o s y p o r e l c a s o e sp e c ia l d e la ‘
m í/, «la c u a l, e n tre o tr a s c o s a s , n o tie n e p a d re ). P a ra e lim in a r lo s c a s o s e sp e c ia le s . ,
e m p le a m o s d o s te s tig o s o c e n tin e la s: i
• S e e m p le a r .c d o N u lo e n lu g a r d e la re fe re n c ia n u i l . n o d o N u lo e s s ie m p re <
d e c o lo r n eg ro .
• Se e m p le a c a b e c e r a c o m o p se u d o -ra íz . T e n d rá u n v a lo r c la v e - v y un
h ijo d e re c h o q u e a p u n ta rá a la v e rd a d e ra ra íz .
t/ 57 ( • Figur.a 18.50 * / )
II C O N S T R U C C IÓ N : c o n ur. c e n t i n e l a c o n v a l o r m e n o r i n f i n i t o 58
59 p r l v a t o NodoBinario cab ecera;
//
60 p r i v a t e s t a t i c N o d o B in a rio nodoNuio;
/1 ...................................... * opvpAr i o N E S PÚBLICAS * * *•
// v o i d I n s e r t a r ( x > - - > I n s e r t a x
61
62 private s ta tic final i n t NEGRO - 1 : // NEGRO d e b e s e r l
/ / v o i d e l i m i n a r » x ) — > E l i m i n a x
63 p riv ate s t a ti c final i n t ROJO = 0 ;
U v o i d • l i m t n a r N i n l i - - > E l i m i n a e l e le m e n t o m á s p e q u e ñ o
64
U C o m p a r a b le b u s c a r » x I - - > D e v u e lv e e l e le m e n t o q u e a j u s t a c o n x 65 / / Empleados en la r u t i n a de i n s e r c i ó n y l a s a u x i l i a r e s
/ / C o m p a r a b le b u s c a r K i n l l - - > D e v u e lv e e l e le m e n t o m á s p e q u e ñ o 66 p r í v a t e s t a t i c NodoBinario a c t u a l ;
U C o m p a r a b le b u s c a r K a x I i - - > D e v u e lv e e l e le m e n t o m á s g r a n d e 67 p r í v a t e s t a t i c N odoB inario pariré;
U b o o le a n e s V a c io » ) - - > D e v u e lv e t r u e s i v a c i o ; s i n o , í a l s ¿ 68 p r i v a t e s t a t i c NodoBinario abuelo;
ft v o id v a c i a r » ) - - > E l i m i n a t o d o s l o » e le m e n t o s 69 p r i v a t e n t a t i c NodoBinario b isa b u e lo ;
II v o i d i m p r i m í r A r b o l i ) - - > Im p r im e e l á r b o l d e t o n t a o r d e n a d a 70 1
ff ERRORES**.............. ...... .
Figura 18.43 E s q u e le to d e la c la s e A r b o I R o j o N e g r o ( p a r t e 2 s e c c ió n p riv o d a )
II M u c h a s r u t i n a s l a n z a n E le m e n t o N o E n c o n t r a d o e n c o n d i c i o n e s d e g e n e r a d a s
! / i n s e r t a r l a n z a E le m e n t o D u p lic a d o s i e l e le m e n t o y a e s t é e n e l á r b o l
1 /* *
• t m p lm n e n t a l o s á r b o l « H r o j i n e g r o s .
2 • Conutruye e l á rb o l.
3 * 3 p a r a m r . e g l n í un v a l o r menor o I g u a l que to d o s lo s demás.
* N ó t e s e q u e l o s " e n c a j e s * s e b a s a r , e n e l m é t o d o c o m p a r a .
•/ 4 •/
5 public ArboIRojoNegro» Comparable n e g ln f I
D u b l lc c l a s s A r b o I R o jo N e g r o im p le m e n t a A r b o lB u s q u e d a
6 (
: 7 cabecera = n e w N o d o B i n a r i o » n e g l n f »;
p u b l i c A r b o I R o jo N e g r o » C o m p a r a b le n e g l n f > 8 cabecera.izquierdo = c a b e c e r a . d e r e c h o - nodoNuio;
f /• F i g u r a 1 8 . 4 4 * / )
9 }
10
p u b l i c v o i d i n s e r t a r » C o m p a r a b le x ) t h r o w s E le m e n t o D u p lic a d o 11 static // I n i c i a l i z a d o r e s t á t i c o de nodoNuio
( /• F i g u r a 1 8 . 4 8 * / )
12 (
p u b l i c v o i d e l i m i n a r » C o m p a r a b le x > t h r o w s E le m e n t o N o E n c o n t r a d o 13 nodoNuio 3 new N o d o B i n a r i o » n u i l );
I /• N o s e im p le m e n t a • / ) 14 nodoNul o . i z q u i e r d o = no d o N u io . d e r e c h o = nodoNuio:
p u b l i c v o i d o i l m l n a r M i n » ) t h r o w s E le n o n t o N o E n c o n t r a d o 15 I
( / * N o s e im p le m e n t a * / )
Figura 18.44 C o n stru c to r d e A r b o I R o j o N e g r o e iniciaiizador e s tá tic o
p u b l i c C o m p a r a b le b u s c a r M in » I t h r o w * E le m e n t o N o E n c o n t r a d o
( / * F i g u r a 1 8 . 4 6 • / I
p u b l i c C o m p a r a b le b u s c a r M n x » I t h r o w s E le m e n t o N o E n c o n t r a d o
Lu F ig u ra 18.45 m u e s tra e l s e n c illo c a m b io q u e s u p o n e e l u so d e lo s c c n tin c - El
( /• S i m i l a r a b u s c a r M in • / }
las. E l te s t s o b re n u i l e s re e m p la z a d o p o r e l test s o b re n o d o N u i o . E l m é to d o £
p u b l i c C o m p a r a b le b u s c a r » C o m p a r a b le x ) t h r o w s E le m e n t o N o E n c o n t r a d o
( /• F i g u r a 1 8 . 4 7 • / ) b u s c a r M i n s e m u e s tra e n la F ig u ra 18.46. 0
p u b l i c b o o le a n e s V a c io » )
I r e t u r n c a b e c e r a . d e r e c h o = = n o d o N u io : 1
1
p u b l i c v o i d v a c i a r » ) 2 • Método i n t e r n o p a r a Im p rim ir un s u b á r b o l e n o r d e n .
( c a b e c e r a . d e r e c h o = n o d o N u io ; } 3 * 3param t l a r a i z d e l s u b á r b o l .
p u b l i c v o i d i m p r l m l r A r b o i » | 4 •/
[ i m p r i n i r A r b o l » c a b e c e r a . d e r e c h o ).- } 5 p r í v a t e v oid imprim írA rboli NodoBinario t )
6 (
7 if» t !» n o d o N u i o i
i 18.42 E s q u e l e t o d e la c i a s e A r b o I R o j o N e g r o ( p a r r e 1. s e c c i ó n p ú b lK ia ).
8
9 im p rlm irA rb o l» c .i z q u i e r d o );
10 System .out.printlnt t-dato .to S trin g » i );
E l c o n s tru c to r d e A r b o I R o j o N e g r o s e m u e s tra e n la F ig u ra 18.44. Ú n ic a 11 i m p r i m i r A r b o l < t . d e r e c h o I;
m e n te c re a lo s d o s c e n tin e la s e in ic ia li/a la s re fe re n c ia s d e su s h ijo s i z q u i e r d o \ 12 )
d e r e c h o a p u n ta n d o a n o d o N u i o . F.s p re c is o u n in ic ia liz a d o r e s tá tic o p a ra c re a r e 13 1
in ic ia li/iir n o d o N u i o . Figura 18.45 im p i i m ir A r b o l d e la clase A i b o lR o jo N e g r o
1 /• *
2 • Busca e . e l e m e n t o más p e q u e ñ o d e l d r b o l . H! m é to d o i n s e r t a r , s e m u e s tra e n la F ig u ra 18 4 8 . s e o b tie n e d irc c ta m e n - (i<
3 * « r e t u r n e l menor elerrento. te d e n u e stra d e s c rip c ió n F l h u e le w h i l e . c o d ific a d o e n las lín e a s 12 a 2 1 . d e s- rel(
• V e x c u p t i o n E 1o r n e n t o N o B r i C o n t r a d c a i e l arnoi e s vacio. c ie n d e p o r e l á rb o l y « re p a r a - lo s n o d o s c o n d o s h ijo s ro jo s lla m a n d o al m é to d o
r e o r l e n t a c i o n . ta l y c o m o se m u e s tra e n la F ig u ra 18.49. P a ra h a c e rlo , n o so lo CQ
p u b l i c Comparable buacarM inl í th ro w a El « a en to N o E n co n tr ado
m a n te n e m o s in fo rm a c ió n a c e rc a d e l n o d o a c tu a l, s in o ta m b ié n d e su p a d re , a h u c io Q) i
1 f l e n V a c lo l l > \ b is a b u e lo . N ó te se q u e d e s p u é s d e la ro ta c ió n , lo s v a lo r e s a lm a c e n a d o s e n e l imi
t h r o w n e w E l e m e n t o N o E n c o n t r a d o i ' b u s c a r ! ' ! r. d e A z b o l R o j o N e g r o ' I a b u e lo > e l b is a b u e lo n o so n c o rre c to s. S in e m b a rg o , n o s h e m o s a s e g u ra d o q u e se - *s
ra n c o rre c ta m e n te c o lo c a d o s la p ró x im a v e / q u e s e n e c e s ite n . ^
NodoBinario i t r * c a b e c e r a .d e r e c h o ; C u a n d o e l b u c le te rm in a , x e s e n c o n tra d o (in d ic a d o p o r a c t u a l • = n o d o N u l o » rufi
w h ilo í : r r . i z q u i e r d o : = nodoNulo 1 o n o . S i lo e n c o n tra m o s, se la n /a u n a e x c e p c ió n e n la lín e a 2 5 . E n c a s o c o n tr a n o . x sa
I t r - I r r . izquierdo;
n o e s ta e n e l á rb o l y e s p re c is o h acerle h ijo d e p a d r e . C re a m o s u n n u e v o n o d o (c o - er
m o e l n u e v o n o d o a c t u a l ). lo u n im o s a l p a d re e in v o c a m o s a r e o r i o n t a c i o n .
return ier.dA to;
to d o e llo e n las lín e a s 2 6 a 3 3 .
F.l c ó d ig o e m p le a d o p a ra re a liz a r u n a ro ta c ió n sim p le s e m u e s tra e n e l m é to d o r<
Fi gur a 18 4 6 M é t o d o b u s c a r M i n d e A r b o l R o j o N e g r o . o b s e r v e el u s o d e c a r o t a r d e la F ig u ra 18.50. D e b id o a q u e e l á rb o l o b te n id o d e b e u n irse a l p a d re , ci
b e c e ra y nodoN ulo
r o t a r n e n e c o m o p a rá m e tro e l n o d o p a d re . E n lu g ar d e g u a rd a r la in fo rm a c ió n d e ?
q u é tip o d e ro ta c ió n re a liz a m o s (e s to e s . si e s h a c ia la d e re c h a o h a c ia la i/q u ic r - c(
io
L a ru im u b u s c a r , m o s i r a d u e n la f ig u ra 18.47. e m p le a o í r » m ic o m u y co m ú n . o
A n te s d e in ic ia r la b ú sq u e d a , c o lo c a m o s x e n e l c e n tin e la n o d o N u l o . H e m o s g a- 1 t•* i
r a m i/a d o asi e l a ju s te c o n x . in c lu s o si x n o e s e n c o n tra d » . S i e l a ju s te s e p ro d u c e 2 • In se rta en e l árb o l.
3 *© p a r o m x e l e l e m e n t o a insertar-
e n n o d o N u l o . c o n c lu im o s q u e e l e le m e n to n o h a s i d o e n c o n tra d o . E m p ic a re m o s
4 • U e x c e p t i c n E lem entoDupl icario a i un e l e m e n t o que
e s le tr u c o e n e l m é to d o i n s e r t a r . 5 • a j u s t a con x y a e s t a en e l á r b o l .
6 •/
7 p u b lic void i n s e r t a r i Comparable x » th row s Elem entoDupllcado
1 /• * 8 (
2 • Buscar u n e l e m e n t o tír. e l á r b o l . 9 a c tu a l • padre » abuelo a c a b e c e ra :
3 • aparam x e l elem ento a b u sc a r. 10 n o d o N u l o . d a t o = x:
4 • © r e t u r n e l ©1a m o n t o b u a c a d o . 11
12 w hile! actual.dato.coE paral x ) != 0 I
5 • © e x c e p t i o n E l e m e n f o N o E n c a n r r a d o s i e n e l á r b o l r.o
13 I
* ' n o h a y n i n g ú n e l e m e n t o q u e a j u s t e c o n x. 14 b isab u elo = abuelo; abuelo = padre; padre • a c tu a l:
J5 a c t u a l = x.menorQue! a c t u a l . d a t o 1 ?
• p u b l i c C om para ble bu « c a r l C o m p ara b le x l th ro w a SlemencoNoEncontradi 16 a c tu a l.izquierdo ¡ actual.darocho;
17
10 n o d c - N u l o . d a t o = x; 18 / / C o m p r u e b a n i h o y d o n h i j o s ROJ Os : r e s o l v i é n d o l o e r . n
11 actual = cabecera.derecho; 19 jf, a c t u a l . i z q u i e r d o . c o l o r == ROJO ü actual.derecho.color
12
20 reoraantacIonl x );
13
21 )
14
22
15 i í ! x.menorQuei a c t u a l . d a t o j ) 23 11 i n s e r c i ó n t a l l a s i e l e l e m e n t o y a ootA e n e l á r b o l
16 a ctu al = a c t u a l .Izquierdo; 24 ifi a c t u a l != nodoNulo I
17 o .se ir I actual.dato.m enorQ ue( x > i 25 t h r o w new E l e m e n t o D u p i i c a d o l 'in sertar de ArbolRojnNoaro*
a c t u a l = a c t u a l . d e r e c h o .- 26 actual = new N o d o B i n a r i o ! x . nodoNulo. nodoNulo );
1® e l s e :£< a c t u a l != nodoNulo l 27
20 return actu al.dato : 28 n E nlace ai padre
21 else 29 if! x.menorQueI p a d r e . d a t o I 1
M t h r o w n u w K I e m o n t o N o E n c o r . t r a d o ( ' b u s c a r d e A r b o l R o j o N o g r o " »; 30 padre.izquierdo • a ctu al:
31 else
24 i 32 padro.derecho • a c tu a l;
33 r e o r i e n * a c i ó n ! x I;
Fi gur a 18.47 M é to d o b u s c a r d e A r b o l R o j o N e g r o : o b s é r v e s e e l u s o d e c a b e 34
c e r a y nodoNulo.
Fi n ur n 1A4A P u lir ,n i n j e r t a r (Je !Q C l Q & e A r b o l R o ¡ o N e g r o .
1 /••
d o s ro ta c io n e s sim p le s. p o d e m o s p re g u n ta r si e s ta m o s e n un c a s o in te rio r y si es
2 • R u t i n a i n v o c a d o d u r a n t e u n a i n s e r c i ó n s i un n o d o t i e n e do*
J l u i o s ROJO*. P o n l i r a c a m b i o s d « c o l o r y r e l a c i o n e * . a sí. re a liz a r u n a rm a c ió n e x ir a e n irc e l n o d o a c tu a l y su p a d re (p a s a n d o su a b u e lo
4 • Bparara i r e m o l e l e m e n t o a i n s e r t a r . a la ru tin a r o t a r » . E n c u a lq u ie r c a s o , h a c e m o s u n a ro ta c ió n e n irc e l p a d ie y el
a b u e lo (p a s a n d o e l b is a b u e lo a r o t a r ). F .\lo e s n id if ic a d o , tic fo rm a su til, e n las
6 privato v oid x e o r l e n t a c i o n ( Comparable ítem > lin c a s 16 a 19 d e la F ig u ra IX.49.
6 /.’ Cambio d e c o l o r
^ a c t u a l . c o l o r • ROJO-
10 a c t u a l . I z q u i e r d o . c o l o r • NEGRO; 18.5.4 Elim inación descendente
H a c t u a l . d e r e c h o . c o l o r « NEGRO;
1 .a e lim in a c ió n e n Im á rb o le s ro jin e g ro s ta m b ié n p u e d e im p le m e n ta rse d e m o d o
13 if! padre.color ROJO I / / Tier.e q u e r e t a r
d e sc e n d e n te . N o e s n e c e s a r io d e c ir q u e e n e s te c a s o u n a im p le m e n ta c ió n c o n c re ta
15 a b u e l o . c o l o r • ROJO; e s b a sta n te c o m p lic a d a , y a q u e e l m is in o a lg o r itm o e l í m i n a r d e lo s á rb o le s no
~i < it-*m.mer;orOuel a b u e l o . d a t o | ¡ = e q u ilib ra d o s n o e s triv ia l E l a lg o ritm o u su a l d e e lim in a c ió n e n lo s á rb o le s b ín a
item .m enorCue( p a d r e . d a t o i i n o s d o b ú sq u e d a e lim in a n o d o s q u e s o n h o ja s o tie n e n u n ú n ic o h ijo . R ecu erd e
8 p a d r e ■ r o t a r . Item, a b u e l o ) : / / C o m e n z a r r o t a c i ó n d o b l e q u e n u n c a s e b o rra n n o d o s c o n d o s h ijo s : s ó lo s e re e m p la z a mi co n ten id o .
•r a c t u a l = r o t a r ! rtem. b i s a b u e l o ) ;
S i e l n o d o q u e v a m o s a b o rr a r e s ro jo n o h a y n in g ú n p ro b le m a . S in e m b a r g o . lol
20 a c t u a l . c o l o r . NEGRO:
21 si e s n e g ro su e lim in a c ió n h a rá q u e s e in c u m p la la c u a rta p ro p ie d a d . L a s o lu c ió n Dc
22 c a b e c e r a . d e r e c h o . c o l o r - NEGRO; // Colorea la r a r r e n NEGRO al p ro b le m a c o n siste e n a se g u ra r q u e c u a lq u ie r n o d o q u e e lim in e m o s s e rá rojo.
A lo la rg o d e e s ta d is c tisió n . Y será e l i x h I o a c tu a l. / s u h e rm a n o y / ’ su p a d re . (]|
C o m e n z a m o s p o r c o lo r e a r la ra íz c e n tin e la e n ro jo . S e g ú n d e sc e n d e m o s |*or e l ár- e ii
Figuro 18 49 R utina r e o r i e n t a c i o n in v o c o d o c u a n d o u n n o d o n e n e d o s heos
b o l. in te n tam o s a se g u ra r q u e X s e a ro jo . C u a n d o lle g a m o s a u n n u e v o n o d o , e sta - >oj
ro»os o c u a n d o s e in s e ría u n n u e v o n o d o
m u s s e g u ro s d e q u e / ’ e s ro jo (d c ftx m a in d u c tiv a , g ra c ia s a l in v a ria n te q u e trnta-
m o s d c m a n ten er» y d e q u e X y T s o n n e g ro s ( y a q u e n o p o d e m o s te n e r d o s n o d o s
ro jo s co n secu tiv o s» .
R u tin a i n t e r n a que r e a l i z a una r o t a c i ó n sim p le o do b lo .
Invocada por r e o r lo n ta c ió n . E x iste n d o s c a s o s p rin c ip a le s, a d e m á s d c las v a n a n te s sim é tric a s u s u a le s (q u e
«parara itera e l e . e m e n t o d e r e o r t e n t a c i ó n . so n om itidas».
• epatan padre e l padre de la ra íz del subárbol que debe ro ta rs e E n p rim e r lu g a r s u p o n g a m o s q u e .Y tie n e d o s h ijo s ro jtts. E x iste n tre s su h easo s.
« re tu rn la ra íz del subárbol rotado. lo s c u a le s d e p e n d e n d e lm h ijo s d e í :
Figura 18 52 X heno dos hijos nogros y e l hijo ©«tortor d e su herm ano os rojo d e b e
m os h a c e r u n a ro tació n s«mple.
18.6 A A-Arboles
D e b id o a la g ra n c a n tid a d d e ro ta c io n e s n e c e s a r ia s , lo s á rb o le s ro jin e g r o s n e c e s i
ta n d e a lg u n o s tr u c o s p a ra s u c o d if ic a c ió n , c o n e l s u b s ig u ie n te p e lig ro d e c o m e
te r e rro re s . E n p a rtic u la r, la o p e ra c ió n e l i m l n a i e s b a s ta n te c o m p lic a d a E sta
s e c c ió n d e s c r ib e u n t i p o d e á rb o l d e b ú s q u e d a b a s ta n te s im p le per.» c o n u n e q u i
lib ra d o b a sta n te c o m p e titiv o , c o n o c id o c o m o A A - á r h o l. L«»> A A -á rb o le s \»*n e l
m é to d o e le g id o c u a n d o se n e c e sita n árb«»lcs e q u ilib ra d o s, se p e rm ite u n a im p le -
m e n ta c ió n m as in m e d ia ta (c o n e l s u b s ig u ie n te c o s te ) y s e re q u ie re n elim in a c io n e s.
L»>s A A -á rb o le s a ñ a d e n u n a c o n d ic ió n a d ic io n a l u las im p u e sta s p«»i lo s á rb o le s
Figura 18 53 X Irene dos hijos negros y e l hiio mrenor d e su herm ano es rojo, d e b e ro jin eg ro s: lo s h ijo s iz q u ie rd o s n o p u e d e n se r rojos.
mos h a c e r u n a roloctO n doblo E sta re s tric c ió n a d ic io n a l sim p lific a e n g ra n m e d id a lo s a lg o ritm o s «le los á r
b o le s ro jin e g ro s . p«»r d o s ra z o n e s . E n p rim e r lu g a r, e lim in a a p ro x im a d a m e n te la
E l s e g u n d o c a s o e s q u e a lg u n o J e l«»s h ijo s d e X s e a ro jo . N ó te se q u e d e b id o a m ita d «le lo s c a s o s d e re e s tru c tu ra c ió n . E n s e g u n d o lu g a r, s im p lific a e l a lg o ritm o
q u e las ro ta c io n e s d e l p rim e r c a s o s ie m p re c o lo r e a n A d e ru jo , m X tie n e un h ijo d e e l i m i n a r , a l n«» te n e r q u e a m s id c r u r u n o d e sus c a s o s m á s c o m p lic a d o s . M as
>u m is m o c o lo r, in tro d u c iría m o s n o d o s ro jo s c o n se c u tiv o * . P o r ta n to , n e c e sita m o s e x a c ta m e n te , si u n n«»d«» in te rn o tie n e u n ú n ic o hij«». é s te d e b e se r un h ijo d e re c h o
u n a so lu c ió n a lt e r n a tiv a E n e s te cas»», d e s c e n d e m o s a l s ig u ie n te n iv e l, o b te n ie n d o r o jo , y a q u e lo s h ijo s iz q u ie rd o s ro jo s e s tá n a lu n a pr«»hibid«>s y u n h ijo ú n ic o n e g ro
n u e v o s X , T y P S i te n e m o s su e rte , e s ta re m o s e n un n«xlo r o jo ( e s to p u e d e su c e d e r in c u m p liría la c u a rta pi«*piedad d e l«»s á rb o le s ro jin e g ro s . IX- e s te m o d o , siem p re
e l 5 0 p o r c ie n to d e las v e c e s), y a rre g la m o s e l p ro b le m a c o n v in ie n d o e l n o d o a c p o d e m o s re e m p la z a r u n n o d o in te rn o p«»r e l n o d o m á s p e q u e ñ o d e su s u b á rb o l d e
tu al n u e v o e n ro jo . E n c a s o c o n tra río , e s ta m o s e n la situ a c ió n m o s tra d a e n la F ig u re c h o . E ste n o d o m á s p e q u e ñ o s e rá u n a h o ja o te n d rá u n h ijo to jo , q u e p u e d e set
ra IK.54. E s to e s . e l .V a c tu a l e s n e g ro , / e s ro jo y / ’ e s n eg ro . P o d e m o s re a liz a r fá c ilm e n te e lim in a d o .
u na ro ta c ió n e n tr e T v / '. h a c ie n d o q u e e l n u e v o p a d re d e X s e a ro jo y su n u e v o P u ra s im p lific a r a ú n m á s la im p le m e n ta c ió n . re p re se n ta m o s la in fo rm a c ió n del
a h u c io s e a n e g ro . A h o ra X y a n o e s ro jo , p e ro e s ta m o s d e n u e v o e n e l p u n to de e q u ilib ra d o d e un m o d o m á s d ire c to . E n lu g a r d e g u a rd a r u n c o lo r e n c a d a nodo,
p a rtid a (a u n q u e e n u n n iv e l in fe rio r). E s to e s su fic ie n te m e n te b u e n o , y a q u e p ru e a lm a c e n a rn o s e l n iv e l d e d ic h o nod«» E l n iv e l «le u n tu*l«» s e d e fin e c o m o sigue
b a q u e |H »dcm os d e s c e n d e r d e m o d o ite ra tiv o p o r e l á rb o l A sí. s ie m p re q u e a lc a n
• E l n iv e l e s I si e l n o d o e s u n a tu»ja
c e m o s u n n o d o ro jo o u n n o d o c o n «los hij«>s n e g ro s hcm«»s g a n a d o . E s to e s tá g a
• I I n iv e l e s e l m is m o q u e e l d e su p a d re si e l n o d o e s ro jo
ra n tiz a d o e n e l a lg o r itm o d e e lim in a c ió n , y a q u e s e a lc a n z a u n a d e las d o s • E l n iv e l e s u n a u n id a d m e n o r q u e e l n iv e l d e su p a d re si e l m»d«» e s n e g ro
s itu a c io n e s sig u ie n te s:
El n iv e l re p re s e n ta e l n ú m e ro d e e n la c e s iz q u ie rd o s q u e se e n c u e n tra n e n el
• X CS u n a h o ja . E sta situ a c ió n y a lú e c o n s id e ra d a p o r e l c a s o p rin c ip a l ya q u e
c a m in o h a c ia e l c e n tin e la n o d o N u lc .
V n e n e «los h ijo s n e g ro s.
E l re s u lta d o e s u n A A - á r b o l. S i tra d u c im o s las c o n d ic io n e s e stru c tu ra le s d e c o
lo re s a n iv e le s, sa b e m o s q u e e l n iv e l «leí hij«» Iz q u ie rd o d e b e s e r u n a u n id a d m e n o r
q u e s u p a d re y e l d e l h ijo d e re c h o d e b e se r c e r o o u n a u n id a d m e n o r q u e e l d e su
p a d re (p e ro n o m as). M a m a re m o s r n / m r » h a r iz iu iia ln a las c o n e x io n e s e n tre un
n o d o y u n h ijo s u y o d e l m ism o n iv e l. E n to n c e s, la s p ro p ie iia d e s d e c o lo r im p lic a n
lo sig u ie n te :
L a F ig u ra 18.55 m u e s tra u n e je m p lo d e A A -á rb o l. L a r a í / d e d ic h o á rb o l e s e l
n o d o d e c la v e 3 0 . 1.a b ú s q u e d a s e r c a l i/ a a p lic a n d o e l a lg o r itm o u su a l C o m o y a
e s h a b itu a l, i n s e r t a r y e l i m i n a r so n m á s c o m p le jo s , y a q u e lo s a lg o ritm o s na
tu ra le s d e lo s á rb o le s d e b ú sq u e d a p u e d e n in c u m p lir la s p ro p ie d a d e s d e lo s e n la
c e s h o riz o n ta le s S in e m b a rg o , y n o s o rp re n d e n te m e n te , las ro ta c io n e s p u e d e n *o-
lu c io n a r lo d o s lo s p ro b le m a s p la n te a d o s p o r e sta s ru tin a s.
L n l**s a rb o le s b ín a n o s d e b ú sq u e d a o rd in a rio s . e l a lg o n tm o e l i m i n a r se d iv id e lo d
e n tre s c a so s : e l e le m e n to a e lim in a r p u e d e se r u n a h o ja , te n e r u n so lo h ijo o tener mré
d o s h ijo s L n lo s A A -á rb o lc s tra ta m o s e l c a s o d e u n ú n ic o h ijo ig u al q u e e l c u s o de cok
d o s h ijo s , y a q u e e l p rim e ro d e e llo s só lo p u e d e a p a re c e r e n e l n iv e l I. M as a ú n . el
pioé
c a s o d e d o s h ijo s ta m b ié n e s se n c illo , si s e g a r a n tí/u q u e e l n o d o e m p le a d o c o m o
> v<
\ a l o r d e rc e m p la z a m ie n to e s tá e n e l n iv e l I y tien e, e n e l p e o r d e lo s c a s o s , un oes*
s o lo e n la c e h o n /o n t a l d e re c h o D e e s te m o d o , to d o g ira e n lo m o a e u n i n m un '•CC
n o d o d e l n iv e l I C la ra m e n te , e s to p u e d e a fe c ta r a l e q u ilib rio d e l á rb o l i co n sid e re ,
p o r e je m p lo , la e lim in a c ió n d e 10 e n la F ig u ra 18.6.1).
S e a T e l n o d o a c tu a l y c o n s id e re q u e e s ta m o s e m p le a n d o re c u rs ió n . S i la e li
m in a c ió n h a re d u c id o e l n iv e l d e u n o d e lo s h ijo s d e / h asta d o s u n id a d e s m en o s
q u e e l n o e l d e T. e n to n c e s é s te ta m b ié n h a d e s e r re d u c id o ( s ó lo e l h ijo in lro d u c i-
d o e n la lla m a d a re c u rsiv a p u e d e h a b e r sid o a fe c ta d o , p e r o p o r sim p lic id a d , no
g u a rd a m o s in fo rm a c ió n d e e llo ). A d e m á s, si / tie n e un e n la c e h o n /o n t a l d e re c h o ,
e n to n c e s é s te ta m b ié n d e b e d e s c e n d e r d e nivel. L n e s te p u n to p o d e m o s te n e r h asta
" 9U ’° " 61 S * * * ™ ,a e ® ^ 061 « p a r t o e n 40. 50 « . 0 o h o ro o . m ism o nlve,
Q u e 70. m tro d u c ié n d o » q si u n e n la c e h o itto n ta l e q u lo id o p io n iO id o se is n o d o s e n e l m is m o n iv el: T . e l h ijo d e re c h o h o n /o n t a l d e T. lla m a d o N. los
d o s h ijo s d e K. y su s h ijo s d e re c h o s h o riz o n ta le s. L a F ig u ru I K.r*4 m u e s tra la s itu a
c ió n p o sib le m ás se n c illa
después del r e p a r t o : ah,H a ol n od o 5 » o siá en ol n iv e l > y os o l h ito h o n /o n ia l
D e sp u é s d e e lim in a r e l e le m e n to I. lo s n o d o s 2 y 5 s c c o n v ie rte n e n n o d o s del Del
iz q u ie rd o d e 70 . N o c e s,,.,n v n e je t u la f a h ,n a un P¿ l l C " ! eso
n iv el-1 L n p n m e r lu g ar, a rre g la m o s e l e n la c e Ix m /o n ta l iz q u ie rd o q u e se e n c u e n
e n l- u e ’ h " T ll"'"" h" n / " " ' j l “ M h in d o e n e l m s e l s u p e rio r, p e r o c e n e n tra a h o ra e n tr e lo s n o d o s 5 y V E s to re q u ie re e s e n c ia lm e n te d o s ro ta c io n e s : u n a
•OCI
vdj
C u in d o s ! " i r 1 , a , n w u l i v ” ' - ,a l > c o m o * ilu stra e n la R g u r a IX.62 e n tre lo s n o d o s 5 y .1 y o tra e n tre lo s n o d o s 5 y 4. E n e s te c a s o , e l n o d o a c tu a l T no got!
O aíeeen I T " " 'T ™ * * 0- ^ ”* * e o n s e e u .iv o s d e sa - in te rv ie n e . P o r o tro la d o , si la e lim in a c ió n p ro c e d e d c l lu d o d e re c h o , e n to n c e s el eai
i C r a IX 6 1 SC COaVKnC ™ nUC1J rJ,V d c l * bo1 E l , r ' u " ¡' J " * " l u e s .r a e n la novio i/q u ic r d o d e T p u e d e c o n v e rtirs e e n h o riz o n ta l: e s to re q u e riría u n a ro ta c ió n
d o b le sim ila r i c o m e n z a n d o e n D . P a ra e v ita r d is tin g u ir to d m lo s c a s o s , in v o c a re
m o s s ie m p re a g i r o tre s v e c e s l ’n a v e z h e c h o e sto , s o n s u fic ie n te s d o s lla m a d a s
a r e p a r t o p a ra re c o lo c a r lo s arc o s h o ri/o n la le >
44 insertar | C o m p a r a b le x, N o d o B i n a r io t ) t h r o w s E le n e n t o D u p l ic a d o
im porc S o p o r t e . * : im p o rt S o p o r te .C o m p a ra b le : 45 l * F i g u r a 1 8 . 6 7 * /
Im port E x c e p c io n e s .* ; 46 p r í v a t e N o d o B in a r io
47 e l i m i n a r ! C o m p a r a b le x .N o d o B in a r io t I th ro w s E le m e n t o N o E n c o n t r a d o
/ / C l a s e A A -Arbol
48 { /’ F ig u ra 1 8 .7 0 *> )
49 p r i v a t e v o i d i m p r i u u r A r b o l ! N o d o B i n a r io t l
// CONSTRUCCIÓN: s i n n in g u n a i n i c i a l i z a c l ó n 50 < /• I m p le m e n t a c ió n h a b i t u a l : v o i « 1 c ó d ig o e n I n t e r n e t • / 1
51 p r í v a t e N o d o B i n a r io g i r o ! N o d o B i n a r io L I
/ .......................................................... «OPERACIONES PÚBLICAS*.....................* ..................... ..
52 ( /* F i g u r a 18.68 •/
Loa m i s m a s q u e e n A r b o l B i n a r j o B u s q u e d a ; s e o m i t e n p o r b r e v e d a d
53 p r i v ó t e N o d o B i n a r io r e p a r t o ! J ¡ a d o 3 ln a r i o t i
............... ........................ ..................... • • E R R O R E S * • ................... ..
54 ( •* F i g u r a I R . 6 9 • / )
Muchar. r u t i n a s l a n z a n E • o m e n t o N o E n c o n t r a d o e n c o n d i c i o n e n d e g e n e r a d a s
I n s e r t a r l a n z a E le m e n to D u p lic a d o s i e l e le m e n to ya e s t a e n e l á r b o l 55
56 p r í v a t e N o d o B i n a r io r a i z :
57 p r í v a t e s t a t i c N o d o B i n a r io n o d o N u lo ;
• T npLem enta l o s A A - á r b o l e s . 58 s t a t i c / / I n i c i a l i z a d o r e s t á t i c o d e n o d o N u lo
• NOl o s e q u e t o d a B l a s c o m p a r a c i o n e s s e b a s a n e n e l m é t o d o c o m p a r a . 59
' / 60 n o d o N u lo = n e w N o d o B i n a r io ! n u i l ) :
p u b l i c c l a a s AA_Arbol i m p l u m e n t s A r b o l Bu t iq u e d a 6 J n o d o N u l o . i z q u i o r d o • n o d o N u lo . d e r e c h o ■ n o d o N u lo ;
l 62 n o d o N u lo . n i v e l = 0 ;
p u b l i c AA_Arbol ( ) 63
« r a i z = n o d oN ulo; ) 64
65 p r í v a t e s t a t i c N o d o B i n a r io n o d o B o r r a d o ;
w ls * * i f ! x . c o . r , p a r a l t . d a t o ) < 0 l
t. i z q u i e r d o = insertan x, t. I z q u i e r d o );
b o le s b ín a n o s d e b ú s q u e d a , ex cep co p o r e l h e c h o «Je q u e in c lu y e u n a lla m a d a a else if! x.comparal t.dato l > 0 \
g i r o s e g u id a d e u n a lla m a d a a r e p a r t o , ü n la s F ig u ra s IX .6 S y 1 8 .6 9 . g i r o y t.derecho * insertart x. t.derecho >:
r e p a r t o se im p le m c n ia n d e u n a fo rm a se n c illa e m p le a n d o la s re la c io n e s d e a rb o else
le s d e las q u e d is p o n e m o s. I'o r ú llim o . e l i m i n a r s e e n c u e n tra e n la F ig u ra 18.70. throw new E l e m e n t ó D u p l r endo! * i n s e r t a r d o AA. A r b o l * I:
P a ra a y u d a m o s e n la ta re a , m a n te n e m o s d o s v a ria b le s . n o d o B o r r a d o y 20
21 t • giro! t »:
u l t i m o N o d o , q u e so n p e rm a n e n te s y a q u e se d e c la ra n c o m o e stá tic a s. C u a n d o r e
22 t = reparto! t );
c o rre m o s u n h ijo d e re c h o , a ju s ta m o s n o d o B o r r a d o . D e b id o a q u e in v o c a m o s re 23 r e t u r n t;
c u rsiv am e n te a e l i m i n a r h asta q u e lle g a m o s a l fin a l (n o p re g u n ta m o s a c e rc a d e la 24 )
ig u a ld ad e n e l re c o rrid o d e sc e n d e n te ), te n e m o s g a ra n tiz a d o q u e si e l e le m e n to q u e
d e b e m o s e lim in a r está e n e l á rb o l. n o d o B o r r a d o a p u n ta ra a l n o d o q u e lo co n tien e. F ig u ra 18.67 M é t o d o i n s e r t a r d o la c to s e A A _A : b o l
1
2 • G i r o p r i m i t i v o p a r a A A -a it x > le s .
3 * üparam t la r a l / d e l á r b o l . Kfrt-oclo i n t e r n o p a r a w i i n u n a r e l e m e n t o s ó%» u n s u b á r b o l .
4 • ¿ r a t u r n l a nueva r a l / t r a s l a r o t a c ió n . «param x e l a l ó n e n l o a e l i m i n a r .
5 •/ ¿ p a ra r, t l a r a í : d e l A rb o l.
6 I'r va* a N \ 4.
7 { ¿ e x c a p c I o n E le m e n to N o E n c o n tra d o *1 n i n g ú n e l e m e n t o d e l A r b o l
• if t t . i z q u ie r d o . n i v a l * = t . n i v e l ) d e r a i z t a j u s t a c o n x-
• f
L- d ,k. o - j í ,l o_ r_ .___
e a . .conM
. . m .
l j o . z_q_ u l a r a o i t >;
10 re tu rn t; •i v a t e N o d o B i n a r i o
11 i m in a r I C o m p ara b le x . N o d o B in a r io C ) th ru w u E le m e n to N o E n c o n tra d o
C u a n d o term ina una llam ada recursiva, si estam os en el n iv e l I . colocum os el 39 t-d e re c h o .n iv e l < t.n iv e l - 1 )
40
valo r del m xlo en el nodo interno q ue debe ser sustituido, tras lo q ue ptxlcm os so
41 lít t.derecho.nivel > --t.nivel 1
brepasar el rxxlo del n iv e l I E n ca so contrario, estam os en un n ivel superior y ne 42 t . d e re c h o .n iv e l • t.n iv a l;
cesitam os com probar si se in cu m p le la co n d ició n d e e q u ilib rio . S i es a sí. restable 43 t = g ito t t I ;
cem os e l e q u ilib rio y hacem os tres llam ad as a g i r o y d os llam adas a r e p a r t o . 44 t.derecho
45 t . d e r e c h o .d e r e c h o = giro» t .d e r e c h o .d e r e c h o
C o m o hem os com entado anteriormente, esto garantiza que se recuperan las pro-
46 t ■ reparto! t >;
p icd ad cs de los A A -á rb o le s.
47 t.derecho ■ reparto! t.derecho I;
48
49
18.7 B-Árboles 50 r e t u r n t:
51 J
H asta este m om ento hem os supuesto q ue podem os alm acenar la s estructuras de
Figura 18 70 EkmnockDn e n AA-artxX
datos co m pletas en la m em o ria prin cip al del com putad»*. Supongam os a ln * a que
tenemos m as datos d e lo s q ue |x xlem o s guardar en m em oria p rin cip al, por lo que
E l p ro b le m a e s q u e e l ¿m ulisis e n n o ta c ió n O a s u m e q u e e l c o s te d e U nías las
debem os alm acenar los d a n » en disco. C u a n d o esto suced e la s reglas del juego
o p e ra c io n e s e s sim ila r. P e ro , e s to e n p a rtic u la r d e ja d e s e i c ie rto c u a n d o in te rv ie n e
cam b ian , ya q ue a la h.>ra de e v a lu a r la co m p lejid a d d e I . » algoritm os la notación
la E /S d e d is c o . P o r e je m p lo , u n a m á q u in a 2 5 -M IP S su p u e s ta m e n te e je c u ta 2 5 m i
O resulta insuficiente.
llo n e s d e in s tru c c io n e s p o r se g u m lo . E s to su p o n e ir m uy «lepnsa. p rin c ip a lm e n te
|H*r q u e l.i v e lo c id a d »k*pende e n g ra n m e d id a d e la s p ro p ie d a d e s e lé c tric a s. I'o r
c o n tra , u n d is c o e s . e n b u e n a p a n e , un d is p o s itiv o m e c á n ic o . P o r e llo , su v e lo c i
d a d d e p e n d e s«>bre lo d o d e l tie m p o d e g ir o y d e l tie m p o q u e la rd a e n m o v e r su
c a b e /a le c to ra . L a m ay o r ía d e d is c o s g ira n a 3 .6 0 0 R P M (d is c o s m á s rá p id o s g ira n
a 5 .4 0 0 R P M ). A sí. e n u n m in u to se re a liz a n 3 .6 0 0 rcv«>lucioncs. o lo q u e e s k»
m ism o , se p ro d u c e u n a re v o lu c ió n caria I 6 0 d e se g u n d o o 16 7 m s. E n m e d ia , d e
b e m o s e s p e ra r q u e . p a ra e n c o n tra r lo q u e e s ta m o s b u sc a n d o , e l d is c o g ira ra m edra Figuro 18 71 Un orDol b-atto d o 31 n o d o s tie n e sóto tre s niveles
v u e lta , lu e g o , si ig n o ra m o s o tro s fa c to re s, s e tie n e u n tie m p o d e a c c e s o d e 8 .3 m s.
É sta e s u n a e s tim a c ió n g e n e ro s a , p u e s lo s tie m p o s d e a c c e so h a b itu a le s v a rían e n
la a ltu ra d e u n á rb o l b in a rio c o m p le to e s. a p ro x im a d a m e n te , lo g ; N . la a ltu ra d e un
tre 9 y I I m s. C o m o c o n s e c u e n c ia , p o d e m o s re a liz a r u n o s 12 0 a c c e so s a d is c o p o r
á rb o l A f-arío c o m p le to e s. m á s o m e n o s . lo g w N.
s e g u n d o E s to s u e n a m u y b ie n , h a s ta q u e lo c o m p a ra m o s c o n la v e lo c id a d d e l p ro
P o d e m o s d e fin ir lo s á rb o le s d e b ú sq u e d a M a n o s d e lo rm a s im ila r a c o m o dc-
c e sad o r. L o q u e n o s e n c o n tra m o s e n to n c e s e s q u e 25 m illo n e s d e in stru c c io n e s
f,m in o s lo s a rb o le s d e b ú sq u e d a b ín a n o s E n e s te ú ltim o cas»», n e c e s í t a m e una
e q u iv a le n a 120 a c c e s o s a d is c o . O v is to d e o tro in tu í» . q u e u n a c c e s o a d is c o tien e
c la v e p a ra d e c id ir c u á l d e las d o s ra m a s to m a r E n u n á rb o l d e b ú sq u e d a M a n o ,
e l c o s te d e 2 0 0 .0 0 0 in s tru c c io n e s. D esd e lu e g o . t»*»k*s son c á lc u lo s a p ro x im a d o s,
so n n e c e s a n a s M - I c la v e s p a ra d e c id ir c u á l d e las ra m a s d é b e m e u tiliz a r P ara
p e ro las v e lo c id a d e s re la tiv a s e s tá n m uy c la ra s : los a c c e s o s a d is c o so n in c re íb le
c o n se g u ir q u e e s te e sq u e m a s e a e fic ie n te e n e l p e o r d e lo s c a s o s , e s p re c is o a s e g u
m e n te c o sto so s. M á s a u n . la s v e lo c id a d e s d e lo s p ro c e s a d o re s e s tá n c re c ie n d o m u
ra rn o s q u e e l á rb o l M -u n o e s té eq u ilib rad * , d e a lg u n a fo rm a. E n c a s o c o n m in o , y
c h o m á s rá p id o q u e las v e lo c id a d e s d e lo s d is c o s ( to n su s ta m a ñ o s lo s q u e si e stán
a l ig u a l q u e los á rb o le s b in a rio s d e b ú sq u e d a , p o d ría d e g e n e ra r e n u n a lista e n la z a
c re c ie n d o ta m b ié n d e p rís a ). a s í q u e p»*demos p e rm itirn o s h a c e r u n m o n tó n d e c á l
d a A h o ra n e c e s ita m o s un4 c o n d ic ió n d e e q u ilib rio a ú n m á s r e s ín e lo a . y a q u e
c u lo s m c o n e llo s c o n s e g u im o s a lio n a rn o s u n a c c e s o a d is c o . E n la m a y o ría d e lo s
l a m p e n p o d e m o s p e rm itim o s q u e n u e s tro á rb o l M o n o d e g e n e re e n u n á rb o l b i
c a so s , e s e l n ú m e r o d e a c c e s o s a d is c o e l q u e g o b ie rn a e l tie m p o d e e je c u c ió n A sí
nan»». v a q u e e n tal c a s o v o lv e ría m o s a l»»s lo g .V acceso s.
q u e si d iv id im o s p o r ik*s e l n u m e ro d e acccs»*s a d is c o d iv id im o s ta m b ié n p o r d»*s
U n a fo rm a d e im p le m e n ta r lo d o e s to e s e m p le a r b a r b ó l e s . E n e s ta sc c c u n
e l tie m p o d e eje c u c ió n .
d e s c rib im o s e l c o n c e p to b á s ic o d e B -á tb » » l\ Se c o n o c e n m u c h a s y a n a c o n e s y
V e a m o s c o m o s e c o m p o n a n o rm a lm e n te u n á rb o l d e b ú sq u e d a so b re u n d isc o .
m e jo ra s, y su im p le m e n ta c ió n e s lig e ra m e n te c o m p lic a d a , y a q u e e s n e c e sa rio d is -
S u p o n g a m o s q u e se d e s e a te n e r a c c e s o a los re g istro s d e c o n d u c c ió n d e lo s c iu d a
lin g u ir b a sta n te s cas,»s. S in e m b a rg o , e s s e n c illo c o m p r o b a r q u e . e n p rin c ip io , el
d a n o s ile M a d rid A su m im o s q u e s e tie n e n 2 .0 0 0 .0 0 0 e le m e n to s , q u e c a d a c la v e
U S .» d e un B -á rb o l g a ra n tiz a te n e r q u e re a liz a r p o c o s a c c e s o s a d isco .
o c u p a 32 b y tex te s u n n o m b re ), y q u e c a d a re g is tr o s u p o n e 2 5 6 b y tc s A su m im o s
U n B-árb»»l d e o rd e n M e s u n á rb o l M a r i o q u e v c n f ic u las sig u ie n te s p ro p ie d a
q u e to d o e s to n o c a b e e n la m e m o n a p rin c ip a l y q u e s o m o s I d e lo s 2 0 u su a rio s de
un s is te m a (lu e g o disp»«nem os d e I 2 0 d e lo s re c u rso s). A sí. e n u n se g u n d o , p e l e d e s ':
m o s e je c u ta r u n m illó n d e in s tru c c io n e s o re a liz a r se is a c c e s o s a d isc o . I L o s d a to s s e a lm a c e n a n e n la s hojas.
E n to n c e s e l u s o d e u n árb o l b in a rio d e b ú sq u e d a n o e q u ilib ra d o p u e d e su p o n e r 2. L o s n o d o s in te rn o s c o n tie n e n V - I c la v e s p a ra g u ia r la b ú sq u e d a ; la c la
un d e sa stre . E n e l p e o r d e lo s c a s o s , p u e d e lle g ar a te n e r p ro fu n d id a d lin e a l, lo que ve i re p re s e n ta la m e n o r c la v e e n e l su b á rb o l i + 1.
n o s llev aría a 2 .0 0 0 .0 0 0 a c c e s o s a d is c o . E n m e d ia , u n a b ú sq u e d a e x ito s a re q u e ri 3. L a raíz e s u n a h o ja o tie n e e n tr e 2 y A/ hijos.
ría 1.38 log V a c c e so s a d is c o , y c o m o lo g 2 .0 0 0 .0 0 0 i 2 2 . u n a b ú s q u e d a m e d ia 4. T o d o s lo s n o d o s imem»»s. e x c e p to la ra iz . tie n e n e n tr e | M 2 1 y M h ijo s _
n e c e sita ría 31 a c c e s o s a d is c o o 5 se g u n d o s E l c o m p o rta m ie n to d e u n á rb o l ro ji S fin ía s las h»»jas se e n c u e n tra n a la m ism a p ro fu n d id a d y tie n e n e n tr e I /. - I
n e g ro e s a lg o m ejo r. E l c a s o p e o r d e 2 k>g V e s p»»co p ri'b a b lc y e l c a s o h a b itu a l y /. h ijo s p a ra u n c ie r to val.*r fijo L ( l a d is c u s ió n s»»bre c ó m o e le g ir /. se
e s tá m u y c e rc a n o a h>g V C o m o c o n s e c u e n c ia , u n á rb o l ro jin e g ro e m p le a ría , en re a liz a rá a c o n tin u a c ió n )
m e d ia . 23 a c c e s o s a d is c o , re q u irie n d o 4 se g u n d o s
E n la F ig u ra 18 72 se m u e s tra u n e je m p lo d e B -á rb o l d e o rd e n 5. N ó te se q u e
D e se a m o s re d u c ir e l n ú m e ro d e a c c e s o s a d is c o h a s ta u n a c o n sta n te m u y p e
to d o s lo s n o d o s in ie m t* tie n e n e n tre tre s y c in c o h ijo s t y p»>r ta n to , e n tre d » y
q u e ñ a . c o m o tre s o c u a tro . E sta m o s a b ie rto s a e s c r ib ir u n c ó d ig o b a s ta n te c o m p li
c u a tr o c la v e s ): la ra íz p o d ría te n e r só lo d o s h ijo s . A q u í le ñ e m o s !. = 5. b n e s *
c a d o v a q u e las in s tru c c io n e s m á q u in a so n . e n e s te c o n te x to , e s e n c ia lm e n te g ratis,
e je m p lo /. v M tie n e n lo s m ism o s v a lo re s, p e ro e s to n o e s n e c e sa rio , e n g e n e .
a m e n o s q u e a b u se m o s d e e lla s d e u n a fo rm a rid ic u la m e n te irra z o n a b le D ebe
C o m o I e s 5 . c a d a h o ja g u a rd a e n tre tre s y c in c o d a to s . E s n e c e sa rio q u e los
q u e d a r c la r o q u e u n á rb o l b in a rio d e b ú sq u e d a n o re s o lv e rá n u n e a e l p ro b le m a , ya
e s té n m e d io lle n o s p a ra p o d e r g a ra n tiz a r q u e e l B -á rb o l n o , as
q u e la p ro fu n d id a d h a b itu a l d e l á rb o l ro jin e g ro e s ta m u y p ró x im a a la a ltu ra ó p ti
pie á rb o l b in a n .» o tem an»». A u n q u e e x is te n v a n a s d e fin ic io n e s d e B -a
m a N o p o d e m o s ir m á s alió d e lo g \ e m p le a n d o u n á rb o l d e b ú sq u e d a b in a r io l a
q u e c a m b ia e s ia e s tru c tu ra , e n m u c h a s d e e lla s e n u n g ra d o m u s p e q t
so lu c ió n e s in tu itiv a m e n te se n c illa , si te n e m o s m a y o r g ra d o d e ra m ific a c ió n , te n e
m o s m e n o r a ltu ra . A sí. m ie n tra s un á rb o l b in a rio p e rf e c to d e 31 n o d o s tie n e 5 n i fin ic ió n e s u n a *k* las m á s ex te n d id a s.
v e le s . u n á rb o l 5 - a n o d e 31 n o d o s tie n e só lo tre s n iv e le s, ta l y c o m o se m u e s tra en
la f i g u r a 18.71 U n á H m l d e b ú s q u e d a M - a tiu p e rm ite ra m ific a c io n e s d e A/ h ijo s ' u .|w * i W r i h i m r n a q u í e o m s t f p o p u l n r i n c n l c « u n o I» iW**l
I X
i| 4X ii 54 y ?K i| S I I 1 7
lü --- I ' - '
I X L j : j L L X -i
’ 2 2 ti p 51 4 l ] 4 X
? n "i x ] 1 '1
[ M
4 | 0 | 2 X 4 2 ! 4 0 15 2
2 0 1
r 6
6 v^ I U l » ? 4 4 i Vil 5 4
2 4
1 4 | 2 4 31 4 .-1
J Ü J 12
\— .________
2 2 2 5 .2
d a to s y q u e c a d a n o d o in te rn o (e x c e p to la r a í / ) p u e d e ra m ific a rs e e n a l m e n o s 114 S u p o n g a m o s q u e . p o r e je m p lo , in s e rta m o s e l e le m e n to 4 0 e n e l B -á rb o l d e la F i
h ijo s . C o m o te n e m o s 2 .0 0 0 .0 0 0 re g istro s, e x is te n a lo s u m o 6 2 .5 0 0 h o ja s . C o m o g u ra 18.74. D e b e m o s d iv id ir la h o ja q u e c o n tie n e las c la v e s e n tre 3 5 y 3 9 . y ah o ra
c o n se c u e n c ia , e n e l c a s o p e o r, la s h o ja s e s ta rá n e n e l n iv el 4 . M á s c o n c re ta m e n te , 4 0 . e n d o s n u ev as h o jas. P e ro a l h a c e rlo , e l p a d re te n d ría se is h ijo s , y s ó lo se p e r
e l n ú m e ro d e a c c e s o s e n e l c a s o p e o r v ie n e d a d o a p ro x im a d a m e n te p o r lo g w ,A \ m ite u n m á x im o d e c in c o . L a s o lu c ió n e s div id ir ta m b ié n e l p a d re . El re s u lta d o se ic
m á s «i m e n o s I (P o r e je m p lo , la r a í / y e l p rim e r n iv e l p u e d e n a lm a c e n a rs e e n la m u e s tra e n la F ig u ra 18.75. C u a n d o e l p a d re se d iv id e , d e b e m o s a c tu a liz a r los v a
m e m o ria p rin c ip a l, p o r lo q u e lo s a c c e s o s a d is c o s ó lo s e ría n n e c e sa rio s p a ra e l lo re s d e la s c la v e s y ta m b ié n e l p a d re d e l p a d re , e m p le a n d o d o s e s c ritu ra s e n d is c o
n iv e l 3 e in fe rio re s.) a d ic io n a le s (a s i q u e e s ta in s e rc ió n c u e s ta c in c o e s c r itu r a s e n d is c o ). S in e m b a rg o ,
L a c u e s tió n p e n d ie n te e s c ó m o in s e rta r y e lim in a r e le m e n to s e n u n B -árb o l. u n a v e z m ás. las c la v e s c a m b ia n d e u n a fo rm a c o n tro la d a , a u n q u e c ie rta m e n te , d e
L a s id e a s b á s ic a s se e s b o z a n a c o n tin u a c ió n . O b s e rv e q u e v u e lv e n a a p a re c e r m u b id o a la g ra n c a n tid a d d e c a s o s e l c ó d ig o n o e s n a d a se n cillo .
c h o s d e lo s a s p e c to s y a e stu d ia d o s. C u a n d o se d iv id e u n n o d o in tern o , c o m o s u c e d e e n e s te c a s o , su p a d re g a n a un
C o m e n z a m o s e s tu d ia n d o la in se rc ió n . S u p o n g a m o s q u e s e d e se a in s e rta r el h ijo . ¿ Q u é o c u rre si e l p a d re h a lle g a d o a l lím ite p e rm itid o d e h ijo s ? E n tal c a s o
e le m e n to 5 7 e n e l B -á rb o l d e la F ig u ra 18.72. l 'n a b ú sq u e d a d e sc e n d e n te p o r el c o n tin u a m o s la d iv is ió n d e n o d o s h a s ta q u e e n c o n tre m o s u n p a d re q u e n o n e c esite
á rb o l m u e s tra q u e d ic h o e le m e n to a u n n o e s tá e n el á rb o l y q u e p o d e m o s a ñ a d irlo
e n e l n iv e l d e las h o ja s c o m o q u in to h ijo . N ó te se q u e e s p o sib le q u e p a ra h a c e rlo
d e b a m o s re o rg a n iz a r la in fo n n u c ió n e n la c o rre s p o n d ie n te h o ja . S in e m b a rg o , el
c o s te d e d ic h a re o rg a n iz a c ió n e s d e s p re c ia b le , si lo c o m p a ra m o s c o n e l tie m p o de
los a c c e s o s a d is c o , e n lo s q u e . e n e s te c a s o , s e in c lu y e una e s c ritu ra e n d isc o .
D e sd e lu e g o , e s to e s b a sta n te s e n c illo y a q u e la h o ja a ú n n o e s tá llen a . S u p o n
g a m o s a h o ra q u e s e d e s e a in s e rta r e l e le m e n to 5 5 . F ig u ra 18.73 m u e s tra e l p ro
b le m a: la h oja d o n d e q u e re m o s g u a rd a r 5 5 y a e s tá llena. L a s o lu c ió n e s se n cilla:
c o m o te n e m o s /_ ♦ I e le m e n to s , lo s re p a rtim o s e n d o s h o ja s , e n la s q u e q u e d a g a
ra n tiz a d o q u e p o d e m o s a lm a c e n a r e l m e n o r n ú m e ro p o sib le d e e le m e n to s . E n e ste
c a s o , c re a m o s d o s n u e v a s h o ja s c o n tr e s e le m e n to s c a d a u n a . S e n e c e sita n d o s a c
c e s o s a d is c o p a ra e s c r ib ir d ic h a s h o ja s y u n te rc e ro p a ra a c tu a liz a r e l p a d re . N o te
Figuro 18.74 Lo inserción d o 55 e n e l B-árbol d e la Figura 18 73 p ro v o c a la drvttlón
q u e e n e l p a d re c a m b ia n las d o s c la v e s y la s d o s ra m a s, p e r o lo h a c e n d e una
pn ni fv u o s
Figuro 18.75 Lo inserción d e 40 e n e l B-arOol d e la Figuro 18.74 p ro vo ca la dtvisión
e n do s n u evas hojas v la división d e l p o dre
R e su m e n
s e r d iv id id o o b ie n la r a í / riel á rb o l. O b s e rv e q u e e s ta id e a y a h a s id o u tiliz a d a en
los á rb o le s a sc e n d e n te s ro jin e g ro s y e n los A A á rb o le s. S i d iv id im o s la r a í /, o b te L o s á rb o le s b in a rio s d e b ú sq u e d a so n m u y im p o rta n te s d e n tro d e l d is e ñ o d c a lg o
n e m o s d o s ra íc e s. O b v ia m e n te , e s to e s in a c e p ta b le , p e ro e n lu g a r d c e llo p o d e m o s ritm o s. S o p o rta n c a s i to d a s las o p e ra c io n e s m á s ú tile s , y su c o s te lo g a rítm ic o e n
g e n e ra r u n a n u e v a r a í / q u e a h o ra te n g a c o m o h ijo s la s d o s ra íc e s p re v ia m e n te o b m e d ia e s m u y re d u c id o . L a s im p le m e n ta c io n e s n o re c u r s iv a s d e lo s á rb o le s so n a l
te n id a s. É sta e s l a ra z ó n p o r la q u e s e p e rm ite q u e la r a í / p u e d a te n e r s ó l o d o s h i g o m á s rá p id a s q u e la s c o rre s p o n d ie n te s v e rs io n e s re c u rsiv a s , p e ro e s ta s ú ltim as
jo s . É sta e s ta m b ié n la ú n ic a m a n e ra e n la q u e un B -á rb o l p u e d e g a n a r a ltu ra . No so n m á s e le g a n te s y m á s fá c ile s d e e n te n d e r y d e p u ra r. E l p ro b le m a q u e p la n te a n
e s n e c e sa rio c o m e n ta r q u e la d iv isió n d e to d o s lo s n o d o s h a s ta lle g a r u la r a íz es lo s á rb o le s d e b ú s q u e d a e s q u e su e fic ie n c ia d e p e n d e e n g ra n m e d id a d e la alea to -
una situ a c ió n e x c e p c io n a l, listo e s d e b id o a q u e . p o r e je m p lo , e n un á rb o l c o n c u a ríe d a d d c la e n tra d a . S i n o s e d a e l c a s o , e l tie m p o d e e je c u c ió n p u e d e crecer
tr o n iv e le s la r a í / te n d rá q u e h a b e r s i d o d iv id id a tre s v e c e s a l o la rg o d e to d a la e x tra o rd in a ria m e n te , h a s ta e l p u n to d e q u e lo s á rb o le s d e b ú sq u e d a se h a c e n m á s
s e c u e n c ia d e in s e rc io n e s (s u p o n ie n d o q u e n o se h a p ro d u c id o n in g u n a e lim in a c o s to s o s q u e las lis ta s e n la z a d a s.
ción». D c h ech o , te n e r q u e d iv id ir un n o d o q u e n o s e a u n a h o ja e s u n a situ a c ió n H e m o s v is to v a ría s m a n e ra s d e s o lu c io n a r e s te p ro b le m a . T o d a s e lla s in c lu y e n
b a sta n te rara la re e s tru c tu ra c ió n d e l á rb o l p a ra a se g u ra r q u e e n c a d a n o d o se d a a lg ú n tip o de
E x iste n o tr a s fo rm a s d e m a n e ja r e l d e s b o rd a m ie n to e n e l n ú m e r o d e h ijo s U n a e q u ilib rio . I-a re e s tru c tu ra c ió n s e re a liz a a tra v é s d e ro ta c io n e s q u e p re s e rv a n la
té c n ic a a lte rn a tiv a e s d a r u n h ijo e n a d o p c ió n a un v e c in o q u e te n g a s itio p a ra é l p ro p ie d a d d c lo s á rb o le s b in a rio s d e b ú s q u e d a . P ara e s to s á rb o le s , h a b itu u lm e n ic
P o r e je m p lo , p a ra in s e rta r 2 9 e n e l B -á rb o l d e lo F ig u ra 18.75. p o d e m o s h a c e r sitio e l c o s te d e u n a b ú sq u e d a e s m e n tir q u e e l c o s te e n un á rb o l b in a rio d e b ú sq u e d a no
m o v ie n d o e l e le m e n to 32 a la sig u ie n te h o ja E sta té c n ic a re q u ie re u n a m o d ific a e q u ilib ra d o , y a q u e e l n o d o c e n tra l tie n d e a e s ta r c e r c a d e la r a í / . S in e m b a rg o , los
c ió n d e l p a d re , y a q u e las c la v e s s e v e n a fe c ta d a s . S in e m b a rg o , tie n d e a m an te n e r c o s te s d e la in s e rc ió n y la e lim in a c ió n su elen s e r a lg o m a y o re s. L as v a ria c io n e s e n
lle n o s lo s n o d o s, a h o rra n d o e s p a c io a larg o p la /o . e l e q u ilib r io d e lo s á rb o le s s e d is tin g u e n e n la c a n tid a d d e e s lu c r/.o n e c e sa rio p ara
P o d e m o s re a liz a r u n a e lim in a c ió n b u sc a n d o e l e le m e n to q u e d e b e m o s b o rr a r > im p le m e n ta r la s o p e ra c io n e s q u e lo s m o d ific a n .
d e s p u é s e lim in á n d o lo . E l p ro b le m a e s q u e si la h o ja e n la q u e s e e n c u e n tra só lo E l e s q u e m a c lá s ic o e s e l á rb o l A V L . e n e l q u e p a ra c a d a n o d o , las a ltu ra s de
tie n e e l m ín im o n ú m e ro d c e le m e n to s p e rm itid o , a h o ra n o s q u e d a m o s p o r d e b a jo su s h ijo s d e re c h o c iz q u ie rd o d e b e n d ife rir, a lo s u m o , e n u n a u n id a d . E l p ro b le m a
d e d ic h o m ín im o . P o d e m o s a rre g la r e s ta situ a c ió n a d o p ta n d o e l h ijo d e un v ecino , q u e p re s e n ta n e n la p rá c tic a lo s á rb o le s A V L e s q u e e x ig e n c o n s id e ra r g ra n c a n ti
si e s q u e e l v e c in o n o tie n e ta m b ié n e l m ín im o n ú m e ro d c h ijo s. S i n o e s a sí. p o d e d a d d e c a s o s d if e re n te s , h a c ie n d o q u e e l c o s te d e c a d a in s e rc ió n o e lim in a c ió n sea
m o s c o m b in a r la h o ja c o n d ic h o v e c in o p a ra o b te n e r u n a h o ja c o m p le ta . D e sa fo r re la tiv a m e n te a lto . E n e s te c a p ítu lo s e h a n e stu d ia d o d o s a lte rn a tiv a s. L a p rim era
tu n a d a m e n te . e s to s ig n ific a q u e e l p a d re h a p e rd id o u n h ijo S i e s to c a u sa q u e el so n lo s á rb o le s ro jin e g ro s d e s c e n d e n te s . S u p rin c ip a l v e n ta ja e s q u e la re c u p e ra
p a d re ta m b ié n e s té b a jo m ín im o s , re ite ra m o s e l m ism o p ro c e d im ie n to . E ste p ro c e c ió n d e la c o n d ic ió n d e e q u ilib rio p u e d e im p le m e n ta rs e e n u n ú n ic o p a so , d e s c e n
so p u e d e re p e tirse a lo la rg o d e l c a m in o h a c ia la r a í /. L a r a í / n o p u e d e te n e r un d ie n d o p o r e l á rb o l, e n s u s titu c ió n d e la so lu c ió n tra d ic io n a l, q u e d e s c ie n d e p o r el
ú n ic o h ijo (p e r m itir ta l c o s a s e r ía c la r a m e n te u n a to n te ría ), a s í q u e s i. c o m o re s u l á rb o l p a ra re g re s a r d e s p u é s a l p u n to d e p artid a.
ta d o d e la a d o p c ió n , se q u e d a c o n un so lo h ijo , lo q u e h a re m o s s e rá e lim in a rle , E sto c o n d u c e a u n c ó d ig o m á s s im p le y a u n a e je c u c ió n m ás rá p id a d c la q u e
c o n v in ie n d o a s u h ijo e n la n u e v a ra íz d e l á rb o l. É s ta e s la ú n ic a m a n e ra d e q u e un p e rm ite n lo s á rb o le s A V L . l-a s e g u n d a a lte rn a tiv a so n lo s A A -á rb o le s. q u e so n s i
B -árb o l p ie r d a altu ra. P o r e je m p lo . sii|> ongam os q u e se d e se a e lim in a r e l e le m e n to m ila re s a lo s á rb o le s ro jin e g ro s a s c e n d e n te s . S u v e n ta ja p rin c ip a l e s u n a im p le-
9 9 e n e l B á rb o l d c la F ig u ra 18.75. C o m o la h o ja tie n e s ó lo d o s e le m e n to s y el m e n ta c ió n re c u rs iv a re la tiv a m e n te s e n c illa d e la s ru tin a s d e in s e rc ió n y e lim in a
v e c in o tie n e ta m b ié n e l m ín im o d e tre s , c o m b in a m o s lo s e le m e n to s e n u n a n u ev a c ió n A m b a s e m p le a n n o d o s c e n tin e la s p a ra e lim in a r lo s c a s o s e s p e c ia le s un ta n to
h o ja d e c in c o e le m e n to s . C o m o re su lta d o , e l p ad re tie n e a h o ra d o s h ijo s. S in e m fa stid io so s
b a rg o . p u e d e a d o p ta r o tro d c u n v e c in o , y a q u e é s to tie n e c u a tr o h ijo s A sí. am b o s S e d e b e n e m p le a r á rb o le s b in a rio s d c b ú s q u e d a n o e q u ilib ra d o s c u a n d o se está
te n d rán tre s h ijo s. E l resultad»* s e m u e s tra e n la F ig u ra 18.76. s e g u ro d e u u c lo s d a to s s o n ra z o n a b le m e n te a le a to rio s v q u e la c a n tid a d d e lo s
m is m o s e s re h u ís á m e n le p e q u e ñ a S e d e b e n e m p le a r lo s á rb o le s ro jin e g ro s si la lo n g itu d d e l c a m i n o e x te r n o S u m a d e l c o s te d e a c c e s o a to d o s los n o d o s e x te rn o s
e fic ie n c ia e s im p o rta n te (y n o n e c e s ita m o s e lim in a r e le m e n to s ). l.o s A A -á rb o le s d e l á rb o l d e u n á rb o l binara». M id e e l c o s te d e u n a b ú sq u e d a n o e x ito sa
d e b e n u tih /a r s e si se q u ie r e u n a im p le m e n ta c ió n m á s s e n c illa q u e le n g a u n a nuis lo n g itu d d e l c a m in o i n t e r n o S u m a d e las p ro fu n d id a d e s d e lo s n o d o s d e u n árb o l
q u e a c e p ta b le e fic ie n c ia . L o s B -á rb o le s s e e m p le a n c u a n d o la c a n tid a d d e d a to s es b in a rio . M id e e l c o s te d e u n a b ú sq u e d a e x ito sa,
d e m a s ia d o g ran d e c o m o p a ra a lm a c e n a rlo s ju n io s e n la m e m o n a p rin cip al n iv e l d e u n n o d o E n u n A A -á rb o l. e s e l n u m e ro d e e n la c e s iz q u ie rd o s q u e hay en
El C a p ítu lo 21 e x a m in a o tra a lte rn a tiv a : e l á r b o l d e e n s a n c h a m ie n to . É sta e s e l c a m in o d e s d e e l n»*do h asta e l c e n tin e la n o d o N u lo .
una o p c ió n m u y in te re s a n te fre n te a lo s a rb o le s d e b ú sq u e d a e q u ilib r a d o s q u e n e n o d o e x te r n o E s e l n o d o n u i l ,
ne a d e m á s u n a c o d if ic a c ió n se n c illa y re s u lta m u y c o m p e titiv a e n la p rá c tic a . El r o t a c ió n d o b l e E q u iv a le a d o s ro ta c io n e s sim p les.
c a p ítu lo s ig u ie n te e s tu d ia la s la b ia s h o sh . q u e so n u n m é to d o c o m p le ta m e n te d if e r o t a c ió n s im p le In te rc a m b ia lo s p a p e le s d e u n p a d re y u n h ijo m a n te n ie n d o la o r
re n te d e im p le m e n la r la s o p e ra c io n e s d e b ú sq u e d a d e n a c ió n d e l á rb o l Se e m p le a p a ra re c u p e ra r e l e q u ilib rio d e u n árb o l.
Errores c o m u n e s
E le m e n to s d e l ju e g o
1. S i s e e m p le a u n á rb o l d e b ú sq u e d a n o e q u ilib ra d o c u a n d o la s e c u e n c ia de
A A - á r b o l A rb o l d e b ú sq u e d a e q u ilib ra d o e m p le a d o c u a n d o se n e c e sita u n c a s o d a to s d e e n tra d a n o e s a le a to ria s e o b te n d rá u n a e fic ie n c ia p o b re.
p e o r íX Io g N ) . se a c e p ta n im p le m c n ta c io n e s p o c o e la b o ra d a s y s e re q u ie re p o 2. L a im p le m e n ta c ió n c o n e c t a d e la o p e ra c ió n e l i m i n a r p re s e n ta alg u n o s
d e r e lim in a r e lem en to s, tr u c o s in g e n io s o s , e s p e c ia lm e n te e n e l c a s o d e lo s á rb o le s d e b ú sq u e d a
á r b o l A V I . A rb o l b in a rio d e b ú sq u e d a c o n la pri*piodad u d iC K M iu l d e e q u ilib ra » e q u ilib ra d o s
q u e c tm sistc e n q u e . e n c a d a n o d o d e l á rb o l, la s a ltu ra s d e s u s su b á rb o lc s iz 3. 1.a e lim in a c ió n p e re z o s a e s u n a b u e n a alte rn a tiv a a la ra tin a e l im ir v a r e s
q u ie r d o y d e re c h o d ifie re n a lo s u m o e n u n a u n id a d C o m o p rim e r tip o d e á r tá n d a r. p e r o e n to n c e s d c b c iu m m o d ific a r o tro s m é to d o s, c o m o o u s c a r M in .
bol e q u ilib ra d o d e b ú sq u e d a , tie n e u n a g ra n im p o rta n c ia h istó ric a . A d e m a s, 4 E l c ó d ig o d e lo s á rb o le s d e b ú sq u e d a e q u ilib ra d o s tie n d e c a s i s ie m p re a
ilu stra m u c h a s d e las id e a s q u e se e m p le a n e n o tro s e sq u e m a s, p re s e n ta r e rro re s.
á r b o l b in a r io d e b ú s q u e d a e q u i l i b r a d o A rb o l q u e añ a d e u n a p ro p ie d a d e stn ic lu 5. S i o lv id a m o s d e v o lv e r u n a re fe re n c ia a la n u e v a ra íz d e l s u b á rb o l e n los
ral p a ra g a ra n tiz a r p ro fu n d id a d lo g a rítm ic a e n e l c a s o p e o r. L a s a c tu a liz a c io m é to d o s p riv a d o s a u x ilia re s i n s e r t a r y e l i m i n a r . e s ta re m o s c o m e tie n
n e s so n m á s le n ta s q u e e n lo s a rb o le s b in a rio s d e b ú sq u e d a , p e ro lo s a c c e so s d o u n e rro r. E l v a lo r d e re to m o d e b e se r a s ig n a d o a r a í z .
so n m a s rá p id o s. 6. E l e m p le o d e c e n tin e la s c o n u n c ó d ig o q u e n o s a q u e p a rtid o d e e llo s p u e
á r b o l b in a r io d e b ú s q u e d a E s tru c tu ra d e d a lo s q u e p e rm ite la in s e rc ió n , b u sq u e d e c o n d u c ir a b u c le s in fin ito s. U n c a s o m u y c o m ú n e s h a c e r u n te st ac e rc a
J a y e lim in a c ió n e n u n tie m p o m e d io d e íX k>g \ ) . P a ra c u a lq u ie r n o d o del d e n u i l c u a n d o s e e m p le a e l c e n tin e la n o d o N u lo .
á rb o l. l«»dos lo s n o d o s c o n u n a c la v e m e n o r q u e é l e s tá n e n e l s o b a rb o l iz q u ie r
d o y lo d o s lo s n o d o s c o n u n a c la v e m a y o r e s tá n e l su b árb o l d e re c h o N o se
p e rm ite la e x is te n c ia d e d u p lic a d o s, En Internet
á r b o l V i-a rio A rb o l q u e p e rm ite ra m ific a c io n e s e n M h ijo s. A m e d id a q u e e l g r a
d o ile ra m ific a c ió n c re c e , la p ro fu n d id a d d ism in u y e , T o d o e l c ó d ig o d e e s te c a p ítu lo fo rm a p a rte d e l d ir e c to r io D a t a S t r u c t u r is A q u í
á r b o l r o j i n e g r o A rbol d e b ú sq u e d a e q u ilib ra d o q u e e s u n a b u e n a a lte rn a tiv a a l á r e s tá n lo s n o m b re s d e l»*s fich ero s:
b o l A V L . y a q u e p u e d e e m p ic a rs e un ú n ic o p a s o d e s c e n d e n te d u ra n te la s ra ti
A A T r e r .j a v a C«»niicne la im p le m e n ta c ió n d e los
n as d e in s e rc ió n y d e e lim in a c ió n . L o s n o d o s se c o lo re a n c o m o ro jo s o n e g ro s
A A -á rb o le s E s ia v e rs ió n in g le s a de
d e un m o d o re s tric tiv o q u e g a ra n tiz a la p ro fu n d id a d lo g a rítm ic a . U n a d e ta lla
d a c o d ific a c ió n g e n e ra u n a im p le m e n ta c ió n m á s ra p id a la c ia s e A A _ a r b o l.
I t in u r y N o d r .ju v ii C o n tie n e la im p le m e n ta c ió n d e la c la
B -á rb o l | j e s tru c tu ra d e d a to s m á s p o p u la r p a ra la b ú sq u e d a ile d a lo s e n d isc o .
s e N o d o B in a r io .
E x iste n d iv e r s a s v a ria n te s d e la m ism a idea,
B i n a r y S e a r c h T r c e .ju v u C o n tie n e la im p le m e n ta c ió n d e lo s a r
e lim in a c ió n p e r e z o s a M étixk» d e e lim in a c ió n q u e m a rc a lo s e le m e n to s c o m o b o
b o le s b in a rio s d e b ú sq u e d a n o e q u ili
rra d o s. p e ro n o lo s e lim in a re a lm e n te ,
b ra d o s E s la v e rs ió n in g le s a d e l a cía*
e n la c e h o r i z o n ta l E n un A A -á rb o l. e s u n a c o n e x ió n e n tr e u n n o d o y u n h ijo su y o
s e A r b o lB in a r io B u a q u e d a .
d e l m ism o n o e l . U n e n la c e h»»nzi»nial d e b e ir sie m p re h a c ia la d e re c h a y no
B in a rv S e a rc h T re e W ith R a n k ja v a C o n tie n e lo s á rb o le s b ín a n o s d e b ú s
p u e d e n e x is tir d o s e n la c e s h o riz o n ta le s c o n se c u tiv o s,
q u e d a n o equilibrad»>s c o n b ú sq u e d a
g i r o y r « p « r t o U n g i r o e lim in a lo s e n la c e s h o riz o n ta le s iz q u ie rd o s, re a liz a n d o
p o r p o sic ió n . E s la v e rs ió n in g le s a d e
u n a ro ta c ió n e n tre un n o d o y su h i|o iz q u ie rd o . U n r e p a r t o e lim in a e n la c e s h o
la c la s e A B B C o n H a n g o .
rizo n tales c o n secu tiv o s, re a liz a n d o u n a ro ta c ió n e n tre u n m x lo v su h iio « to rc h o
K e d K a c k T r c r .ju v a C o n tie n e la im p le m e n ta c ió n d e lo s ár- Problem as p rácticos
b o le s ro jin e g ro s . E s la v e rs ió n in g le sa
d e la c la s e A r b o lK o jo N e g r o . 18.16. Im p le m e n tc d e fo rm a re c u rs iv a b u s c a r . b u s c a r M in y b u s c a r M a x .
R o ta t k w i s ja v a C o n tie n e la s c u a tr o ro ta c io n e s básicas. 18.17. Im p le m e n tc ite ra tiv a m e n te b u s c a r K e s im o e m p le a n d o la m ism a té c n ic a
q u e e n la ru tin a b u s c a r n o recu rsiva.
18.18. U n a r e p r e s e n ta c ió n a lt e r n a tiv a q u e p e r m ite r e a l iz a r la o p e r a c ió n
Ejercicios b u s c a r K e s im o e s a lm a c e n a r e n c a d a n o d o e l ta m a ñ o d e su s u b á rb o l iz
q u ie rd o m á s I . ¿ P o r q u é re p re s e n ta e s to u n a v e n ta ja ? R e sc rib a la c la s e d e
C uestiones breves lo s á rb o le s d e b ú sq u e d a p a ra e m p le a r e s ta re p re se n ta c ió n
18.19. E s c rib a u n m é to d o so b re á rb o le s b in a rio s d e b ú s q u e d a q u e te n g a c o m o
18.1. M u e stre e l re s u lta d o d e in s e rta r lo s e le m e n to s 3 . I . 4 . 6 . 9 . 2 . 5 y 7 e n un p a rá m e tro s d o s c la v e s , i n f e r i o r y s u p e r i o r , y e s c rib a lo d o s lo s e le
á rb o l b in a rio d e b ú sq u e d a in ic ia lm e n te v a c ío . M u e s tre d e s p u é s e l re s u lta m e n to s X q u e s e e n c u e n tre n d e n tr o del ra n g o e s p e c ific a d o p o r d ic h a s c l a
d o d e b o rra r la ra í/. v es. E l p ro g ra m a d e b e e je c u ta rs e e n u n tie m p o m e d io Ü (K • log A ),
d o n d e K e s e l n ú m e r o d e c la v e s m o stra d a s. S i K e s p e q u e ñ o , s ó lo d e b e ría
18.2. D ib u je to d o s lo s á rb o le s b in a rio s d e b ú s q u e d a q u e p u e d e n o b te n e rs e a
p a rtir d e la in s e rc ió n d e la s p e rm u ta c io n e s d e I. 2 . 3 y 4 . ¿ C u á n to s á r b o e x a m in a rs e u n a p e q u e ñ a p a rte d e l á rb o l. T ie n e q u e e m p le a r u n m é to d o
les s o n ? ¿ C u á l e s la p ro b a b ilid a d d e o b te n e r c a d a u n o d e e llo s si to d a s las rc e u rs iv o o c u lto e n lu g a r d e ite ra r la b ú sq u e d a o rd e n a d a . T a m b ié n s e p ide
p e rm u ta c io n e s so n ig u a lm e n te p ro b a b le s? a c o ta r e l tie m p o d e e je c u c ió n d e l a lg o ritm o .
18.3. D ib u je lo d o s lo s á rb o le s A V I. q u e p u e d e n o b te n e rs e a p a rtir d e la in s e r 18.2(1. E sc rib a u n m é to d o s o b r e á rb o le s b in a r io s d e b ú s q u e d a q u e te n g a c o m o
c ió n d e las p e rm u ta c io n e s d e 1 .2 y 3. ¿ C u á n to s á rb o le s s o n ? ¿ C u á l e s la p a rá m e tro s d o s e n te r o s , i n f e r i o r y s u p e r i o r , y c o n s tru y a d e fo rm a
p ro b a b ilid a d d e o b te n e r c a d a u n o d e e llo s si to d a s la s p e rm u ta c io n e s son ó p tim a u n A B B C o n R an g o e q u ilib ra d o , q u e c o n te n g a to d o s lo s e n te ro s e n
ig u a lm e n te p ro b a b le s? tre i n f e r i o r y s u p e r i o r , a m b o s in c lu siv e . T o d a s las h o ja s d e b e n esta r
18.4. R e p ita e l e je rc ic io 18.3 p a ra c u a tr o e le m e n to s . e n e l m is m o n iv el (vi e l ta m a ñ o d e l á rb o l e s u n a u n id a d m e n o r q u e una
18.5. M u e stre e l re s u lta d o d e in s e rta r 2 . 1 . 4 . 5 . 9 . 3 . 6 y 7 e n u n á rb o l A V L p o te n c ia d e 2 ) o e n d o s n iv e le s c o n s e c u tiv o s , lu í r u tin a d e b e cjceutar.se
in ic ia lm e n te v a cío . M o s tra r d e s p u é s e l re s u lta d o si s e h a c e e n u n á rb o l ro e n tie m /n t lin e a l. P ru eb e e l m é to d o r e s o lv ie n d o e l p ro b le m a Jo sc p h u s
'jin e g r o d e sc e n d e n te . ( S e c c ió n 13.1).
18.6. R e p ita lo s E je rc ic io s IS .3 y 18 4 p a ra un á rb o l ro jin eg ro . 18.21. L a s ru tin a s p a ra re a liz a r las re la c io n e s d o b le s so n lig e ra m e n te in e fic ie n
18.7. D isc u ta las v e n ta ja s , y lo s in c o n v e n ie n te s , d e e v ita r to d a s la s e x c e p c io n e s te s y a q u e h a c e n c a m b io s in n e c e sa rio s s o b re la s re fe re n c ia s d e lo s h ijo s
y e m p le a r n u l : p a ra in d ic a r lo s e rro re s. R e sc rib a d ic h a s ru tin a s p a ra e v ita r la s lla m a d a s a la ru tin a d e la ro ta c ió n
sim ple.
18.22. D iseñ e u n a im p le m e n ta c ió n ite ra tiv a d e s c e n d e n te d e lo s A A -árb o les.
Problem as teóricos C o m p a ra r e s ta im p le m e n ta c ió n c o n la d e l te x to , d is c u tie n d o la sim p lic i
d a d y e fic ie n c ia d e am b as.
18.8. D e m u e s tre c I T c o r v m a 18.2. 18.23. E sc rib a r e c e s iv a m e n te lo s m é to d o s g i r o y r e p a r t e d e m o d o q u e en
18.9. M u e stre e l re s u lta d o d e in s e rta r o rd e n a d a m e n te lo s e le m e n to s d e l I al 15 c a d a * 1 i m i n a r s ó lo se n e c e site u n a lla m a d a a la s m ism as.
e n un á rb o l A V L in ic ia lm e n te v a c ío . G e n e ra liz a r e s to (c o n u n a d e m o s tra
ción» p a ra in d ic a r q u é e s lo q u e o c u rre c u a n d o s e in s e rta n lo s e le m e n to s Problem as d e p ro g ra m a c ió n
d e l I ul 2i I e n u n á rb o l A V L in ic ia lm e n te v a c ío .
18.10. D ise ñ e u n a lg o r itm o p a ra e l i m i n a r e le m e n to s e n u n á rb o l A V L . 18.24. R e h a g a la c la s e d e lo s á rb o le s b in a rio s d e b ú sq u e d a p a ra im p le m e n ta r la
1 8 .1 1. D e m u e stre q u e la a ltu ra d e un á rb o l ro jin e g ro e s a lo s u m o 2 lo g A' (a p ro e lim in a c ió n p e re z o s a . N ó tese q u e e s to a fe c ta a l re s to d e ru tin a s, e s p e c ia l
x im ad am en te) y m o stra r u n a secu en cia d e in sercio n es q u e a lc a n ce e sta co la . m e n te a b u r .c a r M in y b u s c a r M a x , q u e a h o ra d e b e n im p lc m c n ta rsc re-
18 . 12. M uestre q u e c u a lq u ie r á rb o l A V L p u e d e c o lo re a rse c o m o un árbol rojinegro. c u n a v ám ente.
¿ T o d o s lo s á rb o le s ro jin e g ro s sa tisfa c e n la p ro p ie d a d d e lo s á rb o les A V L ? 18.25. Im p lem en to lo s á rb o le s b in a rio s d e b ú sq u e d a d e m o d o q u e só lo si- e m p le e
18.13. D e m u e s tre la c o r r e c c ió n d e l a lg o ritm o d e e lim in a c ió n d e u n A A -á rb o l. u n a c o m p a ra c ió n p o r n iv e l e n la s ru tin a s b u s c a r , i n s e r t a r y e l i m i n a r
1 8 .1 4 . S u p o n g a m o s q u e e l a tr ib u to n i v e l d e u n A A -á rb o l e s tá re p re s e n ta d o por 18.26. E sc rib a u n p ro g ra m a p a ra e v a lu a r e m p íric a m e n te la s sig u ie n te s e s tra te
u n b y t e 8 -b it. ¿ C u á l e s e l m e n o r A A -á rb o l q u e p o d ría d e s b o rd a r e l a tri g ia s d e e lim in a c ió n d e n o d o s c o n d o s h ijo s.
b u to n l v « i l e n la ra íz ?
1 8 .1 5 . U n B *>árbol d e o rd e n M e s u n B -á rb o l e n e l q u e c a d a n o d o in te rio r tien e u) S u s titu irlo p o r e l n o d o m a y o r. X. d e I j y e lim in a r r e c u r s o á m e n te X.
e n tr e 2 M 3 y M h ijo s. L a s h o ja s s e lle n a n e n la m ism a m e d id a . D escrib a b) R e e m p la z a rlo a lte rn a tiv a m e n te c o n e l m a y o r n o d o d e TV y e l m e n o r
un m é to d o p a ra re a liz a r la in s e rc ió n e n u n B ‘ -á rb o l. n o d o d e 7>. y e lim in a r re c u rs iv a m e n tc e l n o d o c o rre sp o n d ie n te .
1. A . A n d e rsso n . « B a la n c c d S e a rc h T re e s M ad e S im p le - , P ro c e r d in g s o f
r) S u s titu irlo p o r e l m a y o r n o d o d e T , o e l m e n o r n o d o d e 7 * . e lim in a n
th c T h ir J W o r k sh o p o n A lg o r ith m s a n d D a to S i ru c ia re s (1 9 9 3 ). 6 1 -7 1 .
d o re c u rs iv a m e n te e l n o d o a d e c u a d o , re a liz a n d o la e le c c ió n d e fo rm a
a le a to ria 2. U M . A d e lso n -V e lsk ii y E. M l- a n d iv - A n A lg o rith m f o r th c O rg a n iz a -
n o n o f lnt»>rm atn*n-. S o v ie t M a th D o ila d s 3 1 1962). 1 2 5 9-1263
¿ Q u é e s tra te g ia o b tie n e lo s m e jo re s re s u lta d o s ? ¿ C u á l d e e lla s tard a
m e n o s tie m p o d e C P U e n p ro c e s a r u n a s e c u e n c ia e n te r a d e o p e ra c io n e s? 3. R . A. B a c /a - Y a te s . ~ A T riv ia l A lg o n th m W h o se A n a lv sis h n 't : A C o n -
18.27. Im p le m e n te e l m é to d o <»1 ¿ m i n a r p a ra á rb o le s ro jin e g ro s. tm u a tio n - . H f7 2 9 ( 1 9 8 9 ) . 8 8 -1 1 3 .
18.28. Im p le m e n te la s o p e ra c io n e s d e lo s á rb o le s d e b ú sq u e d a c o n b ú sq u e d a p o r
p o s ic ió n p a ra lo s á rb o le s d e b ú sq u e d a e q u ilib ra d o s q u e p re fie ra e l lecto r. 4 K B a y e r. « S y m m e tric B in a ry B -T rc c v D a ta S tru c tu rc a n d M ain tcn an cc
18.2*7. Im p le m e n te lo s B -á rb o le s s o b r e la m e m o ria p rin cip a l. A lg o rith m s» . A c ta In fo r m á tic o 1 (1 9 7 2 ). 2 9 0 -3 0 6 .
18.30. Im p le m e n te lo s B á rb o le s s o b r e fic h e ro s e n d isco . 5. R B a y e r y E . M . M c C re ig h t. -O rg a n iz a lio n a n d N lain ten an ce o f L argo
1 8 .3 1 . D iseñ e un a p p le t q u e ilu stre las o p e ra c io n e s p rin c ip a le s d e lo s á rb o le s b i O rd c rc d I n d ic e s - . A c ia In fo rm á tic a I (1 9 7 2 ). 173-189.
n a rio s d e b ú s q u e d a , ta n to e q u ilib ra d o s c o m o n o e q u ilib ra d o s
6. D C o m e r. « T h e l b iq u ito u s B - tr e e - . C 'o m p u n n g S u n e x s 1 1 1 1 9 7 9 ). 121-
137.
Bibliografía 7. J C u lh c rs o n > J. I. M u n ro . « E x p la in in g th e B e h a v io r o f B in a ry S earch
T re e s u n d e r P ro lo n g e d U p d a te s; A M o d e l a n d S im u la lio n s » . C o m p u te r
Se p u e d e e n c o n tr a r m á s in f o rm a c ió n a c e rc a d e lo s á rb o le s b in a rio s d e b ú sq u e d a , J o u r n a l 3 2 (1 9 8 9 ). 6 8 -7 5 .
y e n p a rtic u la r so b re sus p ro p ie d a d e s m a te m á tic a s , e n lo s d o s lib ro s d e K n u th |I 8
8. J . C u lh c rs o n y J I. M u n ro . « A n a ly sis o f th e S ta n d a rd D eletio n A lg o rith m
y 19).
ni E x act l n D o m ain B in a ry S e a rc h T r e e s - . A lg o r n h n n c a 5 <1 9 9 0 ). 2 9 5 -
M u ch o s a rtíc u lo s tra ta n e l te m a d e la p é rd id a te ó ric a d e e q u ilib r io e n lo s á r b o
le s d e b ú sq u e d a , c a u s a d a p o r u n a lg o r itm o d e e lim in a c ió n se s g a d o . E l a rtíc u lo de 311.
llih h a r d | I 6 | p ro p o n e e l a lg o ritm o o rig in a l d e la e lim in a c ió n y e s ta b le c e q u e una 9. K C u lik . T. O ttm a n . y D . W 'ood. « D e n se M u ltiu a v T r e e s - , A C M Tran-
e lim in a c ió n c o n s e r v a la a le a to rie d a d d e lo s á rb o le s. E n | I 7 | s e re a liz a u n a n á lisis sa e tto n s o n D o tá b a s e S y s te m s 6 1 1981). 4 8 6 -5 1 2 .
c o m p le to p a ra á rb o le s c o n tre s n o d o s y e n | 3 | s e re a liz a d ic h o a n á lisis p a ra á rb o le s
c o n c u a tr o ihhí»»s. El a rtíc u lo d e H p p in g c r 110) m u e s tra u n a e v id e n c ia e m p íric a d e 10. J L. E p p in g e r. « A n E m p iric a l S tudy o f In s e rtio n a n d D e le tio n in Binary
la n o a le a to rie d a d y lo s a rtíc u lo s d e C u lh c rs o n y M u n ro (7 y 8 | m u e s tra n u n a e v i S e a rc h T r e e s - . C o m m u n ic a tio n s o f ih e A C M 2 6 (1 9 8 3 ). 6 6 3 -6 6 9 ,
d e n c ia a n a lític a , a u n q u e n o u n a d e m o s tra c ió n c o m p le ta p a ra e l c a s o g e n e ra l d e in 11. I* M ajo let y A O d ly z k o . « T lic A v c ra g e H e ig h t o l B in ary S e a rc h T rees
s e rc io n e s y e lim in a c io n e s e n tre m e z c la d a s. L a a firm a c ió n d e q u e e l n o d o m á s p ro- and O th c r S im p le T re e s » . J o u r n a l o f C o m p u te r a n d S y ste m S c ie n c e s 25
tu n d o d e u n á rb o l b in a rio d e b ú s q u e d a a le a to rio e s tre s v e c e s m á s p ro fu n d o q u e la
(1 9 8 2 ). 171-213.
m e d ia s e d e m u e s tra e n 1 111; e l resultad»» n o e s n a d a se n c illo .
L o s á rb o le s A V L fu e r o n p ro p u e s to s p o r A d e ls o n - V e ls k ii y l.a n d is | 2 | . S e 12. B . F la m ig . P r a c lic a l D a ta S lr u c lu r e s in C + + . J o h n W ile y a n d S o n s.
p u e d e e n c o n tr a r u n a lg o r itm o d e e lim in a c ió n e n | I 9 | . L o s a n á lis is a c e r c a d e los N ew Y o rk . N ew Y o rk (1 9 9 4 ).
c o s te s d e la s b ú s q u e d a s e n u n A V L e s tá n s in c o m p le ta r , p e r o p u e d e n v e rs e a lg u
13. G. II. G o n n c t y R B a e z a -Y a te s. I l a n d ln n d o fA lg o r ith m s a n d D a la S im i
n o s re s u lta d o s e n |2 0 |. E l a lg o r itm o d e s c e n d e n te d e lo s á r b o le s ro jin e g ro s e s de
la re s. 2.* e d .. A d d iso n -W e sle y . R e a d in g . M ass. <1991).
[ I 5 |: p u e d e e n c o n tr a rs e u n a d e s c r ip c ió n m á s c o m p r e n s ib le e n 12 11. E n 1 1 2 | s e da
u n a im p le m e n ta c ió n d e lo s á r b o le s ro jin e g ro s d e s c e n d e n te s s in n o d o s c e n ti n e 14. E G u d e s y S T s u r. « E x p e rim e n ts vvith B -tre e R e o rg a n iz a tio n - . P ro cec-
la s; a d e m á s s e p re s e n ta u n a d e m o s tr a c ió n c o n v in c e n te d e la p o c a u tilid a d d e d in g s o f A C M S IG M O D Sym /»osium o n M a n a g e m e n t o f D a ta (1 9 8 0 ).
n o d o N u lo . Id A A -á rb o l e s tá b a sa d o e n lo s B -á rb o le s b in a rio s s im é tric o s d is c u ti 2 0 0 -2 0 6 .
d o s e n |4 |. L a im p le m e n ta c ió n d e l te x to e s u n a a d a p ta c ió n d e la d e s c rip c ió n d e
15. L . J C im bas y R . S e d g e w ic k . « A D ic h ro m a tic F ra m e w o rk ío r B ala n c c d
111. E n 1 1 3 | p u e d e n e n c o n tra rs e m u ltitu d d e tip o s d e á rb o le s b in a r io s d e b ú sq u e d a
T re e s » . P ro c e e d in g s o f th e N in e te e n th A n n u a l IE E E Sym po.sium on
equilibrad» »s.
F o u n d a tu m s o f C o m p u te r S c ie n c e 1 1978). 8-21
L o s B -á rb o le s a p a re c e n p o r p n m e r a v e z e n |5 | . L a im p le m e n ta c ió n d e s c r ita e n
e l a r tíc u lo »»riginal p e rm ite q u e lo s d a lo s s e a lm a c e n e n ta n to e n lo s ímkI»*s in te r 16. T . II llib b a r d . «<S«*me C tH iibinalorial P ro p e rtic s o f C c rta in T re e s w ith
n o s c o m o e n la s h o ja s . L a e s tr u c tu r a d e d a to s d e s e n t a a q u í se c o n o c e e n d iv e rs o s A p p licatu * n s l o S e a rc h in g a n d S » irling-. J o u r n a l o f th c A C M 9 i 1962).
c o n te x to s c o m o B " - á rb o le s . E n | 9 | p u e d e e n c o n tr a rs e in f o rm a c ió n a c e r c a d e lo s 13-28.
B * -á rb o le s. d e s c rito s e n e l E je rc ic io 18.15. E n [6 | se p re s e n ta un re s u m e n d e los
17. A T . J o n a s se n y D E. K n u th . « A T riv ia l A lg o rith m W h o se A n a ly sis
d is tin to s tip o s d e B -á rb o le s. E n 114 1 se m u e s tra n re s u lta d o s e m p íric o s s»»brc d is tin
Is n ’t» , J o u r n a l o f C o m p u te r a n d S y s te m S c ie n c e s 16 (1 9 7 8 ). 3 0 1 -322.
to s e s q u e m a s e m p le a d o s. E n 1 1 2 | p u e d e v e rs e u n a im p le m e n ta c ió n e n ( '♦ ♦
" «as C A P I T U L O
19 Tobías hosh
m s r : ““ “ ^ , Í S
E le s p e rm iie n v a n a s o p e ra c io n e s so b re u n c o n ju n to d e e le m e n to s E ste c a p í
tu lo d is c u te las ta b la s h a sh o tabla* tic lo c a liz a c ió n . q u e p e rm ite n ú n ic a
m e n te u n su b c o n ju n to d e la s o p e ra c io n e s p e rm itid a s p o r lo s a rb o le s b ín a n o s d e
b ú s q u e d a . L a im p le m e n ta c ió n d e las ta b la s h ash s e c o n o c e u su a lm c n te c o m o has-
h in n o lo c a liz a c ió n L a lo c a liz a c ió n e s la té c n ic a e m p le a d a p a ra r e a li/a r in s e rc io
n e s. e lim in a c io n e s y b ú s q u e d a s c o n c o s te m e d io c o n sta n te
A d ife re n c ia d e lo s á rb o le s b in a rio s d e b ú sq u e d a , e l tie m p o m e d io d e e je c u
c ió n d e la s o p e ra c io n e s ilc las ta b la s h a s h se b a s a e n p ro p ie d a d e s e sta d ís tic a s en
lu y a i d e e n la e s p e r a d e e n tra d a s a le a to ria s. E s ta m e jo ra se c o n s ig u e p e rd ie n d o
g ra n c a n tid a d d e in fo rm a c ió n so b re e l o rd e n d e lo s e le m e n to s ; a sí. c ie rta s o p e ra -
e io n e s . c o m o b u s c a r M i n o b u s c a r M a x y la im p re sió n o r d e n a d a d e la ta b la, no
p u e d e n re a liz a rs e e n tie m p o lin e a l C o m o c o n s e c u e n c ia , l a ta b la h ash y e l á rb o l
b in a rio d e b ú sq u e d a tie n e n a p lic a c io n e s d ife re n te s y e fic ie n c ia d istin ta .
I;. n e s te c a p ítu lo v erem os:
• V a rio s m é to d o s p a ra im p le m c n ta r la s ta b la s d e lo c a liz a c ió n .
• A lg u n a s c o m p a ra c io n e s a n a lític a s e n tr e d ic h o s m éto d o s.
• D iv e rsa s a p lic a c io n e s d e l h a sh in g .
• U n a c o m p a r a c ió n e n tr e las ta b la s lia sh y los á rb o le s b in a rio s d e b ú sq u ed a.
6 •/ 49 49
7 p u b lic fin al sta tic in t hash( S trin g c la v e , i n t tam an y o T ab la )
5K ss
8 (
9 i n t v aio rH ash = 0;
10
1I for ( in t 1 = 0; i < c la v e .ie n g th l ); i* - )
*2 v a i o r H a s h = 37 • v aio rH ash • c l a v e , c h a r A*. < 1 >:
13
*8 v a io r H a s h % = ta m a n y o T a b la ;
15 If < v aio rH ash < 0 >
*8 v a io r H a s h * = tam a n y o T a b la ;
17
18 r e t u r n v a lo r R a s h : IX IK IX IX
19 i
XV K'I !»9 X*
Figuro 19.2 F u n ció n d e lo c a liz a c ió n m á s r á p i d a q u e s o c a p r o v e c h o d e l d e s b o r d a
m ien to . F igu ro 19.4 la b ia hash c o n exp loración lineal tras c o d a Inserción
L a p rim e ra c o lisió n s e p ro d u c e c u a n d o s e in s e rta 4 9 ; e s te e le m e n to se c o lo c a D E F I N I C I Ó N : L l f a c t o r d e t o m o d e u n a ta b la h a s h e s la tr a c c ió n o c u p a d a
e n la sig u ie n te p o s ic ió n v a c ía , q u e e s la p o s ic ió n 0 . D e sp u é s. 5 8 c o lis io n a c o n IX. d e la ta b la . D e n o ta m o s e l f a c to r d e c a rg a m e d ia n te /.. b s t á e n tr e 0 (v a c ía ) y I
S‘> y 4 9 a n te s d e e n c o n tra r u n a c a s illa v a c ia tr e s p o s ic io n e s m á s a llá , q u e es la p o (llen a)
sic ió n I. L a c o lis ió n d e l e le m e n to 9 s e re s u e lv e d e m o d o sim ila r. S ie m p re q u e la
A h o ra p o d e m o s re a liz a r, e n e l T e o re m a 19.1. u n a n á lis is s im p le d e la e x p lo r a
ta b la s e a su fic ie n te m e n te g ra n d e , p o d re m o s e n c o n tra r u n a c a s illa v a c ía . S in e m
c ió n lin e a l, a u n q u e p a rc ia lm e n te in c o rre c to c o m o c o n s e c u e n c ia d e n u e stra s o b s e r
b a rg o . e l tie m p o q u e s e e m p le a e n b u s c a rla p u e d e se r b a sta n te elev ad o . P o r e je m
v a c io n e s so b re la in d ep en d e n cia.
p lo . si e x is te u n a s o la c a s illa v a c ía e n e l v e c to r, e s p o sib le q u e te n g a m o s q u e e x a
m in a r la ta b la e n te ra h a s ta lle g a r a ella . Fin m e d ia , p o d e m o s e s p e ra r te n e r q u e
b u sc a r e n la m ita d d e la ta b la h a s ta e n c o n tr a r u n a c a s illa v acía . E s to e s tá m u y l e
S i s e s u p o n e in d e p e n d e n c ia e n tr e in te n to s , e l n u m e ro m e d io d e c e ld a s q u e
jo s d e l tie m p o c o n sta n te p o r a c c e s o q u e d e se a m o s. E n c o n tra p o s ic ió n , si su p o n e
se e x a m in a n e n u n a in s e r c ió n c o n e x p lo r a c ió n lin e a l es I ( I /.).
m o s q u e la ta b la se v a a m an te n e r re la tiv a m e n te v a c ía , e n to n c e s la s in s e rc io n e s no
se rá n ta n c o sto sa s. T o d o e s to s e d is c u tirá e n b rev e.
Un u n a ta b la c o n fa c t o r d r ca r\¡a la p r o b a b ilid a d d e q u e u n a c e ld a e s té
E l a lg o r itm o b u s c a r s ig u e e x a c ta m e n te e l m ism o c a m in o q u e e l a lg o ritm o va cía e s I - C o m o c o n s e c u e n c ia , e l n u m e ro e s p e r a d o d e in te n to s in d e
i n s e r t a r . Si lle g a a u n a c a s illa v a c ía . e l e le m e n to q u e e sta m o s b u sc a n d o n o se p e n d ie n te s h a s ta e n c o n tr a r u n a c e ld a v a c ia es I t i - /.).
e n c u e n tra e n la ta b la ; e n c a s o c o n tra rio , lo e n c o n tra re m o s. P o r e je m p lo , p a ra e n
c o n tra r 5 8 . e m p e z a m o s e n la c a s illa 8 (ta l y c o m o in d ic a la fu n c ió n h a sh ). A q u í L a ile m o s tra c ió n d e l T e o re m a 19 I u sa e l h e c h o d e q u e . si la p ro b a b ilid a d di
e n c o n tra m o s u n e le m e n to , p e ro c o m o n o e s e l b u sc a d o , p a sa m o s a e x a m in a r la p o q u e u n s u c e s o s e p ro d u z c a e s /». s e n e c e sita n e n m e d ia I p in te n to s p a ra q u e d ic h o
s ic ió n 0 \ d e s p u é s la I. h a s ta q u e lo e n c o n tra m o s. S i re a liz a m o s b u s c a r c o n 19. s u c e s o s e p ro d u z c a , s u p o n ie n d o q u e lo s in te n to s s o n in d e p e n d ie n te s . P o r eje m p lo ,
se e x a m in a ría n las c a s illa s 9 . t). I y 2 a n te s d e e n c o n tra r u n a c e ld a v a c ía e n la p o e l n ú m e ro e s p e r a d o d e la n /a im e n to s d e u n a m o n e d a h asta q u e s a lg a c a ra e s d o s. y
sic ió n 3. C o n c lu im o s q u e n o h e m o s e n c o n tr a d o 19. la c a n tid a d d e tiro s d e u n d a d o h a s ta q u e s a lg a u n 4 e s se is. E n a m b o s c a s o s se
I-a e lim in a c ió n e s tá n d a r no p u e d e a p lic a rs e , y a q u e a l ig u al q u e su c e d e e n los a s u m e in d e p en d e n cia.
á rb o le s b in a rio s d e b ú s q u e d a , u n e le m e n to d e la ta b la h a sh n o só lo s e re p re se n ta a
s i m is m o , s i n o q u e c o n e c ta o tro s e le m e n to s h a c ie n d o d e p o sic ió n o c u p a d a d u ra n te
la re s o lu c ió n d e c o n flic to s . A sí. si e lim in a m o s 8 9 d e la ta b la h a sh . p rá c tic a m e n te 19.3.2 Lo que suced e realm ente: la agrupación primaria
tin lu s las o p e ra c io n e s b u s c a r p o ste rio re s fa llará n . C o m o c o n s e c u e n c ia , se im p le-
m e n ta la e lim in a c ió n p e re z o s a , m a rc a n d o lo s e le m e n to s c o m o b o rra d o s d e la ta D e sg ra c ia d a m e n te , la in d e p e n d e n c ia a s u m id a n o s e c u m p le E s to s e m u e s tra e n la
b la . E sta in fo rm a c ió n s e a lm a c e n a c u un a tr ib u to a d ic io n a l. C a d a e le m e n to está F ig u ra 19.5. E n la p a ite s u p e rio r te n e m o s e l re s u lta d o d e lle n a r la ta b la h a s ta e l 70
a c tiv o o ba rra d o . p o r c ie n to d e su c a p a c id a d , c u a n d o lo s in te n to s s u c e s iv o s so n in d e p e n d ie n te s . En
e l c e n tr o e l c o rre s p o n d ie n te a l u s o d e la e x p lo ra c ió n lin e a l O b s e rx e lo s c o n ju n to s
d e a g ru p a c io n e s; é s te e s e l fe n ó m e n o c o n o c id o c o m o a g r u p a c ió n p rim a ria .
1. L a ta b la h ash e s g ran d e.
2. C a d a in te n to e n la ta b la h a s h e s in d e p e n d ie n te d e los in te n to s a n te rio re s
c a lc u la r e s ta m e d ia e v a lu a n d o S i / ) = t l l x ) d x . F n o tr a s p a la b r a s.
'• J i - n
e l c o s te m e d io d e u n a b ú sq u e d a e x ito s a e n u n a ta b la c o n ta c to r d e c a r g a /
es ig u a l a l c o s te d e u n a in serí io n e n u n a ta b la c o n fin I o r d e c a r g a ». h a
/-/ n lim e ro m e d io d e c e ld a s e x a m in a d a s e n u n o in s e r í io n i o n e x p lo ra c ió n
c ie n d o la m e d ia en tre lo s va lo res 0 y /.. D e l T e o re m a IV .2 /H ile m o s d e r i
lin e a l e s c e r c a n o a 1 1 + l/( I - / ) - ) 2.
v a r la s ig u ie n te e c u a c ió n :
L i d e m o s tr a c ió n q u e d a fu e r a d e lo s o b je tiv o s d e l te s to . V é a se /6 /.
:.í
P a ra u n a ta b la m e d io lle n a, te n e m o s q u e 2 .5 e s la c a n tid a d m e d ia d e c e ld a s
e x a m in a d a s d u ra n te u n a in s e rc ió n . E s to e s m u y s im ila r a lo q u e e l a n á lis is a n te rio r
ha in d ic a d o L a s d ife re n c ia s se h a c e n m a y o re s c u a n d o /. se a c e rc a a I. P o r e je m
p lo . si la ta b la e s tá o c u p a d a e n u n 9(1 |x»r c ie n to , e n to n c e s ; = 0 .9 . E l a n á lis is s u
g ie re q u e d e b e ría n se r e x a m in a d a s d ie z c e ld a s lis to es b a sta n te , a u n q u e p o d ría r e
su lta r asu m ió le . S in e m b a r g o , se g ú n e l T e o re m a 1 9 .2 . la re s p u e s ta re a l e s que
; c :)
n e c e sita ría m o s e x a m in a r u n a s 5 0 c e ld a s E s to e s c ie rta m e n te e x c e s iv o , p a rtic u la r
m en te p o rq u e se trata s ó lo d e u u v a lo r m e d io , p o r lo q u e p u e d e n e x is tir in s e rc io
n e s to d a v ía p eo res.
\ 9
5
L a e x p lo r a c ió n c u a d r á tic a e s u n m é to d o d e re s o lu c ió n d e c o n flic to s q u e e lim in a
el p ro b le m a d e la a g ru p a c ió n p rim a ria p ro v o c a d o p o r la e x p lo ra c ió n lin e a l. Su
n o m b re s e d e b e a l u s o d e la fó rm u la F\ i) = i 2 e n la e lim in a c ió n d e lo s c o n flic to s 7
M ás c o n c re ta m e n te , si la fu n c ió n d e lo c a liz a c ió n d e v u e lv e c o m o r e s u lta d o / / v la 18
8 IX 18 18
b ú sq u e d a e n la c e ld a in d e x a d a p o r / / n o n o s c o n d u c e a n in g u n a c o n c lu s ió n , e n to n
i 89 89 89 H9 89
c e s se c o n s u lta n su c e s iv a m e n te la s c e ld a s / / + | \ H ■+ 2 : , H + 3 : ........../ / + i 2.
« e m p lean d o c irc u la r id a d i. E s to e s c la ra m e n te d ife re n te a la e x p lo ra c ió n lin e a l q u e
Figuro 19.6 Tabla hash c o n exploración c u a d rá tic a tras c a d a inserción (nótese
c o n s u lta ría las c e ld a s H + I . H + 2 . I I * 3 I I + /.
q u e e l tam añ o d e la tob ia h a a d o eleg id o in a d e cu a d a m e n te yo que
L a F ig u ra 19.6 m u e s tra la ta b la q u e se o b tie n e a l e m p le a r e x p lo ra c ió n c u a d rá no es un núm ero prim o).
tic a e n lu g a r d e e x p lo ra c ió n lin e a l, d u ra n te la in s e rc ió n d e la s e c u e n c ia d e la F ig u
ra 19.4. C u a n d o 4 9 c o lis io n a c o n 8 9 . la p rim e ra a lte rn a tiv a e s v is ita r la c e ld a si
A fo rtu n a d a m e n te , las n o tic ia s so n re la tiv a m e n te b u e n a s e n lo d o s lo s p u n to s. S i
g u ie n te . D ic h a c a s illa e s tá v acía , a s í q u e p o d e m o s co lo c a r e n e lla e l 4 9 . A
e l ta m a ñ o d e la ta b la e s p r im o y e l f a c to r d e c a rg a n o e x c e d e n u n c a 0 .5 . sa b e m o s
c o n tin u a c ió n . 5 8 c o lis io n a c o n 8. S e e x a m in a la c e ld a e n la n o v e n a p o s ic ió n (la
q u e s ie m p re in s e rta re m o s e l n u e v o e le m e n to X \ q u e n in g u n a c e ld a será c o n s u lta
sig u ie n te ), p e r o s e p ro d u c e o tra c o lisió n . E n la sig u ie n te c a s illa e x a m in a d a , q u e
d a d o s v e c e s d u ra n te un a c c e so . S in e m b a rg o , p a ra g a ra n tiz a r q u e s e c u m p le n e s
e s tá 4 p o sic io n e s m á s a llá d e la p o s ic ió n h a s h o r ig in a l, se e n c u e n tra u n a p o
ta s p ro p ie d a d e s, d e b e m o s a se g u ra r q u e e l ta m a ñ o d e la ta b la e s u n n ú m e ro p rim o ,
sic ió n v a c a n te . A sí c o lo c a m o s , e n e l se g u n d o in te n to , e l e le m e n to 5 8 . L o m ism o
ta l y c o m o m u e s tra e l T e o re m a 19.4. P o r c o n ip le titu d . la F ig u ra 19.7 m u e s tra u n a
su c e d e p a ra e l 9 O b s e rv e q u e lo s lu g a re s a lte rn a tiv o s p a ra los e le m e n to s c u y o v a
ru tin a q u e g e n e ra n ú m e ro s p rim o s . D ic h a ru tin a e m p le a e l a lg o r itm o d e la F ig u
lo r h a s h e s 8 y lo s lu g a re s a lte rn a tiv o s p u ra lo s e le m e n to s c u y o v a lo r h a s h e s 9 no
son lo s m ism o s L a larg a s e c u e n c ia d e in te n to s re a liz a d a p a ra in s e rta r e l e le m e n to ra 9.8.
5 8 n o a fe c ta a la in s e rc ió n p o s te rio r d e 9 . E s to c o n tr a s ta c o n lo q u e s u c e d ía c u a n
d o e m p le á b a m o s e x p lo ra c ió n lin eal 1
A n te s d e c o d if ic a r los a lg o ritm o s d e b e m o s c o n s id e ra r a lg u n o s d e ta lle s: 2 • M étodo i n t e r n o p a r a g e n e r a r u n num ero p rim o
3 • m ayor o i g u a l q u e n . V éase la F ig u r a 9 .8 p a ra e n c o n t r a r esP rim o -
• E n la e x p lo ra c ió n lin e a l, c a d a in te n to e x a m in a u n a c e ld a d ife re n te . ¿ G a ra n ti 4 •/
z a la e x p lo ra c ió n c u a d rá tic a q u e c u a n d o s e e x a m in a u n a c e ld a , é s ta n o ha 5 p riv ate fin al s ta tic in t sig u ien ceP rím o l in t n >
6 (
s id o c o n su lta d a p re v ia m e n te e n e l p ro c e s o a c tu a l? ¿ G a ra n tiz a la e x p lo ra c ió n
7 i£ ( n % 2 == 0 )
c u a d rá tic a q u e d u ra n te la in s e rc ió n d e X . X e s s ie m p re in s e rta d o si la tab la 8 n+*;
n o e s ta a u n c o m p le ta ? 9
• L a e x p lo ra c ió n lin eal s e im p le m e n ta fá c ilm e n te . L a e x p lo ra c ió n c u a d rá tic a 10 for ( ; esP rim o l n I ; n *= 2 |
11
p a re c e p re c is a r d e las o p e ra c io n e s m u ltip lic a c ió n y m o d u lo . ¿ E sta ap a re n te
12
c o m p le jid a d a d ic io n a l h a c e q u e la e x p lo ra c ió n c u a d rá tic a s e a in e fic ie n te ?
13 re tu rn n:
• ¿ Q u é su ced e (en am b a s e x p lo ra c io n e s , lin eal y c u a d rá tic a ) si e l fa c to r d e car 14 )
g a e s d e m a s ia d o e le v a d o ? ¿ P o d e m o s e x p a n d ir d in á m ic a m e n te la ta b la , d e m o
Figura 19.7 R utina e m p le a d o e n la exploración c u a d rá tic a p a ra en co n trar un pri
d o sim ila r a c ó m o s e h a c e c o n las e stru c tu ra s d e d a to s b a sa d a s e n v e cto res?
m o m avot o tqual qu e N
p a ra la e x p lo ra c ió n c u a d rá tic a in d ica q u e se n e c e sita su m a r I (p ara p a sa r d e i la
S i se e m p le a e x p lo r a c ió n c u a d r á tic a y t i ta m a ñ o d , Ia ta b la e s u n n ú m e ro
i), u n a m u ltip lic a c ió n (p a ra c a lc u la r C I . o tra s u m a y u n a o p e ra c ió n m ó d u lo . C ie r
p r im o , sie m p r e p o d e m o s in s e r ta r u n n u e v o e le m e n to e n la ta b la s i é s ta se
ta m e n te . e s to s c á lc u lo s p a re c e n d e m a s ia d o c o s to s o s p a ra se r e m p le a d o s e n la prác
e n , u e n im m e ,lio v a c ia A d e m á s , d u r a n te u n a o p e r a c ió n d e in s e r c ió n n o se
tic a . S in e m b a rg o , d is p o n e m o s d e l tr u c o sig u ie n te , e x p lic a d o e n e l T e o re m a 19.5.
e x a m in a n in g u n a c e ld a d o s veces.
S e a M e l ta m a ñ o d e la ta b la . S u p o n g a m o s q u e M es u n n ú m e ro p r im o T<
l a e x p lo ración c u a d ra n , a p u e d r im p lr m e n tu rse sin co sto sa s m ú ltip la u n o
m a y o r q u e .1. M o s tra r e m o s e n p r im e r lu n a r, q u e la s p r im e r a s l M 2 J p n s b
n es n i d ivisio n es.
( io n e s a lte rn a tiv a s so n d is tin ta s. D os de e sta s p o s ic io n e s son
H V C t m o d . l / ) y H * y : ( m od.V /J. d o n d e ü < i . j ^ I M / 2 ] . S u p o n g a m o s S e a II, | la p o s ic ió n co m p u ta d a m a s reciente i H {, es la /ro sieió n h a sh in i- Di
q u e a m b a s s o n ig u a le s, p e r o q u e i é j E n to n ce s e u th . v //, la p o siciém q u e e s ta n u n in te n ta d o e a lcu lo r. E n to rn e s se tiene
( i - i Kt + = O (m od.M ). //, = i 2 “ t í ~ i r (m o d M i
.19.4»
//,- //, , + 2r - I im ix l .M»
C o m o M es p ru n o , se sig u e q u e i + j o i j e s d iv isib le p o r M . C o m o i y j
so n d is tin to s y su sum a e s m e n o r q u e M . n o p u e d e d a rse n in g u n a d e e sta s l a E ch o , io n / 9 .4 n o s in d ic a q u e /ro dem os c a li a la r e l n u e v o valor II, a / ui r-
a lte rn a tiv a s, d e n im io q u e s e lleg a a u n a c o n tr a d ic c ió n C o m o c o n s e iu e n - lir d e l v a lo r p r e v io I I _ , sin e le v a r i a l c u a d ra d o . A u n q u e a u n te n e m o s una
c u i. la s p rim e ra s LM 2 J p o s ic io n e s a lte rn a tiv a s s,ui to tla s d is tin ta s, d e n u d o m u ltip lii a c ió n , é s ta es ¡*or 2. im p tein en ta d a n iv i,á m e n te e n la m a sa ría d e
q u e una irisen to n siem pre ten d rá é x ito si la ta b la e stá a ! m e n o s m e d io vacía. lo s c o m p u ta d o re s m ed ia n te e l in terca m b io d e b its. L a o p e ra c ió n n u d u l o no
e s re a lm e n te n ecesa ria , v a q u e e l v a lo r d e 2 1 “ I d e b e se r m e n o r q u e M .
S i la ta b la cvla a lg o m á s q u e m e d io lle n a , la in s e rc ió n p u e d e fa lla r (a u n q u e es-
A s i. s i la a ñ a d im o s a H _ , . e l resu lta d o seguirá sie n d o m e n o r q u e M te n
l o e s e x tre m a d a m e n te im p r.ib a b le ). E n la p ra c tic a , n o n o s p la n te a m o s la R is ib ili
i u s o c a s o n o n e c e sita m o s e l m r d u lo I o lig era m en te n u ix o r te n r u s o caso,
d a d d e e rro re s d u ra n te las in s e rc io n e s, y a q u e e llo im p lic a ría q u e h e m o s re aliza d o
/ro d em o s c a lc u la r e l n u d illo re stá n d o le M).
d e m a s ia d o s in te n to s . R e c o rd e m o s q u e e n c a d a in s e rc ió n e s p e ra m o s r e a li/a r c e rc a
d e 2 o 2 .5 m te n io s . m ie n tra s q u e p a ra fa lla r e n u n a de- e lla s c o n u n a ta b la d e lam a- El T e o re m a 19.5 m u estra q u e p o d e m o s c a lc u la r la sig u ie n te p o sic ió n q u e debi
ñ o 1 0 0 .0 0 0 se n e c e sita ría n 50.(XX) in te rn o s. A d e m á s, si e l ta m a ñ o d e la la b ia es m o s e x a m in a r em pleanik» u n a su m a (pura in c re m e n ta r i), u n c a m b io do h its (p ara
s ie m p re u n n ú m e ro p rim o y e l fa c to r d e c a rg a p e rm a n e c e p o r d e b a jo d e 0 .5 . lie e v a lu a r 2 o . u n a su stra c c ió n p o r I (p u ta e v a lu a r 2 1 11, o tra su m a (p a ra in crem en tar
m o s g a ra n tiz a d o a b s o lu ta m e n te e l é x ito d e la in s e rc ió n . S i e l ta m a ñ o d e la ta b la no la p o sic ió n inicial c o n 2 i - 11. u n test p a ra c o m p ro b a r si e s n ec e sa ria la c irc u la n -
e s p rim o , e l n ú m e r o d e p o sic io n e s a lte rn a tiv a s p u e d e v e rse re d u c id o d ra m á tic a d a d . y u n a p iv o p ro b a b le su stracció n p a ra im p lc m e n ia r la o p e ra c ió n m o d u lo C o m o s-t
m e n te P o r e je m p lo , si e l ta m a ñ o d e la ta b la e s 16. e n to n c e s la s ú n ic a s p o sic io n e s c o n se c u e n c ia , la d ife re n c ia e n tre la e x p lo ra c ió n lin eal y la e x p lo ra c ió n c u a d rá tic a e s. cm
a lte rn a tiv a s e s tá n a I . 4 v 9 c a s illa s d e la in ic ia l, l i n a v e z m á s e s to n o e s conside p o r c a d a p ru e b a , u n c a m b io d e bits, u n a su stra c c ió n p o r 1 y u n a s u m a . E s to p a re c e ^
ra b le : a u n q u e n o h e m o s g a ra n tiz a d o [ M 2 J in te n to s, e n la m a y o ría d e la s e v a s io se r m e n o r q u e e l c o s te d e re a liz a r u n a p ru eb a a d icio n al c u a n d o s e m a n e ja n c la v e s ^
n es te n d re m o s m u c h o s m á s d e la s q u e e s p e rá b a m o s n e c e sita r. A p e s a r d e lo d o , es c o m p lic a d a s (c o m o c a d e n a s d e c a ra c te re s). O
m e jo r ju g a r so b re se g u ro y e m p le a r la te o ría c o m o g u ía p a ra e s c o g e r lo s p a ra m e E l ú ltim o d e ta lle a c o n s id e ra r e s la e x p a n sió n d in á m ic a S i e l fac to r d e c a rg a e s pr
tros. M á s au n . s e h a d e m o s tra d o e m p íric a m e n te q u e lo s la m u ñ o s p rim o s so n los su p e rio r a 0 .5 . d u p lic a re m o s e l ta m a ñ o d e la ta b la h ash E s to n o s lleva a c o n sid e ra r £
id e ales p a ra las ta b la s h a sh , y a q u e e lim in a n a lg o d e la n o a le a to ríe d a d o c a sio n a l- v a n o s p u n tos. E n p rim e r lu g ar, ¿ c u a n to nos c o s ta rá e n c o n tra r o tro n u m e ro p o m o ' ^
m e n te in tro d u c id a |H»r las fu n c io n e s d e lo c a liz a c ió n . lu í re s p u e s ta e s q u e e s fá c il e n c o n tra rlo s. S ó lo te n e m o s q u e e x a m in a r (X lo g .V) r6
E l se g u n d o a s p e c to im p o n a n tc e s la e fic ie n c ia . R e c o rd e m o s q u e p a ra u n fa c to r n ú m e ro s a n te s d e e n c o n tra r u n o q u e s e a p rim o C o m o c o n s e c u e n c ia . la ru tin a d e la ,>
d e c a rg a d e (1.5. I.i e lim in a c ió n d e la a g ru p a c ió n p rim a ria e v ita e n m e d ia só lo 0 .5 F ig u ra 19.7 e s m u y e fic ie n te . C o m o e l te s t d e p rim a lid a d tie n e un e o s - te
d e la s p ru e b a s e n u n a in serció n y 0.1 e n u n a b ú sq u e d a c o n é x ito . T e n e m o s o tr o he te m á x im o d e (X .V 1 2). la b ú s q u e d a d e u n n ú m e ro p rim o tie n e u n c o s te m á x im o d e
n e fic io ad ic io n a l: e n c o n tra r u n a se c u e n cia d e p ru e b a s larg a e s sig n ific ativ a m e n te (X;V* : ! o g \ r . L s to e s m u c h o m e n o s q u e e l c o s te (A.N » d e c o p ia r lo s c o n te n id o s
m e n o s p ro b a b le S in e m b a rg o , si re a liz a r una p ru e b a e n la e x p lo ra c ió n c u a d rá tic a es d e la ta b la v ie ja e n l a nuev a
d o s v eces m as c o sto so , e l e sfu e rz o n o v ald ra la p e n a L a e x p lo ra c ió n lin eal im
p le m e n to m e d ian te u n a se n c illa s u m a (d e l l . u n test p a ra c o m p ro b a r si n e c e sita m o s ; l - . t u r a t i n a t * i n b * n c » r v x f j i u »i in tto M B M u n o - M r u c U X q u e p r r m U - I . « p c n l n * e l I IW* * ' |
c irc u lan d ad . y una su stracció n (en e l c a s o d e q u e se p re c ise c irc u la n d u d ). I.a fó rm u la U u h U K ix h . U i u i ip k - n » r r i j » > « i d e U U b l a o » U « • . p o c i - d 'l c d e j v . - f u > - q u e • * c n i p l c J u n . m . n c n .
I n a v e / q u e s c h a a sig n a d o m e m o ria a l v ec to r d e m a y o r ta m a ñ o , ¿ d e b e m o s c o
19.4.1 Im plem entación en J a v a
p iar e n é l toda la in fo rm a c ió n ? L a re sp u e sta e s no. U n n u e v o v e c to r im p lic a una
n u e v a fun ció n lu d í , d e m o d o q u e n o p o d e m o s e m p le a r la s p o sic io n e s a n tig u a s. D e
A h o ra y a e sta m o s p re p a ra d o s p ara p re s e n ta r u n a im p lc m e n la c ió n c o m p le ta e n Jav a Eli
b e m o s b u sc a r c a d a e le m e n to e n la ta b la v ieja , c a lc u la r su n u e v o v a lo r hasii e in ser " ‘i
d e las ta b la s hash c o n e x p lo ra c ió n cu a d rá tic a . E m p le a re m o s h e re n c ia y d efin ire m o s
ta rlo e n la n u e v a tabla. E ste p n x e s o re c ib e e l n o m b re d e r c h m h in ^ . L a s e c c ió n si '>ii
e n p rim e r lu g ar u n a c la s e a b stra c ta q u e im p lem en to las ta b la s h a s h D esp u és e x te n
g u ie n te m u e s tra q u e e s se n c illo im p le m e n ta r e l re h a sh in g e n Jav a. OC
d ere m o s d ic h a c la s e c o d ific a n d o un m é to d o d e re s o lu c ió n «le c o n flic to s m ediante y
e x p lo ra c ió n c u a d rá tic a . R eco rd em o s q u e e l in te rfa z H a s h a b l e n e c e sita la im p le - nt
package E s tru c tu ra s D a c o s :
m e n ta c ió n d e u n a fu n c ió n h ash ad ecu ad a. E l e sq u e le to d e la c la s e s e m u estra e n las ■■
Jr
t S o p o r t e . •;
íp c io i F ig u ra s 19.8 y 19.9. A c o n tin u a c ió n s e d e sc rib e d e ta lla d a m e n te c a d a m im a d e la
’Clt
im p o rt E x c e p c io n e s .* ; m ism a.
L a ta b la h ash c o n siste e n un v e c to r d e refe re n c ia s E n t r o d a i i a s h : c a d a re fe re n
/ C la s e a n s t r a c t a E x p lo r a c io n T a b la H a s h
c ia e s n u i l «> a p u n ta a u n o b je to q u e a lm a c e n a un e le m e n to y u n a trib u to q u e indica
si e s a e n tra d a e s tá a c tiv a o se h a e lim in a d o . Ll v e c to r se d e c la ra e n la lín e a 5 3 c o m o
/ CONSTRUCCIÓN: s i r . n in g u n a i n i c i a i i z a c i ó r .
/ p r o t e c c e d . d e m o d o q u e e l m é to d o d e reso lu c ió n «le co n flic to s, im p le m e n ta d o en
' .......................................................OPERACIONES P Ú B LIC A S ................................................. .. las c la se s d e riv a d a s, p u e d a a c c e d e r a e l. N e c e sita m o s c o n o c e r e l n ú m e ro d e e le m e n
/ v o id i n s e r t a r ! x 1 In s e r t a x to s in se rta d o s e n la ta b la h ash (in c lu y e n d o lo s e le m e n to s m a rc a d o s c o m o e lim in a
/ v o id e l i m in a r t x ) E l im in a x
d o s). D ich o n ú m e ro se a lm a c e n a e n t a m < a n y o A c t u a l . d e c la ra d o e n la línea 54.
/ H a s h a b le b u s c a r | x ) - - > D e v u e lv e e l e le m e n to q ue a j u s t a co n x
/ v o id v a c ia r ( » - - > E lim in o to do* i o s e le m e n to s El re s to «le la c la s e c o n tie n e las d e c la ra c io n e s d e las ru tin as «le la ta b la h ash . La
/ i n t h ash < S t r in g s t r . i n t ta m a n yo T a b la > o p erac ió n b u s c a r d e v u e lv e e l e le m e n to e n c o n tra d o e n la b ú sq u e d a d e x. S i x n o se
- - > Método p a r a In d e x a r c a d e n a s *r. una t a b la haoh e n cu e n tra e n la ta b la , s e la n z a u n a e x cep ció n . El métexk» d e in serció n añ a d e u n n u e
' ............................................... “ •••‘ •••■ERRORES*****................. ......................................... vo e le m e n to a la tab la: m d ic h o e le m e n to y a e s tá e n ella, e l \a l o r a n te rio r se so b res
/ b u s c a r y e l i m in a r la n z a n Elem e n to N o En co n trad o
cribo c«>n e l n u evo.
/ ín u o r t a r s o b r e o jic r ib e e l v a lo r a n t e r io r e n c a s o d e r e p e t i c i ó n ; no e r r o r
L as ru tin a s d e in ie ia h /a c ió n d e la ta b la h ash se m u estran e n la F ig u ra 19.10. En
/ •• e lla s no h a y n in g ú n d e ta lle n o tab le. O b se rv e q u e in ic ia lm e n te to d a s las refe re n c ia s
Im p le m e n ta ció n d e l a s t a b la s h a sh m e d ia n te t a b la s con e x p lo r a c ió n . d e v e c t o r so n n u i l . L a s ru tin as d e b ú sq u e d a se m u estran e n la F igura 19.11.
Es una c l a s e a b s t r a c t a que debe s e r e x t e n d id a p a ra
im p le m e n ta r un a lg o r it m o d e e x p lo r a c ió n c o n c r e t o , como
• l a e x p lo r a c ió n c u a d r á t ic a . 50 p rív a te s ta tic fin al i n t TAMANYOJTABLA_POR_DEF£CT0 = 11;
N ó te se que to d o « l o s " a ju s t e s * s e b a s a n on e l método u q u a is . 51
52 / “ El v e c to r d e e le m e n to s. • /
p u b lic a b s t r n c t c l a c i; E x p lo r a c io n T a b la H a s h im p lem ento T a b la H a ch 53 p r o t e c t e d E n tra d a H ash I I v e c t o r : I I E l v e c t o r d e e le m e n to s
54 p r í v a t e i n t ta m a n y o A c tu a lj H E i núm ero d e c e l d a s o c u p a d a s
/ •* 55
Método a b s t r a c t o p a r a i a r e s o lu c ió n d e c o n f l i c t o s . 56 p r ív a t e f i n a l v o id c r e a r V e c t o r * i n t ta m a n yo V e cto r >
E s e l ú n ic o m étodo que debe s e r r e s c r i t o en ca d a c l a s e . 57 t / * F ig u r a 1 9 . 1 0 * / >
• Sparam x e l e le m e n to a I n s e r t a r . 58 p r ív a t e f i n a l v o id c o n !ir m a B u n c a r < i n t p o s ic io n A c t u a l,
0 r e t u r n l a p o s ic ió n donde f i n a l i z a i a b ú sq u e d a . 59 S t r i n g m e n s a je 1 t h r o w s E le m e n t o N o E n c o n t r a d o
60 ( /• F ig u r a L 9 .il * / )
p r o t e c t e d a b s t r a e r i n t h u s c a rF o s * H a s h a b le x ) : 61
62
p u b lic f i n a l « t n t i c l n t h a « h ( S t r i n g c l a v e , i n t ta sw m yo T ab la i 63 / / La e n t r a d a b á s i c a a l m a c e n a d a e n E x p l o r a c i o n T a b l a H a s h
[ /* F ig u r a 1 9 . 2 * / 1 64 c l a s s E n tra d a H ash
p u b li c E x p lo r a c io n T a b la H a s h * ) 65 *
I /• F ig u r a 1 9 . 1 0 •/ ) 66 H a sh ab le e le m e n to ; u El ele m en to
p u b li c f i n a l v a c ia r * ) 67 b o o iean e s ta A c tiv o ; fa ls e s i se e lim in a
( /* F ig u r a 1 9 .1 0 • / ) 68
p u b lic f i n a l H a s h a b le b u s c a r* H a s h a b le x ) throw e E le m en to N o E n co n tra d o 69 p u b l i c E n tra d aH ash * H a s h a b le e )
I /* F ig u r a 1 9 . 1 1 •/ ) 70 ( C h is 1 e . t r u e 1r }
p u b lic i m a l v o id e l im in a r * H a s h a b le x i th ro w s E le m en to N o En co n tra d o 71
* /• F ig u r a 1 9 . 1 2 •/ 1 72 p u b l i c E n t r a d a H a s h * H a s h a b l e i?, b o o i e a n i )
p u b lic f i n a l v o id in s e r t a r * M a s lia b le x l 73 ( e le m e n to = e ; e s ta A c tiv o » i : i
( /* F ig u r a 1 9 . 1 3 • / } 74 )
a 19 8 Esqueleto d e k j clase d e las latxas hash c o n exploración (p arte I).
Fm iim i<? <? Fsni tetotn in r.kisf! d e las *cblG5 hQSh c o n exploración ( p o n e 2
T o d a s e lla s e m p le a n e l m é to d o a b stra c to b u s c a r P o s O c h e m o s e x te n d e r la c la s e i<
• M étodo i n t e r n o p * ¡ a a s i g n a r m e n o r ía a v e c t o r . a b stracta E x p l o r a c i o n T a b l a H a s h im p le m e n ta n d o d ic h o m éto d o , lu is ru tin a s *
• « p a r a n t* m *nyoV ector e l t a n u lo d e l v e c t o r .
b u s c a r so n se n cillas d e c o d ific a r L 'n e le m e n to e s e n c o n tra d o si e l re su ltad o d e 'J_
p r iv a te fin a l v o id c re a rV e c to rl in t tan a n y o V e cto r I b u s c a r Po p e s u n a c e ld a a c tiv a (e s to e s . n o e s n u l 1 > ta m p o c o e s tá m arcad a c o m o ^
elim in ad a). IX* este m o d o , si b u s c a r P o s s e d e tie n e e n u n a c e ld a A t o a d e b e existir
v ecto r ■ new E n tr a d a H a s h i t a n a n y o V e c t o r J ; un e le m e n to q u e a ja s te c o n el b u scad o . E sta comprohacKHi •<* h ace e n e l m éto d o p n - ct
v a d o c o n f ir r c a B u s c a r IX* m o d o sim ilar. la m im a e l i m i n a r de* la F igura 19.12 e> a
se n c illa C o m p ro b a m o s si b u s c a r P o s no-* co n d u c e a una c e ld a activa. S i e s así. la
• C o n stru y e la ta b la haoh. c e ld a se m arca co m o elim inada, e n c a s o co n trario , hem o s acabado.
L a ru tin a d e in s e rc ió n se m u e s tra e n la F ig u ra 19.13. E n la lín e a 9 in v o c a m o s u
p u b lic E x p l o r a r i oriT a l í l a H a a h < i
al m é to d o b u s c a r P o s b u s c a r P o s n o s d e v u e lv e la p o sic ió n e n la q u e in s e rí a i x . 1
c r e a r v e c t o r I TAKAf;Y0..7ABI.A_ POP. ^DEFECTO I ;
v aciar < I :
1
2
/••
' E l ir? i n a e l e m e n t o * d e l a t a b l a h a s h .
^M
3 • tfparam x «1 e l e m e n t o a e l i m i n a r .
4 • « e x c e p t i o n E lo n e n to N o E n c o n tra d o s i no s e e n c u e n t r a
V a c ía d e forr\a ló g ic a la ta b la hash.
5 • «n l e t a b l a h ash n i n g ú n e le m e n t o q u e « J u n t e c o n x .
p u b lic f i n a l v o id v a c ia r { i 6
7 p u b i i c f i n a l v o i d e l i m i n a r i H a s h a b ie x i th r o w s E lem en to N o E n co n trad o
ta n a n y o A c tu a i ■ 0: 8 (
for( i n t i * Oj i < v e c t o r . l e n g t h : i-« i 9 in t p o n iclo n A ctu al * b u sc a rP o s( x i
v e cto r| 1 1 = n u il; 10 c o n f ir m a B u « c a r 1 p o s i c i o n A c t u a l . ' e l i m i n a r de
E x p lo ra cio n T ab .aH ash * ):
11 v e c to r I p o sic io n A c tu a l J.e sta A c tiv o * íalo e j
uro 19. 1 0 inlctaHzaciOn d e la tabta hasn 12 1
Figura 1 9 .1 2 Rutina o i im i n n t p a r a las tablas hash c o n exploración
' 3 u s c a u n e l e m e n t o orí a n a t a b l a h a s h .
' « p a ra n x o l e la m o n to a b u s c a r. 1 i ••
« r e tu r n e l e le m e n to q u e a j u s t a con e l b u scado . 2 ' I n s e r c ió n e n la t a b l a h a sh . S i e l e le m e n to ya e s t a en
« e x c e p t i o n E lem en to N o E n co n trad o h í no nay en l a tab la 3 • en ia ta b la , l o r e -r a p ia ia p o r e l nuevo« .« m o n to .
n io g u n e le m e n to q u e a j u s t é co n x. 4 • A p a ra » x «1 e le m e n t o a i n s e r t a r .
p u b l i c f i n a l H a ah ab le 5 '
6 p u b lic fin a l v o id In se rtar! H ash ab ie x )
b u s c a r < H a s h a b i e x i t h r o w s E ie x jen tG ÍJo E n c o n tra d o
7 (
8 !¡ I n s e r t a x como a c t i v o
in t po sx clcn A ctu al * bu scarP o si x
9 int p o s i c i o n A c t u a l = D u s c a r P o s t x >;
c o n f i r n a B u s c a r l p o a l c i o n A c t u a l . ' b u s c a r d e F . x p l o r a c j o n T a b . a H a s h ' )¡ 10 v e c t o r : p o s i C i o n A c t u a l J • new E n t r a d a H e a M x. tru e I;
r e t u r n v e c t o r | p o iú c io n A c tu a l ] .ele m e n to ;
11 i f i «•ta m a n y o A c tu a l < v e c to r. le r .g th / 2 l
12 re tu rn i
13
14 CÓDIGO DE REHASHING
No h a c e n a d a s : p o a lc i o n A c t u o l e x i s t e y e s t 4 a c t i v a .
En c a n o c o n t r a r i o , l a n r a u n a e x c e p c i ó n . 15 E n tia d aH a tth i I v a c t o r A n t i g u o • v ecto r i
* « p a r a n p c s l c l o n A c tu a l e l r e s u l t a d o ñ e l a lla m ad a a b u s c a r P n s . 16
17 / / c r o a u n a n u e v a t a b l a v a c i a c o n t amafio d o b l e
«param m en saje l a c ad e n a p a r a c o n s t r u i r la e x c e p c ió n .
18 c r e a r V e c to : l o ig u ie n te P r im o I 2 * v e c t o r A nt ig u o . le n g th I i;
• « e x c e p tio n E le m en tad o E n co n trad o s i l a c e ld a e s t a i n a c t i v a .
19 ta n a r.y o A c tu a l •
p r ív a t e f i n a l v o id c o n ! I rm aB u sca r l i n t p c a ic io n A C t u a l. 20
S t r i n g m e n s a je I th r o w s E le m en to N o E n co n tra d o 21 ; C o p ia la ta b la
lfi v e c to r l p o sic io n A ctu al } = n u i l || 23 : ' , ! r ' v ¿ « o r ° A n A g u0T I ' ] 0 ' ‘ ' n ' i T Ú >®uo I 1 1
v e c to rI p o sic io n A ctu al J.v sta A c tiv o fa lo » | 24 i n s e r t a r I v e cto rA r.r ig u o l i ¡ . e l e m e n t o >J
th r o w new E le m e n to N o E n c o n tr a d o ( m e n s a j e ); 25 )
Figuro 19.13 N utria d e inserción d e l a o t a s e d e las tabtas hash c o n exploración,
ro 19.11 M é to d o buscar d© la clase d e las ta b la s hash c o n oxpkxoctón q u e incluye ol có d ig o d e rehashmg.
1 / / I x p l o m , . n t « c » ó n r l e U n t a b l a . h a » h c o n e x p l o r a c i ó n c u a d r é 1C* S in e m b a rg o . I.i a g ru p a c ió n se c u n d a ría p ro d u c e u n a se p a ra c ió n m u c h o m e n o r «le
2 p u b ll c c l a s s T a b la E x p lo ia c io n C u a d r a t ic a * x te n d s E x p .o ra c io n T a b ia ifa s h
lo s re s u lta d o s te ó ric o s . L o s re s u lta d o s d e las sim u la c io n e s su g ie re n q u e . p o r lo g e
4 p ro te cte d f in a l In t b u s c a r P o s i H a s n a b l* x » n e ra l. s ó lo se in c re m e n ta e n I 2 e l n u m e ro d e in te n to s p o r b ú s q u e d a , y e s to só lo
lle g a a s u c e d e r e n ta b la s c o n facto res «le c a rg a e le v a d o s. L a F ig u ra 19.5 m u e s tra la
4 :n t c o lla io n - 0 ; d ife re n c ia e n tre la e x p lo ra c ió n lin e a l y la c u a d rá tic a . pomcnd«> d e m a n ifie sto q u e
J i n t p o s ic io n A c c u a l = x .h a s h < v e c t o r . le n g c h I; e l g ra d o d e a g ru p a c ió n e s m e n o r e n la e x p lo ra c ió n c u a d rá tic a q u e e n la lineal
E x iste n v a ria s té c n ic a s p a ra e lim in a r la a g ru p a c ió n s e c u n d a ria . 1.a m á s c o n o c i
’ w h r le t v e c t o r | p o a ic io n A c z ü a l J : = n u i l « 4,
d a e s e l dobU’ h a s h in g . q u e e m p le a u n a s e g u n d a f u n c ió n d e lo c a l i/a c ió n p a ra la
n f ' v e c t o r ! p o . ic io n A c f u a l | . e le m e n to .« * . 1 . I x ) ,
re s o lu c ió n d e c o n flic to s. M a s c o n c re ta m e n te , r c a h /a m o s in te n to s a d ista n c ia
!? p o s ic io n A c t u a l •= 2 • - - c o l i s i ó n - ; : H a s h y iX ). 2H a s h :i X ) y a s í s u c e s iv a m e n te . E sta se g u n d a fu n c ió n d e lo c a liz a c ió n
¡T i , ( p o s ic io n A c t u a l > , v e c t o r . le n g t h » d e b e re u n ir c ie rta s p ro p ie d a d e s ip o r e je m p lo , n o p u e d e d e v o lv e r 11). y d e b e m o s
jl p o s ic io n A c t u a l - = v e c t o r . l e n g t h :
a se g u ra r q u e p u e d e lle g a r a e x a m in a r to d a s las c e ld a s . U n a fu n c ió n c o m o
16 Hash^X) K (X m odA *). d o n d e K e s un p r im o m e n o r q u e M . g e n e ra lm e n te
|jj r e t u r n p o s ic io n A c t u a l: fu n c io n a rá b ie n . F l d o b le h a sh in g es m uy in te re s a n te te ó ric a m e n te h a b la n d o , y a
19 ) q u e p u e d e d e m o s tra rs e q u e ic a li/.a e l m ism o n u m e ro «le in te n to s q u e se o b tien en
e n e l a n á lisis a le a to rio te ó r ic o d e la e x p lo ra c ió n lin e a l. S in e m b a r g o , e s a lg o m á s
H g u ro 19.14 C la se q u e im p le m e n to la e x p lo ra c ió n c u a a r a t ic a , c o m p lic a d o d e im p le m e n ta r q u e la e x p lo ra c ió n c u a d rá tic a , y c o m o v e re m o s, a lg u
n o s d e su s d e ta lle s re q u ie re n e s p e c ia l a te n c ió n
A p a re n te m e n te n o e x is te n in g ú n a rg u m e n to d e p e s o p a ra n o e m p le a r e n la
L a in s e r e ió n ve r e a l iz a e n la lin e a 10. e n la q u e c o n s .r u ,m o v u n a n u e v a
p rá c tic a la e s tra te g ia d e e x p lo ra c ió n c u a d rá tic a , s a lv o e l g a s to q u e su p o n e m a n te
E n tra c to H a s h y la añ a d im o s a l v e rte r, O h v m e q u e ev lo so b resc rib e c u a lq u ie r valor
n e r la ta b la m e d io v acía . A d e m á s , e s te só lo se ría re le v a n te e n o tr o s le n g u a je s de
q u e a ju ste c o n * a lm a c e n a d o p re v ia m e m e . E n la lin e a 11 a ju s ta m o s c a a a n y o A r -
p ro g ra m a c ió n , d is tin to s a J a v a , e n lo s q u e e s p o s ib le q u e lo s e le m e n to s q u e a lm a
> le m im a m o s. a m e n o s q u e s e a n e c e sa rio re a liz a r u n a re e v a lu a c id n d e la fun-
c e n e m o s s e a n d e g ra n ta m a ñ o .
c ró n d e lo c a liz a tié n ( r e to s t ó ,* ) . A si. e l c ó d ig o r e a m e .m p le m e n ta e l reh a sh in e
2.
J L . C á rte r y M N . W e g m a n . « U n iv e rs a l C la s s e s o i H ash F u n c tio n s ..
J o u r n a l o f C o m p u te r a n d S y ste m S t i c rices 18 (1 9 7 9 ). 143-154.
M D ie t/le lb in g e r . A. R K arlin . K M e lh o m . F . M e v c r a u f d e f H e id c . H.
el montículo binario
R o h n e ii. y R . E . T a rja n . « D v n a m ic P e rfe c t H a sh in g : U p p e r a n d l.o u c r
B o tin d s» . S IA M J o u r n a l o n C om putáis! 2 3 (1 9 9 4 ). 7 38-761
3. R . i . E n b o d y y II C . D u . -D v n a m ic H a s h m e S c h e m e s -. C o m p u tm v S u r -
»rvA 2 0 1 1988). 8 5 -1 1 3 .
5. L J G u ib a s y E S /e m e r e d i. - T h e A n a ly sis o f D o u b le H a sh in g » . J o u r n a l
o f C o m p u te r a n d S y ste m S i l e n t e s 16 < 1978), 2 2 6 -2 7 4 . a c o la d e p rio rid a d e s u n a e s tru c tu ra d e d a to s fu n d a m e n ta l q u e s ó lo p e rm ite
13. A C . Y ao . -U n if o rm H a sh in g Is O p tim a l- . J o u r n a l o f th e A C M 32
1 1985). 6 8 7 -6 9 3 . 20.1 Id e as básicas
C o m o y a s e in d ic ó e n la S ecció n 6 .8 . la c o la d e p rio rid ad s o p o rta a c c e s o y e lim in a
ció n d e l e le m e n to m ín im o , u sa n d o , re sp e c tiv a m e n te . b u n c n iM in y e l í m i n a r M i n .
P o d ría m o s u s a r u n a lista e n la /a d a . lle v a n d o a c a b o la s in se rc io n e s p o r d e lu n te d e
la lista e n tie m p o c o n s ta n te , p e ro e n to n c e s e n c o n tr a r y / o e lim in a r e l e le m e n to m í
n im o re q u e riría u n r e c o r rid o lin e a l d e la lis ta . A lte rn a tiv a m e n te , p o d ría m e » o b li
g a r a q u e la lis ta e s tu v ie ra sie m p re o rd e n a d a , l o c u a l h a ría q u e e l Y
m u ta c ió n d e l e le m e n to m ín im o fu eran m á s b a ra to s, p e ro e n to n c e s las in se rc io n e s
s e ría n lin e a le s . . . .
O tra to rm a d e im p le m e n ta r la s c o la s d e p rio rid a d c o n siste e n u s a r u n a n x .i lu
n a rio d e b ú s q u e d a , e n e l q u e las d o s o p e ra c io n e s m e n c io n a d a s re q u ie re n , e n m e
d ia . u n tie m p o O iN lo e N ). S in e m b a r g o , e s ta e s h a b itu a lm e n te u n a m a la e le c c ió n .
p u e s n o rm a lm e n te la e n tra d a n o e s lo su fic ie n te m e n te a le a to ria . P o d ría m o s u sa r un
á rb o l b in a rio d e b ú sq u e d a e q u ilib ra d o , p e ro la s e s tru c tu ra s e s tu d ia d a s e n e l C a p í
tu lo IS so n te d io s a s d e im p le m c n ta r y e n la p rá c tic a re s u lta n p o c o e fic ie n te s. (S in
e m b a rg o , e n e l C a p ítu lo 21 se e s tu d ia u n a e s tru c tu ra d e d a to s , e l á rb o l d e e n s a n
c h a m ie n to . q u e h a d e m o s tra d o se r u n a b u e n a a lte rn a tiv a e n a lg u n a s s itu a c io n e s.)
P u e s to q u e la c o la d e p rio rid a d s o p o rta so la m e n te a lg u n a s d e la s o p e ra c io n e s
d e lo s á rb o le s d e b ú sq u e d a , n o d e b e ría re s u lta r m á s c o s to s a d e im p le m c n ta r que
esto s. P o r o tra p a rte , la c o la d e p rio rid a d e s m á s p o te n te q u e u n a s im p le c o la , p o r
1
q u e p o d e m o s im p le m c n ta r u n a c o la u s a n d o u n a c o la d e p rio rid a d d e la sig u ie n te H V 10
m anera: in s e rta m o s c a d a e le m e n to j u n t o c o n u n a in d ic a c ió n d e l m o m e n to d e in
A II C 1> / <¡ H /
se rc ió n . c o n lo q u e u n a o p e ra c ió n e l i m i n a r M i n e n b a s e a l m o m e n to d e in s e r
(I 1 3 4 5 6 7 8 V 10 11 12 13
c ió n . im p le m e n ta e n re a lid a d u n a o p e ra c ió n q u i t a r P r ¿ m e r o . F.n c o n se c u e n c ia ,
es ra /o n a b le e s p e r a r q u e la im p le m e n ta c ió n te n g a p ro p ie d a d e s in te rm e d ia s éntre Figura 20.1 Árbot binarlo co m p le to v su representación m ed ian te un vector
la s d e las c o la s y las d e los á rb o le s d e b ú sq u e d a , lis to ú ltim o s e c o n sig u e c o n el
m o n tíc u lo b in a rio , e l cu al:
E n se g u n d o lu g a r, p e r o n o p o r e llo m e n o s im p o rta n te , e n u n á rb o l b in a rio Ei
• se p u e d e im p le m c n ta r u s a n d o u n s im p le v e c to r (a l ig u a l q u e la c o la ). c o m p le to n o se n e c e sita n re fe re n c ia s a lo s h ijo s I z q u i e r d o y d e r e c h o , y a q u e . «
• s o p o rta i n s e r t a r y e l i m i n a r M i n e n tie m p o 0 ( l o g V ) e n e l c a s o p e o r (u n c o m o se m u e s tra e n la F ig u ra 2 0 .1 . p o d e m o s re p re s e n ta rlo sin a m b ig ü e d a d a lm a
té rm in o m e d io e n tr e e l re n d im ie n to d e la c o la y e l d e l á rb o l b in a rio d e b ú s c e n a n d o s u re c o rrid o p o r n iv e le s e n u n v e c to r. C o lo c a m o s la ra íz e n la p o sic ió n I
q u e d a ), y ( l a p o sic ió n 0 se d e ja lib re p o r u n a ra z ó n q u e se e x p lic a rá m á s a d e la n te ). N e c e sita
• so p o rta i n s e r t a r e n tie m p o c o n s ta n te e n e l c a s o m e d io y b u s c a r M i n en m o s ta m b ié n m a n te n e r un e n te ro q u e n o s d ic e c u á n to s n o d o s h a y a c tu a lm e n te e n
tie m p o c o n s ta n te e n e l c a s o p e o r (c o m o la c o la ). e l á rb o l. E n to n c e s, d a d o u n e le m e n to s itu a d o e n la p o s ic ió n i d e l v e c to r, s a b e m o s
q u e s u h ijo iz q u ie rd o se e n c u e n tra e n la p o sic ió n 2 i. a u n q u e si d ic h a c a n tid a d s o
A l ig u al q u e lo s á rb o le s d e b ú sq u e d a e q u ilib ra d o s d e l C a p ítu lo 18. e l m o n tíc u
b re p a s a e l n ú m e ro d e n o d o s e n e l á rb o l, e n to n c e s sa b e m o s q u e n o e x is te ta l h ijo
lo b in a rio tie n e d o s p ro p ie d a d e s, u n a re la c io n a d a c o n su e s tru c tu ra y o tr a re la c io
iz q u ie rd o . A n á lo g a m e n te , e l h ijo d e re c h o se e n c u e n tra in m e d ia ta m e n te a c o n ti
n a d a c o n la o rd e n a c ió n . Y a l ig u a l q u e lo s á rb o le s d e b ú sq u e d a e q u ilib ra d o s, una
n u a c ió n d e l h ijo iz q u ie rd o , e s d e c ir, e n la p o sic ió n 2 1 + I. d e n u e v o c o m p ro b á n d o
o p e ra c ió n so b re u n m o n tíc u lo b in a rio p u e d e d e s tru ir a lg u n a d e e s ta s p ro p ie d a d e s,
s e s u e x is te n c ia m e d ia n te u n a c o m p a r a c ió n c o n e l n ú m e ro d e ruidos d e l á rb o l. F i
p o r lo q u e la a p lic a c ió n d e u n a o p e ra c ió n so b re un m o n tíc u lo b in a rio n o d e b e te r
n a lm e n te . su p a d re s e e n c u e n tra e n la p o sic ió n \ j ¡ 2 \ . O b se rv e m o s q u e to d o s los
m in a r h a s ta q u e a m b a s p ro p ie d a d e s se re s ta b le z c a n , lo c u a l, a fo rtu n a d a m e n te , r e
n o d o s, e x c e p to la ra íz, tie n e n u n p adre. S i la raíz, tu v iera un padre, e l c á lc u lo lo s i
s u lta fácil d e c o n se g u ir. (F n e s te c a p ítu lo , e l té rm in o m o n tíc u lo s e re fie re sie m p re
tu a ría e n la p o sició n 0. P o r e s o reserv a m o s d ic h a p o sició n p a ra c o lo c a r u n e le m e n to
a l m o n tíc u lo b in a rio .)
fa lso q u e sirv a c o m o p a d re d e la ra íz , lo q u e sim p lific a rá a lg u n a s o p e ra c io n e s.
El u s o d e un v e c to r p a ra a lm a c e n a r u n á rb o l re c ib e e l n o m b re d e re p r e se n ta - E
c ió n im p líc ita . C o m o r e s u lta d o d e u s a r e s ta im p le m e n ta c ió n . n o so la m e n te n o so n
20.1.1 Propiedad estructural n e c e sa ria s la s re fe re n c ia s a lo s h ijo s, s in o q u e a d e m á s la s o p e ra c io n e s d e re c o rrid o f
d e lo s á rb o le s so n m u y s im p le s y m u y p ro b a b le m e n te lo b a sta n te rá p id a s e n la ,
L a ú n ic a e s tru c tu ra q u e p ro p o rc io n a c o ta s d e tie m p o lo g a rítm ic o s e s e l á rb o l, p o r m a y o ría d e lo s c o m p u ta d o re s . E l m o n tíc u lo c o n s is tirá e n u n v e c to r d e o b je to s y u n i
lo q u e p a re c e n atu ral q u e e l m o n tíc u lo o rg a n ic e s u s d a to s c o m o tal. C o m o q u e re e n te ro q u e re p re s e n ta e l ta m a ñ o actu al d e l m o n tíc u lo .
m o s q u e la c o ta lo g a rítm ic a se m a n te n g a e n e l c a s o pe<w. e l á rb o l d e b e ría e s ta r E n e s te c a p ítu lo , p a ra h a c e r lo s a lg o ritm o s m á s se n c illo s d e v is u a liz a r, los
e q u ilib ra d o . m o n tíc u lo s se d ib u ja n c o m o á rb o le s, a u n q u e la im p le m e n ta c ió n d e e sto s á rb o le s
U n lirh o l b in a r io c o m p le to e s un á rb o l c o m p le ta m e n te llen o , c o n la e x c e p c ió n u tiliz a rá un v e c to r. N o u sa m o s la re p re se n ta c ió n im p líc ita p a ra to d o s lo s á rb o le s
d e l n iv el in ferio r, q u e d e b e lle n a rse d e iz q u ie rd a a d e re c h a . L a c a ra c te rístic a d istin ti d e b ú sq u e d a , y a q u e e s to s u p o n d ría a lg u n o s p ro b le m a s a d ic io n a le s , q u e s e e s b o
v a d e l á rb o l b in a rio c o m p le to e s q u e n o fa ltan n o d o s e n e l á rb o l. E n la F ig u ra 20.1 z a n e n e l E je rc ic io 2 0 8.
s e m u e s tra u n e je m p lo d e árb o l b in a rio c o m p le to c o n d ie z e le m e n to s . S i e l n o d o J
fu e ra h ijo d e re c h o d e E . e l á rb o l y a n o s e r ía c o m p le to , p u e s fa lta ría u n n o d o .
L o s á rb o le s c o m p le to s tie n e n a lg u n a s p ro p ie d a d e s q u e s o n m u y ú tile s. E n p ri 20.1.2 Propiedad d e ordenación d e los montículos
m e r lu g a r, su a ltu ra (lo n g itu d d e l c a m in o m á s la rg o ) e s a lo s u m o ) lo g ,V J. E s to es
a sí. p o rq u e u n á rb o l c o m p le to d e a ltu ra I I tie n e e n tr e 2 " y 2 " ' 1 - I n o d o s. E sto L a p ro p ie d a d q u e p e rm ite re a liz a r rá p id a m e n te o p e ra c io n e s so b re lo s m o n tíc u lo s
s ig n ific a q u e p o d e m o s e s p e r a r u n c o m p o rta m ie n to lo g a rítm ic o e n e l c a s o p e o r, si es la p r o p ie d a d d e o rd e n a c ió n d e lo s m o n tíc u lo s. P u e s to q u e q u e re m o s e n c o n tra r
re s trin g im o s lo s c a m b ia s e n la e s tru c tu ra a lo s c a m in o s d e la ra íz a u n a h o j a r á p id a m e n te e l e le m e n to m ín im o , te n d r ía s e n tid o q u e e l e le m e n to m á s p e q u e ñ o se
I peckage E stru c tu ra s D a to si
6 i f | e s V a c ia ! > )
' th ro w new D e s b o r d a ra ie n to ln ío r lo r ( -M o n tíc u lo v a c ío * ); 20.2.1 insertar
•0 i f t Io r d e n a d o )
j* a r r e g la r M o n ti c u lo l );
12 r e t u r n v e c t o r ! 1 ]; P a ra in s e rta r un e le m e n to Y e n e l m o n tíc u lo , p rim e ro d e b e m o s a ñ a d ir u n n o d o al
á rb o l L a ú n ic a o p c ió n e s c re a r u n h u e c o e n la s ig u ie n te p o s ic ió n d is p o n ib le ; e n
Figura 20.6 R u tin a b u s c a r M i n . c a s o c o n tr a n o . e l á rb o l n o se ria c o m p le to y v io la ría m o s la p ro p ie d a d e stru c tu ra l.
S i .V \ c p u e d e c o lo c a r e n e s e h u e c o sin v io la r la p ro p ie d a d d c o rd e n a c ió n d e l m o n 1 / **
2 * M étodo p r i v a d o q u e d u p l i c a e l v e c to r cuando e s t a lle n o ,
tíc u lo . lo c o lo c a m o s a h í y h e m o s te rm in a d o S i n o . d e s p la z a m o s e l e le m e n to s itu a
d o e n e l p a d re d e l n o d o a d ic h o n o d o , m o v ie n d o a s í e l h u e c o h a c ia la r a í /. C o n ti p rív a te v o id corp ro b a ría n <
n u a m o s c o n e s te p ro c e s o hax ta q u e s e p u e d a c o lo c a r X e n e l h u ec o . L a F ig u ra 2 0 .9
m u e s tra q u e p a ra in s e rta r 14. c re a rn o s u n h u e c o e n la sig u ie n te p o sic ió n d is p o n i 1i < t a m A c t u a l »= v e c t o r . l e n g t h - 1 i
b le . C o m o in s e rta r 14 e n e l h u e c o , p ro d u c iría u n a v io la c ió n d e l o rd e n , c o lo c a m o s
31 e n e l h u e c o l ‘n la F ig u ra 2 0 .1 0 s e c o n tin ú a c o n e s ta e s tra te g ia h a sta e n c o n tra r Compa r a b l e I 1 v e c t o r A n t » v e c t o r ;
o b ten erV ecto r* ta s A c tu a l * 2
la p o s ic ió n c o rre c ta p a ra 14.
fo r < i n t i • 0; 1 « v e c to rA n t. le n g th ; l •• »
L la m a m o s a e s ta e s tra te g ia g e n e ra l r e flo ta m ia u o . p o rq u e e l n u e v o e le m e n to e s
v e c t o r I i I = v e c c o r A n t i i J:
re d o r a d o h a s ta e n c o n tra r la p o s ic ió n a d e c u a d a . L a ru tin a . c o m p r o b a r T a m . m o s
tra d a e n la F ig u ra 2 0 .1 1. d u p lic a rá e l ta m a ñ o d e l v e c to r c u a n d o e llo sea n e c e sa rio .
I-a F ig u ra 2 0 .1 2 m u e s tra las ru tin a s q u e a ñ a d e n e le m e n to s a l m o n tíc u lo l^ i ru tin a
Figura 20 11 M éto d o pnvodo c o i r p r o b a r T a m q u e d o b la e l ta m a ñ o d e l vecto r s
i n t r o d u c i r e s b ie n c o rta : s im p le m e n te a ñ a d e e l n u e v o e le m e n to >: e n la sig u ie n
e s necesano
te p o s ic ió n d is p o n ib le . S i se p ro d u c e u n a v io la c ió n d e l o rd e n , se le a sig n a f a l s e a
o r d e n a d o . F l m é to d o i n s e r t a r im p le m e n ta e l re ílo ta m ie n to u s a n d o un b u c le .
L a in s tru c c ió n d e la lín e a 3 0 in c re m e n ta e l ta m a ñ o a c tu a l y c o lo c a e l h u e c o e n el
n o d o q u e a c a b a m o s d e a ñ a d ir F .|e c u ta in o s e l b u c le d e la lín e a 31 m ie n tra s e l e le
m e n to d e l n o d o p a d re s e a m a y o r q u e x . la r lín e a 32 m u e v e e l e le m e n to d e l p a d re 1 /••
2 • I n s e r t a e n l a c o l a d e p r i o r i d a d . s i n m an ten er
a l h u e c o tía s lo c u a l la te rc e ra c o m p o n e n te d e l h u e le f o r re lió la e l h u e c o h a c ia el 3 • e l o rd e n d e l m o n tíc u lo . Se p e rm ite n e le m e n to s d u p lic a d o * .
p a d re . C u a n d o e l b u c le term in a, la lín e a 3 3 c o lo c a x e n e l h u e c o . E l c e n tin e la si 4 • 9param x e l e le m e n to a i n s e r t a r .
tu a d o e n la p o s ic ió n O g a ra n tiz a la te rm in a c ió n d e l b u c le f o r . 5 *
E l tie m p o n e c e s a rio p a ra re a liz a r la in s e rc ió n p rx lría s e r O tlo g N ) si e l e le m e n 6 p u b lic v o id I n t r o d u c i r ( C o * * > ara b le x I
t o a in s e rta r fu e ra e l n u e v o m ín im o , p o rq u e e n tal c a s o se re d o r a ría h a s ta la raíz. 7 {
F.n m e d ia , e l re flo ta m ie n to te rm in a p ro n to : s e h a d e m o s tra d o q u e e n m e d ia se re 8 c c-mp r o b a r T a n ( I :
q u ie re n 2 .6 c o m p a ra c io n e s p a ra lle v a r a c a b o u n a in s e rc ió n , d e m o d o q u e e n m e 9 v e c t o r I * * tam A ctu al I • x;
10 i f l x .x e n o rQ v e i v e c t o r ( tan A ctu al / 2 1 » I
d ia i n s e r t a r m u e v e u n e le m e n to 1.6 n iv e le s.
11 ord en ad o • fa lse :
12 )
13
14 ••
15 * In se rta en la c o la d e p r io rid a d , m a n te n ie n d o .1 orden.
16 • Se p e r m ite n e le m e n to s d u p lic a d o s .
17 • 9p a r a n x e l e l e m e n t o a i n s e r t a r .
18 •/
19 p u b lic v o id i n s e r t a r I Coir^w» r a b i e x •
20 I
21 ií< !o rd e n ad o )
22
Figuro 20.9 intento d e n s e rc o n d e 14. cre a n d o e l h u e c o y botándolo h a c ia arriba 23 i n t r o d u c i r ( x ):
24
25
26
27 concrobarT anl >:
28
29 // Reflotamiento
30 i n t h u e c o -- * « t a m A c t u a l ;
31 f o r . ; x .m en o rQ u e< v e c t o r ! hueco / 2 I » : H ueco / • 2 I
32 v e c to r I hueco l - v e c t o r 1 hueco
33 v e c t o r ! h u e c o ] * x;
34 )
Figuro 20 10 Los dos pasos a u e fo lia n p o ra Insertar 14 e n e l m ontículo d o lo figura
anterior Figuro 20.12 M é to d o s introducir e insertar
20.2.2 e i i m i n a r M i n
1
2 • M étodo, i n t e r n o p a r a h u n d i r e n e l m o n t í c u l o -
3 • « p a ra m h u e c o e l í n d i c e d o n d e c o m ie n z a «1 h u n d im ie n to .
4 •/
5 p rív ate v o id h u n d ir! in t hueco »
6 {
7 in t h ijo ;
8 C o m p a r a b l e tm p « v e c t o r ( h u o c o J ;
Figuro 20.13 C re a ció n d e l h u e c o en la tea c u a n d o se elim ina e l elem en to mínimo 9
10 f o r < r h u e c o * 2 <■ t a m A c t u a l ; h u e c o » h i j o >
11 (
12 h ijo = hueco •
13 i f l h L j o l » t a m A c t u a l s.u v e c t o r l h i j o • 1 \.
14 m encrQ uel v e c t o r 1 h i j o I ) I
15 h ijo * » ;
16 i f ( v e c t o r I h i j o j .m e n o r Q u e l tm p ) I
17 v e c to rl hueco 1 = v e c to r! h i jo ];
18 e ls e
19 break;
20 )
21 v e c to r! hueco I = tm p;
22 )
Figuro 20.14 Los dos pasos siguientes d e eiiminarMin. Figura 20.17 M é t o d o h u n d i r usodo e n e i i m i n a r M i n y a r r e g l a r M o n t i c u l o
E n e l c a s o tic o l i m i n a i M i n . h u e c o o s la rá e n la p o s ic ió n I 1:1 h u e le f o r de j R e s t a b l e c e l a p r o p i e d a d d e o r d e n a c i ó n d e l m o n tí c u lo t r a s una
r
la lín e a 10 te rm in a c u a n d o ik> hay h ijo iz q u ie rd o . L a te rc e ra c o m p o n e n te m u e v e el 3 •“ i . d e o p e r a c i ó n » » i n t r o d u c i r . Sej e c u t a en t i e r ^ lin e a l.
h u e c o a l h ijo . E n las lín e a s I 3 a 15 s e b u s c a e l h ijo c o n e l e le m e n to m á s pcqucA n
N ó tese q u e h e m o s d e s e r c u id a d o s o s p o rq u e e l ú ltim o n o d o d e u n m o n tíc u lo de 5p r í v a t e v o i d a r r e g l a r M o n t i c u l o t I
Lim uílo p a r e s h ijo ú n ic o , p o r lo q u e n o s ie m p re p o d e m o s a s u m ir q u e h a y d o s h i
jo s . L n base a e llo re a liz a m o s e l te st d e la lín e a 13. 7 £or< in t i = tam A c tu al 2; i > 0: 1-- 1
9 o r d e n a d o = true;
10 )
20.3 arreglarMonticulo: construcción Figuro 20.1? im p iem entooón d e l m étodo «neal a r r e g l a r M o n t i c u l o
en tiem po lineal del montículo
I ¡i o p e ra c ió n a r r o g i a r M o n t l e u . o to m a u n á rb o l c o m p le to sin o rd e n y re s ta b le
c e e l m ism o . Q u e re m o s q u e s e a u n a o p e ra c ió n lin e a l, p u e s e n ta l c a s o s e p o d rían
h a c e r .V in s e rc io n e s e n tie m p o O lV lo g V ). E s p e ra m o s p o d e r a lc a n z a r u n tie m p o
O i N ) p o rq u e N in s e rc io n e s su c e s iv a s re q u ie re n u n tie m p o to ta l O i N ) e n m ed ia,
b a s á n d o n o s e n e l re s u lta d o d e l fin a l d e la S e c c ió n 20.2.1 N in se rc io n e s s u c e s o as
llev an a c a b o m á s tra b a jo d e lo q u e n e c e sita m o s, y a q u e tra s c a d a in s e rc ió n se
m a n tie n e e l o rd e n , m ie n tra s q u e a h o ra e s to e s so la m e n te n e c e sa rio e n u n in stan te
c o n creto .
1.a s o lu c ió n a b stra c ta m á s s e n c illa se o b tie n e v ie n d o e l m o n tíc u lo c o m o una
Figuro 20.20 M o n tícu lo « * » (olooqulerdo,: y noy lo «am ad o a h u n d r r ( 7 > ( a *>
e stru c tu ra d e fin id a re c u rsiv n m e n te . c o m o se m u e s tra e n la F ig u ra 2 0 IX C o m e n
d e re c h a )
z a re m o s p o r lla m a r rc c u r s iv a m c n te a a r r e g l a r M o n t i c u l o s o b re lo s su b m o n -
tíc u lm iz q u ie rd o y d e r e c h o T ra s e llo , te n e m o s g a r a n tiz a d o q u e la p ro p ie d a d de
o r d e n a c ió n d e l m o n tíc u lo se m a n tie n e e n to d a s p a n e s e x c e p to , q u iz á s , e n la ra íz.
P o d e m o s e s ta b le c e r e l o r d e n c o m p le ta m e n te lla m a n d o a h u n d i r c o n l.i ra íz c o
m o a rg u m e n to . L a ru tin a re c u rs iv a tr a b a ja g a ra n tiz a n d o q u e c u a n d o a p lic a m o s
h u n d i r ( i ) . to d o s lo s d e sc e n d ie n te s d e l n o d o i h a n sid o p ro c e s a d o s p o r la c o rr e s
p o n d ie n te lla m a d a re c u rs iv a j h u n d i r . S in e m b a r g o , la re c u rsió n ik » e s n e c e sa ria ,
c o m o s e h ace e v id e n te a p a rtir d e l c o m e n ta rio s ig u ie n te : si lla m a m o s a h u n d i r
so b re c a d a n o d o e n s e n tid o in v e rs o a l re c o rrid o p o r n iv e le s , c u a n d o re a lic e m o s la
lla m a d a c o n i se h a b rá n p ro c e s a d o to d o s |«>s d e sc e n d ie n te s d e l n o d o i c o n una
lla m a d a a h u n d i r . E s to n o s c o n d u c e a u n a lg o ritm o in c re íb le m e n te sim p le p ara
a r r e g l a r H o n t i c u l o . q u e se m u e s tra e n la F ig u ra 2 0 .1 9 . O b se rv e m o s q u e no
Figura 20.21 M ontículo "c u o « am a d a o h u n d i r (6 1 ( a lo izquierda) v "o s la «o-
h a ce ta ita e je c u ta r h u n d i r so b re la s h o ja s , p o r lo q u e c o m e n z a m o s p o r e l n o d o de m o a o a h u n d i r (5 ) ( a la d erech o ).
m a y o r ín d ic e q u e n o s e a u n a hoja.
E l p rim e r á rb o l d e la F ig u ra 2 0 2 0 e s e l á rb o l s in o rd e n a r. L o s «tiros s ie te á r b o
le s e n las F ig u ra s 2 0 .2 0 a 2 0 23 m u e s tra n e l re s u lta d o d e c a d a u n a d e la s sie te lia-
m u d as a h u n d i r. C a d a lín e a p u n te a d a %c c o rr e s p o n d e c o n d o s c o m p a ra c io n e s : una
p ara b u s c a r e l h ijo m e n o r y la o tra p a ra c o m p a r a r e l h ijo m e n o r c o n e l n o d o O b
t e n e m o s q u e h a y so la m e n te d ie z lín e a s p u n te a d a s e n e l a lg o r itm o c o m p le to <p»*-
d ría h a b e r h a b id o s ó lo u n a m á s), lo q u e se c o rre s p o n d e c o n 2 0 c o m p a ra c io n e s .
P a ra a c o ta r e l tie m p o d e e je c u c ió n d e a r r e g l a r M o n t i c u l o . d e b e m o s a c o ta r
F ig u ro 2 0 2 4 M a rco d o O© la s aristas izquierdas p a ra los nodos d e altu ra 1
e l n ú m e ro d e lín e a s p u n te a d a s, lo c u a l s e p u e d e c o n s e g u ir c a lc u la n d o la s u m a d e
la s a ltu ra s d e U nios lo s n o d o s d e l m o n tíc u lo , q u e e s ig u al a l m á x im o n ú m e ro d e
¿ lin e a s p u n te a d a s E s d e e s p e ra r q u e e s te n ú m e ro x ra p e q u e ñ o p o rq u e la m ita d d e
lo s n o d o s so n h o ja s , las c u a le s tie n e n a ltu ra 0 . y u n a c u a rta p a n e tie n e a ltu ra I .
L u e g o , so la m e n te u n a c u a r ta p a rte d e lo s n o d o s (lo s q u e n o e s tá n in c lu id o s e n los
d o s c a s o s a n te rio re s) p u e d e n c o n tr ib u ir e n m á s d e I u n id a d d e altu ra. E n p a rtic u
la r. l u y so la m e n te u n n o d o q u e c o n trib u y e c o n la m á x im a a ltu ra , [ lo g .V J.
P a ra o b te n e r u n a c o ta d e tie m p o lin e a l p a ra a r r e g l a r M a n t i c u l o . n ecesita-
k m o \ d e m o s tra r q u e la s u m a d e la s a ltu ra s d e lo s n o d o s d e u n á rb o l b in a rio c o m p le
to e s rx .V ). E s to sc d e m u e s tra e n e l T e o re m a 20.1 D e m o stra m o s la c o ta p a ra á r
b o le s p e rfe c to s u s a n d o u n a rg u m e n to d e m a rcad o .
/W < > u n tirl*>l h iiu ir io p e r fe c to d e a ltu r a I I q u e c o n tie n e N ■ 2 H ' 1 I F ig u ra 20.25 M a rco d o d e la prim era arista e q u e rd a y d e la d e re c h o situado a
n o d o s, s e c u m p le q u e ¡a surna d e a ltu r a s d e s u s n o d o s e s N - H - I . co n tin u ació n , p a ra los nodos d e altura 2
I \a m o s u n a r g u m e n to d e m a re a d o d e l á r lx >1 ( T a m b ié n se ¡u n iría h a c e r un
c a lc u lo m á s d ir e c to u s a n d o la fu e r z a b r u ta , c o m o e n e l E je r c ic io 20. 10.1
P a ra c a d a n o d o e n e l á r b o l c o n a ltu r a li. m a n a m o s h ari st as d e l á r b o l en
la sig u ie n te fo rm a , b a ja m o s p o r hi a r is ta izi/u ie rd a y d e s p u é s so la m e n te
¡*or a rista s d e re c h a s , m a n a n d o c a d a a r is ta p o r la q u e p a sa m o s. U n e je m
p l o n o s l o d a un á r b o l /le r fe c to d e a ltu r a 4 t x n n o d o s d e a ltu r a I tie n e n su
a n s i a izq u ie rd a m a rca d a , c o m o s e m u e str a e n la F ig u ra 20.24. D esp u és,
lo s n o d o s d e a ltu ra 2 tie n e n m a n a d a u n a a r is ta iz q u ie rd a y lu e g o u n a d e
r e c h a h a c ia a b a jo e n e l á rb o l, lo c u a l se m u e s tr a e n la F ig u ra 2 0 .2 5 . F.n la
F ig u ra 2 0 .2 b . s e m a rc a n tr e s a rista s p*ira c a d a n o d o d e a ltu ra la p r im e
r a e.s l a a r is ta iz q u ie rd a q u e sa le d e l m u lo , v d e s p u é s la s a n s i a s d e re c h a s
e n e l c a m in o h a c ia a b a jo e n e l á rb o l. F in a lm e n te , e n la F ig u ra 2 0 .2 7 ve
m o s q u e se han m a r c a d o 4 a rista s : la iz q u ie rd a q u e sale d c l n o d o y d e s F ig u ra 2 0 2 6 M a rc a d o d e la prim era arista i/qiáerda y d e las dos aristas doro
p u é s la s tr e s d e r e c h a s sig u ie n te s e n e l c a m á u • h a c ia a b a jo e n e l á rb o l. ch a s situadas a co n tin u ació n , o o ra los n o d o s d e altura i
1. In se rta r c a d a e le m e n to e n u n m o n tíc u lo b in ario .
2. E x tra e r c a d a e le m e n to lla m a n d o a e i i m i n a r M i n X v e c e s . E l re s u lta d o
e s tá o rd e n a d o .
1. i n t r o d u c i r c a d a e le m e n to e n un m o n tíc u lo b in ario .
2. A p lic a r a r r e g l a r M o n t i c u l o .
3. L la m a r u e i i m i n a r M i n N v eces: lo s e le m e n to s sa ld rá n d e l m o n tíc u lo e n
o rd e n
ra c ió n . S i u sá ra m o s á rb o le s g e n e ra le s c o n n o d o s c o n e c ta d o s m e d ia n te re fe re n c ia s e i i m i n a r M i n . lo s e le m e n to s e n o rd e n d e c r e c ie n te . S i q u e re m o s e l v e c to r e n o r - ^
a lo s h ijo s , p o d ría m o s re d u c ir la c o ta a c o s te lo g a rítm ic o p o r o p e ra c ió n . L a o p e ra d e n c re c ie n te , p o d e m o s c a m b ia r la p ro p ie d a d d e o rd e n a c ió n d e fo rm a q u e c ad a
c ió n d e m e z c la s e u s a e n e l d is e ñ o a v a n z a d o d e a lg o ritm o s. e le m e n to p a d re s e a m a y o r q u e sus h ijo s . E n tal c a s o te n d ría m o s u n m o n tíc u lo m u - CI
x im a l. P o r e je m p lo , su p o n g a m o s q u e q u e re m o s o rd e n a r la s e c u e n c ia 5 9 . 3 6 . 5 8 .
2 1 . 4 1 . 9 7 . 3 1 . 16. 2 6 . 5 3 . D e sp u é s d e h a b e r in tro d u c id o lo s e le m e n to s e n e l m o n
20.5 O rd en ació n interna: m étodo del montículo tíc u lo y d e h a b e r a p lic a d o a r r e g l a r M o n t i c u l o . o b te n e m o s lo re f le ja d o e n la F i
g u ra 2 0 .2 8 . (O b se rv e m o s q u e e n e s te c a s o n o h a y c e n tin e la : a su m im o s q u e lo s d a
S e p u e d e u s a r u n a c o la d e p rio rid a d p a ra o rd e n a r ;V e le m e n to s d e la s ig u ie n te to s c o m ie n z a n e n la p o s ic ió n 0. c o m o e s h a b itu al e n o tr o s a lg o ritm o s de
fo rm a: o rd e n a c ió n d e l C a p itu lo 8.»
q- 53 s•> 26 41 sx 'i 16 21 Vi
10 II 12 13
Figuro 20.28 M ontícU os m a x im o l fras la a p lic a c ió n a e a r r e g l a r M o n t i c u i o . Figura 20.30 M ontículo después d e la seg undo a p llc o c ió n d e e l im i n arM ax .
H a s ta e l m o m e n to , to d o s lo s a lg o ritm o s d e o rd e n a c ió n e x a m in a d o s re q u ie re n q u e
la e n tra d a q u e p a e n la m e m o ria p rin c ip a l. S in e m b a rg o , h a y a p lic a c io n e s p a ra las
q u e la e n tr a d a e s d e m a s ia d o g ra n d e p a ra se r c a rg a rd a c o m p le ta e n m e m o ria . E sta
s e c c ió n e s tu d ia a lg o ritm o s d e o rd e n a c ió n e x t e r na , d is e ñ a d o s p a ra tra ta r e n tra d a s
Figuro 20.29 M ontículo después d e la p rim era a p llc o c ió n d e e l i m i n a r M a x d e g ra n tam añ o .
20.6.1 Por q u é n ecesitam o s nuevos algoritmos e je m p lo d e l S h e lls o rt. luí c o n fig u ra c ió n in icial se- m u e s tra e n la F ig u ra 2 0 .3 2 . S i
M = 3. d e s p u é s d e c o n s tru ir las c a rre ra s, las c in ta s c o n te n d rá n los d a to s c o m o se
Lu m a y o r p a rle J e lo s a lg o ritm o s J e o rJ c n a c ió n in te rn a to m a n v e n ta ja J e l h e c h o m u e s tra e n la F ig u ra 20.33.
J e q u e se p u e d e a c c e d e r d ire c ta m e n te a la m e m o ria E l m é to d o S h e lls o rt c o m p ara A h o ra f í I > B 2 c o n tie n e n un g ru p o d e c a rre ra s. T o m a m o s las p rim e ra s c a rre ro s
lo s e le m e n to s v ( i | y v | i - d e s p l e n u n a u n id a d d e tie m p o . E l m é to d o J e l m o n tí d e c a d a c in ta , las m e /c la m o s y e s c rib im o s e l re s u lta d o , q u e e s u n a c a rr e ra e l d o b le
c u lo c o m p a ra v [ i | y v [ h i j o = i * 2 1 e n u n a u n id a d d e tie m p o d e la rg a , e n 4 1 . D e s p u é s to m a m o s la sig u ie n te c a rre ra d e las d o s c in ta s , las m e z
I J a lg o ritm o d e o rd e n a c ió n ráp id a, c o n s e le c c ió n d e l p is ó te m e d ia n te la m e d ia c la m o s v e s c rib im o s e l resultad*» e n 4 2 . C o n tin u a m o s c o n e s te p ro c e s o , a lte rn a n d o
n a d e tres. req u ie re la c o m p a ra c ió n d e v fp r i m e r o ] . v I c e n t r o ] y v [ u l t im o I en la s a lid a s o b r e 4 1 y 4 2 h a s ta q u e o b ie n « I o b ie n H2 e s té v a c ía . E n e s te p u n to , o
un n u m e ro c o n s ta n te d e u n id a d e s d e tie m p o . S i la e n tra d a s e e n c u e n tra e n u n a c in b ie n la s d o s e s tá n v a c ía s o h a y u n a (p ro b a b le m e n te c o rta ) c a rre ra restan te . Pin este
ta. to d a s e s a s o p e ra c io n e s p ie rd e n la e fic ie n c ia re q u e rid a , p u e s so la m e n te p o d e ú ltim o c a s o , c o p ia m o s e s ta c u n e r a e n la c in ta a p ro p ia d a . R e b o h in a m o s to d a s las
m o s a c c e d e r a lo s e le m e n to s e n u n a c in ta d e fo rm a se c u e n c ia l In c lu so s i lo s d a to s c in ta s y re p e lim o s lo s m is m o s p a so s, e s ta v e / u s a n d o la s c in ta s 4 c o m o e n tra d a y
e stán e n un d is c o , hay u n a n o ta b le p é rd id a d e e fic ie n c ia e n la p rá c tic a d e b id o al la s H c o m o s a lid a . E s to n o s c o n d u c irá a c a rre ra s d e lo n g itu d 4.V/. C o n tin u a m o s c o n
re tra so p ro d u c id o p o r e l n e c e sa rio g iro d e l d is c o y e l m o v im ie n to d e la c a b e /a e s te p ro c e s o h a s ta o b te n e r u n a c a rr e ra d e lo n g itu d V . e n c u y o m o m e n to la c a rre ra
h asta e l lu g ar a d e c u a d o . re p re se n ta l a e n tra d a o rd e n a d a . L a s F ig u ra s 2 0 .3 4 a 2 0 .3 6 m u e s tra n c ó m o trab aja
P ara ver lo le n to s q u e p u e d e n lle g a r a se r lo s a c c e s o s e x te rn o s, p o d ría m o s e ste p ro c e s o s o b re n u e s tro e je m p lo d e e n tra d a .
c re a r un fic h e ro a le a to rio g ra n d e p e r o n o lo s u fic ie n te c o m o p a ra n o c a b e r e n m e F l a lg o ritm o re q u e rirá [ log </V A í ) l p a sa d a s , m á s l a p rim e ra p a ra la c o n s tn ic - >ec
m o ria p rin c ip a l. C u a n d o Icem o s e l fic h e ro > lo o rd e n a m o s u s a n d o u n a lg o ritm o c ió n d e la s c u n e r a s in iciales. P o r e je m p lo , si te n e m o s 10 m illo n e s d e re g istro s d e
e fic ie n te , e l tie m p o p a ra leer la e n tra d a e s s ig n ific a tiv o e n c o m p a ra c ió n c o n e l 128 b y te s c a d a u n o y 4 \1 R d e m e m o ria p rin c ip a l, e n to n c e s la p rim e ra p a sa d a ^
tie m p o q u e s e ta rd a e n o rd e n a rla , in c lu so a u n q u e la o p e ra c ió n d e o rd e n a c ió n re c re a r á 3 2 0 c a ñ e r a s . N e c e sita ría m o s •> p a s a d a s m á s p a ra c o m p le ta r la o rd e n a c ió n . J
q u iere u n tie m p o 0 { N log N ) ( o in c lu so p e o r p a ra e l m é to d o S h ellso rt» y la le c tu ra E sta fó rm u la ta m b ié n n o s in d ic a q u e n u e s tro e je m p lo d e la F ig u ra 2 0 .3 3 req u ie re
de la e n tra d a s e a s ó lo C H N ). [ lo g (1 3 3 ) ] p a s a d a s m á s . e s d e c ir 3.
Al 81 94 11 96 12 35 17 99 28 58 41 75 15
20.6.2 M odelo d e ordenación externa
A2
L a a m p lia v aried ad d e dis|K»sitívov d e a lm a c e n a m ie n to m a s iv o h a c e n q u e la o rd e n a
c ió n e x te rn a d e p e n d a d e l d is p o sitiv o m u ch o m á s q u e la o rd e n a c ió n in te rn a . L o s a l B1
g o ritm o s c o n sid e ra d o s a q u í tra b a ja n so b re c in ta s, q u e c o n stitu y e n p ro b a b le m e n te el B2
m e d io d e a lm a c e n a m ie n to m i s re stric tiv o . P u esto q u e e l a c c e s o a un d e m e n t o e n
una c in ta se r e a li/a re c o rrie n d o to d a la c in ta h a sta la p o sic ió n a d ec u a d a , s ó lo s e p u e Figura 20 32 Configuración inicial de a cinta
d e a c c e d e r d e fo rm a e ficien te a u n a c in ta d e fo rm a se c u e n c ia l te n c u a lq u ie r sentidol.
S u p o n d re m o s q u e d is p o n e m o s a l m e n o s d e tr e s c in ta s p a ra lle v a r a c a b o la o r
Al
d e n a c ió n . N e c e sita m o s d o s p a ra r e a li/a r u n a o rd e n a c ió n e fic ie n te , lu te rc e ra sim
p lific a las c o sa s . S i so la m e n te tu v ié ra m o s u n a c in ta , te n d ría m o s u n g ra v e p ro b le A2
m a: c u a lq u ie r a lg o ritm o re q u e riría lít.V » a c c e s o s a la c in ta .
B1 11 81 94 17 28 99 15
B2 12 35 96 41 58 75
20.6.3 El algoritm o sencillo
Figura 20. 33 Distribución de ios correrás a e longitud 3 en dos cintas
E l a lg o ritm o b á s ic o d e o rd e n a c ió n e x te rn a u s a la ru tin a d e m e /c la u sa d a e n m e r
g e so rt. S u p o n g a m o s q u e te n e m o s c u a tr o c in ta s . / I I . 4 2 . U 1 y H 2 . q u e so n d o s c i n
Al 11 12 35 81 94 96 15
ta s d e e n tra d a y d o s d e sa lid a D e p e n d ie n d o del p u n to e n e l q u e n o s e n c o n tre m o s
e n e l a lg o ritm o , las c in ta s A y />' so n d e e n tra d a o d e s a lid a . S u p o n d re m o s q u e los A2 17 28 41 58 75 99
d a to s e s tá n in ic ia lm e n te e n 4 1 . y a d e m á s q u e la m e m o ria p u e d e a lm a c e n a r (y o r
d e n a n M re g is tro s d e u n a ve/.. El p rim e r p a s o n a tu ra l e s le e r 3 / re g is tro s d e u n a B1
v e / d e la c in ta d e e n tra d a , o rd e n a r in te rn a m e n te e s to s re g is tro s y d e s p u é s e sc rib ir B2
lo s re g istro s o rd e n a d o s e n /f l o e n H2 (d e fo rm a a lte rn a d a ). C a d a c o n ju n to d e re
g is tro s o rd e n a d o s s e lla m a u n a c a r r e r a . C a d a v e / q u e e s tá h e c h o e sto , reb o b in a - Figuro 20.34 Cintos después cíe ta primera ro n d a d e mezclas (la longitud d e loc a
m o s to d a s las c in ta s . S u p o n g a m o s q u e te n e m o s la m ism a e n tra d a q u e e n n u e stro rrera es 6),
Al Al 11 12 17 28 36 81 94 96 99
A2 15 41 58 75
A2
B1 11 12 17 28 35 41 58 75 81 94 96 99 A3
B2 15
Bl
Figuro 20 35 C in tas dospoés d e la seg u n d a ro n d a d e m ezclas (la longitud d e la
B2
c a rre ra es 12)
B3
A2 c a rre ra os 9)
Bl
Al
B2
A2
Figuro 20 36 C n ta s después d e la te rce ra ronda d e m ezclas
A3
Bl 11 12 15 17 28 35 41 58 75 81 94 96 99
20.6.4 M ezcla multiaria
B2
S i tu v ié ra m o s c in ta s a d ic io n a le s , e n to n c e s p o d ría m o s e s p e ra r re d u c ir e l n ú m e r o de
9 p a sa d a s re q u e rid a s p a ra o rd e n a r n u e stra e n tra d a . H a c e m o s e s to e x te n d ie n d o la B3
C uestiones breves 2 0 .1 2 .
d e N.
D e m u e stre la c o ta d e l E je rc ic io 2 0 .1 I u s a n d o un a rg u m e n to d e in d u c c ió n .
2 0 .1 3 . E n el h e a p so rt s e u sa n , e n el c a s o p e o r. ( ) { N lo g N ) c o m p a ra c io n e s . D cri-
2 0 .1 . D e sc rib a las p ro p ie d a d e s e stru c tu ra l y d e o rd e n a c ió n d e lo s m o n tíc u lo s v e la c o n s ta n te m u ltip lic a tiv a (e s d e c ir, d e c id a si so n N log N . 2.V lo g ,V o
bin ario s. 3 N log N, e tc .).
2 0 .2 . E n u n m o n tíc u lo b in a rio , p a ra un e le m e n to e n la p o s ic ió n i. ¿ d ó n d e s e e n 2 0 .1 4 . D e m u e stre q u e h a y e n tra d a s q u e fu e rz a n al m é to d o h u n d i r 2 d e h eap so rt
c u e n tra n su p a d re y su s h ijo s iz q u ie rd o y d e re c h o ? a b a ja r lo d o e l c a m in o h a s ta u n a h o ja. P ista : tra b a je h a c ia atrás.
20J . M u e s tre lo s re su lta d o s d e in s e rta r lo s e le m e n to s 10. 12. I. 14. 6 . 5 . 8 . 15. 2 0 .1 5 . U n d -m o n tfe u lo e s u n a e s tru c tu ra d e d a to s im p líc ita sim ila r al m o n tíc u lo
3. 9. 7 . 4 . I I . 13 y 2 . u n o a u n o . e n un m o n tíc u lo in ic ia ln ic n tc v a c ío . b in a rio , c o n la d ife re n c ia d e q u e lo s n o d o s tie n e n ti h ijo s. U n « /-m ontículo
D e s p u é s m u e s tre e l r e s u lta d o d e u s a r e n s u lu g a r e l a lg o r itm o lin eal e s . p o r ta n to , m e n o s p ro fu n d o q u e u n m o n tíc u lo b in a rio , p e ro e n c o n tr a r el
a rre g la rM o n tlc u lo . h ijo m e n o r re q u ie re e x a m in a r ,1 h ijo s e n lu g a r d e d o s. C o n e s to e n m en te
2 0 .4 . ¿ D ó n d e p o d ría h a b e r e s ta d o la u n d é c im a lín e a p u n te a d a e n la s F ig u ras d e te rm in e e l tie m p o d e e je c u c ió n (e n té rm in o s d e «/ y d e V ) d e las o p e ra
2 0 .2 0 a 2 0 .2 3 ? c io n e s i n s e r t a r V e l í m i n a r M i n p a ra u n «/-m ontículo.
2 0 -5 . U n m o n tíc u lo m a x im a l so p o rta las o p e ra cio n e s i n s e r t a r . e l i m i n a r K a x 2 0 .1 6 . U n m o n tíc u l o m in i- m a x e s u n a e s t r u c tu r a d e d a to s q u e s o p o r ta
y b u s c a r M a x (p e ro n o e l i m i n a r M i n o b u s e a r M i n ) . D e sc rib a e n d e ta e l i m i n a r M i n y e l i m i n a r M a x c o n c o s te lo g a rítm ic o . L a e s tru c tu ra es
lle c ó m o se p u e d e n im p le m e n ta r lo s m o n tíc u lo s m a x im a le s. id é n tic a a la d e l m o n tíc u lo b in a rio . E a p ro p ie d a d d e o rd e n a c ió n d e l m o n
2 0 .6 . M u e s tre e l re s u lta d o d e l a lg o ritm o d e o rd e n a c ió n h c a p s o rt so b re la e n tr a tíc u lo m in i-m a x e s q u e p a ra c a d a m x lo X a p ro fu n d id a d p a r. e l d a lo a lm a
d a d e l E je rc ic io 2 0 .3 d e sp u é s d e la c o n s tru c c ió n in ic ia l y d e d o s o p e ra c io c e n a d o e n X e s e l m e n o r d e su s u b á rb o l. m ie n tra s q u e p a ra c a d a m x lo X a
n es p o s te rio re s e l i m i n a r M ax. p ro fu n d id a d im p ar, e l d a to a lm a c e n a d o e n X e s e l m a y o r d e s u su b á rb o l.
2 9 .7 . ¿ E s h e a p so rt u n a lg o ritm o d e o rd e n a c ió n e s ta b le ? E s d e c ir, si hay e l e L a ra íz se e n c u e n tra a p ro fu n d id a d p a r H a g a lo siguiente:
m e n to s d u p lic a d o s, ¿ re tie n e n d ic h o s e le m e n to s d u p lic a d o s la o rd e n a c ió n
in icial e n tre e llo s ? <«> D ib u je un p o sib le m o n tíc u lo m in i-m a x p a ra lo s e le m e n to s I . 2 . 3. 4.
5. 6 . 7 . 8. 9 y 10. O b s e rv e q u e h a y m u c h o s m o n tíc u lo s p o sib le s.
b) D e te rm in e c ó m o e n c o n tr a r los e le m e n to s m á x im o y m ín im o .
Problem as teóricos «•) P ro p o rc io n e un a lg o ritm o p a ra in s e rta r u n n u e v o m x lo e n u n m o n tí
c u lo m in i- m ax.
20.X. U n á r b o l b in a rio c o m p le to c o n N e le m e n to s u sa la s p o s ic io n e s I a A' de «/) Proporcione u n algoritm o p ara ejec u tar e l i m i n a r M l n y e l i m i n a r M a x .
u n v e c to r. D e te rm in e lo la rg o q u e p u e d e lle g a r a s e r e l v e c to r e n lo s si c) P ro p o rc io n e u n a lg o ritm o p a ra e je c u ta r a r r e g l a r M o n t i c u l o en
g u ie n te s caso s: tie m p o lineal.
<r> U n á rb o l b in a rio c o n d o s n iv e le s a d ic io n a le s (e s d e c ir, e s tá lig e ra 2 0 .1 7 . U n 2-1) m o n tíc u lo e s una estru c tu ra «le d a to s q u e p e rm ite q u e c a d a n o d o
m e n te d e se q u ilib ra d o ). te n g a d o s c la v e s in d iv id u ales. S e pued e e je c u ta r e l i m i n a r M i n c o n re s p e c
b) U n á rb o l b in a rio c o n e l m x lo m á s p ro fu n d o a p ro fu n d id a d 2 lo g N . to a c u a lq u ie ra d e d ic h a s c la v e s. L a p ro p ie d a d d e o rd e n a c ió n d e u n 2 -P -
c) U n á rb o l b in a rio c o n e l m x lo m á s p ro fu n d o a p ro fu n d id a d 4.1 lo g N . m o n u c u lo c o n siste e n q u e p ara caila rnxk* X a p ro fu n d id a d p a r. e l e lem en to
it) E l p e o r c a s o d e á rb o l bin ario . a lm a c e n a d o e n X tie n e la c la v e * I m á s p e q u e ñ a d e su su b árb o l. m ientras
q u e p a ra c a d a n tx lo X a p ro fu n d id a d im p ar, e l e le m e n to a lm a c e n a d o e n X
2 0 .9 . D e m u e stre la s sig u ie n te s a firm a c io n e s c o n re s p e c to a l e le m e n to m á x im o tien e la c la v e # 2 m á s p e q u e ñ a d e su su b á rb o l. H aga lo siguiente:
e n u n m o n tícu lo :
ir) D ib u je u n p o s ib le 2 -D -m o n tíc u lo p a ra lo s e le m e n to s ( I . 10). (2 . 9).
u) D e b e se r u n a d e las h o jas. (3, 8 ). ( 4 . 7 ) y ( 5 .6 ) .
b) H a y e x a c ta m e n te \ N 2 1 h o jas. b) E x p liq u e c ó m o e n c o n tr a r e l e le m e n to c o n m ín im a c la v e # 1 .
r) S e d e b e e x a m in a r c a d a h o ja p a ra en c o n tra rlo . i ) E x p liq u e c ó m o e n c o n tr a r e l e le m e n to c o n m ín im a c la v e # 2 .
d ) P ro p o rc io n e u n a lg o ritm o p a ra in s e rta r u n n u e v o e le m e n to e n e l 2-D -
2 0 .1 0 . D e m u e stre e l T e o re m a 20.1 u sa n d o d ire c ta m e n te u n a su m a . H a g a lo s i m o n tícu lo .
g u ien te:
e) P ro p o rc io n e u n a lg o ritm o p a ra e je c u ta r e l i m i n a r M i n c o n re sp e c to
6. D lí. K n u th . T h e A n o f C o m p u te r P m g r a m m in g . V o lu m e 3: S o r tin g a n d
2 0 .2 1 . E sc rib a u n p ro g r a m a p a ra c o m p a ra r e l tie m p o d e e je c u c ió n d e V o p e ra S e a n h in t ; . 2 a c d .. A d d is o n W c s le y . R c a d m g . M ass. (1 9 9 7 ).
c io n e s i n t r o d u c i r se g u id a s p o r una o p e ra c ió n a r r e g l a r M o n t i c u l o 7. K S c h u ffe r y R S c d g c w ic k . «1110 A n a ly sis o f H e a p s o rt-. J o u r n a l o f A l-
c o n e l d e N o p e ra c io n e s i n s e r t a r se p a ra d a s. E je c u te su p ro g ra m a p ara
g o r ith itn f4 ( 1 9 9 3 ) . 7 6 -1 0 0 .
e n tra d a s o rd e n a d a s , o rd e n a d a s d e fo rm a in v e rsa y ale a to ria s.
2 0 .2 2 . Im p le m e n te ta n to h e a p s o rt c o m o q u ic k s o rt y c o m p a r e su e f ic ie n c ia s o 8. J. W . J W illia m s . - A lg o r ith m 2 3 2 : H e a p so rt* . C o m m u n ic a iio n s o f the
b re e n tr a d a s o rd e n a d a s y a le a to r ia s U s e e n la s p ru e b a s d is tin to s iip,»s d e A C M 7 (1964». 3 4 7 -3 4 8
d a to s
2 0 .2 3 . S u p o n g a m o s q u e te n e m o s u n h u e c o e n e l n o d o X . U ra tin a h u n d i r ?
c o m p a ra c o n e l h ijo d e X y d e s p u é s m u e v e e l h ijo h a c ia a rrib a m e s m a y o r
(e n e l c a s o d e u n m o n tíc u lo m a x im a ll q u e e l e le m e n to a c o lo c a r, e m p u
ja n d o p o r ta n to e l h u e c o h a c ia a b a jo L a ru tin a te r m in a c u a n d o e s se g u ro
c o lo c a r e l e le m e n to a in s e rta r e n e l h u e co . C o n sid e re m o s la s ig u ie n te e s-
tr ilo g ía a lte rn a tiv a p a ra h u n d i r 2 . M o v e m o s lo s e le m e n to s h a c ia a m h a >
e l h u e c o h a c ia a b a jo lo m á s le jo s p o sib le , sin c o m p ro b a r q u e se puedo- in
se rta r e l n u e v o e le m e n to . E s to c o lo c a ría la n u e v a c e ld a e n una d e la s lu»-
j a s y p ro b a b le m e n te v io la ría e l o rd e n P a ra a rre g la r e l o rd e n , re flo te la
n u e v a c e ld a e n la fo rm a h a b itu a l. S e c s |H-ra q u e e l rc flo tiiim c m o se re p e
r u iic f v
Estructuras de datos
avanzadas
21 Árboles
de ensanchamiento
E
s te c a p ítu lo d e s c rib e u n a n o to n a e s tru c tu ra d e d a to s d e n o m in a d a ú r h o l d e
e n x a m t u m i e M o 1 ix*s á rb o le s d e e n s a n c h a m ie n to s o p o rta n to d a s la s o p e r a
c io n e s d e lo s a rb o le s d e b ú s q u e d a b ín a n o s , p e ro n o g a ra n tiz a n u n r e n d i
m ie n to (H lo g .V i e n e l c a s o p e o r. E n c a m b io , su s c o ta s so n a m a n e a d a s , lo que
s ig n ific a q u e a u n q u e las o p e ra c io n e s in d iv id u a le s p u e d e n s e r c o s to s a s , se g a ra n ti
za q u e c u a lq u ie r s e c u e n c ia d e o p e ra c io n e s s e c o m p o rta rá c o m o si c a d a o p e ra c ió n
e n la s e c u e n c ia e x h ib ie ra u n c o m p o rta m ie n to lo g a rítm ic o . C o m o q u ie r a q u e ésta
e s u n a g a ra n tía m a s d é b il q u e la p ro p o rc io n a d a p o r lo s á rb o le s d e b ú sq u e d a e q u ili
b ra d o s. p a ra s o p o r ta r c a d a e le m e n to e n e l á rb o l s ó lo n e c e s ita re m o s e l d a to v d o s
re fe re n c ia s |*»r n o d o . A d e m á s, las o p e ra c io n e s so n a lg o m á s s e n c illa s d e im p lc-
m e n ta r. C o m o v e re m o s a lo la rg o d e e s te c a p itu lo , lo s á rb o le s d e e n sa n c h a m ie n to
tie n e n a lg u n a s o tr a s p ro p ie d a d e s in teresa n tes.
E n e s te c a p ítu lo v erem os:
• L a d e s c r ip c ió n d e lo s c o n c e p to s d e a m o rtiz a c ió n y a u to -a ju sta m ie n to
• E l a lg o ritm o d e l á rb o l b á s ic o e n s a n c h a d o d e fo rm a a s c e n d e n te > la d e m o s
tr a c ió n d e l c o s te a m o rtiz a d o lo g a rítm ic o p o r o p eració n .
• C ó m o p u e d e n im p le m c n ta rse lo s á rb o le s d e e n s a n c h a m ie n to u tiliz a n d o un
a lg o r itm o d e s c e n d e n te , c o n u n a im p le m e n ta c ió n c o m p le ta d e l«>s á rb o le s de
e n s a n c h a m ie n to (in c lu y e n d o e l a lg o ritm o d e e lim in a c ió n )
• C o m p a ra c io n e s e n tr e lo s á rb o le s d e e n s a n c h a m ie n to y o irá s e s tru c tu r a s de
d a lo s
A u n q u e lo s á rb o le s d e b ú sq u e d a e q u ilib ra d o s p ro p o rc io n a n un tie m p o d e e je c u
c ió n p o r o p e ra c ió n lo g a rítm ic o e n e l c a s o |>eor. tie n e n v a ría s lim itacio n es:
E l re s u lta d o d e lu ro ta c ió n e s q u e u n fu tu ro a c c e so (d u ra n te a lg ú n tie m p o ) al
n o d o 3 s e ra b a ra to . D e sg ra c ia d a m e n te , e n e l p ro c e s o d e m o v e r e l n o d o 3 h a c ia
21.2 Árboles básicos d e ensancham iento
a rn h a d o s n iv e le s, lo s n o d o s 4 y 5 se m u e v e n lu c i a a h a jo u n n iv e l, lis to sig n ific a a sce n d en te
q u e si lo s p a tro n e s d c a c c e s o n o sig u e n la re g la d e l 9 0 - 10. e s p o s ib le q u e se p ro
L o g ra r u n c o s te a m o rtiz a d o lo g a rítm ic o p a re c e im p o s ib le , p o rq u e c u a n d o m o v e - ín
d iu c a u n a larg a s e c u e n c ia d e a c c e s o s m a lo s. C o m o re s u lta d o , la e s tra te g ia d e r o ta
m o s un e le m e n to h a c ia la ra íz v ía ro ta c io n e s , «uros e le m e n to s p a sa n a e s ta r m ás
c ió n h a c ia la r a í / n o te n d ría u n c o m p o rta m ie n to a m o rtiz a d o lo g a rítm ic o ; l o c u a l es
p ro fu n d o s P a re c e q u e si n o se g u ard a in fo rm a c ió n s*«brc e l e q u ilib rio s ie m p re p o
d ifíc ilm e n te a c e p ta b le . U n c a s o m a lo s e p re s e n ta e n e l T e o re m a 2 1 .1 .
d ría h a b er a lg u n o s n odos m uy p ro fu n d o s S o rp re n d e n te m e n te , p o d em o s a rre g la r d e
fo rm a se n c illa la e stra te g ia d e ro ta c ió n h a c ia la ra íz, p a ra c o n s e g u ir u n a c o ta a m o rti
f ilio .
E x iste n s e c u e n c ia s a r b itr a r ia m e n te la r g a s ¡M ira la s m a l e s M a c c e s o s c o n z a d a lo g a rítm ic a , luí e stra te g ia d e ro ta c ió n h a c ia la ra íz se d e n o m in a ensa n clu u n ien -
ro ta c ió n li a n a la ra í: u tiliza n u n tie m p o (-)< W V ) to . S u im p le m e n ta c ió n n o s lle v a a los á rb o le s d e e n sa n c h a m ie n to ascen d en te.
L a e s tra te g ia d e e n s a n c h a m ie n to e s p a re c id a a la d e ro ta c ió n h a c ia la r a í / , con
C onsi,U r a n o s e l á r b o l fo r m a d o a l in s e r ta r la s c la v e s I. 2. J e n un
u n a su til d ife re n c ia . A h o ra s e g u im o s lo ta n d o d c fo rm a a sc e n d e n te a lo la rg o del
á r b o l in ic ia lm e n te v a cío . E s to p r o d u c e u n á r b o l fo r m a d o e x , tu s iv a m e n te
c a m in o d e a c c e s o «m as a d e la n te p re s e n ta re m o s u n a e s tra te g ia d e s c e n d e n te ). S e a A
p o r h ijo s izq u ie rd o s. E s to n o e s d e m o m e n to n u d o , va q u e e l tie m p o d e
u n n o d o , d is tin to d e la raí/., e n e l c a m in o d e a c c e s o e n e l q u e e s ta m o s ro ta n d o . Si
c o n s tr u í, io n d e l á r b o l e s íX A ’l. Conu> ilu s tr a la F ig u r a 2 1 .2 . c a d a n u e v o
e l p a d re d e V e s la ra íz d e l á rb o l, sim p le m e n te ro ta m o s A y la ra íz , c o m o m u estra
n o d o a ñ a d id o s e c o n v ie r te e n u n h ijo d e la ra íz, tr a s l o , u a l so lo s e n e c e s i
la F ig u ra 2 1 4 É s ta e s la u ltim a ro ta c ió n , y c o lo c a X e n la ra íz O b s e rv e q u e e s to
to u n a ro ta c ió n ¡u ira c o lo c a r e l n u e v o e le m e n to , n lo ra í;, lu í p a r te n e g a
e s e x a c ta m e n te lo q u e se h a ría e n la ro ta c ió n h a c ia la r a í /. É s te e s e l c a s o zig.
tiva. c o m o ilu s tr a la F ig u ra 2 U . e s q u e e l a c c e s o a l m u lo c o n c la v e I
Hn o tro c a s o . V tie n e u n p a d re P y un a b u e lo ( i . y e n to n c e s h a y d o s c a s o s a
c o n su m e S u n id a d e s d e tiem/HK U n a v e ; q u e la s ro ta c io n e s h a n te r m in a
f lü c
c o n sid e ra r, ju n io c o n sus s im é tric o s F l p rim e r c a s o e s e l d e n o m in a d o :ig -z a g . q u e
d o . e l a c c e so a l m u lo c o n c la v e 2 c o n su m e ¡V u n id a d e s d e tie m p o , v e l ,u -
c o rre s p o n d e a l c a s o in te rio r e n lo s a rb o le s A V L A q u í A e s u n lu jo d e re c h o y P e s ^
c e s o a l m u lo J c o n s u m e N - I u n id a d e s d e tie m p o . A c c e d e r a la s Ñ c la v e s
s u n h ijo iz q u ie rd o ( o v ic e v e rsa ). R e a liz a m o s u n a d o b le ro ta c ió n , e x a c ta m e n te a n á
e n o r d e n re q u ie r e u n to ta l N + Y i = G ( N 2). D e sp u é s d e a c c e d e r a to lo g a a la d o b le ro ta c ió n d c lo s á rb o le s A V L . c o m o m u e s tra la F ig u ra 2 1 5 . O b s e r
v e m o s q u e y a q u e u n a d o b le ro ta c ió n e q u iv a le a d o s ro ta c io n e s a s c e n d e n te s , e s te
d o s lo s n o d o s, e l á r b o l h a v u e lto a s u e s ta d o u n , tal, y p o d e m o s r r /ie tir la c a s o n o se d ife re n c ia d e lo q u e h a ría m o s e n la ro ta c ió n h a c ia la ra íz . E n la F ig u ra
secu en cia . F o r e llo te n e m o s u n c o s te a m o rtiza d o (-)(N ». lo c u a l, c ie r ta 21.1 e l e n s a n c h a m ie n to e n e l n o d o 3 c o rre s p o n d e a u n a s im p le ro ta c ió n z ig z a g . (
m en te. n o e s u n a g r a n c o sa E l ú ltim o c a s o e s e l c a s o z ig -zig . q u e c o rre s p o n d e a l c a s o e x te r n o d c lo s a r b o
le s A V L . A q u í. V y / ’ so n a m b o s h ijo s iz q u ie rd o s o h ijo s d e re c h o s . E n e s te c a so ,
tra n s fo rm a m o s e l á rb o l d e la iz q u ie rd a d e la F ig u ra 2 I b e n e l á rb o l do la d e re c h a .
F k iu ra 2 1.2 Inserción rim a i ililirnorC-. ir t frttn riA r H /v in L-» F la u ra 2 1.4 C a so zig (ro ta c ió n sim ple norm al).
u n e n s a n c h a m ie n to e \ a lg o m e jo r iJ c s p u c s d e l e n s a n c h a m ie n to e n e l n o d o I . q u e
re q u ie re .V a c c e s o s a n o d o s, u n e n s a n c h a m ie n to d e l n o d o 2 c o n s is tirá a p ro x im a d a
m en te e n jV 2 a c c e s o s , e n v e / d e e n N - I a c c e so s . E l e n s a n c h a m ie n to n o só lo
m u e v e e l n o d o a c c e d id o a la raí/., ta m b ié n d iv id e a p ro x im a d a m e n te p o r 2 la p ro
fu n d id a d d e la m a y o ría d e lo s n o d o s c n e l c a m in o ele a c c e s o E n c o n tr a p a rtid a , s ó
l o a lg u n o s n o d o s so m b re a d o s se p r o íu n d i/a n . \ c o m o m u c h o d o s n iv eles. L 'n e n
s a n c h a m ie n to p o s te rio r e n e l n o d o 2 lle v a rá u lo s n o d o s d e l c a m in o a V 4 d e la
r a í /. E s to s e re p ite , h a s ta q u e la p ro fu n d id a d lle g a a se r. a p ro x im a d a m e n te , lo g i\.
IX* h e c h o , u n c o m p lic a d o a n á lisis d e m u e s tra q u e lo q u e e r a un casi* m a lo p a ra el
Figura 2 1 5 C aso zig zag (ig ual q u e uno rotacton aobto). se om rte e l coso sm elnco
a lg o ritm o d e ro ta c ió n h a c ia la r a í / , e s a h o ra u n c a s o b u e n o p a ra e l e n s a n c h a m ie n
to : e l a c c e s o s e c u e n c ia ! d e lo s /V e le m e n to s e n e l á rb o l e n s a n c h a d o p re c is a un
tie m p o to ta l q u e e s s ó lo O i/V ). P o r ta n to , g a n a n * * b a sta n te , a l m e n o s c o n e n tra d a s
se n c illa s. L a S e c c ió n 1 1.4 d e m u e s tra , m e d ia n te c u e n ta s su tile s, q u e ah«>ra y a no
h a y se c u e n c ia s d e a c c e s o s m alas.
<lMT i - ^ Kl i >
.t T
R ( i ) re p re s e n ta e l r a n g o d e l n o d o / . R e c o rd e m o s q u e ni lo s ra n g o s ni lo s ta m a El i
03
ñ o s s o n c o m p u ta d o s |H»r lo s a lg o ritm o s d e lo s á rb o le s d e e n s a n c h a m ie n to (a m e
la r
n o s. p o r s u p u e s to , q u e s e n e c e s ite n e s ta d ís tic a s ). O b se rv e m o s q u e e l r a n g o d e la
Vil
ra íz e s lo g ;V A d e m á s, c u a n d o se re a liz a u n a ro ta c ió n z ig . s ó l o s e m o d ific a n los ca
Figura 21.8 La o p eració n e l ir r ú n a r o p lic a a a a l nod o o prim ero e l 6 se ensan ra n g o s d e lo s d o s m x lo s in v o lu c ra d o s e n la ro ta c ió n . C u a n d o se re a liz a u n a r o ta
c h a n a c ía la raíz: la elim inación d e ja do s vubárboles se realiza un c ió n z ig -z ig o z ig -z a g . so lo c a m b ia e l ra n g o d e tre s n o d o s. Y fin a lm e n te , c a d a e n co
F o r ta n to v ’« H r 2. E le v a n d o a ! c u a d r a d o a m b o s la d o s o b te n e m o s
S u p o n g a m o s q u e se re a liz a n F b ú sq u e d a s e / in s e rc io n e s, y q u e <I> a -p re s e n ta el
a b $ c~ 4 v to m a n d o lo g a r itm o s a a m b o s la d o s q u e d a d e m o str a d o e l te o
p o te n cial d e sp u é s d e la í-é s im a o p e ra c ió n . E n to n c e s, y a q u e c a d a b ú sq u e d a e s tá
rem a.
g o b e rn a d a p o r e l T eo rem a 21.2 y c a d a in s e rc ió n e s tá g o b e rn a d a p o r la E c u a c ió n
2 1 .3 . e l p ro c e s o d e su m a p o r so lu p a m ie n to s n o s c o n d u c e a
A h o ra e s ta m o s listo s p a ra p r o b a r e l T e o re m a 2 1 .2 .
A p a r tir d e la F ig u ra 2 1 .5 d e d u c im o s S , l X ) = S , ( G l . p o r lo q u e lo s r a n
R t ( G ) S 2 R , i X ) - R , i X ) - 2. (2 1 .1 1 )
g o s d e a m b o s m u lo s d e b e n s e r ig u a le s. E n lo m e s o b te n e m o s
A $ 2 R , ( X \ - 2 R , t X ) - 2. (2 1 .8 ) i ; = l< 3 ( / W * ,_ ,< * » - 2 ).
U na im p le m e n ta c ió n d ir e c ta d c la e s tra te g ia d e e n s a n c h a m ie n to a sc e n d e n te re
q u ie re u n a p a sa d a h a c ia a h a jo p a ra r c a li/a r e l a c c e s o s e g u id a d e u n a se g u n d a p a
s a d a h a c ía a rrib a E s to p u e d e h a c e rs e , b ie n m a n te n ie n d o re fe re n c ia s a l p a d re , a l
m a c e n a n d o e l c a m in o d e a c c e s o e n u n a p ila , o u tili/a n d o u n tru c o m á s in te lig e n te
p a ra a lm a c e n a r e l c a m in o , u tiliz a n d o re fe re n c ia s d is p o n ib le s e n lo s n o d o s a c c e d i
d o s D e sg ra c ia d a m e n te , to d o s e s to s m é to d o s re q u ie re n u n a s u s ta n c ia l so b re c a rg a ,
s ie n d o n e c e sa rio tra ta r m u c h o s c a s o s e sp e c ia le s . R e c u e rd e , d e la S e c c ió n 18.5. q u e
e s m e jo r im p le m e n to ! lo s á rb o le s d e b ú sq u e d a u tiliz a n d o u n a ú n ic a p a sa d a d c a rr i
b a a b a jo . P a ra e v ita r c a s o s e s p e c ia le s p o d e m o s u tiliz a r n o d o s fa n ta sm a . E sta s e c
c ió n d e s c u b e u n a e s tru c tu ra d e á r b o l d e e n s a n c h a m ie n to d e s c e n d e n te q u e p re s e r
v a la c o ta a m o r h z a d a lo g a rítm ic a E l p ro c e d im ie n to d e s c e n d e n te e s m á s rá p id o en
la p rá c tic a y u tiliz a s ó l o u n e s p a c io e x tr a c o n s ta n te . E s e l m é to d o re c o m e n d a d o
p o r lo s c re a d o r e s d e lo s á rb o le s d e e n sa n c h a m ie n to .
I a id e a b á sic a e n la q u e s e b a s a n lo s á rb o le s d e e n s a n c h a m ie n to d e sc e n d e n te
e s q u e a l d e s c e n d e r e n e l á rb o l d u ra n te la b ú sq u e d a d e un n o d o X . d e b e m o s lo m a r
lo s n o d o s q u e e n c o n tra m o s e n e l c a m in o d e a c c e s o v m o v e rlo s a e llo s y a su s su b -
a rb o le s d e l c a m in o . A d e m á s, p a ra g a ra n tiz a r la c o ta a m o rtiz a d a d e b e m o s re a liz a r
a lg u n a s ro ta c io n e s.
E n c u a lq u ie r in sta n te e n m e d io d e l e n s a n c h a m ie n to , hay u n n o d o a c tu a l X q u e
e s la ra íz d e su su b á rb o l; e s te se re p re se n ta e n los d ia g r a m a s c o m o e l á rb o l c e n tra l.
F.I á rb o l /. a lm a c e n a lo s n o d o s m e n o re s q u e X . m ie n tra s q u e e l á rb o l D a lm a c e n a
lo s n o d o s q u e s,*n m a y o re s q u e X In ic ia lm c n te . A' e s la ra íz d e l á rb o l T . y L y R
so n v a c ío s IX *scendiendo p o r e l á rb o l d o s n iv e le s c a d a v e z . e n c o n tra m o s un p ar
d c n o d o s. IX -p en d ien d o d e si e s o s d o s n o d o s so n m e n o re s o m a y o re s q u e A*. se c o
lo c a n e n / . o R . ju n to c o n lo s su b á rb o le s q u e n o e s tá n e n e l c a m in o d c a c c e so . A sí.
e l n o d o a c tu a l e n e l c a m in o d e b ú sq u e d a e s s ie m p re la r a í / d e l á rb o l c e n tra l. C u a n
d o fin a lm e n te a lc a n z a m o s X . p iu le m o s u n ir / y R a l f o n d o d e l á rb o l c e n tra l. C o m o
re su lta d o . X s e h a b rá m o v id o a la ra íz . E n to n c e s, la c u e s tió n e s c ó m o s e c o lo c a n
lo s m u lo s e n / . y R. y c ó m o se re a liz a la c o n c a te n a c ió n fin al. E s to e s lo q u e ilu s
tran lo s á rb o le s d e la F ig u ra 2 1 .9 . C o m o d e c o stu m b re , s e o m ite n lo s c a s o s s im é Figura 21.9 Rotaciones d e l en san ch am ien to d e sce n d e n te zig (a rrtx i). z»g-zig (en
tric o s. e<c e n tro ) v ztg-zag (a b a lo )
E n b u lo s lo s d ib u jo s . X e s e l m u lo a ctu a l. ) su lu jo y / su m e to (e n c a s o d c q u e
e x is ta u n m u lo a p lic a b le ; e l s ig n ific a d o p re c is o d e - a p l ic a b l e - s e h a rá m á s c la ro A lg o sim ila r o c u rr e e n e l c a s o z ig -z ig . E l p u n to c ru c ia l e s q u e s e re a liz a una
e n la d is c u s ió n d e l c a v o zig.) ro ta c ió n e n tr e X c > E l c a s o z ig z ag lle v a e l e le m e n to X d e l fo n d o arrib a e n el
S i la ro ta c ió n d e b ie ra s e r u n z ig . e n to n c e s e l á rb o l c u y a ra íz e s >’ se c o n v e rtir ía á rb o l c e n tr a l > e n la z a lo s s u b á rb o le s X c Y a R y L. re s p e c tiv a m e n te O b se rv e m o s
e n la n u e v a r a í / d e l á rb o l c e n tra l. V y e l s u b á rb o l H se e n la z a n d a n d o lu g a r a l h ijo que Y se c o n v ie rte e n e l e le m e n to m a y o r d e /.. _
iz q u ie rd o d e l m e n o r e le m e n to d e R: y e l h ijo iz q u ie rd o d e X s e h a c e n u i l \ C o m o E l c a s o z ig z a g pued e sim p lific a rse a lg o p o rq u e n o s e re a liz a n ro ta c io n e s E n
re su lta d o . V e s e l n u e v o m e n o r e le m e n to d e R. lo q u e lia s e q u e n u e v as a d ic io n e s v e z d e h a c e r q u e / p«se a la ra íz d e l árh»»l c e n tra l, to m a re m o s > c o m o raíz E sto
se an m ás fáciles. se m u estra e n la F ig u ra 2 1 1 0 E s to sim p lific a e l c ó d ig o , p u e s la a c c ió n e n e l c a s o
O b se rv e m o s q u e n o e s n e c e s a rio q u e > s e a u n a h o ja p a ra q u e se a p liq u e e l c a z ig z a g s e h a c e id é n tic a a l c a s o zig . E s to p u e d e p a re c e r v en ta jo so , y a q u e c o m p ro
so zig . S i e l m u lo so lic ita d o s e e n c u e n tra e n )'. e l c a s o / i g se a p lic a rá , in c lu s o si >' b a r e n q u e e s ta d o e s ta m o s c o n su m e tiem p o . L a d e sv e n ta ja e s q u e d e sc e n d e r s ó lo un
n e n e h ijo s. Id c a s o z ig ta m b ié n s e a p lic a si e l e le m e n to s o lic ita d o es m e n o r q u e > m ulo d a lu g a r a m á s iteracio n es e n e l p ro c e d im ie n to dc- en sa n c h a m ie n to .
Al
c >' n o tie n e h ijo iz q u ie rd o , a u n q u e )' te n g a h ijo d e re c h o , y ta m b ié n e n lo s c a s o s U n a vez h e m o s re a liz a d o e l ú ltim o p a s o del e n sa n c h a m ie n to . L R > e l árbol
ÓltJ
sim étrico s. c e n tra l s e c o m b in a n p u ra fo rm ar u n ú n ic o á rb o l, c o m o m u estra la f i g u r a . .1 • en
serve q u e e l re s u lta d o e s d ife re n te a l o b te n id o p o r e l e n sa n c h a m ie n to ascen d en te.
S in e m b a rg o . Lis c o ta s a m o rtiz a d a s ( X lo g N> s e c o n se rv a n (véa se e l E je rc ic io . 1 J ) .
r n l A l » J U U Í. e l llik h t I II ..» m n i i -ñ a t .le » m . f l - " - .— . -------- . . . . . ..M -
\ V a c io
Ziü-ziy
U n e je m p lo d e l a lg o ritm o d e e n s a n c h a m ie n to d e s c e n d e n te s im p lific a d o se
m u e s tra e n la F ig u ra 2 1 .1 2 . In te n ta m o s a c c e d e r a l 19 e n e l á rb o l E l p r im e r p a s o e s
un z ig z a g . IX- a c u e rd o c o n u n a v e rs ió n s im é tric a d e la F ig u ra 2 1 .2 0 . tra e m o s el
su b árb o l c o n ra íz 2 5 a la raíz d e l á rb o l c e n tra l y e n la z a m o s e l 12 y su su b árb o l
iz q u ie rd o a /..
\ c o n tin u a c ió n , h a c e m o s u n z ig z a g : e l 15 se e le v a a la ra íz d e l á rb o l c e n tra l y
se re a liz a u n a ro ta c ió n e n tr e e l 2 0 y e l 2 5 . e n la z á n d o s e e l á rb o l re s u lta d o a K. La
b ú sq u e d a del 19 a c a b a c o n u n z ig . L a n u e v a ra íz d e l á rb o l c e n tra l e s IX. > 15 y su
su b árb o l iz q u ie rd o se e n la z a n c o m o h ijo d e re c h o d e l n o d o m a y o r d e /.. L l m ó n ta
le. d e a c u e rd o c o n la F ig u ra 2 1 .1 1 . c o n c lu y e e l p ro c e s o d e e n s a n c h a m ie n to
II CONSTRUCCION: « in i n i c i a l L z a d o r 8 p r ív a t e s t a t i c N o d o B in a r io n o d o N u lo ;
9 s t a t ic // I m c i a l i z a d o r e s t á t i c o p a r a nodoN uio
" ........................OPERACIONES PÚ B LIC A S .......................................................... 10
Prácticas d e p ro g ra m a c ió n
2 1 .1 0 . C o m p a re e m p íric a m e n te lo s á rb o le s «le e n s a n c h a m ie n to d e sc e n d e n te q u e
se im p le m e n ta n e n la S e c c ió n 2 1 .6 c o n l«*> á rb o le s o rig in a le s d e e n s a n
c h a m ie n to a s c e n d e n te d is c u iiiio s e n la S e c c ió n 21 5.
2 1 .1 1 . A l c o n tr a rio q u e l«*s á rb o le s d e b ú sq u e d a e q u ilib ra d o s, lo s á rb o le s «le e n
sa n c h a m ie n to in c u rre n e n u n a s o b re c a rg a d u ra n te la o p e ra c ió n b u s c a r
q u e e s in d e se a b le si l.i s e c u e n c ia d e a c c e s o e s su fic ie n te m e n te a le a to ria
E x p e rim e n te c o n u n a e s tra te g ia q u e c n su n c h c e n la o p e ra c ió n b u n e n r s ó
lo d e s p u é s d e re b a s a r d e r l a p ro fu n d id a d « /e n la b ú sq u e d a d e sc e n d e n te . I I
e n s a n c h a m ie n to n o m u e v e e l e le m e n to b u s c a d o j la r a í /, s in o a l p u n to «le
p ro lu n d u l.n l </d«>n«lc e m p e z ó e l e n sa n c h a m ie n to .
C A P I T U L O _________________________________________________________________________________ _ _
22 Coios de prioridad
con mezclo
E c io n a l. m e z c l a r , L a o p e ra c ió n m e z c l a r , m u y im p o rta n te e n e l d is e ñ o
a v a n z a d o d e a lg o ritm o s , c o m b in a d o s c o la s d e p rio rid a d e n u n a (y d e stru y e
la s in ic ia le s ) R e p re se n ta re m o s las c o la s d e p rio rid a d c o m o á rb o le s g e n e ra le s. E s to
h a c e q u e la o p e ra c ió n r e d u c i r e l a v e s e a a lg o m á s sim p le , lo q u e e s im p o rta n te
e n a lg u n a s a p lic a c io n e s .
E n e s te c a p ítu lo verem os:
S i p a ra re p re se n ta r u n a c o la d e p rio rid a d e m p le a m o s u n á rb o l b m u n o c o n o rd e n y
n o re s trin g id o e stru c tu ra lm e n te , e n to n c e s la o p e ra c ió n d e m e z c la r se c o n v ie rte en
una ru tin a im p re sc in d ib le . E s to e s d e b id o a q u e a p a n ir ríe e lla p o d e m o s re a lizar
o tr a s o p e ra c io n e s c o m o las sig u ie n te s:
• h . I n n e r t a r < x i ; c re a u n á rb o l c o n u n so lo m u lo q u e c o n d e n e a x y lo
c o m b in a c o n la c o la d e p rio rid ad
• h . b a n c a r M i n t ) : d e v u e lv e e l e le m c m o q u e s e e n c u e n tra e n la r a í /
• h . e l i m i n a r M i n ( ) : e lim in a la r a í / y m e z c la su s h ijo s i/q u ie r d o % d e re c h o
• h . r o d u c s r e l a v o I p . n u e v o V a lo r ) a su m ie n d o q u e p e s u i u re fe re n c ia a
un n o d o d e la c o la d e p rio rid a d , p o d e m o s d ism in u ir a p ro p ia d a m e n te la c la v e
ile p > d e slig a rlo .le su p a d re lis to n o s d e v u e lv e d o s c o la s d e p rio rid a d que Figuro 22.1 M e z cle sim pteto d e dos ú r t x * * c o n o rd en ació n d e m ontículos se
p u ed en se r c o m b in a d a ' O b se rv e q u e p <quc sig n ific a p o sic ió n ) n«» c a m b ia ia l m ezclan los com m os d e re c tx »
c o n tra rio q u e e n la o p e ra c ió n e q u iv a le n te d e li*s m o n tíc u lo s bínanos»
fin c o n se c u e n c ia . s ó lo e s n e c e sa rio m o s tra r c ó m o im p le m e n la r ia m c /c la . ya A fo rtu n a d a m e n te , u n a se n c illa m o d ific a c ió n a s e g u ra q u e e l c a m in o d e re c h o n o
q u e las o lía s o p e ra c io n e s re s u lta n triv ia le s . L a o p e ra c ió n m d u c i r C l a v t e s iiiuv v a a c re c e r m ás.
im p o rtu n te e n a lg u n a s a p lic a c io n e s a v a n z a d a s M o stra m o s u n a d e e lla s e n la S ec
c ió n 1 4 ..'. e n la q u e se d is c u tió e l a lg o ritm o d e D ijk s tra p a ra c a lc u la r e l c a m in o
m ín im o e n u n g ra fo . I.a o p e ra c ió n r e d u e i r C l a v c n o s e e m p le a e n n u e s tra im ple- 22.1.3 El m ontículo sesgado una m odificación sencilla
m e n ta c ió n y a q u e e s c o m p lic a d o m a n te n e r la p o s ic ió n d e c a d a e le m e n to d e n tro
d e l m o n tíc u lo b in a rio E n u n m o n tíc u lo d e e m p a re ja m ie n to s, la p o sic ió n p u ed e U m c / c la e n la F ig u ra 22.1 c re a u n á rb o l d e m e z c la te m p o ra l. U n a m o d ific a c ió n
sim p le e s la s ig u ie n te : a n te s d e fin a liz a r la m c /c la . in te rc a m b ia m o s e l h ijo d e re c h o
m a n te n e rs e c o m o u n a re fe re n c ia al c o rre s p o n d ie n te n o d o d e l á rb o l, y a d ife re n c ia
c iz q u ie rd o d e c a d a m u lo d e l c a m in o d e re c h o d e l á rb o l te m p o ra l E n p rin c ip io , s o
d e lo q u e s u c e d ía e n los m o n tíc u lo s b in a rio s, la p o sic ió n n u n c a c a m b ia
l o a q u e llo s n o d o s q u e e s ta b a n e n lo s c a m in o s d e re c h o s in ic ia le s e s ta rá n e n e l c a
lis ta s e c c ió n d isc u te u n a im p le m e n ta c ió n d e la s c o la s d e p rio rid a d c o n m e z c la
m in o d e re c h o d e l á rb o l te m p o ra l C o m o re s u lta d o d e i in te rc a m b io , m o s tra d o e n la
q u e e m p le a á rb o le s b in a rio s: lo s m o n tíc u lo s se s g a d o s. E n p rim e r lu g ar, s e m u e stra
F ig u ra 2 2 .2 . e s to s n o d o s fo rm a rá n e l c a m in o iz q u ie rd o d e l á rb o l re s u lta n te . C uan
q u e si n o n o s im p o rta d e m a s ia d o la e fic ie n c ia , la m e z c la d e d o s á rb o le s c o n o r d e
n a c ió n d e m o n tíc u lo s e s sen c illa A c o n tin u a c ió n , se re a liz a u n a p e q u e ñ a m o d ifi d o s e re a liz a n la s m e z c la s d e e s te m u d o , e l tip o d e á rb o le s c o n o rd e n a c ió n de
c a c ió n (e l m o n tíc u lo sesg a d o ) q u e e v ita las m e fic ic n c ia s i*bvias del a lg o ritm o orí m o n tíc u lo s re s u lta n te s e c o n o c e c o m o m o n tíc u lo se sg a d o .
U n a d e s c r ip c ió n recurvivu e s c o m o sig u e : s e a /. e l á rb o l c o n la ra íz m a s p e q u e
g iu a l P o r u ltim o , se re a liz a u n a d e m o s tra c ió n d e q u e la o p e ra c ió n m o d e l a r p ara
lo s m o n tíc u lo s s e s g a d o s e s lo g a rítm ic a e n c o s te a m o rtiz a d o y s e c o m e n ta la re le ñ a y H e l o tr o á rb o l. S e re a liz a e n to n c e s e l sig u ie n te p ro c e s o :
v a n c ia p rá c tic a d e e s te re su lta d o . |. S i u n o d e lo s á rb o le s e s v a cío , e l . t r o e s e l re s u lta d o d e la m ezc la.
2 E n c a s o c o n tra rio , to m a m o s c o m o T c m p e l su b á rb o l d e re c h o d e I
22.1.2 M ezcla simple d e árboles co n ordenación V E l s u b á rb o l iz q u ie rd o d e L s e c o n v ie n e e n s u n u e v o su b á rb o l d e re c h o .
de montículos 4 S e c a lc u la e l re s u lta d o d e la m e z c la re c u rs iv a d e T tv tp \ que se co n
v ie rte e n e l n u e v o s u b á rb o l iz q u ie rd o d e I.
S u p o n g a m o s q u e te n e m o s d o s á rb o le s c o n o rd e n . / / . y //> . q u e d e b e m o s m ezc lar.
P o r m e d io d e l in te rc a m b io d e h ijo s c o n fia m o s e n q u e la lo n g itu d d e l c a m in o d e
C la ra m e n te , si a lg u n o d e lo s d o s á rb o le s es v a c io , e l o tr o e s e l re s u lta d o d e la m e z
re c h o n o c re c e rá e x c e siv a m e n te . P o r eje m p lo , s. m e z c la n * » u n por d e á rb o le s c o n
c la. E n c a s o c o n tra rio , p a ra m e z c la r U*s d o s a rb o le s c o m p a ra m o s s u s ra íc e s L a
u n ú n ic o c a m in o d e re c h o prolongad»», lo s n o d o s q u e in te rv ie n e n e n d ic h o s cam in o s
m e z c la s e re a liz a d e fo rm a recu rsiv a c o m b in a n d o e l á rb o l d e m a y o r ra íz c o n e l s u
n o re a p a re c e rá n e n n in g ú n c a m in o d e re c h o , a l m e n o s d u ra n te u n tie m p o . A u n q u e es
b á rb o l d e re c h o * d e l á rb o l d e m e n o r raíz
p o sib le o b te n e r a rb o le s e n lo s q u e c a d a n o d o a p a re c e e n u n c a m in o d erech o , e sto
1.a f ig u ra 2 2 .1 m u e s tra q u e e l e fe c to d e e s ta e s tra te g ia re c u rsiv a e s q u e lo s c a
só lo p u e d e o b te n e rse c o m o re s u lta d o d e un g ran n ú m e ro d e m ezc las re la tiv a m e n te ^
m in o s d e re c h o s d e las d o s c o la s d e p rio rid a d s e c o m b in a n p a ra fo r m a r la n u ev a
e fic ie n te s. E n la sig u ien te secció n , d e m o s tra m o s rig u ro sam en te e s te h e c h o e sta b le - ^
c o la ilo p rio rid a d T o rio s lo s n o d o s d e l c a m in o d e re c h o m a n tie n e n su s u b á rb o l iz
c ie n d o q u e e l c o s te a m o rtiz a d o d e la o p e ra c ió n d e m e z c la e s lo g arítm ico
q u ie r d o in ic ia l, y s ó lo c a m b ia n lo s n o d o s d e l c a m in o d e re c h o O b s e rv e q u e e n r e a
lid ad Im á rb o le s q u e a p a re c e n c o m o a rg u m e n to e n e l e je m p lo m o s tra d o e n la Ei-
g u ra 22 I n o p o d ría n o b te n e rs e e m p le a n d o ú n ic a m e n te in s e rc io n e s y m e z c la s , va
q u e . tal y c o m o h e m o s c o m e n ta d o , d u ra n te u n a m e z c la n o p u e d e n a ñ a d irs e h ijo s
i/q u ie r d o s . El e f e c to c o n sig u ie n te e s q u e . lo q u e a p a re n ta se r u n á rb o l b in a rio c o n
o rd e n a c ió n d e m o n tíc u lo s e s e n re a lid a d u n a se c u e n c ia o rd e n a d a q u e s e c o rr e s p o n
d e c o n e l c a m in o d e re c h o d e l á rb o l. IX- e s te m o d o , to d a s las o p e ra c io n e s tie n e n
c o s te lin eal
fig u ro 22 2 M e r c k , d e m o n ftc u k * s e w o o o s fo m e z c O n lo , c o m b o s O e m c - o , . #
i - m p lr n r . u j l q u i c i - J r | u . t u t > a i N 4 c v A g u í ».• c m p k M e l d e r e c h o poi u m p lu u U I
re s u tto d o s e c o n v ie rte e n ol c o m in o izquierdo
22.1.4 Análisis del montículo sesgado
S e a n I I , y H-, d o s m o n tíc u lo s se s g a d o s , c o n y N ? n o d o s, re sp e c tiv a - Te
m e n te , y sea A' su ta m a ñ o c o m b in a d o ( e s to es. N , + N 2I. S u p o n g a m o s q u e
S u p o n g a m o s q u e le ñ e m o s d o s m o n tíc u lo s . / / , y / / 2. q u e tie n e n / , y r2 n o d o s en
e l c a m in o d e r e c h o d e I I , tie n e I , n o d o s lig e ro s y h , n o d o s p e s a d o s , es
su s re s p e c tiv o s c a m in o s d e re c h o s . E n to n c e s e l tie m p o e m p le a d o e n re a liz a r su
d e c ir /, * h , m u lo s e n to ta l. P o r s u p a n e , e l c a m in o d e r e c h o d e I I . tiene
m e z c la e s p ro p o rc io n a l a r , + r 2. C u a n d o p a g a m o s u n a u n id a d p o r c a d a n o d o e n
I, m u lo s lig e ro s y /r, n o d o s p e sa d o s, e s d e c ir / , * h , m u lo s e n to ta l. S i se
los c a m in o s d e re c h o s , e l c o s te d e u n a m e z c la e s p ro p o rc io n a l a lo a b o n a d o . C o m o
d e fin e e l / u ile n c n d c o m o e l n u m e r o to ta l d e m u lo s p e sa d o s e n la co le c c ió n
lo s á rb o le s n o tie n e n n in g u n a re s tric c ió n e s tru c tu ra l, io d o s lo s n o d o s e n a m b o s á r
d e m o n tíc u lo s se s g a d o s q u e e sta m o s m a n e ja n d o , e n to n c e s e l c o s te d e la
b o le s p u e d e n c a e r e n sus c a m in o s d e re c h o s . E s to g e n e ra u n a c o ta <-)( N ) p a ra el
m e zc lo e s. a lo su m o . 2 log N + (/i, + h 2 ), / h t o e l c a m b io e n e l p o te n c ia l
c a s o p e o r d e la m e z c la (el E je rc ic io 2 2 .4 p id e la c o n s tru c c ió n d e un e je m p lo ). En
es. c o m o m u c h o . 2 log A' - i h , + h , ).
c o n tra p o sic ió n , c o m o m o s tra re m o s m u y p ro n to , e l tie m p o a m o rtiz a d o d e la m e z
c la d e m o n tíc u lo s s e s g a d o s e s D d o g N ).
Id c o s te d e la m e z c la e s e l n ú m e r o d e n o d o s e n lo s c a m in o s d e r e c h o s , o De
A l ig u al q u e e n lo s á rb o le s d e e n s a n c h a m ie n to , la d e m o s tra c ió n se h a c e in tro
se a . / , + / , + /i, + h , . C o m o e l n ú m e r o d e n o d o s li g e r o s e s lo g a
d u c ie n d o u n a lu n c ió n d e p o te n c ia l q u e c a n c e la e l c o s te v a ria b le d e la> o p e ra c io n e s
r ítm ic o . / , ^ l lo g ,V, J + I y / z ^ L l o g ANJ + I D e m o d o que
d e lo s m o n tíc u lo s se s g a d o s. Q u e re m o s q u e la fu n c ió n d e p o te n c ia l a u m e n te en
^ log A', + log A'2 + 2 ^ 2 log N . d o n d e la ú ltim a d e sig u a ld a d se
0 ( l o g N ) ~ ( r , t- r2 ) d e m o d o q u e e l c o s te to tal d e u n a m e z c la y e l c a m b io d e p,»-
o b tie n e a p a r t ir d e l T e o re m a 2 1 4 . C o n to d o e llo , e l c o s te d e la m e zc la es.
len c ial só lo s e a D i lo g ,V). S i e l p o te n c ia l e s m ín im o a n te s d e la p rim e ra o p e ra c ió n ,
a lo su m o . 2 lo g N + (/i, + li2 ). luí c o ta d e l c a m b io d e p o te n c ia l s e d e d u c e
a p lic a n d o la té c n ic a d e s u m a s s o la p a d a s te n e m o s g a ra n tiz a d o q u e e l g a s to to ta l d e
d e l lie e h o d e q u e s ó lo lo s m u lo s q u e in te rv ie n e n e n la m e zc la p u e d e n c a m
M o p e ra c io n e s e s 0 { M log N ) . ig u al q u e e n lo s á rb o le s d e e n sa n c h a m ie n to .
b ia r s u e s ta d o p e s a d o /lig e r o , y d e q u e c u a lq u ie r n o d o p e s a d o d e l <a m in a
L o q u e s e n e c e sita e n to n c e s e s a lg u n a c la s e d e fu n c ió n d e p o te n c ia l q u e c a p tu
d e b e c o n v e r tir s e e n lig ero , x a q u e s u s h ijo s s e in te rc a m b ia n . In c lu so s i t o
re el e fe c to d e las o p e ra c io n e s d e lo s m o n tíc u lo s se sg ad o s. E n c o n tra r u n a fu n ció n
d o s lo s n o d o s lig e ro s s e c o n v in ie r a n e n p e s a d o s , e l c a m b io d e p o te n c ia l
tal e s b a sta n te c o m p lic a d o . S in e m b a rg o , u n a v e z e n c o n tra d a , la d e m o s tra c ió n es
re la tiv a m e n te corta. e sta ría a ú n lim ita d o ¡u ir I , + / , - ( / ; , + h 2 ). E m p le a n d o e l a r g u m e n to a n
terio r. e s to e s. a lo su m o . 2 lo g Ai - (/», + h , ) .
D E F I N I C I O N : l 'n n o d o ¡< e s p e s a d o si e l ta m a ñ o d e s u s u b á rb o l d e re c h o es
m a y o r q u e e l ta m a ñ o d e l s u b á rb o l iz q u ie rd o , e n c a s o c o n tra rio , se d ic e q u e es
lig ero . E n p a rtic u la r, c u a n d o lo s d o s s u b á rb o le s d e u n n o d o tie n e n e l m ism o E l c o s te a m o r tiz a d o d e lo s m o n tíc u lo s se sg a d o s p a r a la s o p e r a c io n e s Te.
ta m a ñ o te n e m o s q u e e s lig ero . m e z c l a r , i n s e r t a r y e l i m i n a r M i n e s , a lo su m o . 4 l o g A'.
S e a «t>, e l p o te n c ia l d e la c o le c c ió n d e m o n tíc u lo s se sg a d o s in m e d ia ta - De
E n la F ig u ra 2 2 .3 . a n te s d e la m e z c la , lo s n o d o s 3 y 4 s o n p e sa d o s . D e s p u é s d e
m e n te d e s p u é s d e la i -é s im a o p e ra c ió n . O b s e r v e q u e «I»,, = (I v 4», í 0.
la m e z c la , s ó lo e l n o d o 3 e s p e sa d o . S e p u e d e n c o m p ro b a r fá c ilm e n te tre s h e c h o s.
U n a in s e r c ió n c o m ie n za p o r c r e a r u n á r b o l c o n u n ú n ic o m ulo, c u y a ra íz
E n p rim e r lu g a r, c o m o re s u lta d o d e la m e z c la s ó lo los n o d o s d e l c a m in o d e re c h o
es, / x t r d e fin ic ió n , lig era . D e e s te m o d o , n o s e a lte ra e l p o te n c ia l a n te r io r
p u e d e n v e r m o d ific a d o su c a rá c te r p e sad o lig e ro , y a q u e n in g ú n o tro n o d o v e a lte ra
a la m e zc la su b s ig u ie n te . U n a o p e r a c ió n e l i m i n a r M i n c o m ie n za p o r d e
d o s sus su b árb o les E n se g u n d o lu g ar, to d a h o ja e s lig era. E n te rc e r lugar, e l n ú m e ro
s e c h a r la ra íz d e un á r b o l, y c o m o c o n s e c u e n c ia d e lo c u a l n o p u e d e
d e n o d o s lig ero s e n e l c a m in o d e re c h o d e u n n o d o N e s. a lo su m o , [ lo g N ] + I.
a u m e n ta r e l p o te n c ia l Ip o d r ía . d e h ech o , r e d u c irse i. T ra s e llo se p ro d u c e
E s to e s d e b id o a q u e e l h ijo d e re c h o d e u n n o d o lig e ro tie n e m e n o s d e la m itad del
la m e zc la d e s u s h ijo s . E n d e fin itiv a , to d o q u e d a r e d u c id o a c o n s id e r a r los
ta m a ñ o q u e su p a d re , p o r lo q u e p u e d e a p lic a rs e e l p rin c ip io d e la d iv is ió n p o r la
c o s te s d e la m e zc la . S e a c, e l c o s te d e la m e zc la q u e s e p r o d u c e c o m o r e
m ita d E l + I a d ic io n a l v ie n e c o m o re s u lta d o d e q u e la s h o ja s s e a n lig e ra s. A p a r
s u lta d o d e la i-é s im a o p e r a c ió n . E n to n c e s c, + «I», «I», , $ 4 log N .
tir d e e sto s p re lim in a re s , p o d e m o s d e m o s tra r lo s T e o re m a s 22.1 y 22.2.
A p lic a n d o la té c n ic a d e s u m a s s o la p a d a s s o b r e M o p e ra c io n e s, o b te n e m o s
i l j ^ 4 |V/ loS N ' y ° 1,1 d ife re n c ia «I»„ «l»„ n o e s n eg a tiva .
Import. S o p o r t o .* : Im p o rt S o p o rto .C o m p a ra b le ;
im p o rt E x c e p c io n e s .• ;
C l a s e Mont ic u lo K m p a re ja r u e n t o a
CONSTRUCCIÓN: s i n n in g u n a I n i c i a ; i z a c i ó n
F ig u ra 2 2 .7 D escripción d e la c la se M o n t i c u l o E m p a r e j a m i e n t o s .
1
2 • Impiementa un m o n t í c u l o d e emparedamientos.
3 ’ P e r m i t e la o p e r a c i ó n reducirClave. p e r o n e c e s i t a del uso
4 • d e anyadi rElcm o n lugar de insertar. S i e m p r o so m a n t i e n e
5 * el o r d e n d e l mo n t í c u l o ; no se permiten operaciones perezosas.
6 •/
7 public class MonticuloEmpareJanion: := Lwpiementa ColaPriorídad
8 <
9 p u b l i c Korii i c u l o E m p a i e j a m i e n t o f l ( )
10 ( v a c i a r ! >; I
11 p u b l i c C o m p a r a b le b u s c a r M in i l t h r o w s D e s b o r d a m i e n t o l n f e r i o r
12 ( /* F i g u r a 2 2 . 1 0 • / 1
13 p u b l i c v o i d i n s e r t a r ! C o m p a r a b le x I
14 ( / • F ig u r a 2 2 .1 1 */ )
15 p u b l i c N o d o E n p a r e j a m ie n t o s a r .y a d iiE le c ii C o m p a r a b le x i
16 { / * F ig u r a 2 2 .1 1 *t I
F ig u ra 22 6 R ecom b m ación d e herm anos después d e e l i m i n a r M i n ; e n c a d a 17 p u b l i c C o m p a r a b le e l i m in a r M in ! ) th r o w o D e s b o r d a m i e n t o l n f e r i o r .
m ezclo e l á rb o l d e m ayor rae se co n vierte en e l hijo izquierdo d e l árbol 18 { /* F i g u r a 2 2 . 1 2 * / 1
d e m enor raíz ( a ) los árboles obtenidos (b ) Iras e l prim er paso. <c) Iras 19 p u b l i c v o i d r e d u e l r C l a v o i NodoEr.pare j a m i e n t o s p . Cor*>arabl« n u e v o V a l o r l
20 th r c w s v a l o r I l e g a l
la pnm era m ezcla d e i seg undo paso, (d ) tros la seg u n d a m ezcla del
segundo paso 21 { /• F ig u r a 2 2 .1 3 * 1
22 pub lic b o o iea n e s V a c lo l 1
23 ( r e t u r n t a m a n y o A c t u a l == 0 ; )
p ro c e s o , y a q u e p u e d e s u c e d e r q u e la r a í / d e l á rb o l q u e re s u lte te n g a « I h ijo s. 24 pub lic v o id v a c ia r ! )
Si e s to su c e d e re p e tid a s v e c e s e n u n a m ism a se c u e n c ia d e o p e ra c io n e s , la n itin a 25 l t a m a n y o A c t u a l = 0 ; r a í z =n u i l ; )
26
e l im : ñ a s M in te n d rá , p o r c a d a o p e ra c ió n , un c o s te a m o rtiz a d o lin e a l, e n lu g a r de 27 prívate ln t ramanyoActual; // N ú m e r o d e e l e m e n t o s d e l m o n t ieule
lo g a rítm ic o . E l E je rc ic io 2 2 .8 p id e a l le c to r q u e c o n s tru y a u n a se c u e n c ia c o n e sta s 28 p r í v a t e N o d oE m p arejam ien tos r a iz ;
c a ra c te rístic a s. 29
30 p r í v a t e N o d oE m p arejam ien tos
31 c o r p a r a Y S n l a z a ! N od oE m p a rejan u e n to s p r i m e r o , N o d c E m p a r e j a s ; e n t e s se gu n d o
n o s o n a c c e s ib le s a lo s u su a rio s d e la clase. 7 I
6 ííi eaVacio« i >
L o s a tr ib u io s d e N o d o E m p a r e j a r a i e n t o s so n . u n a re f e re n c ia a l n o d o ra íz 9 t h r o w n e v D e s f a o r d a a i e n t o l í i í e r i o r ( ' M o n t í c u l o v a c i o * ( ;
t r a i r t y u n e n te r o q u e re p re s e n ta e l n u m e r o d e e le m e n to s a lm a c e n a d o s e n 1 0 r e t u r n r a í z . d a t o :
b u s c a r M i n m .* im p le m e n ta e n la F ig u ra 2 2 .1 0 . C o m o e l v a lo r m ín im o se e n 7
8 public void insertar» Comparable x >
c u e n tra e n la ra íz , e s ta ru tin a s e c o d ific a fá c ilm e n te F.l m é to d o i n s e r t a r , m o s
9 {
tra d o e n la F igura 2 2 .1 1. c re a u n á rb o l c o n u n ú n ic o n o d o y lo c o m b in a c o n r a i z 10 nuevoNodo = new NodoEmparejamientos( x );
11
12 ta-manyoActual * * ;
1 p a c k a g e E s t r u c t u r a s D a t o s ; 13 if < raíz == n u i l I
2 im p o r t S o p o r t e . * ; im p o r t S ú p o t t e . C o s p a r n b l c ; 14 raíz -nuevoNodo;
3 15 else
4 •• 16 raíz ■ co»po r a Y E n l a = * * ( raíz. n u e v o N o d o I;
5 *C l a s e p u b l i c a p a r a u t i l i z a r l a c o n M o n t ic u lo E n p n r e ia m ie n t o s . S ó lo e s 17 )
6 * p ú b l i c a p a r a p e r m i t i i d e v o l v e r r e f e r e n c i a s a r e d u c i r C l n v e . 18
7 • N o t i e n e m é t o d o n p ú b l i c o s n i a t r i b u t o s p u n l i c o s . 19 /• *
8 * S s e e M o n t ic u I o E m p a r e ja n ; e n t o B 20 * Inserción en la cola d e p r ioridad y devolución d e u n HodoEmpsrejasiente
9 • 21 * que pu e d e emplear r e d u c i r C lave.
1 0 P u b l i c c l a s s N o d o E n p a r e ja iü ie n t o s 22 * S e p e r m i t e n duplicados.
11 23 * A p a r a n x e l « l ó m e n t e .i in s e r t a r .
12 24 * f l r e t u m el n o d o q u e c o n t i e n e e i e l e m e n t o r o c i ó n i n s e r t a d o .
1 3 • C o n s t r u y e e l M o d o K r p .ir o jn m io r it o B . 25
14 • Sparom e l E l e m e n t o e l v a lo r alm acen ad o e n el nodo. 26 p u b l i c NodoEmpóxelamentos anyadirElenil comparable x •
15 27 t
16 N o d o E m p a ro D sm len co n ( C o m p a r a b le e l E le m e n t o > 28 In s e rta n * >:
17 ( 29 re t u r n nuevoNodo:
18 d a to • e l E lem en to; 30 |
19 iz q u ie r d o = n u il;
Figuro 22.11 M é to d o s i n s e r t a r y a n y a d i r E i e m d e la c la s e d e los m o n tícu lo s
20 sig u ien teH em a n o * n u il;
d e e m p a re ja m ie n to s
21 prev = n u il;
22
23
p u ra o b te n e r u n n u e v o á rb o l. C o m o h e m o s m e n c io n a d o a n te rio rm e n te e n e s ta m is
24 / / A c c e s o a m i s t o s o ; a c c e s i b l e p e r o t r a s rutinas d e l p a q u e te
m a se c c ió n . a n y a d i r E i e m in v o c a a i n s e r t a r v d e v u e lv e u n a re fe re n c ia a l n u e
25 C o m p a r a b le d a t o ;
26 N odoEm pare j a n i i e n t o a i z q u i e r d o ; v o n o d o re c ié n c re a d o . O b s e rv e q u e d e b e m o s c o n s id e ra r e l c u s o e sp e c ia l d e in s e r
27 N o d o E m p a reja m ien to s siq u ie n te H o im a n o : ta r u n e le m e n to e n u n á rb o l vacío.
28 N o d oE m p areiam lontos p r e v : L n la F ig u ra 2 2 .1 2 se im p le m e n ta e l m é to d o e l i m i n a r M i n . S i e l m o n tíc u lo
29 )
d e e m p a re ja m ie n to s e s tá v a cío , te n e m o s u n e rro r. E n c a s o c o n tra rio , d e s p u é s de
Figuro 22.9 C i ó s e N o d o E m p a r e ia m i e n t o s g u a rd a r e l v alo r d e la ra íz , e n la lín e a 12 lla m a m o s a c o m b i n a H e i ^ m o s para
1 /•• La rutina r e d u c i r e l a v e se implementa cn la Figura 22.13. Nótese que si el
2 • Elimina el menor elemento de la c o l a d e p r i o r i d a d . nuevo valor es mayor que el inicial, entonces podríamos destruir el orden del mon
3 • « e x c e p t t o n Dnnbordrtmlentolnfetíor n i la c o l a 4 * p r i o r i d a d - R t á v a c i a . tículo. Pero no hay ningún modo de saberlo sin exam inar antes los hijos. Como
4 •/
puede haber bastantes, hacerlo sería muy ineficiente. Com o consecuencia, supon
5 public Comparable eiiminarMin! ) throws Desbordamientolníerior
6 {
dremos que C S un error intentar aumentar la clave em pleando r e d u c i r e l a v e . (F.l
7 Comparable x = buscarMin! ); Ejercicio 22.Ó pide al lector que describa un algoritmo para a u m e n ta r e la v e .)
8 Después de realizar este test, disminuimos el valor del nodo. Si dicho nodo es la
9 if{ r a i z .i z q u i e r d o == nuil l raíz. ya hemos terminado. En caso contrano. eliminamos el nodo de la lista de lu
10 raiz ■ nuil: jos en la que se encuentra, por m edio del código en las líneas 17 a 23. Después de
11 else
hacer esto, combinamos el árbol resultante con la raí/.
'2 r a í z =c o n b i n a H e r m a n o B !ra i z . i z q u i e r d o l;
13 I^as dos rutinas restantes son com par a Y E n l a z a , que com bina dos árboles, v
14 ramanyoAccual--; comb i n a H e r m a n o s . que combina todos los hermanos dado el prim ero de ellos.
15 La Figura 22.1-1 muestra cóm o se combinan dos suhmonlículo.x. El procedimiento
16 r e t u r n x; se generaliza para permitir que el segundo de los submontículos pueda tener her
17 1
manos (esto es necesario para el segundo recorrido de la mezcla cn dos pasadas).
Figura 22.12 M é to d o e l i m i n a r M i n d e la c la se d e los m ontículos d e e m p are ja Como ya hemos mencionado en este capítulo, el submontículo con la raíz más
m ientos grande se convierte en el hijo situado mas a la izquierda del otro submontículo. El
código se m uestra en la Figura 22.15. Nótese que existen muchos puntos cn los
que se com prueba que una referencia no es n u i l antes de acceder a su atribulo
c o m b in a r lo s s u h á rb o le s d e las r a íc e s y e n la z a r e l rc s u lia d o a la n u e v a r a í /. S i no
p re v . Esto sugiere que quizás sería útil tener un centinela n o doN ulo. tal y como
hay su h á rb o le s q u e m e z c la r, c n la lín e a I d in ic ia li/a m o s r a i z a n u i l . L a s ru tin as
es costumbre en las implementaciones avanzadas de los árboles de búsqueda. Esto
i n s e r t a r v e i i m i n a r M i n a ju s ta n a d e c u a d a m e n te t a m a n y o A c t u a l .
se ilcja com o Ejercicio 2 2 .13.
Por últim o, en la Figura 22.1b se im plem enta c o m b i n a H o r r r . a n o B . Em plea
1 /• • mos el vector v e c t o r A r b o l e s para alm acenar los suhárboles En el peor de los
2 * C am bia e l v a l o r d o l « l a m e n t o g u a r d a d o e n «1 m o n t í c u l o casos, tendrem os .V - I herm anos, por lo q u e el vector em plea ta m a n y o A c tu a l
de emparejam ientos.
para determ inar su capacidad Com enzam os por separar los suhárboles y guar
3 • Oparam p c u a l q u i o r n o d o d e v u e l t o p o r a n y a d i r E l e m .
4 • i ' i par am n u e v o V a l o r e l n u e v o v a l o r , q u e d e b e s e r m e n o r q u e darlos en v e c t o r A r b o le s , em pleando para ello el bucle de las lincas 18 a 24.
5 • e l v a l o r almacenado ah o ra. Suponiendo que tenem os m ás de un herm ano para com binar, en las líneas 28 a
6 • (¿excepción V a l o r l l e g a 1 s i n u e v o V a lo r e s mayor que 30 realizam os el recorrido de izquierda a derecha. Term inam os el proceso de
7 • e l v a lo r alm acenado ahora. m ezcla con el recorrido de derecha a izquierda en las líneas 41 a 43. U na vez
8 •/
que hem os term inado, el resultado se encuentra en la posición 0 del vector, y
9 p u b l i c v o i d r e d u c i r e l a v e i N o d c E m p a r e j a m e r i t e s p, Cc-mparabi e n u e v o V a l o r i
10 throw» V alor Ile g a l puede se r devuelto.
11 I
12 ii! p.dato.m enorC uv! nuevoValor l I
13 t h r o w new V a l o r l l e g a l ! •R e d u c i r C l a v e incorrecto* I;
14 p .d a t o = nuevoValor;
15 I f ! p Jm c a i z |
16 <
17 Ifl p . sig u ie n te H e ra a n o !- r.ull i
16 p .siguienteH erm ano.prev = p .p re v ;
19 if< p . p r e v . i z q u i e r d o =*> p I
20 p .p re v .iz q u ie rd o = p .siguion*eHernano;
21 else
22 p.prev.siguient«H erm ano • p.sLgui«nteH erm ano;
23 p.siguienteH erm ano = n u il;
24
25 raíz = comparaYEnlazaI r a i z . p >;
26 )
27 |
Kn la p rá c tic a , e l a lm a c e n a m ie n to d in á m ic o (y la re c o g id a d e b a s u ra i d e l v e c 44
45 r e t u r n voctorA rhoioHI 0 li
to r p u e d e se r e x tre m a d a m e n te c o s to s o \ e n m u c h a s o c a s io n e s n o s e rá n ecesario .
46 )
P u e d e s e r m e jo r u s a r u n o b je to e s tá tic o c o n u n d e te rm in a d o ta m a ñ o in ic ia l, e x p a n
d ié n d o lo c u a n d o sea n e c e sa rio , lis to s e p ro p o n e a l le c to r e n e l E je rc ic io 2 2 .1 1. Figura 22.16 El n ú c le o cíe! a lg o ritm o d o m o / c la im p le m e n ta u n a m e z c la e n d o s
p a s a d a s p a r a c o m b in a r to d o s los h e rm a n o s , a p artir d e l p rim ero d e
ellos
22.2.3 Aplicación: el algoritmo de Dijkstra para la obtención
de cam inos mínimos d i s t . E n c a d a m o m e n to , p o r c a d a v é rtic e d e l g ra fo . n e c e s ita m o s u n s o lo o b je to de
tip o C a m i n o en la c o la d e p rio rid a d , p e r o p o r c o m o d id a d m a n te n e m o s v a rio s. F n
P a ra m o s tra r c ó m o p u e d e e m p le a rs e la o p e ra c ió n : e d u c i r C l a v e . re s c rib im o s el e s ta se c c ió n , re to c a re m o s e l c ó d ig o d e m o d o q u e . c u a n d o un v é rtic e w v e a re d u c i
a lg o r itm o d e D ijk s tra e s tu d ia d o e n la S e c c ió n 14.3. R e c o rd e m o s q u e m a n e ja m o s d a su d is ta n c ia , se b u s c a r á su p o s ic ió n e n la c o la d e p rio rid a d , re a liz á n d o s e u n a
u n a c o la d e p rio rid a d d e o b je to s d e u p o C a m in o , o rd e n a d o s s e g ú n e l a trib u to o p e ra c ió n r e d u c i r C l a v e s o b re su c o rre s p o n d ie n te o b j e t o c a m i n o .
E l c ó d ig o m o d ific a d o %e m u e s tra e n la F ig u ra 2 2 .1 7 . I . m c a m b io s s o n re la ti m o n tíc u lo s d e e m p a r e ja m ie n to s In ic ia l m e n te to d a s las re f e re n c ia s s o n n u l 1 i lí
v a m e n te p e q u e ñ o s . E n p r im e r lu g a r, e n la lin e a 5 d e c la r a m o s q u e m e s u n m o n n e a s 1 1 \ 12» C a d a v e / q u e s e in s e rta u n e le m e n to e n e l m o n tíc u lo d e e m p a r e ja
tíc u lo d e e m p a r e ja m ie n to s e n lu g a r d e u n m o n tíc u lo b in a rio . M a n e ja m o s ta m m ie n to s . m o d ific a m o s e l v e d a r p o s i c i o n e s M o n t i c u l o . E s to sc h a c e e n la li
b ié n u n v e c to r d e re fe re n c ia s . p o s i c i o n e s M o n t i c u l o . q u e a p u n ta n a n o d o s d e n e a 3 8 \ E l a lg o n tm o s c h a sim p lific a d o A h o ra lla m a m o s a e l i m i n a r M i n en
ta n to y c u a n d o e l m o n tíc u lo n o e s té v a c ío , e n lu g ar d e h a c e rlo re p e tid a s v e c e s h a s
1 n A l g o r i t m o d * Di j k a t r a e m p l e a n d o m o n t í c u l o s d e e m p a r e j a m i e n t o s ta q u e a p a re c e u n n o d o n o c o n su lta d o . C o m o c o n s e c u e n c ia , y a n o e s n e c e sa rio el
2
a trib u to e l 1 m i n a d o . C o m p a re las lín e a s 18 a 21 c o n e l c o rre s p o n d ie n te c ó d ig o d e
3 (
la F ig u ra 14.29. T o d o lo q u e q u e d a p o r c o m e n ta r s o n la s a c tu a liz a c io n e s tra s la
4 l n t v. v;
5 Kon? l c u i o E . T p a r e ; a r u u n t o s n o = n e w Mont i c u i o E r p a r e j a r s i u n t o a ( >; lín e a 3 1 . q u e in d ic a n q u e sc h a realizad»» u n c a m b io . S i e l v é rtic e n»* h a sid»> inscr
6 a=;no v re c: la d o n u n c a e n la c o la d e p rio rid a d , lo in s e rta m o s p»*r p n m e r a v e / , a c tu a liz a n d o e l
7 NodC’E n t p a r e j a n i r n t o a posicionwaMont v e c to r p o a i c i o n e s M o n t i c u l o . E n c a s o c o n tr a n o . e n la lin e a 41 in v o c a m o s la
8
ru tin a r o d u c i r C l a v e .
9 1i i r*Mp i n r mi t o s i );
Q u e la im p le m e n ta c ió n d c l a lg o ritm o d e D ijk s tra q u e e m p le a m o n tíc u lo s b in a
10 pJooss l c l o n e s M o n t l c u l o
• new N o d o E m p a r e j a m i e n t o s [ nunV'ert
ra is s e a m á s rá p id a q u e la q u e e m p le a m o n tíc u lo s d e e m p a re ja m ie n to s d e p e n d e d e
11 f’c»r
o r i i n t i = 0 ; i < n u m V e r t i c e * : 1• • )
12 posicior.esM ont I c u lo ] 1 | = n u i l; v a rio s fa c to re s. U n e s tu d io , d e ta lla d o e n las re fe re n c ia s , in d ic a q u e e l m o n tíc u lo
13 t a b l a | n o d o l n i c i o J . d i s t = 0: d e e m p a re ja m ie n to s e s lig e ra m e n te m e jo r q u e e l m o n tíc u lo binan** c u a n d o a m b o s
14 m . i n s e r t a r I n # » C a s in o ! n o d o X n lc lo . 0 l ) ; s e im p lc m c n ta n c u id a d o s a m e n te . L o s re s u lta d o s d e p e n d e n e n g ra n m e d id a d e los
15
d e ta lle s d e c o d ific a c ió n y d e l n ú m e ro d e lla m a d a s a r e d u c i r C l a v e . S o n n e c e s a
16 try
rio s e s tu d io s m á s p ro fu n d o s p a ra d e c id ir c u á n d o so n m ás a d e c u a d a e n la p ra c tic a
17 <
18 whilet Imm.esVaclol ) i lo s m o n tíc u lo s d e e m p a re ja m ie n to s.
19
20 vre. mm.eliminarMini I;
21
22 R e su m e n
23 • r p - new L l s t a E n l a z a d a 1 1 e r ( t a b l a | v j . a d y
24 íor p . e s t a D e n t r o i »; p . a v a n z a r ( » ) E ste c a p ítu lo d e s c rib e d o s e s tru c tu ra s d e d a to s q u e p e rm ite n la m e z c la d e s u s e le
25 m e n to s. y so n e fic ie n te s e n té rm in o s d e c o s te a m o rtiz a d o : e l m o n tíc u lo s e s g a d o y
^ w ■ i(A rista Ip .re c u p e ra r( )i.dest: el m o n tíc u lo d e e m p a re ja m ie n to s. A m b a s so n d e s e n c illa im p le m e n ta c ió n . y a q u e
*7 int cvw - I <Ar : s r a ) p . r p c u p < ' r o r ( II .coste
28 n o tie n e n n in g u n a re s tric c ió n e s tru c tu ra l. E l m o n tíc u lo d e e m p a re ja m ie n to s p a re c e
29 x i 1 cvw < 0 ) te n e r u n c ie r to in te ré s e n la p rá c tic a , per», su a n á lisis c o m p le to c o n tin ú a s ie n d o un
30 return falso; in trin c a d o p ro b le m a a b ie rto
31 ifl tabla ( w 1.d ist > t a b l a 1 v J . d i s t * cvw l E l s ig u ie n te c a p ítu lo , q u e e s y a e l ú ltim o d e e s te te x to , d e s c rib e u n a e stru c tu ra
32
d e d a to s q u e s e e m p le a p a ra m a n ip u la r c o n ju n to s d is ju n to s > c u y o a n á lis is a m o rti
33 tabla] w ] .d is t * tabla! v 1 . d i s t • cvw;
34 z a d o ta m b ié n e s in teresa n te.
tabiaf w l . a r . t = v:
35
36 Ca mi n o n u e v o V a i o r = n e w C a m i n o i w, t a b l a ] w ) . d i s t )
37 l í ( poniclor.onM ont I c u l o ] w | í» n u i l )
38 pom cioneaM onticulof w ] =
E le m e n to s d e l ju e g o
39 xm .an yadirE lo cl nuevoVaior )
40 m e z c la en d o s p a sa d a s El »*rdcn e n e l q u e se c o m b in a n lo s m o n tíc u lo s d e e m p a re
41 nw. r e d u c i r C l a v e t posicionesK or.ticulo] ).
w ja m ie n to s e s im p o rta n te E l a lg o ritm o m á s s e n c illo p a ra h a c e rlo e s la m c /c la
42 nuovoValor );
43 e n d o s p a sa d a s , e n la q u e lo s m o n tíc u lo s s e m e /c la n e n p a re s , d e iz q u ie rd a a
44 d e re c h a . D e sp u é s sc r e a l i/ a u n n u e v o re c o rrid o d e d e re c h a a iz q u ie rd a p a ra
45 c o n c lu ir la m e /c lu .
46 m o n tíc u lo de e m p a re ja m ie n to » Á rbol M a n o c o n o rd e n a c ió n d e m o n tíc u lo s y sin
47 Exception v t ( ) n E s t o n o p u wd o s u c e d e r re s tric c io n e s e s tru c tu ra le s . S u a n á lisis n o e s tá c o m p le to , p e ro p a re c e c o m p o r
48 trué;
49 ta rse b a sta n te b ie n e n la p ractica.
iír™“
2 2 .6 . D e sc rib a u n a lg o ritm o . u r e g l a r M o n t : - .c u l o d e c o s te lin e a l e n la clase
d e l»»s m o n tíc u lo s se sg ad o s.
2 2 .7 . M u e s tre q u e g u a rd a n d o e l ta m a ñ o d d c a m in o d e re c h o d e c a d a n»*«l«* del
arb»»l p o d e m o s im p o n e r u n a c o n d ic ió n d e e q u ilib r io q u e p e rm ite q u e to
d a s las o p e ra c io n e s te n g a n c o s te lo g a rítm ic o e n e l cas»* p e o r E sta e s tru c
; ~ - * .
tu ra d e d a to s s e c o n o c e c o m o n u m tic u lo iz q u ierd ista .
m ie m o s d e n o s « < ^ r a ^ ,k * « " P « ¡ * 22.X. M u e s tre q u e n»* e s a d e c u a d o e m p le a r u n a p ila e n la im p le m e n ta c ió n d e la
o p e ra c ió n c o m b in a H e rn w in o n d e la c la s e d e l»*s m o n tíc u lo s d e e m p a re ja
,a - * ■ no m ie n to s ; p a ra e llo , c o n s tru y a u n a s e c u e n c ia d e c o s te a m o n i/a d o lineal
p»*i o p e ra c ió n .
En Internet 2 2 .9 . D e sc rib a cónu» im p le m c n ta r a u r v e n t a r C l a v e e n la c la s e d e l»>s m o n tícu -
l»»s d e e m p a re ja m ie n to s
Cuestiones breves 2 2 .1 4 .
n o d o fíu lo .
Im p le m e n te u n a lg o ritm o q u e u tilic e c o la s p a ra c o m b in a H e rm a r .o
2 2 .1. M uestre e l m ontícuk» seseado r e s u li» .^ c o m p a re su e fic ie n c ia c»»n e l a lg o ritm o d e d»*s p a s a d a s c o d if ic a d o e n la
c ía s de inserción: U *Wrtlr ,a * s'F u*entes secuen- F ig u r a 2 2 .1 6 .
2 2 .1 5 . S i la o p e ra c ió n r e d u c l r C l a v e n»> e s ta p e rm itid a , las re fe re n c ia s a l»»s
1,1 I • 2 . 3. 4 . 5. 6 . 7
p a d re s n o s o n n e c e sa ria s. Im p le m e n te e l m o n tíc u lo d e e m p a re ja m ie n to s
4. 3. 5. 2. 6 . 7. I
sin d ic h a s re fe re n c ia s y c o m p a re su e fic ie n c ia c o n la d e l m o n tíc u lo b in a
rio y o e l m o n tíc u lo se s g a d o y »»cl á rb o l d e e n sa n c h a m ie n to .
Z S Z Z Z Z s z r * *- - — — » * * * . . 2 2 .1 6 . D iseñ e u n a p p lc t q u e m u e s tre e l com p»»fiam icnto d e l»»s m o n tíc u lo s nes
"> 1. 2 . 3. 4 . 5 . 6 . 7 g a d o s »> d e lo s m o n tíc u lo s d e e m p a re ja m ie n to s
*> 4 . 3. 5 . 2. 6 . 7. |
Bibliografía
,m W ln a r M in sobre ca d a uno de
F.l m o n tíc u lo iz q u ie r d is ta | 11 fue la p rim e ra c o la d e p rio rid a d c o m b in a b le e fic ie n
P ro b le m a s teó rico s te m e n te . E s la v a ria c ió n su g e rid a e n e l E je rc ic io 2 2 .7 . p e n sa d a p a ra e l cas»» pe»*r
tic l»*s m o n líc u lo s \csga»l»*s. I.»»s m o n tíc u lo s sesgad» >s se «icscrihcn e n |5 | D ic h o
a rtíc u lo in c lu y e la s so lu c io n e s d e lo s E je rc ic io s 2 2 .4 y 22.5.
|2 | ilc sc n h e e l m o n tíc u lo d e em porcjaniicni»*s y d e m u e s tra q u e c u a n d o s e e m
p le a la m e z c la e n d»«s p asad as, e l c«*ste am urti/j»k> d e U sías la s »*peruc¿ones e s a I»»
su m o lo g a ría n n o . a u n q u e aún n o se s a lv si eMu « n a e s lo su fic ie n te m e n te aju stad a C A P I T U L O _______________________________________________________________________
23
E n p a rtic u la r, e n |6 | p u e d e e n c o n tr a rs e a lg u n a e v id e n c ia c n e l s e n b d o d e q u e el
c o s te u m o r ti/a d o d e to d a s la s o p e ra c io n e s , e x c e p to e l i m l n r t r M i n . p o d ríu ser
c o n sta n te , m ie n tra s q u e e l c o s te d e e i i m i n a r M i n s í p a re c e >er lo g a rítm ic o . I X
e s ic m o d o , c u a lq u ie r s e c u e n c ia d e D e i i m i n a r M i n y o tr a s I o p e ra c io n e s cs
Estructura de partición
(M I + D lo g /V ). S in e m b a rg o , e n | 4 | a p a re c e n iH ras e v id e n c ia s q u e p a re c e n s u g e
rir que- e s to n o e s a s í U n a e s tru c tu ra d e d a to s q u e s í c o n s ig u e c o n s e g u n d a d las
c o la s d e se a d a s , a u n q u e e s d e m a s ia d o c o m p lic a d a p a ra s e r u s a d a e n la p rá c tic a , es
e l m o n tíc u lo >lr h b o n a n i |3 |. P a re c e q u e e l m o n tíc u lo d e e m p a re ja m ie n to s p o d ría
s e r la a lte rn a tiv a p rá c tic a a l b u e n c o m p o rta m ie n to te ó r ic o d e l m o n tíc u lo d e F ib o -
nucci. L os m o n tíc u lo s iz q u ie rd ista s y d e F ib o n a c c i s e d is c u te n c n |7 |.
L n 14 1 p u e d e e n c o n tr a rs e u n a c o m p a r a c ió n e n tr e d is tin ta s c o la s d e p rio rid a d en
el c o n te x to d e l p ro b le m a d e l á rb o l d e c o b e rtu ra m ín im o (d is c u tid o c n la S e c c ió n
2 3 .2 .1 ). e m p le á n d o s e u n m é to d o m u y sim ila r a l a lg o ritm o d e D ijkstra.
E
ste c a p ítu lo d e s c rib e u n a e s tru c tu r a d e d a to s e fic ie n te p u ra re s o lv e r e l p ro
1. C . A. C r in e . -L in e a r L ists a n d P rio rity Q u c u c s as B a la n c e d B inary T rccs» . b le m a d e la e q u iv a le n c ia : la e s tru c tu ra d e p a rtic ió n E sia e s tru c tu ra se im
T e c h n ic a l R e p o r t S T A N -C S -7 2 -2 M . C o m p u te r S c ie n c e D e p a rtm e n t.'S ta n - p le m e n ta d e fo rm a s e n c illa : c a d a ru tin a re q u ie re s ó lo u n as lín e a s d e có d ig o .
ío rd U n iv c rs ity . P a lo A lto . C a lif. (1 9 7 2 ). D ic h a im p le m e n ta c ió n ta m b ié n e s e x tre m a d a m e n te ra p id a . re q u irie n d o u n tiem p o
c«Mistante e n p ro m e d io p o r o p e ra c ió n . E s ta e s tru c tu ra d e d a to s ta m b ié n re s u lta
2. M L. F re d m a n . K S e d g e w ic k . I ) I ) S le a to r. y K . E. T a rja n . - T h e P airin g
in te re sa n te d e sd e u n p u n to d e v ista te ó ric o , v a q u e su análisi> e s m uy d ifíc il: la
H cap : A N ew F o m i o f S e lf-a d ju s tin g H e a p -. A l g o ñ t h m u a I 119X6». I I I -
fo rm a fu n c io n a l d e l c o s te e n e l c a s o p e o r n o se p a re c e a n in g u n a d e las d isc u tid a s
129
h a s ia a h o ra e n e s le libro.
3. M L. F re d m a n y R . F.. T a rja n . -F ih o n a e c i H c a p s a n d T h e ir U se s m Im- E n e s te c a p ítu lo v erem o s
p ro v e d N etW ork O p u m i/a tio n A lg o r ith m s - . J o u r n a l o f tlic A C M 3 4
(19X 7). 5 9 6 -6 1 5 . • D o s a p lic a c io n e s s im p le s d e la e s tru c tu ra d e p artició n
• C ó m o p o d e m o s im p le m e n ta r la e s tru c tu ra d e p a rtic ió n c o n un e sfu e rz o m í
4 B . M . E. M o re t y H D . S h a p iro . -<An E m p iric a l A n a ly sis o f A lg o rith m s nim o.
Cor C o n s iru c tin g a M ín im u m S p a n n in g T r c e - , / ‘n u e e d i n g s o f ¡h e S e c o n d • C ó m o m e jo ra r la v e lo c id a d d e la s e s tru c tu ra s d e p a rtic ió n u tiliz a n d o d o s o b
W o rksh o /i o n A lg o r ith m s a n d D a ta Structure.% (1 9 9 1 >. 4 0 0 - 4 1 1. s e rv a c io n e s sim p le s
5. I). I ) S le a to r y K . E. T a rja n . -S e lf-a d ju s tin g H c a p s - . S IA M J o u r n a l o n • U n a n á lis is d e l tie m p o d e e je c u c ió n d e u n a im p le m e n ta c ió n rá p id a d e la e s
C o m p u tin g 15 1 19X6». 5 2 -6 9 . tru c tu ra d e p a rtició n .
1. R eflexiva : a R a e s c ie r to p a ra to d o a e S.
2. S im é tric a : a R h si y s ó lo si b R a.
3. T ra n s itiv a : a R h y b R c im p lic a n q u e a R c.
© © 1 -1
-1
1 4
4 -3
5 4
6 4
7 h
Figura 23.11 El bo sq u e g e n e ra d o p o r uniones por ta m a éo . c o n los tam años repre Figuro 23.13 Un bosque g en e rad o por la unión por altu ra c o n é sta co d rfico d a por
sentado s p o r m edio a e sus inversos negativos medno d e valores negativos
log/V veces. (Utilizamos este mismo argumento en el algoritmo de búsqueda rápi la unión por altura es una variante trivial de la unión por tamaño. Ya que las al
da de la Sección 23.3.) Esto implica que el tiempo de ejecución de una operación turas empiezan cu 0.almacenamos el inverso negativo dcl número de nodos en el
buscar es log /V) y que una secuencia de M operaciones tarda como mucho camino más profundo, en vez de la altura Esto se muestra en la Figura 23.13.
<) { M log N ) . El árbol de la Figura 23.12 muestra el peor caso posible después de
15 uniones, que se obtiene cuando todas las uniones son enta* árboles de igual ta
maño. IJichi» caso corresponde a losdenominados á r b o le s h in o m ia le s . Los árboles 2 3 .4 .2 C o m p re sió n d e c a m in o s
hinomiales tienen otras aplicaciones en estructurasde dalos avanzadas.
Para implementar esta estrategia, necesitamos mantener información sobre el El algoritmo unir buscar, tal y como sc ha descrito hasta el momento, es bastante
tamaño de cada árbol. Ya que sólo estamos utilizando un vector, podemos hacer aceptable en lamayoría de las ocasiones. Es muy simple y lineal en promedio pura
que laentrada del vector correspondiente a laraíz contenga el inverson e g a tiv o dcl una secuencia de M instrucciones. Sin embargo, el caso peor todavía es poco
tamaño del árbol, como muestra la Figura 23 II. En consecuencia, la representa atractivo. Esto es así. porque no es obvio que una secuencia de operaciones u n i r
ción inicial será un vector con Unías las entradas iguales a - I.Cuando se realiza de una aplicación particular (como el problema A CP) sea aleatoria(de hecho, para
una unión, comparamos los tamaños; el nuevo tamaño es la suma de los viejos. árboles concretos, se aleja mucho de serlo. En consecuencia, resulta deseable que
Por tanto, la unión por tamaño no es en absoluto complicada y no requiere ningún intentemos cambiar las cosas de alguna forma, de manera que podamoN garantizar
espacio extra. También es rápida en promedio. Esto se debe a que cuando se reali una cota mejor para el caso peor de una secuencia de M operaciones. Parece pro
zan uniones arbitrarias, habituulmente se mezclan conjuntos muy pequeños (usual bable que no haya más mejoras posibles del algontmo unir, ya que el caso |>eor se
mente de un solo elemento) con conjuntos grandes. El análisis matemático de esto alcanza cuando se mezclan árboles de igual tamaño. I-aúnica forma de acelerar el
es bastantecomplejo; la bibliografíaal final del capítulo proporciona algunos pun algoritmo, sin alterar completamente la estructura de datos, es hacer algo inteli
teros a la literatura. gente en laoperación buscar.
L'na implementación que también garantiza una profundidad logarítmica es la Esta operación inteligente es la c o m p r e s i ó n J e c a m i n o s . Claramente, después i.c
u n ió n p o r a ltu r a Mantenemos la altura de los árboles en vez de su tamaño y rea ilcrealizar una búsqueda del elemento v.tendríasentido cambiar el padre de i lo- c<
lizamos lasuniones haciendo que elárbolmenos profundopase a sersubárboldel más mando como tal laraíz del árbol. De esta forma, una segunda búsqueda de x . o de 'c
profundo. Éste es un algoritmo sencillo, ya que la altura del árbol sólo aumenta en cualquier elemento en el subárbol de i.seria más rápida. Sin embargo, no hay ne
una unidad cuando los dos árboles unidos tienen la misma altura. En consecuencia. cesidad de detenemos ahí. Podríamos también cambiarel padre de todos losnodos
en el camino de acceso hasta v. El efecto de la compresión de caminos es que se
cambia el padre de to d o s los nodos en el camino desde x a la raíz, luí Figu
ra 23.14 muestra el efecto de la compresión de caminos después de buscar(l4).
en el árbol dcl caso peor de la Figura 23.12. Con el cambio extra de dos padres
que hemos realizado, los nodos 12 y 13 están ahora una posición más cerca de la
raíz v los nodos 14 y 15 están dos posiciones más cerca. Por tanto los accesos fu
turos se beneficiarán (eso esperamos) del trabajo extra de lacompresión de cami
nos. Observe que las uniones subsiguientes harán que los nodos levantados vuel
van a ser llevados a mayor profundidad.
Cuando las uniones se producen de forma arbitraria, lacompresión de caminos u
es una buena idea, porque hay gran número de nodos profundos; éstos son acer- *
Figu ro 23.12 A rb ol d o l caso p e o r c o n N - 16 cados a la raíz por lacompresión de caminos. Sc ha demostrado en este caso que. o
23.5 Im plem entación en Ja v a
Cuando se utilizan ambas heurísticas, el algoritmo es casi lineal en el caso pe»* 23.6.1 Análisis del algoritmo unir/buscar
Concretamente, el tiempo necesario en el caso peor para procesar una secuencia de
En esta sección establecemos una c«xa bastante ajustada del tiemp»» «leejecución
como mucho A' I operaciones de unión y M «le búsqueda es Oí A/* M . N i ) (su
puesto M 2 N ) . donde atM . V) es la función inversa de la fu n c ió n , lc A c k e r m a n n . de una secuencia «k-A/ ll(N )operaciones de unttin y búsqueda. Las operaciones
que se define «lela siguiente manera*: u n i i y b u s c a r pueden producirse en cualquier orden, pero u n i r s e hace por ran-
g«> y b u s c a r se hace con compresión «lecamin«*s
Empozan** con algunos t«*«xeniasque tienen que ver c«»n el numero de nodos
4 (i.» - y >> I «le rango r. Intuitivamente, «k-bido a la regla «le la unuin por rango, hay muchos
Mi. I) “ M i - 1.2) i Z 2 más n«xlos «k* rango pequen»» que «le rango gran<k.\ En particular, pucik* haber co-
M i.j) = M i - I. M i.j -D) i.j> 2 n*» mucho un no«k» de rang«» l«»gA'. L«» que queremos hacer es calcular una c«»ta
tan precisa como sea posible «k-l número «k* n«Hl«*s «k-cierto rang»» r. Ya que los
A panir «leesto definimos rang«»s sólo cambian cuando se realiza la «ipcración u n i i (y sólo cuando l«»sdos
árb»»les tienen el mismo rango). p»xk-m»»s hacer el cálculo ignorando la c»*mpre-
a A/.X ) = min U ^ I|M<j.LA# A'J) > l**gA'»;. sión de caminos. Esto se hace en elTeorema 23.1
c ie r ta . S e a T e l á r b o l d e r a n g o r c o n e l m e n o r n u m e r o d e d e s c e n d i e n t e s y
s e a x l a r a í : d e T S u p o n ¡ta n to s q u e l a ú l ti m a u n i ó n q u e i n v o l u c r ó a x fu e
e n tr e 7j y 7\. S u ¡> o n g a m o \ q u e la r a iz d e í ,e r a x . S i T , tu v i e r a r u n g o r.
«k»n«lcel numero «leveces que aparece el 2 en el expolíenteesj . F l X ) = A { 2 . N ) se e n lo m e s T |s e r í a u n á r b o l d e r a n g o r c o n m e n o s d e s c e n d i e n t e s q u e T . E s
denomina habitualmeme la función de Ackermann «le una s»)la variable. 1:1inverso t o c o n tr a d ic e l a h ip tU e s is ,l e q u e I tie n e e l m e n o r n u m e r o d e d e s c e n d ie n te s
«le la función de Ackermann «le una sola variable, representado a veces como ¡ u n ib le . P o r ta n to , e l r a n g o d e T\ e s c o m o m u c h o r — I F.l r a n g o d e /•e s
log* A',es el número de veces que se tiene que aplicar el l«>garitmo a N hasta que c o m o m u c h o e l ra n g o d e 7j. p u e s l a u n ió n se h a c e p o r r a n g o . Ya q u e T t i e
N * 1 k»g*65.536 - 4 poruuc loglogloglog65 536 = I.log*2a5 5V| - 5. n e ra n g o r v e l r a n g o s id o ¡ u n ir ía in c r e m e n ta r s e d e b u to a 7-. se d e d i u e q u e
Sin embarco, tenga en cuenta que 2M * üenc más de 20.000 dígitos, a A/.N »crece e l ra n g o d e 7\ e s r - I. F n c o n s e c u e n c ia , e l r a n g o d e T , e s ta m b u - n r - I
aún más lentamente que- k>g*,V |\x ejemplo. A(3. I)- ,\<2.2) = 2r - 16. Por tanto, P o r l a h q u i te s i s d e in d u c c u m . n u l a u n o d e e s t t n u r in d e s n e n e c o r n o m u c h o
para,V< 2 .a A/.A )$3. Es más. va que .4(4. h = A(3. 2»=.4(3..4(2. I))-4(2. 16). 2' 1d e s c e n d ie n te s , l o q u e d a u n t o ta l d e 2'. //>q u e d e m u e s t r a e l te o r e m a
el cual es 2 elevado a una pila «ledieciséis 2. en la práctica. a(A/. A') < 4. Sm em
bargo. z<A/.A') no es constante cuand»» M es algo mayor que N . por loque el tiem El Teorema 23.1 afirma que si n«>se hace compresión «k* caminos, cualquier
po de ejecución no es estrictamente lineal4. n»xl«*«k-rungo r tiene al mcn«»s 2'descendientes La compresión de caminos puede
cambiar esto, ya que elimina «icsccndientes de un n«xk». Sin embargo, cuundo se
realizan uniones, aun c«*n compresión de caminos, utilizan** los rang»*. t|uc son
^ J c í,* , t r v x u o - c ,.m e c o m o 4 ll. ; | . y . |. p m / > I U u » .l./* ¿ . e n c » ic k m . . t m w «u,
mo. r i intrrMi e m e nu> l.-nijmen«c estimaciones de laaltura EsU* rang»* se comp»»rtan como si r**hubiera ««impre
sión de caminos. Por tanto, cuando se está acotando el número de mxk* de rango
^ « l°g’ V‘ ” U V ,“ 2 UfH“ W w* M‘,° " ’S0 '" 4 ' t -
r. lucompresión «lecaminos puede serignorada Esto se hace en el Te«»rema 23.—
A h o ra e s b o z a m o s c o n m á s d e ta lle n u e stro m é to d o d e c o n ta b ilid a d . D iv id ire
2 L l n u m e r o d e n o d o s d e ra n g o r e s to m o m u c h o N f2 '
m o s los n o d o s p o r s u ra n g o . L u e g o d iv id ire m o s lo s ra n g o s e n g ru p o s d e ran g o s
E n c a d a b ú s q u e d a , d e p o s ita re m o s e u ro s e n u n fo n d o c o m ú n g e n e ra l > a lg u n o s d ó
n S in la c o m p r e s ió n d e c a m in o s , c a d a n o d o d e ra n g o r e s la ra íz d e u n su- la r e s e n n o d o s e sp e c ífic o s. P ara c a lc u la r e l n ú m e ro to ta l d e d ó la re s d e p o sita d o s,
lu irb o l d e a l m en o s 2 ' n o d o s. N in g ú n tu r o m u lo e n e l á r b o l p u e d e te n e r c o m e n z a m o s p o r c a lc u la r lo d e p o s ita d o e n c a d a m x lo . S u m a n d o lo d e p o s ita d o e n
ra n g o r . P o r ta n to to d o s lo s su b á r b o le s d e ra n g o r so n d is ju n to s E n c o n c a d a n o d o d e ra n g o r. o b te n d re m o s e l d e p ó s ito to ta l p o r ra n g o . L u eg o , su m a re m o s
secu en c ia . Iia y c o m o m u c h o N' 2' su b tirlm le s d is ju n to s y p o r ta n to N fÜ n o to d o s los d e p ó sito s d e c a d a ra n g o r e n u n m is m o g ru p o g . o b te n ie n d o e l to tal d e
d o s d e ra n g o r. p o sita d o e n c a d a g ru p o d e ra n g o s g . F in a lm e n te , s u m a re m o s to d o s lo s d e p ó sito s
e n c a d a g ru p o d e ra n g o s g p a ra o b te n e r e l n ú m e ro to ta l d e d ó la re s d e p o sita d o s.
El T e o re m a 2 3 .3 p u e d e p a re c e r b a sta n te o b v io , p e r o e s c ru c ia l e n e l a n á lisis. S u m a n d o e s to a l n ú m e ro d e e u ro s e n e l fo n d o c o m ú n o b te n e m o s la re s p u e sta final
C o m o h e m o s m e n c io n a d o a n te rio rm e n te , re p a rtire m o s los ru n g o s e n g ru p o s.
C a d a ra n g o r irá a l g r u p o Í7 (r). s ie n d o G d e te rm in a d a m á s a d e la n te (p a ra e q u ili
3 E n c u a lq u ie r p u n to d e l a lg o r itm o u n ir /b u s c a r , lo s r a n g o s d e lo s n o d o s d e b ra r los c a rg o s e n e u ro s y d o la re s ). E l ra n g o m a y o r e n c a d a g ru p o d e ru n g o s se
un c o m in o d e s d e u n a h o ja a la r a íz c r e c e n tic fo rm a m o n ó to n a . d e n o ta rá F ig ) . d e m ixk» q u e F = G 1 es u n a in v e r sa d e G . E l n ú m e ro d e ra n g o s
e n u n g ru p o d e ra n g o s , g > ü . e s p o r ta n to l \ g ) - E {g - I). C la ra m e n te , G( V ) es
u n a c o ta s u p e r io r m u y re la ja d a d e l m a y o r g ru p o d e ra n g o s. C o m o e je m p lo , s u p o n
r» E l te o r e m a e s o b v io s i n o h a y c o m p r e s ió n d e c a m in o s. S i d e s p u é s d e la
g a m o s q u e d iv id im o s lo s ra n g o s c o m o e n la F ig u ra 2 3 .1 7 . E n e s te cu so .
c o m p re sió n d e c a m in o s, u n n o d o v e s d e s c e n d ie n te d e o tr o r \ c la r a m e n te
G (r ) = \ i / r \ E l m a y o r ra n g o e n e l g ru p o g e s F { g ) - g 2. O b se rv e m o s ta m b ié n
v tie n e q u e s e r d e s c e n d ie n te d e \v « u a n d o só lo se re a liza n la s o p e ra c io n e s
d e u m o n . P o r ta n to , e l ra n g o d e v e s e stric ta m e n te m e n o r q u e e l ra n g o d e w . q u e e l g r u p o g c o n tie n e lo s ra n g o s d e l F { g I) + I a l E(g). in c lu siv e . E sta lór-
m u lu n o s e p u e d e a p lic a r a l g ru p o d e ra n g o s 0 . p o r l o q u e p o r c o n v e n ie n c ia h a re
m o s q u e e l g r u p o d e ra n g o s 0 s ó lo c o n te n g a a lo s e le m e n to s d e ra n g o 0. O b se rv e
P re s e n te m o s a h o ra u n re s u m e n «le n u e stro s re s u lta d o s p re lim in a re s . E l T e o re
q u e lo s g ru p o s s e fo rm a n c o n ra n g o s c o n se c u tiv o s.
m a 2 3 .2 n o s in d ic a a c u á n to s n o d o s s e le s p u e d e a sig n a r ra n g o r . Y a q u e los ran-
C o m o m e n c io n a m o s a n te rio rm e n te e n e l c a p ítu lo , c a d a in s tru c c ió n u n i r r e
* g o s s ó lo s e asig n a n m e d ia n te u n io n e s , la s c u a le s n o tie n e n id e a d e la c o m p re s ió n
q u ie re u n tie m p o c o n s ta n te , c o n ta l d e q u e c a d a ra íz m a n te n g a su ra n g o . P o r ta n to ,
, d e c a m in í» , e l T e o re m a 2 3 .2 e s v á lid o e n c u a lq u ie r p a s o d e l a lg o ritm o u n ir b u s
la s u n io n e s so n e s e n c ia lm e n te g ra tis , e n lo q u e s e re fie re a e s ta d e m o stra c ió n .
c a r. a u n e n m e d io d e c o m p re s io n e s . E l T e o re m a 23.2 e s a ju s ta d o , e n e l s e n tid o de
C a d a b ú sq u e d a re q u ie re un tie m p o p ro p o rc io n a l a l n ú m e ro d e n o d o s e n e l c a
q u e p a ra c a d a r a n g o r e s p o sib le lle g a r a te n e r :V/2' n o d o s. S in e m b a r g o , e s lig era
m in o d e s d e e l n o d o q u e re p re s e n ta a l e le m e n to i a c c e d id o h a s ta la r a í /. P o r ta n to ,
m en te h o lg a d o , y a q u e lo q u e n o e s p o sib le e s a lc a n z a r sim u ltá n e a m e n te to d a s la s
d e p o sita re m o s u n e u r o e n c a d a v é rtic e d e l c a m in o . S in e m b a rg o , si e s to fu era to d o
c o ta s d e lo s d is tin to s ra n g o s. M ie n tra s q u e e l T e o re m a 2 3 .2 d e s c rib e el n ú m e ro de
lo q u e h ic ié s e m o s , n o p o d ría m o s e s p e ra r m u c h o d e la c o ta , y a q u e n o e s ta m o s s a
n o d o s d e ra n g o r . e l T e o re m a 2 3 .3 n o s in d ic a su d is trib u c ió n . C o m o e ra d e e s p e
c a n d o v e n ta ja d e la c o m p re s ió n d e c a m in o s. E n c o n s e c u e n c ia , d e b e m o s u tiliz a r en
ra r. e l ru n g o d e lo s n o d o s c re c e e stric ta m e n te a lo la rg o d e c a d a c a m in o d e sd e u n a
n u e stro a n á lisis a lg u n a p ro p ie d a d d e la c o m p re s ió n d e c a m in o s . L a o b se rv a c ió n
h o ja a la raíz.
c la v e e s q u e . c o m o re s u lta d o d e la c o m p re s ió n d e c a m in o s , u n m x lo o b tie n e un
A h o ra e s ta m o s p re p a ra d o s p a ra d e m o s tra r e l te o re m a p rin c ip a l. E l p la n b á s ic o
n u e v o p a d re q u e tie n e un m a y o r ra n g o q u e e l viejo.
e s e l sig u ie n te : u n a b ú sq u e d a d e c u a lq u ie r m x lo v re q u ie re u n tie m p o p ro p o rc io n a l
P a ra in c o rp o ra r e s te h e c h o e n la d e m o s tra c ió n , u tiliz a re m o s e l sig u ie n te m é to
al n ú m e ro d e n o d o s e n e l c a m in o d e v a la ra íz . D u ra n te c a d a b ú sq u e d a c a r g a r e
d o im a g in a tiv o d e c o n ta b ilid a d : p a ra c a d a m x lo v e n e l c a m in o d e s d e e l n o d o i a c
m os u n a u n id a d d e c o s te p o r c a d a n o d o e n e l c a m in o d e v a la r a í /. P ara a y u d a r a
c e d id o a la ra íz , d e p o s ita m o s u n a m o n e d a d e u n o d e lo s d o s tip o s p o sib le s:
c o n ta b iliz a r lo s c a rg o s , c o lo c a re m o s u n a m o n e d a im a g in a ria e n c a d a n o d o d e l c a
miní». E ste e s u n tru c o d e c o n ta b ilid a d q u e n o e s p a rte d e l p ro g ra m a . R e p re se n ta
s u n a a lte rn a tiv a , a u n q u e sim ila r e n e l fo n d o , a l u s o d e la (u n c ió n d e p o te n c ia l e n e l
G rupo R ango
a n á lisis a m o rtiz a d o d e lo s á rb o le s d e e n s a n c h a m ie n to y lo s m o n tíc u lo s se sg a d o s.
C u a n d o te r m in a e l a lg o ritm o r e c o g e r e m o s to d a s la s m o n e d a s d e p o s ita d a s p a ra d e
0 0
te rm in a r e l tie m p o to tal in v e rtid o e n s u e je c u c ió n .
1 1
C o m o tr u c o d e c o n ta b ilid a d a d ic io n a l, d e p o s ita re m o s d o s tip o s d e m o n e d a s d i
2 2.3.4
fe re n te s. d ig a m o s e u ro s y d ó la re s. M o s tra re m o s q u e d u ra n te la e je c u c ió n d e l a lg o
ritm o . s ó lo p o d re m o s d e p o s ita r c ie r to n ú m e ro d e e u ro s d u ra n te c a d a b ú sq u e d a (in 3 de 5 a 9
ile p c n d ic n tc m e n te d e c u á n to s n o d o s h a y a ). M o s tra re m o s ta m b ié n q u e só lo 4 d e 10 a 16
p o d e m o s d e p o s ita r c ie r ta c a n tid a d d e d ó la re s e n c a d a n o d o (in d e p e n d ie n te m e n te i d e ( J - 1>? «• 1 a / 2
d el n ú m e ro d e b ú sq u e d a s ). S u m a n d o e s to s d o s to ta le s o b te n d re m o s u n a c o ta del
n ú m e ro to tal d e m o n e d a s q u e p u e d e n s e r d e p o sita d a s. Flauta 23.17 Posible división d e los rang os en grupos
1. S i v e s la r a í /. «> si e l p a d re d e r e s la r a í / o si e l p a d re d e v e s tá e n un S i e n a p lic a c ió n d e la re g la 2 s e d e p o sita u n d ó la r e n u n v é rtic e v. » s e n i
g ru p o d e ra n g o s d ife re n te al d e v. c a rg a m o s u n a u n id a d e n c o n c e p to de m o v id o ¡*or la c o m p r e s ió n d e c a m in o s y p a sa r á a te n e r u n p a d r e d e ra n g o
a p lic a c ió n d e e s ta reg la, d e p o s ita n d o u n c u r o e n e l fo n d o co m ú n . m a y o r q u e su fu id r c a n tig u o . Ya q u e e l r a n g o m a y o r d e su g r u p o e s F ( g >.
2. E n o tr o c a s o , d e p o s ita m o s u n d ó la r e n e l n o d o . te n e m o s la g a r a n tía d e q u e d e s p u é s d e d e p o s ita r F{ g ) m o n ed a s, e l p a d r e
d e v n o e sta rá m á s e n e l g r u p o d e ra n g o s d e v.
E l T e o re m a 2 3 .4 a firm a q u e l a c o n ta b ilid a d e s a c e rta d a .
L a c o ta d e l T e o r e m a 2 3 .6 p u e d e m e jo ra rse u tiliz a n d o e l ta m a ñ o «leí g ru p o d e
ra n g o s e n v e z d e s u m a y o r m ie m b ro . S in e m b a rg o , e s to n o m e jo ra ría la c o ta o b te
n id a p ara e l a lg o ritm o u n ir.b u sc a r.
t P a ra c u a lq u ie r o p e ra c ió n d e b ú s q u e d a , e l n ú m e ro to ta l d e m o n e d a s d e p o
sita d a s. e n e l f o n d o c o m ú n o e n lo s m u lo s, e s e x a c ta m e n te ig u a l a l n ú m e r o
d e m u lo s a c c e d id o d u r a n te la b ú sq u e d a .
E l n ú m e ro d e n o d o s . N { g ) e n e l g r u p o d e ra n g o s g > 0 e s c o m o m u ch o
-n .
O bvia.
P o r e l T e o re m a 2 3 .2 . h a y c o m o m u c h o N / Y n o d o s d e r a n g o r. A l su m a r
s o b r e e l g r u p o d e ra n g o s g . o b te n e m o s
P o r ta n to , só lo n e c e s ita m o s s u m a r to d o s lo s e u ro s d e p o s ita d o s b a jo la re g la I
c o n to d o s lo s d ó la re s d e p o s ita d o s b a jo la re g la 2 . A n te s d c s e g u ir c o n la d e m o s tra
c ió n . e s b o c e m o s las id eas in tu itiv a s. L o s d ó la re s so n d e p o s ita d o s e n u n n o d o c u a n I 7
r-rtí l) * l -
d o e s c o m p rim id o y su p a d re e s ta e n e l m is m o g ru p o d e ru n g o s q u e e l n o d o . Y a
q u e d e s p u é s d e c a d a c o m p re s ió n d e c a m in o s e l rnxlo o b tie n e u n p a d re d e g ra d o * N
m a y o r y d a d o q u e e l ta m a ñ o d e u n g r u p o d e ra n g o s e s fin ito , o c a s io n a lm e n te e l * 1 y
r= F l g - 1 1 + I ¿
n o d o o b te n d rá u n p a d re q u e n o e s tá e n e l m is m o g ru p o . E n c o n s e c u e n c ia , e l n ú
m e ro d e d ó la re s q u e p u e d e n c o lo c a rs e e n u n n o d o e s tá lim ita d o . E ste n ú m e r o es ' I
a p ro x im a d a m e n te ig u al al ta m a ñ o d e l g ru p o d e ru n g o s d e l n o d o . P o r o tro lu d o , los I V
r-M * l>* I -
c a rg o s e n e u ro s ta m b ié n e s tá n lim ita d o s , e s e n c ia lm e n te p o r e l n ú m e ro d c g ru p o s
d e ra n g o s. E n c o n se c u e n c ia , q u e re m o s e le g ir lo s g ru p o s d c ra n g o s d e fo rm a q u e N * 1
sean p e q u e ñ o s tp a r a lim ita r lo s c a rg o s e n d ó la re s ), p e ro q u e n o h a y a m u c h o s (p a ra
lim ita r lo s c a rg o s e n e u ro s ). A h o ra e s ta m o s p re p a ra d o s p a ra ra z o n a r c o n d etalle
p o r m e d io d e u n a s e r ie d e te o re m a s , d e l 2 3 .5 a l 23.10. 2N
< n*i
E n c a d a b ú sq u e d a , s e d e p o s ita n c o m o m u c h o d o s e u ro s, d e b id o a la r a íz y
ii su hijo. I ' or e l T e o re m a 2 3 .3 . lo s v é rtic e s e n e l c a m in o h a c ia la r a íz c r e E l m á x im o n u m e r o d e d ó la r e s d e p o sita d o s e n lin io s lo s v é rtic e s e n e l g ru - 7]
c e n m o n ó to n a m e n te e n ra n g o . \ p o r ta n to , e l g r u p o d e r a n g o s n u n c a d e- p o d e rangos g es co m o m u ch o S F { g ) 2 “ \
i rece a l a s c e n d e r p o r e l c a m in o . Y a q u e c o m o m u c h o h a y G< N ) g r u p o s d e
E l re s u lta d o s e o b tie n e m e d ia n te u n a sim p le m u ltip lic a c ió n d e la s c a n tid a - 0
r a n g o s (a d e m á s d e l g r u p o 0 ). s ó lo o tr o s G ( N ) v é rtic e s p u e d e n s e r u tiliz a
d es o b te n id a s e n lo s T e o re m a s 2 3 .6 y 23.7.
d o s p a r a g e n e r a r un d e p ó s ito p o r a p lic a c ió n d e la re g la I d e n tr o d e u n a
m ism a b ú sq u e d a . P o r ta n to , e n c a d a b ú s q u e d a p u e d e n c o lo r a r s e a lo s u
m o ( , i \ ) + 2 e u r o s e n e l fo n d o co m ú n . E n c o n se c u e n c ia , a lo la r g o de Im c a n tid a d to ta l d e p o sita d a p o r a p lic a c ió n d e la r e g la 2 e s. a lo su m o , de
u na s e c u e n c ia d e M b ú s q u e d a s c o m o m u c h o M i G ( N ) + 2) e u r o s p u e d e n
■ V F ( g ) 2 F ,S 11 d ó la r e s.
se r d e p o sita d o s p o r a p lic a c ió n d e la re g la I.
Ya q u e e l g r u p o 0 c o n tie n e s ó l o e le m e n to s d e r a n g o 0. n o p u e d e c o n tr ib u ir
a lo s c a rg o s p o r a p lic a c ió n d e la re g la 2 tn o p u e d e te n e r un p a d r e e n e l
m is m o g r u p o d e r a n g o s l E n to n ces, la c o ta s e o b tie n e su m a n d o la s c o n tr i
E n c a d a n o d o in d iv id u a l e n e l g r u p o d e r a n g o s g . e l n ú m e ro to ta l d e e u ro s
d e p o sita d o s e s F { g >. b u c io n e s d e lo s o tr o s g r u p o s d e ru n g o s.
G ru po Pongo le c c ió n q u e d e b e ría m o s a p re n d e r a q u í e s q u e e s m u y im p o rta n te c o n s id e ra r a lte r
n a tiv a s c u a n d o u n p a s o p a rtic u la r n o e s ta to ta lm e n te e s p e c ific a d o . E l p a s o de
0 0 u n ió n e s fle x ib le . S a c a n d o v e n ta ja d e e s te h e c h o , p o d e m o s c o n s e g u ir u n a lg o ritm o
1 1 m á s e fic ie n te .
2 2 L a c o m p r e n s ió n d e c a m in o s fu e h is tó ric a m e n te u n a d e la s p rim e ra s fo rm a s de
3 3.4 a u to -a ju sta m ie n to , q u e n o so tro s h e m o s v is to y a e n o tr o s lu g a re s (á rb o le s d e e n s a n
4 c h a m ie n to . m o n tíc u lo s se sg a d o s). S u u s o a q u í e s e x tre m a d a m e n te in te re s a n te d e s
d e 5 a 16
5 d e u n p u n to d e v is ta te ó ric o , y a q u e fu e u n o d e lo s p rim e ro s e je m p lo s d e u n a lg o
d e 17 0 65 536
ritm o se n c illo c o n u n a n á lisis e n e l c a s o p e o r n o ta n sim p le
6 d e 65.537 o 2 ^ ^
7 R an g o s re a lm e n te g ra n d o s
T e n e m o s, p u e s, lo s d e p ó s ito s b a jo la s re g la s I y 2 . E l to ta l es a l g o r it m o d e b ú s q u e d a r á p i d a Im p le m e n ta c ió n d e u n ir b u s c a r d o n d e b u s c a r es
u n a o p e ra c ió n c o n s ta n te e n tiem p o ,
M ( G ( N ) + 2) + (2 3 .1 ) a l g o r it m o d e k r u s k a l A lg o ritm o q u e se le c c io n a a ris ta s e n o rd e n c re c ie n te d e
c o ste s y añ a d e u n a a rista a l á rb o l si c o n e llo n o se c re a u n ciclo,
T o d a v ía no h e m o s e s p e c ific a d o ( U N ) o s u in v e rs a F ( N ) . O b v ia m e n te , so m o s li a lg o r itm o d e u n ió n r á p i d a Im p le m e n ta c ió n d e u n ir b u sc a r d o n d e u n i r e s u n a
b re s d e e le g ir v in u a lm c n tc c u a lq u ie r c o s a , p e ro p a re c e ra z o n a b le e le g ir ( U N ) «k- o p e ra c ió n c o n s ta n te e n tiem p o ,
fo rm a q u e su p a rtic ip a c ió n e n la E c u a c ió n 2 3 .1 n o s c o n d u z c a a m in im iz a r ésta. a l g o r it m o u n i r / b u s c a r A lg o ritm o q u e s e e je c u ta p ro c e s a n d o o p e ra c io n e s u n i r y
S in e m b a rg o , si G (A ') e s d e m a s ia d o p e q u e ñ a . E ( N ) se rá g ra n d e , p e rju d ic a n d o la b u s c a r u tiliz a n d o u n a e stru c tu ra d e p a rtició n ,
c o ta o b te n id a A p a re n te m e n te u n a b u e n a e le c c ió n e s q u e F U ) s e a la fu n c ió n d e f i á r b o l d e r e c u b r im ie n to Á rb o l fo rm a d o p o r a n s ia s d e u n g r a to n o d irig id o q u e
n id a re c u rs iv a m c n tc c o m o f*<0) - 0 y F < i ) - 2 ' " " n . E s to n o s c o n d u c e a c o n e c ta n to d o s lo s v értices
G riV ) = 1 + L lo g * iV J. lu í F ig u ra 2 3 .1 8 m u e s tra c ó m o se c la s ific a n lo s ra n g o s á r b o l d e r e c u b r i m i e n t o m ín im o S u b g ra to c o n e x o d e (¡ q u e c u b re to d o s lo s v é rti
O b s e rv e q u e e l g ru p o 0 c o n tie n e so lo e l ra n g o 0 . lo q u e re q u e ría m o s e n la d e m o s c e s c o n c o s te to ta l m ín im o E s u n p ro b le m a fu n d a m e n ta l e n la te o ría d e g r if o s ,
tra c ió n d e l T e o re m a 23 .9 . F e s m u y p a re c id a a la fu n c ió n d e A c k e rm a n n d e una b o s q u e C o le c c ió n d e árb o le s.
v a ria b le , d ife re n c iá n d o se s ó lo e n e l c a s o b á sic o . C o n e s ta e le c c ió n d e F y (i . p o d e c la s e d e e q u iv a le n c ia L a c la s e d e e q u iv a le n c ia d e un e le m e n to i e n u n c o n ju n to 5
m o s c o m p le ta r e l an álisis. e s e l su b c o n ju n to d e S q u e c o n tie n e to d o s lo s e le m e n to s re la c io n a d o s c o n .v.
c o m p r e s ió n d e c a m in o s lla c c q u e c a d a n o d o a c c e d id o p a s e a s e r h ijo d e la ra í/
h a s ta q u e o c u rra o tr a u n ió n ,
E l tie m p o d e e je c u c ió n d e l a lg o r itm o u n ir b u s c a r c o n M - Í2l N ) o p e r a e s t r u c t u r a d e p a r t ic i ó n E stru c tu ra d e d a to s u tiliz a d a p a ra m a n ip u la r c o n ju n to s
c io n e s d e b u s c a r e s C)( M lo g * N ). d isju n to s.
fu n c ió n d e A c k e r m a n n F u n c ió n q u e c re c e m u y rá p id a m e n te . S u in v e rsa e s tá a c o
S u s titu im o s la s d e fin ic io n e s d e F v G e n lo E c u a c ió n 23. / . E l n ú m e ro to ta l ta d a e n la p ra c tic a p o r 4
d e e u r o s e s O i M ( H N ) ) - 0 ( 3 # log* N ) . Ya q u e E ( g ) = 2 , ( * “ . e l n ú o p e r a c io n e s d e la e s t r u c t u r a d e p a r t ic i ó n O p e ra c io n e s b á s ic a s p a ra m a n ip u la r la
m e r o to ta l d e d ó la r e s e s N G < N ) - O f N lo g * N ) . D e l h e c h o d e q u e e s tru c tu ra d e p a rtic ió n . S o n u n i r y b u s c a r ,
M = í 2<N ), %e d e d u c e la cota. p r o b l e m a d e l a n te c e s o r c o m ú n m á s p r ó x im o (A C 'P ) D a d o s u n á rb o l y u n a lisia
d e p a re s d e n o d o s d e l á rb o l, e n c o n tr a r e l a n te c e so r c o m ú n m á s p ró x im o d e c a
O b s e rv e q u e te n e m o s m á s e u ro s q u e d ó la re s. L a fu n c ió n <x(M. N ) e q u ilib r a las d a p a r d e n o d o s. A C P e s im p o rta n te e n c ie rto s a lg o ritm o s d e g r a to s y e n b io lo
c o s a s ; é s ta e s la ra z ó n p o r la q u e s e g e n e ra u n a b u e n a c o ta g ía co m p u ta c io n u l.
r a n g o E n lo s a lg o ritm o s d e la e s tru c tu ra d e p a rtic ió n , la e s tim a c ió n d o la a ltu ra d e
u n m id o
Resum en r e la c ió n D e fin id a so b re u n c o n ju n to n o s d ic e si c a d a p a r d e e le m e n to s e s tá n o no
re la c io n a d o s.
E n e s te c a p itu lo h e m o s e s tu d ia d o u n a e s tru c tu r a d e d a to s m uy se n c illa p a ra m a n te r e la c ió n d e e q u iv a le n c ia R e la c ió n re fle x iv a , « m é tr ic a y tran sitiv a,
n e r u n a e s tru c tu ra d e p a rtic ió n . C u a n d o se e je c u ta la o p e ra c ió n u n i r , n o im p o rta , u n ió n p o r a l t u r a H ace q u e e l á rb o l d e m e n o r a ltu ra s e a h ijo d e l á rb o l c o n m a y o r
e n lo q u e s e re fie re a la c o rr e c c ió n , q u é c o n ju n to m a n tie n e su n o m b re U n a v a lio sa a ltu ra d u ra n te la unión
u n ió n p » r r u n g o U n ió n se g ú n la a ltu ra c u a n d o sc h a c e c o m p re s ió n d e c a m in o s
u n ió n p o r ta m a ñ o H a c e q u e e l á rb o l m á s p e q u e ñ o s e a h ijo d c l á rb o l m a y o r d u Problem as teóricos
ra n te la u n ió n
2 3 .5 . lA -m uestrc q u e e l a lg o ritm o d e k r u s k a l e s c o rre c to ¿ H a a s u m id o q u e los
c«>stes d e las arista s so n n o n e g a tiv o s?
Errores com unes 23.6. M u e stre q u e m la u n ió n sc re a liz a p o r a ltu ra , la p ro fu n d id a d d e c u a lq u ie r
á rb o l e s lo g a rítm ic a .
2 3 .7 . M u e stre q u e si to d a s las u n io n e s p re c e d e n a la s b ú sq u e d a s , e l a lg o ritm o
I- un:r a s u m e q u e su s p a rá m e tro s so n ra íc e s d e á rb o le s S e p ro d u c iría n e s
d e la e s tru c tu ra d e p a rtic ió n c o n c o m p re s ió n d e c a m in o s e s lin e a l, a u n si
tra g o s si e n e fe c to n o lo fu e ran U n a im p le m e n ta c ió n m á s c u id a d o s a re a li
la s u n io n e s se re a liz a n a rb itra ria m e n te . O b s e rv e q u e e l a lg o ritm o n o c a m
z a ría d ic h a c o m p ro b a c ió n .
b ia ; s ó lo c a m b ia \ u re n d im ie n to .
2 3 .8 . S u p o n g a q u e q u ie r e a ñ a d ir u n a n u e v a o p e ra c ió n , o i i m i n a r ( x ) . q u e e li
m in a x d e su c o n ju n to a c tu a l y lo c o lo c a aislad o . M u e s tre c ó m o m o d ific a r
En Internet
e l a lg o ritm o u n ir b u sc a r, d e fo rm a q u e e l tie m p o d e e je c u c ió n d e u n a s e
c u e n c ia d e M o p e ra c io n e s sig a sie n d o O t M z i M . K )).
lu í c la s e p a rtic ió n e s tá d is p o n ib le e n In te rn e t e n e l d ir e c to r io D a ta S tru e tu re s El 2 3 .9 . D e m u e stre q u e si las u n io n e s se h a c e n p o r ta m a ñ o y s e r c a li/a la c o m p r e
n o m b re d e l f ic h e ro e s e l sig u ien te:
sió n d e c a m in o s , e l tie m p o d e e je c u c ió n e n e l c a s o p e o r e s aún
D is jS e t.ja v a T ra d u c id o c o m o E s t r P a r t i c x o n . j a v a . c o n tie n e la im plc- O M lo g * N ) .
m c n t.icm n d e la c la s e d e la e s tru c tu ra d e p a rtic ió n 2 3 .1 0 . Suponga que im p lc m c n ta u n a c o m p r e s ió n de c a m in o s p a rc ia l e n
b u s c a r (x ) c a m b ia n d o c a d a p a d re d e lo s ihxIos e n e l c a m in o d e s d e i a
la ra íz p»*c su a b u e lo (d o n d e e llo te n g a s e n tid o ) E s to s e d e n o m in a d i v i
Ejercicios sió n d c l c a m in o p o r ¡a m ita d . D e m u e stre q u e s i sc h a c e e s to y s c u tiliza
c u a lq u ie r u n ió n h e u rístic a , e l tie m p o d e e je c u c ió n e n e l c a s o p e o r sigue
C uestiones breves sie n d o íX.V/ lo g * .V).
1. A . V . A h o . J E. H o p c ro ft. y J . D . U llm a n . T h e D e s ig n a n d A n a ly s is o f
C o m p u te r A lg o r ith m s . A d d is o n -W c s le y . R e a d in g . M a s s. (1 9 7 4 ).
2. A. V A h o . J. F . H o p c ro ft. y J. D U llm a n . « O n F in d in g L o w e s t C o m m o n
A n c e sto rs i n T rc e s » . S I A M J o u r n a l o n C o m p u tin g 5 (1 9 7 6 ), 1 15-132.
E
sie apéndice ilu\ira los pasos requeridos para compilar un programa escnlo
en Java usando ires entornos diferentes:
• J D K de Sun.
• S y m a n te c ( 'ufe.
• M ic r o s o ft V is u a l J + + .
Las siguientes instrucciones Unix suponen que estamos usando una C-shell
1. Para comprobar sila variable PATH tiene un valor adecuado se usa el man
dato
which javac
Si el sistema responde con un nombre (por ejemplo, /bin/javac). enton
q u e n o lo e n c u e n tra (p ro p o rc io n a n d o d e sp u é s la lista d e lu g a re s d o n d e lo 2. P ara a c tu a liz a rla , n e c e sita m o s s a b e r d ó n d e se e n c u e n tra s itu a d o e l c o m p i
b u sc ó ), e n to n c e s d e b e s e r a c tu a liz a d a . la d o r d e J a v a (p u e d e u sa r las u tilid a d e s d e b ú s q u e d a p a ra sa b e rlo ). S u p o n
2. P re g u n te a su a d m in is tra d o r d e s iste m a d ó n d e se e n c u e n tra s itu a d o el g a m o s . p o r e je m p lo , q u e s e e n c u e n tra e n e l d ire c to rio C : \ j d k \ b i n . E n
c o m p ila d o r d e J a v a . S u p o n g a m o s p o r e je m p lo q u e se e n c u e n tra e n e l d i to n c e s . e d ita m o s e l fic h e ro a u t o e x e c . b a t (u s a n d o e l B lo c d e N o ta s ) y
re c to rio h o m e / j d k b i n . E d ita m o s s u fic h e ro . e s h r e y a ñ a d im o s u n a lí añ a d im o s u n a lín e a p a ra a c tu a liz a r la v a ria b le , c o m o la sig u ien te
n e a p a ra a c tu a liz a r la v a ria b le . E n n u e stro e je m p lo , e sc rib iría m o s
SE T PATH = %PATH%; C : \ j d k N b i n
s e t p ath= ( Spath /h o m e /jd k /b in )
3. A c o n tin u a c ió n a c tu a liz a m o s la v a ria b le c l a s s p a t h . S i y a d isp o n e m o s
3. A c o n tin u a c ió n a c tu a liz a m o s la v a ria b le c l a s s p a t h . S i y a te n e m o s una d e u n a. p ro b a b le m e n te te n d rá e l v alo r a d e c u a d o p a ra e n c o n tra r lo s p a q u e
v a ria b le CLASSPATH. p ro b a b le m e n te te n d rá c o rre c ta m e n te a sig n a d o e l v a te s d c l siste m a . P o d e m o s v e r lo s v a lo re s d e to d a s las v a ria b le s d e e n to rn o
lo r n e c e sa rio p a ra a c c e d e r a lo s p a q u e te s del siste m a . S e p u e d e v e r e l v a e je c u ta n d o e l m a n d a to s e t sin p a rám etro s.
lo r a c tu a l e s c rib ie n d o In clu so au n q u e la v a ria b le c l a s s p a t h te n c a e l v a lo r c o rre c to , ten d re
m o s q u e a c tu a liz a rla p a ra p o d er u sa r lo s p aq u e te s d e e s te lib ro . S i n o d isp o
e c h o SCLASSPATH
n e n ^ d e u n a v ariab le CLASSPATH. n e c e sita m o s s a b e r d ó n d e están situ ad o s
In c lu so a u n q u e te n g a u n v a lo r a d e c u a d o , te n d re m o s q u e a c tu a liz a rla p ara lo s fich ero s d e las c la s e s d e las librerías. U n a a sig n a c ió n típ ic a se ría
u sa r lo s p a q u e te s d e l lib ro . S i n o p o s e e u n a v a ria b le CLASSPATH. p re g u n te
s e t CLASSPATH - . : C : \ j d k \ l i b \ c l a s s e s .z ip
a l a d m in is tra d o r d e l s iste m a d ó n d e s e e n c u e n tra n situ a d o s lo s fic h e ro s de
lib re ría s d e l siste m a . E n to n c e s p o d ría m o s e s c r ib ir p o r e je m p lo O b s e rv e q u e c o n e llo m a n d a m o s b u s c a r e n d o s lu g a re s: e l d ire c to rio a c
tu al ( . ) y un fic h e ro c o m p rim id o q u e c o n tie n e las c la s e s d e Java.
s e t e n v CLASSPATH . : / j d k / l i b / c l a s s e s . z i p
4. A ñ a d im o s al fin al d e classpath e l d ir e c to r io q u e c o n te n g a lo s p a q u e te s
O bserv e q u e o rd e n a m o s b u sc a r e n d o s sitio s: e l d ire c to rio a c tu a l ( . ) y en d e e s te lib ro . P o r e je m p lo , añ a d ie n d o u n a se g u n d a lín e a
un fic h e ro c o m p rim id o q u e c o n tie n e la s c la s e s d e Jav a.
s e t CLASSPATH = %CLASSPATH%; C: \ c o d i g o l i b r o
4. A ñ a d im o s a l fin al d e CLASSPATH e l d ire c to rio q u e c o n tie n e lo s p a q u e te s
v isto s e n e s te lib ro . P o r e je m p lo El d ir e c to r io real v a ria rá e n c a d a in s ta la c ió n . O b s e rv e q u e lo s c a m b io s
re a liz a d o s e n e l fic h e ro a u t o e x e c . b a t n o s e h a c e n e fe c tiv o s h a s ta la si
s e t e n v CLASSPATH . : / j d k / 1 i b / c l a s s e s . z i p : S H O M E / l i b r o g u ie n te in ic ia liz a c ió n d e l s is te m a (o e n e l c a s o d e W in d o w s N T h a s ta la si
E l n o m b re d e l d ire c to rio re a l v a n a rá e n c a d a in s ta la c ió n . O b s e rv e q u e los g u ie n te v e z q u e se e n tra e n e l sistem a).
c a m b io s re a liz a d o s e n e l fic h e ro . e s h r e n o sc h a c e n e fe c tiv o s h a sta la si
gu ien te v ez q u e e n tra m o s e n e l sistem a. S in e m b a rg o , p o d e m o s h a c e r q u e
lo s c a m b io s s e h a g a n e fe c tiv o s in m e d ia ta m e n te e je c u ta n d o e l m a n d a to A .2 JD K d e Sun
source .eshre JD K e s u n s iste m a s in fio ritu ras. H e m o s d e in tro d u c ir n u e s tro c ó d ig o e n fich ero s
J a v a u s a n d o u n e d ito r e s tá n d a r d e l s is te m a . A lg u n o s e d ito re s d e U n ix so n vi. p ic o
y c m a c s: y d e W in d o w s. B lo c d e N o ta s y W o rd P a d .
A. 1.2 Instrucciones paro Windows95/NT P a ra c o m p ila r u n fic h e ro fu e n te d e J a v a , u sa m o s e l m a n d a to ja v a e . P a ra e je c u
ta r l a fu n c ió n m a i n d e la c la s e , u sa m o s e l m a n d a to ja v a . P o r e je m p lo , su p o n g a
W in d o w sN T s e c o m p o n a d e la m ism a fo rm a q u e W in d o w s9 5 . e x c e p to p o r e l h e m o s q u e m a i n e s tá e n la c la s e E j e m p l o . E n to n c e s lo s m a n d a to s son
c h o d e q u e e l p ro c e s o s e p u e d e s im p lific a r e d ita n d o la s v a ria b le s d e e n to rn o e n el
ja v a e E jem plo, ja v a
P a n e l d e C o n tro l. (S e le c c io n e P a n e I d e C o n tro l y lu e g o S is te m a .) L a s in s tru c c io
j a v a Ejem plo
n e s p a ra \V in d o w s9 5 s e m u e s tra n a c o n tin u a c ió n .
P a ra c a d a c la s e d e fin id a e n c a d a fic h e ro fu en te c o m p ila d o p o r ja v a e . e l c o m p i
I. C o m p ro b a m o s q u e la v a ria b le PATH tie n e u n v a lo r c o rre c to . E l m a n d a to la d o r a lm a c e n a e l c ó d ig o -j re s u lta n te e n e l fic h e ro d e c la s e c o rre s p o n d ie n te (co n
j avac e l s u f ijo . c l a s s ) . P a ra c a d a c la s e re fe re n c ia d a e n lo s fic h e ro s fu e n te , e l c o m p ila
d o r b u sc a e n la v a ria b le c l a s s p a t h ta n to e l fic h e ro fu e n te c o m o e l fic h e ro c o m
in te n ta in v o c a r ul c o m p ila d o r d e Ja v a . S i e l s iste m a re s p o n d e c o n un m e n p ila d o . y re c o m p ila e l fic h e ro fu e n te (re g e n e ra n d o p o r ta n t o e l fic h e ro . c l a s s ) si
saje d e e rr o r q u e d e ta lla la s in ta x is c o rre c ta d e l m a n d a to ja v a e (p o r e je m é s te s e h a m o d ific a d o . E n o tr a s p a la b ra s, j a v a e c a lc u la c u a l e s e l m e n o r c o n ju n to
p lo . e s p e c ific a n d o u n a lista d e o p c io n e s ), e n to n c e s la v a ria b le tie n e u n v a d e fic h e ro s q u e h a c e fa lta re c o m p ila r y lo h a c e d e fo rm a a u to m á tic a .
lo r c o rre c to . S i e l s iste m a re s p o n d e c o n u n m e n s a je d ic ie n d o q u e no E l m a n d a to ja v a e tie n e v a ria s o p c io n e s . F n l a d o c u m e n ta c ió n p a ra JD K se lis
e n c u e n tra ja v a e . s e d e b e a c tu a liz a r la v a ria b le PATH. ia n c o n d e ta lle . E n la F ie u ra A l se m u estran a lg u n a s d e ellas.
E ste a p é n d ic e d e sc rib e , p ara a m b o s e n to rn o s, c ó m o c re a r u n p ro y e c to para la
O p c ió n R esultodo
c la s e T e s t P i l a . El c ó d ig o fu e n te d e la v e rs ió n o rig in a l. T e s t S t a c k . j a v a , s e e n
cu e n tra e n In tern et e n e l d ire c to rio ( haptcrO f» . S e su p o n e q u e y a h e m o s cargad.» el
Optim iza ©1 c ó d ig o com pdodo d e sp leg an d o los m étodos
estáticos Tiñóles y pnvados c ó d ig o d e lo s p ro g ra m a s d e e s te lib ro y q u e s e h a asignad.» e l v alo r a d e c u a d o a la
v a riab le c l a s s p a t h . c o m o s e h a d e s c rito e n la S e c c ió n A. 1.2. N e c e sita re m o s crear
-v e r b o s e H a c e qu e e l co m p ilad o r y e l enlazodor im prim an m ensajes u n d ire c to rio p a ra e l p ro y ecto , y c o p ia r la v e rs ió n o rig in a l. T e s t S t a c k . j a v a , e n
sobro los fieIvoros q u e se están co m p ilan d o y los ficheros y a
d ic h o d ire c to rio .
com pilodos (o ficheros d e c la s e ) q u e se están ca rg an d o
Figuro A 7
E sta s v is ta s p u e d e n a p a re c e r c o n u n ta m a ñ o o e n lu g a re s q u e n o n o s g u s
te n . p e to p o d e m o s c a m b ia r e l ta m a ñ o d e la s v e n ta n a s, y m o v e rla s a o tro s s i
tio s. D e sd e la v ista del p ro y e c to , p o d e m o s p u ls a r d o s v e c e s s o b re un fic h e ro
p a ra o b te n e r u n a v e n ta n a S o u rc e . P o d e m o s c a m b ia r e l ta m a ñ o d e d ic h a v e n ta
n a y m o v e rla d e sitio.
E l resultad»» d e to d o e s to se m u e s tra c n la F ig u ra A .8. O b s e rv e q u e e l f i
c h e ro T e s t S t a c k . j a v a e s tá m a rc a d o e n a m a rillo p a ra in d ic a r q u e c o n tie n e
la fu n c ió n m a i n q u e s e v a a e je c u ta r (e s to s e e s p e c ific ó e n e l p a s o 2 d e P ro-
j e n E x p re ss ). P o d e m o s p u ls a r c o n e l b o tó n d e re c h o d e l ra tó n s o b r e o tr o o b je to
d e te x to p a ra e s p e c ific a r o tra c la s e c o m o p rin c ip a l. 1.a v is ta d e l p ro y e c to
m u e s tra to d a s las c la s e s n e c e s a ria s q u e n o h > m ian p a n e d e l siste m a , lo c u a l se
d e d u c e a u to m á tic a m e n te
5. C o m p ila m o s e l p ro v e c to p u ls a n d o e l b o tó n H uilJ. (E n la f i g u r a A .9 . e l b o tó n
fíu ilil se e n c u e n tra a rrib a y a la iz q u ie rd a d e la e tiq u e ta H uild.)
S o la m e n te s e c o m p ila n a q u e llo s fic h e ro s o b so le to s. (A lte rn a tiv a m e n te p o
d e m o s s o lic ita r u n a c o m p ila c ió n c o m p le ta ) C u a lq u ie r e rr o r a p a re c e rá c n la
v e n ta n a d e salid a. S i n o h a y e rro re s , s e p re s e n ta rá u n m e n s a je a l re s p e c to . En
e s te m o m e n to , p o d e m o s e je c u ta r e l p ro g ra m a p u ls a n d o e l b o tó n R u n . (E ste
b n ió n m iu-orn u n a n e rs o n a c o rrie n d o , a s i q u e n o p o d e m o s e q u iv o c a m o s .)
Figura A 10
iH
Figura A 8
Figura A 11
I. A ñ a d ir u n a lla m a d a a S o p o r t e . S a l i e n d o . p a u s a L a r g a o a S o p o r t o .
S a l i r . a p u n t o D e S a l i r . p a ra e v ita r c o n e llo q u e e l p r o g r a m a term in e.
II E je c u ta r e l m a n d a to ja v a d e \d c u n a v e n ta n a M S IX )S s e p a ra d a d e C afé.
O b se rv e m o s q u e la o p c ió n I e s in a c e p ta b le si e l p ro g ra m a a b o rta p o r c u lp a
d e u n a e x c e p c ió n sin tra ta r. S in e m b a rg o , e n e s te c a s o , p iu le m o s e je c u ta r el
d e p u ra d o r (m ira r e l m en ú D e b u g ) p a ra ver q u e e s lo q u e h a id o m al. 1.a o p
c ió n I e s ta m b ié n in a c e p ta b le si se e s ta le y e n d o h a s ta e l fin al d e l a e n tra d a . I.a
F ig u ra A . 10 m u c s lra la v e n ta n a M S -IX )S m e n c io n a d a e n la o p c ió n II.
6. C u a n d o h a y a m o s te r m in a d o , s a lim o s s e le c c io n a n d o e l m e n ú l ic h e r a . L as
o p c io n e s in c lu y e n <v é a se la F ig u r a A . I I ) s a lv a r lo d o e l tr a b a jo ( n o r m a l
m e n te a c o n s e ja b le ) o s a l ir sin s a lv a r (a c o n s e ja b le m á s a m e n u d o d e l o q u e
n o s g u staría).
I. C o m e n z a m o s in ic ia li/u n d o J + + . V e re m o s b re v e m e n te un lo g o tip o c o lo re a d o
p a ra M ic ro so lt S iu d io . tra s e l c u a l a p a re c e rá u n a p a n ta lla . S i e s la p rim e ra v ez
Figura A.9 (iiii1 u s a m o s n os e n r o n i r m v m n s r o n varios ohiefns esnarriitns t-m».. mv.
b a rra d e c o n se jo » y u n a a y u d a (q u e c o n tie n e M ic r o s o ft V isu a l J + + H o o ks O n C re a m o s un n u e v o p ro y e c to p a ra T e s t S t a c k . P u lsa m o s so b re e l m en ú F ile y
lin e). L a b a rra d e c o n se jo s s e p u e d e h a c e r d e s a p a re c e r y la a y u d a se p u e d e se le c c io n a m o s N e w , c o m o s e m u estra e n 1a F ig u ra A . 13. E s to g e n e ra u n cu ad ro
c o lo c a r e n la p a rte su p e rio r p a ra o b te n e r a lg o s im ila r a la f ig u ra A . 12. d c d iá lo g o q u e n o s p ide q u e e sp e c ifiq u e m o s lo q u e d e se a m o s h a cer. P ulsam os
d o s v e c e s so b re P ro je c t W orksp a ce. c o m o s e m u estra e n la F igura A. 14.
A c o n tin u a c ió n ap a re c e un c u a d ro d e d iá lo g o q u e n o s s o lic ita d a to s so b re el
p ro y e c to . S e le c c io n a m o s J a v a W o rk sp a c e e n T \/h ‘. e n L n c a tio n in d ic a m o s el
(2| a ]W M |
d ir e c to r io d o n d e se v a a g u a rd a r e l p ro y e c to , y e s c rib im o s c o m o n o m b re de
p ro y e c to T e s t S t a c k . T o d o e llo se m u e s tra e n la F ig u ra A . 15. D e sp u é s p u lsa-
.al j | a _ m o s ('re a te .
E n este m o m en to , e l cu ad ro d e ayu d a se sustituye p o r u n a vista d e la clase, co m o
se m u e stra e n la F igu ra A. 16. S i a b n m m la c a rp e ta d e T e stS ta ik classes. verem os
e l fichen» q u e constituy e e l proyecto. D c m o m e n to e l p ro y e c to está vacío.
P o d e m o s a ñ a d ir fic h e ro s a l p ro y e c to p u ls a n d o so b re e l m en ú In se rí y s e
le c c io n a n d o F ile s in to P ro je c t. c o m o s e m u e s tra e n la F ig u ra A . 17.
A p a re c e u n d iá lo g o q u e so lic ita e l n o m b re d e l fich ero . El fic h e ro d e la clase
p rin c ip a l y a d e b e ría e s ta r e n e l m is m o d ire c to rio q u e e l fic h e ro d e l p ro y e c to
d r u i f la F ig u ra A . 18). A h o ra s e le c c io n a m o s la c la s e p rin c ip a l (b ie n c o n u n a
p u ls a c ió n d o b le so b re e l fic h e ro o b ie n c o n u n a p u ls a c ió n sim p le so b re e l fi
c h e ro s e g u id a d e u n a p u ls a c ió n s o b re A d il). S i el fic h e ro d e la c la s e p rin cip al
n o e s tá e n e l d ire c to rio c o rre c to , c o p ia m o s e l fic h e ro fu e ra d e J+ + y e s c n b i-
m o s su n o m b re. S i h a y v a n o s fic h e ro s a a ñ a d ir, p o d e m o s se le c c io n a r m á s d e
u n fic h e ro (m a n te n g a p u ls a d a la te c la C o n tro l m ie n tra s p u lse so b re lo s fic h e
ro s d e la lista).
«i i P u lse di*s v e c e s soba* T e s tS ta c k fi le s e n la v ista d e la c la s e p a ra v e r q u e s e h a
T*<eai
a lu d i d o T e s t S t a c k . j a v a a l p ro y e c to . P u lse d o s v e c e s so b re T e stS ta c k .ja v a
p a ra a b rir e l fic h e ro e n l a v e n ta n a d e c ó d ig o fu en te
■ H W
3 E js J F iJ
««jopar»
Figura A 18
F igura A. 17
F ig u ra A 19
(—*« M>« I |
C»v, I ' - - li
[r«Süá
iM d c iu w x iw WM*
$***%
Figura A.20
p u e d e n u sa r m a n d a to s d e e n tra d a . E n J+ + 1.0. la v e n ta n a d e s a p a re c e c u a n d o
el p ro g ra m a te rm in a . F.sto h a c e d ifíc il v e r la s a lid a . C o n fia m o s e n q u e este
g u ra c ió n lo cal. L o s b o to n e s p o d ría n n o s e r v is ib le s : e n ta l c a s o , se d e b e u sa r
p ro b le m a d e s a p a re z c a c u a n d o e s té d is p o n ib le la v e rs ió n d e J + + a c o rd e c o n J a
e l m e n ú fín ild . L a F ig u ra A .21 m u e s tra e l m en ú Hitilrf. T ie n e u n a o p c ió n p a ra
v a 1.1. H asta e n to n c e s, d e b e ría m o s u tiliz a r las id e a s d e l p u n to 5 d e la S e c c ió n
c o m p ila r y o tra p a ra e je c u ta r. L a e je c u c ió n c o m p ila a u to m á tic a m e n te si e l fi
A .3.1 p a ra e s ita r q u e e l p ro g ra m a te rm in e , im p id ie n d o a s í q u e la v e n ta n a d e
c h e ro d e c la s e n o e x is te o e s tá o b so le to . L a o p c ió n d e c o m p ila c ió n so la m e n te
sap arezca
c o m p ila lo s fic h e ro s o b s o le to s . (S e p u e d e s o lic ita r ta m b ié n u n a c o m p ila c ió n
c o m p le ta ). C u a lq u ie r e rr o r a p a re c e rá e n la v e n ta n a d e salid a . S i n o h a y e r r o
res. a p a re c e rá u n m e n s a je a l re sp e cto .
C u a n d o e je c u ta m o s u n a a p lic a c ió n d e c o n s o la , a p a re c e u n a v e n ta n a
M S -D O S , c o m o e n la F ig u ra A .2 2 . L a v e n ta n a e s in te ra c tiv a , p o r l o q u e se
mISJüJ
¡J5 - “ 3 J íc
r t f i M i---------- Ú M zL kL Z M A
9 >*• c v t p rm (( ’ ' « « I
M...
« lo» *•
l'.U O »
" 3 n i5 r
a»j>iUng
lictouolt (R) Visual J** Coupiler Voísico 10
^>PT»«ht <CI HicroUoH Con- 111 i.uM» r-» .v * l
• encj<») 0 «jiuiusisi
II ■• . ■: - ... , . . . . . 5T* •i •r
Figura A .21
A P É N D I C E
B Operadores
a F ig u ra B .l m u e s tra la p re c e d e n c ia y a s o c ia liv u la d d e Im o p e ra d o re s J a v a
L m á s c o m u n e s q u e h e m o s e s tu d ia d o . E n e s te lib ro n o se h a n u tiliz a d o lo s o p e
ra d o re s b it a bit.
Unanos + + _ _ ! _ ( t i p o ) A la d e re ch a
M ultiplicativos * / % A la izquierda
Aditivos + - A la izquierda
D e desplazam iento (bit a bit) < < > > > > > A la izquierda
D e ig u ald ad = = ! = A la izquierda
O exclusivo b o o le a n o (o b it a bit) A
A la izquierda
Y lógico A la izquierda
O lógico II A la izquierda
C on d icion al ? ; A la d e re ch a
A signación =. • « / - % . ♦ ■ - - A la d e re ch o
Algunas rutinas
de librerías
E
ste a p é n d ic e e n u m e r a a lg u n a s d e las c la s e s d e la lib re ría d e J a v a u tiliz a d a s
e n e s le lib ro . S e d a u n a b re v e d e s c rip c ió n d e c a d a c la s e , a s í c o m o a lg u n a s
d e la s c o m p o n e n te s m ás u tiliz a d a s. U n a d e s c r ip c ió n c o m p le ta d e e s ta s c la
ses se p u e d e e n c o n tr a r e n la J D K A P I D ix u m c n ta tu m .
C. 1 C lases d el p aq u ete j a v a . la n g
0 .1 .1 C h a ra c te r
M étodos importantes
C h a r a c t e r < c h a r v a l u é )
C o n s tru y e u n o b je to c h a r a c t e r y lo in ic ia li/a d e ta l fo rm a q u e re p re s e n te e l v a
lo r p rim itiv o dad»» c o m o a rg u m e n to .
c h a r c h a r V a l u e ( )
D e v u e lv e e l v a lo r d e l o b je to C h a r a c t e r .
b o o i e a n e c ju a l s ( O b j e c t o b j )
S t r i n g t o S t r i n g t )
D e v u e lv e u n o b je to s t r i n g q u e re p re s e n ta e l v a lo r d e l o b je to C h a r a c t e r . L l re
su lta d o e s un v a lo r «le tip o s t r i n g c u y a lo n g itu d e s I. 1.a ú n ic a c o m p o n e n te «leí
ír> n a e s e l v a lo r n rim itiv n r h a r (im* re m é s e n la e l o b ieto .
s t a t i c b o o l e a n i s D i g i t ( c h a r c h ) M étodos importantes
D e v u e lv e t r u e si y s ó lo si e l c a rá c te r e sp e c ific a d o e s u n d íg ito ,
I n t e g e r ( i n t v a l )
s t a t i c b o o l e a n i s D e f i n e d ( c h a r c h )
C o n s tru y e un n u e v o o b je to i n t e g e r q u e re p re s e n ta e l v a lo r d e tip o p rim itiv o in t
D e v u e lv e t r u c si y s ó lo si e l c a rá c te r e sp e c ific a d o tie n e s e n tid o e n U n ico d e,
d e l a rg u m e n to .
s t a t i c b o o l e a n i s L e t t e r ( c h a r c h )
i n t i n t V a l u e ( )
D e v u e lv e t r u e si y s ó lo si e l c a rá c te r e s p e c ific a d o e s u n a letra.
D e v u e lv e e l v a lo r re p re s e n ta d o p o r e l o b je to i n t e g e r al q u e s e a p lica,
s t a t i c b o o l e a n i e L e t t e r O r D i g i t ( c h a r c h )
b o o l e a n e g u a l s ( O b j e c t o b j )
D e v u e lv e •. r u é si y s ó lo si e l c a rá c te r e s p e c ific a d o e s u n a le tra o u n d íg ito ,
D e v u e lv e t r u e . si y s ó lo si e l a rg u m e n to e s d is tin to d e n u i l y e s u n o b je to
s t a t i c b o o l e a n i s L o w e r C a s e ( c h a r c h )
i n t e g e r q u e re p re s e n ta e l m ism o v a lo r i n t q u e e l o b je to .
D e v u e lv e t r u c si y s ó lo s i e l c a rá c te r e s p e c ific a d o e s u n a le tra e n m in ú scu la.
s t a t i c i n t p a r s e l n t ( S t r i n g s t r )
s t a t i c b o o l e a n i s U p p e r C a s e ( c h a r c h )
A n a liz a e l v a lo r d e tip o s t r i n g d a d o c o m o a rg u m e n to d e v o lv ie n d o u n e n te ro
D e v u e lv e t r u e si y s ó lo si e l c a rá c te r e s p e c ific a d o e s u n a le tra e n m a y ú sc u la ,
d e c im a l c o n s ig n o . P u e d e la n z a r u n a e x c e p c ió n N u m b e rF o rm a t E x c e p t io n .
s t a t i c b o o l e a n i s W h i t e S p a c e ( c h a r c h )
s t a t i c i n t p a r s e l n t ( S t r i n g s t r , i n t r a d i x )
D e v u e lv e t r u e si y só lo s i e l c a rá c te r e s p e c ific a d o e s un c a rá c te r d e e sp a c io en
A n a liz a e l v a lo r d e tip o s t r i n g d a d o c o m o a rg u m e n to d e v o lv ie n d o u n e n te r o c o n
b la n c o e n Java.
s ig n o e n la b a s e e s p e c ific a d a c o m o s e g u n d o a rg u m e n to . P u e d e la n z a r u n a e x c e p
s t a t i c c h a r t o L o w e r C a s e f c h a r c h ) c ió n N u m b e r F o r m a t E x c e p t io n .
D e v u e lv e , si e x is te , e l c a rá c te r e n m in ú sc u la s e q u iv a le n te a l c a rá c te r d a d o : si no.
S t r i n g t o S t r i n g ( )
d e v u e lv e e l m ism o c a rá c te r.
D e v u e lv e u n v a lo r d e tip o S t r i n g q u e re p re s e n ta e l v a lo r d e tip o i n t e g e r a l que
s t a t i c c h a r t o ü p p e r C a s e ( c h a r c h )
se a p lic a.
D e v u e lv e , si e x is te , e l c a rá c te r e n m a y ú s c u la s e q u iv a le n te a l c a rá c te r d a d o ; si no.
s t a t i c S t r i n g t o S t r i n g ( i n t t h e l n t )
dev u e lv e e l m ism o c a rá c te r.
D e v u e lv e u n v a lo r d e tip o s t r i n g q u e re p re s e n ta e l e n te r o esp e c ific a d o ,
s t a t i c b o o l e a n i s J a v a l d e n t i f i e r S t a r t ( c h a r c h )
s t a t i c S t r i n g t o S t r i n g ( i n t t h e l n t , i n t r a d i x )
D e v u e lv e t r u e si y s ó lo si e l c a rá c te r e s p e c ific a d o p u e d e se r e l p rim e r c a rá c te r d e
un id e n tilic a d o r J a v a . (In c o rp o ra d o e n J a v a 1.1.) C re a u n o b je to S t r i n g q u e re p re se n ta e l p rim e r a rg u m e n to e n la b a s e e s p e c ific a
d a e n e l s e g u n d o a rg u m e n to .
s t a t i c b o o l e a n i s J a v a l d e n t i f i e r P a r t ( c h a r c h )
C .1 .2 In t e g e r L a c la s e O b j e c t e s la ra íz d e la je r a r q u ía d e c la s e s , e s d e c ir , to d a s la s c la s e s
tien en a o b j e c t c o m o su p e rc la se . T o d o s lo s o b je to s, in c lu y e n d o lo s v e c to re s, im -
L a c la s e i n t e g e r o c u lta u n v a lo r d e l tip o p rim itiv o i n t e n u n o b je to . U n o b je to p le m e n ta n lo s m é to d o s d e e s ta clase.
d e tip o I n t e g e r c o n tie n e un ú n ic o c a m p o c u y o tip o e s i n t . E sta c la s e tie n e v a
rio s m é to d o s p a ra c o n v e rtir u n v a lo r d e tip o i n t e n un v a lo r d e tip o s t r i n g y
v ic e v e rsa , a s í c o m o c o n s ta n te s y m é to d o s ú tile s c u a n d o se tra b a ja c o n e n te ro s. Es
M étodos im portantes
u n a c la s e final.
O b j e c t ( )
b o o l e a n e q u a l s ( O b j e c t o b j )
s t a t i c f i n a l c o n s t i n t MAX VALUE
C o m p a ra d o s o b je to s d e tip o O b je c t . E ste m é to d o im p le m e n ta e l te s t m á s d is c r i
El m a y o r v a lo r d e tip o i n t . m in a n te p o sib le . E s d e c ir, p a ra c u a lq u ie r p a r d e re fe re n c ia s x e y . x . e q u a l s ( y )
s t a t i c f i n a l c o n s t i n t M IN VALUE d e v u e lv e t r u e si y só lo si x e y s o n re fe re n c ia s a l m is m o o b je to ( x == y vale
Ll m e n o r v a lo r d e tio o I n t .. tru e ).
S t r i n g t o S t r i n g ( ) b o o l e a n e n d * W ith ( S t r i n g p r e f i x >
S t r i n g s u b a S t r i n g t i n t b e g i n l d x . i n t e n d l d x )
D e v u e lv e u n a n u e v a c a d e n a q u e e s su b e a d e n a d e a q u e llo so b re lo q u e se aplica.
C.l.4 String
1 .a su b e a d e n a e m p ie z a e n e l v a lo r e s p e c ific a d o b e g i n l d x y te rm in a e n la p o s i
c ió n e n d l d x - 1. S e la n z a S t r i n g l n d e x O u t O f B o u n d s E x c o p t i o n si b e g i n l d x
L a c la s e S t r i n g re p re s e n ta c a d e n a s d e c a ra c te re s. T o d a s la s c o n s ta n te s lite rale s o e n d l d x e s tá n fu era d e ran g o .
d e c a d e n a s e n p ro g ra m a s Ja v a , c o m o * a b c * . s e im p le m e n ia n c o m o in s ta n c ia s de
e s ta c la se . L o s v a lo re s d e tip o s t r i n g s o n c o n sta n te s, e s d e c ir, su s v a lo re s no
p u e d e n c a m b ia r d e s p u é s d e su c re a c ió n . E n la S e c c ió n C M .5 v e re m o s c a d e n a s que C.1.5 StringBuffer
p u ed en c a m b ia r. L a c la s e S t r i n g in c lu y e m u ltitu d d e m é to d o s, a lg u n o s d e los
c u a le s d e s c rib ire m o s a c o n tin u a c ió n . Y a q u e la s c a d e n a s n o s e p u e d e n m o d ific a r, p e q u e ñ o s c a m b io s e n u n a c a d e n a p u e
El le n g u a je J a v a p ro p o rc io n a u n so p o rte e sp e c ia l p a ra la o p e ra c ió n d e c o n c a te d e n re s u lta r c o sto so s. C o n c re ta m e n te , e l o p e ra d o r e s m uy in e fic ie n te . Por
n a c ió n d e c a d e n a s ( . ) y p a ra c o n v e rs ió n d e o tr o s o b je to s e n c a d e n a s. L a s c o n v e r e je m p lo , s t r ♦ = A ' s e im p le m e n ta c o m o s t r = s t r * *A \ E s to im p lica q u e se
sio n e s a c a d e n a s se re a liz a n a tra v é s d e l m é to d o t o S t i i n g . d e fin id o e n la c la s e c re a u n a n u e v a c a d e n a c u y o v a lo r e s e l resultad»* d e s t r • ' A ' . y s t r re fe re n c ia a
O b j e c t . y h e re d a d o p»*r to d a s la s c la s e s Jav a. e s ta n u e v a c a d e n a C o m o re s u lta d o , e l c o s te d e la c o n c a te n a c ió n d e u n s o lo c a r á c
te r n o e s c o n s ta n te (c o m o p a re c e ló g ic o q u e se a ) P«*r e l c o n tra rio , e s prop»*cci«mal
S t r i n g B u f f e r ( S t r i n g s t r )
Constantes importantes
C o n s tru y e un v alo r S t r in g B u f f e r q u e re p re s e n ta la m ism a c a d e n a d e c a ra c te re s
q u e la c a d e n a d a d a c o m o a rg u m e n to , la i c a p a c id a d in ic ia l e s d e 16 c a ra c te re s m ás s t a t i c f i n a l I n p u t S t r a a m i n
q u e la lo n g itu d d e l arg u m e n to . El c a n a l d e e n tra d a e s tá n d a r. E l c a n a l e s tá y a a b ie r to y d is p u e s to p a ra s e r leído.
i n t l e n g t h ( )
T íp ic a m e n te , e s te c a n a l c o rre s p o n d e a la e n tra d a p o r te c la d o u o tr a fu e n te d e e n
trad a e s p e c ific a d a p o r e l e n lo m o o e l u su a rio .
D e v u e lv e la lo n g itu d (n ú m e ro d e c a ra c te re s ) d e l s t r in q B u f f o r .
s t a t i c f i n a l P r i n t S t r a a n o u t
c h a r c h a r A t ( i n t Í n d e x )
E l c a n a l d e s a lid a e s tá n d a r. E l c a n a l e s tá y a a b ie r to \ d is p u e s to p a ra se r le íd o . T í
D e v u e lv e e l c a rá c te r e n la p o s ic ió n in d ic a d a . E l p rim e r c a rá c te r s e e n c u e n tra e n la p ic a m e n te . e s te c a n a l c o rre s p o n d e a la s a lid a p o r p a n ta lla u o to » d e s tin o d e sa lid a
p o sic ió n 0 . e l s ig u ie n te e n la p o s ic ió n I . y a s í su c e siv a m e n te . S e la n /a la e x c e p
e s p e c ific a d o p o r e l e n lo m o o e l u su ario .
c ió n S t r i r.g 1 n d e x O u t O Í B o u n d s E x c e p t i o n si la p o s ic ió n n o e s v álid a.
s t a t i c f i n a l P r i n t S t r e a » a r r
v o i d s e t C h a r A t ( i n t Í n d e x , c h a r c h )
E l c a n a l d e sa lid a e s tá n d a r d e e rro re s. E l c a n a l e s tá y a a b ie r to v d is p u e s to p a ra ser
A s ig n a c h a l c a r á c te r e n la p o s ic ió n e s p e c if ic a d a . L a n / a la e x c e p c ió n le íd o . T íp ic a m e n te , e s te c a n a l c o rre sp o n d e a la s a lid a p o r p a n ta lla u o tro d e s tin o
M la posic io n n o c s v á lid a d e s a lid a e s p e c ific a d o p o r e l e n lo m o o e l u su a rio . I’o r c o n v e n io , e s te c a n a l d e s a li
S t r i n g B u f f a r a p p a n d ( O b j e c t o b j )
d a s e u ti li /a p a ra m o s tra r m e n s a je s d e e rr o r u o tra in fo rm a c ió n q u e d e b e ría lla m a r
la a te n c ió n in m e d ia ta d e l u su a rio in c lu s o si e l c a n a l d e la s a lid a e s tá n d a r, e s to es.
A ñ a d e al b u ríe r la re p re s e n ta c ió n c o m o S t r i n g d e l a rg u m e n to O b j e c t . E l a r g u
e l v a lo r d e la v a ria b le o u t . s e h a d ire e c io n a d o a u n fic h e ro u o tro d e s tin o q u e no
m e n to s e conv ierte e n u n a c a d e n a , y lo s c a ra c te re s d e e s ta c a d e n a ve a ñ a d e n al
se m u e s tra c o n tin u a m e n te .
b u ffe r. E s to e s l o q u e se d e v u e lv e , p o r lo q u e p u e d e se r u s a d o e n u n a ris tra d e o p e
ra c io n es. H a y o tr a s o p e ra c io n e s a p p e n d d is p o n ib le s p a ra to d o s lo s tip o s p rim iti
v o s. a s í c o m o p a ra v e c to re s d e c a ra c te re s. M étodos importantes
S t r i n g B u f f e r i n i a i t ( i n t o f f s e t . O b j e c t o b j )
s t a t i c long c u rre n tT im e M illis( )
A ñ a d e a l b u ffe r la re p re se n ta c ió n c o m o s t r i n g d e l a rg u m e n to O b j e c t . E l s e g u n D e v u e lv e la h o ra a c tu a l e n m ilise g u n d o s.
d o a rg u m e n to se c o n v ie rte c n u n a c a d e n a , y lo s c a ra c te re s d e e s ta c a d e n a s e in s e r
ta e n la p o sic ió n in d ic a d a . E s to e s lo q u e se d e v u e lv e . |* h l o q u e p u e d e se r u sa d o s t a t i c S t r i n g g e t P r o p e r t y ( S t r i n g k s y )
v o i d s t a r t ( ) D e v u e lv e u n a b rev e d e s c rip c ió n d e l o b je to .
C o m p ru e b a si la h e b ra e s tá v iv a , l 'n a h e b ra e s tá v iv a si h a e m p e z a d o a e je c u ta rse
y to d a v ía n«* h a te rm in a d o . D e v u e lv e t r a e si y s ó lo si la h e b ra e s tá v iv a
C.2.1 Buf f e r e d Re a d e r
v o i d s u s p « n d ( )
b o o la a n i s D i r e c to r y ( )
B u f f e r e d R e a d e r ( R e a d e r i n ) D e v u e lv e t r u e si y s ó lo si e l «tbjeto a l q u e se a p lic a e s u n d ire c to rio ,
C re a un a lm a c é n p a ia u n s e c u e n c ia d e c a ra c te re s d e e n tra d a , u tiliz a n d o e l ta m a ñ o
lo n g le n g t h t )
p o i d e fe c to .
D e v u e lv e la lo n g itu d d e l fic h e ro re p re s e n ta d o p o r e l o b jeto .
i n t r e e d ( )
S trin g ( J l i a t ( )
L e e u n s o lo c a rá c te r, L a n z a la e x c e p c ió n iO E x c e p t i o n si s e p ro d u c e u n e rr o r de
D e v u e lv e u n v e c to r c o n lo s n o m b re s d e lo s fic h e ro s e n e l d ire c to rio re p re se n ta d o
E S . E l c a rá c te r s e d e v u e lv e c o m o u n e n te ro . P o r ta n to , u n u s o típ ic o re q u e rirá una
p o r e s te fic h ero . E sta lista n o in c lu y e n i e l d irc c h irio a c tu a l ni e l d ire c to rio p ad re
c o n v e rs ió n a c h a r .
( - .« y - ..» ) .
S t r i n g r e a d L i n e ( )
C.2.2 File
C.2.4 inputStreamReader
1.a c la s e F i l e p ro p o rc io n a u n a a b stra c c ió n q u e tra ta d e fo rm a in d e p e n d ie n te d e la U n l n p u t S t re a m R e a d e r e s un p u e n te e n tre la s se c u e n c ia s d e b y te s y las s e c u e n
m á q u in a la m a y o ría d e las c o m p le jid a d e s d e p e n d ie n te s d e la m á q u in a so b re fic h e c ia s d e c a ra c te re s : le e b v te s > Im tra d u c e a c a ra c te re s . S u u s o m á s im p o rta n te e s la
ro s y ru ta s d e acceso.
c o n s tru c c ió n c o n S y s t e m . i n i c o m o p a rá m e tro . E s ta c la s e e x tie n d e la c la s e a b s
tra c ta R e a d e r . pen> su s m é to d o s m» d e b e ría n u sa rse d ire c ta m e n te . P ara h a c e rlo
Constante importante a d e c u a d a m e n te , e n v u e lv a e l o b je to c o n u n o d e la c la s e B u f f e r e d R e a d e r . ta n to
p»»r e fic ie n c ia c o m o p a ra a s í p o d e r lla m a r a r e a d L i n e .
a t a t i c f i n a l c h a r a a p a r a t o r C h a r
C re a un o b je to F i l e q u e re p re s e n ta e l fic h e ro c u y o n o m b re se h a d a d o e n - a m e .
C.2.5 PushbackReader
S c r i n g g e tN a m e f )
D e v u e lv e e l n o m b re d e l f ic h e ro re p r e s e n ta d o p o r e l o b je to . E l n o m b re d e l fic h e ro P u H h b a c k R e a d e r im p le m e n ta un le c to r d e se c u e n c ia s d e c a ra c te re s q u e p e rm ite
e s to d o a q u e llo d e s p u é s d e l se p a ra d o r d e d ire c to rio s e n e l n o m b re c o m p le to . d e v o lv e r c a ra c te re s a la se c u e n c ia .
Métodos importantes R andom ( l o n g s e e d )
C re a u n n u e v o g e n e ra d o r d e n ú m e ro s a le a to rio s c o n la s e m illa d ad a.
P u s h b a c k R e a d e r ( R e a d e r i n )
i n t n e x t l n t ( )
C re a u n n u e v o le c to r c o n un b u ffe t d e re tro c e s o d e u n ca rá c te r.
D e v u e lv e e l p ró x im o e n te r o p se u d o a le a to rio y u n ifo rm e m e n te d is trib u id o «le la s e
P u s h b a c k R e a d e r ( R e a d e r i n , i n t b u f f e r S i z e ) c u e n c ia d e l generad««r.
C re a u n n u e v o le c to r c o n u n b u ff e r d e re tro c e so c u y a c a p a c id a d \ ie n e e s p e c ific a d a
l o n g n e x tL o n g ( )
p o r e l se g u n d o arg u m en to .
D e v u e lv e e l sig u ie n te e n te r o lo n g p se u d o a le a to rio v u n ifo rm e m e n te d is trib u id o
i n t r e a d ( ) d e la se c u e n c ia d e l g e n erad o r.
L ee u n s o lo c a rá c te r. D e v u e lv e e l c a rá c te r le íd o , o I si se lia a lc a n z a d o e l final d o u b l a n e x t D o u b l e ( )
d e l fich ero . L a n z a la e x c e p c ió n lO E x c e p t io r . si o c u rre a lg ú n e rr o r d e E S . E l c a
D e v u e lv e e l sig u ie n te v a lo r d o u b le p s e u d o a le a to rio > u n ifo rm e m e n te d is trib u id o
rá c ter se d e v u e lv e c o m o u n e n te ro . E ste u so típ ic o re q u ie re u n a c o n v e rs ió n d e ti
c o n m e d ia 0 .0 v desv ia c ió n típ ic a 1.0 d e la se c u e n c ia del g e n erad o r.
pos.
d o u b l e n e x t G a u s » i a n ( )
v o i d u n r e a d ( i n t c h )
D e v u e lv e e l p ró x im o v a lo r p s e u d o a le a to rio . c o m o v a lo r d e u p o d o u b le d is trib u i-
D e v u e lv e al flu jo e l c a rá c te r c h . El p a rá m e tro q u e re c ib e e s u n e n te ro . E ste u so
d o s e g ú n la d is trib u c ió n g a u sia n a «le m e d ia 0 .0 > d e s v ia c ió n típ ic a 1.0. a p a rtir «le
típ ic o re q u ie re u n a c o n v e rs ió n d e tip o s. L a n z a la e x c e p c ió n l O E x c e p t i o n si el
la s e c u e n c ia d e e s te g e n e ra d o r «le n ú m e ro s ale a to rio s.
b u ffe r d e re tro c e so e s tá lle n o u o c u rre a lg ú n e rr o r d e E S.
v o i d u n r e a d ( c h a r [ ] e b u f )
C.3.2 StringTokenizer
D e v u e lv e al flu jo un v e c to r d e c a ra c te re s c o p iá n d o lo s a l p rin c ip io d e l b u ff e r d e
re tro c e so . C u a n d o e l m é to d o te rm in a , e l s ig u ie n te c a rá c te r a le e r te n d rá e l v a lo r L a c la s e S t r i n g T o k e n iz e i p e rm ite q u e u n a a p lic a c ió n p u e d a d e sc o m p o n e r u n a
e b u í | 0 | . e l c a rá c te r d e s p u é s d e é s te te n d r á e l v a lo r e b u í 1 1 ] . y a s í su c e s iv a c a d e n a e n to k e n s . L«>s se p a ra d o re s (lo s c a ra c te re s q u e se p a ra n to k e n s ) p u e d e n e s
m e n te . L a n z a u n a e x c e p c ió n lO E x c e p t i o n si 110 h a y s u f ic ie n te e s p a c io e n el p e c ific a rse e n e l m o m e n to d e la c r e a c ió n o d e u n o e n u n o . l ' n a in s ta n c ia d e la c l a
b u ffe r o si o c u rre a lg ú n e rr o r d e L S. s e S t r i n g T o k e n i z e r se c o m p o rta d e d o s p o sib le s fo rm a s , d e p e n d ie n d o d e si al
c re a rse , se le d io a r e t u r n T o k e n s e l v a lo r t r u e o f a l s e . S i e s f a l s e . lo s c a
ra c te re s s e p a ra d o re s s irv e n p a ra s e p a r a r to k e n s . y u n to k e n e s u n a s e c u e n c ia m á x i
C.3 C lases d el p aq u ete j a v a . u t i 1 m a «le c a ra c te re s c o n s e c u tiv o s q u e n o sean separad«»res. S i r e t u r n T o k e n s es
t r u e . se c o n s id e ra q u e lo s c a ra c te re s separad«>res s o n to k e n s . U n to k e n e s o bien
E ste p a q u e te d e fin e v a ria s c la s e s ú tiles, in c lu y e n d o a lg u n a s e s tru c tu ra s «le «lat«»s u n c a rá c te r separad»»!«» u n a se c u e n c ia m a x im a l «le c a ra c te re s c o n s e c u tiv o s q u e n o
T a m b ié n p ro p o rc io n a s o p o rte p a ra le c h a s y h o ra s . S e d e s c rib e n a c o n tin u a c ió n las
sea n se p a ra d o res.
tre s c la s e s q u e s e u tilizan e n e l tex to .
Métodos importantes
C.3.1 Random
S t r i n g T o k e n i z e r ( S t r i n g s t r )
D e v u e lv e e l sig u ie n te to k e n . L a n z a la e x c e p c ió n N o S u c h E l o m e n t E x c o p t i o n si
D Interfaces gráficas
n o hay m á s tokens.
S t r i n g n n x tT o k ® n ( S t r i n g d n l i m )
D e v u e lv e e l s ig u ie n te to k e n u tiliz a n d o d e i i m c o m o c o n ju n to d e s e p a ra d o re s . E ste
de usuario 1
c o n ju n to se m a n tie n e c o m o n u e v o c o n ju n to d e se p a ra d o re s p o r d e le c to tr a s la lla
m a d a. S e la n /a la e x c e p c ió n N o S u c h E l e m e n t E x c e p t i o n si n o h a y m á s to k e n s.
i n t c o u n t T o k e n s ( )
n a in te rfa z g r á fic a J e u su a r io ( G U I 2) e s la a lte rn a tiv a m o d e rn a a la E S
D e v u e lv e e l n ú m e ro d e to k e n s q u e q u e d a n e n la c a d e n a u tiliz a n d o e l c o n ju n to a c
tu al d e sep a ra d o re s.
U p o r e l te rm in a l q u e p e rm ite a u n p ro g ra m a c o m u n ic a rs e c o n su u su a rio . En
u n a G U I s e c r e a u n a a p lic a c ió n d e v e n ta n a s . T e n e m o s d iv e r s a s a lte rn a ti
v a s p a ra re a liz a r la e n tra d a : s e le c c io n a n d o u n a o p c ió n e n tre u n a lista d e e lla s , p u l
s a n d o b o to n e s , c o m p le ta n d o fo rm u la rio s y e m p le a n d o e l rató n . L a sa lid a p u e d e
C .3 .3 V e c to r
e fe c tu a rs e m e d ia n te la e s c ritu ra d e te x to o la re a liz a c ió n d e g rá fic o s . E n J a v a , la
L a c la s e V e c t o r im p le m e n ta v e c to re s d e o b je to s d e ta m a ñ o a ju stab le. p ro g ra m a c ió n d e G U I s e re a liz a a tra v é s d e l A b s tr a e i W indow T o o lk it ( A W I ). q u e
e s u n p a q u e te e s tá n d a r in c lu id o e n lo d o s lo s siste m a s Ja v a . I n e le m e n to re la c io n a
M étodos importantes d o e s e l a p p le t d e J a v a , q u e e s u n p ro g ra m a q u e p u e d e d e sc a rg a rs e d e In te rn e t y
e je c u ta rse e n un te rm in a l. L os a p p le ts e m p le a n , in v a ria b le m e n te , e l A W T .
V e c t o r ( )
E n e s te a p é n d ic e verem os: un<
C o n stru y e u n v e c to r vacío. de
• L o s e le m e n to s b á sic o s d e las G U I e n e l A W T . ai»<
V e c t o r ( i n t i n i t i a l C a p a c i t y )
o lf
• C ó m o e sto s e le m e n to s c o m u n ic a n in fo rm a c ió n .
C o n s tru y e u n v e c to r v a c ío c o n la c a p a c id a d in ic ia l e sp e c ific a d a . Vr
• C ó m o p u e d e n in te g ra rse d ic h o s e le m e n to s e n u n a v e n tan a . oei
O b j e c t e l e m e n t A t t i n t i n d e x )
• C ó m o se d ib u ja n g rá fic o s. UN
D e v u e lv e el e le m e n to en la p o s ic ió n in d ic a d a . L a n z a la e x c e p c ió n • C ó m o se d is e ñ a n a p p le ts e n Ja v a . CO!
JSl
A r r a y l n d e x O u t O f B o u n d s E x c e p t i o n si la p o sic ió n 110 e s válida,
v o i d s e t E l e m e n t A t ( O b j e c t o b j , i n t i n d e x )
i n t c a p a c i t y ( )
la s in te rfa c e s d e te rm in a l básicas.
N o rm a lm e n te , e n u n p ro g ra m a e n e l q u e s e re a liz a E S p o r e l te rm in a l, se p re LO
D e v u e lv e la c a p a c id a d a c tu a l d e l v ecto r, GL
g u n ta a l u su a rio a c e rc a d e la e n tra d a y d e s p u é s s e e je c u ta u n a in s tru c c ió n q u e lee
P ’C
i n t s i z e ( ) u n a lín e a d e l te rm in a l. C u a n d o d ic h a lín e a e s le íd a, s e p ro c e s a . E n e s te c o n te x to e l dlr
D ev u elv e el n ú m e ro d e c o m p o n e n te s e n e l v ecto r. flu jo d e c o n tro l p u e d e se g u irse fá c ilm e n te . S in e m b a rg o , la p ro g ra m a c ió n d e (iU I
es d ife re n te . E n e lla , las c o m p o n e n te s d e la e n tra d a se o rg a n iz a n e n u n a v e n tan a .
En Internet D e s p u é s d e m o stra r la v en tan a , e l p ro g ra m a e s p e ra u n e v e n to , c o m o q u e se p u lse
u n b o tó n , y e n e s e m o m e n to se in v o c a u n m a n e ja d o r d e e v e n to s . E s to im p lic a q u e
I c s tS tr in g .j a v u C o n tie n e la v e rs ió n e n in g lé s d e la s F ig u ra s C . I y C .2 y u n a ru
tin a m a i n q u e h a c e la s lla m a d a s . S e e n c u e n tra e n e l d ire c to rio ' N drl T : l n e s i c apíndic* l o s p r o g r a m a * w muestran en m i v e r s i ó n o n p n . i l p a r a a s e g u ra r la c o h e r e n c ia c <
A p p e n d ix C . - .V. drl /.. I-. abres ulura procede Je s u nombre en i n g l e s : C r a p h u a l I 'f> haerface.
Figura D. 1 U n a G U I q u e m uestra algunas d e las com p o nentes básicas
a d e m á s d e o tro s o b je to s C o n t a i n e r . 4 l
5 I I M u e s t r a ur.a v e n t a n a d e d i á l o g o , s e l e c c i o n a un fic h e ro
E sta clase d isp o n e d e un o b je to a u x ilia r m u y útil, llam ad o L a y o u t M a n a g e r . que 6 I I y m uestra su contenido
e s u n a c la s e q u e s itú a las d is tin ta s c o m p o n e n te s d e n tr o d e u n o b je to C o n t a i n e r . 7 p u b lic s t a t i c v oid maint S tr in g ( 1 arg s )
A lg u n o s m é to d o s d e s ta c a d o s so n 8 {
9 Frame f = new F r a m e ( >;
v o i d s e t L a y o u t < LayoutManager mgr ) ; 10 f.show t >;
v o i d add( C o m p o n e n t comp) ; 11
12 FileD ialog d;
v o i d a d d t C o m p o n e n t comp. Object w h e r o ) ;
13 d = r.ew F i l e D i a l o g | £. ‘L i s t File*. F i l e D i a l o g . LOAD >;
14 d . show;
L o s o b je to s d e la c la s e L a y o u t M a n a g e r se d e s c rib e n e n la S e c c ió n D .3 .I . Un
15
o b je to d e tip o C o n t a i n e r d e b e d e f in ir p rim e ro c ó m o d e b e n o rg a n iz a rs e lo s o b je 16 s t r i n g fileName;
to s d e n tro d e él. E s to s e h ace m e d ia n te s e t L a y o u t . D e sp u é s, s e a ñ a d e n u n o a u n o 17 i £ ( ( f i l e N a m e =d . g e t F i l e t ) I != n u i l )
lo s o b je to s , e m p le a n d o add. 18 L i s t F i l e s . l i s t F i l e ( fileNam e ) ; II F ig u ra 2.11
19
20 S y s te m .e x it( 0 );
D.2.3 Ventanas de alto nivel 21 )
22
ll'VUlC» cn CMC upíiKlnc s .V. del T.. H n Id Filara 2 .1 1 se tra d u jo Li3tPlles por contenidoPicrvero- \ . al I . .-r i»w : ont«i d
del o b jeto Di a l o g se real I/a ria a n te s d e cu a lq u ie r o tra c o sa , a m e n o s q u e se n ecesite Observe que G U r implementa la interfaz. A c t i o n L i s t e n e r . Esto signifi
un e sfu e rz o a d icio n al d e pro g ram ació n . A d em ás, c o m o e l F ra m e f n o co n tie n e n in ca que sabe cómo manejar un evento (en estecaso, el pulsar un botón). Para que
g ú n o tro objeto, no d e b e m o s p reo cu p am o s p o r la c o n fig u ració n d e lo s objetos. una clase implemente la interfaz A c t i o n L i s t e n e r . debe incluir un método
a c t i o n P e r f o r m e d . Además, cuando el botón genera el evento, debe saberse qué
componente va a recibir dicho evento. En este caso, gracias a la llamada dc la lí
D.2.4 Pan e l
nea 10 (en la Figura D.5). el objeto G U I que contiene el objeto de tipo B u t t o n le
O tra su b c la se d e C o n t a i n e r e s P a r .e i. L o s o b je to s d e tip o P a n e l se e m p le a n p a comunica a este último que debe producir elevento. Los detalles del procesamien
ra a lm a c e n a r u n a c o le c c ió n d c o b je to s, p e ro n o g e n e ra n n in g ú n b o rd e . P o r e llo , es to de eventos se explican en laSección D.3.3.
la m á s s im p le d e las c la s e s C o n t a i n e r . Un segundo uso dc losobjetos P a n e l es la agrupación de objetos en unidades
M u s o p rin c ip a l d e e s ta c la s e e s la o rg a n iz a c ió n d e o b je to s e n u n id a d e s . P o r
con el objetivo de simplificar las configuraciones. Esto se discute en la Sección
e je m p lo , c o n s id e re un re g is tro q u e re q u ie re un n o m b re , d ire c c ió n , n ú m e ro d e la D.3.4. El tercer uso dc laclase P a n e l es el A p p l e t . que es una subclase suya.
se g u rid a d so c ia l > lo s n ú m e ro s d e te lé fo n o d e l d o m ic ilio y d e l tra b a jo . T o d o s e sto s
e le m e n to s p o d ría n c o m p o n e r u n P e r s o n a l P a n e l . E n to n c e s, e l fo rm u la rio p u e d e
c o n te n e r v a ria s e n tid a d e s d e tip o P e r s o n a l P a n e l p a ra p e rm itir la p o s ib ilid a d d c D.2.5 Componentes importantes d e la E/S
re a liz a r v a rio s re g istro s.
C o m o e je m p lo , la F ig u ra 1) 5 in d ic a c ó m o s e a g ru p a n la s c o m p o n e n te s d e la El A W T incluye un conjunto de componentes que pueden empicarse para realizar
F ig u ra l ) . l e n u n a c la s e P a n e ' , y m u e s tra la té c n ic a g e n e ra l p a ra c re a r u n a su b c la laentrada y salida. Estas componentes son sencillas de generar y usar. El código
se d e P a n e l . N o s q u e d a c o n s tru ir lo s o b je to s, in ic ia li/.a rlo s d e la fo rm a a d e c u a d a de la Figura D.6 muestra cómo se construye cada una de las componentes de la
y tra ta r e l e v e n to d e p u ls a r e l b o ló n . Figura D I.Generalmente, esto incluye la llamada a un constructor y laaplicación
de un método para adaptar lacomponente. El código no especificacómo se orga-
1 i m p o r t j a v a . a w t .■ ;
2 i m p o r t j a v a .a w t . e v e n t .*;
3 1 / / Genera todos lo s o b je to s
4 p u b l i c c l a s s GUI e x t e n d s P a n e l implemer.es A c t i o n L i s t e n e r 2 p r i v a t e v o id makeTheObjects( i
5 {
3 (
6 p u b l ic GUI( I 4 t h e C a n v a s = new G U I C a n v a s ( );
7 (
5 C heC anvas.set3ackground( C o lo r .w h ite );
8 m a k e T h e O b j e c t s I >; t h e C a n v a s . s e t S i z e ( 100. 100 );
6
9 d o rh eL ay o u t( );
/7
'0 theüraw 3utton.addA ctionL istener( this );
11 8 t h e S h a p e • new C h o i c e ( ) ;
12 / / Construye todos los o b jeto s 9 t h e S h a p e . a d d l t e m ( " C i r c l e * 1:
13 p r í v a t e v o id makoTheóbjects ( ) 10 theS hape.addltem í ’ Square" );
14 { / • F ig u ra D.6 */ } 11
15 12 t h e C o l o r = new L i s t < 2 . f a l s e ) ;
16 i i C o n fig u ra to d as l a s componentes 13 theC o lo r.ad d ltem ( * re d ’ ):
17 p r í v a t e v o id doTheLayout( I 14 t h e C o l o r . a d d l t e m ! * b l u e ‘ 1;
18 ( /• F i g u r a D.9 * / ) 15 t h e C o l o r . s o l e c t ( 0 ) ; / / La e L e c c i ó n p o r d e f e c t o e s ' r e d ’
19 16
20 / / Procesa la p u ls a c ió n d e l botón 17 t h e X C o o r = n e w T e x t F i e l d ( 5 1;
21 p r i v a t e v o id A c tío n P er formed ( Actior.Event e v t I 18 t h e Y C o o r = new T e x t F i e l d < S );
22 ( r F i g u r a D .1 2 * ) 19
23 20 C h e ckboxG ro up t h e S i z e ■ new C h e ck b o x G ro u p ( ) ;
24 prívate GL’I C a n v a s theCanvas; 21 s n a l l P i c = new c h e c k b o x ! ' S r s a l l * . t h e S i z e . f a l s e ) ;
25 prívate Choice theShape; 22 m e d i u m P i c - n e w C h e c k b o x ! • M é d i u m ’ . t h e S i z e , t r u e 1;
26 prívate L ist theColor; l a r g e P i c = n e w C h e c k b o x i ‘L a r g e " . t h e S i z e . f a l s e );
23
27 prívate T extField theXCoor;
24
28 prívate T extField theYCoor: t h e F i l l B o x - n e w C h e c k b o x ! * F i 11 * ) ;
25
29 prívate Checkbox smailPic.- r .h e F i l l B o x . s e c S t a t e ( f a l s e );
30 private Checkbox mediumPic; 26
31 prívate Checkbox largePie; 27
32 private Checkbox theF ill3ox; 28 t h e D r a w B u t t o n = n e w B u t t o n ( ’ D r a w ' >;
33 prívate B utton theDrawButton; 29 t h e M e s s a g e = new T e x t F i e l d ! 25 ):
34 prívate T extField theM essage; 30 t h e M e s s a g e . s e t E d i t a b l e l f a l s e );
31 }
Figuro D.5 C lase GUI b ásica m o stra d a e n la Figura D. 1 Figura D.6 C ó d ig o q u e g e n e ra ios ob jeto s d e la Figura D. 1
n iz a n los e le m e n to s e n e l p a n e l o c ó m o s e e x a m in a e l e s ta d o d e la s m ism a s. R e p u e d e d e v o l \ c r s e e l ín d ic e d e la o p c ió n ( c a lc u la d o p o r e l o rd e n d e lla m a d a s a
c o rd e m o s q u e la p ro g ra m a c ió n d e la s G U I c o n s is te e n m o s tra r la in te rfa z y e sp e ra r a d d l t e n ) e n lu g a r d e d e v o lv e r la c a d e n a c o rr e s p o n d ie n te . E l p r im e r e le m e n to
a q u e se p ro d u z c a n e v e n to s . L a c o n fig u ra c ió n d e la s c o m p o n e n te s y e l tra ta m ie n to a ñ a d id o tie n e ín d ic e 0 . e l s ig u ie n te ín d ic e I y a s í s u c e s iv a m e n te , lis to p u e d e se r
d e lo s e v e n to s se d is c u te n e n la S e c c ió n D .3 . m u y ú til y a q u e si u n v e c to r g u a rd a in f o rm a c ió n re la tiv a a c a d a u n a d e la s e le c
c io n e s , g e t S e l e c t e d l n d e x p u e d e e m p le a rs e p a ra in d e x a r d ic h o v e c to r. E l m é
to d o s e l e c t s e u tiliz a p a ra e s p e c ific a r c u á l e s la e le c c ió n p o r d e fe c to .
Label
C hoice< ) ;
Checkbox
v o i d a d d I t e m ( S t r i n g i t e m );
S trin g gotS electedItem ( );
U n a c h e c k b o x e s u n a c o m p o n e n te G U I q u e tie n e d o s e s ta d o s p o s ib le s : a c tiv a d o
i n t g e t S e l e c t e d l n d e x ( );
\ d e s a c tiv a d o . E l e s ta d o a c tiv a d a e s t r u e y e l e s ta d o d e s a c tiv a d a e s f a l s e . La
v o i d s e l e c t ( i n t in d e x );
F ig u ra I). I c o n tie n e c u a tr o o b je to s d e tip o C h e c k b o x . E n e s ta fig u ra , la c u ja l ili
l n o b je to C h o i c e s e c o n s tr u y e sin p a rá m e tr o s . S e p u e d e n a ñ a d ir c a d e n a s e s t r u e y e s d if e re n te a las o tr a s tre s . E s to e s d e b id o a q u e lo s o tr o s o b je to s
d e c a r a c te r e s a la lis ta d e a lt e r n a tiv a s C h o i c e . C u a n d o s c in v o c a a l m é to d o C h e c k b o x fo rm a n p a rte d e un C h e c k b o x G r o u p : s ó l o u n a d e las li e s c a ja s d e e s
g e t S e l e c t e d i t e m . s e d e v u e lv e u n a c a d e n a q u e re p re sen ta e l e le m e n to e le g id o (o te g r u p o p o d ría s e r t r u e . C u a n d o se s e le c c io n a u n o b je to C h e c k b o x d e u n g ru
n u i l si n o s e re a liz a n in g u n a e le c c ió n ). G ra c ia s a l m é to d o g e t S e l e c t e d l n d e x , p o , lo d o s lo s d e m á s o b je to s del g ru p o d e ja n d e e s ta r s e le c c io n a d o s . U n o b je to d e
la c la s e C ' h e c k b o x G r o u p se c o n s tru y e sin p a rá m e tro s. O b s e rv e q u e n o se tra ta d e U n o b je to d e la c la s e T e x t F i e l d se c o n s tru y e sin p a rá m e tro s o e sp e c ific a n d o En»
un e le m e n to d e tip o C o r p o n e n t ; e s s ó lo u n o b je to lógico. un te x to o p c io n a l in ic ia l > e l n ú m e ro d e c o lu m n a s . U n a a d v e rte n c ia : e n m u ch o s r
osp
L o s m é to d o s m á s e m p le a d o s e n e s ta c la s e so n siste m a s e s n e c e sa rio e s p e c ific a r m á s c o lu m n a s d e las q u e se e s p e ra e m p le a r, d e
C O ll
b id o a u n a p a re n te fa llo e n e l A W T . E l m é to d o s e t E d i t a b l e se e m p le a p a ra im se t
C h e c k b o x ( >;
p e d ir la e s c ritu ra e n e l c a m p o d e te x to . s e t T e x t p u e d e e m p le a rs e p a ra e sc rib ir J uL
Checkboxt S t r i n g th e L a b e l 1 ;
m e n s a je s d e te x to e n e l o b je to T e x t F i e l d . g e t T e x t s e u tiliz a p a ra le e r e l te x to 3pC
C h e c k b o x ( S t r i n g t h e L a b e 1 . C h e c k b o x G r o u p g r o u p . b o o l e a n State ) ; AW
del o b je to T e x t F i e l d .
boolean g e tS ta te ( );
v o i d s e t L a b e ! ( >;
v o i d s e t S t a t e l >;
D.3 Principios básicos d el AWT
l 'n a c a ja C h e c k b o x in d iv id u a l se c o n s tru y e c o n u n a e tiq u e ta o p c io n a l. S i
n o se e s p e c if ic a n in g u n a , p u e d e a ñ a d ir s e p o s te rio r m e n te u n a c o n s e t L a b e l . E sta se c c ió n e s tu d ia tre s fa c e ta s im p o rta n te s d e la p ro g ra m a c ió n A W T . En p rim er
s e t L a b e i ta m b ié n p u e d e e m p le a rs e p a ra c a m b ia r la e tiq u e ta e x is te n te . U n o b je to lu g ar, se e s tu d ia c ó m o se o rg a n iz a n lo s o b je to s d e n tr o d e u n c o n te n e d o r. S e g u id a
d e la c la s e c h e c k b o x q u e fo rm a p arte d e u n C h e c k b o x G r o u p se c o n s tru y e in d i m en te se e x p lic a c ó m o se tra ta n lo s e v e n to s ta le s c o m o la p u lsa c ió n do b o to n es.
c a n d o u n a e tiq u e ta , e l g r u p o y s u e s ta d o in ic ia l. N ó te se q u e si s t a t e e s t r u c , el P o r ú ltim o , d e s c rib im o s c ó m o se re a liz a n g rá fic o s e n e l in te rio r d e lo s o b je to s de
e s ta d o d e to d a s la s c a ja s d e e s c g ru p o c o n s tru id a s a n te rio rm e n te se a c tu a liz a a tip o C a n v a s .
t’a l s e . s e t S t a t e e s e m p ic a d o c o n m a y o r a sid u id a d p a ra e s ta b le c e r e l e s ta d o p o r
d e fe c to d e u n a c a ja C h e c k b o x in d iv id u a l. C h e c k b o x . g e t S t a t e d e v u e lv e e l e s
ta d o d e u n o b je to d e tip o c h e c k b o x . D.3.1 Coníiguradores
TextField
FlowLayout
Un o b je to d e la c la s e r e x t • i e l d es u n a c o m p o n e n te q u e s e m u e s tra a l u su a rio
c o m o u n a ú n ic a lín e a d e te x to , l 'n o b je to d e la c la s e T e x r A r e a p e rm ite m o stra r
El m á s s e n c illo d e lo s c o n fig u ra d o re s e s F l o w L a y o u t . C u a n d o un c o n te n e d o r se E l
o c
E s im p o rta n te o b s e rv a r q u e . a m e n o s q u e se e m p le e n h e b ra s (S e c c ió n L).4>, la situ a d o e n la e s q u in a su p e rio r d e re c h a d e la v e n ta n a d e la ap lic a c ió n . D e s a fo rtu n a
lla m a d a a l m é to d o u p d a t e n o e s in m e d ia ta y s u e le re tra s a rs e h a s ta q u e se p ro d u z d a m e n te . e s te e v e n to se ig n o ra p o r d e fe c to , d e m o d o q u e si n o s e in d ic a n in g ú n )(
c a un e v e n to . E n tal c a s o , e l c ó d ig o q u e s ig u e a r e p a i n t s e e je c u ta a n te s d e v o l m a n e ja d o r p a ra é l. e l m e c a n ism o usual p a ra c e rra r u n a a p lic a c ió n n o fu n cio n ará.
v e r u p in tar. E l c i e r r e d e u n a v e n ta n a e s u n o d e lo s m u c h o s e v e n to s a s o c ia d o a ei
W i n d o w L i s t e n e r . D eb id o a q u e d ic h o in te rfa z req u ie re q u e im p le m e n te m o s m u-
c h o s m é to d o s (c u y o s c u e rp o s s e rá n p ro b a b le m e n te v a c ío s ), e l m o d o m á s ra z o n a - ,,(
D.3.3 Eventos ble d e p ro c e d e r e s d e fin ir u n a c la s e q u e e x tie n d a a F t a m e e in ip le m e n te la in te rfa z ir
W i n d o w L i s t c n e r . E sta c la s e . c l o s e a b l e F r a m e . s e m u e s tra e n la F ig u ra D . l 3. w
4 / / s o b r e u n a d i a g o n a l : n o f u n c i o n a (
5 p u b l i c c l a s s B a d C i r c l e s o x t o n d s C l o s o a b l e F r a m e int extrem ity * 0;
p r i v a t e T h re a d a n im a to r ■ n u i l ;
6 i
7 i n t e x t r e m i t y = 0 ;
p u b lic G oodC ircles( )
8
9 p u b l i c 3 a d C i r c l e s < )
{
10 (
a n im a to r - new T h r e a d ( t h i e );
a n i m a t o r . a t a r t ( );
11 d r a w C i r c l e s l ) ;
12
13
public void run( )
14 p u b l i c v o i d d r a w C i r c l e s ( )
(
15 l d r a w C irc la * ( );
16 £ o r ( e x t r e m i t y = 0 ; e x t r e m i t y < 2 0 0 : e x t r e m i t y » * )
)
17
18 r e p a i n t { ); 19 p u b l i c v o i d d r a w C ir c le s l i
19 t r y
20
20 < T h r e a d . s l e e p ( 25 ) ; )
2 1 f o r t e x tr e m i t y = 0 ; e x tr e m i t y < 2 0 0 ; e x tr e m ity * * )
2 1 c a t c h < I n t e r r u p t e d E x c e p t i o n e } ( }
22 {
22 ) 23 r e p a i n t { );
23 24 t r y
24 25 ( T h r e a d . s l e e p t 25 ) ; }
25 p u b l i c v o i d p a i n e l G r a p h i c s g > 26 c a t c h ( I n te r r u p t e d E x c e p ti o n e ) ( )
26 27 )
27 g.fillO val( extrem ity. extrem ity. 50. 50 ); 28
28 29
29 30 p u b l i c v o id p a in t < G r a p h ic s g I
3 0 p u b l i c s t a t i c v o i d m a in ( S t r i n g [ ) a r g s ) 31 {
31 32 g . f i 1 lO v a l < e x tr e m i t y .e x tr e m i t y , 5 0 , 50 );
32 F ram e í = n e w B a d C i r c l e s | ) ; 33 )
33 f . s e t S i z e ( 3 0 0 . 3 0 0 >; 34
34 f . s h o w l ) ; 35 p u b l i c s t a t i c v o id m ain lS t r i n g ( J a r g s )
35 ) 36 {
36 > 37 Fram e £ ■ new B a d C ir c le s ( );
38 f .s e t S i z e ( 3 00, 300 );
Figuro D. 15 Program a q u e m ienta realizar u n a an im ació n d e l m ovim iento d e un 39 f . show( );
circu lo sobre u n a d iag o n al 40 )
41 )
1. E l a p p le t d e b e im p o rta r j a v a . a p p l e t . *.
2. L a c la s e q u e d e fin e e l a p p le t d e b e e x te n d e r a la c la s e A p p l e t .
3. N o s e u tiliz a la ru tin a a a i n .
4. S e re e m p la z a e l c o n s tru c to r p o r la ru tin a p u b l i c v o i d i n i t ( ). Figuro D 20 Vlsuoiizoción d e l a p p le t d e la Figura D.21 e n N e tsca p e N avigator y
Káiz'rrvzxff InfArnzst Cwz\lz\rAr
1 im port Ja v a .a w t.* ;
1 import java.awt.*;
2 im port j a v a . a p p l e t .*;
2 import j a v a . a p p l e t .*;
3 3
4 // E s t e a p p l e t anima un c i r c u l o m oviéndolo h a c i a a b a j o a l o
4 public class BasicGUIApplet extends Applet
5 // l a r g o d e una d i a g o n a l . Cuando l l e g a a l extrem o i n f e r i o r .
5 {
6 // comienza de nuevo en e l extrem o s u p e r io r .
6 / / E l a p p le t comienza aquí
7 public void initl I
7
8 p u b lic c l a s s C ircle A p p let ex te n d s Applet im plem ents Runnable
8 1
9 s e t L a y o u t < new F l o w L a y o u t( ) >; 9 {
10 i n t ex trem ity ■ 0;
10 a d d ( new GU K ) >;
11 p r iv a te Thread anim ator ■ n u il;
11 )
12
12
13 public void stop! )
13 / / S e llam a a l c o n s t r u c t o r d esde l a a p l i c a c i ó n
14 {
14 p u b lic BasicGUIApplet( 1
15 if( a n i m a t o r ** n u i l )
15
16 a n im a to r. sto p ! );
16 in it( );
17 anim ator = n u il;
17
18 18
19
19 / / m étodo main p a r a u n a a p l i c a c i ó n
20 p u b lic s t a t i c v oid mainl S trin g | ] a r g s ) 20 public void s t a r t I >
21 { 21 (
22 Fra m e £ = new C l o s e a b l e F r a m e ( ) ; 22 ifl a n i m a t o r == n u i l )
23 23 {
24 £ . s e t L a y o u t ( new F l o w L a y o u t l ) ) ; 24 a n i m a t o r = new T h r e a d ! th is »;
25 ( . a d d ( new B a s i c G U I A p p l e t ( ) ): 25 a n i m a t o r . s t a r t ( );
26 f .p a c k ( ) ; 26 1
27 f . show ( ) ; 27 )
28 ) 28
29 } 29 public void runl )
30 |
Figura D.21 C ó d ig o p o ra g en erar e l a p p le t y la a p lic a c ió n correspondientes a las 31 d r a w C ir c le s ( );
Figuras D .l y D.20. 32 }
33
34 public void draw C irclesI )
E l c ó d ig o d e la F ig u ra 1) 21 ilu stra las té c n ic a s g e n e ra le s. E n la lín e a 2 . im p o r
35
ta m o s j a v a . a p p l e t . *. E n la lín e a 4 . e x te n d e m o s A p p l e t . L a ru tin a m a i n d e 36 for( ; ; )
B a s i c G U I A p p l e t s e u s a so la m e n te c n la a p lic a c ió n y e s sim ila r a la q u e h e m o s 37 f o r t e x tre m ity - 0; e x tre m ity < 200; ex trem ity » * 1
v is to a n te rio rm e n te . 38 {
39 r e p a i n t! );
C u a n d o se c a r g a e l a p p le t s e lla m a a la ru tin a i n i t . q u e c s e l e q u iv a le n te e n
40 try
lo s a p p lc ts a u n c o n s tru c to r . D e h e c h o , c u a n d o s e c a r g a e l a p p le t n o s e lla m a e n 41 { T h r e a d . s l e e p ( 25 ) ; )
a b s o lu to a n in g ú n c o n s tru c to r . R e c o rd e m o s q u e A p p l e t c s u n a s u b c la s e de 42 catchI InterruptodE xcoption o l í )
P a n e l , p o r lo q u e tr a s d e c id ir u n a c o n fig u ra c ió n s e p u e d e n a ñ a d ir n u e v a s c o m 43 }
p o n e n te s . E l m é to d o i n i t se lim ita a s e le c c io n a r e l c o n fig u ra d o r F l o w L a y o u t 44 )
45
y c o lo c a u n a c o m p o n e n te G U I e n é l. C u a n d o s e e je c u ta la a p lic a c ió n , s e c o n s
46 public void p a in tlG raphics g )
tru y e u n o b je to d e la c la s e B a s i c G U I A p p l e t y s e in s e rta e n u n o b je to d e la c l a 47
se C l o s e a b l e F r a m e . E l c o n s tru c to r d e la c la s e B a s i c G U I A p p l e t lla m a a i n i t . 48 g .f i l lO v a l l extrem ity. extrem ity. 50. 50 );
in s e rta n d o a s í e n su F r a m e u n a G U I. E s to e s ló g ic a m e n te id é n tic o a lo q u e se h iz o 49 1
50 }
e n la F ig u ra D. 14.
Figura D.22 A p p let q u e dlbu|a u n círcu lo D atando p o r u n a diagonal.
En Internet
Errores com unes T o d o e l c ó d ig o d e e s te a p é n d ic e e s tá d is p o n ib le e n v e rs ió n o rig in a l e n e l d ire c to
rio A p p e n d ix l) L o s n o m b re s d e lo s fic h ero s s o n lo s sig u ie n te s:
1. P ara m o s tra r un o b je to S t r i n g d e A' c a ra c te re s , n e c e sita m o s u n a c o m p o
nen te T e x t F i e l d d e m á s d e N c o lu m n a s. E s to e s c o n s e c u e n c ia d e un B a d C irc le s ja v a M u e stra la fo rm a in c o rre c ta d e h a c e r a n im a c io n e s ; se
e rr o r d e l A W T . d e s c rib e e n la F ig u ra I). 15.
2. E s u n e rr o r h a b itu a l o lv id a rs e d e d e fin ir u n c o n fig u ra d o r. S i e s a sí. s e uti B a s ic G U I .ja v a L a c la s e p rin c ip a l, m o s tra d a e n la F ig u ra D .I 4 , p ara
liz a rá u n o p o r d e fe c to , a u n q u e p u e d e q u e é s te n o s e a e l q u e d e se á b a m o s. la a p lic a c ió n G U I u s a d a e n e s te cap ítu lo .
B a s ic G U I A p p k t J a v a L a c la s e , m o s tra d a e n la F ig u ra 1) 2 1. q u e e je c u ta ta n D .l 5. A ñ a d a u n a c o m p o n e n te C h e c k B o x a la c la s e GU I p a ra e v ita r b o rra r lo s d i
t o e l a p p le t c o m o la a p lic a c ió n v isto s e n la S e c c ió n b u jo s e n tr e o p e ra c io n e s. N e c e sita rá m o d ific a r G U I C a n v a s e n c o n c o rd a n
D .5.4. c ia e im p le m e n ta r u n m é to d o u p d a t e .
B a s ic G U I\ p p le t . h t m l C ó d ig o H T M L , m o s tra d o e n la F ig u ra D 19. p a ra el D .16. S c p u e d e e s c r ib ir e l m é to d o p a i n t p a ra c a d a c o m p o n e n te . M u e s tre lo que
a p p le t d e la S e c c ió n 1) 5.4. le su c e d e a l a p p le t c u a n d o se p in ta u n c ír c u lo e n la c la s e GUI.
B o r d e rT e s L ja v a D .l 7. T ra te e l e v e n to p ro d u c id o p o r la p u ls a c ió n d e la te c la F n te r e n e l c a m p o
Ilu stra c ió n s im p le d e l u so d e B o r d e r L a y o u t . m o s
tra d o e n la F ig u ra D .8 . U s a u n C l o s e a b i e F r a m e . d e te x to c o rre s p o n d ie n te a la c o o rd e n a d a y d e la c la s e G U I . N e c e sita rá
C ircle A p p le t.ja v a A p p le t a n im a d o d e la F ig u ra D .22. T a m b ié n se p ro p o r m o d ific a r a c t i o n P e r f o r m e d y re g is tra r la e x is te n c ia d e u n s e g u n d o m a
c io n a u n fic h e ro H T M L lla n ia d o C irc le A p p le t.h tm l n e ja d o r d e ev en to s.
C lo s e a b le F ram e.java Im p le m e n ta la in te rfa z W i n d o w L i s t e n e r . c o m o se D .18. A ñ a d a (0 .0 ) c o m o v a lo r p o r d e fe c to p a ra las c o o rd e n a d a s d e u n a fig u ra en
m u e s tra e n la F ig u ra D .1 3 . la c la s e GUI.
F ile D ia lo gT e st.ja va D .l 9 . A ñ a d a p a rá m e tro s a B a s i c G U l A p p l e t p a ra e s p e c ific a r e l ta m a ñ o del d i
C ó d ig o p a ra m o s tra r e l u s o d e F i l e D i a l o g . m o s tra
d o e n la F ig u ra 1) 3 . (H l f ic h e ro L i s t F i l e s . j a v a de b u jo. A c tu a lm e n te , e s d e 100 * KM) pixels.
D .2 0 . L a a n im a c ió n d e l c ír c u lo ilu stra u n p ro b le m a c o n o c id o c o m o p a rp a d e o :
la F ig u ra 2 .1 1 e s tá d u p lic a d o e n e s te d ire c to rio .)
G o o d C irc lc s.ja v a M u e s tra e l u so c o rr e c to d e h a c e r a n im a c io n e s , c o m o c u a n d o e je c u ta e l p ro g ra m a o b s e rv a rá u n re tra s o re s u lta n te d e la lla m a d a a
se d e s c rib e e n la F ig u ra D. 16. r e p a i n t . y la a n im a c ió n p e rd e rá flu id ez. U n a fo rm a d e re d u c ir e l p a rp a
G U I.ja v a L a c la s e G U I u s a d a a lo la rg o d e to d o e l c a p ítu lo y d e o c o n siste e n re d ib u ja r so la m e n te la p a rte d e l d ib u jo q u e h a c a m b ia d o .
m o s tra d a e n la s F ig u ra s D .5 . D .6 . 1) 9 y D 12. ( A lte rn a tiv a m e n te , r e p a i n t a c e p ta ría c u a tro p a rá m e tro s a c o ta n d o la z o n a
G U IC a n v a s . ja v a E x te n sió n d e C a n v a s u s a d a e n e l e je m p lo d e la G U I e n q u e h a y q u e v o lv e r a d ib u ja r.) M o d ifiq u e u n a d e las a n im a c io n e s del
y m o s tra d a e n la F ig u ra D . 10. c írc u lo p a ra c o n s e g u ir esto .
Ejercicios P rácticas d e p ro g ra m a c ió n
C uestiones breves D .2 I. E sc rib a u n p ro g ra m a q u e se p u e d a u s a r p a ra in tro d u c ir d o s fe c h a s y o b
te n e r e l n ú m e r o d e d ía s e n tr e e lla s . U se la c la s e F e c h a d e l E je rc i
D .l. ¿ Q u é e s u n a G U I? c io 3 .1 2 . S u p ro g r a m a d e b e fu n c io n a r c o m o u n a a p lic a c ió n y c o m o un
D .2 . E sc rib a u n a lista d e v a ria s c o m p o n e n te s q u e p u e d a n u tiliz a rse p a ra in tro a p p le t.
d u c ir d a to s e n u n a G U I. D .22. E sc rib a un p ro g ra m a q u e le p e rm ita d ib u ja r lín e a s e n un lie n z o ( c a n v a s )
D .3 . D e sc rib a las c u a tr o v e n ta n a s b á sic a s d e a lto n iv el. u sa n d o u n ra tó n . U n a p u ls a c ió n c o m i e n /a la lín e a ; u n a se g u n d a p u lsa c ió n
D .4 . ¿ C u á le s so n las d ife re n c ia s e n tre la s c o m p o n e n te s L i s t y C h o i c e ? la te rm in a . S e p u e d e n d ib u ja r v a ria s lín e a s e n e l lie n z o P a ra e llo d e b e m o s
D .5 . ¿ P a ra q u é s e u s a u n a c o m p o n e n te C h e c k B o x ? e x te n d e r la c la s e C a n v a s y tra ta r lo s e v e n to s d e l rató n im p le m e n ta n d o
D .6 . E x p liq u e los p a so s n e c e sa rio s p a ra d is e ñ a r u n a G U I. M o u s e L i s t e n e r . T a m b ié n n e c e sita re m o s s o b re s c rib ir u p d a t e p a ra e v i
D .7 . E x p liq u e c ó m o c o lo c a n la s c o m p o n e n te s lo s c o n fig u ra d o re s F l o w L a y o u t . tar b o rra r e l lie n z o e n tr e lo s d ib u jo s d e las lín eas. A ñ a d a fin a lm e n te un b o
BorderLayout y n uil. tó n p a ra b o rr a r e l lienzo.
D .8 . D e sc rib a lo s p a so s n e c e sa rio s p a ra in c lu ir u n a c o m p o n e n te g rá fic a d en tro D .23. E s c rib a u n a a p lic a c ió n q u e c o n te n g a d o s o b je to s G U I . C u a n d o s e p m d u -
de un P a n e l . c e u n a a c c ió n e n u n o d e lo s o b je to s G U I . e l o tr o g u a rd a su e s ta d o . Al
D .9 . ¿ C u á l e s e l c o m p o rta m ie n to p o r d e fe c to c u a n d o s e p ro d u c e un e v e n to ? e fe c to , n e c e s ita m o s a ñ a d ir u n m é to d o c o p i a r E s t a d o a la c la s e G U I que
¿ C ó m o s e p u e d e c a m b ia r d ic h o c o m p o rta m ie n to ? c o p ia rá lo s e s ta d o s d e to d o s lo s c a m p o s d e la GU I y v o lv e rá a d ib u ja r el
D .IO . ¿ Q u é e v e n to s g e n e ra un A c t i o n E v e n t ? lienzo.
D .l I . ¿ C ó m o se tra ta e l e v e n to d e c ie rre d e u n a v e n ta n a ? D .24. E s c rib a u n p ro g ra m a q u e te n g a u n ú n ic o c o n te n e d o r y un c o n ju n to d e
D .I 2 . E x p liq u e las d if e re n c ia s e n tr e e sc rib ir u n a p p le t y u n a a p lic a c ió n . d ie z c o m p o n e n te s d e e n tr a d a c a d a u n a d e las c u a le s e s p e c ifiq u e u n a f o r
D .1 3 . E scrib a u n a lista d e a lg u n a s d e la s re s tric c io n e s q u e se ap lican a lo s a p p le ts. m a . u n c o lo r , u n a s c o o rd e n a d a s , un ta m a ñ o y u n o b je to c h e c k B o x q u e
in d iq u e si la c o m p o n e n te e s tá a c tiv a . T ras e l l o d ib u je la u n ió n d e las
Problem as p rácticos c o m p o n e n te s d e e n tr a d a e n un c o n te n e d o r. R e p re s e n te la c o m p o n e n te
G U I d e e n tr a d a u s a n d o u n a c la s e c o n fu n c io n e s d e a c c e s o . E l p ro g ra m a
JaVA 2
Características
E ste libro presenta las
estructuras de datos y
algoritmos desde la perspectiva • Contiene múltiples ejemplos
del pensamiento abstracto de aplicación, de una cierta
y la resolución de problemas. entidad, cuyo código original
En este texto, el profesor está disponible en Internet
Mark Alien Weiss adopta un y ha sido comprobado
enfoque actual, a través de la y revisado por un programador
separación de la especificación profesional.
y la implementación de • Se proporciona una amplia
las estructuras de datos. introducción al lenguaje Java.
En concreto, en la Parte II También se trata en un apéndice
del libro se presentan las las Interfaces Gráficas de Usuario
interfaces de las estructuras (GUIs).
de datos; a continuación, se • Incluye abundante material
ofrece a los lectores la pedagógico en forma de notas al
oportunidad de usar dichas margen y resúmenes adicionales
estructuras de datos en una gran al final de cada capítulo para
variedad de ejemplos prácticos, aclarar los conceptos más
antes de introducir en la Parte IV complejos.
su implementación. Con este • Ofrece flexibilidad en el orden
enfoque los lectores se de estudio de los temas,
acostumbrarán a razonar de minimizando las dependencias
forma más abstracta. entre los distintos capítulos.