Você está na página 1de 387

Contenido

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

5. A n á lis is d e a l g o r i t m o s ........................................................................................................................................... 103

5 .1 . ¿ Q u é e s el a n á lis is d e a lg o r itm o s ? ........................................................................................................ 104


5 .2 . E je m p lo s d e tie m p o d e e je c u c ió n d e a lg o r itm o s ............................................................................ 107
5 .3 . E l p r o b le m a d e la s u b s e c u e n c ia d e su m a m á x i m a .......................................................................... 108
5 .3 .1 . E l a lg o ritm o O(N^) o b v i o ........................................................................................................ 109
5 .3 .2 . U n a lg o ritm o m e jo ra d o 0 ( N 2) .............................................................................................. 112
5 .3 .3 . U n a lg o ritm o l i n e a l ..................................................................................................................... 113
5 .4 . R e g la s g e n e ra le s p a ra la n o ta c ió n O ...................................................................................................... 114
5 .5 . L o g a r itm o s ......................................................................................................................................................... 119
5 .6 . P ro b le m a d e la b ú s q u e d a e s t á t i c a .......................................................................................................... 121
5 .6 .1 . B úsq ueda s e c u e n c ia l................................................................................................................. 121
5 .6 .2 . B ú s q u e d a b i n a r i a .......................................................................................................................... 122
5 .6 .3 . B ú s q u e d a in t e r p o l a d a ................................................................................................................. 124
5 .7 . C o m p ro b a r e l a n á lis is d e u n a lg o r itm o ................................................................................................ 125
5.8. L im ita c io n e s d e l a n á lis is O ....................................................................................................................... 127
R e s u m e n .......................................................................................................................................................................... 127
E le m e n to s d e l j u e g o .................................................................................................................................................. 128
E rro re s c o m u n e s ........................................................................................................................................................ 129
E n I n t e r n e t ..................................................................................................................................................................... 129
E j e r c i c i o s ........................................................................................................................................................................ 130
B ib lio g r a f ía .................................................................................................................................................................... 134

6. E s tr u c tu r a s d e d a t o s ................................................................................................................................................ 137

6 .1 . ¿ P o r q u é n e c e s ita m o s e s tru c tu ra s d e d a t o s ? ....................................................................................... 137


6 .2 . L a s p i l a s .............................................................................................................................................................. 139
6 .2 .1 . L as p ila s y lo s le n g u a je s d e p r o g r a m a c ió n ....................................................................... 141
6 .3 . L a s c o l a s ............................................................................................................................................................ 142
6 .4 . L is ta s e n l a z a d a s ............................................................................................................................................... 144
6 .5 . Á rb o le s g e n e r a l e s ........................................................................................................................................... 147
6 .6 . Á rb o le s b in a rio s d e b ú s q u e d a .................................................................................................................. 149
6 .7 . T a b la s h a s h ........................................................................................................................................................ 153
6 .8 . C o la s d e p r i o r id a d ........................................................................................................................................... 155
R e s u m e n .......................................................................................................................................................................... 158
E le m e n to s d el j u e g o .................................................................................................................................................. 159
E rro re s c o m u n e s ........................................................................................................................................................ 159
E n i n t e r n e t ..................................................................................................................................................................... 160
E j e r c i c i o s ........................................................................................................................................................................ 160
B ib l i o g r a f ía .................................................................................................................................................................... 163

7. R e c u r s i ó n ........................................................................................................................................................................ 165

7.1. ¿ Q u é e s la r e c u r s ió n ? ................................................................................................................................... 165


7.2. F u n d a m e n to s : d e m o s tra c io n e s p o r in d u c c ió n m a te m á tic a .......................................................... 166
7.3. R e c u rs ió n b á s i c a .......................................................................................................................................... 170
7 .3 .1 . Im p re s ió n d e n ú m e ro s en c u a lq u ie r b a s e ........................................................................ 170
7 .3 .2 . ¿ P o r q u é f u n c i o n a ? ..................................................................................................................... 172
7 .3 .3 . C ó m o f u n c i o n a .............................................................................................................................. 174
7 .3 .4 . D e m a s ia d a re c u rs ió n p u e d e s e r p e lig r o s a ........................................................................ 175
7 .3 .5 . E je m p lo s a d ic io n a le s ................................................................................................................. 176
7 .4 . A p lic a c io n e s n u m é r ic a s ........................................................................................................................... 180
7 .4 .1 . A r itm é tic a m o d u l a r ...................................................................................................................... 181
7 .4 .2 . E x p o n e n c ia c ió n m o d u l a r ......................................................................................................... 181
7 .4 .3 . M á x im o c o m ú n d iv is o r e in v e rs o s m u ltip lic a tiv o s ...................................................... 183
7 .4 .4 . E l s is te m a d e c rip to g r a f ía R S A ............................................................................................ 185
7 .5 . A lg o ritm o s d iv id e y v e n c e r á s ................................................................................................................. 188
7 .5 .1 . E l p r o b le m a d e la s u b s e c u e n c ia d e su m a m á x i m a ........................................................ 188
7 .5 .2 . A n á lis is d e un a lg o ritm o d iv id e y v e n c e rá s s e n c i l l o .................................................... 190
7 .5 .3 . U n a c o ta s u p e rio r g e n e ra l p a ra los tie m p o s d e e je c u c ió n d e lo s a lg o ritm o s d i­
v id e y v e n c e r á s ............................................................................................................................ 195
7.6. P ro g ra m a c ió n d i n á m i c a ............................................................................................................................. 197
7 .7 . A lg o ritm o s d e v u e lta a t r á s ....................................................................................................................... 201
R e s u m e n .......................................................................................................................................................................... 205
E le m e n to s d e l j u e g o .................................................................................................................................................. 205
E rro re s c o m u n e s ........................................................................................................................................................ 206
E n I n t e r n e t ..................................................................................................................................................................... 207
E j e r c i c i o s ........................................................................................................................................................................ 207
B ib lio g r a f ía .................................................................................................................................................................... 211

8. A lg o r itm o s d e o r d e n a c i ó n .................................................................................................................................. 213

8 .1 . ¿ P o r q u é e s im p o rta n te la o r d e n a c ió n ? ................................................................................................ 213


8.2. P r e lim in a r e s ..................................................................................................................................................... 215
8.3. A n á lis is d e la o rd e n a c ió n p o r in se rc ió n y o tra s o rd e n a c io n e s s im p le s ................................ 215
8.4. S h e l l s o r t............................................................................................................................................................. 217
8 .4 .1 . R e n d im ie n to d e S h e lls o r t......................................................................................................... 219
8.5. M e r g e s o r t.......................................................................................................................................................... 221
8 .5 .1 . M e z c la lin e a l d e v e c to re s o r d e n a d o s ................................................................................... 221
8 .5 .2 . E l a lg o ritm o m e r g e s o r t.............................................................................................................. 224
8 .6 . Q u ic k s o r t........................................................................................................................................................... 225
8 .6 . 1. E l a lg o ritm o q u ic k s o r t................................................................................................................. 225
8 .6 .2 . A n á lis is d e q u ic k s o r t................................................................................................................... 227
8 .6 .3 . S e le c c io n a n d o el p iv o t e ............................................................................................................ 230
8 .6 .4 . E s tra te g ia d e p a r tic ió n ................................................................................................................. 232
8 .6 .5 . E le m e n to s ig u a le s al p i v o t e ...................................................................................................... 234
8 .6 .6 . P a rtic ió n c o n la m e d ia n a d e t r e s ........................................................................................... 234
8 .6 .7 . V e c to re s p e q u e ñ o s ....................................................................................................................... 235
8 .6 . 8 . R u tin a d e q u ic k s o rt e n J a v a ...................................................................................................... 236
8.7. S e le c c ió n r á p i d a ............................................................................................................................................ 238
8 .8 . U n a c o la in fe rio r p a ra la o r d e n a c ió n .................................................................................................. 240
R e s u m e n ......................................................................................................................................................................... 241
E le m e n to s d e l j u e g o ................................................................................................................................................. 241
E rro re s c o m u n e s ........................................................................................................................................................ 242
E n I n t e r n e t ..................................................................................................................................................................... 242
E je r c ic io s ........................................................................................................................................................................ 242
B ib lio g r a f ía ................................................................................................................................................................... 246

9. N ú m e r o s a l e a t o r i o s ................................................................................................................................................ 249

9.1. ¿ P o r q u é s o n n e c e s a rio s lo s n ú m e ro s a le a to r io s ? .......................................................................... 249


9.2. G e n e ra d o re s d e n ú m e ro s a le a to r io s .................................................................................................... 250
9 .3 . N ú m e ro s a le a to rio s n o u n if o r m e s ........................................................................................................ 256
9 .4 . G e n e ra c ió n d e u n a p e rm u ta c ió n a l e a to r ia ......................................................................................... 258
9 .5 . A lg o ritm o s a l e a to r io s .................................................................................................................................. 259
9 .6 . T e s t a le a to rio d e p r im a lid a d ................................................................................................................... 261
R e s u m e n ......................................................................................................................................................................... 265
E le m e n to s d e l j u e g o ................................................................................................................................................. 265
E rro re s c o m u n e s ........................................................................................................................................................ 266
E n I n t e r n e t.................................................................................................................................................................... 266
E je r c ic io s ........................................................................................................................................................................ 267
B ib lio g r a f ía ................................................................................................................................................................... 268

TERCERA PARTE
A p lic a c io n e s

10. J u e g o s y d i v e r s i ó n .................................................................................................................................................... 273

10.1. S o p a s d e l e t r a s .............................................................................................................................................. 273


10.1.1. T e o r í a ............................................................................................................................................ 274
10.1.2. Im p le m e n ta c ió n e n J a v a ........................................................................................................ 276
10.2. E l ju e g o d e las tr e s en r a y a .................................................................................................................... 281
10.2 .1 . P o d a a l f a - b e t a ............................................................................................................................ 281
10.2 .2 . T a b la s d e tr a n s p o s ic ió n ......................................................................................................... 282
10.3. El a je d re z ....................................................................................................................................................... 285
R e s u m e n ......................................................................................................................................................................... 287
E le m e n to s d e l j u e g o ................................................................................................................................................. 287
E rro re s c o m u n e s ........................................................................................................................................................ 288
E n I n t e r n e t ..................................................................................................................................................................... 288
E j e r c i c i o s ........................................................................................................................................................................ 288
B ib lio g r a f ía .................................................................................................................................................................... 290

11. L as p i la s y lo s c o m p i l a d o r e s .............................................................................................................................. 291

11.1. A n a liz a d o r de s ím b o lo s e q u ilib r a d o s ................................................................................................. 291


11.1.1. E l a lg o ritm o b á s i c o ................................................................................................................. 291
11.1.2. I m p le m e n ta c ió n .......................................................................................................................... 293
11.2. U n a c a lc u la d o ra s e n c il l a ........................................................................................................................... 301
11.2.1. M á q u in a s p o s t f i j a s ................................................................................................................... 302
11.2 .2 . C o n v e rs ió n d e n o ta c ió n in fija a p o s t f i j a .......................................................................... 302
11.2 .3 . I m p le m e n ta c ió n .......................................................................................................................... 305
11.2.4. Á rb o le s s in tá c tic o s d e e x p r e s io n e s ..................................................................................... 312
R e s u m e n ......................................................................................................................................................................... 313
E le m e n to s d e l j u e g o .................................................................................................................................................. 313
E rro re s c o m u n e s ........................................................................................................................................................ 314
E n I n t e r n e t ..................................................................................................................................................................... 314
E j e r c i c i o s ........................................................................................................................................................................ 315
B ib lio g r a f ía .................................................................................................................................................................... 316

12. U t i l i d a d e s ........................................................................................................................................................................ 3 )7

12.1. C o m p re s ió n d e f i c h e r o s ........................................................................................................................... 317


1 2 .1 .1 . C ó d ig o s sin p r e f i j o s ............................................................................................................... 318
12.1.2. A lg o ritm o d e H u f f m a n ......................................................................................................... 320
12 .1 .3 . L a fa s e d e c o d if ic a c ió n ......................................................................................................... 322
12.1 .4 . L a fa se d e d e c o d if ic a c ió n ................................................................................................... 323
12.1 .5 . C o n s id e ra c io n e s p r á c tic a s ................................................................................................... 324
12.2. G e n e ra d o r d e re fe re n c ia s c r u z a d a s ...................................................................................................... 324
12.2 .1 . Id e a s b á s i c a s .............................................................................................................................. 324
12.2 .2 . I m p le m e n ta c ió n e n J a v a ....................................................................................................... 325
R e s u m e n .......................................................................................................................................................................... 330
E le m e n to s d el j u e g o .................................................................................................................................................. 330
E rro re s c o m u n e s ........................................................................................................................................................ 330
E n I n t e r n e t ..................................................................................................................................................................... 330
E j e r c i c i o s ........................................................................................................................................................................ 331
B ib lio g r a f ía .................................................................................................................................................................... 333

13. S i m u l a c i ó n ..................................................................................................................................................................... 335

13.1. E l p ro b le m a J o s e p h u s ................................................................................................................................ 335


13.1.1. L a s o lu c ió n s i m p l e .................................................................................................................. 336
13.1.2. U n a lg o ritm o m á s e f i c i e n t e ................................................................................................. 338
13.2. S im u la c ió n d irig id a p o r e v e n t o s ........................................................................................................... 340
13.2 .1 . Id e a s b á s i c a s ............................................................................................................................... 340
13.2 .2 . E je m p lo : s im u la c ió n d e u n b a n c o d e m ó d e m s .......................................................... 341
R e s u m e n .......................................................................................................................................................................... 348
E le m e n to s d e l j u e g o .................................................................................................................................................. 348
E rro re s c o m u n e s ........................................................................................................................................................ 349
E n I n t e r n e t ..................................................................................................................................................................... 349
E je r c ic io s ........................................................................................................................................................................ 349

14. G r a f o s y c a m i n o s ...................................................................................................................................................... 353

14.1. D e f in ic io n e s .................................................................................................................................................. 353


14.1 .1 . R e p r e s e n ta c ió n .......................................................................................................................... 355
14.2. P ro b le m a d el c a m in o m ín im o sin p e s o s ......................................................................................... 366
14.2.1. T e o r í a ............................................................................................................................................ 366
14.2.2. ím p le m e n ta c ió n e n J a v a ....................................................................................................... 370
14.3. P ro b le m a d e lo s c a m in o s m ín im o s co n p e so s p o s itiv o s ......................................................... 371
14.3.1. T e o ría : a lg o ritm o d e D ijk s tr a ............................................................................................ 371
14.3.2. Im p le m e n ta c ió n e n J a v a ....................................................................................................... 375
14.4. P ro b le m a d el c a m in o m ín im o c o n c o s te s n e g a tiv o s .................................................................... 376
14.4.1. T e o r í a ............................................................................................................................................ 376
14.4.2. Ím p le m e n ta c ió n e n J a v a ....................................................................................................... 377
14.5. P ro b le m a s d e c a m in o s e n g ra fo s a c í c l i c o s ..................................................................................... 379
14.5 .1 . O rd e n a c ió n t o p o ló g ic a ......................................................................................................... 379
14.5.2. T e o r ía d e l a lg o ritm o d e c a m in o s m ín im o s c o n un g ra fo a c í c l i c o ................... 381
14.5 .3 . Im p le m e n ta c ió n e n J a v a ....................................................................................................... 382
14.5 .4 . U n a a p lic a c ió n : a n á lis is d e c a m in o s c r í t i c o s .............................................................. 382
R e s u m e n .......................................................................................................................................................................... 386
E le m e n to s d el j u e g o ................................................................................................................................................. 386
E rro re s c o m u n e s ........................................................................................................................................................ 387
E n I n t e r n e t...................................................................................................... 388
E je r c ic io s ........................................................................................................................................................................ 388
B ib lio g r a f ía .................................................................................................................................................................... 391

CUARTA PARTE
Im p le m e n ta c io n e s

15. P ilas y c o l a s ................................................................................................................................................................. 395

15.1. Im p le m e n ta c ió n d in á m ic a d e v e c t o r e s ............................................................................................ 395


15.1.1. P i l a s ................................................................................................................................................ 395
15.1.2. C o l a s .............................................................................................................................................. 399
15.2. Im p le m e n ta c io n e s c o n lista s e n l a z a d a s ............................................................................................ 404
15.2.1. P i l a s ................................................................................................................................................ 401
15.2.2. C o l a s .............................................................................................................................................. 408
15.3. C o m p a ra c ió n d e lo s d o s m é to d o s ...................................................................................................... 409
15.4. C o la s d o b l e s ................................................................................................................................................. 411
R e s u m e n .......................................................................................................................................................................... 411
E le m e n to s d e l j u e g o .................................................................................................................................................. 412
E rro re s c o m u n e s ........................................................................................................................................................ 412
E n I n t e r n e t ..................................................................................................................................................................... 413
E j e r c i c i o s ........................................................................................................................................................................ 413

16. L istas e n l a z a d a s ........................................................................................................................................................ 415

16.1. Id e a s b á s i c a s .................................................................................................................................................. 415


16.1 .1 . N o d o s c a b e c e r a ........................................................................................................................ 417
16.1 .2 . C la s e s i te r a d o r a s ...................................................................................................................... 418
16.2. Im p le m e n ta c ió n e n J a v a ......................................................................................................................... 419
16.3. L is ta s d o b le m e n te e n la z a d a s y lis ta s e n la z d a s c ir c u la r e s .......................................................... 426
16.4. L ista s e n la z a d a s o r d e n a d a s ................................................................................................................... 428
R e s u m e n .......................................................................................................................................................................... 430
E le m e n to s d e l j u e g o .................................................................................................................................................. 431
E rro re s c o m u n e s ........................................................................................................................................................ 431
E n I n t e r n e t ..................................................................................................................................................................... 431
E j e r c i c i o s ........................................................................................................................................................................ 432

17. Á r b o l e s ............................................................................................................................................................................ 435

17.1. Á rb o le s g e n e r a l e s ...................................................................................................................................... 435


17.1.1. D e f in ic io n e s .............................................................................................................................. 435
17.1 .2 . I m p le m e n ta c ió n ........................................................................................................................ 437
17.1.3. U n a a p lic a c ió n : s is te m a s d e f ic h e r o s .............................................................................. 437
17.2. Á rb o le s b i n a r i o s ........................................................................................................................................ 441
17.3. Á rb o le s y r e c u r s ió n .................................................................................................................................. 448
17.4. R e c o rrid o d e á rb o le s: c la s e s ite r a d o r a s ............................................................................................. 450
17.4.1. R e c o rrid o en p o s t o r d e n .......................................................................................................... 453
17.4 .2 . R e c o rrid o e n o rd e n s im é tr ic o .............................................................................................. 457
17.4 .3 . R e c o rrid o e n p r e o r d e n ............................................................................................................ 458
17.4.4. R e c o rrid o p o r n i v e l e s .............................................................................................................. 459
R e s u m e n .......................................................................................................................................................................... 461
E le m e n to s d e l j u e g o .................................................................................................................................................. 461
E rro re s c o m u n e s ........................... 462
E n I n t e r n e t ..................................................................................................................................................................... 462
E j e r c i c i o s ........................................................................................................................................................................ 463

18. Á r b o le s b in a r io s d e b ú s q u e d a .......................................................................................................................... 467

18.1. Id e a s b á s i c a s ................................................................................................................................................. 467


18.1.1. L a s o p e r a c io n e s I ............................................................................................................ 468
18.1.2. Im p le m e n ta c ió n e n J a v a ...................................................................................................... 470
18.2. B ú s q u e d a p o r p o s ic ió n e n e l o r d e n ...................................................................................................... 477
18.2.1. Im p le m e n ta c ió n e n J a v a ........................... 477
18.3. A n á lis is d e las o p e ra c io n e s d e los á rb o le s b in a rio s d e b ú s q u e d a ....................................... 481
18.4. Á rb o le s A V I ............................................................................................................................................... 484
18.4.1. P r o p ie d a d e s ................................................................................................................................ 485
18.4 .2 . R o ta c ió n s i m p l e ..................................................................... 487
18.4.3. R o ta c ió n d o b l e ......................................................................................................................... 490
18.4 .4 . R e s u m e n d e la in s e rc ió n e n un á rb o l A V L .................................................................. 492
18.5. Á rb o le s r o jin e g r o s .....................................................................................................................................
18.5 .1 . In s e rc ió n a s c e n d e n te ............................................................................................................. 493
18.5.2. Á rb o le s ro jin e g ro s d e s c e n d e n te s ..................................................................................... 495
18.5.3. I m p le m e n ta c ió n e n J a v a ...................................................................................................... 497
18.5.4. E lim in a c ió n d e s c e n d e n te .................................................................................................... 303
18.6. A A - Á r b o le s .................................................................................................. 505
18.6.1. I n s e r c ió n ....................................................................................................................................... 506
18.6.2. E lim in a c ió n ................................................................... 509
18.6.3. Im p le m e n ta c ió n e n J a v a ......................................................................................................... 509
18.7. B - Á r b o l e s ....................................................................................... 512
R e s u m e n ......................................................................................................................................................................... 519
E le m e n to s d el j u e g o ................................................................................................................................................. 520
E rro re s c o m u n e s ........................................................................................................................................................ 521
E n I n t e r n e t ..................................................................................................................................................................... 521
E j e r c i c i o s ........................................................................................................................................................................ 522
B ib lio g r a f ía .................................................................................................................................................................... 524

19. T a b la s h a s h .................................................................................................................................................................... 527

1 9 .1. Id e a s b á s ic a s ................................................................................................................................................... 527


19.2. F u n c ió n d e l o c a liz a c i ó n ........................................................................................................................... 529
19.3. E x p lo ra c ió n l i n e a l ........................................................................................................................................ 531
19.3.1. A n á lis is d e la e x p lo ra c ió n l i n e a l ...................................................................................... 532
19.3 .2 . L o q u e su c e d e re a lm e n te : la a g ru p a c ió n p r im a r ia ..................................................... 533
19.3 .3 . A n á lis is d e la o p e ra c ió n b u s c a r ..................................................................................... 534
19.4. E x p lo ra c ió n c u a d r á ti c a ............................................................................................................................. 536
19.4 .1 . I m p le m e n ta c ió n e n J a v a ....................................................................................................... 541
19.4 .2 . A n á lis is d e la e x p lo ra c ió n c u a d r á tic a ............................................................................ 544
19.5. H a s h in g e n l a z a d o ........................................................................................................................................ 545
R e s u m e n .......................................................................................................................................................................... 546
E le m e n to s d el j u e g o .................................................................................................................................................. 547
E rro re s c o m u n e s ........................................................................................................................................................ 548
E n I n t e r n e t ..................................................................................................................................................................... 548
E j e r c i c i o s ........................................................................................................................................................................ 549
B ib lio g r a f ía .................................................................................................................................................................... 551

20. U n a c o l a d e p r io r id a d : e l m o n t í c u l o b i n a r i o ............................................................................................ 553

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

21. Á r b o le s d e e n s a n c h a m i e n t o ............................................................................................................................ 587

2 1 .1 . A u to -a ju s ta m ie n to y a n á lis is a m o r tiz a d o ......................................................................................... 587


2 1 .1 .1 . C o ta s d e tie m p o a m o r tiz a d a s ............................................................................................ 588
2 1 .1 .2 . U n a e s tra te g ia s im p le d e a u to -a ju s ta m ie n to (q u e n o f u n c io n a ) ........................ 589
2 1 .2 . Á rb o le s b á s ic o s d e e n s a n c h a m ie n to a s c e n d e n te ............................................................................ 591
2 1 .3 . O p e ra c io n e s b á s ic a s d e lo s á rb o le s d e e n s a n c h a m ie n to ........................................................... 593
2 1 .4 . A n á lis is d e l e n s a n c h a m ie n to a s c e n d e n te ......................................................................................... 594
2 1 .4 .1 . D e m o s tra c ió n d e la c o ta d e e n s a n c h a m ie n to .............................................................. 597
2 1 .5 . Á rb o le s d e e n s a n c h a m ie n to d e s c e n d e n te ......................................................................................... 600
2 1 .6 . lm p le m e n ta c ió n d e lo s á rb o le s c o n e n s a n c h a m ie n to d e s c e n d e n te ........................................ 602
2 1 .7 . C o m p a ra c io n e s d e los á rb o le s d e e n s a n c h a m ie n to c o n o tro s á rb o le s d e b ú s q u e d a . . . 608
R e s u m e n .......................................................................................................................................................................... 608
E le m e n to s d e l j u e g o .................................................................................................................................................. 608
E rro re s c o m u n e s ........................................................................................................................................................ 609
E n I n t e r n e t ..................................................................................................................................................................... 609
E je r c ic io s ........................................................................................................................................................................ 609
B ib lio g r a f ía .................................................................................................................................................................... 611

22. C o l a s d e p r i o r i d a d c o n m e z c l a ...................................................................................................................... 613

2 2 .1 . L o s m o n tíc u lo s s e s g a d o s .......................................................................................................................... 613


2 2 .1 .1 . L a m e z c la e s im p o r ta n te ....................................................................................................... 613
2 2 .1 .2 . M e z c la sim p le d e á rb o le s c o n o rd e n a c ió n d e m o n tíc u lo s ..................................... 614
2 2 .1 .3 . E l m o n tíc u lo se s g a d o : u n a m o d ific a c ió n s e n c illa .................................................... 615
2 2 .1 .4 . A n á lis is d el m o n tíc u lo s e s g a d o ........................................................................................ 616
2 2 .2 . L o s m o n tíc u lo s d e e m p a r e ja m ie n to s .................................................................................................. 618
2 2 .2 .1 . O p e ra c io n e s d e l m o n tíc u lo d e e m p a re ja m ie n to s y t e o r í a ..................................... 618
2 2 . 2 .2 . lm p le m e n ta c ió n d e l m o n tíc u lo d e e m p a r e ja m ie n to s ................................................ 620
2 2 .2 .3 . A p lic a c ió n : el a lg o ritm o d e D ijk stra p a ra la o b te n c ió n de c a m in o s m ín im o s. 626
R e s u m e n .......................................................................................................................................................................... 629
E le m e n to s d e l j u e g o .................................................................................................................................................. 629
E rro re s c o m u n e s ........................................................................................................................................................ 630
E n I n t e r n e t..................................................................................................................................................................... 630
E j e r c i c i o s ........................................................................................................................................................................ 630
B ib lio g r a f ía .................................................................................................................................................................... 631

23. E s tr u c tu r a d e p a r t i c i ó n ......................................................................................................................................... 633

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

C. A lg u n a s r u tin a s d e l i b r e r í a s .................................................................................................................................... 681

C .l. C la s e s d e l p a q u e te j a v a . l a n g ............................................................................................................ 681


C . 1.1. C h a r a c t e r ..................................................................................................................................... 681
C .1 .2 . I n t e g e r ........................................................................................................................................... 682
C . l . 3. O b j e c t ............................................................................................................................................. 683
C .1 .4 . S t r i n g ................................... 684
C .1 .5 . S t r i n g B u f f e r ............................................................................................................................. 685
C .l.6 . S y s t e m ............................................................................................................................................. 687
C . l . 7. T h r e a d ............................................................................................................................................. 688
C .1 .8 . T h r o w a b l e ..................................................................................................................................... 689
C .2 . C la s e s d el p a q u e te j a v a . i o ................................................................................................................... 689
C .2 .1 . B u f f e r e d R e a d e r ....................................................................................................................... 689
C .2 .2 . F i l e ................................................................................................................................................... 690
C .2 .3 . F i l e R e a d e r .................................................................................................................................. 691
C .2 .4 . i n p u t S t r e a m R e a d e r ............................................................................................................... 691
C .2 .5 . P u s h b a c k R e a d e r ....................................................................................................................... 691
C .3 . C la s e s d e l p a q u e te j a v a . ú t i l ............................................................................................................ 692
C .3 .1 . R a n d o m ............................................................................................................................................. 692
C .3 .2 . S t r i n g T o k e n i z e r .................................................................................................................... 693
C .3 .3 . V e c t o r ............................................................................................................................................. 694
E n I n t e r n e t ..................................................................................................................................................................... 694
D. I n t e r f a c e s g r á f i c a s d e u s u a r i o ............................................................................................................................... 695

D I. El A b s tra c t W in d o w T o o l k i t ..................................................................................................................... 695


D .2. E le m e n to s b á s ic o s d e l A W T .................................................................................................................... 696
D .2 .I . C o m p o n e n t.................................................................................................................................... 697
D .2 .2 . C o n t a i n e r ................................................................................................................................... 697
D .2 .3 . V e n ta n a s d e a lto n i v e l ............................................................................................................ 698
D .2 .4 . P a n e l ................................................................................................................................................ 700
D .2 .5 . C o m p o n e n te s im p o rta n te s d e la E S ................................................................................. 701
D .3. P rin c ip io s b á s ic o s d e l A W T .................................................................................................................... 705
D .3 .1 . C o n f ig u r a c io n e s .......................................................................................................................... 705
D .3 .2 . G r á f i c o s .......................................................................................................................................... 708
D .3 .3 . E v e n t o s ........................................................................................................................................... 710
D .3 .4 . R e su m e n : e n c a ja n d o las p i e z a s ............................................................................................ 713
D .4. A n im a c io n e s y h e b r a s .................................................................................................................................. 713
D .5. A p p l e t s ................................................................................................................................................................. 715
D .5 .I . L e n g u a je d e h i p e r t e x to .......................................................................................................... 716
D .5 .2 . P a r á m e tr o s ..................................................................................................................................... 719
D .5 .3 . L im ita c io n e s d e lo s a p p l e t s .................................................................................................. 719
D .5 .4 . C o n v e rs ió n d e u n a a p lic a c ió n e n un a p p l e t .................................................................. 720
D .5 .5 . A p p le ts c o n a n i m a c ió n ........................................................................................................... 722
R e s u m e n ......................................................................................................................................................................... 724
E le m e n to s d el j u e g o .................................................................................................................................................. 724
E rro re s c o m u n e s ........................................................................................................................................................ 726
E n I n t e r n e t ..................................................................................................................................................................... 727
E je r c ic io s ........................................................................................................................................................................ 728
B ib lio g r a f ía .................................................................................................................................................................... 730

í 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:

• S i se d e b e o n o in tro d u c ir p ro n to e l d is e ñ o o rie n ta d o a o b je to s y o e l d ise ñ o


b a sa d o e n o b je to s.
• E l n iv el d e n g o r m a te m á tic o q u e s e v a a m antener.
• E l e q u ilib r io a d e c u a d o e n tre la im p le m e n ta c ió n d e las e s tru c tu ra s d e d a to s y
su u tilizació n .
• D e ta lle s d e p ro g ra m a c ió n re la c io n a d o s c o n e l le n g u a je e le g id o (p o r eje m p lo ,
si la s G U I d e b e ría n u sa rse p ro n to o no).

M i o b je tiv o a la h o ra d e e s c r ib ir e s te lib ro e s p ro p o rc io n a r u n a in tro d u c c ió n


p rá c tic a a las e s tru c tu ra s d e d a to s y lo s a lg o ritm o s d e sd e e l p u n to d e v ista d e l p e n ­
sa m ie n to a b s tra c to y la re s o lu c ió n d e p ro b le m a s. In te n to c u b rir to d o s lo s d e ta lle s
im p o rta n te s c o n c e rn ie n te s a las e s tru c tu ra s d e d a to s , su a n á lisis y su s im p lem en ta-
c io n e s e n J a v a , a u n q u e ev ita n d o a q u e lla s e s tru c tu ra s q u e si b ie n so n in te re sa n te s
d e s d e un p u n to d e v ista te ó ric o , n o s e u tiliz a n c o n a s id u id a d . F.s im p o sib le c u b rir
e n u n ú n ic o c u rs o to d a s la s e s tru c tu r a s d e d a to s p re s e n ta d a s e n este lib ro , in-
e lu y e n d o s u s u s o s y a n á lisis. P o r e llo , h e d is e ñ a d o e l lib ro p ara p e rm itir u n a c ie rta L o s c o n o c im ie n to s so b re m a te m á tic a d is c re ta s o n ú tile s p e r o n o a b so lu ta m e n te
fle x ib ilid a d a lo s p ro fe so re s a la h o ra d e fija r su te m a rio . C a d a p ro f e s o r te n d r á q u e n e c e sario s. A u n q u e h a y v a ria s d e m o s tra c io n e s m a te m á tic a s , m u c h a s d e e lla s e s tá n
d e c id ir e l e q u ilib rio a d e c u a d o e n tre te o r ía y p rá c tic a , y e le g ir e n c o n se c u e n c ia p re c e d id a s p o r u n a b re v e in tro d u c c ió n m a te m á tic a . L o s c a p ítu lo s 7. y d e l IX al 23.
a q u e llo s te m a s q u e m e jo r e n c a je n e n su a sig n a tu ra . C o m o in d ic o m á s a d e la n te en re q u ie re n u n c ie r to g ra d o d e so fistic a c ió n m a te m á tic a . E v c n tu a lm e n te el p ro fe so r
e s te p re fa c io , e l te x to e s ta o rg a n iz a d o p ro c u ra n d o m in im iz a r las d e p e n d e n c ia s e n ­ p o d ría e v ita r lo s a sp e c to s m a te m á tic o s d e las d e m o s tra c io n e s p re s e n ta n d o s o la ­
tre lo s d is tin to s c a p ítu lo s. m e n te los re s u lta d o s . T o d a s las d e m o s tra c io n e s d e l lib ro e s tá n c la ra m e n te m a rc a ­
d a s y s e p a ra d a s d e l c u e rp o c e n tra l d e l te x to .

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.

Fundamentos m atem áticos


D ep en d en cias entre capítulos
H e in te n ta d o m o s tra r los re s u lta d o s c o n e l rig o r m a te m á tic o n e c e sa rio p a ra sa tis fa ­
c e r la s e x p e c ta tiv a s d e a q u e llo s c u rs o s d e E stru c tu ra s d e D a to s e n lo s q u e s e h ace
H a b la n d o d e fo rm a g e n e ra l, la m a y o ría d e lo s c a p ítu lo s s o n in d e p e n d ie n te s e n tre
é n fa s is e n la te o ría , y p a ra lo s c u rs o s su p e rio re s , q u e in c lu y e n m á s a n á lis is . S in
sí. E n u m e ra m o s a c o n tin u a c ió n la s d e p e n d e n c ia s m á s n o ta b le s:
e m b a rg o , Cste m a te ria l se se p a ra d e l te x to p rin c ip a l p re s e n tá n d o s e e n fo rm a de
• P a n e I: c o n la e x c e p c ió n d e l c a s o d e e s tu d io F i g u r a d e l C a p ítu lo 4 . to d o el te o re m a s s e p a ra d o s y. e n a lg u n o s c a s o s , se c c io n e s se p a ra d a s ( o s u b s e c c io n e s). IX-
m a te ria l d e la P arte I d e b e ría se r c u b ie rta e n o rd e n , a n te s d e c o n tin u a r c o n el e s te m o d o , p u e d e p re s c in d irs e d e é l e n lo s c u rs o s e n lo s q u e se d e c id a n o c o n c e d e r
re s to d e l lib ro E l c o n c e p to d e in te rfa / d e b e se r in tro d u c id o , p e r o lo s d e ta lle s ta n ta im p o rta n c ia a lo s re s u lta d o s te ó ric o s.
so b re la h e re n c ia p o d ría n c u b rirs e e n s e n tid o a m p lio s ó lo si e l p ro fe s o r a s í lo E n c u a lq u ie r c a s o , n o e s n e c e sa rio e n te n d e r la d e m o s tra c ió n d e u n te o re m a fia­
elig e. ra c o m p re n d e r e l re s u lta d o e n sí. E sta e s o tra m u e s tra d e la d is tin c ió n e n tre u n a
• C a p ítu lo 5 IA n á lisis ile a lg o r itm o s !: d e b e ría c u b rirs e a n te s d e lo s C a p ítu lo s in te rfa z (el e n u n c ia d o d e un te o re m a ) y su im p le m e n ta c ió n (s u d e m o s tra c ió n i.
6 y X L a re c u rsió n (C a p ítu lo 7 ) p o d ría c u b rirse a n te s d e e s te c a p ítu lo , p e ro A sí. p arle d e l m a te ria l in h e re n te m e n te m a te m á tic o , c o m o la S e c c ió n 7 .4 (A p lic a ­
e l p ro fe s o r d e b e ría d a r d e ta lle s p a ra e v ita r la re c u rsió n in e fic ien te . c io n e s n u m é ric a s d e la re c u rsió n ). p u e d e e v ita rs e sin q u e e llo a fe c te a la c o m p re n ­
• C a p ítu lo 6 t E s tr u c tu r a s J e J a to s I: p u e d e c u b rirs e a n te s o d u ra n te la e x p lic a ­ sión d e l re s to d e c a d a ca p ítu lo .
c ió n d e l m a te ria l d e la s P a rte s III y IV .
• C a p ítu lo 7 1R e c u r s ió n !: e l m a te ria l d e la s S e c c io n e s 7 I -7. 3 d e b e ría c u b rirse
a n te s d e l e s tu d io d e lo s a lg o ritm o s d e o rd e n a c ió n , lo s á rb o le s, e l e je m p lo d e Organización del curso
las tre s e n ra y a y lo s a lg o ritm o s d e b ú sq u e d a d e c a m in o s m ín im o s. P o r su
U n a s p e c to fu n d a m e n ta l a la h o ra d e e n s e ñ a r e l c o n te n id o d e e s te lib ro e s d ecid ir
p a rle , m a te ria l c o m o e l s iste m a d e e n c rip ta c ió n R S A . la p ro g ra m a c ió n d in á ­
c ó m o e m p le a r e l m a te ria l c o n te n id o e n las P a n e s II. III y IV . E l m a te ria l d e la P ar
m ic a y la v u e lta a tr á s e s o p c io n a l.
te I h a d e se r e x p lic a d o c o n d e te n im ie n to , y e l e stu d ia n te d e b e ría re a liz a r varios
• C a p ítu lo X (O r d e n a c ió n J: d e b e ría ir tra s lo s C a p ítu lo s 5 y 7 . S in e m b a rg o , e s
p ro g ra m a s q u e m u e s tre n c ó m o d e b e re a liz a rs e e l d iserto , la im p le m e n ta c ió n . la
p o s ib le c u b r ir S h e lls o n sin h a b e r v is to e s to s c a p ítu lo s , y a q u e S h c lls o it no
p ru e b a d e c la s e s (in c lu y e n d o las g e n é ric a s), y q u iz á s e l d is e ñ o o rie n ta d o a o b je to s
e s re c u rs iv o y u n a n á lis is n e u r o s o d e s u tie m p o d e e je c u c ió n e s d e m a s ia d o
e m p le a n d o h e re n c ia . E l C a p ítu lo 5 d is c u te la n o ta c ió n O . U n e je rc ic io a d e c u a d o
c o m p le jo y n o se in c lu y e e n e l libro.
p a ra c o m p ro b a r si e l e stu d ia n te la h a c o m p re n d id o es h a c e rle e s c r ib ir u n p e q u e ñ o
• C a p ítu lo s 1 5 v 1 6 IP ila s /C o la s /L is ta s l: p u e d e n c u b rirs e e n c u a lq u ie r o rd e n .
p ro g ra m a , p id ié n d o le q u e c o m p a re su tie m p o d e e je c u c ió n c o n lo s re s u lta d o s o b te ­
S in e m b a rg o , e s p re fe rib le v e r a n te s e l C a p ítu lo 15. y a q u e in c lu y e e je m p lo s
n id o s e n lo s a n á lis is teó rico s.
m á s se n c illo s d e listas e n la z a d a s.
D e n tro d e la m e to d o lo g ía d e se p a ra c ió n e n tre e s p e c ific a c ió n e im p lem en lu -
• C a p ítu lo s 1 7 v IX (A r lm le s /Á r h o le \ J e Iw s í/u r J a ): p u e d e n c u b rirs e e n c u a l­
c ió n . e l c o n c e p to c la v e d e l C a p ítu lo 6 e s q u e d ife re n te s e s tru c tu r a s d e d a lo s so p o r­
q u ie r o rd e n o in c lu s o sim u ltá n e a m e n te .
ta n d is tin to s e s q u e m a s d e a c c e s o c o n e fic ie n c ia s d ife re n te s. U n p o s ib le e je rc ic io
e s p ed ir a lo s e s tu d ia n te s q u e e s c r ib a n u n a e s tru c tu ra d e d a to s in e fic ie n te , p ara
Partes independientes pr*>barla d e sp u é s c o n un*» c u a lq u ie ra d e lo s c a s o s d e e s tu d io ( a e x c e p c ió n d e l a lg o ­
ritm o tre s e n ray a, q u e e m p le a re c u rsió n ). A si. lo s e s tu d ia n te s p o d ría n c o m p a r a r su
• C a p ítu lo V ( A le a i o n e J a J i: e l m a te ria l so b re n ú m e ro s a le a to rio s p u e d e e s tu ­ e stru c tu ra d e dat«»s in e fic ie n te c o n u n a ru tin a d e lib re ría e fic ie n te (p u e d e n c o n s e ­
d ia rse e n c u a lq u ie r n u tm e n to . se g ú n re s u lte m a s c o n v e n ie n te . g u ir s e m e d ia n te Itp a n ó n im o , tal y c o m o se e x p lic a ra m a s ta rd e ). S ig u ie n d o este
• P a n e III (E je m p lo s ): p u e d e s e r e stu d ia d a e n c u a lq u ie r m o m e n to y e n casi e s q u e m a , p u e d e n p ro b a rs e i»*dos |*k c a s o s d e e s tu d io (s a lv o e l ju e g o d e la s tr e s en
c u a lq u ie r o rd e n . Hay p o c a s re fe re n c ia s a c a p ítu lo s a n te rio re s q u e p u e d e n s e ­ ra y a ), e s tu d ia n d o e l c o m p o rta m ie n to d e c a d a e s tru c tu ra d e d alo s. D e e s te m o d o , el
g u irse fá c ilm e n te É s ta s in c lu y e n : la S e c c ió n 10.2 (tre s e n ra y a ), q u e re fe ­ e stu d ia n te p o d ría v e r las d is tin ta s in te rfa c e s y s u u tiliz a c ió n , p e r o n o c ó m o s e im -
re n c ia a la S e c c ió n 7 .7 . y la S e c c ió n 12.2 (g e n e ra c ió n d e re fe re n c ia s c ru z a ­ p le m c n lu n d e fo rm a e fic ie n te . V ie n d o las c o s a s d e e s ta fo rm a in c re m e n ta m o s la
c a p a c id a d d e lo s e s tu d ia n te s p a ra p e n s a r d e fo rm a a b stra c ta . T a m b ié n se les p o d ría se g u irse lo s e n la c e s in d ic a d o s e n c a d a c a so ). L a s e c c ió n E n In te rn e t, q u e se e n ­
p e d ir q u e e x te n d ie se n e l c a s o d e e s tu d io , p e ro , d e n u e v o , p a ra e llo n o e s n e c e sa rio c u e n tra a l fin al d e c a d a c a p ítu lo , e n u m e ra los n o m b re s d e lo s fic h e ro s d e l c ó d ig o
q u e c o n o /c a n c a d a d e ta lle d e la s c o rre s p o n d ie n te s e s tru c tu ra s d e d ato s. d e l c a p ítu lo c o rre sp o n d ie n te .
1.a im p le m e n ta c ió n d e las e s tru c tu ra s d e d a to s p u e d e s e r d is c u tid a p o s te rio r­
m e n te . y la re c u rsió n s e in tro d u c irá s ie m p re q u e e l p ro fe s o r lo c o n s id e re a d e c u a ­
d o . te n ie n d o e n c u e n ta q u e d e b e h a b e rs e h e c h o a n te s d e e s tu d ia r lo s á rb o le s b in a ­ G u ía del profesor
rio s d e b ú sq u e d a . L o s d e ta lle s d e lo s a lg o ritm o s d e o rd e n a c ió n p u e d e n e x p lic a rse
e n c u a lq u ie r m o m e n to tra s h a b e r in tro d u c id o la re c u rs ió n . E n e s te p u n to , e l c u rso S e e n c u e n tra d is p o n ib le u n a g u ía d e l p ro f e s o r (c o rre sp o n d ie n te a l te x to o rig in a l en
p u e d e c o n tin u a r e x a m in a n d o lo s m is in o s c a s o s d e e stu d io , p e r o m o d ific a n d o las in g lé s) q u e ilu stra lo s d is tin to s u s o s p o sib le s d e l m a te ria l. In c lu y e e je m p lo s d e
im p le m e n ta c io n e s d e la s e s tru c tu ra s d e d a to s . P o r e je m p lo , se p u e d e n r e a li/a r d i ­ c u e stio n e s d e e x a m e n , p rá c tic a s a p ro p o n e r a lo s a lu m n o s y p ro g ra m a s a lte rn a ti­
v e rsas p ru e b a s e m p le a n d o lo s d is tin to s tip o s d e á rb o le s b in a rio s d e b ú sq u e d a e q u i­ v o s d e a sig n a tu ra s e n las q u e se d e s a rro lle p a rte d e l c o n te n id o d e l te x to . T a m b ié n
librados. p u e d e n e n c o n tra rs e e n e lla s o lu c io n e s d e e je rc ic io s s e le c c io n a d o s . L o s p ro fe so re s
A q u e llo s p ro fe s o re s q u e o p te n p o r u n a a p ro x im a c ió n m á s tra d ic io n a l, p u ed en in te re sa d o s e n o b te n e rla d e b e n c o n ta c ta r c o n su re p re se n ta n te lo cal d e v e n ta s d e
lim ita rse a d is c u tir u n c a s o d e e s tu d io d e la P a rte III. e x p lic a n d o d e sp u é s u n a im - A d d iso n -W e sle y p a ra u n a m a y o r in fo rm a c ió n .
p lc in c n ta c ió n d e u n a e s tru c tu ra d e d a lo s d e la s q u e s e e n c u e n tra n e n la P a rte IV.
In sistim o s e n q u e lo s c a p ítu lo s d e l lib ro e s tá n d is e ñ a d o s d e fo rm a ta n in d e p e n ­
d ie n te c o m o h a sid o p o sib le . Agradecim ientos
E n la p re p a ra c ió n d e e s te lib ro h a p a rtic ip a d o u n a g ra n c a n tid a d d e g e n te . M ucha
Ejercicios d e e ll a y a fu e re c o n o c id a e n e l tr a b a jo a n te rio r. A lg o r ilh m s . P a ta S tr u c tu r e s . a n d
P ro b lc m S o lv in g w ith C '+ + . so b re e l q u e se b a s a e s te lib ro . O tra g ra n c a n tid a d d e
L o s e je r c ic io s p re s e n ta d o s so n d e c u a tr o tip o s d ife re n te s . L a s c u e stio n e s b r e v e s se g e n te , d e m a s ia d o n u m e ro sa p a ra s e r c ita d a a q u í, h a env ia d o m e n s a je s e le c tró n ic o s
re d u c e n a c o n te s ta r p e q u e ñ a s p re g u n ta s o s im u la r so b re e l p a p e l a lg ú n a lg o ritm o se ñ a la n d o e rro re s e in c o n s iste n c ia s , q u e h e in te n ta d o a rr e g la r e n e s ta v e rs ió n (en
d e sc rito e n e l te x to . L a se c c ió n d e /•ro b le m o s te ó r ic o s in c lu y e c u e s tio n e s q u e re ­ in g lés).
q u ie re n a lg ú n a n á lisis m a te m á tic o , y p re g u n ta s a c e rc a d e s o lu c io n e s a p ro b le m a s, E n e s ta o c a sió n , m e g u sta ría m o s tra r mi a g ra d e c im ie n to a to d o s m is c o la b o ra ­
re le v a n te s d e s d e un p u n to d e v is ta te ó ric o . L a p a rte d e p r o b le m a s p r á c tic o s c o n ­ d o re s d e A d d iso n -W e sle y : m i e d ito ra . S u s a n H a rtm a n . y e d ito ra a so c ia d a . K aih eri-
tien e c u e s tio n e s se n c illa s so b re p ro g ra m a c ió n , in c lu y e n d o p re g u n ta s d e s in ta x is o n e H a ru tu n ia n . q u e m e h a n a y u d a d o e n las d e c is io n e s m á s d e lic a d a s so b re la o r g a ­
so b re tru c o s e m p le a d o s e n la c o d ific a c ió n . P o r ú ltim o , la s e c c ió n d e p r á c tic o s d e n iz a c ió n d e l m a te ria l J a v a y q u e h a n c o n tr ib u id o a q u e e s te lib ro se re a liz a s e . L o s
p r o g r a m a c ió n c o n tie n e id eas p a ra re a liz a r e je rc ic io s m á s c o m p lic a d o s y s u g e re n ­ d is tin to s re v iso re s h a n su g e rid o la in tro d u c c ió n d e n u m e ro s o s c a m b io s q u e han
cia s p a ra d e s a rro lla r a p p le ts d e Ja v a . c o n trib u id o a m e jo ra r e l te x to . E llo s so n : L a u ra K. M ic h a e ls. P ln llis C o y n e v Sa-
ra h H a lle t-C o re y . P o r o tra p a rte . S y n d i HiiM.lt re a liz ó un d is e ñ o fa n tá s tic o p a ra la
p o rta d a d e l lib ro y. c o m o sie m p re . T o m Z io lk o w s k i h a d e s a rro lla d o u n a lab o r
Detalles p ed ag ó g ico s e x tra o rd in a ria e n e l d e p a rta m e n to d e m ark e tin g . A g ra d e z c o e s p e c ia lm e n te a P al
U n u b u n . m i e d ito ra d e p ro d u c c ió n , sus c o n s ta n te s e s fu e rz o s e n la c o o rd in a c ió n
• L a s n o ta s al m a rg e n se e m p le a n p a ra d e s ta c a r c o n c e p to s e id e as im p o rtan tes. c o m p le ta d e l p ro y ecto .
• L a s e c c ió n E le m e n to s d e l ju e g o e n u m e ra lt>s té rm in o s m á s im p o rta n te s ju n to T a m b ié n d o y las g ra c ia s a l re s to d e m is re v iso re s , q u ie n e s re a liz a ro n v a lio so s
c o n sus d e fin ic io n e s. c o m e n ta rio s, m u c h o s d e lo s c u a le s h e in tro d u c id o e n e l te x to : J o h n C h e n o w e th .
• L a s e c c ió n d e E rro re s c o m u n e s , q u e s e e n c u e n tra a l fin a l d e c a d a c a p ítu lo , R o b C la rk . J o h n F ra n c o . S u s a n n e H u p fe r. S te v e n L. J e n k in s . J o s c p h in e D eG u z-
m u e s tra u n a lista d e lo s e rro re s m á s h ab itu ales. m a n M e n d o z a . V iera k . Proul.x y A n tr S ab ry .
• A l fin al d e c a d a c a p ítu lo ta m b ié n s e s u m in is tra u n a s e c c ió n d e B ib lio g ra fía p a ra P a n e d e l m a te ria l e m p le a d o e n e l te x to e s u n a a d a p ta c ió n d e l q u e a p a re c e e n
e n c o n tra r a c la ra c io n e s y a m p lia c io n e s d e lo s te m a s e stu d ia d o s. m i lib ro E ffic ie n t C P r o g r a m m in g : A P r a d ic a l A p p n m c lt (P re n tic e -H a ll, 1995) y
h a s id o e m p ic a d o c o n e l c o n s e n tim ie n to d e su e d ito r, l i e in te n ta d o in c lu ir las
o p o rtu n a s re fe re n c ia s a o tr o s te x to s a l fin al d e c a d a ca p ítu lo .
Disponibilidad del código M i p á g in a e n la W o rld W id e W e b . h t t p : / / w w w .e s . f i u . e d u / - w e i s s . c o n ­
tien e c ó d ig o fu e n te a c tu a liz a d o , u n a lista d e e rra ta s y u n e n la c e p a ra p o d e r c o m u ­
E l c ó d ig o in c lu id o e n e l lib ro e s c o m p le ta m e n te fu n c io n a l y h a sid o p ro b a d o e n su n ica rm e o tr o s fa llo s d e te c ta d o s (e n e l o rig in a l e n in g lés).
v e rs ió n o rig in a l so b re J D K 1.1 d e S u n . D ic h a v e rs ió n (e n in g lé s) p u e d e o b te n e rse
m e d ia n te ftp a n ó n im o e n a w .c o m . y s e e n c u e n tra e n la W o rd W id e W e b en
h t t p : / /w w w .a w . c o m / c s e n g / t i t l e s / 0 - 2 0 1 - 5 4 9 9 1 - 3 / ( a p a rtir d e a q u í d eb en
Prólogo o la edición
en español

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 :

1.1 El entorno general


/* E s t e e s u n c o m e n t a r i o
q u e o c u p a d o s l í n e a s */
¿ C ó m o s e e sc rib e n , s e c o m p ila n y e je c u ta n lo s p ro g ra m a s J a v a ? L a re s p u e s ta , p o r
su p u e s to , d e p e n d e d e la p la ta fo rm a p a rtic u la r s o b re la q u e se e n c u e n tra in sta la d o
e l c o m p ila d o r d e J a v a . E n e l A p é n d ic e A s e d e s c rib e n a lg u n o s d e lo s s is te m a s d e L o s c o m e n ta rio s n o p u e d e n a n id arse.
d e s a rro llo m á s p o p u la re s. L a s e g u n d a fo rm a , h e re d a d a d e C + + . c o m ie n z a c o n / / . N o h a y s ím b o lo d e fi­
El c ó d ig o fu en te d e J a v a se g u a rd a e n fic h e ro s c o n n o m b re s a c a b a d o s e n e l su ­ n a liz a c ió n . s in o q u e e l c o m e n ta rio se e x tie n d e h a s ta e l fin al d e la lín ea. E sta fo rm a
fijo . j a v a . E l c o m p ila d o r lo c a l, ja v a c , c o m p ila e l p ro g ra m a y g e n e ra fic h e ro s s e ilu stra e n las lín e a s I y 2 d e la F ig u ra 1.1.
. c l a s s . q u e c o n tie n e n c ó d ¡g o -j. E l c ó d ig o -j e s un le n g u a je p o rta b le in te rm e d io L a te rc e ra fo rm a c o m ie n z a c o n / * * e n lu g a r d e / " . E sta fo rm a se p u e d e u sa r
q u e e s in te rp re ta d o p o r e l in té rp re te d e J a v a .ja v a . p a ra p ro p o rc io n a r in fo rm a c ió n a la u tilid a d ja v a d o c . la c u a l g e n e ra rá d o c u m e n ta ­
P a ra lo s p ro g ra m a s d e Ja v a , la e n tra d a p u e d e p ro v e n ir d e m u c h a s fu e n te s: c ió n a p a rtir d e s u s c o m e n ta rio s. E sta fo rm a se e s tu d ia e n la S e c c ió n 3.3.
L o s c o m e n ta rio s a p a re c e n p a ra h a c e r e l c ó d ig o m á s le g ib le a las p e rs o n a s. D i­
• E l te c la d o , c u y a e n tra d a se d e n o m in a e n tra d a e stá n d a r. c h a s p e rs o n a s p u e d e n se r o tr o s p ro g ra m a d o re s q u e te n g a n q u e m o d ific a r o u s a r el
• P a rá m e tro s a d ic io n a le s a l in v o c a r e l p ro g ra m a e je c u ta b le : a r g u m e n to s d e la c ó d ig o q u e se h a y a e s c rito . U n p ro g ra m a b ie n c o m e n ta d o e s sig n o d e un b u e n p ro ­
lín e a d e co m a n d o s. g ra m a d o r.
• U n a c o m p o n e n te G U I
• U n fich ero .
1 // P rim er programa
E n la S e c c ió n 2 .4 .4 se e stu d ia lo s a rg u m e n to s d e la lín e a d e co m a n d o s q u e son 2 // MW. 9/1 / 9 7
3
p a rtic u la rm e n te im p o rta n te s p a ra e sp e c ific a r o p c io n e s d e p ro g ra m a . J a v a p ro p o rcio ­
4 publlc class PrimerPrograma
n a m e c a n ism o s para le e r y e sc rib ir ficheros. É sto s se estu d ia n e n la S e c c ió n 2.6.3. 5 {
M u c h o s siste m a s o p e ra tiv o s p ro p o rc io n a n u n a fo rm a a lte rn a tiv a c o n o c id a c o m o 6 public static v o id maint String U args )
r e d ir e c c io n a n iie n to d e fic h e r o , m e d ia n te la c u a l, e l s is te m a o p e ra tiv o to m a la e n ­ 7 {
tra d a d e (o e n v ía la s a lid a a ) u n fic h e ro , d e fo rm a tra n s p a re n te al p ro g ra m a e n e je ­ 6 S y stem .out.println( "¿Hay a l g u i e n ahí fuera?" );
9
c u c ió n . E n U n ix , p o r e je m p lo , e l c o m a n d o
10 )

ja v a Program a < f ic h e r o e n tr a d a > f i c h e r o s a li d a Figuio 1.1 Un primer program o simple


1.2.2 m a i n Tipo prim itivo Lo q u e o lm o c e n o R ango

U n p ro g ra m a J a v a e s tá fo rm a d o p o r u n a c o le c c ió n d e c la s e s q u e in ic ra c lú a n e n tre byte e n tero d e 8 bits d e - 128 o 127

sí. la s c u a le s c o n tie n e n m é to d o s. Kl e q u iv a le n te e n J a v a a u n a fu n c ió n o p ro ced i- short e n tero d e 16 bits d e - 32 766 a 32.767


m ie n to e s e l m é to d o e stá tic o , q u e s e d e s c r ib e e n la S e c c ió n 1.6. C u a n d o s e e je c u ta
un p ro g ra m a , s e llam a a l m é to d o e s tá tic o e s p e c ia l m a i n . F n la lín e a 6 d e la F ig u ­ int e n tero d e 32 bits d e -2.147 483 648 a 2.147 463.647
ra l . l s e o b s e r v a q u e se p u e d e lla m a r al m é to d o e s tá tic o m a i n c o n a rg u m e n to s en
long e n tero d e 64 bits d e - 203 a 203- 1
la lín e a d e c o m a n d o s . F s o b lig a to r io q u e lo s tip o s d e I o n p a rá m e tro s d e m a i n y el
tip o d e l re s u lta d o t v o i d » s e a n lo s m o s tra d o s e n la fig u ra. float núm ero e n co m o 6 dígitos significativos (10 4£>, 1038)
flo tan te d e 32 bits

double núm ero e n co m a 15 cfgitos significativos (10 324. 10308)


flo tan te d e 64 bits
1.2.3 Salida por pantalla
char C a rá c te r U nicod e

Ll p ro g ra m a d e la F ig u ra l . l c o n s is te e n u n a ú n ic a in s tru c c ió n , m o s tra d a e n la lí­ booiean V ariab le b o o le an a fa ls e y true


n e a X. p r i n t 1 n e s e l p rin c ip a l m e c a n ism o d e s a lid a e n J a v a . E n d ic h a lin c a se
c o lo c a u n a c a d e n a e n la s a lid a e s tá n d a r S y s t e m . o u t a p lic a n d o u n m é to d o Figura 1.2 Los o c h o tipos primitivos P e J a v a .
p r i n t l n . F a e n tra d a y la s a lid a se e s tu d ia n c o n m á s d e ta lle e n la S e c c ió n 2 .6 . Por
a h o ra m e n c io n a m o s so la m e n te q u e se u s a la m ism a s in ta x is p a ra p ro d u c ir la sa lid a
d e c u a lq u ie r e n tid a d , y a s e a un e n te ro , u n n ú m e ro e n c o m a flo ta n te , u n a c a d e n a o 1.3.2 Las constantes
un v a lo i d e c u a lq u ie r o tro tip o .
L a s c o n sta n te s e n te r a s se p u e d e n re p re se n ta r e n n o ta c ió n d e c im a l, o c ta l o h e x a d e -
c im a l. L a n o ta c ió n o c ta l s e in d ic a m e d ia n te un o d e la n te d e l n ú m e ro : la n o tació n
h c x a d e c im a l se in d ic a m e d ian te Ox o b ien Ox d e la n te d e l n ú m e ro . S e m u e s tra n a
c o n tin u a c ió n las d is tin ta s fo r m a s p o sib le s d e re p re s e n ta r e l e n te r o 37: 3 7 . 0 4 5.
1.3 Tipos primitivos
0 x 2 5 . L n e s te lib ro n o u sa re m o s la n o ta c ió n o c ta l n i la h c x a d e c im a l. S in e m b a rg o ,
d e b e m o s te n e rla s e n c u e n ta , d e fo rm a q u e u se m o s so la m e n te un 0 d e la n te d e un
Ja v a tie n e d e fin id o s o c h o tip o s p r im itiv o s. A d e m á s o fre c e a l p ro g ra m a d o r una n ú m e ro c u a n d o p re te n d a m o s u tilizarlas.
g ra n fle x ib ilid a d p a ra d e fin ir n u e v o s tip o s d e o b je to s, lla m a d o s c la s e s . S in e m ­ U n a c o n s ta n te J e tip o c a r á c te r s e e n c ie rra e n tre d o s c o m illa s sim p le s, c o m o
b a rg o . lo s tip o s p rim itiv o s > lo s tip o s d e fin id o s p o r e l u su a rio p o se e n d ife re n c ia s e n • a •. In te rn a m e n te e s te c a rá c te r s e in te rp re ta c o m o u n n ú m e ro p e q u e ñ o . L a s ru ­
im p o rta n te s e n Ja v a . F n e s ta s e c c ió n e x a m in a re m o s lo s tip o s p rim itiv o s y la s o p e ­ tin a s d e s a lid a in te rp re ta n p o ste rio rm e n te e s te n ú m e r o c o m o e l c a rá c te r c o rr e s ­
ra c io n e s b á s ic a s q u e s e p u e d e n r e a li/a r s o b re ello s. p o n d ie n te . U na c o n s ta n te d e tip o c a d e n a c o n s is te e n u n a s e c u e n c ia d e ca ra c te re s
e n c e rra d o s e n tr e d o b le s c o m illa s, c o m o e n " H o l a " . H a y a lg u n a s se c u e n c ia s e s p e ­
c ia le s. c o n o c id a s c o m o se c u e n c ia s d e e sc a p e , q u e s e u s a n p a ra re p re s e n ta r c ie rta s
c o n s ta n te s d e tip o c a rá c te r (p o r e je m p lo , ¿ c ó m o s e re p re s e n ta u n s a lto d e línea d e
1.3.1 Los tipos primitivos
in te rro g a c ió n ? ). F n e s te lib ro u s a m o s ’ \ n ■. • \ \ ' . • \ ' ' y ■\ . q u e re p re se n ta n
re s p e c tiv a m e n te , e l c a rá c te r d e n u e v a lín e a , e l c a rá c te r d e b a rra in c lin a d a h a c ia
Ja v a tie n e o c h o tip o s p rim itiv o s, m o s tra d o s e n la F ig u ra 1.2. F l m á s c o m ú n e s el a trá s, la c o m illa s im p le y la c o m illa d o b le .
e n te ro , e l c u a l se e s p e c ific a m e d ia n te la p a la b ra c la v e i n t . A d ife re n c ia d e o tro s
le n g u a je s, e l ra n g o d e lo s e n te ro s e s in d e p e n d ie n te d e la m áq u in a. F s e l m ism o en
c u a lq u ie r im p lc m e n ta c ió n d e Ja v a , in d e p e n d ie n te m e n te d e la a rq u ite c tu ra s u b y a ­ 1.3.3 Declaración e inicialización de tipos primitivos
cen te . J a v a ta m b ié n p e rm ite e n tid a d e s d e tip o b y t e . s h o r t y l o n g . L o s n ú m e ro s
e n c o m a flo ta n te v ie n e n re p re se n ta d o s p o r lo s tip o s f l o a t y d o u b l e . Kl tip o C u a lq u ie r v a ria b le , in c lu y e n d o las d e tip o p rim itiv o , s e d e c la ra p ro p o rc io n a n d o su
d o u b l e tie n e m á s d íg ito s sig n ific a tiv o s, p o r lo q u e se re c o m ie n d a su u s o e n lu g ar n o m b re , s u tip o . y. o p c io n a lm e n lc . su v a lo r in ic ia l. E l n o m b re d e b e se r u n id en tifi-
d e f l o a t . L l tip o c h a r s e u sa p a ra re p re se n ta r c a ra c te re s. L n c h a i u ti li /a 16 bits c a d o r. U n id e n titlc a d o r e s tá fo rm a d o p o r c u a lq u ie r c o m b in a c ió n d e le tras, d íg ito s
p a ra re p r e s e n ta r e l e s tá n d a r U n ic o d e . L l e s tá n d a r U n ic o d e c o n tie n e m á s d e 3 0 .0 0 0 y e l c a rá c te r d e su b ra y a d o , si b ie n , n o p u e d e e m p e z a r c o n u n d íg ito .
c a ra c te re s c o d ific a d o s , q u e c u b re n lo s p rin c ip a le s le n g u a je s e sc rito s . A b a jo n iv el. l a s p a la b ra s re s e rv a d a s , c o m o i n t . n o e s tá n p e rm itid a s. N i ta m p o c o se d e b e n
I n ic o d e e s id é n tic o a A S C II. Ll ú ltim o tip o p rim itiv o e s b o o i e a n . c u y o s v a lo re s r e u tili/a r n o m b re s d e id e n tific a d o re s q u e y a e s tá n v is ib le s (p o r e je m p lo , n o usar
so n t r u e y t a l s e . m a i n c o m o n o m b re d e u n a en tid ad ).
J a v a e s se n s ib le a la s m a y ú sc u la s , lo q u e q u ie r e d e c ir q u e E d a d y e d a d so n
1 p u b l ic c l a s s TestO perador
id e n tific a d o re s d is tin to s. E ste lib ro u s a la sig u ie n te c o n v e n c ió n p a ra d a r n o m b re a
2 {
la s v a ria b le s : to d o s lo s id e n tillc a d o re s c o m ie n /a n c o n u n a le tra m in ú s c u la y las 3 / / Programa de prueba de lo a o p e ra d o re s básico*.
p a la b ra s n u e v a s d e n tr o d e u n id e n tiñ e a d o r. c o n u n a le tra m a y ú s c u la . U n e je m p lo 4 / / La s a l i d a e s l a s i g u i e n t e :
es e l id e n tif ic a d o r s a l a r i o M i n i m o . A c o n tin u a c ió n se m u e s tra n a lg u n o s e je m ­ 5 / / 12 8 6
p lo s d e d e c la ra c io n e s: 6 // 6 8 6
7 / / 6 8 14
8 / / 22 8 14
i n t num3 ; // In ic ia liz a c ió n por defecto 9 / / 2 4 10 33
d o u b le s a la rio M in im o = 4 . 50; / / In ic ia l ización estándar 10
i n t x = 0, numl = 0 ; / / D eclaración de dos v a ria b le s 11 public static v o i d main( String [ ) args I
12 1
i n t num2 ■ n u m l ;
13 int a = 1 2 , b a 8. c ■ 6¿
14
Id e a lm e n te u n a v a ria b le d e b e ría e s ta r d e c la ra d a c e rc a d e s u p rim e r u so . C o m o 15 System .out,println( a * " * * b » ’ * • c );
se m o s tra rá m á s a d e la n te , e l lu g a r d e u n a d e c la ra c ió n d e te rm in a su á m b ito y s ig n i­ 16 a = c;
ficad o . 17
18 c • = b;
19 S y s t e m , o u t . p r i n t l n { a * ' * * b * " • * C ) .-
^20 a » b • c;
1.3.4 Entrada y salida por terminal 21 S y stem .out.println( a * * * * b • M • * c ) ;
22 a* • ;
23 »*b;
L a E S b á sic a p o r te rm in a l c o n fo rm a to s e lle v a a c a b o m e d ia n te r e a d L i n e y
24 c - • *»b;
p r i n t l n . I j e n tra d a e s tá n d a r e s S y s t e m , i n . y la sa lid a e s tá n d a r e s S y s t e m . o u t .
25 System .out.println( a • * * » b » " ’ * c ) ;
E l m e c a n ism o b á s ic o p a ra E S c o n fo rm a to u tiliz a e l tip o S t r i n g . q u e s e e s ­ 26 )
tu d ia e n la S e c c ió n 2.3. E n la sa lid a . * c o m b in a d o s v a lo re s d e tip o S t r i n g . S i el 27 )
s e g u n d o a rg u m e n to n o e s un v a lo r d e tip o s t r i n g . se c re a u n v a lo r te m p o ra l d e
Fi gur a 1.3 Program a q u e ilustra e l uso d e los operadores.
tip o S t r i n g p a ra é l , s ie m p re q u e s e a d e tip o p rim itiv o . E sta s c o n v e rs io n e s a l tip o
S t r i n g s e p u e d e n d e fin ir ta m b ié n p a ra o b je to s (S e c c ió n 3 .4 .3 ). P a ra la e n tra d a ,
d e b e m o s a s o c ia r un o b je to B u f f e r e d R c a d e r a S y s t e m , i n . E n to n c e s s e le e un O tro o p e ra d o r d e a sig n a c ió n e s ♦=. c u y o u s o se m u e s tra e n la lín e a 18 d e la
v a lo r d e tip o S t r i n g q u e s e p u e d e a n a liz a r sin tá c tic a m e n te . E n la S e c c ió n 2.6 fig u ra. E l o p e ra d o r += a ñ a d e e l v a lo r s itu a d o e n e l la d o d e re c h o (d el o p e ra d o r de
p u e d e e n c o n tra rs e u n a d is c u sió n m á s d e ta lla d a d e la E S . in c lu y e n d o e l tra ta m ie n ­ a sig n a c ió n • = ) a la v a ria b le d e l la d o iz q u ie rd o . P o r ta n to , e n la fig u ra , e l v a lo r d e
to d e fic h e ro s c o n fo rm ato . c p a s a d e s e r 6 . a n te s d e la lín e a 18. a se r 14.
J a v a p ro p o rc io n a o tro s o p e ra d o re s d e a sig n a c ió n c o m o - = , • = . /= . q u e m o d ifi­
c a n e l v a lo r d e la v a ria b le situ a d a e n e l la d o iz q u ie rd o d e l o p e ra d o r v ía su s tra c ­
1.4 O peradores básicos c ió n . m u ltip lic a c ió n y d iv is ió n , re sp e c tiv a m e n te .

E sta se c c ió n d e s c rib e a lg u n o s d e lo s o p e ra d o re s d is p o n ib le s e n Ja v a . E sto s o p e ra ­


1.4.2 Operadores aritméticos binarios
d o re s s e u san p a ra fo r m a r e x p re s io n e s. U n a c o n sta n te o u n a v a ria b le e s u n a e x p re ­
sió n p o r s í m ism a , a s í c o m o la s c o m b in a c io n e s d e c o n s ta n te s y v a ria b le s m e d ia n te
E n la lín e a 2 0 d e la F ig u ra 1.3 s e m u e s tra u n o d e lo s o p e r a d o r e s a r itm é tic o s b in a ­
o p e ra d o re s. U n a e x p re s ió n s e g u id a d e u n p u n to y c o m a e s u n a in s tru c c ió n sim p le .
rio s típ ic o s d e to d o s lo s le n g u a je s d e p ro g ra m a c ió n : e l o p e ra d o r d e s u m a ( * ) . El
E n la S e c c ió n 1.5. e x a m in a re m o s o tro s tip o s d e in s tru c c io n e s q u e in tro d u c e n o p e ­
o p e ra d o r * h ace q u e lo s v a lo re s d e b y c se s u m e n : b y c n o su fren n in g ú n c a m ­
ra d o re s a d icio n ales.
b io . E l v a lo r re s u lta n te s e a s ig n a a a . O tro s o p e ra d o re s a ritm é tic o s típ ic o s u sa d o s
en Java so n q u e se u san re s p e c tiv a m e n te p a ra re s ta r, m u ltip lic a r, d iv i­
d ir y o b te n e r e l re s to d e u n a d iv is ió n e n te ra . I.a d iv is ió n e n te r a d e v u e lv e s o la ­
1.4.1 Operadores d e asignación
m e n te la p arte e n te r a y d e s c a r ta e l resto .
C o m o e s h a b itu a l, la s u m a y la re s ta tie n e n la m ism a p re c e d e n c ia , y d ic h a p re ­
E n la f i g u r a 1.3 s e m u e s tra u n p ro g ra m a J a v a se n c illo q u e ilu stra so b re e l u so de
c e d e n c ia e s m e n o r q u e la d e l g ru p o fo rm a d o p o r lo s o p e ra d o re s d e m u ltip lic a c ió n ,
a lg u n o s o p e ra d o re s. El o p e ra d o r b á s ic o d e a s ig n a c ió n e s e l s ig n o d e ig u a ld a d . Por
d iv is ió n y re s to ; e n c o n s e c u e n c ia i » 2 * 3 se e v a lú a a 7. T o d o s e s to s o p e ra d o re s
e je m p lo , e n la lín e a 16 s e a s ig n a a la v a ria b le a e l v a lo r d e la v a ria b le c (q u e e n
a so c ia n d e iz q u ie rd a a d e re c h a (lu e g o 3 - 2 - 2 s e e v a lú a a - I). T o d o s lo s o p e ra d o ­
e s e p u n to e s 6 ) . C a m b io s p o ste rio re s e n la v a ria b le c n o a fe c ta n a a . L o s o p e ra d o ­
re s tie n e n p re c e d e n c ia y a s o c ia tiv id a d . L a ta b la c o m p le ta d e o p e ra d o re s s e e n ­
re s d e a s ig n a c ió n se p u e d e n e n c a d e n a r, c o m o e n z = y = x = 0 .
c u e n tr a e n e l A p é n d ic e B .
1.4.3 Operadores unarios 1.5 Instrucciones con d icion ales
A d e m á s d e los o p e ra d o re s a ritm é tic o s b in a rio s , q u e re q u ie re n d o s o p e ru n d o s. J a v a E n e s ta s e c c ió n s e e s tu d ia n in s tru c c io n e s q u e a fe c ta n a l flu jo d e c o n tro l: in s tru c ­
p ro p o rc io n a o p e r a d o r e s u n a r io s . q u e re q u ie re n u n s o lo o p e ra n d o . E l m á s fa m ilia r c io n e s c o n d ic io n a le s y b u c le s . C o m o c o n s e c u e n c ia , s e in tro d u c e n n u e v o s o p e ra ­
d e e sto s o p e ra d o re s e s e l m e n o s u n a rio . q u e s e u tiliz a p a ra c a m b ia r e l s ig n o del d ores.
o p e ra n d o . A sí. - x d e v u e lv e e l v a lo r d e x c a m b ia d o d e signo.
J a v a p ro p o rc io n a ta m b ié n e l o p e ra d o r d e a u to in c re m e n to , p a ra a ñ a d ir I a una
v a ria b le , d e n o ta d o p o r . . . y e l o p e ra d o r d e a u lo d e c re m e n tó , p a ra re s ta r I a una
1.5.1 Operadores relaciónales y de igualdad
v a ria b le , d e n o ta d o p o r El u s o m á s b e n ig n o d e e s ta c a ra c te rís tic a se m u e s tra en
la s lín e a s 22 y 23 d e la F ig u ra 1.3. E n a m b a s lín e a s, e l o p e r a d o r d e a u io in c r e m e n -
El te st b á s ic o q u e p o d e m o s r e a li/a r s o b re lo s tip o s p rim itiv o s e s la c o m p a ra c ió n .
l o •* a ñ a d e I a l v a lo r d e la v ariab le . E n Ja v a , sin e m b a rg o , u n o p e ra d o r a p lic a d o a
E sta se lle v a a c a b o u s a n d o o p e ra d o re s d e ig u a ld a d y d e s ig u a ld a d , a s í c o m o los
una e x p re s ió n p ro d u c e u n a e x p re s ió n q u e tie n e u n v a lo r. A u n q u e s e g a ra n tiz a que
o p e ra d o re s re la c ió n a le s (m e n o r q u e . m a y o r q u e . etc.).
la v a ria b le será in c re m e n ta d a a n te s d e la e je c u c ió n d e la sig u ie n te in s tru c c ió n , s u r ­
E n J a v a , lo s o p e ra d o r e s d e ig u a ld a d son = = y != . P o r e je m p lo . E
g e u n a p re g u n ta : ¿ c u á l e s el v a lo r d e la e x p re s ió n c o n a u to in c re m e n to si s e u sa
<
d e n tro d e u n a e x p re s ió n m a y o r? h
E n e s te c a s o , la p o s ic ió n d e • * tie n e u n a im p o rta n c ia c ru c ia l. L a s e m á n tic a de e x p r l z d a == e x p r D c h a
+ + x e s q u e e l v a lo r d e la e x p re s ió n e s e l n u e v o v a lo r d e x . E s to re c ib e e l n o m b re
d e i n c r e m e n t o p r e f ij o . P o r e l c o n tra rio , x * » h a c e q u e e l v a lo r d e la e x p re s ió n sea s e e v a lú a a t r u e si e x p r l z d a y e x p r D c h a s o n ig u a le s ; e n c a s o c o n tra rio , se e v a ­
e l v a lo r o rig in a l d e x . E s to re c ib e e l n o m b re d e i n c r e m c n i o p o s t f i j o . E sta p ro p ie ­ lúa a f a l s e . A n á lo g a m e n te .
d a d s e m u e s tra e n la lín e a 24 d e la F ig u ra 1.3 T a n to a c o m o b s e in c re m e n ta n e n
I. m ie n tra s q u e c s e o b tie n e su m a n d o e l v a lo r o rig in a l d e a c o n e l v a lo r in c re m e n ­ e x p r l z d a != e x p r D c h a
ta d o d e b .
se e v a lú a a t r u e si e x p r l z d a y e x p r D c h a so n d is tin ta s : e n c a s o c o n tra rio , se
e v a lú a a f a l s e .
1.4.4 Conversiones d e tipo L o s o p e r a d o r e s r e l a c i ó n a l e s so n < . < = . > y > = . T ie n e n u n s ig n ific a d o n a tu ­
ral p a ra lo s tip o s p r e d e f in id o s . L o s o p e r a d o r e s r e la c ió n a le s tie n e n m a y o r p re c e - '
El o p e r a d o r d e c o n v e r s i ó n se u s a p a ra g e n e ra r u n a e n tid a d te m p o ra l d e un tip o d e n c ia q u e lo s o p e r a d o r e s d e ig u a ld a d . A m b o s tie n e n m e n o r p r e c e d e n c ia q u e los
n u e v o . C o n s id e re , p o r ejem p lo . o p e r a d o r e s a r itm é tic o s p e r o m a y o r p re c e d e n c ia q u e lo s o p e r a d o r e s d e a s ig n a ­
c ió n . d e m o d o q u e e l u s o d e p a r é n te s is n o s u e le s e r n e c e s a r io . T o d o s e s t o s o p e ­
double c o cien te; ra d o re s a s o c i a n d e iz q u ie rd a a d e r e c h a , p e r o e s te h e c h o n o e s d e g r a n u tilid a d :
i n t x = 6; e n la e x p r e s ió n a < b < 6 . p o r e je m p lo , e l p r i m e r < g e n e r a un v a lo r d e tip o
i n t y ■ 10 ; b o o l e a n v e l s e g u n d o e s ile g a l p o rq u e < n o e s tá d e fin id o p a ra lo s v a lo re s d e ese

cociente = x / y; // ¡Probablem ente m al! tip o . E n la s ig u ie n te se c c ió n s e d e s c rib e la fo rm a c o rre c ta d e lle v a r a c a b o esta


c o m p a ra c ió n .
L a p rim e ra o p e ra c ió n e s la d iv is ió n , y p u e sto q u e x e y so n e n te ro s, e l re s u lta d o es
su d iv is ió n e n te ra , o b te n ié n d o s e p o r ta n to 0 . E l e n te r o 0 se c o n v ierte e n to n c e s d e
fo rm a im p líc ita a l tip o d o u b l e p a ra q u e p u e d a se r a s ig n a d o a c o c i e n t e . P ero 1.5.2 Operadores lógicos
n o so tro s p re te n d ía m o s a s ig n a r a c o c i e n t e e l v a lo r 0 .6 . L a s o lu c ió n e s g e n e ra r
u n a v a ria b le te m p o ra l p ara x o p ara y . d e fo rm a q u e la d iv is ió n s e lle v e a c a b o J a v a p ro p o rc io n a o p e r a d o r e s l ó g ic o s q u e se u s a n p a ra sim u la r lo s c o n c e p to s Y.
u sa n d o la s re g la s d e l tip o d o u b l e . E s to s e lia ría d e la s ig u ie n te m an era: O y N O d e l á lg e b ra d e B o o le. É sto s se c o n o c e n c o n e l n o m b re d e c o n ju n c i ó n ,
d i s y u n c i ó n y n e g a c i ó n re s p e c tiv a m e n te , y lo s o p e ra d o re s c o rre s p o n d ie n te s so n
c o c ie n te = ( d o u b le > x / y; | y ! . El test d e la se c c ió n a n te rio r s e im p le m e n ta a d e c u a d a m e n te c o m o
a < b && b < 6. 1.a p re c e d e n c ia d e la c o n ju n c ió n y la d is y u n c ió n e s lo su fic ie n te ­
O b se rv e q u e n i x ni y s e m o d ific a n . S e c re a u n a v a ria b le te m p o ra l sin n o m b re , m e n te b a ja c o m o p a ra q u e n o s e a n e c e s a r io u tiliz a r p a ré n te s is . E l o p e ra d o r tie ­
c u y o v a lo r s e u s a p a ra e fe c tu a r la d iv isió n . E l o p e ra d o r d e c o n v e rs ió n d e tip o tie n e n e m a y o r p re c e d e n c ia q u e e l o p e ra d o r | | . m ie n tra s q u e : s e a g ru p a c o n lo s d e m á s
m a y o r p re c e d e n c ia q u e la d iv is ió n , lu e g o la c o n v e rs ió n d e tip o se e fe c tú a so b re el o p e ra d o re s u n a rio s . L o s a rg u m e n to s y re su lta d o s d e e s to s o p e ra d o re s ló g ic o s son
v a lo r d e x y d e s p u é s se lle v a a c a b o la d iv is ió n (e n lu g a r d e e fe c tu a rs e la c o n v e r ­ v a lo re s d e tip o b o o l e a n . E n la F ig u ra 1.4 s e m u e s tra n lo s re s u lta d o s d e a p lic a r
sión tra s la d iv isió n d e d o s v a lo re s d e tip o L n t >. lo s o p e ra d o re s ló g ic o s p a ra to d o s lo s p o sib le s v a lo re s d e e n tra d a .
X Y X kk Y X | | Y IX E n e s te c a s o , si e x p r e s i ó n se e v a lú a u t r u e . e n to n c e s se e je c u ta i n s t r u c c i ó n l ;
e n c a s o c o n tr a rio se e je c u ta i n s t r u c c i ó n 2. E n c u a lq u ie r c a so , e l c o n tro l pasa
false false false false true d e s p u é s a la sig u ie n te in s tru c c ió n , c o m o en

false true false true true S ystem .out . p r i n t ( ' 1 / x e s " );


true false false true false i f < x !» 0 )
S y stem .o u t.p rin t( 1 / x );
true true true true false else
S y stem .o u t.p rin t ( 'In d e fin id o - );
Figura 1.4 Resultado d e los op erad ores lógicos.
S y stem .o u t.p rin tln t );

R e c u e rd e q u e s e p e rm ite a lo s u m o u n a in s tru c c ió n e n c a d a u n a d e las c lá u s u ­


U n a re g la im p o rta n te e s q u e *& y 11 s o n o p e ra d o re s c o n e v a lu a c ió n d e c ic lo la s i f y e l s e . in d e p e n d ie n te m e n te d e l san g ra d o . A c o n tin u a c ió n s e p u e d e o b s e r­
c o rto . L a e v a lu a c ió n d e c ic lo c o r lo c o n s is te e n q u e c u a n d o e l re s u lta d o d e u n o p e ­
v a r d o s e rro re s:
ra d o r ló g ic o s e p u e d e d e te r m in a r e x a m in a n d o la p rim e ra e x p re s ió n , e n to n c e s n o se
ev a lú a la seg u n d a. P o r e je m p lo , e n i f ( x == 0 ) ; / / ; e s la i n s t r u c c i ó n v a c í a (y c u en ta)
S y s t e m . o u t . p r i n t ( *x e s 0 " );
x ! = 0 & & l / x !=3 else
S y s t e m . o u t . p r i n t < *x e s ’ ) ;
si x e s 0 . e n to n c e s la p rim e ra m ita d e s f a l s e . A u to m á tic a m e n te e l re s u lta d o del S y s t e m . o u t . p r i n t l n ( x ) ; / / Dos i n s t r u c c i o n e s
Y d e b e s e r f a l s e . p o r lo q u e n o s e e v a lú a la s e g u n d a m ita d . E s to e s a c e rta d o p u es
E l p rim e r e r r o r e s la in c lu sió n d e l ; a l fin al d e l p rim e r i f . E ste p u n to y c o m a
la d iv isió n p o r c e ro p ro d u c iría un c o m p o rta m ie n to e rró n e o . L a e v a lu a c ió n d e c ic lo
c u e n ta c o m o la in s tru c c ió n vacía: c o m o c o n s e c u e n c ia , e s te fra g m e n to n o p o d rá
c o rto n o s e v ita te n e r q u e p re o c u p a m o s p o r la d iv is ió n p o r cero * .
c o m p ila rse (y a n o hay ningún i f con e l q u e se aso cie e l s e ) . U n a v e z a rre g la d o e s e
e rro r, te n e m o s un e r r o r ló g ico : la ú ltim a lín e a n o e s p a rte d e l e l s e . in c lu s o a u n ­
q u e e l s a n g r a d o lo su g ie ra . P ara a rre g la r e s te p ro b le m a , te n e m o s q u e u s a r un N o ­
1.5.3 La instrucción i f
q u e . e n e l c u a l e n c e rra m o s u n a s e c u e n c ia d e in s tru c c io n e s e n tr e u n p a r d e llav es:

L a in s tru c c ió n i f e s la p rin c ip a l h e rra m ie n ta p a ra to m a r d e c is io n e s. S u fo rm a b á ­ i f ( x a * 0)


s ic a e s S ystem .out . p r i r .tl n l "x es c ero " );
else
i f ( e x p r e s ió n ) {
in s tr u c c ió n S y s t e m . o u t . p r i n t ( ' x e s * );
s ig u ie n te in s tr u c c ió n S y s t e m . o u t . p r i n t l n ( x >;
;
S i e x p r e s i ó n lo m a e l v a lo r t r u e . e n to n c e s s e e je c u ta i n s t r u c c i ó n : e n c a s o
Ia i in s tru c c ió n i f p u e d e fo r m a r p a n e ta m b ié n d e u n a c lá u s u la i f o e l s e . al
c o n tra río , n o se e je c u ta . C u a n d o s e c o m p le ta la e je c u c ió n d e la in s tru c c ió n i f (sin
ig u a l q u e o tr a s in s tru c c io n e s d e c o n tro l q u e e s tu d ia re m o s m á s a d e la n te e n e s te c a ­
n in g ú n e r r o r sin tra ta r), 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 .
p ítu lo . E n e l c a s o d e in s tru c c io n e s i f - e l s e a n id a d a s , la c lá u s u la e l s e e s tá a s o ­
O p c io n a lm e n te , s e p u e d e u s a r u n a in s tru c c ió n i f - e l s e . c o m o la sig u ie n te :
c ia d a c o n la c lá u s u la i f m á s in te rn a q u e e s té sin e m p a re ja r. S erá n e c e s a rio a ñ a d ir
lla v e s e n e l c a s o d e q u e n o s e a é s e e l s ig n ific a d o p re te n d id o .
i f ( e x p r e s ió n )
in s tr u c c ió n l
e ls e 1.5.4 La instrucción w h i l e
in s tr u c c ió n 2
s ig u ie n te in s tr u c c ió n J a v a p ro p o rc io n a tre s fo rm a s b á sic a s d e b u cle: la in s tru c c ió n w h i l e . la in s tru c ­
c ió n f o r y la in s tru c c ió n d o . L a s in ta x is d e la in s tru c c ió n w h i l e e s la sig u ie n te

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­

Jav a p ro p o rc io n a o tra s d o s fo rm as d e bucle: la in stru c c ió n f o r y la in stru c c ió n d o . m e n te e l v a lo r f a l s o , e l c u e r p o d e l b u c le n o s e e je c u ta n u n c a . A h o ra b ie n , e n a l­


L a in s tru c c ió n f o r s e u sa p rin c ip a lm e n te p a ra la ite ra c ió n sim p le . S u s in ta x is es g u n o s c a s o s n o s g u s ta ría g a ra n tiz a r q u e e l c u e rp o d e l b u c le s e e je c u ta a l m e n o s
u n a v ez. E s to s e p u e d e c o n s e g u ir u s a n d o la in s tru c c ió n d o . L a in s tru c c ió n d o es
f o r ( in ic ia liz a c ió n t t e s t ; a c tu a liz a c ió n ) id é n tic a a la in s tru c c ió n w h i l e . e x c e p to p o r el h e c h o d e q u e e l te st se re a liz a tra s
* instrucción la e je c u c ió n d e l c u e rp o d e l b u c le . I.a s in ta x is es
s ig u ie n te in s tr u c c ió n
do
in s tr u c c ió n
A q u í, i n i c i a l i z a c i ó n . t e s t y a c t u a l i z a c i ó n so n e x p re s io n e s , s ie n d o las
tre s o p c io n a le s . E l v a lo r p o r d e f e c to d e t e s t , c u a n d o n o a p a re c e , es t r u e . N o w h i l e í e x p r e s ió n );

h a y p u n to y c o m a tra s e l p a ré n te sis c errad o . sig u ien te instrucción

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 .

la in s tru c c ió n f o r p e rm ite v er fá c ilm e n te c u á l e s e l ra n g o d e l c o n ta d o r. E l si­ Pedir d ato a l usuario;


g u ie n te fra g m e n to p ro d u c e los l(X) p rim e ro s e n te ro s p o sitiv o s; Leer valor ;
) w hiie( e l v a lo r no e s bueno ) ;
f o r t i n t i = 1 ; i < = 1 0 0 ,- i** )
S y stem .o u t.p rin tln t i ); L a in s tru c c ió n d o e s la m o n o s u sad a d e las tre s fo rm a s d e b u c le . S in e m b a rg o ,
c u a n d o te n e m o s q u e h a c e r a lg o al m e n o s u n a v e z . v p o r a lg u n a ra z ó n u n b u c le
E ste f r a g m e n to ilu s tra la té c n ic a h a b itu a l d e d e c la r a r u n c o n ta d o r e n la p a rte f o r no e s lo m á s a d e c u a d o , e n to n c e s la in s tru c c ió n d o s e c o n v ie rte e n n u e stra
d e ¡m e ta liz a c ió n d e l b u c le . E l á m b ito d e l c o n ta d o r e s s o la m e n te e l in te r io r d e l e le c c ió n .
b u cle .
T a n to i n i c i a l i z a c i ó n c o m o a c t u a l i z a c i ó n p u e d e n u s a r u n a c o m a p ara
p e rm itir v a ría s e x p re s io n e s . El sig u ie n te fra g m e n to ilu stra e s ta té c n ic a h a b itu a l- 1.5.7 b r e a k y continué
m e n te u tiliz a d a ;
L a s in s tru c c io n e s f o r > w h i l e o fre c e n u n a o p o rtu n id a d d e te rm in a c ió n a n te s de­
f o r ( i = 0. sum a - 0; i <- n ; i * * , suma ♦ = n ) v o lv e r a e je c u ta r e l c u e rp o d e l b u c le . L a in s tru c c ió n d o o fre c e u n a o p o rtu n id a d de
S y s t e m . o u t . p r i n t l n ( i -» * \ t ’ •» s u m a ) ; te rm in a c ió n tra s la e je c u c ió n d e l c u e rp o . O c a sio n a lm e n te , p o d ría m o s q u e re r te r­
m in a r la e je c u c ió n e n m ita d d e l c u e rp o (in stru c c ió n c o m p u e s ta ) d e l b u c le . L a in s ­
L os b u c le s s e a n id a n d e la m ism a fo rm a q u e la s in s tru c c io n e s i f . P o r e je m p lo , tru c c ió n b r e a k . fo rm a d a p o r la p a la b ra re s e rv a d a b r e a k se g u id a d e un p u n to y
p o d e m o s e n c o n tr a r to d o s lo s n ú m e ro s p e q u e ñ o s c u y a s u m a e s ig u a l a su p ro d u c to c o m a , se p u e d e u s a r p a ra c o n se g u irlo . N o rm a lm e n te u n a in s tru c c ió n i f p re c e d e a
(c o m o ? v ^ e n v a s u m a v n rtu lu rtn e s 4 e la in s tru c c ió n b r e a k c o m o e n
w hile( . .. » e n c a ja c o n c u a lq u ie r v alo r n o re p re s e n ta d o p o r las d e m á s . S i n o h a y n in g ú n c a s o
{ a p lic a b le al v alo r d e la e x p re s ió n s w i t c h . la in s tru c c ió n s w i t c h fin a liz a su e j e ­
c u c ió n ; e n c a s o c o n tra rio , e l c o n tro l p a s a a la e tiq u e ta a p ro p ia d a y s e e je c u ta n to ­
i f ( algo ) d a s las in s tru c c io n e s d e s d e e s e p u n to e n a d e la n te . S e p u e d e u s a r u n a in stru c c ió n
break; b r e a k p u ra fo rz a r la te rm in a c ió n d e la in s tru c c ió n s w i L c h u tiliz á n d o s e c a s i s ie m ­
p re p a ra se p a ra r ló g ic a m e n te lo s d is tin to s c a s o s . E n la F ig u ra 1.5 s e m u e s tra un
e je m p lo d e e s ta e s tru c tu ra típica.

I-a in s tru c c ió n b r e a k p ro v o c a la s a lid a d e l b u c le m á s in te rn o e n e l q u e e s tá


c o n te n id a (ta m b ié n s e u s a e n c o n ju n c ió n c o n la in stru c c ió n s w i t c h . q u e s e e s tu ­ 1 sw itc h ( algur.C aracter )
d ia e n la sig u ie n te se c c ió n ). S i h a y v a rio s b u c le s d e lo s q u e d e s e a m o s sa lir, la in s­ 2 (
tru c c ió n b r e a k n o fu n c io n a rá a d e c u a d a m e n te : a d e m á s , lo m á s p ro b a b le e n tal c a ­ 3 c a s ® ' ( 1:
so e s q u e su p ro g ra m a e s té p o b re m e n te d is e ñ a d o . A u n a sí. J a v a p ro p o rc io n a una 4 cas® 1( ' i
5 case ’ 1' :
in s tru c c ió n b r e a k e tiq u e ta d a . P a ra u tiliz a r d ic h a in s tru c c ió n , se c o m ie n z a p o r p o ­
6 U Código p a r a p r o c e s a r l o s sím bolos de a p e r tu r a
n e r u n a e tiq u e ta a u n b u c le , d e fo rm a q u e la in s tru c c ió n b r e a k s e p u e d a a p lic a r a
7 break;
e s e b u c le , in d e p e n d ie n te m e n te d e c u a n to s b u c le s a n id a d o s h a y a . A c o n tin u a c ió n
8
se m u e s tra u n e je m p lo : 9 cas® ' I • s
10 cas® ' ] • :
ex terio r: 11 cas® ’ ) ' :
w h ile( . .. ) 12 II Código p a r a p r o c e s a r l o s sím bolos de c i e r r e
{ 13 braak;
w hile ( . . . ) 14
i f <desastre ) 15 cas® ' \ n ' :
break e x te rio r; // S a lta h asta después de e x te rio r 16 / / Código p a ra t r a t a r e l c a r á c t e r de í i n d e l ín e a
17 break;
// El c o n tro l s a l ta h a sta aquí a l s a l i r d e l bucle e x te rio r 18
19 default:
A v e c e s , q u e re m o s a b a n d o n a r la e je c u c ió n d e l c u e rp o d e l b u c le e n la iteració n 20 / / Código p a r a t r a t a r o t r o s c a s o s
ac tu a l y s a lla r a la sig u ie n te ite ra c ió n . E s to s e p u e d e re a liz a r c o n la in stru c c ió n 21 break;
c o n t i n u é . A l ig u al q u e la in s tru c c ió n b r e a k , la in s tru c c ió n c o n t i n u é in clu y e 22 >
un p u n to y c o m a y s e a p lic a so la m e n te al b u c le m á s in te rn o . F.l sig u ie n te fra g m e n ­
Fi g u r a 1.5 Ejem plo d e u n a instrucción s w i t c h .
to p ro d u c e lo s 10 0 p rim e ro s e n te r o s , c o n la e x c e p c ió n d e lo s d iv is ib le s p o r 1 0 :

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:

tru c c io n e s y u n a c o le c c ió n d e e tiq u e ta s , q u e re p re se n ta n p o sib le s v a lo re s d e la e x ­


p re sió n . T o d a s las e tiq u e ta s d e b e n s e r d is tin ta s. U n a e tiu u e ta o o c io n a l ñ o r d e le c to v a lM in = x <= y ? x : y;
1.6 Métodos E n a lg u n o s le n g u a je s, e s to p u e d e s e r in a c e p ta b le si m ax s e h a d e c la ra d o p re v ia ­
m e n te . P o r e je m p lo , p o d ría m o s te n e r ta m b ié n
L o q u e e n o tro s len g u ajes se c o n o c e c u in o fu n ció n o p ro ced im ien to , e n J a v a se llam a
m éto d o . E n e l C a p ítu lo 3 se p ro p o rc io n a un tra ta m ie n to m á s c o m p le to d e lo s m éto ­ in t m ax( in t a , in t b )
dos. E sta se cció n p re se n ta alg u n o s c o n c e p to s b á sic o s p a ra e sc rib ir fu n c io n e s d e l e s ­
tilo d e C . c o m o m a i n . d e fo rm a q u e p(*dam os e sc rib ir a lg u n o s p ro g ra m a s sim p les. J a v a p e rm ite la so b re c a rg a d e n o m b re s d e lo s m é to d o s. E s to s ig n ific a q u e v a ­
L a c a b e c e r a J e u n m é to J o c o n siste e n u n n o m b re, u n a lista (p o s ib le m e n te v a ­ rio s m é to d o s p u e d e n te n e r e l m ism o n o m b re y d e c la ra rs e e n e l m is m o á m b ito d e
c ía ) d e p a rá m e tro s y e l tip o d e l re su lta d o . F l c ó d ig o q u e re a lm e n te im p le m e n ta el c la s e m ie n tra s su s sig n a tu ra s (e s d e c ir, lo s tip o s d e la lista d e p a rá m e tro s ) sean
m é to d o , a v e c e s lla m a d o e l c u e rp o d e l m é to d o , e s fo rm a lm e n te un b lo q u e . L a d e ­ d ife re n te s. C u a n d o s e p ro d u c e u n a lla m a d a a m a x . e l c o m p ila d o r p u e d e d e d u c ir
c la r a c ió n J e u n m é to J o e s tá fo rm a d a p o r u n a c a b e c e ra y u n c u e rp o . E n la F ig u ­ c u á l e s e l m é to d o q u e se p re te n d e a p lic a r e n b a s e a la lista d e a rg u m e n to s reales.
ra 1.6 se m u e s tra un e je m p lo d e u n m é to d o y u n a ru tin a m a i n q u e lo in v oca. D o s s ig n a tu ra s p u e d e n te n e r e l m ism o n ú m e ro d e p a rá m e tro s , s ie m p re q u e e l tip o
C o lo c a n d o d e la n te d e u n m é to d o la s p a la b ra s p u b l i c s t a t i c . p o d e m o s im i­ d e a lg u n o d e e llo s s e a distin to .
tar u n a fu n c ió n g lo b a l d e l e s tilo d e C . A u n q u e e n a lg u n o s e je m p lo s e s u n a té c n ic a O b s e rv e q u e e l tip o del re s u lta d o n o e s tá in c lu id o e n la sig n a tu ra . E s to s ig n ifi­
ú til, n o d e b e so b re u tiIiz a rse . c a q u e n o e s tá p e rm itid o te n e r d o s m é to d o s d e n tr o d e l m is m o á m b ito d e c la s e
F l n o m b re d e l m é to d o es u n id e n tific a d o !. L a lista d e p a rá m e tro s c o n s is te e n c u y a ú n ic a d ife re n c ia s e a e l tip o d e l re su lta d o . M é to d o s q u e s e e n c u e n tre n e n á m ­
c e ro o m ás p a r á m e tr o s fo r m a le s , c a d a u n o d e e llo s c o n u n tip o . C u a n d o s e lla m a a b ito s d e c la s e d is tin to s p u e d e n te n e r e l m ism o n o m b re , s ig n a tu ra c in c lu s o tip o del
u n m é to d o , los a rg u m e n to s re a le s s e p asa n a lo s p a rá m e tro s fo rm a le s u s a n d o a s ig ­ re su lta d o ; e s to se e s tu d ia e n e l C a p ítu lo 3.
n a c ió n n o rm al. E s to sig n ific a q u e lo s tip o s p rim itiv o s se p a s a n s ie m p re u s a n d o p a ­
s o J e p a r á m e tr o s p o r va lo r. L o s a rg u m e n to s rea le s n o p u e d e n s e r m o d ific a d o s p o r
la fu n ció n . C o m o e n la m a y o ría d e lo s le n g u a je s d e p ro g ra m a c ió n m o d e rn o s, las
d e c la ra c io n e s d e los m é to d o s p u e d e n a p a re c e r e n c u a lq u ie r o rd e n .
1.6.2 Clases de alm acenam iento

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 ­

Problemas teóricos 1.17.


m e n ta l e s tá n a c o s tu m b ra d o s a m e m o ri/a r) .
P re s e n te d o s m é to d o s e s tá tic o s , e l p rim e ro d e lo s c u a le s d e b e d e v o lv e r el
m á x im o d e tr e s e n te ro s, m ie n tra s q u e e l s e g u n d o d e v o lv e r á e l m á x im o d e
1 .1 1 . S u p o n g a m o s q u e b tie n e e l v a lo r 5 y c e l v a lo r 8 . ¿ C u á l e s e l v a lo r d e a . b
c u a tr o en te ro s.
y c d e s p u é s d e la e je c u c ió n d e c a d a u n a d e la s lín e a s del sig u ie n te fra g ­
1. 18. E s c rib a u n m é to d o e s tá tic o q u e to m e un a ñ o c o m o p a rá m e tro y d e v u e lv a
m e n to d e p ro g ra m a ?
t r u e c u a n d o e l a ñ o s e a b isiesto .

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.

MARK A = 1 W=2 N = 3 R=4 E = 5 9147


♦ ALLEN L = 6 K = 7 I « 8 M=9 S = 0 * 16653

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.

1. G . C o m e ll y C . S . H o rstm a n n . C o re J a v a . Va e d .. P re n tic e -H a ll. E n-


g le w o o d C liffs . N J (1 0 0 8 ). 2.1 ¿Q u é es una referencia?
2. J. L e w is y W . L o ftu s . J a v a S o ftw a re S o lu tio n s: F o u n d a tio n s o f P ro g ra m
D esig n . A d d iso n -W 'e sle y . R e a d in g , M a ss. (1 9 9 7 ). El C a p ítu lo I d e sc rib o lo s o c h o tip o s p rim itiv o s, j u n t o c o n a lg u n a s d e las o p e ra ­
c io n e s q u e s e p u e d e n re a liz a r c o n su s e le m e n to s . T o d o s lo s d e m á s tip o s d e Jav a
3. I). F la n a g a n . J a v a in a N u tsh e ll. 2.'1 e d .. O 'R e illy a n d A sso c ia te s. S e b a s to ­
so n 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 to re s y lo s fic h e ­
p o l. C alif. (1 9 9 7 ).
ro s. P e ro , ¿ q u é e s u n a re fe re n c ia ? U n a v a r ia b le r e fe r e n c ia (o sim p le m e n te
4. J . G o slin g . II. J o y , y G . S te e le . T h e J a v a L a n g u a g e S p e c ific a tio n . A d- r e fe re n c ia ) e n J a v a e s u n a v a ria b le q u e g u a rd a la d ire c c ió n d e m e m o ria e n la que
d is o n -W e sle y . R e a d in g . M a ss. (1 9 9 6 ). se a lm a c e n a un o b je to .
5. M . A . W e iss. E ffic ie n t C P r o g ra m n tin g : A P r a c tic a l A p p ro a c h , P ren tic e - P o r e je m p lo , e n la F ig u ra 2.1 h a y d o s o b je to s d e u p o P u n t o . S u p o n g a m o s que
H a ll. E n g lc w o o d C liffs . NJ (1 9 9 5 ). e s to s o b je to s e s tá n a lm a c e n a d o s e n las p o sic io n e s tic m e m o ria 1 0 0 0 y 1024. re s ­
p e c tiv a m e n te . P a ra a m b o s e x is te n tre s re fe re n c ia s : p u n t o l . p u n t o 2 y p u n t o 3 .
p u n t o l y p u n t o 3 re fe re n c ia n a l o b je to s itu a d o e n la p o sic ió n 1 0 0 0 y p u n t o 2 re ­
fe re n c ia a l o b je to s itu a d o e n la p o s ic ió n 1024. O b s e rv e q u e la s d ire c c io n e s d e los
o b je to s, c o m o 1000 y 1024. so n a s ig n a d a s p o r e l c o m p ila d o r d e fo rm a a rb itra ria
(s ie m p re q u e e n c u e n tre m e m o ria d is p o n ib le ), p o r lo q u e e s to s v a lo re s n o so n útiles
e x te rn a m e n te c o m o n ú m e ro s . S in e m b a r g o , e l h e c h o d e q u e p u n t o l y p u n t o 3
a lm a c e n e n v a lo re s id é n tic o s e s útil: s ig n ific a q u e e s tá n re fe re n c ia n d o a l m ism o
o b jeto .
d e r r i b e J a v a 1 .0 .2 . t n e l m o m e n t o e n q u e s e «cribi ó b v e r s i ó n o r i g i n a l «le M e l i b r o . J a v a 1 .1 y a s e h a b í a U n a re fe re n c ia s ie m p re c o n tie n e la d ire c c ió n d e m e m o ria e n la q u e u n o b je to
n c o r p o r a a l g u n o s c a m b i o s s i g n i f i c a m o s . E n u n a p o s i b l e s e g u n d a e d i c i ó n d e c m c l e x i o s e u i i l i / a r f u n a q u e ll a »
e s tá g u a rd a d o , a m e n o s q u e n o re fe re n c ie a n in g ú n o b je to . E n e s te c a s o , a lm a c e n a
s d e l l e n g u a j e q u e p u e d a n s e r «le u t i l i d a d p a r a mejorar b p r e v e M o c ió n e n a l g u n o » p u n t o s L a s r e f e r e n c i a s 111.
la re fe re n c ia n u la . n u i l . J a v a n o p e rm ite re fe re n c ia s a v a ria b le s p rim itiv a s.
L a F ig u ra 2 .2 ilu stra e l o p e ra d o r d e a sig n a c ió n p a ra v a ria b le s re fe re n c ia . A s ig ­
n a n d o a p u n t o 3 e l v a lo r alm acenad!» e n p u n t o 2 s e c o n sig u e q u e p u n t o 3 referen -
e ie a l m is m o o b je to q u e p u n t o 2 e s ta b a re fe re n c ia n d o . A h o ra p u n t o 2 = = p u r . t o 3
e s t r u e y a q u e p u n t o 2 y p u n t o 3 a lm a c e n a n e l v a lo r 1024. y p o r lo ta n to , reíe-
re n c ia n al m is m o o b je to , p u n t o l ! = p u n t o 2 e s ta m b ié n c ie r to y a q u e p u n t o l y
p u r . t o 2 re fe re n c ia n o b je to s d is tin to s
L a o tra c a te g o ría d e o p e ra c io n e s m a n e ja e l o b je to q u e e s tá s ie n d o rc íc re n c ia -
do. S o b re é l s ó lo p u e d e n re a liz a rs e tre s a c c io n e s b á sic a s:

1. R e a liz a r u n a c o n v e rs ió n d e tip o s (S e c c ió n 1.4.4».


2. A c c e d e r a u n c a m p o in te rn o o in v o c a r a un m é to d o , e m p le a n d o e l o b r a ­
p o m ti
d o r p u n to ( . » (S e c c ió n 2 .2 .1 ».
Figura 2.1 R ep resentación g rá fica d e una referencia: e l o b jeto d e tipo P u n t o 3. E m p le a r e l o p e ra d o r i n s t a n c e o í p a ra c o m p ro b a r q u e e l o b je to a lm a c e ­
a im a ce n o d o en l a posición d e m em oria 1000 es re te re n cia d o por n a d o e s d e u n lip o d e te rm in a d o (S e c c ió n 3.6.3».
p u n t o l y p u n t o 3 . El objeto d e tipo P u n t o a lm a c e n a d o e n la posi­
ción d e m e m o r i a 1024 es re te re n d o d o por p u n t o 2 Las posiciones d e L a s ig u ie n te s e c c ió n m u e s tra c o n m á s d e ta lle las o p e ra c io n e s c o n re fe re n c ia s
m em oria d o n d e se g u ard an las variables son arbitrarias. m á s c o m u n e s.

E x iste n d o s a m p lia s c a te g o ría s d e o p e ra c io n e s q u e p u e d e n a p lic a rs e a v a ria ­


b le s re fe re n c ia . I n a d e e lla s n o s p e rm ite e x a m in a r o m a n ip u la r e l v a lo r re fe re n c ia. ( o. 0 )
1000
P o r e je m p lo , si m o d ific a m o s el v a lo r a lm a c e n a d o e n p u n t o l < ItHXI) p a s a ría m o s a
e s ta r re fe re n c ia n d o a o tro o b je to . T a m b ié n p o d e m o s c o m p a r a r p u n t o l y p u n t o 3 . 1024 ( 5. 12»
v d e te r m in a r si e s tá n re fe re n c ia n d o al m ism o o b je to . L a o tr a c a te g o ría d e o p e ra ­ p o i n c 2 = 1024
32UO
c io n e s s e a p lic a a l o b je to re te re n c ia d o : e s p o sib le e x a m in a r o c a m b ia r e l e s ta d o
in te rn o d e u n o d e los o b je to s d e tip o P u n t o . P o r e je m p lo , p o d e m o s a v e rig u a r las lf>00 p o i n t l = 1000
c o o rd e n a d a s t e y d e a lg u n o s P u n t o s .
SI24 p o i n t 3 - 1024
A n te s d e d e s c r ib ir q u é p u e d e h a c e rs e c o n re fe re n c ia s , v a m o s a v e r lo q u e n o
e s tá p e rm itid o . C o n s id é r e s e la e x p re s ió n p u n t o l * p u n t o 2 . C o m o lo s v a lo re s a l­
m a c e n a d o s p o r p u n t o l y p u n t o 2 so n 1 0 0 0 y 1 0 2 4 . re s p e c tiv a m e n te , su p ro d u c to point
d e b e ría s e r I024(KH). S in e m b a rg o , é s te e s un c á lc u lo sin s e n tid o q u e n o te n d ría
n in g u n a u tilid a d . L a s v a ria b le s re fe re n c ia a lm a c e n a n d ire c c io n e s d e m e m o ria . > Figura 2.2 El resultodo d e p u n t o 3 = p u n t o 2 : a h o r a p u n t o 3 re fe re n cia e l m i s m o
o b jeto q u e p u n t o 2 .
n o p u e d e a s o c ia rs e n in g ú n s ig n ific a d o ló g ic o a l p ro d u c to d e d o s d ire c c io n e s d e
m e m o ria.
A n á lo g a m e n te , p u n t o l * * n o tie n e se n tid o e n J a v a : e s ta e x p re s ió n s u g ie re q u e
p u n t o l — 10 0 0 — d e b e ría in c re m e n ta rs e a 1 0 0 1 . p e ro e n e s e c a s o p o d ría n o re fe - 2.2 Nociones b ásicas sobre objetos
re n c ia r a u n o b je to v á lid o d e tip o P u n t o . M u c h o s le n g u a je s d e p ro g ra m a c ió n d e fi­
nen e l /H ullero, q u e se c o m p o r ta c o m o u n a v a ria b le re fe re n c ia . P o r e l c o n tra rio , los
y referencias
p u n te ro s d e C + + so n m u c h o m á s p e lig ro so s, p u e s s e p e rm ite n o p e ra c io n e s a ritm é ­
tic a s s o b r e las d ire c c io n e s d e m e m o ria a lm a c e n a d a s. A sí. e n C + + . p u n t o l » » tie ­ L n J a v a , u n o b je to e s u n e le m e n to d e c u a lq u ie ra d e lo s tip o s n o p rim itiv o s. Los
ne se n tid o . A d e m á s. C + + p e rm ite p u n te ro s a tip o s p rim itiv o s, p o r lo q u e se d e b e o b je to s so n tr a ta d o s d e fo rm a d ife re n te a lo s v a lo re s d e lo s tip o s p rim itiv o s. Los
se r c u id a d o s o a l d is tin g u ir e n tre c á lc u lo s c o n d ire c c io n e s d e m e m o ria y c á lc u lo s tip o s p rim itiv o s, c o m o liem o s v is to , se m a n ip u la n p o r va lo r, e s d e c ir, lo s v alo res
c o n lo s o b je to s re fe re n c ia d o s . E s to s e h a c e e x p líc ita m e n te d e s r e je r e m i,n u lo el su p u e s to s p a ra las v a ria b le s p rim itiv a s s e a lm a c e n a n e n d ic h a s v a ria b le s y s o n c o ­
p u n te ro . E n la p ra c tic a , lo s in se g u ro s p u n te ro s d e C + + c a u s a n n u m e ro s o s e rro re s p ia d o s d e u n a s a o tr a s e n las a sig n a c io n e s . C o m o s e h a e x p lic a d o e n la S e c ­
d e p ro g ra m a c ió n c ió n 2 .1 . la s v a ria b le s re fe re n c ia g u a rd a n re fe re n c ia s a o b je to s. E l o b je to a c tu a l se
L n J a v a lo s ú n ic o s o p e ra d o r e s p e rm itid o s p a ra m a n ip u la r lo s tip o s re fe re n c ia a lm a c e n a e n a lg ú n lu g a r d e la m e m o ria , y la v a ria b le re fe re n c ia g u a rd a la p o sic ió n
(c o n u n a ú n ic a e x c e p c ió n e n e l c a s o d e los s t r i ñ a s » so n la s a sig n a c io n e s v ía *. y ile m e m o ria d e l o b je to . A sí. u n a v a ria b le re fe re n c ia re p re s e n ta s im p le m e n te un
las c o m p a ra c io n e s d e ig u a ld a d , a tra v é s d e = = y ! = . n o m b re d e u n a z o n a d e la m em o ria. E s to sig n ific a q u e las v a ria b le s p rim itiv a s y
U n a fo rm a d e a lm a c e n a r un o b je to (la ú n ic a c o m ú n a to d o s lo s tip o s re fe re n ­
las v a ria b le s re fe re n c ia s e c o m p o rta n d e fo rm a d ife re n te . E sta s e c c ió n e s tu d ia con
c ia i e s e m p le a r la p a la b ra re s e rv a d a n e w . n e w se u l i h / a p a ra c o n s tru ir u n n u ev o
m á s d e ta lle d ic h a s d ife re n c ia s c ilu stra las o p e ra c io n e s p e rm itid a s c o n v a ria b les
o b jeto . U n m o d o d e h a c e rlo e s e l sig u ien te:
re feren cia.

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 :

B u tto n b = new B u tto n t ) ;


d o u b l e e i A r e a = e l C i r c u l o . a r e a ( );
b . s e t L a b e i ( “ No * I ; / / La e t i q u e t a d e b o t ó n b ©a ' N o "
p .add < b I / / b se añade a l panel p
E s p o sib le q u e e l C i r c u l o c o n te n g a la re fe re n c ia n u i l . E n e s te c a s o , e l e m p le o
d e l o p e ra d o r p u n to g e n e ra rá u n a N u l l P o i n t e r E x c e p t i o n c u a n d o e l p ro g ra m a
M u c h o s o b je to s p u e d e n c o n s tru irs e d á n d o le s u n v a lo r in ic ia l. P o r e je m p lo , el
se e je c u te . G e n e ra lm e n te , e s to c a u sa rá la te rm in a c ió n a n o rm a l d e l p ro g ram a.
o b je to d e tip o 3 u t t o n p u e d e c o n s tru irs e c o n u n s t r i n g q u e s e a su e tiq u eta:
El o p e ra d o r p u n to ta m b ié n p u e d e e m p le a rs e p a ra a c c e d e r a la s c o m p o n e n te s
in d iv id u a le s d e u n o b je to , s u p o n ie n d o q u e s e h a n h e c h o lo s p re p a ra tiv o s n e c e sa ­
B u tto n b = new B u t t o n ( 'N o ’ ) ;
rio s p a ra h a c e rla s o b serv a b le s . Hl C a p itu lo 3 m u e s tra c ó m o s e re a liz a n d ic h o s p re ­
p .ad d (b ); // b se añade a l panel p
p a ra tiv o s. S e e x p lic a a d e m á s la ra z ó n d e p o r q u é e s g e n e ra lm e n te p re fe rib le no
p e rm itir a c c e s o d ire c to a las c o m p o n e n te s in d iv id u a le s.

2.2.3 Recogida d e basura


2.2.2 Declaración d e objetos
C o m o lin io s lo s o b je to s d e b e n c o n stru irse , p o d ría m o s s u p o n e r q u e c u a n tío u n o y a
n o s e v a y a a e m p le a r m á s . d e b e m o s d e s tru irlo e x p líc ita m e n te F.n Ja v a , c u a n d o un
Y a h e m o s v is to la s in ta x is a d e c u a d a p u ra d e c la ra r v a ria b le s p rim itiv a s. E n e l c a s o
o b je to c re a d o n o e s re fe re n c ia d o p o r n in g u n a v a ria b le re fe re n c ia , la m e m o ria q u e
d e lo s o b je to s e x is te u n a d ife re n c ia im p o rta n te . C u a n d o s e d e c la ra u n a v a ria b le re ­
c o n su m e e s re c la m a d a a u to m á tic a m e n te y p a s a a e s ta r d is p o n ib le . E sta té c n ic a se
fe re n c ia . s im p le m e n te e s ta m o s in d ic a n d o u n n o m b re q u e p u e d e e m p le a rs e p a ra re -
c o n o c e c o m o re c o g id a d e b a su ra .
fe re n c ia r un o b je to a lm a c e n a d o e n m e m o ria . S in e m b a rg o , la d e c la ra c ió n , p o r si
m ism a , n o g e n e ra e s e o b je to . P o r e je m p lo , su p o n g a m o s q u e e x is te un o b je to de
tip o B u t t o r . q u e d e s e a m o s a ñ a d ir e n u n P a n e l p d a d o , e m p le a n d o p a ra e llo el
m é to d o a d d (to d o e llo d e fin id o en la s lib re ría s de J a v a ). P a ra h a c e rlo
2.2.4 El significado d e =
u tiliz a ría m o s la s in stru c c io n e s
S u p o n g a m o s q u e s e tie n e n d o s v a ria b le s p rim itiv a s l i z q y l d e r . d o n d e e m p le a ­
B utton b; / / b puede r e f e r e n c i a r a un o b je to de t ip o B utton m o s Ü 2q y l d e r p a ra d e n o ta r lo s la d o s iz q u ie rd o y d e r e c h o , re sp e c tiv a m e n te .
b.setL abel ( " N o " I : / / L a e t i q u e t a d e l b o t ó n b e s *No* E n to n c e s, la in s tru c c ió n d e a sig n a c ió n
p .a d d ( b I ; / / b se añade a l panel p
1izq = ld e r;
T o d o p a re c e e s ta r b ie n h a s ta q u e re c o rd a m o s q u e b e s e l n o m b re d e u n o b je to
d e tip o B u t t o n . p e ro q u e a ú n n o s e h a c re a d o n in g u n o d e e llo s. C o m o re su lta d o , tie n e un se n c illo sig n ificad o : e l v alo r a lm a c e n a d o e n 1 d e r e s c o p ia d o e n la v a riab le
d e s p u é s d e la d e c la ra c ió n d e b e l v a lo r a lm a c e n a d o p o r la v a ria b le re fe re n c ia b es p rim itiv a l i z q . L os c a m b io s p o sterio res e n a lg u n a d e las v a ria b le s n o a fe c ta n a la
n u i l , in d ic a n d o q u e b to d a v ía n o a p u n ta a n in g ú n o b je to v á lid o d e tip o B u t t o n . otra.
C o m o c o n s e c u e n c ia , la se g u n d a lín e a e s in c o rre c ta y a q u e e s tá in te n ta n d o a lte ­ E n lo s o b je to s, e l s ig n ific a d o d e = e s e l m ism o : lo s v a lo re s a lm a c e n a d o s se c o ­
ra r un o b je to in e x iste n te . E n e s te c o n te x to , e l c o m p ila d o r d e te c ta rá e l e r r o r , in d i­ p ia n . S i l i z q y l d e r so n re fe re n c ia s (d e tip o s c o m p a tib le s ), d e sp u é s d e la in ­
c a n d o q u e b n o e s tá im eializa d u . E n o tr o s c a s o s , e l c o m p ila d o r n o d e le c ta rá e l fa ­ s tru c c ió n d e a s ig n a c ió n , l i z q se ñ a la rá e l m ism o o b je to a l q u e l d e r ap u n ta . A quí
llo y s e p ro d u c irá un e rr o r d u ra n te la e je c u c ió n , o b te n ié n d o s e e l c ríp tic o m en saje lo q u e se c o p ia n so n las d ire c c io n e s . El o b je to a l q u e l i z q re fe re n c ia b a d e ja r á de
N u llP ointerE xception. s e r re f e re n c ia d o p o r e s ta v a ria b le . S i l i z q e r a la ú n ic a re f e re n c ia a e s e o b je to .
e n to n c e s d ic h o o b je to s e e n c u e n tra a h o ra d c s rc fc rc n c ia d o p o r lo q u e s e rá in c lu id o p a s o d e p a rá m e tro s e s d ife re n te . E n re a lid a d e l pos*» d e p a rá m e tro s n o h a c a m b ia ­
en la p ró x im a re c o g id a d e b a su ra . O b s e rv e q u e lo s o b je to s n o s e c o p ian . do : e n su lu g a r, so n lo s p a rá m e tro s lo s q u e h a n v a n a d o , p a sa n d o d e c o rre s p o n d e r a
V e a m o s a lg u n o s e je m p lo s . I n p rim e r lu g a r, s u p o n g a m o s q u e se q u ie r e ten e r tip o s n o re fe re n c ia le s a c o rre s p o n d e r a tip o s re feren cia.
d o s o b je to s d e tip o B u t t o n . In te n ta m o s lo g ra rlo c o m e n z a n d o p o r c re a r n o B o t o n .
D e sp u é s c re a m o s s i B o t o n m o d ific a n d o n o B o t o n d e l m o d 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 .

2.2.5 Paso de parámetros

A c a u s a d e l p a s o d e p a rá m e tro s p o r v a lo r, lo s p a rá m e tro s a c tu a le s s e p a s a n e n lu ­ 2.3 C a d e n a s d e caracte re s


g a r d e lo s p a rá m e tro s fo rm a le s e m p le a n d o la a sig n a c ió n u su al. S i e l p a rá m e tr o es
un tip o re fe re n c ia , e n to n c e s y a s a b e m o s q u e la a s ig n a c ió n sig n ific a q u e e l p a rá m e ­ L a s c a d e n a s d e c a ra c te re s e n J a v a s e m a n ip u la n m e d ia n te e l tip o S t i ir .g . E l le n ­
tro fo rm a l a h o ra re fe re n c ia a l m ism o o b je to q u e e l p a rá m e tro a c tu a l. C u a lq u ie r g u a je h a ce a p a re c e r a s t r i n g c o m o un tip o p rim itiv o y a q u e d e fin e la * y e l o p e ­
m é to d o a p lic a d o a l p a rá m e tro fo rm a l s e a p lic a ta m b ié n a l p a rá m e tro a c tu a l. En ra d o r ♦= p a ra la c o n c a te n a c ió n d e c a d e n a s. P e ro é s te e s e l ú n ic o tip o re fe re n c ia
o tr o s le n g u a je s e s to s e c o n o c e c o m o p a s o d e p a r á m e tr o s p o r re fe re n c ia . E m p lea r p a ra e l q u e la s o b re c a rg a d e o p e ra d o re s e s tá p e rm itid a . P o r lo d e m á s , e l tip o
e s ta te rm in o lo g ía e n J a v a p o d ría p ro v o c a r e q u ív o c o s , p u e s h a ría p e n s a r q u e el S t r i n g s e c o m p o rta c o m o c u a lq u ie r o tro tip o n o p rim itiv o .
2.3.1 Conceptos básicos de la m anipulación d e s t r i n g s 2.3.3 Com parando cad en as

E x iste n ik»\ re g la s fu n d a m e n ta le s so b re e l tip o S t r i n g . E n p n m e r lu g a r. s e c*hh- C o m o e l o p e ra d o r b á s ic o d e a sig n a c ió n fu n c io n a p a ra lo s S t r i n g s , e s ló g ic o su ­ Poro


p o n e r q u e lo s o p e ra d o re s re la c ió n a le s y d e ig u a ld a d ta m b ié n fu n c io n a rá n . S in e m ­ com
p o n a c o m o c u a lq u ie r o íro tip o n o p rim itiv o , a e x c e p c ió n d e lo q u e h a c e re fe re n c ia
coc*
a Im o p e ra d o re s d e c o n c a te n a c ió n . E n se g u n d o lu g a r, e l tip o S t r i n g e s in m u ta ­ b a rg o . e llo n o e s c ie n o . cara
b le . E s to sig n ific a q u e. u n a v e z q u e u n o b je to S t r i n g s e h a c re a d o , s u c o n te n id o IX- a c u e rd o c o n la p ro h ib ició n d e la so b recarg a d e o p e ra d o re s, lo s o p e rad o res proc
n o p u e d e m o d ificarse. re la c ió n a le s (< . >. < • . > - ) n o e s tá n d e fin id o s p a ra e l tip o S t r i n g . M a s aú n . - • y ! - méte
C o m o u n S t r i n g e s in m u ta b le , sie m p re e s s e g u ro e m p le a r e l o p e ra d o r con tie n e n e l sig n ific a d o u su a l p ara las v a ria b le s re feren cia. A sí. p a ra d o s o b je to s d e tip o com¡
él. A sí. un S t r i n g p u e d e d e c la ra rse d e la fo rm a sig u ien te: S t r i n g . l i z q > l d e r . l i z q - - l d e r e s t r u e s ó lo c u a n d o a m b o s rc fc re n c ia n al
m ism o o b jeto s t r i n g . Í X m o d o q u e . si referen cian d o s o b je to s d is tin to s c o n e l
S trin g vacia - " *; m ism o c o n te n id o . l i z q = = l d e r e s f a i n o . P ara ! • v a le n ra z o n a m ie n to s sim ilares
S trin g m ensaje = 'H o la* : P a ra c o m p a r a r la ig u a ld a d d e d o s t*bjeios S t r i n g e m p le a m o s e q u a l s .
S tring repetición • m ensaje: l i z q . e q u a l s t l d e r ) e s t r u e si l i z q y l d e r rc fc re n c ia n S t r i n g s q u e a lm a c e ­
n a n val*»res id é n tic o s.
D c sp u é s d e e s ta s d e c la ra c io n e s , se h a cread*» d o s o b je to s S t r i n g . E l p rim e ro U n a com pr**bación m á s g e n e ra l p u e d e re a liz a rs e c o n e l m é to d o c o r a p a r e T o .
d e e llo s e s la c a d e n a v a c ía , re fe re n c ia d a p o r v a c i a . E l se g u n d o e s e l S t r i n g 1 i z q . c o n p a r e T o ( l d e r ) c o m p a ra d o s o b je to s S t r i n g . l i z q y l d e r . Se
■ H o l a * , re fe re n c lu d o p o r m e n s a j e y r e p e t i c i ó n . E n o tr o s c a s o s la d o b le re ­ d e v u e lv e un n ú m e ro n e g a tiv o , c e ro o u n n ú m e ro p o sitiv o , se g ú n I i z q s e a m e n o r,
fe re n c ia m e d ia n te m e n s a j e y r e p e t i c i ó n p**dría g e n e ra r a lg ú n p ro b le m a . Sin ig u a l o m a y o r q u e l d e r . re s p e c tiv a m e n te .
.e m b a r g o , c o m o lo s s t r i n g s s o n in m u ta b le s, la c o m p u n c i ó n d e o b je to s d e Upo
S t r i n g e s se g u ra u la v e z q u e e fic ie n te . E l ú n ic o m o d o d e m o d ific a r e l v a lo r
2.3.4 Otros métodos del tipo S t r i n g
que r e p e t i c i ó n e s tá rc fc re n c ia n d o e s c re a r un n u e v o S t r i n g y hacer que
r e p e t i c i ó n lo re le rc n c ie . E s to n o tie n e e f e c to algún*» so b re e l S t r i n g q u e r e f e ­ L a lo n g itu d d e u n o b je to S t r i n g (la c a d e n a v a c ía tie n e lo n g itu d c e r o ) p u e d e o b te ­ Para
re n c ia m e n s a j e . üog
n e rse c o n e l m é to d o l e n g t h . C o m o l e n g t h e s un m é to d o , e s n e c e s a rio e m p le a r
coa»
p a ré n te sis caro
S e tie n e n d e fin id o s d o s m é to d o s p a ra a c c e d e r a lo s c a ra c te re s in d iv id u a le s de lí»K
2.3.2 C o ncaten ació n d e cad en as
u n S t r i n g . E l m é to d o c h a r A t o b tie n e u n so lo c a rá c te r, e s p e c ific a n d o su ocle
p o s ic ió n t í a p n m e r a p o sic ió n e s la p o s ic ió n 0 ). E l m é to d o s u b s t n n g d e v u e lv e sube
Ja 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 p a ra tip o s re fe re n c ia . S in e m b a rg o , e*nC
u n a re fe re n c ia a u n n u e v o s t r i n g . l-u lla m a d a s e re a liz a e s p e c ific a n d o la
te n e m o s u n a e x c e p c ió n e n la c o n c a te n a c ió n d e c a d e n a s. metí
p o sic ió n d e in ic io y la p rim e ra p o sic ió n n o in clu id a. cha
E l o p e ra d o r • re a liz a la c o n c a te n a c ió n c u a n d o , a l m e n o s , u n o d e lo s o p eran d o *
V e a m o s a c o n tin u a c ió n u n e je m p lo d e e s to s tre s m étodos: *ub
e s u n S t r i n g . E l re s u lta d o e s u n a re fe re n c ia a l o b je to d e tip o s t r i n g re c ié n
respt
construid*» P o r e je m p lo . S tr in g s a lu d o - 'h o l a ';
i n t Io n ■ s a l u d o . le n g th ( ): / / Io n es 4
* e s te " * 'a q u e l* //G e n e ra 'e s te a q u e l' c h a r c h = s a lu d o . c h a rA t I 1 ) ; / / c h e s 'o ”
■abe* • S / / G enera 'a b c 5 ' S trin g su b = s a lu d o .s u b s tr in g ( 2 . 4 ) ; / / s u b e s * la *
5 + 'a b e ' / / G enera 'S a b e '
' a ' • *b" • 'c * / / G e n e r a 'a b e *
2.3.5 Conversión entre ca d e n a s y tipos primitivos
l-a s c a d e n a s d e un s o lo c a rá c te r n o d e b e n re e m p la z a rse p o r c a ra c te re s in d iv i­
El m é to d o t o S t r i n g p u e d e e m p le a rs e p a ra c o n v e rtir c u a lq u ie r v a lo r d e tip o p ri­ coS
d u a le s : e l E je rc ic io 2.5 p id e e x p lic a r e l p o rq u é . O b s e rv e q u e e l o p e ra d o r ♦ e s a s o ­ cor*
m itiv o e n u n o b je to d e tip o S t r i n g P o r e je m p lo . t o S t r i n g < 4 5 ) d e v u e lv e una
c ia tiv o p o r la iz q u ie rd a , d e m o d o q u e *PO|
re fe re n c ia a l re c ié n c re a d o s t r i n g - 4 5 * . M u c h o s tip o s tie n e n im p le m e n ta d o el ob)0
m é to d o t o S t r i n g . IX* h e c h o , c u a n d o e l o p e ra d o r • tie n e u n sol*» a rg u m e n ­ ei*r
*aH • 1 ♦ 2 / / G en era "al2 *
t o S t r i n g . e l a rg u m e n to q u e n o lo e s s e c o n v ie rte a u to m á tic a m e n te e n u n a c a ­ Std
1 * 2 * *a* / / G e n e r a "3a*
d e n a a p lic a n d o t o S t r i n g . P a ra I**' ti p m d e e n te ro s, u n a fo rm a a lte rn a tiv a d e
1* C 2»*a* ) / / G e n e r a '1 2 a *
t o S t r i n g p e rm ite la e s p e c ific a c ió n d e la b a s e d e la re p re se n ta c ió n A s í

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

B u tto n ( I vectorD eB otones,-


2.4 Vectores v e c to r D e B o to n e s = new B u tto n [ 5 ) ;
for < ir.t i = 0; i < v e c to rD e B c to n e s. le n g th ; i*» )
U n a g r e g a d o e s u n a c o le c c ió n d e e n tid a d e s a lm a c e n a d a s e n u n a u n id a d . 1:1 v e c to r v e c t o r D e B o t o n e s [ i ) = new B u t t o n ! ) ;
e s e l m e c a n ism o b á s ic o p a ra a lm a c e n a r u n a c o le c c ió n d e e n tid a d e s d e l m ism o ti­
L a F ig u ra 2 .3 m u e s tra e l e m p le o d e lo s v e c to re s e n J a v a , m e d ia n te su a p lic a ­
po. E n J a v a e l v e c to r n o e s un u p o p rim itiv o , p e ro se c o m p o r ta d e fo rm a m u y s i­
ció n a la m o d e liz a c ió n d e l sig u ie n te p ro b le m a : e n la lo te ría p rim itiv a , c a d a s e m a ­
m ila r al re s to d e lo s o b je to s. A s í. m u c h a s d e la s re g la s d e lo s o b je to s p u e d e n a p li­
n a s e s e le c c io n a n se is n ú m e ro s d is tin to s e n tre I y 4 0 (a m b o s in c lu siv e ). F.I p ro g ra ­
c a rs e ta m b ié n a lo s vectores.
m a d e la fig u ra e lig e n ú m e ro s re p e tid a m e n te p a ra I .(XX) s o rte o s. L a s a lid a e s la
C a d a e n tid a d e n e l v e c to r p u e d e s e r a c c e d id a m e d ia n te e l o p e r a d o r d e in d e x a -
c a n tid a d d e v e c e s q u e c a d a n ú m e ro h a s id o e sc o g id o . L a lin c a 15 d e c la ra u n v e c ­
• d o n d e vecto res [ J. D e c im o s q u e e l o p e ra d o r ( ] nute.xa e l v e c to r e n e l se n tid o
to r d e e n te ro s q u e lle v a la c u e n ta d e las a p a ric io n e s d e c a d a n ú m e ro . C o m o los
d e q u e e s p e c ific a q u é o b je to d e b e s e r a c c e d id o . A d ife re n c ia d e C y C + + . e l c h e ­
v e c to re s s e in d e x a n c o m e n z a n d o e n el c e r o , e l *1 e s c ru c ia l. S in é l . te n d ría m o s un
q u e o d e lo s lím ite s s e r e a l i/ a a u to m á tic a m e n te .
v e c to r c u y o ra n g o in d e x a b le se e x te n d e ría d e s d e e l 0 h a s ta e l 4 8 . y c o m o c o n s e ­
E n Ja v a , lo s v e c to re s se in d e x an c o m e n z a n d o s ie m p re e n c e ro . A s í. un v e c to r a
c u e n c ia e l a c c e s o al ín d ic e 4 0 e s ta ría fu e ra d e ra n g o . El b u c le d e las lín e a s 16 y 17
d e tre s e le m e n to s a lm a c e n a a 10 J . a 1 1 ] v a 12 ] . E l n ú m e ro d e e le m e n to s q u e puede
in ic ia liz a la s e n tra d a s d e l v e c to r a c e ro . E l re s to d e l p ro g r a m a es re la tiv a m e n te
se r a lm a c e n a d o e n un v e c to r a s e o b tie n e c o n a . l e n g t h . O b se rv e q u e e n e s ta o c a ­
se n c illo . S e e m p le a e l tip o R a n d o m d e fin id o e n e l C a p ítu lo ó. L a s lla m a d a s a l m é ­
sión in» hay p a rén tesis. U n b u cle típ ic o p ara re c o rre r u n v e c to r se b a sa ría e n
to d o r a n d o m l n t p ro d u c e n re p e tid a m e n te u n n ú m e ro a le a to rio d e n tro d e l ran g o
f o r ( i n t i = 0; i < a . l e n g t h ; i** ) e sp e c ific a d o . L a s a lid a d e lo s re s u lta d o s se g e n e ra e n las lín e a s 2 6 y 27.
C o m o e l tip o v e c to r e s u n tip o re fe re n c ia . = n o c o p ia v e c to re s. E n c a m b io , si
l i z q y l d e r s o n v e c to re s, e l e fe c to de
2.4.1 Declaración, asignación y métodos
i n t ( ) l i z q J new i n t l 100 1 ;
U n v ecto r e s un o b je to , a s í q u e d a d a u n a d e c la ra c ió n d e v ec to r in t l J l d e r = n e w i n t { I CO ] ;

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

S u p o n g a m o s q u e q u e re m o s le e r u n a s e c u e n c ia d e n ú m e ro s y a lm a c e n a rlo s e n un 2.4.3 Vectores multidimensionales


v e c to r p a ra su p ro c e s a m ie n to . L a p ro p ie d a d b á sic a d e un v e c to r e s q u e d e b e m o s
e s p e c ific a r su ta m a ñ o p a ra q u e e l c o m p ila d o r p u e d a re s e rv a rle la c a n tid a d d e m e ­ F.n a lg u n a s e v a sio n e s e s n e c e sa rio a c c e d e r a u n v e c to r a tra v é s d e v a n o s ín d ices.
m o ria a d e c u a d a . A d e m á s d e b e m o s r e a l i/ a r su d e c la ra c ió n a n te s d e l p rim e r a c c e so U n e je m p lo típ ic o so n las m a tric e s. U n v e c to r in u ltid iin e n sio n a l e s u n v e c to r e n el
a l v e c to r. S i n o te n e m o s id e a a p rio ri tic c u á n to s e le m e n to s d e b e re m o s m a n e ja r, es q u e e l a c c e s o a u n e le m e n to s e re a liz a e m p le a n d o m á s d e u n ín d ic e . L a c a n tid a d
d ifíc il re a liz a r u n a e le c c ió n ra z o n a b le d e d ic h o ta m a ñ o , lis ta s e c c ió n m u e s tra c ó ­ d e m e m o ria q u e s e le re s e rv a s e d e te rm in a al e s p e c ific a r e l ta m a ñ o d e sus ín d ices.
m o e x p a n d ir v e c to re s si su ta m a ñ o in ic ial re s u lta s e r a l fin a l d e m a s ia d o p eq u eñ o . A c c e d e m o s a c a d a e le m e n to c o lo c a n d o c a d a ín d ic e e n tre su p ro p io p a r d e c o rc h e ­
L sta té c n ic a re c ib e e l n o m b re d e e x p a n sió n d in á m ic a d e v e d a r e s y n o s p e rm ite te s . P o r e je m p lo , la d e c la ra c ió n
a lm a c e n a r e n m e m o ria v e c to re s d e c u a lq u ie r ta m a ñ o , a g ra n d á n d o lo s o e m p e q u e ­
ñ e c ié n d o lo s d u ra n te la e je c u c ió n d e l p ro g ram a. i n t l J l ) x = n e w i n t l 2 ] 1 3 1;
iraport j a v a . L o . ’ ; d e fin e e l v e c to r b id im e n s io u a l x . c o n e l p rim e r ín d ic e lo m a n d o v a lo re s e n ir e 0 y I
p u b l ic c l a s s LecruraEr.ceros
y e l se g u n d o m o v ié n d o s e e n tre 0 y 2 (p a ra g u a rd a r un to tal d e s e is o b je to s ). El
c o m p ila d o r a s ig n a s e is p o sic io n e s d e m e m o ria a d ic h o s o bjetos.
public static v o i d mair. | S t r i r . g [ ¡ args >

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

//B u££eredR eader s e e s t u d i a e n l a S e c ció n 2.6


B ufferedReader i n - new B u f f e r e d R e a d e r ( new a r q s i o j re fe re n c ia a l S t r i n q ’ e s t e ’ y a r g s f l ] re fe re n c ia a l S t r i r . g
inputStrea.'pP.e ader l S y ste m , ir. ) ) • a q u e l ’ . E l p ro g ra m a d e lu F ig u ra 2 .5 im p le m e n ta e l p ro g ra m a e c o .
int entradaV al = 0;
int [ ) vector = new i n t 1 5 ] ; 1 public c la ss Eco
20 i n t elem Leidos = 0; 2 <
*21 S trir.g unaLinea; 3 / / M uestra l o s a rg u m en to s de la lin e a d e comandos
22 4 p u b lic s t a t i c v oidmainl S trin g l ]args )
23 S y s te m .o u t.p rin tln t “Introduce una c an tId ad cualquiera* • 5 {
6 fo r( i n t i = 0; i < a r g s .l e n g t h - 1 ; i* * >
24 " d e e n t e r o s , uno p o r l i n e a : * );
7 S y s t e m .o u t .p r i n t ( a rg s ! i I • ’ " I;
25 try
8 i f ( a r g s . l e n g t h •= 0 J
26
9 S y s t e m . o u t . p r i n t l n ( a r g s ! a r g s . l e n g t h - 1 ) );
27 w h i 1o ( l unaLinea * ín.readL inel 1 ) !■ n u i l > 10 e l se
28 11 S y s t e m . o u t . p r i n t l n ! ’ No h a y a r g u m e n t o s q u e m o s t r a r * );
29 entradaV al ■ m t e g e r . p a r s e l n t ( unaLinea l; 12 )
30 i í < e l e m L e i d o s =- v e c t o r . l e n g t h ) 13 }
31 vector = r e a ju s ta r ! v ecto r, v e c to r . length * 2
Figuro 2.5 Fl co m a n d o e c o .
32 v e c to r! elem L eidos*' ] = entradaV al;
33
34
35 c atch ! Exceptione l { } / / No s e p r o c e s a n l o s e r r o r e s 2.5 M an e jo d e ex ce p cio n e s
36 S y s te m .o u t.p rin tln t 'L ectura fin aliza d a" )
37 r e t u r n r e a j u s t a r ! v e c t o r , e l e m L e id o s I; L a s e x c e p c io n e s so n e le m e n to s q u e a lm a c e n a n in fo rm a c ió n y la tra n sm ite n fu era
38 ] d e la s e c u e n c ia n o rm a l d e re to m o d e d a to s . L a s e x c e p c io n e s se p ro p a g a n h a c ia a t ­
39
rá s a tra v é s d e la s e c u e n c ia h a b itu a l d e lla m a d a , h a s ta q u e s e a n r e c o g id a s p o r a l ­
40 // R eajustar e l in tf ] vector;devuelve e l nuevo v e c to r g u n a ru tin a . S e e m p le a n p a ra d e le c ta r h e c h o s e x c e p c io n a le s , c o m o p o r eje m p lo ,
41 p u b l i c s t a t i c i n t | ]r e a j u s t a r ! i n t [] v e c t o r , i n t n u e v o T a m a n y o
erro re s.
42
43 int ( ] o rig in a l = vector;
44 int numCopia = M a t h . m i n l o r i g i n a l . l e n g t h , nuevoTamanyo
45 2.5.1 Procesamiento d e excepciones
46 v e c t o r = new i n t ( nue voT a m a nyo ] :
47 f o r t i n t 1 = 0 ; i < numCopia; i * * | El c ó d ig o d e la F ig u ra 2 .6 m u e s tra e l e m p le o d e e x c e p c io n e s. E l c ó d ig o q u e e v e n ­
48 vector! i ] = o rig in al! i 1; tu a lm e n te p u e d e g e n e ra r u n a e x c e p c ió n se e n c ie rra e n e l b lo q u e t r y . F.l b lo q u e
49 re tu rn vector; t r y s e e x tie n d e d e sd e la lín e a 15 h a s ta la lín e a 19. In m e d ia ta m e n te d e s p u é s del
50 )
b lo q u e t r y se e n c u e n tra n lo s m a n e ja d o re s d e e x c e p c io n e s . E sta p a rte d e l c ó d ig o
51 )
se e je c u ta só lo si s e p ro d u c e u n a e x c e p c ió n . E n e l m o m e n to e n e l q u e é s ta s e la n ­
Figuro 2 .4 C ó d ig o p a ra le e r uno c a n tid a d ilim itada d e i n t s y devolverlos c o m o za. e l b lo q u e t r y d e l q u e p ro c e d e s e c o n s id e ra fin a liz a d o . C a d a b lo q u e c a t c h se
salida p ru e b a e n o rd e n h a s ta e n c o n tr a r u n m a n e ja d o r d e e x c e p c io n e s a d e c u a d o . C orno
1 im port java.io.*;
L a c lá u s u la f i n a l l y q u e sig u e a l ú ltim o b lo q u e c a t c h (o a l b lo q u e t r y si no
2
3 p u b lic c l a s s DividePorDos h a y n in g ú n b lix |u e c a t c h ) s e e m p le a e n e s ta s situ a c io n e s. L a c lá u s u la f i r . a l l y
4 ( c o n s is te e n la p a la b ra c la v e f i n a l l y s e g u id a d e l b lo q u e f i n a l l y . E x iste n tre s
5 p u b lic s t a t i c vo id maint String [ ] args J s itu a c io n e s b ásicas:
6 (
7 // B u t f e r e d R e a d e r s e d i s c u t e e n l a S e c c i ó n 2 .6 1. S i e l b ltx ju c t r y s e e je c u ta sin g e n e ra rs e e x c e p c io n e s , e l c o n tro l p a s a al
6 B u f f e r e d R e a d e r i n = n e w B u f f e r e d R e a d e r ! new hl(X |uc f i n a l l y . E s to e s a s í a ú n c u a n d o e l b lo q u e t r y te rm in e a n te s d e
9 InputStreamReader < S ystem .in ) ); a lc a n z a r su ú ltim a in s tru c c ió n , m e d ian te u n r e t u r n . b r e a k o c o n t i n u é .
10 i n t x;
2. S i s e p ro d u c e u n a e x c e p c ió n d e n tro d e l b lix |u e t r y q u e n o e s reco g id a, el
11 S tr in g unaLinea;
12 c o n tro l p asa al bloque f i n a l l y . T ra s e je c u ta r éste la e x c e p c ió n se propaga.
13 System .out . p r m t l n t "Introduce un e n t e r o : ” ); 3. S i s e p rix lu c e u n a e x c e p c ió n d e n tr o d e l b b x ju c t r y q u e e s re c o g id a e n un
14 try c a t c h p o ste rio r, e l c o n tro l p a s a a l b lo q u e c a t c h c o rre sp o n d ie n te . T ra s
15 e je c u ta rs e , s e p ro c e s a e l b lo q u e f i n a l l y .
16 unaLinea = in .re a d L in e t );
17 x = I n t e g e r . p a r s e l n t ( unaLinea );
18 S y s t e m . o u t . p r i n t l n ( *La mitad d e x es ' • ( x / 2 > );
19 2.5.3 Excepciones más comunes
20 c a tc h < E xception e )
21 ( System .out . p r i n t l m e ); ) E n J a v a e x is te n m u c h o s tip o s d e e x c e p c io n e s e s tá n d a r. L a s e x c e p c io n e s ru n -tim e
22
(o e n tie m p o d e e je c u c ió n ) in c lu y e n e v e n to s c o m o la d iv is ió n -p o r-c e ro d e e n te ro s
23 }
> lo s a c c e s o s ile g a le s a v e c to re s. C o m o e sto s e v e n to s p u e d e n p n x lu c irs e c a s i en
Figura 2.6 Un p rogram a se n cilo p o ra ilustrar las excepciones. c u a lq u ie r p u n to , se ría a g o ta d o r in c o rp o ra r c o n s ta n te m e n te m a n e ja d o ra s d e e x c e p
c io n c s p a ra e llo s. E n c u a lq u ie r c a s o , si se e s p e c ific a p a ra e llo s u n b lo q u e c a t c h .
e sta s e x c e p c io n e s se c o m p o rta n c o m o c u a lq u ie r o tra . P e ro si n o se e sp e c ific a n in ­
E x c e p t i o n in c lu y e lo s tip o s d e lo d u s la s e x c e p c io n e s d e n u e stro in te ré s, re c o g e g u n o . se la n z a u n a e x c e p c ió n e s tá n d a r q u e s e p ro p a g a d e la fo rm a u su a l, p u d ie n d o
c u a lq u ie r e x c e p c ió n g e n e ra d a p o r e l b lo q u e t r y . M á s c o n c re ta m e n te , e s ta s e x c e p ­ s o b re p a s a r m a i n . E n e s te c a s o e l p ro g ra m a te rm in a d e fo rm a a n ó m a la , p re s e n ta n ­
c io n e s s o n d e l tip o l O E x c e p t i o n . g e n e ra d a s p o r r e a d L i n e si s e p ro d u c e alg ú n d o u n m e n s a je d e e rro r. E n la F ig u ra 2 .7 se m u e s tra n a lg u n a s d e las e x c e p c io n e s
e rr o r in e s p e ra d o d e le c tu ra , y d e l tip o N u m b e r F o r m a t E x c e p t i o n . g e n e ra d a s p o r r u n -tim e m á s u su ales.
p a r s e l n t . si u n a L i n e a n o e s c o n v e rtib le a e n te ro . L a m a y o ría d e la s e x c e p c io n e s so n d e l tip o s ta n d a r d c h e c k e d . S i u n m é to d o
U n a v e z c a p tu ra d a la e x c e p c ió n c o rre s p o n d ie n te s e e je c u ta e l c ó d ig o d e l b lo ­ p u e d e la n z a r u n a d e e s ta s e x c e p c io n e s d ire c ta o in d ire c ta m e n te , e l p ro g ra m a d o r
q u e c a t c h — e n n u e s tro c a s o la lín e a 2 1 — . E n to n c e s e s te b lo q u e y e l q u e c o n tie ­ d e b e d e fin ir e l b lo q u e c a t c h a d e c u a d o p a ra e lla o in d ic a r d e fo rm a e x p líc ita q u e
ne la c o m b in a c ió n t r y / c a t c h 1 se c o n s id e ra n te rm in a d o s . En e l e je m p lo se im ­
p rim e un m e n s a je s ig n ific a tiv o p a ra e l o b je to e d e lip o E x c e p t i o n . C o m o
a lte rn a tiv a . p<xlría re a liz a rs e u n p ro c e s a m ie n to a d ic io n a l o b ien d a rs e m e n s a je s d e Ex cep cio n es Run-time Significado
e rr o r m á s d eta lla d o s.
Ar i t hmet ic E x c e p t ion D esbordam iento o división en tera por
cero.

2.5.2 La cláusula f i n a l l y N um berForm atE xception C onversión ileg al d e un s t r i n g a un tipo


num érico.
A lg u n o s o b je to s c o n s tru id o s e n e l b lo q u e t r y d e b e ría n se r e lim in a d o s a n te s de
IndexO utO fB oundsE xception A c c e so a un elem ento inexistente d e un
c o n c lu ir la e je c u c ió n d e l m is m o . P o r e je m p lo , lo s fic h e ro s q u e s e a b re n e n e l b lo ­
vecto r o d e un s t r i n g .
q u e t r y n e c e sita n c e rra rse a n te s d e a b a n d o n a r d ic h o b lo q u e . U n o d e los p ro b le ­
m a s q u e a p a re c e e s q u e si s e la n z a u n a e x c e p c ió n d e n tro d e u n b l« x |u e t r y . la e li­ Negat iveA rrayS izeE xception Intento d e c re a ció n d e un v e c to r d e
m in a c ió n p o d ría n o p ro d u c irse a l c a u s a r la e x c e p c ió n la s a lid a in m e d ia ta d e l longitud n eg ativa.
b lo q u e t r y . A u n q u e la e lim in a c ió n d e lo s o b je to s p u e d e re a liz a rse ju s to d e sp u é s
d e l ú ltim o b lo q u e c a t c h . e s to s ó lo e s e fe c tiv o si la e x c e p c ió n e s re c o g id a p o r a l ­ N u l 1P o i n t e r E x c e p t io n Intento d e uso do u n a re fe re n cia nula

g u n a c lá u s u la c a t c h . y e s to e s d ifíc il d e g a ra n tiz a r c o n se g u rid a d .


Secur i tyE xception V io lación d e la seguridad e n tiem po d e
ejecución.
\ c a t c h r e q u i e r e n u n h l« iq u c d e i n » tn i c » io n e s e n l u g a r d e u n a i n s t r u c c i ó n ú n i c a , p o r l o q u e la* l l a v e * n o m k i
vi I a d o r e » a n t e r i o r e s d e J a v a a c e p t a n , d e f o r m a e r r ó n e a , c o d i g o q u e n o i n c l u y e la * lla v e » n e c e s a r ia s .
Figura 2.7 E x c e p c io n e s run-tim e m ó s c o m u n e s
la e x c e p c ió n v a a p ro p a g a rse , in c lu y e n d o p a ra e s to ú ltim o la c lá u s u la t h r o w e e n 1 im port jav a.io .* ;
2
la d e c la ra c ió n d e l m é to d o . O b s e rv e q u e a n te s o d e s p u é s d e b e n d e fin irs e m a n eja -
3 p u b l i c c l a s s DemoTh r o w
d o re s p a ra e lla s, y a q u e e l m é to d o m a i n n o d e b e ría te n e r c lá u s u la t h r o w s . E n el
4 (
C a p ítu lo 4 s e m u e s tra c ó m o d e fin ir n u e v o s tip o s d e e x c e p c io n e s. E n la F ig u ra 2.8 5 public static void procesaF ichero( S trin g Fichero )
se re c o g e n a lg u n a s d e las e x c e p c io n e s m á s u su a le s d e e s te tip o . 6 throw s lOException
L o s e r r o r e s so n e x c e p c io n e s, p e ro n o s e a ju sta n al tip o E x c e p t i o n . T íp ic a ­ 7 {
8 // E sta iirplem entación om itid a propaga c u a lq u ie r
m e n te s o n irre c u p e ra b le s. El e rr o r m á s c o m ú n e s o u t o f M e m o r y E r r o r . P a ra c a p ­ 9 // lOException h a c ia l a r u t i n a in v ocadora
tu r a r c u a lq u ie r e x c e p c ió n p o sib le d e b e re c o g e rs e un i>hjeto T h r o w a b l e . 10

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

th ro w new E x c e p ti o n ! "M alas N o t i c i a s " ) ; 2.6.1 Operaciones básicas d e E/S

N o rm a lm e n te , n o se la n /a n e x c e p c io n e s d e l tip o E x c e p t i o n . s in o q u e se la n ­ C o n ta m o s c o n tre s c a n a le s p re d e fin id o s p a ra re a liz a r la E S m e d ia n te e l te rm in al.


z a n e x c e p c io n e s d e fin id a s p o r e l u s u a rio . L o s d e ta lle s d e e s to s e e x p lic a n e n el S y s t e m , i n . q u e e s la e n tra d a e s tá n d a r. S y s t e m . o u t . q u e e s la s a lid a u su al, y
C a p ítu lo 4. S y s t e m . e r r . p a ra la s a lid a d e erro res.
C o m o se h a m e n c io n a d o a n te rio rm e n te , la s e x c e p c io n e s d e l tip o sta n d a rd C o m o y a h e m o s m e n c io n a d o , lo s m é to d o s p r i n t y p r i n t l n se e m p le a n p ara
c h e c k e d d e b e n s e r re c o g id a s o p ro p a g a d a s e x p líc ita m e n te h a c ia la m tin a q u e ha la s a lid a c o n fo rm a to . G ra c ia s a l m é to d o t o S t r i n g . u n v a lo r d e c u a lq u ie r tip o
re a liz a d o la lla m a d a , p e ro e n a lg u n a s o c a sio n e s, y c o m o ú ltim o re c u rs o , d e b e n p u e d e c o n v e rtirs e e n u n s t r i n g q u e p u e d e im p rim irse ; e n m u c h o s c a s o s e s ta
p ro c e s a rse e n m a i n . P ara h a c e r e s to ú ltim o , e l m é to d o q u e n o d e se a c a p tu r a r la tra n s fo rm a c ió n e s a u to m á tic a . A d ife re n c ia d e C y C + + . q u e tie n e n m u ltitu d de
e x c e p c ió n d e b e in d ic a r, a tra v é s d e la c lá u s u la t h r o w s . q u é e x c e p c io n e s s e v a n a o p c io n e s d e fo rm a to , la s a lid a d e J a v a se r c a li/a . c a s i e x c lu s iv a m e n te , m e d ia n te la
p ro p ag ar. E a c lá u s u la t h r o w s s e e s c rib e al fin al d e la c a b e c e ra d e l m é to d o , lu í F i­ c o n c a te n a c ió n d e S t r i n g s sin fo rm a to alg u n o .
g u ra 2 .9 m u e s tra un m é to d o que p ro p a g a las e x c e p c io n e s d e l tip o l O E x c e p t i o n U n m o d o s e n c illo d e re a liz a r la le c tu ra d e la e n tr a d a e s le e r u n a s o la lín e a , a l­
q u e e n c u e n tra , é s ta s d e b e n s e r re c o g id a s e n m a i n (y a q u e n o in c lu ire m o s u n a m a c e n á n d o la e n un o b je to d e tip o S t r i n g . p a ra lo q u e se e m p le a r e a d L i n e . E ste
c lá u s u la t h r o w s e n m a i n ) . m é to d o lee h asta q u e e n c u e n tra u n fin al d e lín e a o e l fin al d e l fich ero . L o s c a ra c te ­
re s le íd o s, s a lv o e l fin al d e línea (e n e l c a s o d e q u e se e n c u e n tre ), se d e v u e lv e n c o ­
m o u n n u e v o S t r i n g . P ara e m p le a r r e a d L i n e . s e d e b e c o n s tru ir p rim e ro u n o b je to
2.6 Entrada y salida B u f f e r e d R e a d e i soba* u n o b je to i n p u t S t r e a m R e a d e r . q u e a su v e z s e c re a p a r­
tie n d o d e S y s t e m , i n . E s to s e m u estra e n las lín e a s 8 v 9 d e la F igura 2.6. O b serv e
q u e las i O F . x c e p t i o n so n d e l tip o s ta n d a rd c h e c k e d . p o r lo q u e . e n alg u n o s casos,
L a e n tr a d a v s a lid a ( E S ) s e re a liz a e n Jav a e m p le a n d o e l p a q u e te j a v a , i o . lu í
in stru c c ió n d e b e n s e r re c o g id a s . E n m u c h a s situ a c io n e s , se p e rm ite q u e la l O E x c e p t i o n se
p ro p a g u e h a s ta u n b lo q u e c a t c h d e l m é to d o m a i n ; e s ta té c n ic a s e ilu stra e n la
i m p o r t j a v a . i o .* F ig u ra 2.9.
2.6.2 El objeto S t r i n g T o k e n i z e r tip o i n t . T o d o s lo s e m ir e s , in c lu y e n d o e l p ro d u c id o c u a n d o n o s e o b tie n e n e x a c ­
ta m e n te d o s to k e n s . s o n tr a ta d o s e n e l b lo q u e c a t c h . C o m o e s h a b itu a l, c o n un
R e c u e rd e q u e p a ra le e r u n s o lo c a rá c te r d e tip o p rim itiv o , c o m o u n i n t , s e d e b e m a y o r e s l u c r / o se p o d ría n g e n e ra r m e jo re s m e n s a je s d e e m ir.
e m p le a r r e a d L i n e p a ra le e r la lín e a y a p lic a r d e s p u é s e l m é to d o a d e c u a d o p ara P o r d e f e c to , lo s to k e n s s e sep aran m e d ia n te e s p a c io s e n b la n c o . El
g e n e ra r e l tip o p rim itiv o a p a rtir d e l s t r i n g . P a ra e l tip o i n t p o d e m o s e m p le a r S t r i n g T o k e n i z e i p u e d e c o n s tru irs e d e m o d o q u e re c o n o z c a o tro s c a ra c te re s c o ­
parselnt. m o d e lim ita d o re s , o p a ra c o n s id e ra r d ic h o s d e lim ita d o re s c o m o to k en s.
E n a lg u n o s c a s o s n o s e n c o n tra m o s c o n m á s d e u n e le m e n to e n la m ism a lín ea .
P o r e je m p lo , su p o n g a m o s q u e c a d a lín e a c o n tie n e d o s v a lo re s d e tip o i n t . Jav a
tie n e d e fin id o e l o b je to S t r i n g T o k e n i z e r q u e p e rm ite s e p a ra r e n t o k e n s un 2.6.3 Ficheros d e a c c e s o secuencial
s t r i n g . P ara u s a r lo d e b e m o s e m p le a r e l m a n d a to i m p o r t
U n a d e la s re g la s b ásicas d e J a v a e s q u e lo q u e fu n c io n a e n la E S c o n e l term inal
im port j a v a . ú t i l . * ; ta m b ié n fu n c io n a e n la E S c o n fich ero s. P ara tra b a ja r c o n un fic h e ro no c o n stru i­
m o s u n o b je to B u f f e r e d R e a d e r a p a rtir d e un I n p u t S t r e a m R e a d e r . m i h > a p artir
El e m p le o d e S t r i n g T o k e n i z e r se ilu stra e n la F ig u ra 2 . 1 0 . E n p rim e r lu g ar, d e un F i l e R e a d e r . q u e e s c re a d o a su v e z e sp e c ific a n d o e l no m b re d e un fich ero.
e n la lín e a 19 c o n s tru im o s un o b je to d e e s te tip o , a p a rtir d e l s t r i n g q u e re p re ­ E n la F ig u ra 2 . 11 s e m u e s tra un e je m p lo q u e ilu stra e s ta s id eas b á sic a s. Se
s e n ta la lín e a d e e n tra d a . E l m é to d o c o u n t T o k e n s . e n la lín e a 2 0 , d e v u e lv e e l n ú ­ tra ta d e u n p ro g r a m a q u e im p rim e e l c o n te n id o d e lo s fic h e ro s d e te x to q u e se
m e ro d e to k e n s d e l S t r i n g . E n e s te e je m p lo d e b e ría n s e r d o s. d e n o se r e rr ó n e a la
e n tra d a . E l m é to d o n e x t T o k e n d e v u e lv e e l sig u ie n te to k e n c o m o u n s t r i n g . 1 import java.io.*;
•Este m é to d o lu n / a u n a N o S u c h E l e m e n t E x c e p t i o n e n e l c a s o d e n o e n c o n tra r 2
n in g ú n to k e n . q u e re p re s e n ta u n e rr o r y p o r ta n to n o d e b e s e r re c o g id o . E n la s lí­ 3 p u b lic c la s s ContenidoFicheros
4 {
n e as 2 2 y 2 3 u sa m o s n e x t T o k e n . s e g u id o d e p a r s e l n t . p u ra o b te n e r u n v a lo r d e
5 p u b l i c s t a t i c v o id main( S t r i n g 1 ] args )
6 (
1 im port j a v a .i o . * ; 7 ií( a r g s . l e n g t h == 0 )
2 im port j a v a . ú t i l .*; 8 S y s t e m . o u t . p r i n t l n í "No s e e s p e c i f i c a r , ficheros" I;
3 9 fort int i = 0 ; i < arg s.leng th; )
4 p u b l i c c l a s s MaxTest 10 c o n te n id o F ich e ro t a rg s ! i 1 );
5 ( 11 1
6 p u b lic s t a t i c v o id mainl S t r i n g a r g s [ ) » 12
7 ( 13 p u b lic s t a t i c void contenidoFicherot S t r i n g nom breFichero )
8 B u f f e r e d R e a d e r i n = n e w B u í f e r e d R e a d e r ( new 14 {
9 inpu tS tream R ead er( S y ste m .in ) ); 15 FileReader elF ichero;
10 S t r i n g unaLinea; 16 BufferedReader l e c t o r = n u il;
11 StringTokenizer s t r ; 17 S t r i n g unaLinea;
18
12 i n t x;
19 S y s t e m . o u t . p r i n t l n ( " F i c h e r o : ’ * n o m b r e F ic h e r o );
13 i n t y;
20 try
14
15 S y s t e m . o u t . p r í n t l n t " I n t r o d u z c a 2 l n t s e n u n a mi s ma
21 {
22 e l F i c h e r o = new F i l e R e a d e r ( n o m b r e F i c h e r o i ;
línea: * ) ;
23 l e c t o r = new B u f f e r e d R e a d e r ( e l F i c h e r o ) ;
16 try
24 w h i l e ( ( u n a L i n e a = l e c t o r . r e a d L i n e I > ) != n u i l )
17 { 25 S y s te m .o u t .p r i n t ln t unaLinea );
18 u n a L i n e a = i n . r e a d L i n e t »; 26 )
19 s t r - new S t r i n g T o k e n i z e r ! u n a L i n e a ); 27 catcht Exception e )
20 i £ Cs t r . c o u n t T o k e n s t ) != 2 ) 28 ( System .out.printlnt e I; 1
21 t h r o w new N u m b e r F o r m a tE x c e p tio n t ); 29
22 x = I n t e g e r . p a r s e l n t ( s t r .n e x t T o k e n ( ) ); 30 // cie rre del fichero
23 y a I n t e g e r . p a r s e l n t ( s t r . n e x t T o k e n ( > ); 31 try
24 S y s t e m . o u t . p r i n c l n t " Ma x : " * M a t h . m a x t x , y ) ); 32 <
25 33 iftlecto r nuil )
26 c a tc h t Exception e ) 34 lector.cióset );
27 {S y s te m . p r r . p r i n t l n ( “E r r o r : s e n e c e s i t a n dos 35 )
enteros* ); ) 36 c a t c h t lOExcept ion e I ( )
28 ) 37 )
29 ) 38 )
Figura 2.10 P r o g r a m a q u e m u e s tr a el t r o c e o d e c a d e n a s d e c a r a c t e r e s . Flauta 2.11 P i o a i a m o a u e im o rim e e l c o n t e n i d o d e u n fic h e ro .
in d iq u e n e n la lín e a d e c o m a n d o s . L a ru tin a m a i n s im p le m e n te re c o g e lo s a rg u ­ Elementos del juego
m e n to s d e la lín e a d e c o m a n d o s , p a sa n d o c a d a u n o a c o n t e n i d o F i c h e r o . E n
c o n t e n i d o F i c h e r o se c o n s tru y e e l o b je to F i l e R e a d e r e n la lín e a 2 2 . q u e se a g r e g a d o C o le c c ió n d e o b je to s a lm a c e n a d o s e n la m is m a u n id ad .
e m p le a p a ra c re a r e l o b je to B u f f e r e d R e a d e r - l e c t o r - e n la lín e a 2 3 . A p a rtir a r g u m e n t o d e la lín e a d e c o m a n d o s E m p le a d o c o m o p a rá m e tro d e l m éto d o
d e e s te p u n to la le c tu ra e s ig u al a la y a e x p lic a d a .
main.
D e sp u é s d e te rm in a r c o n u n fic h e ro , d e b e m o s c e rr a rlo , y a q u e d e o tro m o d o a t r i b u t o i « n g t h U s a d o p a ra c o n o c e r la lo n g itu d d e un vector,
p o d ría m o s q u e d a rn o s sin c a n a le s . O b se rv e q u e e s to n o p u e d e h a c erse a l fin a l del b lo q u e c a t c h S e e m p le a p a ra e l p ro c e s a m ie n to d e e x c e p c io n e s,
b lo q u e t r y . p u es u n a e x c e p c ió n c a u s a r ía la sa lid a riel hl«K|ue p re m a tu ra m e n te . Hn
b lo q u e t r y C o m p re n d e e l c ó d ig o q u e p u e d e g e n e ra r u n a e x c e p c ió n .
c o n se c u e n c ia , c e rra m o s e l fic h e ro tr a s la s e c u e n c ia t r y / c a t c h . C o m o ti*dos los
B u f f e r e d R e a d e r S e e m p le a p a ra e l p ro c e s a m ie n to lín e a a lín e a d e la e n tra d a ,
e rro re s re c u p e ra b le s e s tá n in c lu id o s e n F x c e p t i o n . n o e s n e c e sa ria u n a c lá u s u la
c o n c a te n a c ió n d e c a d e n a s R e a liz a d a a tra v é s d e lo s o p e ra d o re s * y * .
f i n a l l y . E sta m o s s e g u ro s d e a lc a n z a r la in s tru c c ió n d e c ie r re d e fic h e ro , p o r si
c o n s tr u c c ió n P ara lo s o b je to s s e e fe c tú a m e d ia n te la p a la b ra re s e rv a d a n e w .
hay m ás tra b a jo q u e hacer.
e n t r a d a y s a lid a ( E /S í Im p lcm en lad u e n e l p a q u e te j a v a . i o .
L a s a lid a c o n fo rm a to e s sim ila r a la e n tra d a c o n fo rm a to . C o m o n o la u sa re ­
e q u a l s S e e m p le a p a ra c o m p r o b a r si lo s v a lo re s d e d o s o b je to s a lm a c e n a d o s son
m o s e n e s te te x to , re m itim o s a l le c to r a c u a lq u ie r re fe re n c ia d e J a v a si d e s e a c o n o ­
ig u ales.
c e r lo s d e ta lle s d e la m ism a.
E r r o r E x c e p c ió n irrecu p erab le.
e x c e p c ió n d e l tip o s ta n d a r d c h e c k e d D e b e se r re c o g id a o d e c la ra d a e x p líc ita ­
m en te e n la c lá u s u la t h r o w s d e l m é to d o c o rre sp o n d ie n te ,
Resumen e x c e p c i ó n r u n - t i m e N o n e c e s ita s e r d e c la r a d a . E je m p lo s n o ta b le s so n
A rith in e tic E x c e p tio n y N u llP o ir .te r E x c e p tio n .
E n e s te c a p ítu lo h e m o s e s tu d ia d o lo s tip o s re fe re n c ia . U n a re fe re n c ia e s u n a v a ria ­
e x c e p c ió n S irv e p a ra d e te c ta r s itu a c io n e s e x c e p c io n a le s tales c o m o e rro re s,
ble q u e a lm a c e n a , o b ie n u n a d ire c c ió n d e m e m o ria d o n d e se a lm a c e n a u n o b je to ,
e x p a n s ió n d in á m ic a d e v e c to r e s P e rm ite a u m e n ta r e l ta m a ñ o d e lo s v e c to re s
o b ie n u n a re fe re n c ia e sp e c ia l n u l 1 . S ó lo p u e d e n re fe re n c ia rs e lo s o b je to s , a u n q u e
c u a n d o e llo s e a p reciso.
un o b je to p u e d e se r re fe re n e ia d o p o r m á s d e u n a v a ria b le . C u a n d o d o s re fe re n c ia s
F i l e R e a d o r E m p le a d o c u a n d o la e n tra d a s e e fe c tú a p o r fichero,
so n c o m p a ra d a s v ía = =. e l re s u lta d o e s t r u e si a m b a s re fe re n c ia s a p u n ta n al m is ­
f i n a l l y S e e je c u ta s ie m p re a n te s d e s a lir d e u n b lo q u e t r y / c a c c h .
m o o b je to . D e fo rm a sim ila r. = h a c e q u e u n a v a ria b le re fe re n c ia a p u n te a o tro o b ­
in m u ta b l e Se d ic e d e u n o b je to q u e n o p u e d e c a m b ia r d e e sta d o . P o r e je m p lo , los
je to L a s re fe re n c ia s p u e d e n m a n ip u la rs e c o n m u y p o c a s o p e ra c io n e s . L a m á s im ­
p o rta n te e s la re p re se n ta d a p o r e l o p e ra d o r p u n to , q u e p e rm ite la s e le c c ió n d e un s t r i n g * s o n in m u tab les,
j a v a . i o P a q u e te q u e d e b e se r im p o rta d o p a ra p ro d u c ir c u a lq u ie r s a lid a n o triv ial
m é to d o d e u n a c la s e , o b ie n el a c c e s o a m i s a trib u to s in te rn o s.
D e b id o a q u e e n J a v a s ó lo e x is te n o c h o tip o s p rim itiv o s , c a s i c u a lq u ie r c o s a es ja v a .ú til P a q u e te q u e d e b e se r im p o r ta d o p a ra p o d e r e m p le a r e l o b je to
un o b je to a c c e sib le a tra v é s d e u n a re fe re n c ia . F.sto in c lu y e las c a d e n a s d e c a ra c te ­ S t r in g T o k e n iz e r.

res. lo s v e c to re s, lo s o b je to s d e la c la s e E x c e p t i o n . lo s c a n a le s d e e n tra d a y s a li­ l i z q y l d e r V a ria b le s e m p le a d a s p a ra in d ic a r lo s la d o s iz q u ie rd o y d e re c h o , re s ­

d a ile d a to s y e l S t r i n g T o k e n i r . e r . p ec tiv a m en te.


L l s t r i n g e s u n tip o re fe re n c ia e sp e c ia l p u e s s o b r e e l m is m o e s tá n d e fin id o s m é t o d o l e n g t h U s a d o p a ra c o n o c e r la lo n g itu d d e u n a c a d e n a d e c a racteres,

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:

• C ó m o u sa J a s a las c la s e s p a ra c o n s e g u ir e n tiip s u lm io n y iH u lla n iirn to tlt


in fo rm a c ió n .
• C ó m o se im p le m c n ta n y s e d o c u m e n ta n d e fo rm a a u to m á tic a las c la se s
• C ó m o se a g ru p a n las c la s e s e n p a q u e te s.

3.1 ¿Q u é es la program ación orientada


a objetos?

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.

-UiOU P ara e s c r ib ir u n c o n s tru c to r, p ro p o rc io n a m o s u n m é to d o c o n e l m is m o n o m b re


q u e la c la s e y sin re s u lta d o . E n la F ig u ra 3 . 6 h a y d o s c o n stru c to re s: u n o c o m ie n z a
p u b lic J e tC al 1 0
e n l a lín e a 7 v e l o tro e n la lín e a 15. U s a n d o e s to s c o n s tru c to re s , p o d e m o s c o n s ­
tru ir o b je to s F e c h a d e las d o s fo rm a s sig u ie n te s:
M e th o d g

•mi Fecha í 1 = new Fecha < ) ;


p u b lic ia c read ()
F e c h a £2 = n e w F e c h a ! 1 5 , 4 . 1998 ) ;

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> »

3.4.2 Métodos modificadores y d e ac ce so


* - l h « n e * « f lo .i
Jl-BL Doojwr* Ocre a? ¿
L o s a trib u to s d e u n a c la s e s e d e c la ra n n o rm a lm e n te c o m o p riv a d o s. E n c o n s e ­
Figuro 3.5 Sa lid o d e tavadoc p a ra ta Figura 3.4. c u e n c ia . las ru tin a s q u e n o p e rte n e c e n a la c la s e n o p u e d e n a c c e d e r d ire c ta m e n te a
ello s. S in e m b a rg o , a lg u n a s v e c e s n o s g u sta ría e x a m in a r e l v a lo r d e u n a trib u to , e U C l a s e Fecha b á s i c a p a r a I l u s t r a r a lg u n a s c a r á c t e r í s t i c a s de
in c lu s o p o d ría m o s q u e re r c a m b ia rlo d ire c ta m e n te . / / J a v a s i n com probaciones de e r r o r n i c o m e n ta r io s javadoc
U n a a lte rn a tiv a p a ra h a c e r e s to e s d e c la ra r lo s a trib u to s c o m o p ú b lic o s. É sta
p u b l i c c l a s s Fecha
e s . s in e m b a rg o , u n a e le c c ió n p o b re , p u e s v io la e l p rin c ip io d e o c u lta m ie n to d e in-
{
fo rm a c ió n . Un su lu g ar p o d e m o s p ro p o rc io n a r m é to d o s p a ra e x a m in a r y c a m b ia r // C o n stru cto r de c ero parám etros
c a d a atrib u to . U n m é to d o q u e e x a m in a p e ro n o c a m b ia e l e s ta d o d e un o b je to e s public Fecha»! )
un m é to d o d e a c c e s o . U n m é to d o q u e c a m b ia e l e s ta d o e s u n m o d ific a d o r (p o rq u e (
dia = 1;
m o d ific a e l e s ta d o d e l o b jeto ).
me s = 1 ;
C a so s p a rtic u la re s d e m é to d o s d e a c c e s o y m o d ific a d o re s tra b a ja n so la m e n te a n y o ■ 1998;
so b re u n a trib u to . E s to s m é to d o s d e a c c e so u su a lm e n te te n d rá n n o m b re s q u e e m ­
p ie z a n p o r o b t e n e r * ’, c o m o o b t e n e r M e s , m ie n tra s q u e lo s m o d ific a d o re s te n ­
14 // C onstructor de tr e s parám etros
d rá n n o m b re s q u e c o m ie n z a n p o r c a m b i a r 4 , c o m o c a m b i a r M e s .
15 public Fecha I in t e lD ia , i n t elM es. int elAnyo )
L a v e n ta ja d e u sa r u n m o d ific a d o r e s q u e d e e s ta fo rm a p o d e m o s a s e g u ra r que 16
los c a m b io s re a liz a d o s e n e l e s ta d o d e l o b je to so n c o n siste n te s. A sí. u n m o d ific a ­ 17 d ia = elD ia;
d o r q u e c a m b ie e l a trib u lo d í a e n un o b je to F e c h a n o s g a ra n tiz a rá q u e so la m e n te 18 mes ■ elM es;
s e g e n e ra n fe c h a s legales. 19 anyo = elAnyo;
20
21
22 // Devuelve t r u e s i d o s v a l o r e s so n ig u a le s
3.4.3 S a l id a y t o S t r i n g 23 public boolean e q u a ls ( O bject lder I
24
25 if< ! ( ld e r in s t a n c o o i Fecha ) 1
N o rm a lm e n te q u e re m o s m o s tra r e l e s ta d o d e u n o b je to u s a n d o p r i n t . E s to se 26 re tu rn false;
c o n sig u e d e fin ie n d o u n m é to d o t o S t r i n g 5 e n la c la s e . D ic h o m é to d o d e v u e lv e 27 Fecha IderFecha = < Fecha ) ld e r;
un v a lo r d e tip o S t r i n g a p to p a ra p ro d u c ir u n a s a lid a . C o m o e je m p lo , e n la F ig u ­ 2o r e t u r n I d e r F e c h a . d i a = - d i a && I d e r F e c h a . m e s == me s ue.
29 I d e r F e c h a . a n y o == a n y o ;
ra 3 . 6 s e m u e s tra u n a im p le m e n ta c ió n b á s i c a d e l m é to d o t o S t r i n g p a ra la c la s e 30
Fecha. 31
32 / / C onversión a S trin g
33 public S tring to S trin g ( )
34
3 .4 .4 e q u a ls 35 return dia * '/* * r a es ♦ ■ / ’ • anyo;
36
37
El m é to d o e q u a l s se u s a p a ra c o m p r o b a r si d o s re fe re n c ia s d e s c rib e n e l m ism o
38 / / A tributos
v a lo r. L a s ig n a tu ra e s s ie m p re la sig u ie n te
39 p rív a te int dia;
40 p r i v a t e i n t mes;
p u b lic boolean e q u a ls ( O bject ld e r ) 41 p r í v a t e i n t anyo;
42 }

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

C u a n d o se u s a e l c o m a n d o ja v a p a ra e je c u ta r e l in té rp re te , se lla m a a l m é to d o im port j a v a .ú t i l . D ate;


m a i n d e la c la s e d e l f ic h e ro re fe re n c ia d o p o r e l c o m a n d o . P o r ta n to , c a d a c la s e i m p o r t j a v a . i o . *;
p u e d e te n e r su p ro p ia fu n c ió n m a i r . sin n in g ú n p ro b le m a . S in e m b a rg o , a u n q u e a s í
se p u e d e p ro b a r la fu n c io n a lid a d , c o lo c a r m a i n e n u n a c la s e p ro p o rc io n a a e sta p o d e m o s u sa r
fu n c ió n m á s v is ib ilid a d q u e la q u e e s ta ría p e rm itid a e n g e n e ra l. P o r ta n to , lla m a ­
d as d e m a i n a m é to d o s n o p ú b lic o s te n d rá n é x ito e n la p ru e b a , a u n q u e s e rá n ile g a ­ D a te hoy = new D a te I ) ;
le s e n un e n to rn o m á s g e n e ra l. F i l e R e a d e r e l F i c h e r o = new F i l e R e a d e r ( nom bre ) ;

E l u so d e las d ire c tiv a s i m p o r t a h o rra e sc ritu ra . Y p u e s to q u e s e a h o rra m á s El us


3.5 Paquetes c o n la s e g u n d a fo rm a , la v e rá u s a d a m u y a m e n u d o . S in e m b a rg o , las d ire c tiv a s de k
im p
i m p o r t tie n e n d o s d e sv e n ta ja s . E n p rim e r lu g a r, la a b re v ia tu ra h ace d ifíc il sab er,
L o s p a q u e te s se u s a n p a ra o rg a n iz a r u n a se rie d e c la s e s re la c io n a d a s . C a d a p a q u e ­ DfOC
a p a rtir d e la le c tu ra d e l c ó d ig o , q u é c la s e s e e s tá u s a n d o c u a n d o h a y v a ria s d ir e c ­ der
te c o n s ta d e un c o n ju n to d e c la s e s. D o s c la s e s e n u n m ism o p a q u e te tie n e n re s tric ­ tiv a s i m p o r t . A d e m á s , la s e g u n d a fo rm a p u e d e p e rm itir a b re v ia tu ra s p a ra c la se s
c io n e s lig e ra m e n te m e n o re s d e v is ib ilid a d e n tre e lla s q u e si e s tu v ie ra n e n p aq u e te s q u e n o se p re te n d ía a b re v ia r, e in tro d u c ir c o n flic to s d e n o m b re s q u e d e b e rá n se r
d istin to s. re s u e llo s e s c rib ie n d o n o m b re s d e c la s e c o m p le ta m e n te c u a lific a d o s.
J a v a p ro p o rc io n a v a rio s p a q u e te s p re d e fin id o s , e n tr e e llo s j a v a . a p p l e t . S u p o n g a q u e u sam o s
j a v a . awt. j a v a . i o . j a v a . l a n g y j a v a . ú t i l . E l p a q u e te j a v a . l a n g in ­
c lu y e . e n tr e o tra s , las c la s e s i n t e g e r . M a t h . S t r i n g y S y s t e m . A lg u n a s c la se s
i m p o r t j a v a . u t i 1. * I I P a q u e t e d e 1i b r e r i a
d e l p a q u e te j a v a . ú t i l s o n D a t e . R a n d o m y S t r i n g T o k e n i z e r . E l p a q u e te
im p o rt ú t i l . *; / / Paquete d e fin id o por e l usuario
j a v a , i o se u s a p a ra la E S e in c lu y e la s c la s e s d e c a n a le s v is ta s e n la S e cc ió n
2 .6 . E l p a q u e te j a v a . a p p l e t in c lu y e c la s e s u sa d a s p a ra d is e ñ a r a p p le ts. El p a ­
c o n la in te n c ió n d e im p o rta r la c la s e j a v a . ú t i l . R a n d o m y u n p a q u e te q u e h e ­
q u e te j a v a . a w t in c lu y e c la s e s q u e fo rm a n e l A b stra e ! W in d o u T o o lk it'’. q u e se
m os e s c rito n o so tro s m ism o s. E n to n c e s, si tu v ié ra m o s n u e stra p ro p ia c la s e D a t e ,
u s a p a ra g e n e ra r in te rfa c e s g rá fic a s d e u su ario .
la d ire c tiv a i m p o r t g e n e ra ría u n c o n flic to c o n j a v a . ú t i l . D a t e , d e fo rm a q u e
U n a c la s e c e n u n p a q u e te P se e s p e c ific a c o m o p . c . P o r e je m p lo . p«xlem os
p a ra re fe rirn o s a e sta s c la s e s d e b e ría m o s u tiliz a r lo s n o m b re s to ta lm e n te c u a lific a ­
te n e r u n o b je to D a t e c o n s tru id o c o n la fe c h a y h o ra a c tu a le s c o m o e s ta d o inicial
d o s. Y lo q u e e s m á s . si e s ta m o s u sa n d o u n a c la s e d e u n o d e e sto s p a q u e te s, no
u sa n d o
sa b re m o s si p ro c e d e d e l p a q u e te d e lib re ría o d e n u e s tro p ro p io p a q u e te . H a b ría ­
m o s e v ita d o e s e p ro b le m a si h u b ié ra m o s u s a d o la p rim e ra fo rm a:
J a v a , ú t i l . D a t e h o y = new j a v a , ú t i l . D a t o ( ) ;

O b se rv e q u e in c lu y e n d o u n n o m b re d e p a q u e te e v ita m o s c o n flic to s c o n c la s e s i m p o r t j a v a . ú t i l . Random;


n o m b ra d a s d e fo rm a id é n tic a e n o tr o s p aq u e te s.
L a s d ire c tiv a s i m p o r t d e b e n a p a re c e r a n tes d e l c o m ie n /o d e la d e c la ra c ió n de El pe
u n a c la se . V im o s un e je m p lo e n la F ig u ra 2 .1 1. A d em ás, e l p a q u e te j a v a . l a n g se j av
se ln
3.5.1 La directiva im p o r t im p o rta d e fo rm a a u to m á tic a . Por e llo p o d e m o s u sa r a b re v ia tu ra s c o m o M a t h . m.ix.
oute
I n t e g e r . p a r s e l n t . S y s t e m . o u t . etc.
U s a r u n n o m b re c o m p le to c o n e l p a q u e te y la c la s e p u e d e re s u lta r p e sa d o . P a ra
e v ita r e sto , u sa m o s la d ire c tiv a i m p o r t .

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

3.5.3 La variable de entorno classpath d e c la ra c o n la p a la b ra p u b l i c . e n to n c e s so la m e n te las d e m á s c la s e s d e l p a q u e te


p u e d e n a c c e d e r a e lla : se tr a ta d e u n a c la s e a m is to s a . E n la P arte IV v e re m o s q u e
la s c la s e s a m is to s a s s e p u e d e n u s a r sin v io la r p o r e llo lo s p rin c ip io s d e o cu lta-
L o s p a q u e te s s e b u scan e n lo s lu g a re s in d ic a d o s p o r la v a ria b le CLASSPATH. ¿ Q u é
m ie n to d e in fo rm a c ió n . D e h e c h o hay s itu a c io n e s e n las q u e las c la s e s a m isto sa s
s ig n ific a e s to ? A c o n tin u a c ió n s e m u e s tra n d o s p o sib le s a s ig n a c io n e s d e v a lo re s a
p u e d e n se rn o s d e m u c h a u tilid ad .
la v a ria b le classpath . la p rim e ra p a ra u n s is te m a W in d o w s 9 5 . y la se g u n d a
I o d a s la c la s e s q u e n o fo rm a n p a rte d e u n p a q u e te , p e ro se p u e d e n a lc a n z a r a
p a ra u n s iste m a U nix:
tr u \é s d e la v a ria b le CLASSPATH. se c o n s id e ra n p a rte d e u n m ism o p a q u e te p o r
d efecto . C o m o re s u lta d o e l a c c e s o a m isto so se a p lic a e n tre tcxlas ellas. É sta e s la ra ­
SET C L A S S P A T H - . ; C : \ c a f e \ j a v a \ l i b \ z ó n p o i la q u e la v isib ilid ad n o q u e d a a fe c ta d a si se o m ite el m o d ific a d o r p u b l i c
s e t e n v CLASSPATH . : S H O M E / j a v a : / u s r / j a v a / 1 i b e n la s c la s e s q u e n o p e rte n e c e n a n in g ú n p a q u e te . S in e m b a rg o , e s te u so del a c c e ­
so a m isto so e s b a sta n te p o b re. L \ ite e l a c c e s o a m is to s o e x c e p to e n c a s o s c o m o los
E n a m b o s c a so s , la v a ria b le c l a s s p a t h lista lo s d ire c to rio s t o fic h e ro s c o m ­ q u e a p a re c e n e n a lg u n a s d e las im p le m e n ta e io n e s d e e s tru c tu r a s d e d a to s d e la
p rim id o s) q u e c o n tie n e n Ion fic h e ro s d e la s c la s e s d e lo s p a q u e te s. P o r e je m p lo , si P a rte IV.
3.5.5 Com pilación separada P u e sto q u e e sta m o s tra n sfirie n d o d e u n a c u e n ta a e lla m ism a , n o d e b e ría h a b e r c a m ­
b io e n d ic h a cu en ta . S in e m b a rg o , la ú ltim a in stru c c ió n e n t r a n s f e r e n c i a F i n a l
C u a n d o u n p ro g ra m a c o n s ta d e v ario s fic h e ro s . j a v a , c a d a fic h e ro se d e b e c o m p i­
p ro v o c a q u e la c u e n ta se v acíe . U n a fo rm a d e e v ita r e s to e s u s a r u n te st d e alias:
lar p o r se p arad o . N o rm alm en te c o lo c a m o s c a d a c la s e e n su fic h e ro . j a v a c o rre s­
p o n d ien te. C o m o resu ltad o , o b te n e m o s u n a c o le c c ió n d e fic h e ro s . c l a s s . C o m o se // T ra n s fe rir todo el d inero de lder a la cuenta a ctu al
h a m e n c io n a d o a n te s , c u a n d o se e sc rib e e l c o m a n d o ja v a p a ra e je c u ta r el in térp re te, p u b lic v o id t r a n s f e r e n c ia F in a l < C uenta ld e r )
se lla m a al m é to d o m a i n d e la c la s e situ a d a e n e l fic h e ro al q u e s e h ac e re fe re n c ia (
e n e l c o m a n d o . L os fich ero s fuente e n J a v a se p u ed en c o m p ila r e n c u a lq u ie r o rd en , i f < t h i s == l d e r ) / / T est de a lia s
siem p re q u e lo s fic h ero s . c l a s s e s té n d isp o n ib le s c u a n d o se e je c u te e l intérprete. retu rn ;
d o l a r e s *= l d e r . d o l a r e s ;
l d e r . d o l a r e s - 0;
3.6 Construcciones ad icio nales
T re s p a la b ra s c la s e a d ic io n a le s so n c h i s , i n s t a n c e o f y s t a t i c . L a p ala b ra
t h i s tie n e v a rio s u s o s e n J a v a ; d o s d e e llo s s e e s tu d ia e n e s ta se c c ió n . L a p a la b ra
3.6.2 La abreviatura t h i s para constructores
i n s t a n c e o f ta m b ié n tie n e v a rio s u s o s ; a q u í la u sa re m o s p a ra a s e g u ra r q u e u n a
c o n v e rs ió n d e tip o p u e d e te n e r é x ito . L a p a l a b r a s t a t i c tie n e ta m b ié n v ario s M u c h a s c la s e s tie n e n v a rio s c o n s tru c to re s q u e se c o m p o rta n d e u n a fo rm a sim ilar.
u so s. Y a h e m o s e s tu d ia d o lo s m é to d o s e s tá tic o s . L sta s e c c ió n c u b re lo s a trib u to s P o d e m o s u s a r t h i s d e n tro d e u n c o n s tru c to r p a ra lla m a r a o tro d e lo s c o n stru c to -
e stá tic o s y e l in ic ia !iz a d o r e stá tic o .
re s d e c la se . U na a lte rn a tiv a al c o n s tru c to r d e c e ro p a rá m e tro s F e c h a d e la F ig u ­
ra 3 .6 s e r ía
3.6.1 La referencia t h i s
p ublic Fecha( )
F.l p rim e r u so d e t h i s e s c o m o re fe re n c ia a l o b je to a c tu a l. P ie n se e n la re fe re n c ia <
t h i s c o m o e n u n d is p o s itiv o d e o rie n ta c ió n q u e . e n c u a lq u ie r in sta n te d e tiem p o , t h i s ( 1. 1 , 1 9 9 8 ) ; / / L lam a a l c o n s t r u c t o r d e t r e s p a r á m e t r o s
le d ic e d ó n d e e s tá . U n u s o im p o rta n te d e la re fe re n c ia t h i s e s e l m a n e jo «leí c a s o )
e sp e c ia l d e au to a sic ita c ió n .
U n e je m p lo d e e llo e s un p ro g ra m a q u e c o p ia u n fic h e ro e n o tro . U n a lg o ritm o S o n p o sib le s u so s m ás co m p lic a d o s, p ero sie m p re la lla m a d a a t h i s d e b e se r la
n o rm a l c o m ie n z a b o rra n d o e l fic h e ro d e stin o . S i n o s e re a liz a n in g u n a c o m p r o b a ­ p rim e ra in stru c c ió n e n e l c o n stru c to r, d e sp u é s p u ede a p a re c e r otras instrucciones.
c ió n p a ra a se g u ra r q u e lo s fic h e ro s fu e n te y d e s tin o so n d e h e c h o d is tin to s, e n to n ­
c e s p o d ría b o rra rse e l f ic h e ro fu e n te — d ifíc ilm e n te u n a c a ra c te rís tic a d e seab le.
3.6.3 El operador instanceof
C u a n d o s e m a n e ja n d o s o b je to s, d e fo rm a q u e so b re u n o d e e llo s s e e s c rib e u n v a ­
lo r y d e l o tro s e le e a lg ú n v a lo r, d e b e ría m o s c o m p r o b a r p rim e ro si n o s e n c o n tra ­
E l o p e ra d o r i n s t a n c e o f lle v a a c a b o u n a c o m p r o b a c ió n e n tie m p o d e e je c u c ió n .
m o s e n e s te c a s o e s p e c ia l, q u e se c o n o c e c o m o a lia sin # .
F l re s u lta d o de
C o m o se g u n d o e je m p lo , s u p o n g a m o s q u e te n e m o s u n a c la s e C u e n t a c o n un
m é to d o t r a n s f e r e n c i a F i n a l . E ste m é to d o m u e v e to d o e l d in e ro d e u n a c u e n ta exp i n s t a n c e o f N om breClase
a o tra . E n p rin c ip io , e s u n a ru tin a se n c illa d e e sc rib ir;
e s t r u e si e x p e s u n a in sta n c ia d e N o m b r e C l a s e . y f a l s e e n c a s o c o n tra rio . Si
II T r a n s fe r ir todo e l d in ero de ld er a la cuenta a ctu al e x p e s n u i l , e l re s u lta d o e s s ie m p re f a l s e . E l o p e ra d o r i n s t a n c e o f se u s a n o r­
p u b lic v o id t r a n s f e r e n c i a F i n a l ( C uenta ld e r 1 m a lm e n te p a ra re a liz a r u n a c o n v e rs ió n d e tip o y e s t r u e c u a n d o é s ta p u e d e lle ­
( v a rse a c a b o c o n éx ito .
d o l a r e s ♦= l d e r . d o l a r e s ;
ld er.d o lares = 0;
I
3.6.4 Atributos estáticos
S in e m b a rg o , c o n s id e re lo q u e su c e d e si h acem o s:
L o s a trib u to s e s tá tic o s s e u san c u a n d o n e c e s ita m o s q u e u n a v a ria b le e s té c o m p a r­
C uenta c u e n ta l; tid a p o r to d a s las c o m p o n e n te s d e u n a c la se . N o rm a lm e n te s e tra ta d e u n a c o n s ta n ­
C uenta cu en ta2 ; te sim b ó lic a , p e ro n o n e c e sa ria m e n te . C u a n d o u n a v a ria b le s e d e c la ra s t a t i c en
u n a c la se , se c re a u n a ú n ic a in s ta n c ia d e la v a ria b le . N o fo rm a p a rte d e n in g u n a
cuenta2 = c u e n ta l; in s ta n c ia d e la c la s e . F n su lu g a r, se c o m p o rta c o m o u n a v a ria b le g lo b al p e r o con
c u e n t a l . t r a n s f e r e n c i a F i n a l { c u e n t a 2 ); e l á m b ito d e la cla se . E n o tr a s p a la b ra s, e n la d e c la ra c ió n
pu b l i c c í a s » Ejem plo U n a a lte rn a tiv a e s u sa r u n in ic u iliz u d o r e stá tic o . E n la F ig u ra 3 .9 se m u estra
( un e je m p lo , d o n d e e l m ic ia li/a d o r se e x tie n d e d e la lín e a 5 a la 9. la i fo rm a m á s
p r i v a t e i n t x; se n c illa d e m ic ia li/a d o r e s tá tic o c o n s is te e n c o lo c a r e l c ó d ig o d e la ¿m e ta liz a c ió n
p r í v a t e s t a t i c i n t y; d e lo s a trib u to s e s tá tic o s e n u n b lo q u e p re c e d id o p o r la p a la b ra c la v e s t a t i c . El
m ic ia liz a d o r e s tá tic o d e b e a p a re c e r a c o n tin u a c ió n d e la d e c la ra c ió n d e l a trib u to
está tic o .
c a d a o b je to E j e m p l o a lm a c e n a s u p ro p ia x . p e ro h a y s o la m e n te u n a y c o m p a r ­
tida. 1 p u b lic c la n » R ase»»
U n u s o c o m ú n d e u n a trib u to e s tá tic o e s p a ra re p re se n ta r u n a c o n sta n te . Por 2 <
e je m p lo , la c la s e I n t e g e r d e fin e e l v a lo r MAX v a l u é c o m o 3 prívate s t a t i c double raicesC uadradas( I * new d o u b l e l 100 1
4
p u b l i c f i n a l B t a t i c i n t MAX_VALUE = 2 1 4 7 4 8 3 6 4 7 ; 5 static
6

S i una c o n sta n te n o lu c ra u n a trib u to e stá tic o , e n to n c e s c a d a in sta n c ia d e i n t e g e r 7 :or( i n t i ■ 0; i < r a i c e s C u a d r a d a s . l e n g t h ; i** 1


8 raicesC uadradas! i ] * K ath.& qrtt ( double I i »;
te n d r ía u n a tr ib u to lla m a d o MAX_VALUE. l o c u a l s u p o n d r ía u n a b s u r d o g a s to
9
d e e s p a c io E n lu g ar d e e llo . ha> u n a ú n ic a v a riab le lla m a d a MAX_VALUE. C u a l­
10
q u ie r a d e lo s m é to d o s d e i n t e g e r p u e d e a c c e d e r a e lla u s a n d o e l id e n tific a d o r 11 // R e s t o de la c la s e
J<AX_VALUE. T a m b ié n se p u e d e a c c e d e r a e lla d e s d e u n o b je to I n t e g e r u sa n d o 12 }
O b j . MAX_VALUE. c o m o c o n c u a lq u ie r o tro a trib u to . O b s e rv e q u e e s to e s tá p e rm i­
Figura 3.9 Ejem plo O e un m c o to a á o í estático.
tid o so la m e n te p o rq u e MAX_VALUE e s p ú b lic a . F in a lm e n te , se p u e d e a c c e d e r a
MAX_VALUE u s a n d o e l n o m b re d e la c la s e , c o m o e n I n t e g e r . MAX_VALUE (d e
n u e v o p e rm itid o p o r se r p ú b lic a ). E s to n o e s ta ría p e rm itid o si se tra ta ra d e u n a tri­
b u lo n o e stá tic o . Resumen
T a m b ié n sin e l c u a lific a d o r f i n a l , los a trib u io s e stá tic o s so n ú tile s . S u p o n ­
g a m o s q u e q u e re m o s lle v a r la c u e n ta del n ú m e ro d e o b je to s C e l d a E n t e r o q u e
h e m o s c o n s tru id o l .o q u e n e c e sita m o s es u n a v a ria b le e stá tic a . D e c la ra m o s e n la E n e s te c a p ítu lo s e h a n d e s c rito las c la s e s y lo s p a q u e te s d e Ja v a . L a c la s e e s el
c la s e C e l d a E n t e r o m e c a n ism o d e J a v a u tiliz a d o p a ra c re a r n u e v o s tip o s re fe re n c ia ; lo s p a q u e te s se
u san p ara a g ru p a r c la s e s sim ila re s . P a ra c ad a c la s e p o d e m o s
p r i v a t e s t a t i c i n t i n s t a n c i a s A c t i v a s = 0;
• d e fin ir la c o n s tru c c ió n d e o b je to s.
• p ro p o rc io n a r o c u lla n u e n to d e in fo rm a c ió n y a to m ic id a d , y
E n to n c e s p o d ría m o s in c re m e n ta r i n s t a r . c i a s A c t i v a s e n e l c o n s tru c to r. S in e l
• d e fin ir m é to d o s p ara m a n ip u la r o b je to s.
m o d ific a d o r s t a t i c . te n d ría m o s u n c o m p o rta m ie n to in c o rre c to , p u e s to q u e c a d a
o b je to C e l d a E n t e r o te n d ría su pn>pio a tn b u to . p o r lo q u e •. n s t a n c i a s A c t i v a s
L a s c la s e s c o n sta n d e d o s p a rte s: la e s p e c ific a c ió n y la im p le m e n ta c ió n . l-a e s ­
s e in c re m e n ta ría d e tí a I e n e l c o n stru c to r.
p e c ific a c ió n Ic d ic e a l u su a rio d e la c la s e lo q u e h ace la c la s e ; la im p le m e n ta c ió n
O b s e rv e q u e d a d o q u e un a trib u to e s tá tic o n o tie n e o b je to q u e lo c o n tro le , sin o
lo h a c e . L a im p le m e n ta c ió n fre c u e n te m e n te c o n tie n e c ó d ig o d e p ro p ie ta rio y e n
q u e e s c o m p a rtid o p o r U nías las in s ta n c ia s d e la c la s e , c u a lq u ie r m é to d o e stá tic o
alg u n o s c a s o s se d is trib u y e so la m e n te c o m o un fic h e ro . c l a a a . S in e m b a rg o , la
d e la c la s e p u e d e a c c e d e r a é l y m o d ific a rlo , si la v is ib ilid a d lo p e rm ite . U n m é to ­
e sp e c ific a c ió n e s d e c o n o c im ie n to p ú b lic o . E n J a v a , u s a n d o ja v iu lo c se p u e d e g e ­
d o e stá tic o so la m e n te p u e d e a c c e d e r a un a trib u to n o e stá tic o , q u e e s p a rte d e c a d a
n e ra r u n a e sp e c ific a c ió n q u e lista lo s m é to d o s d e la c la s e a p a rtir d e la im p lc m e n -
in sta n c ia d e la cla se , si s e p ro p o rc io n a u n o b je to c o n tro la d o r.
ta c ió n .
E l o c u lla n u e n to d e in fo rm a c ió n se p u e d e lo g ra r u s a n d o la d ire c tiv a p r i v a t e .
I.a in ic ia liz a c ió n d e lo s o b je to s e s tá c o n tro la d a p o r las fu n c io n e s c o n s tru c to ra s , y
3.6.5 Inicializadores estáticos la s c o m p o n e n te s d e l o b je to se p u e d e n e x a m in a r y m o d ific a r m e d ia n te fu n c io n e s
d e a c c e s o y fu n c io n e s m o d ific a d o ra s, re s p e c tiv a m e n te . O t o * m é to d o s au x ilia re s,
L o s a tn h u n » e s tá tic o s s e im c ia li/a n c u a n d o s e c a rg a la c la s e . A v e ces la in icia- c o m o t o S t r i n g v e q u a l » , ta m b ié n p u e d e n se r e sc rito s .
li/a c ió n e s c o m p le ja . P o r e je m p lo , su p o n g a m o s q u e n e c e s ita n * * u n v e c to r e s tá ti­ I-as c a ra c te rís tic a s e s tu d ia d a s e n e s te c a p ítu lo im p le m c n ia n lo s a s p e c to s f u n ­
c o q u e a lm a c e n a las r a íc e s c u a d ra d a s d e lo s p r i m e n * 1 0 0 e n te ro s. S e ria d e se a b le d a m e n ta le 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. E n e l sig u ie n te c a p ítu lo s e e s ­
q u e e so s v a lo re s s e c a lc u la ra n a u to m á tic a m e n te . U n a p o sib ilid a d e s p ro p o rc io n a r tu d ia rá la h e re n c ia , la c u a l e s o tro «Ic lo s p ila re s d e la p ro g ra m a c ió n o rie n ta d a a
u n m é to d o e s tá tic o v o b lie a r a l o ro e ra m a d o r a lla m a rlo a n te s d e u s a r e l v ecto r. o b jeto s.
p ro g ra m a c ió n b a s a d a en o b je to s U sa las c a ra c te rís tic a s d e la e n c a p s u la c ió n y el
Elementos del juego
o c u lta m ie n to d e in fo rm a c ió n d e lo s o b je to s p e ro n o u s a la h e re n c ia ,
a cce so a m isto so L a s c o m p o n e n te s q u e n o te n g a n m o d ific a d o re s d e v isib ilid a d p ro g ra m a c ió n o rie n ta d a a o b je to s S e d is tin g u e d e la p ro g ra m a c ió n b a sa d a en
so la m e n te p o d rá n se r a c c e d id a s d e s d e lo s m é to d o s d e las c la s e s d e l m ism o p a ­ o b je to s e n q u e h a c e u so d e la h e re n c ia p a ra fo rm a r je r a rq u ía s d e c lases,
quete. p ú b lic o C o m p o n e n te q u e e s v is ib le p a ra lo s m é to d o s q u e 110 p e rte n e c e n a la c la se ,
a lia s in g C a so e sp e c ia l e n e l q u e e l m ism o o b je to a p a re c e c o n m á s d e un rol. re fe re n cia t h i s R e fe re n c ia a l o b je to a ctu a l. S e p u e d e u s a r p a ra e n v ia r e l o b je to
a t r ib u t o C o m p o n e n te d e lo s o b je to s d e u n a c la s e q u e a lm a c e n a d ato s, a c tu a l, c o m o u n to d o , a o tro m étodo,
a trib u to e stá tico E se n c ia lm e n te e s u n a v a ria b le g lo b a l c o n á m b ito d e cla se , u n id a d a tó m ic a E n re la c ió n a un o b je to , s u s p a rte s n o p u e d e n s e r d is e c c io n a d a s
cla se C o n sta d e a trib u to s y m é to d o s q u e se a p lic a n a in s ta n c ia s d e la clase, p o r lo s u su a rio s g e n e ra le s d e l o b je to ,
d a s e a m isto sa C la se n o p ú b lic a a la q u e so la m e n te p u e d e n a c c e d e r o tra s c la se s v a r ia b le c l a s s p a t h E sp e c ific a los d ire c to rio s y fic h e ro s d o n d e s e d e b e b u sc a r
d e l m ism o p a q u ete . p a ra e n c o n tr a r las c lases.
c o m p ila c ió n s e p a r a d a C a d a c la s e s e c o m p ila p o r se p a rad o , e n c u a lq u ie r o rd en ,
c o n s tru c to r N o s d ic e c ó m o s e d e c la ra e in ic ia li/a u n o b je to . E l c o n s tru c to r p o r
d e fe c to e s u n a in ic ia liz a c ió n p o r d e fe c to c o m p o n e n te a c o m p o n e n te , tal q u e
Errores com unes
lo s a trib u to s d e tip o p rim itiv o se in ic ia li/a n a c e ro y lo s a trib u to s re fe re n c ia a 1. N o se p u e d e a c c e d e r a las c o m p o n e n te s p riv a d a s d e s d e f u e r a d e la cla se .
nul 1. R e c u e rd e q u e . p o r d e fe c to , las c o m p o n e n te s d e la c la s e s o n a m isto sa s, p o r
d ir e c t iv a im p o r t S e u s a p a ra p ro p o rc io n a r a b re v ia tu ra s d e n o m b re s d e c la s e to ­ lo q u e so n v isib les so la m e n te d e n tr o del p aq u ete .
ta lm e n te c u a lific a d o s.
2. U s e p u b l i c c l a s s e n lu g ar d e c l a s s a m e n o s q u e e s té e s c r ib ie n d o una
'e n c a p su la c ió n A g ru p a c ió n d e d a lo s y o p e ra c io n e s q u e se a p lic a n so b re e llo s p ara c la s e d e a y u d a q u e lu e g o v a y a a d e sh e c h a r.
f o r m a r un a g re g a d o , a la v e z q u e s e o c u lta la im p le m e n ta c ió n d e l a g re g a d o , 3. F l p a rá m e tro fo rm al d e e q u a l s d e b e s e r d e l tip o O b j e c t . E n c a s o c o n tr a ­
e s p e c ific a c ió n d e u n a cla se D e sc rib e su fu n c io n a lid a d , p e ro n o la im p le m e n ta ­ rio . a u n q u e e l p ro g ra m a s e c o m p ila ría c o rre c ta m e n te , hay c a s o s e n lo s que
ción. se u sa rá u n o q u a l s p o r d e f e c to (q u e s ie m p re d e v u e lv e f a l s e ) .
im p le m e n ta c ió n R e p re s e n ta lo s d e ta lle s in te rn o s d e c ó m o se s a tis fa c e n la s e sp e c i­ 4. L o s m é to d o s e s tá tic o s n o p u e d e n a c c e d e r a c o m p o n e n te s n o e s tá tic a s que
fic a c io n e s. E n lo q u e re s p e c ta a l u su a rio , la im p le m e n ta c ió n n o e s im p o rta n te , n o te n g a n u n o b je to c o n tro la d o r.
in ic ia liz a d o r e stá tico B lo q u e d e c ó d ig o q u e se u sa p a ra in ic ia liz a r los atrib u to s 5. U n e rr o r c o m ú n e s o lv id a r e l . * e n la s e g u n d a fo rm a d e e s c r ib ir u n a d i ­
e stá tic o s.
re c tiv a i m p o r t .
in s tr u c c ió n p a c k a g e In d ica q u e u n a c la s e e s m ie m b ro d e un p a q u ete . D e b e p re ­ 6. L a s c la s e s q u e fo rm a n p arle d e u n p a q u e te d e b e n c o lo c a rs e e n u n d ire c to ­
c e d e r a la d e fin ic ió n d e la cla se . rio q u e se lla m e ig u a l q u e e l p a q u e te y q u e d e b e p tx lerse a lc a n z a r a tra v é s
ja v a d o c G e n e ra a u to m á tic a m e n te d o c u m e n ta c ió n p a ra la s c la s e s, d e l a v a ria b le CLASSPATH.
lla m a d a a l c o n s tru c to r t h i s U s a d o p a ra h a c e r u n a lla m a d a a o tr o c o n s tru c to r d e 7. t h i s e s u n a re fe re n c ia fin al y n o se p u e d e m o d ific a r.
la m ism a clase.
m a r c a ja v a d o c E n tre e lla s te n e m o s G a u t h o r . 9 p a r a m . P r e t u r n y P e x c e p t i o n .
Se u s a n d e n tro d e c o m e n ta rio s ja v a d tK . En Internet
m é to d o F u n c ió n p ro p o rc io n a d a c o m o c o m p o n e n te a d ic io n a l q u e . si n o e s e stá tic a .
L o s sig u ie n te s fic h e ro s e s tá n d is p o n ib le s;
o p e ra so b re in s ta n c ia s d e la c la se ,
m éto do de a cce so M é to d o q u e e x a m in a un o b je to p e ro n o c a m b ia su e stad o , D a te .ja v a T ra d u c id o p o r F e c h a . j a v a , c o n tie n e la c la s e D a t e , tr a d u ­
m éto do e q u a l s S e p u e d e im p le m e n ta r p a ra c o m p r o b a r si d o s re fe re n c ia s d e s c ri­ c id a c o m o F e c h a e n la F ig u ra 3 .6 . S e e n c u e n tra e n e l d i ­
b e n e l m ism o v a lo r. E l p a rá m e tr o fo rm a l e s s ie m p re d e tip o O b j e c t . re c to rio C h a p te r 0 3 .
m éto do t o s t r i n g D e v u e lv e un v a lo r d e l tip o S t r i n g b a sa d o e n e l e s ta d o del K x itin g .ja v a T ra d u c id o p o r S a l i e n d o . j a v a , c o n tie n e el m é to d o
o b jeto l o n g P a u s e . tr a d u c id o p o r p a u s a L a r g a e n la F ig u ra 3.8.
m o d ific a d o r M é to d o q u e c a m b ia e l e s ta d o d e un o b je to . Se e n c u e n tra 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 por
o b je to E n tid a d c o n e s tru c tu ra y e s ta d o , p a ra e l q u e e s tá n d e fin id a s o p e ra c io n e s Soporte.
q u e p u e d e n a c c e d e r o m a n ip u la r e l estad o . I n t C e ll.ja v a T ra d u c id o p o r C e l d a E n t e r o . j a v a , c o n tie n e la c la s e
iK u lta m ie n to de in fo r m a c ió n C o n v ie rte e n in a c c e s ib le s lo s d e ta lle s d e im ple- i n t C e l l . tra d u c id a p o r C e l d a E n t e r o e n la F ig u ra 3.4. Se
m e n ta c ió n . in c lu y e n d o la s c o m p o n e n te s d e u n o b je to , e n c u e n tra e n e l d ire c to rio C h a p te rí> 3 . T am bién s e e n c u e n ­
o p e r a d o r i n a t a n c a o f C o m p ru e b a si u n a e x p re s ió n e s u n a in s ta n c ia d e una tra a llí la s a lid a p ro d u c id a p o r ja v a d o c .
c la s e . S q u a r e s .ja v a T ra d u c id a p o r R a i c e s . j a v a . c o n tie n e e l in ic ia liz a d o r
p a q u e te U s a d o p a ra o rg a n iz a r u n a c o le c c ió n d e clases. e s tá tic o d e la F ig u ra 3.9. S e e n c u e n tra e n e l d ire c to rio
p r iv a d o C o m p o n e n te n o v is ib le p a ra los m é to d o s q u e 110 p e rte n e c e n a la clase. C h a p te r 0 3 .
T e s tl n tC e l l.J a v a T ra d u c id o p o r T e s t C e l d a F . n t e r o . j a v a . c o n tie n e un a s í c o m o t o S t r i n g . e q u a l s y c o m p a i o T o (q u e se c o m p o r ta c o m o e l d e
m a i n q u e p ru e b a I n t C e l l ( c e l d a E n t e r o ) q u e se m u estra la c la s e s t r i n g ) . A se g ú re se d e q u e t o S t r i n g tra ta c o rre c ta m e n te e l c a s o
e n la F ig u ra 3 .3 . S e e n c u e n tra e n e l d ire c to rio C h a p tc r 0 3 . e n q u e e l d e n o m in a d o r e s cero.
3.12. Im p le m e n te u n a c la s e F e c h a sim p le . D e b e ría p o d e r re p re s e n ta r c u a lq u ie r
fe c h a d e s d e e l I d e e n e ro d e 1.800 a l 31 d e d ic ie m b re d e l 2 .5 0 0 ; re s ta r d o s
Ejercicios fe c h a s ; in c re m e n ta r u n a fe c h a e n un n ú m e ro d e d ía s; y c o m p a r a r d o s fe ­
c h a s u s a n d o e q u a l s y c o m p u r e T o . U n a F e c h a s e re p re s e n ta in te rn a ­
Cuestiones breves m e n te c o m o e l n ú m e ro d e d ía s a p a rtir d e una c ie r ta fe c h a d e in ic io , q u e
a q u í e s e l c o m ie n z o d e I .8 0 0 . E s to conv ie rte e n t r i \ iales lo d o s los m é to d o s
3 .1 . ¿ Q u é e s e l o c u lta m ie n to d e in fo rm a c ió n ? ¿ Q u é e s la e n c a p s u la c ió n ? ¿ C ó m o e x c e p to t o S t r i n g .
s o p o rta J a v a e s to s c o n c e p to s? I j re g la p a ra lo s a ñ o s b is ie sto s e s q u e u n a ñ o e s b is ie sto si e s d iv isib le
3 .2 . E x p liq u e las se c c io n e s p ú b lic a y p riv a d a d e u n a c la se . p o r c u a tro y n o e s d iv is ib le p o r 100 a m e n o s q u e ta m b ié n l o sea p o r 400.
3 .3 . D e sc rib a la fu n c ió n d e l co n stru cto r. P o r ta n to 1.8 0 0 . 1.9 0 0 y 2 .1 0 0 n o s o n a ñ o s b is ie s to s , p e ro e l 2 .0 0 0 s í lo es.
3 .4 . ¿ Q u é s u c e d e si una c la s e n o p ro p o rc io n a c o n stru c to re s? E l c o n s tru c to r d e b e c o m p r o b a r la v a lid e z d e la fe c h a , a l ig u al q u e d e b e h a ­
3 .5 . ¿ Q u é e s e l a c c e so a m is to s o e n u n p a q u e te ? c e rlo t o S t r i n g . L a F e c h a p o d ría n o s e r v á lid a si un in c re m e n to o d e c re ­
3 .6 . ¿ C ó m o se lle v a a c a b o la s a lid a e n u n a c la s e N o m b r e C la s e ? m e n to p ro v o c a n q u e s e s a lg a fu e ra d e l rango.
3 .7 . D e sc rib a la s d o s fo rm a s d e e s c r ib ir u n a d ire c tiv a i m p o r t q u e p erm itan U n a v e z h a d e c id id o la e s p e c ific a c ió n , p u e d e h a c e r u n a im p lc m e n la
q u e la c la s e p a u s a L a r g a s e a u sa d a sin p ro p o rc io n a r e l n o m b re d e l p a q u e ­ c ió n . L a p a rte d ifíc il e s la c o n v e rs ió n e n tr e las re p re s e n ta c io n e s in te rn a y
te S o p o r t e . e x te rn a d e l a fe c h a . A c o n tin u a c ió n se e x p lic a un p o sib le alg o ritm o .
C re e d o s a tr ib u to s e s t á ti c o s d e t i p o v e c to r . E l p r im e r v e c to r.
d i a s H a s t a P r i m e r o D e M e s . c o n te n d rá e l n ú m e ro d e d ía s h a s ta e l p rim e ro
Problemas teóricos d e c a d a m e s e n u n a ñ o n o b isiesto . L u e g o c o n tie n e 0 . 3 1 . 5 9 . 9 0 y a s í s u c e ­
s iv a m e n te . E l se g u n d o v e c to r. d i a s H a s t a l E n e r o . c o n te n d rá e l n ú m e ro
3.X. ¿ P o r q u é n o se p u e d e d e c la ra r c o m o p riv a d a s la s c la se s? d e d ía s h a s ta e l p rim e ro d e c a d a a ñ o . c o m e n z a n d o c o n p r i m e r A n y o . L u e­
3 .9 . S u p o n g a m o s q u e e l m é to d o n a i n d e la F ig u ra 3 .3 fo rm a b a p a rte d e la c l a ­ g o c o n tie n e 0 . 3 6 5 . 7 3 0 , 1.095, 1.460. 1 .8 2 6 y a s í su c e s iv a m e n te p o rq u e
se C e l d a E n t e r o . 1 .8 0 0 n o e s u n a ñ o b is ie sto , p e r o 1.804 s í l o e s. S u p ro g ra m a d e b e ría ini-
c ia liz a r e s te v e c to r u s a n d o un in ic ia li/a d o r e s tá tic o . E n to n c e s p u e d e u sa r el
a) ¿ T o d a v ía fu n c io n a ría e l p ro g ra m a ?
h) ¿ S e |x x lría q u ita r e l c o m e n ta rio a la lín e a c o m e n ta d a sin g e n e ra r un v e c to r p a ra c o n v e rtir la re p re se n ta c ió n in te rn a e n la e x te rn a .
3.13. Im p le m e n te u n a c la s e C o m p l e j o s d e n ú m e ro s c o m p le jo s . R e c u e rd e q u e
e rro r?
un n ú m e r o c o m p le jo c o n s ta d e u n a p a rte re a l y u n a im a g in a ria . S o p o rte las
m ism a s o p e ra c io n e s q u e la c la s e d e lo s ra c io n a le s , c u a n d o te n g a n sen tid o
Problemas prácticos (p o r e je m p lo c o m p a r e T o n o tie n e se n tid o ). A ñ a d a m é to d o s d e a c c e s o p ara
e x tra e r las p a n e s real e im a g in a ria .
3 .1 0 . U n c e rr o jo c o n c o m b in a c ió n tie n e la s sig u ie n te s p ro p ie d a d e s b á sic a s: la 3.14. Im p le m e n te u n a c la s e T i p o F . n t e r o q u e s o p o r te u n c o n ju n to ra z o n a b le
c o m b in a c ió n (u n a s e c u e n c ia d e tre s n ú m e ro s) e s tá o c u lta : e l c e rr o jo se d e c o n s tru c to r e s , s u m a r , r e s t a r , m u l t i p l i c a r , d i v i d i r , e q u a l s .
p u e d e a b rir p ro p o rc io n a n d o la c o m b in a c ió n : y la c o m b in a c ió n se p u e d e c o m p a r e T o y t o S t r i n g . M a n te n g a T i p o F . n t e r o c o m o un v e c to r lo su fi­
c a m b ia r, p e ro so la m e n te p o r a lg u ie n q u e c o n o c e la c o m b in a c ió n actu al. c ie n te m e n te la rg o . P ara e s ta c la s e , la o p e ra c ió n d ifíc il e s la d iv is ió n , seguí
D iseñ e u n a c la s e c o n m é to d o s p ú b lic o s a b r i r > c a m b i a r C o m b . y a trib u ­ d a d e c e r c a p o r la m u ltip lic a c ió n .
to s p riv a d o s p a ra a lm a c e n a r la c o m b in a c ió n . L a c o m b in a c ió n d e b e ría a s ig ­
n a rse e n e l c o n s tru c to r. D e sh a b ilito la c o p ia d e c e rro jo s c o n c o m b in a c ió n
Bibliografía
Prácticas d e program ación S e p u e d e e n c o n tr a r m á s in fo rm a c ió n e n las re fe re n c ia s , a l fin al d e l C a p ítu lo I

3 .1 1. E sc rib a u n a c la s e q u e im p le m e n to los n ú m e ro s ra c io n a le s . S u s a trib u to s s e ­


rá n d o s v a ria b le s d e tip o l o n g q u e a lm a c e n a rá n e l n u m e ra d o r y d e n o m in a ­
d o r. A lm a c e n e lo s n ú m e ro s ra c io n a le s e n fo rm a sim p lific a d a , c o n e l d e n o ­
m in a d o r sie m p re n o n e g a tiv o . P ro p o rc io n e un c o n ju n to ra z o n a b le d e
c o n s tru c to re s , lo s m é to d o s s u m a r , r e s t a r , m u l t i p l i c a r v d i v i d i r .
4
C A P Í T U L O

Herencia

T al y c o m o s e h a c o m e n ta d o e n e l C a p ítu lo 3. un 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 la re u tiliz a c ió n d e c ó d ig o . Ig u al q u e los
in g e n ie ro s e m p le a n re p e tid a m e n te e n m is d is e ñ o s la s m ism a s c o m p o n e n te s,
los 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 o b je to s, e n lu g ar d e im ple*
m e n ta rlo s re p e tid a m e n te . E n u n le n g u a je d e p ro g ra m a c ió n o rie n ta d o a o b je to s, el
m e c a n ism o b á s ic o d e re u tiliz a c ió n d e c ó d ig o e s la h e re n c ia . L a h e re n c ia 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 n o tra s p a la b ra s , p o d e m o s d e fin ir n u e v o s
tip o s re s trin g ie n d o (o a u m e n ta n d o ) p ro p ie d a d e s d e l tip o o rig in a l, g e n e rá n d o s e así
u n a je r a r q u ía d e c la s e s. L a h e re n c ia e s ta m b ié n e l m e c a n ism o q u e J a v a e m p le a
p a ra im p le m e n ta r m é to d o s y c la s e s g en é ric o s.
E.n e s te c a p ítu lo verem os:

• L o s p rin c ip io s g e n e ra le s d e la h e re n c ia , in c lu y e n d o e l p o lim o r fism o .


• C ó m o s e im p le m e n ta la h e re n c ia e n Java.
• C ó m o p u e d e d e riv a rs e u n a c o le c c ió n d e c la s e s a p a rtir d e u n a ú n ic a clase
ab stracta.
• lu í in te rfa z, q u e e s u n tip o e s p e c ia l d e cla se .
• C ó m o im p le m e n ta J a v a la p ro g ra m a c ió n g e n é ric a u s a n d o h e re n c ia .

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

1.a lla m a d a a p r i n t S t a c k T r a c e m u e s tra ta m b ié n u n im p o rta n te p rin c ip io de ^ I n d c x O ir tO f lI o u m b lix c r p litm

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

re fe re n c ia p o lim ó rfic a p u e d e re fc re n c ia r o b je to s d e d is tin to s tip o s. C u a n d o una N u l! l* < iin ie r E x « T « io n

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.

4.2.4 Sobrescribiendo un m étodo


4 2.3 Métodos y clases finales
L o s mét(Kl«*s d e la c la s e b a s e se so b re sc rib e n e n la c la s e d e riv a d a c o n s ó lo d e fin ir
C o m o s e h a d e s c rito a n te rio rm e n te , la c la s e d e riv a d a o b ie n s o b re sc rib e o b ie n d e ­ e n la c la s e d e riv a d a u n m é to d o c o n la m ism a sig n a tu ra . El m é to d o d e la c la s e d e r i­
ja in ta c to s lo s m é to d o s d e la c la s e b a se . E n m u c h o s c a s o s , e s tá c la r o q u e u n d e te r­ v a d a d e b e te n e r e l m is m o tip o d e l r e to m o y n o p u e d e a ñ a d ir e x c e p c io n e s e n la lis­
m in a d o m é to d o d e la c la s e b a s e d e b e p e rm a n e c e r in v a ria n te a lo la rg o d e la ta t h r o w s .
je r a rq u ía d e c la s e s , e s to e s . q u e n in g u n a c la s e d e riv a d a d e b e re d e fin irlo . E n e s te E n a lg u n a s o c a s io n e s lo s m é to d o s d e la c la s e d e riv a d a n e c e sita n in v o c a r a los
c a s o p o d e m o s d e c la ra r q u e e l m é to d o e s f i n a l , d e m o d o q u e n o p o d ía s o b re s c ri­ m é to d o s d e la c la s e b a se . E s to se c o n o c e c o n e l n o m b re d e so b r e s c r itu r a p a rc ia l.
E s to e s. d e s e a m o s h a c e r lo m ism o q u e la c la s e base y u n p o c o m á s . e n lu g ar de
birse.
L a d e c la ra c ió n d e u n m é to d o in v a ria n te c o m o f i n a l n o e s s ó lo u n a b u e n a h a c e rlo i»kI»> d e m a n e ra c o m p le ta m e n te d ife re n te . L a s lla m a d a s a u n m é to d o d e la
c la s e b a s e s e h a c e n a tra v é s d e s u p e r . A q u í s e m u e s tra un e je m p lo :
c o s tu m b re d e p ro g ra m a c ió n , sin o q u e p u e d e c o n d u c im o s a c ó d ig o m á s e fic ie n te .
L s u n a b u e n a c o s tu m b re d e p ro g ra m a c ió n , p o iq u e a d e m á s d e d e c la ra r n u e stra s in -
publ ic c l a s s T ra b a ja d o rA d ic to excends T ra b a ja d o r
le n c io n e s al le c to r d e l p ro g ra m a y d e la d o c u m e n ta c ió n , s e e v ita la re d e fin ic ió n
a c c id e n ta l d e u n m é to d o q u e n o d e b e s e r resc rito . {
p ublic trab aja! 1
P ara c o m p r o b a r p o r q u é e l u s o d e f i n a l p u e d e g e n e ra r c ó d ig o m á s e fic ie n te .
su|H>nga q u e u n a c la s e base B a s e d e c la ra u n m é to d o final i y q u e D e r i v a d a e x -
s u p e r . t r a b a j a < >; / . T r a b a j a como u n T r a b a j a d o r
lie n d e a la c la s e B a s e .
bebeCafeí i ; / / Se toma un d e s c a n s o
C o n s id e re la ru tina
s u p e r . t r a b a j a I 1 ; / / T r a b a j a c o m o u n T r a b a j a d o r u n p o c o m ás

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

C o m o l e s u n m é to d o fin a l, n o im p o rta s i o b j re fe re n c ia a u n o b je to d e B a s e Y a h e m o s v is to q u e a lg u n o s m é to d o s p e rm a n e c e n in v a ria n te s a lo la rg o d e la je ­


o D e r i v a d a ; la d e fin ic ió n d e f e s in v a ria n te , d e m o d o q u e s a b r e m o s lo q u e liará ra rq u ía d e c la s e s (é s to s s o n lo s m é to d o s finales», y q u e o tro s p u e d e n ver m o d ifica-
f . C o m o c o n se c u e n c ia , la lla m a d a a l m é to d o s e re s u e lv e e n tie m p o d e c o m p ila ­ d o mi s ig n ific a d o e n la je ra rq u ía . U na te r c e ra p o s ib ilid a d e s q u e e l m é to d o ten g a
c ió n e n lu g ar d e e n tie m p o d e e je c u c ió n . E s to se c o n o c e p o r tip o d o e stá tic o . El se n tid o p a ra las c la s e s d e riv a d a s v q u e d e b a im p le m c n ta rs e e n e lla s , m ie n tra s q u e
p ro g ra m a se e je c u ta rá m á s rá p id o , y a q u e lo s tip o s s e d e te rm in a n d u ra n te la c o m ­ su im p le m e n ta c ió n n o tie n e s e n tid o e n la c la s e b a se . E n e s te c a s o p o d e m o s d e ­
p ila c ió n y n o d u ra n te la e je c u c ió n . E n q u é g ra d o e s to e s im p o rta n te d e p e n d e de c la ra r e l m é to d o e n la c la s e b a s e c o m o a b s tr a c to m e d ia n te la p a la b ra re se rv a d a
c u á n ta s v e c e s e v ite m o s to m a r d e c is io n e s d u ra n te la e je c u c ió n d e l p ro g ra m a . a b s tra e r.
U n m é to d o a b s tr a c to e s un m é to d o q u e d e c la ra u n a fu n c io n a lid a d q u e d e h e ser 1 // Clas« base a b s t r a c ta para las figuras
im p le n ie n ta d a e n to d a s las c la s e s d e riv a d a s d e la c la s e e n q u e s e v a y a a u tili/a r. 2 //
3 / / CONSTRUCCIÓN: n o s e p e r m i t e . F i g u r a e s u n c o n s t r u c t o r a b s t r a c t o
E n <»tras p a la b ra s, a tra v é s d e u n m é to d o ta l in d ic a m o s lo q u e d e b e ría n p o d e r ha 4 // con un s o l o p arám etro Invocado p o r l a s c l a s e s d e riv a d as
c e r lo s o b je to s d e d ic h a s su b c la s e s . N o se im p le m e n ta e n la c la s e b a se , sin o q u e 5 /
c a d a su b c la s e d e b e te n e r su p ro p ia im p le m e n ta c ió n 6 // .................................................... OPERACIONES PÚBLICAS..................................................
U n a c la s e q u e tiene a l m e n o s un m é to d o a b s tra c to e s u n a c la s e a b stra c ta . En 7 / double a rea l > - -> Devuelve e l á r e a ( a b s tr a c to )
8 // b o o l e a n menorQuet I d e r ) - - > Compara e l á r e a d e d o s o b j e t o s
J a v a se e x ig e q u e to d a s las c la s e s a b stra c ta s s e a n d e c la ra d a s c o m o ta le s. C u a n d o
9 // String to S trin g 1 ) --> Método t o S t r i n g usual
e n u n a c la s e d e riv a d a n o se (re (d e fin e un m é to d o a b s tra c to m e d ia n te u n a im ple-
10
m e n ta c ió n . e l m é to d o c o n tin ú a s ié n d o lo e n la c la s e d e riv a d a . C o m o re su lta d o , si 11 p u b lic a b s tr a c t c la s s Figura
e n u n a c la s e n o d e fin id a c o m o a b stra c ta n o se im p le m e n ta un m é to d o a b stra c to , el 12 {
c o m p ila d o r d e te c ta ra e s a in c o n s is te n c ia y d e v o lv e rá u n e rro r. 13 a b s t r a c t p u b l i c d o u b le a r# a ( );
14
U n e je m p lo v ie n e d a d o p o r la c la s e a b stra c ta F i g u r a , q u e se e m p le a rá e n un
15 p u b lic F i g u r a ( S t r i n g nom breFigura >
e je m p lo m a y o r d e e s te c a p ítu lo , u n p o c o m á s ta rd e . L a s fig u ra s c o n c re ta s , c o m o 16 ( nombre = n o m b r e F ig u r a ; 1
C i r c u l o o R e c t á n g u l o , s e d e riv a n d e F i g u r a . C u a d r a d o p u e d e d e riv a rs e c o ­ 17
m o u n R e c t á n g u l o e s p e c ia l. L a F ig u ra 4 .4 ilu stra la je r a r q u ía resu ltan te. 18 f i n a l p u b l i c b o o l e a n raenorQuet F i g u r a ider )
L a c la s e F i g u r a p u e d e c o n te n e r a trib u to s c o m u n e s a to d a s la s c la se s. E n un 19 { r e t u r n a r e a < > < I d e r . a r e a ( >; )

e je m p lo m á s c o n c re to p o d ría n in c lu irse c o m o ta les las c o o rd e n a d a s d e los e x tr e ­


20
21 fin a l public S tring toString( )
m o s d e lo s o b je to s. L a c it a d a c la s e d a la d e fin ic ió n d e a lg u n o s m é to d o s, c o m o 22 { r e t u r n nombre * ' c o n á r e a " • a i e a l >; )
p o 8 i c i o n I > e . q u e s o n in d e p e n d ie n te s d e l tip o d e l o b je to re le re n c ia d o e n c a d a 23
m o m e n to : p o s i c i o n D e s e rá e n to n c e s u n m é to d o fin al. T a m b ié n s e d e c la ra n m é ­ 24 p rív ate String nombre;
to d o s q u e se a p lic a n a c a d a tip o c o n c re to d e o b je to s. A lg u n o s d e e sto s m éto d o s 25 )
p o d ría n s e r im p le m e n ta d o s g e n é ric a m e n te e n la c la s e a b stra c ta F i g u r a . P o r lo Figura 4.5 La c la s e a b s t r a c t a F i g u r a .
q u e . p o r e je m p lo , e s im p o sib le in d ic a r c ó m o c a lc u la r e l á re a d e u n o b je to a b s tra c ­
to : e l m é to d o a r e a d e b e ría s e r d e c la ra d o a b s tra c to m e d ia n te a b s t r a c t .
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 , la e x is te n c ia d e u n m é to d o a b s ­ L a f ig u ra 4 .5 m u e s tra la c la s e a b stra c ta F i g u r a . E n la lín e a 2 4 se d e c la ra un
tra c to c o n v ie rte a la c la s e e n a b stra c ta , n o p e rm itié n d o s e la c re a c ió n d e o b je to s de S t r i n g q u e a lm a c e n a e l tip o d e la fig u ra. E s to s e e m p le a ú n ic a m e n te e n las c la ­
d ic h a cla se . D e e s te m o d o , n o p o d e m o s c o n s tru ir u n o b je to d e la c la s e F i g u r a : se s d e riv a d a s, lis te a tr ib u to e s p riv a d o , a s í q u e las c la s e s d e riv a d a s n o tie n e n a c c e ­
só lo p o d e m o s c re a r o b je to s d e la s c la s e s d e riv a d a s. S in e m b a rg o , c o m o d e c o s ­ s o d ir e c to a él. E l re s to d e la c la s e e s p e c ific a u n a c o le c c ió n d e m é to d o s.
tu m b re . u n a F i g u r a p u e d e re fe re n c ia r c u a lq u ie r o b je to c o n c re to d e las c la s e s d e ­ El c o n s tru c to r n u n c a s e in v o c a d ire c ta m e n te , y a q u e F i g u r a e s u n a c la s e a b s ­
riv a d a s. c o m o c i r e u l o o R e c t á n g u l o . A sí. tra c ta . S in e m b a rg o , n e c e s ita m o s u n c o n s tru c to r, a l q u e la c la s e d e riv a d a in v o cará
c u a n d o n e c e site in ic ia li/a r los c o m p o n e n te s p riv a d o s. E l c o n s tru c to r d e F i g u r a
F i g u r a a , b;
in ic ia liz a e l a trib u to in te rn o n o m b r e .
a ■ new C i r c u l o ( 3 .0 ) ; //C o rrecto
L a lín e a 13 d e c la ra e l m é to d o a b stra c to a r e a . E n tie m p o d e e je c u c ió n se d e c id i­
b = new F i g u r a ( ' C i r c u l o ' ) ; / / Incorrecto
rá e l m é to d o a r e a a d e c u a d o d e la c o rre sp o n d ie n te clase d e riv a d a , a r e a e s un m é to ­
d o a b stra c to , y a q u e n o tie n e n in g ú n sig n ific a d o p o r d e fe c to q u e p u e d a s e r e sp e c ifi­
c a d o p ara a p lic a rse s o b a 1 u n a c la s e h e re d a d a q u e o p te p o r n o im p lem en tarlo .
E l m é to d o d e c o m p a r a c ió n d e fig u ra s im p le m e n ta d o e n las lín e a s 18 y ló . no
e s a b s tra c to y a q u e p u e d e s e r a p lic a d o e n to d a s la s c la s e s d e riv a d a s. D e h e c h o , su
d e fin ic ió n es inv a ria n te a l o la rg o d e la je r a r q u ía d e fig u ra s, a s í q u e lo h e m o s c o n ­
venid»» e n u n m é to d o final.
El m é to d o t o S t r i n g . m o s tra d o e n las lín e a s 21 y 2 2 . im p rim e e l n o m b re de
u n a fig u ra y su área. A l ig u a l q u e e l m é to d o d e c o m p a ra c ió n , p e rm a n e c e in v a ria n ­
te a lo la r g o d e la je r a r q u ía c o m p le ta , y s e d e c la ra c o m o fin al.
A n te s d e c o n tin u a r, v a m o s a re s u m ir lo s d is tin to s tip o s d e m é to d o s e x iste n te s:

I. M é to d o s fin a le s . L a s o b r e c a rg a se re s u e lv e e n tie m p o d e c o m p ila c ió n .


E m p le a m o s u n m é to d o lln a l s ó lo c u a n d o d ic h o m é to d o e s in v a ria n te a lo
larg o d e la je r a rq u ía d e h e re n c ia (e s to e s . c u a n d o e l m é to d o n o s e re d elln e
F igura 4.4 La jerarquía d e las figuras n u n ca).
2. M é to d o s a b stra c to s. 1.a s o b re c a rg a se re s u e lv e d u ra n te la e je c u c ió n del 1 / / C las es C ir c u lo , Cuadrado y R ectángulo
p ro g ra m a . L a c la s e b a s e n o im p le m e n to e sto s m é to d o s y e s a b stra c ta a su 2 // basadas to d a s en Figura
3 //
vez. E s n e c e s a r io q u e la s c la s e s d e riv a d a s im p lc m e n te n d ic h o s m é to d o s o
4 / / CONSTRUCCIÓN: c o n u n r a d i o < p a r a e l c i r c u l o ! . l o n g i t u d d e l l a d o
se a n ta m b ié n a b stra c ta s. 5 // (para e l cu ad rad o ), y l a r g o y ancho ip ara e l r e c tá n g u lo ) .
3. M é to d o s e stá tic o s. 1.a s o b re c a rg a s e re su e lv e d u ra n te la c o m p ila c ió n y a 6 Jt OPERACIONES PÚBLI CAS*...................................................
q u e n o e x is te n in g ú n o b je to c o n tro la d o r 7 / / double a re a ! i --> ir p le m e n ta e l método a r e a a b s t r a c t o en Fig u ra
8
4. O tro s m é to d o s. L a s o b r e c a rg a se re s u e lv e e n tie m p o d e e je c u c ió n . L a c la ­
9 public c l a s s C ir c u lo exter.ds Figura
se base tie n e u n a im p le m e n ta c ió n p o r d e fe c to q u e p u e d e ser. o b ie n so ­
10 <
b re s c rita e n las c la s e s d e riv a d a s , o p e rm a n e c e r sin c a m b io s e n e lla s. 11 public C irculo! double r )
12
13 superI "Círculo" );
14 r a d io = r:
4.3 Ejemplo: extensión de la c la se F i g u r a 15
16
17 p u b lic double a rea ! 1
E n e s ta s e c c ió n im p lc m c n la m o s la s c la s e s d e riv a d a s d e F i g u r a y m o stra m o s 18 (
c ó m o se e m p le a n d e m a n e ra p o lim ó rfic a . P a ra e llo c o n s id e ra m o s e l sig u ie n te p ro ­ 19 r e t u r n Pl * r a d io * radio;
b lem a; 20
21
22 p r iv a r e s t a t i c finaL double PI = 3.14159265358979323;
O R D E N A N D O FIGURAS
23 p riv a re double radio;
Léanse los d ato s d e N figuras (círculos, cu ad rad o s o rectáng u los) y 24 )
m uéstrense ordenadas p or á re a 25
26 public class Rectángulo extends Figura
L a im p le m e n ta c ió n d e la s c la s e s d e riv a d a s , m o s tra d a e n la F ig u ra 4 .6 . e s m uy 27 {
28 public Rectángulo! doublelarg o , double ancho )
se n c illa y n o in c lu y e n a d a q u e n o h a y a sid o c o m e n ta d o a n te rio rm e n te . E l ú n ico 29 (
p u n to n o v e d o s o e s q u e C u a d r a d o s e d e fin e a p a rtir d e R e c t á n g u l o , q u e se d e r i­ 30 su p e rI "Rectángulo" );
v a a su v e z d e F i g u r a . E sta d e riv a c ió n s e re a liz a e x a c ta m e n te ig u a l q u e c u a lq u ie r 31 base = largo;
o tra . E n la im p le m e n ta c ió n d e e s ta s c la s e s d e b e m o s h a c e r lo sig u ie n te : 32 a l t = ancho;
33
34
1. D e fin ir u n n u e v o c o n stru c to r.
35 public double a rea ! )
2. E s tu d ia r c a d a m é to d o q u e n o s e a ni a b s tra c to ni fin a l p a ra d e c id ir si se 36
a c e p ta su d e fin ic ió n p o r d e fe c to . I)c n o s e r así. d e b e m o s e s c r ib ir p a ra él 37 re tu rn base • alt;
u n a n u e v a d e fin ic ió n 38 )
39
3. E sc rib ir u n a d e fin ic ió n p a ra c a d a m é to d o ab stra c to .
40 private double base;
4. S i e s n e c e s a rio , d e fin ir m é to d o s a d icio n ale s. 41 private double a l t ;
42 )
P a ra c a d a c la s e h e m o s d e f in id o u n s e n c illo c o n s tr u c to r e n e l q u e s e in ic ia li- 43
/ a n la s d im e n s io n e s b á s ic a s (e l ra d io p a ra lo s c ír c u lo s . > la s lo n g itu d e s d e los 44 p u b lic c l a s s Cuadrado ex te n d s R ectángulo
45 {
la d o s p a ra c u a d ra d o s y re c tá n g u lo s ). P rim e ro se in ic ia liz a la p a rte h e re d a d a e m ­
46 public Cuadrado!d o u b le la d o )
p le a n d o s u p e r . E n c a d a c la s e d e b e d e f in ir s e u n m é to d o a r e a y a q u e e n F i g u r a 47
a o a n c e c o m o m é to d o a b s tra c to . S i e l m é to d o a r e a n o e s im p le m e n ta d o e n a lg u - 48 super! lado, lado >;
.ia d e la s c la s e s d e riv a d a s s e p ro d u c irá u n e r r o r d u ra n te la c o m p ila c ió n . E s to es 49 j
50 }
d e b id o a q u e si fa lta la im p le m e n ta c ió n d e a r e a . la c la s e d e riv a d a ta m b ié n d e ­
b e ría d e c la ra rs e c o m o a b s tra c ta . N ó te s e q u e C u a d r a d o h e r e d a e l m é to d o a r e a Figura 4 .6 C iases C i r c u l o . C u a d r a d o y R e c t á n g u l o , situadas e n ficheros dis­
d e R e c t á n g u l o , p o r lo q u e n o e s n e c e sa rio im p le m e n ta rlo d e n u ev o . tintos.
A h o ra q u e h e m o s e s c r ito la s c la s e s , y a p o d e m o s re s o lv e r e l p ro b le m a p ro p u e s­
to . P a ra e llo e m p le a m o s u n v e c to r d e F i g u r a s . F.s im p o rta n te o b s e rv a r q u e d ic h o
v e c to r n o a lm a c e n a rá d ire c ta m e n te F i g u r a s (lo q u e n o e s posib le» s in o q u e g u a r­ L a F ig u ra 4 .7 m u e s tra e s te e n fo q u e del p ro b le m a . E n p rim e r lu g ar, s e re a liz a
d a rá re fe re n c ia s d e tip o F i g u r a . E sta s re fe re n c ia s p u e d e n a p u n ta r a C i r c u i o s . la lec tu ra d e lo s o b je to s. E n la lín e a 2 3 . la lla m a d a a l e e r F i g u r a c o n s is te e n leer
Cuadrados y R ectángulos. un c a rá c te r v las d im e n s io n e s d e u n a liu u ra . p a ra c re a r d e s p u é s un o b |e to d e tip o
1 Import jav a.lo ."; 1 l l C r e a '.a f i g u r a a d e c u a d a bni-Ar.d<.»ao «>ri ' .a e n t r a d a .
2 2 / E s p a r t e d e l a c l a s e T e s t F í g u r a d e La F i g u r a 4 . 7 .
3 e l <15 » T o s t F i g u r a 3 I ' F.1 u n u a r i o d e b e C o c l e a r * c ' . * s ' o ' r ' p a t a i n d i c a r l a f i g u r o
4 I 4 y después in tro d u c ir la s dircenaiones.
5 privare static BuíferedP.eaáer ir.; 5 / Ante c u a lq u ie r e r r o r se d e v u elv e un c i r c u l o de r a d io r e r e .
6 6
7 p rív a te s t a t i c Figura le e r Figura! ) 7 privare s ta tic Figura leerFigura i
8 { / • Im plesumt a c i ó n e n i a F i g u r a 4 . 9 * 8
9 9 double rad:
10 public s t a ti c v o id main! String i 1 args • 10 double largo;
11 < 11 double ancho i
12 tr y 12 String unaLinea;
13 13
14 / / L e c tu r a d e l número de í ¡guras 14 try
15 System .out . p r m t l n t •'Introduzca » de f i g u r a s : “ i : 15
16 l n ■ n e w B u f f e r e d P e a d e r ( new 16 S y s t e m . o u t . p r i n t ' . ni "Introduzcael tipo de tigura:" I;
17 I r p u t S t r e a m P .e a n e r ! S y s te m , in l i ;
17 do
18 i n t num Plguras • I n t e g e r . p a r B e l n t l i n . ro a d L in u ( I l;
18
19
19 u n a L i r . e a = i r . ■r e a ó L i n e « / :
20 t t Loctura de la s fig u ras
20 ) w h tlet unaLinca. lengtht I Q >;
21 F i g u r a I 3 v e c t o r - new F i g u r a | n u m F i g u r a s 1:
22 fo ri i n t i = 0: i < num Figuras; i •• )
21
22 sw itch! unaLinea.charA t< 0 ) i
23 v e c t o r I 1 ] • l e e r F i g u r a t ir
23
24
24 case ’c 1:
25 / ! O rdenación y S alid a
25 System .out .p r i r .tl n t " In tro d u z c a e l radLo; " );
26 o rd o n a c lo T J P o rln se c c io n l v e c t o r l;
26 r a d = D o u b l e - v a l u e Q : ( m . r e a d L i n e l . d o u b 1e V a l U e ( ) ;
27 S y s t e m . o u t . p r i n t l n ! "Ordenados por a r? a ‘ );
27 r e t u r n new C í r c u l o i r a d
28 f o x ! i n t 1 » Oj i < n u j n F l g u r a o : i»*-)
29 S y stem .o u t.p rin tln ( vector! 1 1 ) ;
28
29 case ’s ’ :
30 1
31 c arc h i Exception e ) 30 S y s t e m . o u t . p r i n t l n ! " I n t r o d u z c a e l l a d o : * )¡
31 l a r g o = D o u b l e . v a l u e O f I i n . r e a d L i n e ! >> . d o u b l e V a l u e i l ;
32 { S y s te m .o u t.p r in tln ! e ); 1
32 r e t u r n new C u a d r a d o ! l a r g o I ;
33 )
34 1 33
34 case •r •:
Figura 4.7 Rutina m a i n p a ro leer figuras y m ostrarlas e n o rae n c re cie n te d e oreas 35 S ystem .out.pr i n tl n ( " Introduzca e l la rg o y el ancho “
36 - "er; l i n e a s s e p a r a d a s : ’ ) :
37 l a r g o = D ou b le . v a l u e O f I ir., r c a d b l n e t > >. d o u b l o V a l u e t I i
F i g u r a . L a F ig u ra 4 .8 m u e s tra u n a im p lc m c n ia c ió n d ir e c ta d e e llo . N ó te s e q u e si 38 a n c h o = Dc r u bl e . v a l u e O f <i n . r e a d l . i n g 1 ) >. d o u b l e V a l u e f I ;
se p ro d u c e u n a e n tra d a d e d a lo s in c o rre c to s, s e c re a u n c ír c u lo d e ra d io c e ro y se 39 r e t u r n n e w P e c t n n g u l o l l a r g o , .«r.cho I r
d e v u e lv e u n a re fe re n c ia a p u n ta n d o h a c ia é l. U n a so lu c ió n m á s e le g a n te e n e s te c a ­ 40
41 defnuit:
s o s e ría d e fin ir y la n z a r u n a e x c e p c ió n , lla g a e s to c o m o E je rc ic io 4 .1 4
42 S ystem .err.p rin tln I "Me f a l t a n c . r o s * i;
A c o n tin u a c ió n , c a d a o b je to c re a d o e n l e e r F i g u r a se re fe re n c ia a tra v é s de 43 r e t u r n new C i r c u l o ! 0 );
u n a p o sic ió n d e l v e c to r D e sp u é s la lla m a d a a •r d t i r . a c i o n P o r i n s e r c i ó n o r d e ­ 44
n a la s fig u ras. F in a lm e n te , se m u e s tra p o r p a n ta lla e l v e c to r d e F i g u r a s , lla m a n d o 45
im p líc ita m e n te a l m é to d o i o S t r l n y . 46 catch! IOException • >
47
48 S y s t e m . e r r . p r i n t l n ( e I;
49 r e t u r n new C i r c u l o ! 0 I •
4.3.1 Disgresión: una introducción a la ordenación
50
51 )
lu í o rd e n a c ió n e n e l e je m p lo a n te rio r se h a iin p lc m e n la d u u s a n d o un a lg o r itm o 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 . E sta té c n ic a s e c o n s id e ra u n a b u e n a so lu c ió n Figura 4. 8 R u t i n a p e t a l ee r l os c i a t o s d e e n t r a d a v d e v o l v e r u n a F i g u r a
c u a n d o s o n p o c o s lo s e le m e n to s a o rd e n a r, y a q u e e l a lg o ritm o e n c u e s tió n e s muy
se n c illo . S in e m b a rg o , c o n s u m e d e m a s ia d o tie m p o , y si q u e re m o s o rd e n a r una l a o r d e n a c i ó n p o r i n s e r c i ó n t r a b a j a d e l s i g u i e n t e m o d o . E n e l estad»* i n i c i a l s e
g ra n c a n tid a d d e e le m e n to s , la o rd e n a c ió n p o r in s e rc ió n e s u n a p o b re e le c c ió n . En p a r t e d e q u e e l p r i m e r e l e m e n t o c o n s i d e r a d o a i s l a d a m e n t e e s t á o r d e n a d o . E n el
ta l c a s o d e b e m o s e m p le a r a lg o ritm o s m e jo re s, ta l y c o m o se e s tu d ia e n e l C a p ítu ­ e s t a d o f i nal q u e q u e r e m o s o b t e n e r s e t i e n e n o r d e n a d o s t o d o s l o s e l e m e n t o s d e l
lo 8 . L a o rd e n a c ió n p o r in s e rc ió n e s tá im p le m e n ta d a e n la F ig u ra 4 .9 . v e c t o r L a F i g u r a 4 .1 0 m u e s t r a q u e l a a c c i ó n b á s i c a d e l a o r d e n a c i ó n c o n s i s t e e n
1 // ord«nacioriPorInserción: ordena ei v e cto r a.
2 p riv a te s t a t i c void ordenacionP otInserción( Figura i ) a i
3
4 í o r ( i n t p = 1; p < á.length; p** >
5 (
6 Figura tmp - a[ p >;
7 int j = p:
8
9 for < ; j >0 i á irap.menorOuet al j - 1 1 l; j ~ )
10 a[ j ] - a l j - l );
11 a[ j 1= c mp;
12
13

Figura 4.9 O rd en ació n p o r inserción.


Figuro 4.11 D etalle d e »a o rd en ació n por inserción (e l som breado oscuro in d ica la
p a rte o rd en ad a , e l so m b read o cla ro in d ica d ó n d e d e b e co lo ca rse el
nuevo elem ento).
-i ■ ■■■
Posición d e l vector 0 1 2 3 4 5

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

Figura 4.10 A cció n b á s ic a d e la o rd en ació n p o r inserción (la p a rle so m b read a


e stá y a o rd en ad a). 4.4 H erencia múltiple

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.a f i g u r a 4 .1 4 m u e s tra la in te rfa / H a s h a b l e . e s tu d ia d a c o n d e ta lle e n la S e c ­


1 package Soporte;
c ió n 6 .7 y e l C ap ítu lo 19. L a clase M i E n t e r o im p lem en ta las interfaces C o m p a r a b l e
2
3 public í n t e r í a c e Hashable y H a s h a b l e . E l re s u lta d o te n e l q u e p a ra m a y o r b re v e d a d h e m o s e lim in a d o los
4 ( m é to d o s q u e n o c o rre s p o n d e n a n in g u n a in te rfa z ) s e m u e s tra e n l a f ig u ra 4 .1 5 .
5 int h ash t int tamanyoTabla ); I.a in te rfa z e s la c la s e m á s a b stra c ta p o sib le y u n a e le g a n te so lu c ió n a l p ro b le ­
6 ) m a d e la h e re n c ia m últiple.
Figuro 4 14 Lo in terfaz H a s h a b l e .

4.6 Im plem entación d e com ponentes genéricas


1 package soporte;
2 R e c o rd e m o s q u e u n o b je tiv o c e n tra 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 Le
3 /;•
re u tiliz a c ió n d e c ó d ig o . U n m e c a n is m o d e s ta c a d o q u e h a c e p o s ib le a lc a n z a rlo e s 9<
4 • C l a s e e.T pleaaa e n e s t r u c t u r a s d e d a t o s g e n é r i c a s .
5 • Se comporta ig u al que ln te g e r. la p ro g ra m a c ió n g e n é ric a : c u a n d o una im p le m e n ta c ió n n o d e p e n d e d e l tip o d e lo s pí
6 •/ o b je to s q u e m a n ip u la , p u e d e e m p le a rs e u n a im p le m e n ia c ió n g e n é r ic a p a ra d e s e r i- |P
7 final public c la ss M i E n te r o in*>lementa C o m p ara b le. Hashable b ir la fu n c io n a lid a d b á s ic a . P o r e je m p lo , si s e p re te n d e o rd e n a r un v e c to r d e e le - nt
8 { m e m o s, la ló g ic a e m p le a d a p a ra h a c e rlo e s in d e p e n d ie n te d e l tip o d e lo s o b je to s b<
9 public M iEntero! i n t x J
10 ! /* Como a n t e a • / ) m a n ip u la d o s , lu e g o p u e d e e m p le a rs e u n m é to d o g e n é ric o .
11 public S trin g toStrir.gl ) A d ife re n c ia d e m u c h o s d e lo s le n g u a je s m á s re c ie n te s (c o m o C + + . q u e e m - Er
12 { /* Como a n t e s * / ) p le a p la n tilla s p a ra im p le m e n ta r la p ro g ra m a c ió n g e n é ric a ). J a v a n o so p o rta d ire c - 0'
13 public i n t intV alorI > la m e n te la s im p le m e n ta c io n e s g e n é ric a s . E sto e s d e b id o a q u e la p ro g ra m a c ió n g e - p
14 ( /* como a n t e s * / }
n é ríc a p u e d e im p le m e n ta rsc a p a rtir d e la h e re n c ia . E sta s e c c ió n d e s c rib e c ó m o las
15 public boolear. e q u a l s t O b je ct lder )
c la s e s y m é to d o s g e n é ric o s p u e d e n im p le m e n ta rsc e n J a v a e m p le a n d o lo s c o n c e p ­
16 { /• Como a n t e s * / }
17 to s b á sic o s d e la h e re n c ia 1.
18 public in t comparal Comparable ld e r ) E n J a v a la id e a b á s ic a e s q u e s e p u e d e im p le m e n ta r u n a c la s e g e n é ric a u tili­
19 { z a n d o u n a su p e rc la se a d e c u a d a , c o m o o b j e c t . E n J a v a , si u n a c la s e n o e x tie n d e a
20 r e t u r n v a l o r < ( ( M i E n te r o ) ld e r ) . v a l o r ? -1 :
n in g u n a o tr a s e e n tie n d e q u e e x tie n d e a la c la s e O b j e c t (d e fin id a e n j a v a . l a n g ) .
21 v a l o r == ( ( M i E n t e r o ) l d e r ) . v a l o r ? 0 : 1 ;
22 1 C o m o re s u lta d o , c u a lq u ie r c la s e e s u n a su b c la s e d e O b j e c t .
23 C o n sid e re la c la s e C e l d a E n t e r a d e la F ig u ra 3. 1 y re c u e rd e ta m b ié n q u e
24 p u b l i c b o o l e a n menorQuel Comparable ld e r ) C e l d a E n t e r o so p o rta lo s m é to d o s l o o r y e s c r i b i r . P o d e m o s c o n v e n ir e s ta
25 | c la s e e n u n a c la s e g e n é ric a lla m a d a C e l d a M e m o r i a . E l re s u lta d o s e m u e s tra e n la
26 re tu rn v alo r < ( (M iE ntero)lder) .v alo r;
F ig u ra 4 .1 6 .
27 )
28 C u a n d o se e m p le a e s ta e s tra te g ia d e b e te n e rse e n c u e n ta d o s d e ta lle s . A m b o s Le
29 public int hnshl int tam anyoTabla > se ilu stran e n la F ig u ra 4 17. e n la q u e se im p le m e n ta u n m é to d o m a i n q u e e sc rib e
30 | un 5 e n u n o b je to C e l d a M e m o r i a y d e s p u é s le e e l c o n te n id o d e d ic h o o b je to . E n pi
31 if< v a lo r < 0 ) p rim e r lu g a r, d e b e re c o rd a rs e q u e un tip o p rim itiv o n o e s u n o b je to . C o m o re s u lta - ,¡
32 r e t u r n - v a l o r % tamanyoTabla;
d o . m . e s c r i t u r a (0 ) se ría in c o rre c to . S in e m b a r g o , e s to n o re p re s e n ta u n g rav e
33 else
34 r e t u r n v a lo r % tamanyoTabla; p ro b le m a , y a q u e J a v a d e fin e c la s e s e n v o lto r io p a ra lo s o c h o tip o s p rim itiv o s. A sí.
35 e l o b je to C e l d a M e m o r i a g u a rd a rá u n o b je to d e c la s e l n t e g e r (y n o u n v a lo r d e
36 tip o i n t ) .
37 private int valor: / * Como a n t e s */

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

Figuro 4 18 Putm a g e o é n c a d e n s e rcó o


1 p u b l i c c l a s s TestCeicaMerror i a
2 (
3 public static v o i d main! String ( ] args ) n o p u e d e e m p le a rs e p a ra la o rd e n a c ió n d e un v e c to r d e F i g u r a s , y a q u e la clase
4
F i g u r a n o im p le m e n ta la in te rfa z C o m p a r a b l e . E l E je rc ic io 4 .1 5 p id e al lecto r
8 , C e l d a M e n o r i a m - new C e l d a M e m o r i a ( ) ;
6 q u e realice las m o d ific a c io n e s n e c e s a ria s a la c la s e F i g u r a p a ra p o d e r h acerlo .
7 m . e s c r i b i r ! new I n t e g e r ! 5 ) 1 ; P a ra c o m p r o b a r c ó m o se e m p le a e l m é lo d o g e n é ric o O r d e n a c i ó n v a m o s a e s ­
8 S y s t e m . o u t . p r i n t l n ! ‘ El c o n t e n i d o e s : * • c rib ir un p ro g ra m a q u e lea u n a c a n tid a d ilim ita d a d e e n te r o s , lo s o rd e n e y m u estre
9 I (i n t e g e r ) m . l e e r ! ) l . i n t V a l u e ! ) )• e l re s u lta d o E l m is m o s e m u e s tra e n la F ig u ra 4 .1 9 . F.l m é to d o l e e r E n t e r o s . e s ­
10
c r ito e n la F ig u ra 2 4 . se e m p le a p a ra la le c tu ra d e l v e c to r d e i n t s e n la lín e a 11.
11 )
Figuro 4 17 Em pteo d e la c la se g e n e n c a C e l d a M e m o r i a
1 import S o p o rte .* :
2
l.l xcgum lo d e ta lle e s q u e e l re s u lta d o d e m . l e e r ( ) e s u n O b j e c t . P a ra g e n e ­ 3 // Programa d e p ru e b a p a r a l e e r e n t e r o s d e l t e r m i n a l (uno por
4 // lin e a ), o rd en arlo s y finalm ente m ostrarlos.
ra r e l v a lo r a lm a c e n a d o e n c a d a m o m e n to , d e b e m o s re a liz a r p re v ia m e n te u n a c o n ­
5
v e rsió n ile tip o s . c o n v in ie n d o e l O b j e c t e n u n I n t e g e r . D e sp u é s, a p lic a re m o s el 6 p u b lic c l a a s OrdenaEnteros
m é lo d o i n t V a l u o p a ra o b te n e r u n i n t * . 7 (
D e b id o a q u e las c la s e s e n v o lto rio so n c la s e s fin a le s, e l c o n s tru c to r y e l m é to ­ 8 public static v o i d main! String I 1 args >
d o d e a c c e so i n t V a l u e p u e d e n se r e x p a n d i d a p o r e l c o m p ila d o r, o b te n ié n d o se 9
10 / / L ectura d el v e c to r de en tero s
c ó d ig o ta n e fic ie n te c o m o s i u n i n t h u b ie r j s id o m a n ip u la d o d ire c ta m e n te 11 int t 1 a r r ■ L e c t u r a E n t e r o s . l e e r E n t e r o s « >: Z/ F i g u r a 2
U n se g u n d o e je m p lo e s e l p ro b le m a d e la o rd e n a c ió n . Y a h e m o s e x e n to a n te ­ 12
rio rm e n te u n m é to d o o r d e n a c i o n P o r I n s e r c i ó n q u e tr jb u |a c o n un v e c to r de 13 / / C o n v e r s i ó n a un v e c t o r d e M iEr.teros
F i g u r a s . A h o ra s e r ía o p o rtu n o e s c r ib ir lo p a ra u n v e c to r g e n é ric o . 14 MLEntero t ] e l V e c t o r • new M i E n t e r o l a r r . l e n g t h |:
15 fo r! in t i = 0; i < e lV e c to r. length; i - - )
L a F ig u ra 4 .IH m u e s tra u n a ru tin a g e n é ric a d e in s e rc ió n q u e e s c a s i id é n tic a al
16 e l V e c t o r | i 1 ■ new M l E n t e r o ! a r r l i 1 I;
m é to d o d e la F ig u ra 4.9. E ste m é lo d o e s tá in c lu id o e n la c la s e O r d e n a c i ó n del
17
p a q u e te E s t r u c t u r a a D a t o s ; p o ste rio rm e n te se irá a ñ a d ie n d o n u e v a s ru tin a s d e 18 / / A p licació n del alg o ritm o de ordenación
o rd e n a c ió n a d ic h a cla se , q u e s e rá a m p lia m e n te e s tu d ia d a s e n e l C a p ítu lo S d e l li­ 19 E stru ctu rasD a to s.O rd en a ció n .o rd e n a cio n P o rln se rcio n ! elVectoi
bro . E s im p o n a n tc o b s e r v a r q u e e n la ru tin a do o rd e n a c ió n n o se e m p le a la c la s e 20
21 / / M uestra e l r e s u lta d o ordenado
O bject P o r e l c o n tra rio , o rd e n a m o s un v e c to r d e e le m e n to s C o m p a r a b l e s , p u e s ­
22 System .out-println! ‘Resultado ordenado: * >;
to q u e e s n e c e sa rio e m p le a r e l m é to d o m e n o r Q u e . C o m o c o n s e c u e n c ia , s o lo las 23 for! int i = 0 ; i < e lV ec to r. length; i-* I
c la s e s q u e im p le m e n ta n la in te rfa z c o m p a r a b l e p u e d e n se r « « d en u d as c o n el 24 S y s te m .o u t.p rin tln ( elV ectorJ i ] I ;
n u e v o o r d e n a c i o n P o r I n s e r c i ó n . A sí. e s te m é to d o , ta l y c o m o e s tá e sc rito . 25
26 )

CCCMI* . i p l t v j r i n t V a l u é , y a q u e e l nuM m k» i o s t r I n u o l á i l i r t c l a i i k - n l r d c l i n k l o e n I j i l u n c I n t > o » r A quí Figura 4 19 le c tu ra d e un conjunto d e in t s . o ed e n o có n d e los mismos y m uestra


1
u r c S . n o e l v a l o r i l e l i n o m i ix h i í . i o b t e n e r M' d e u n a l o m a m i * o r r v r . i l del resultado
A c o n tin u a c ió n . so ¿ e n e r a un v e c to r J e e le m e n to s q u e im p le m c n tc n n u e stra ín te r C o n e s te c a p ítu lo c o n c lu y e la p rim e ra p a rte d e l te x to , e n la q u e liem o s v is to
f a / C o m p a r a b l e . L a c la s e p re d e fin id a I n t e g e r n o im p le m e n ta C o m p a r a b l e , las c a ra c te rís tic a s b á s ic a s d e J a v a y 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 a s a ­
p e ro si l»> h ace la c la s e M i E n t e r -. p re s e n ta d a e n e s te c a p ítu lo . Ln la s lín e a s l-l a re m o s a h o ra a e s tu d ia r Ion a lg o ritm o s y las e s tru c tu r a s d e d a lo s e m p le a d o s e n la
16 se re a l i/ a la c o n s tru c c ió n a p ro p ia d a . P a ra e llo se c re a p o r c a d a i n t e l c o rre s­ re s o lu c ió n d e p ro b le m a s d e p ro g ra m a c ió n
p o n d ie n te H i E n i t í O . q u e lu e g o se g u a rd a e n e l v ecto r. L a o rd e n a c ió n s e e fe c tú a
e n la lin c a l ‘> ( n o e m p le a m o s la c lá u s u la i m p e r t . p o r lo q u e e l m é to d o d e b e ser
in v o c a d o c o n su n o m b re c o m p le to , in c lu y e n d o lo s p a q u e te s e n lo s q u e e s ta i n t e ­ Elementos del juego
g ra d o ) P o r ú ltim o , e l c ó d ig o p a ra m o s tra r e l r e s u lta d o s e e n c u e n tr a e n la s lí­
ne as 2 2 a 24 O b s e rv e q u e e l m é to d o t o S t r i n g se in v o c a im p líc ita m e n te a tra v é s
d a s e a b s tra c ta C la se d e la q u e n o p u e d e n c o n s tru irs e o b je to s p e ro q u e sirv e para
d e Mi E n t e r o .
e sp e c ific a r la fu n c io n a lid a d d e su s c la s e s d eriv a d a s,
cla se b ase C la s e so b re la q u e >e b a s a la h eren cia.
cla se d e r iv a d a C la se c o m p le ta m e n te n u e v a q u e p re s e n ta c ie r ta c o m p a tib ilid a d
Resumen c o n la c la s e d e la q u e s e d e riv a ,
c la se e n v o lto rio C la se q u e fa c ilita o b je to s e n los q u e se a lm a c e n a n e le m e n to s d e
un tip o p rim itiv o . U n e je m p lo d e c la s e e n v o lto rio e s la c la s e I n t e g e r .
1.a h e re n c ia e s u n a p o te n te h e rra m ie n ta , e se n c ia l e n la p ro g ra m a c ió n o rie n ta d a a
cla se f in a l C la se q u e n o p u e d e set e x te n d id a ,
o b je to s y e n Ja v a . N o s p e rm ite a b s tra e r fu n c io n a lid a d d a n d o lu g a r a la s c la s e s a b s ­
cla se h o ja C la s e fin al.
tra c ta s b a s e c im p le m c n ta r c la se s d e riv a d a s e x p a n d ie n d o d ic h a fu n c io n a lid a d . F.n
c o m p o sició n M e c a n is m o m á s a d e c u a d o p a ra im p le m c n ta r la h e re n c ia c u a n d o la
la c í a t e h a s e p u e d e n e s p e c ific a rs e v a rio s tip o s d e m é to d o s, ta l y c o m o re s u m e la
re la c ió n s u b y a c e n te n o e s u n a re la c ió n E S -U N (A ). F.n tal c a s o s e d ic e q u e un
F ig u ra 4 .2 0
o b je to d e c la s e U c o n tie n e u n o b je to d e c la s e A
e x t o n d s C lá u s u la e m p le a d a p a ra in d ic a r q u e u n a c la s e e s u n a su b c la se d e otra,
h e re n c ia P ro c e s o g ra c ia s al c u a l p o d e m o s d e riv a r u n a c la s e p a rtie n d o d e o tra , lla ­
M éto d o S o b re c a r g a C o m e n ta rio s
m a d a b a se , sin m ix tific a r la im p le m e n ta c ió n d e la c la s e b a se . T a m b ié n p e rm ite
e l d is e ñ o d e je r a rq u ía s d e c la s e s, c o m o E x c e p t i o n y C o m p o n e n !..
final En tiem p o d e Invariante a lo largo d e la |erarquia d e h e re n cia (el
co m p ilació n h e re n c ia m ú ltip le P ro c e s o e n e l q u e s e d e riv a u n a c la s e a p a rtir d e v a n a s c la se s
m ótod o n u n c a so rodefm e)
b a s e J a v a n o s o p o rta la h e re n c ia m ú ltip le : s in e m b a rg o s í s e tie n e la a lte rn a ti­
a b s tr a e r En e je cu ció n La c la se b a se n o fa cilita ninguna Im p lem entación y va d e im p le m c n ta r sim u ltá n e a m e n te v a ria s in te rfa c e s,
es a b stra cta Las clases d e rivad as d e b e n facilitar la i m p l e m e n t s C lá u s u la n e c e sa ria p a ra d e c la ra r q u e u n a c la s e im p le m e n ta lo s m e
im plem entación lo d o s d e u n a in fe ría /
i n t e r f a z l i p o e s p e c ia l d e c la s e a b s tra c ta q u e n o c o n tie n e n in g ú n d e ta lle d e im p le-
scacic En tiem po d e N o h a y o b jeto controiodor.
com pilación m e n ta ció n .
lig a d o H ip a d » ) d in á m ic o D e c isió n to m a d a e n tie m p o d e e je c u c ió n e n la q u e se
Otros En ejecu ció n La clase b a se facilita u n a Im piom ontación q u e p u e­ d e te rm in a q u é m é to d o d e b e a p lic a rs e a l o b je to re fc rc n c ia d o e n e s e m o m en to ,
d e sobrescnoirse o n o e n la s clases derivadas. lig a d o H ip a d o ) e stá tico L.a d e c is ió n d e q u e m é to d o s e a p lic a s e to m a e n tiem p o
d e c o m p ila c ió n . S e e m p le a ú n ic a m e n te p a ra m é to d o s e s tá tic o s o fin ales
Figuro 4 20 C u a tro tipos d e m étodos
lla m a d a a l c o n s tru c to r s u p e r L la m a d a a l c o n s tru c to r d e la c la s e base
m éto do a b s tra c to M é to d o e s p e c ific a d o p e ro n o d e fin id o e n la c la s e s a b stra c ta s. \
q u e . p o r e llo , te n d rá q u e s e r im p le m e n ta d o e n la s c la s e s d eriv a d a s,
L a s c la s e s m á s a b s tra c ta s , e n la s q u e n o se p u e d e in c o rp o ra r n in g u n a im -
m é to d o f in a l M é to d o q u e n o p u e d e s o b r e s c rib irte > . p o r ta n to , p e rm a n e c e in v a ­
p le m e n ta c ió u . so n las i n t e r f a c e s . U n a in te rfa / e n u m e ra to d o s lo s m é to d o s que
ria n te a lo la rg o d e la je ra rq u ía d e h e re n c ia P a ra e s to s m é to d o s nc e m p le a el
d e b e n se r irn p lc u te n ta d o s p o r c a d a c la s e d e riv a d a L a s c la s e s d e riv a d a s d eb en
im p le m c n ta r to d o s e s to s m é to d o s, o s e r . a su v e /, a b s tra c ta s , a d e m á s d e in d ica r, lig a d o (tip a d o ) estático ,
m e d ian te la p a la b ra c la v e i m p i o m e n t s . q u e im p lc m c n ta n la in te r f a /. U n a c lase m ie m b ro d e cla se p ro te g id o A c c e sib le p a ra las c la s e s d e riv a d a s p e r o p riv a d o p a ­
p u e d e im p le m c n ta r v a n a s in te rfa c e s, re p re s e n ta n d o e s to u n a a lte rn a tiv a s e n c illa a ra c u a lq u ie r o lía.
la h e re n c ia m ú ltip le o rd e n a c ió n p » r in se rc ió n A lg o ritm o d e o rd e n a c ió n se n c illo , a d e c u a d o p a ra e n ­
F in a lm e n te , la h e re n c ia p e rm ite e s c r ib ir d e fo rm a s e n c illa m é to d o s y c la s e s g e ­ tra d a s d e p e q u e ñ o ta m a ñ o ,
n é ric a s m e d ia n te las c u a le s re p re se n ta m o s u n a a m p lia g a m a tic tip o s g e n é ric o s p o lim o rfism o C a p a c id a d q u e p o se e n la s v a ria b le s re fe re n c ia p a ra a p u n ta r a o b je ­
P ara lo g ra rlo te n d r e n n » h a b itu a lm e n te q u e u tili/u r la c o n v e rs ió n d e tipos. tos d e d ife re n te s tip o s . C u a n d o se re a liz a n o p e ra c io n e s c o n u n a v a ria b le tal. se
s e le c c io n a a u to m á tic a m e n te la a d e c u a d a a l o b je to re fe re n e ia d o e n e l m o m e n to C i r e l e j a va L a c la s e c i r e u l o .
a ctu a l. C o m p n r a b lc .ja v a L a in te rfa z C o m p a r a b l e d e la F ig u ra 4 .1 2 , for-
p ro g ra m a c ió n g e n é ric a S e e m p le a p a ra im p lc m e n ta r la ló g ic a in d e p e n d ie n te del m a n d o p a ite d e l p a q u e te S o p o r t e .
upado. llu s h n h lc .ja v a L a in te rfa z H a s h a b l e «le la F ig u ra 4 .1 4 . fo rm an
r e f e r e n c ia s u p o r R e fe re n c ia e m p le a d a e n la s o b re se ritu ra <s»>brecurga) p a rc ia l d o p arte «leí p a q u e te S o p o r t e .
m e d ian te la c u a l se in v o c a u n m é to d o d e la c o rre s p o n d ie n te c la s e b ase, M e m o ry C e ll.ja v a L a c la s e C e l d a M e m o r i a d e la F ig u ra 4 .1 6 .
r e l a c ió n C O N T I E N E R e la c ió n e n la q u e la c la s e d e riv a d a c o n tie n e u n a in sta n c ia M y I n t c g e r .ja v u L a in te rfa z M i E n t e r o d e la F ig u ra 4 .1 5 . fo rm a n ­
d e la c o rre sp o n d ie n te c la s e b ase, d o p a n e del p a q u e te S o p o r t e .
r e la c ió n E S -U N (A ) R e la c ió n e n la q u e la c la s e d e riv a d a e s u n a v a ria c ió n d e la K e c tu n g le .ja v u L a c la s e R e c t á n g u l o .
c la s e base. S h a p c .ja v a L a c la s e a b stra c ta F i g u r a .
s o b re se ritu ra ( s o b r e c a r g a ) p a r c i a l H e c h o d e e x te n d e r e l c u e rp o d e u n m é to d o S o r t .ja v a C o le c c ió n d e ra tin a s g e n é ric a s d e o rd e n a c ió n , se
d e u n a c la s e b a se , p a ra re a liz a r ta rc a s a d ic io n a le s , a u n q u e n o c o m p le ta m e n te e n c u e n tra n e n e l p a q u e te E s t r u c t u r a s D a t o s .
S o r t I n t s .j a v a C o n tie n e e l c ó d ig o d e la F ig u ra 4 .1 9 te la s e
d is tin ta s.
O r d e r . a E n t e r c s t.
S q u u r c .j a v a L a c la s e C u a d r a d o .
T e s t M e m o ry C e ll.ja v a P ro g r a m a d e p ru e b a p a ra la c la s e d e c e ld a s d e
Errores com unes m e m o ria , m o s tra d o e n la fig u ra 1.17 te la s e
CeldaM em oria).
1.’ lu is c o m p o n e n te s p riv a d a s d e u n a c la s e b ase n o so n a c c e s ib le s d e s d e su s le s t S h a p e .j a v a U n p ro g r a m a d e p ru e b a p a ra e l e je m p lo del
c la se s d eriv a d a s. Cuadrado.
2. L o s o b je to s d e u n a c la s e a b s tra c ta n o p u e d e in sta n c ia rse . U n d e r f lo w .ju v a L a c la s e 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 í o r
3. S i la c la s e d e riv a d a n o im p le m e n to un m é to d o h e re d a d o «le la c la s e a b s ­ de I j F ig u ra 4 .3 . fo rm a n d o p a rte «leí p a q u e te
tra c ta . la p rim e ra s e c o n v ie rte ta m b ié n e n a b stra c ta . S i e s to n o e s in d ic a d o Soporte.
e x p líc ita m e n te , e l c o m p ila d o r g e n e ra rá u n error.
4. L os m é to d o s fin a le s n o d e b e n s e r s o b re sc rito s. D el m ism o m o d o , las c la ­ Ejercicios
se s fin a le s n o p u e d e n e x te n d e rse
5. L os m é to d o s e s tá tic o s e m p le a n e l lig a d o e s tá tic o , in c lu s o si so n le d e lim - Cuestiones breves
d o s e n u n a c la s e d e riv a d a .
4.1. , Q u é c o m p o n e n te s d e u n a c la s e h e re d a d a p u e d e n e m p le a rs e e n la c la s e d e ­
6. L n u n a c la s e « le m u d a . las c o m p o n e n te s h e re d a d a s s ó lo d e b e n in ic ializa rse
riv a d a ? ¿ Q u e c o m p o n e n te s se c o n v ie rte n e n p ú b lic o s p a ra lo s u su a rio s d e
a tra v é s «leí m é to d o * u p e x S i e s ta s c o m p o n e n te s so n p ú b lic a s o p ro te g i­
la c la s e d e riv a d a ?
d a s. p u e d e se r le íd a s o a sig n a d a s p o ste rio rm e n te .
4 .2 . ¿ Q u é e s la c o m p o s ic ió n ?
7. E n u n a c la s e d e r iv a d a , la lista t h r o w n d e u n m é to d o s o b r e s c r ito n o p u e ­
4.3. E x p liq u e e l c o n c e p to d e p o lim o rfism o
d e in c lu ir n in g u n a e x c e p c ió n q u e n o s e a la n z a d a e n e l m is m o m é to d o
4 .4 . E x p liq u e e l lig a d o H ip a d o ) d in á m ic o . ¿ C u á n d o n o s e e m p le a e s te tip o d e
d e la c la s e b a s e A d e m á s lo s tip o s d e l r e s u lta d o d e b e n c o in d ir e n a m b o s
lig a d o ?
m é to d o s. 4 .5 . ¿ Q u é es u n m é u x k t fin a l?
8. E n la m a y o ría d e lo s c a s o s e n lo s q u e u n m é to d o g e n é ric o d e v u e lv e u n a
4 .6 . C o n sid e re e l p ro g r a m a d e la F ig u ra 4 . 2 1. p a ra e s tu d ia r la v isib ilid ad .
re fe re n c ia g e n é ric a , d e b e re a liz a rs e u n a c o n v e rs ió n d e tip o s p a ra o b te n e r
e l o b je to d e v u e lto . n\ ¿Q u é a c c e s o s so n in c o rre c to s?
h) S i m a i r . fu e s e u n m é to d o d e B a s e , ¿ q u é a c c e s o s s e ria n in c o rre c to s?
«•) S i m a i r . fu e s e u n m é to d o d e D e r i v a d a , ¿ q u é a c c e s o s s e ría n in c o ­
rre c to s ?
En Internet il) ¿ C ó m o c a m b ia ría n las re s p u e sta s a n te rio re s si s e e lim in a s e d e la linea
4 la c lá u s u la p r o t e e t e d ?
Rl c ó d ig o p a ra e l c a s o d e e s tu d io F i g u r a se e n c u e n tra e n e l d ire c to rio C h a p - c\ E sc rib a u n c o n stru c to r d e B ai:o c o n tr e s p a rá m e tro s. E sc rib a , ta m b ié n ,
U-rtM S o r t . j a v a e s p a rte d e l p a q u e te D a t a S t r u c t u r o a . c o n te n id o e n e l d i ­ u n c o n stru c to r d e D e r i v a d a c o n c in c o p a rám etro s.
re c to rio d e l m ism o n o m b re F.l c ó d ig o q u e ilu stra e l e je m p lo s o b re g e n e ric id a d f) L a c la s e D o r i v a d a tie n e c in c o a trib u to s e n te ro s ¿ C u á le s so n a c c e s i­
C e l d a M e m o r i a ta m b ié n s e e n c u e n tra d is p o n ib le e n C h a p tc r iM P o r ú ltim o , los b le s p a ra la c la s e T e s t ?
in te rfa c e s d e las F ig u ra s 4 .1 2 . 4 .1 4 y 4 .1 5 p u e d e n e n c o n tra rs e e n e l d ire c to rio V» l ?n m é to d o e n la c la s e D e r i v a d a se a p lic a s o b re u n o b je to d e B a s o .
S u p p o rtin g ¿ A q u é c o m p o n e n te s «le B a s e p u e d e a c c e d e r D e r i v a d a ?
1 public class Base 4 .1 6 . U n B u f f e r S i m p l ® so p o rta las o p e ra c io n e s l e c t u r a y e s c r i t u r a : d i ­
2 ( c h o B uf f e r S i m p l e a lm a c e n a un so lo v a lo r , d e m cxki q u e un a trib u lo su y o
3 public int bPublico;
n o s in d ica si e s tá lle n o o vacío. U n a o p e ra c ió n d e e s c r i t u r a s ó lo p o d rá
4 protected int bProtegido;
5 prívate int bPrivado; e fe c tu a rs e c u a n d o e l B u ! f e r S i m p l e e s té v a cío , m ie n tra s q u e las o p e ra ­
6 Se c o i ten lo s m étodos p ú b lic o s c io n e s d e l e c t u r a se e je c u ta n c u a n d o h a y a u n e le m e n to a lm a c e n a d o U n a
7 > l e c t u r a b**rra e l c o n te n id o d e l B u f f e r S i m p l e y d e v u e lv e e l v a lo r d e lo
8 q u e a lm a c e n a b a ju s to a n te s E sc rib a u n a c la s e g e n é ric a B u f f e r S i m p l e .
9 public class D eriv ad a e x te n d s Base d e fin ie n d o la s e x c e p c io n e s n e c e sa ria s p a ra la d e te c c ió n d e erro res.
10 <
11 public in t dPublico;
12
13
privóte in t dPrivado;
/ / s e om iten l o s métodos p ú b l ic o s
Prácticas de program ación
14 )
4 .1 7 . R e sc rib a la je r a rq u ía d e F i g u r a d e m o d o q u e s e c a lc u le e l á re a d e lo s ,*b
15
16 p u b l i c c l a s s Tesr je to s e n e l c o n s tru c to r d e la m is m a y se a lm a c e n e e n u n a trib u to d e la c l a ­
17 | se . I«»s c o n stru c to re s d e las c la s e s d e riv a d a s d e b e n p a s a r e l re s u lta d o de
lo public s t a ti c v o i d main! String ( 1 args > e s e c á lc u lo a l m é to d o s u p e r . El m é to d o u r e a d e b e se r fin a l y d e v o lv e r
19 | ú n ic a m e n te e l v a lo r «le e s e atrib u lo .
20 Base b - new B a s e I ) ; 4 . IX. A ñ a d a a la je r a rq u ía d e F i g u r a e l c o n c e p to d e p o sic ió n , in c lu y e n d o c o m o
21 D e r i v a d a d • n.-w D e r i v a d a ! );
atrib u to s las c o o rd en ad as necesarias. A ñada, d esp u és, un m éto d o d i s t a n c i a
22 '
4 .1 9 . E s c rib a u n a c la s e a b s tra c ta p a ra m a n ip u la r F e c h a s y s u c la s e d e riv a d a
23 S y s te m .o u t.p r in tln ! b .b P u b lic o • * * - b.fcProtegido • *
24 . b.bPrivado • • • • d.dPubiico • * * F ech aG reg o r i ana.
25 * d .d P riv a d o i: 4.211. I m p le m e n te u n a je r a r q u ía d e c o n tr ib u y e n t e s q u e c o n s i s ta e n u n a ín te r
26 la /. C o n t r i b u y e n t e y en la s c la s e s C o n t r i b u y e n t e S o l t e r o y
27 C o n t r i b u y e n t e C a s a d o q u e im p lc m c n ta n d ic h a in terfa z.
Figuro 4.21 P ro g ra m o p a i a c o m p r o b a r ta visibilidad

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 )

Problemas prácticos 3. I Jac«>bson. M C h ris tc rs o n . P Jo n s so n . y G . O v c rg a a rd . O b je e tO r ie n te d


S o ftw a re E n g in e e rin g : A U s e C a se P r iv e n A p p r o a c h (revisad**). A d d iso n
W e sle y . R e a d in g . M ass. 1 1992).
4 .1 2 . E sc rib a d o s m é to d o s g e n é ric o s m i n y nuax. C a d a u n o d e e llo s d e b e te n e r
d o s p a rá m e tro s d e tip o c o m p a r a b l e . E m p le e a m b o s m é to d o s s o b re la d a ­ 4. I). d e C h a m p e a u x , I). L ea. y P. F a u re . O b je c t-O r ie n te d S y s te m D evelo p -
se M i E n t e r o . m e n t. A d d iso n * W e sle y . R e a d in g . M ass. < 1995).
4 .1 3 . E scrib a d o s m é to d o s g e n é ric o s m i n y m a x q u e te n g a n c o m o p a rá m e tro d e
e n tra d a u n v e c to r d e C o m p a r a b l e s . E m p le e a m b o » m é to d o s s o b re la c la s e
M iEntero.
4 .1 4 . M o d ifiq u e e n e l e je m p lo d e la c la s e F i g u r a lo s m é to d o s l e e r F i g u r a y
m a i n . d e n u x lo q u e la n c e n y re c o g a n u n a e x c e p c ió n (e n lu g ar d e c re a r un
c ír c u lo d e ra d io c e ro ) , c u a n d o s e d e te c te u n e rr o r e n la e n tra d a
4 .1 5 . M o d ifiq u e la c la s e F i g u r a p a ra q u e e l a lg o ritm o g e n é ric o d e o rd e n a c ió n
p u e d a e m p le a rs e p a ra m a n ip u la r o b je to s d e e s e tip o .
Algoritmos
y fundamentos
de programación
5
C A P I T U L O __________________________________________________________

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:

• C ó m o e s tim a r e l tie m p o n e c e sa rio p a ra e je c u ta r un alg o ritm o .


• D iv e rs a s té c n ic a s q u e re d u c e n ra d ic a lm e n te e l tie m p o d e e je c u c ió n d e u n a l ­
g o ritm o .
• U n m a rc o m a te m á tic o q u e d e s c r ib e d e fo rm a rig u ro sa e l tie m p o d e e je c u ­
c ió n d e un alg o ritm o .
• C ó m o e sc rib ir u n a ru tin a sim p le d e b ú sq u e d a b in a ria .

5.1 ¿Q u é es el análisis d e algoritmos?


El tie m p o n e c e s a r io p a ra e je c u ta r u n a lg o ritm o d e p e n d e c a s i s ie m p re d e la can il
d a d d e d a to s q u e e l m ism o d e b e p ro c e s a r. E s d e e sp e ra r, p o r e je m p lo , q u e o rd e n a r
diez m il e le m e n to s req u ie ra m á s tie m p o q u e o rd e n a r d ie z . El tie m p o d e e je c u c ió n
d e un a lg o ritm o e s. p o r ta n to , fu n c ió n d e l ta m a ñ o d e la e n tra d a . E l v a lo r e x a c to de
e s ta fu n c ió n d e p e n d e d e m u c h o s fa c to re s , ta le s c o m o la \e lu c id a d d e la m áq u in a,
la c a lid a d d e l c o m p ila d o r, y e n a lg u n o s c a s o s , d e la c a lid a d d e l p ro g ra m a . P a ra un
p ro g ra m a fijo e je c u tá n d o s e s o b re u n o rd e n a d o r d a d o p o d e m o s d ib u ja r la g rá fic a
q u e re p re s e n ta la fu n c ió n d e l tie m p o d e e je c u c ió n . L a F ig u ra 5.1 ilu stra u n a d e
e sta s g rá fic a s so b re c u a tr o p ro g ra m a s. L a s c u rv a s re p re s e n ta n c u a tr o fu n c io n e s tí­
p ic a s e n e l a n á lisis d e a lg o ritm o s: lin e a l. (U N lo g .V ). c u a d rá tic a y c ú b ic a . E l ta ­
m a ñ o d e la e n tra d a N v a ría d e I a 1 0 0 e le m e n to s , y lo s tie m p o s d e eje c u c ió n
.im k'i.kI«»s v a ría n J e 0 a 10 m ilise g u n d o s U n sim p le v is ta z o j la s F ig u r a s 5 1 y 5

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

5.3 El problem a d e la su b secu en cia d e suma L l a lg o r itm o m á s s im p le c o n siste e n u n a b ú sq u e d a e x h a u s tiv a , o u n a lg o ritm o de


fu e rz a b ru ta c o m o s e m u e s tra e n la F ig u ra 5.4. L a s lín e a s 9 y 10 c o n tro la n d o s bu-
m áxim a c íe s q u e ite ra n s o b re to d a s las p o s ib le s su b s e c u e n c ia s. P a ra c a d a p o sib le s u b s e - !
c u e n c ia . e l v a lo r d e su s u m a se c a lc u la e n las lín e a s d e la 12 a la 15. S i e s a s u m a J
E n e s ta s e c c ió n c o n s id e ra m o s e l sig u ie n te p ro b le m a : e s m e jo r q u e la c a lc u la d a h a s ta e l m o m e n to , e n to n c e s s e a c tu a liz a e l v a lo r d e ^
su m a M ax , q u e fin a lm e n te s e d e v u e lv e e n la lín e a 2 5 . D o s v a lo r e s d e tip o i n t '
PROBLEMA DE LA SUBSECUENCIA DE SU M A M Á X I M A
— s e c l n i y s e c F i n (a trib u to s e s tá tic o s d e la cla se )— se a c tu a liz a n ta m b ié n
D a d a la s e c u e n c i a d e e n te r o s ( p o s ib le m e n te n e g a tiv o s ) A ,,A 2 A u.
c u a n d o se e n c u e n tra u n a su b s e c u e n c ia m ejor.
e n c o n t r a r ( e id e n t if ic a r l a s u b s e c u e n c i a c o r r e s p o n d i e n t e ) e l v a lo r
L l a lg o ritm o d e b ú sq u e d a e x h a u s tiv a tie n e e l m é rito d e se r e x tre m a d a m e n te
m á x i m o d e I ¿ =lA k. C u a n d o t o d o s lo s e n t e r o s s o n n e g a t i v o s e n t e n d e ­
s im p le : c u a n to m e n o s c o m p le jo e s u n a lg o ritm o , m ás p ro b a b le e s q u e se p ro g ra m e
m o s q u e la s u b s e c u e n c ia d e s u m a m á x im a e s la v a c ía , s ie n d o s u s u ­
c o n c o rre c c ió n . S in e m b a r g o , p o r lo g e n e ra l, lo s a lg o ritm o s d e b ú sq u e d a e x h a u s ti­
m a cero
v a n o s o n ta n e fic ie n te s c o m o s e r ía p o sib le . F.l re s to d e e s ta se c c ió n m u e s tra q u e el
P o r e je m p lo , p a ra la e n tra d a | 2 . I I . - 4 . 13. - 5 . 2}. la re s p u e s ta e s 2 0 . I-a m is­ tie m p o d e e je c u c ió n d e l a lg o ritm o e s c ú b ic o . C o n ta re m o s c u á n ta s v e c e s (co m o
m a c o rre s p o n d e a la su b s e c u e n c ia q u e a b a rc a los e le m e n to s d e l se g u n d o a l c u a rto fu n c ió n d e l ta m a ñ o d e la e n tr a d a ) se e v a lú a n las e x p re s io n e s d e la F ig u ra 5.4. S ó lo
n e c e sita m o s u n re s u lta d o e n n o ta c ió n O . a s í q u e u n a v e z e n c o n tr a d o e l té rm in o
: s c « p ie « ¡ u ta u n o d e l o » .V p u n i o s p u e d e w r c m p o r v j u d * c o n V I p u n i ó » . U< q u e n o * l l e v a a u n i«<«.-il «k- d o m in a n te , p o d re m o s ig n o ra r o tr o s té rm in o s d e m e n o r g ra d o y las c o n s ta n te s m u l­
'- u ? « - . a s í s e c u e n t a n d o s v e c e s l o s p a r e » . 4 . II v II. A. p o r l«> q u e h a y q u e d i v i d i r |» » r d«>s. tip lica tiv a s.
1 /•• e l ín d ice i re c o rre e l v e c to r e n te r o .) v a ría d e s d e i a l fin al d e l v e c to r, y k v a ría d e s ­
2 • A l g o r i t m o c ú b i c o p a r a l a s u b s e c u e n c i a cié s u m a m á x i m a .
d e i h a s t a ) . U n a e s tim a c ió n rá p id a y b u rd a n o s lle v a a q u e e l n ú m e ro d e le m a s es
3 • oeclni y s e o F in re p re s e n ta n la s e c u e n c i a m e j o r a c t u a l .
a lg o m e n o r q u e N * N * N . o i \ \ p u e s i . ) y k p u e d e n c a d a u n o to m a r u n o d e los
5 p u b lic s t a t i c i n t subsecuenriaSumaMaxima( int [ j a ) Y v a lo re s. L a re s tric c ió n a d ic io n a l i $ k í ) s irv e para re d u c ir e s te v a lo r. U n c á l­
6 ( c u lo precise» e s a lg o d ifíc il d e o b te n e r y se Ile s a a c a b o e n e l T e o re m a 5.1
7 i n t s u m a Ma x = 0 ; I a p a rle m ás im p o rta n te d e l T e o re m a 5 . 1 n o e s su d e m o s tra c ió n , s in o m á s b ien
8
el re su lta d o . May d o s fo rm a s d e c a lc u la r el n ú m e ro d e le m a s . U n a c o n siste e n e v a ­
9 f o r ( in t i = 0; i < a .le n g th ; i-- )
10 for( int j - i; j < a.length; j«* ) lu a r la s u m a I ; \ , I , v, , , I . P o d ría m o s c a lc u la r e s ta s u m a d e d e n tr o a fuera
11 ( 1 v é a se E je rc ic io 5 .8 ). U tiliz a re m o s, e n c a m b io , u n a fo rm a a lte rn a tiv a .
12 int sumaActual = 0;
13
14 for( i n t k = i ; k <= j ; k ++ )
15 s u m a A c t u a l *= a [ k | j E l n ú m e r o d e le r n a s o rd e n a d a s d e e n te r o s li. ) . k l q u e sa tisfa c e n 1
16
! « /« * < ) < V e s M N + 1 X.V + 2 ) 6.
17 if( sumaActual > s u ma Ma x )
18
19 s u mKa x = sumaActual;
20 seclni r i; C o lo q u e la s sifiu ie n le s N + 2 b o la s e n una t aj a: \ b o la s n u m e ra d a s d e s d e I
21 secFir. = j; I h a sta A . u n a b o la ro ja sin n u m e ra r, y u n a b o la a z u l sin n u m e r a r . R e tire
22 tr e s b o la s d e la c a ja . S i h a e x tr a íd o una In d a ro ja , n u m é re la c o n e l m e n o r
23 n ú m e ro d e la s b o la s e x tr a íd a s . S t h a e x tr a íd o a n a b o la a z u l , n u m é re la c o n
24
e l n ú m e ro m á s a lto d e las lu d a s e x tr a íd a s . O b s e n e q u e s i s a c a m o s la Inda
25 r e t u r n s uma Ma x ;
26 ) roja y la lu d a a z u l, e l e fe c to se r á q u e te n d r e m o s tr e s In d a s n u m e ra d a s d e
la m is m a m a n e r a . O rd e n e la s tres In d a s. C a d a / u n ib le o r d e n a c ió n c o r r e s ­
Figuro 5.4 Algoritm o c ú b ic o p a ro e l p roblem a a e la su b se cu en cia d e sum a m á­ p o n d e a u n a te r n a s o lu c ió n d e la e c u a c ió n e n e l te o r e m a 5.1. E l n ú m e ro
xima
d e o rd e n a c io n e s p o s ib le s e s e l n ú m e r o d e fo r m a s d ife r e n te s d e e x tr a e r tres
El tie m p o d e eje c u c ió n d e l a lg o r itm o e s tá d o m in a d o c o m p le ta m e n te p o r e l b u ­ In d a s s in r c e m p la z u m ie n to d e u n a c o le c c ió n d e .V + 2 b o la s . E s to e s s i m i­
cle i • m á s in te rn o d e las lín e a s 14 \ 15. C u a tr o e x p re s io n e s se e je c u ta n d e fo rm a la r a l p r o b le m a d e se le c c io n a r tr e s p u n to s d e u n c o n ju n to d e N . q u e c a l ­
rep elid a: c u la m o s e n la S e c c ió n 5.2. p o r l o q u e in m e d ia ta m e n te o b te n e m o s e l re s u l­
ta d o d eseado.
1. L a in ic ia li/a c ió n k = i
2. L a c o m p ro b a c ió n k <= j
3. L a m o d ific a c ió n s u m a A c t u a l ♦= a [ k I L a c o n s e c u e n c ia d e l T e o re m a 5.1 e s q u e e l b u c le f o r m á s in te rn o ju s tif ic a un
4. E l in c re m e n to k » * tie m p o d e e je c u c ió n c ú b ic o . E l re s to d e tra b a jo d e l a lg o ritm o n o tie n e c o n s e c u e n ­
c ia s s a q u e se re p ite , c o m o m u c h o , u n a v e z p o r ite ra c ió n d e l b u c le m á s interno.
El n ú m e ro d e v e c e s q u e se e je c u ta la in stru cció n 3 la h a c e e l té rm in o d o m in a n te D ic h o d e o tra fo rm a, e l c o s te d e las lín e a s 17 a 2 2 n o tie n e c o n s e c u e n c ia s p o rq u e
d e e n tre las c u a tro e x p re s io n e s. P ara v e r q u e e s to e s c ie rto , o b se rv e p rim e ro q u e c a ­ se e je c u ta so la m e n te ta n a m e n u d o c o m o la im c ia liz a c ió n d e l b u c le f o r m á s in te r­
d a in ic ia li/a c ió n e s tá a c o m p a ñ a d a d e al m e n o s u n a c o m p ro b a c ió n . N o so tro s ig n o ra ­ n o . e n v e z d e ta n a m e n u d o c o m o e l c u e rp o d e e s te b u c le . E n c o n s e c u e n c ia , e l a l ­
m os las c o n sta n te s, p o r lo q u e p o d e m o s d e s c a rta r e l c o s te d e la s in ic ia li/a c io n c s ; o s­ g o ritm o e s (M N ).
la s n o p u e d e n s e r e l c o s te d o m in a n te d e l a lg o ritm o . Y a q u e la c o m p ro b a c ió n d e la E l a rg u m e n to c o m b in a to rio p re v io n o s p e rm ite o b te n e r un c á lc u lo p re c is o del
e x p re s ió n 2 e s fa lsa e x a c ta m e n te u n a v e z p o r b u c le , e l n ú m e ro d e com p ro b acio n es n ú m e ro d e ite ra c io n e s d e l b u c le m ás in tern o . P a ra u n c á lc u lo e n u n o rd e n d e c re c i­
sin é x ito realizad as p o r la e x p re sió n 2 e s e x ac ta m en te e l m ism o q u e el d e in ic ia li/a - m ie n to O . e s to n o e s re a lm e n te n e c e s a rio ; s ó lo n e c e s ita m o s sa b e r q u e e l te rm in o
ciones. E l nu m ero d e co m p ro b a cio n e s c o n éx ito , e l n ú m e ro d e m o d ific a c io n e s realiza­ p rin c ip a l e s u n n ú m e ro c o n s ta n te d e v e c e s N \ M ira n d o e l a lg o ritm o , v e m o s u n (
d a s p o r la e x p resió n 3 y e l nú m ero d e in crem en to s realizad o s p o r la e x p resió n 4 son b u c le d e ta m a ñ o p o te n c ia l Ar d e n tr o d e un b u c le d e ta m a ñ o p o te n c ia l /V d e n tr o d e r
lo d o s idénticos. P o r tanto, e l n ú m e ro d e m o d ificacio n es re alizad as p o r la e x p resió n 3 o tro b u c le d e ta m a ñ o p o te n c ia l .V. E s to n o s d ic e q u e e l trip le b u c le g e n e ra p o le n - i
te s d ecir, el n ú m e ro d e v eces q u e se e je c u ta la lín ea 15) e s u n a m e d id a d o m in a n te c ia lm c n te V * V * N ite ra c io n e s. E ste p o te n c ia l e s s ó lo a lre d e d o r d e s e is v e c e s :
d e l tra b a jo re a liz a d o p o r e l b u c le m á s in te rn o . m a y o r q u e lo q u e n u e stro c á lc u lo p re c is o m o s tra b a q u e re a lm e n te o c u rría . Y a que
E l n ú m e ro d e v e c e s q u e s e e je c u ta la lín e a 15 e s e x a c ta m e n te ig u al al n ú m e ro d e c u a lq u ie r m a n e ra las c o n s ta n te s se ig n o ra n , p o d e m o s a d o p ta r la re g la g en eral
d e te m a s o rd e n a d a s ( / , ) , k ) q u e s a tis fa c e n I $ N r E s to e s a s í p o rq u e p o r la c u a l c u a n d o te n e m o s b u c le s a n id a d o s p o d e m o s m u ltip lic a r e l c o s te d e la
in s tru c c ió n m á s in te rn a p o i e l ta m a ñ o «le c a d a b u c le a n id a d o p a ra o b te n e r u n a c o ta (
s v a r f a n J o O u .V I . H e m o s u i il i/ .u l o e l e q u iv a l e n te a lg o r í tm ic o d e I a V . p a r a s i m p l t l i i a r e l a n á lis is . su p e rio r. E n la m a y o r ía d e lo s c a so s , e s ta c o ta s u p e r io r n o su p o n d rá u n a g r a n 1
so b re e stim a c ió n . P o r ta n to , u n p ro g ra m a c o n tr e s b u c le s a n id a d o s , c a d a u n o de 5.3.3 Un algoritm o lineal
lo s c u a le s re c o rre u n a g r a n p o rc ió n d e u n v e c to r, e s p ro b a b le q u e te n g a u n c o m ­
p o rta m ie n to (H N Y O b s é rv e s e q u e tre s b u c le s c o n s e c u tiv o s (n o an id a d o s» te n d rá n
P a ra p a s a r d e u n a lg o ritm o c u a d rá tic o a o tro lin e a l, n e c e sita ría m o s e lim in a r u n b u - S»
u n c o m p o rta m ie n to lin e a l: e s e l a n id a m ie n lo l o q u e lle v a a u n a e x p lo s ió n c o m b i­
e le a n id a d o m á s . S in e m b a rg o , a d ife re n c ia d e l a re d u c c ió n ilu stra d a e n las F ig u ras
n a to ria P o r c o n s ig u ie n te , p a ra m e jo ra r e l a lg o ritm o , n e c e s ita m o s e lim in a r u n b u ­
5 .4 v 5 .5 . d o n d e la e lim in a c ió n d e u n b u c le fue se n c illa , n o e s fácil lib rarse d e u n ^
c le . E s to s e lo g ra e n la p ró x im a secc ió n .
b u c le m ás. E l p ro b le m a e s q u e e l a lg o ritm o c u a d rá tic o re p re se n ta a ú n u n a b ú s q u e ­
d a e x h a u s tiv a : e s d e c ir, e s ta m o s e x a m in a n d o to d a s las p o sib le s su b s e c u e n c ia s. L a 01
5.3.2 Un algoritm o m ejorado 0 ( N 2) ú n ic a d ife re n c ia e n tr e lo s a lg o ritm o s c ú b ic o > c u a d rá tic o e s q u e e l c o s te «le c o m ­
p ro b a r c a d a su b s e c u e n c ia su c e s iv a e s c o n s ta n te (H I ) e n v ez d e lin eal Va
S i p o d e m o s e lim in a r un b u c le d e l a lg o ritm o , g e n e ra lm e n te p o d re m m re d u c ir el q u e e l n ú m e ro d e s u b s e c u e n c ia s p o sib le s e s c u a d rá tic o . la ú n ic a fo rm a d e c o n s e ­
tie m p o d e eje c u c ió n . ¿ C ó m o p o d e m o s e lim in a r un b u c le ? O b v ia m e n te , no siem p re g u ir u n a c o ta s u h c u a d rá tic a e s e n c o n tra r un ra z o n a m ie n to a s tu to q u e n o s p e rm ita
p o d e m o s. S in e m b a rg o , e l a lg o ritm o a n te rio r c o n tie n e m u c h o s c á lc u lo s in n ece sario s. d eja r d e c o n s id e ra r u n g ra n n u m e ro d e su b s e c u e n c ia s. sin c a lc u la r su s s u m a s ni
L a in e íic ie n c ia q u e e l a lg o r itm o m e jo ra d o c o rrig e p u e d e v e rs e o b s e rv a n d o q u e c o m p r o b a r si e s a s u m a es un n u e v o m á x im o . E sta s e c c ió n m u e s tra c o m o h acerlo .
c o m o q u ie r a q u e s e tie n e L J t l A t = A f * E J . ,'/'*> c * c á lc u lo e n e l b u c le r o » m ás E lim in a m o s p rim e ro un g ran n ú m e ro d e s u b s e c u e n c ia s p o sib le s. IX -notarem os
in te rn o d e la F ig u ra 5 .4 e s e x a g e ra d a m e n te c o s to s o . M á s c o n c re ta m e n te , u n a v e / p o r A, , la su b s e c u e n c ia q u e a b a rc a lo s e le m e n to s d e l / a l j . s ie n d o .V, , s u sum a.
q u e a c a b a m o s d e c a lc u la r la su m a d e la su b s c c u c n c ia q u e se e x tie n d e d e s d e / h a sta
j - I. c a lc u la r la s u m a d e la su b s e c u e n c ia q u e se e x tie n d e d e s d e / h a s ta j n o d e b e ­
ría lle v a rn o s m u c h o tie m p o , p u e s s ó lo n e c e s ita m o s u n a s u m a a d ic io n a l. S in e m ­
S e a A , , u n a s e c u e n c ia c u a lq u ie r a c o n S, , < (1. T e n e m o s q u e si q > j . T
b a rg o . e l a lg o ritm o c ú b ic o n o u ti li /a e s ta in fo rm a c ió n . S i u tiliz a m o s e s ta o b s e rv a ­
e n lo m e s A, (/ n o e s la s u b s e c u e n c ia tic s u m a m ín im a .
c ió n . o b te n e m o s e l a lg o ritm o m e jo ra d o m o s tra d o e n la F ig u ra 5 5 . T e n e m o s dos
b u c le s a n id a d o s e n v e z d e tre s, d e m o d o q u e e l tie m p o d e e je c u c ió n e s ( H N 2).
lu í su m a J e lo s e le m e n to s d e A d e s d e 1 h a s ta q e s la su m a d e lo s e le m e n to s T.
1 /• • d e A d e sd e 1 h a s ta ) m á s la s u m a d e lo s e le m e n to s d e u le / ♦ I h a s ta q . Te­
2 • A lgoritm o c u a d r á ti c o p a ra la subsocuer.cia d« suna m x i i u .
n e m o s . p o r to n to . S ,.v = 5 , , ♦ .V,. 1 r Y a q u e S l f < 0 . s a b e m o s que
3 • s e c l n i y se c P in re p re se n tar, la su b se c u e n c ia m ejor a c t ú a . .
4 •/ S ,„ < V i . » P iu le m o s e n to n c e s d e d u c ir q u e A , „ n o e s lo su b secu en cia
5 public static i n t au b — cuanciaSumaMaxima( int ( l a ) d e su m o n u n im a .
6 {
7 i n t BUM.Max • 0;
8 L a F ig u ra 5 .6 m u e s tra u n a re p re se n ta c ió n g rá fic a «le las su m a s g e n e ra d a s p o r i.
9 fort int i ■ 0; i < a.length; i** > j y q E l T e o re m a 5 .2 d e m u e s tra q u e e s p o s ib le e v ita r e x a m in a r d iv e r s a s subse-
10 (
c u e n c ia s . in c o rp o ra n d o u n a c o m p ro b a c ió n a d ic io n a l: sie m p re q u e s u m a A c t u a l
11 int sumaActual = 0;
12 s e a m e n o r q u e c e ro , p o d e m o s s a lir d e l b u c le m á s in te rn o d e la F ig u ra 5.5. In tu iti­
13 íort int j = i? j < a.length; > v am en te. si v e m o s u n a su b s e c u e n c ia c u y a s u m a e s n e g a tiv a , la m ism a n o p u e d e
14 fo rm a r p a rle d e la s u b s e c u e n c ia m á x im a , p u es p o d e m o s o b te n e r u n a su b s e c u e n c ia
15 sumaActual «- a | j J; m a y o r su p rim ié n d o la . E sta o b serv a c ió n p o r si m is m a n o e s s u fic ie n te p a ra re d u c ir
16
e l tie m p o d e e je c u c ió n p o r d e b a jo d e l c u a d rá tic o . U n a o b s e rv a c ió n s im ila r ta m ­
17 i 1 < sumaActual > sumaMax)
18 b ié n e s c ie rta : U nías las s u b s e c u e n c ia s q u e b o rd e a n la s u b s e c u e n c ia m á x im a deb en
19 n u ma Ka x • s u m a A c t u a l ; te n e r s u m a n e g a tiv a o c e r o (d e o tra fo r m a , las a ñ a d ir ía m o s ). E s to ta m p o c o r e d u ­
20 s e c ln i ■ i; c e e l tie m p o d e e je c u c ió n p o r d e b a jo d e l c u a d rá tic o . S in e m b a r g o , u n a te r c e ra
21 secPin • J; o b s e r v a c ió n , ilu s tra d a e n la F ig u ra 5 .7 . s í q u e l o h a c e L a f o r m a liz a m o s e n el
22
23 T e o re m a 5 .3.
24
25
26 r e t u r n s u m a Ma x ;
27 }
<0
Figuro 5.5 Algoritm o c u a d rá tic o p o ra lo o b ten ció n d e lo su b secu en cia d e sum a
m ó x im a <s.
IiiM íj u n e j e m p l o e n e l c u a l l a m u l l í p l i c a c n V n d e l t a m a ñ o d e lo% h u e l o l l e v a a s o b r e e s t i m a r e l r e s u l t a d o O Figuro 5.6 Las su bsecuen cias utilizadas e n e l Teorem a 5.2
1 /• •
I n+ I H ' 2 * A l g o r i t m o L i n e a l p a r a l a s u b s e c u e n c i a d e su ma m á x i m a .
• s e c l n i y s e c F i r . r e p r e s e n ta n l a s e c u e n c i a m e j o r a c t u a l
________________

(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

c ia A p ^ tie n e u n a s u m a c a m a m u c h o ig u a l a la d e la s u b s e c u e n c ia A , (/ Figura 5 8 Algoritm o lineal p a ra la ob tención d e la su bsecuen cia Oe suma móxlma


q u e y a luí s i d a c o n sid era d a .

D E F I N I C I Ó N : ((7) / ( V | e s <MF [ N )) si e x is te n c o n s ta n te s p o sitiv a s < y N o to­


F l T e o re m a 5 .3 n o s d ic e q u e c u a n d o se d e te c ta u n a su b s e c u e n c ia n e g a tiv a , no le s q u e p a ra N S? N „ se v e rific a 7 V ) ^ c F ( N >.
só lo p o d e m o s sa lir d e l h u e le m á s in te rn o , s in o q u e p o d e m o s a v a n / a r i h a s ta j * 1 .
D E F I N I C I Ó N : <S2) 7 ( V ) e s Q l F i N )) si e x is te n c o n s ta n te s p o sitiv a s c y JV„ ta ­
1.a F ig u ra 5 .8 m u e s tra c ó m o p o d e m o s re s c rib ir e l a lg o ritm o u tiliz a n d o u n s o l o b u ­
les q u e p a ra N ^ JV„ se v e rific a T N ) ^ c F i N ).
c le . C la ra m e n te , e l tie m p o d e e je c u c ió n d e e s te a lg o ritm o e s lin ea l: e n c a d a p a so
d e l b u cle, a v a n z a m o s j . a s í q u e e l b u c le se ite ra c o m o m u c h o V v e c e s . L a c o rr e c ­ D E F I N I C I Ó N : ( 0 ) T N ) e s S i F i N » si y s ó lo si T ( N ) e s ( M F ( N ) ) y T N ) es
c ió n d e e s te a lg o ritm o e s m e n o s o b \ la q u e e n lo s c a s o s a n te rio re s. H slo e s típ ico : Í HF( N) ) .
lo s a lg o ritm o s q u e u tiliz a n la e s tru c tu ra d e l p ro b le m a p a ra e v ita r u n a b ú sq u e d a e x ­
D E F I N I C I Ó N : (o ) Ti V ) e s o i F i N )) si y s ó lo si T ( N ) e s ( H F ( N ) ) y T t N ) n o es
h a u stiv a re q u ie re n h a b itu a lm e n te a lg ú n tip o d e d e m o s tra c ió n d e c o rre c c ió n . Me­
OiFiN)).
m o s p ro b a d o q u e e l a lg o ritm o (a u n q u e n o e l p ro g ra m a J a v a c o rre sp o n d ie n te ) es
c o rr e c to u tiliz a n d o un a rg u m e n to fo rm a l. N u e stro p ro p ó s ito n o e s re a liz a r u n a L a p rim e ra d e fin ic ió n , c o rre s p o n d ie n te a la n o ta c ió n O . a f ir m a q u e e x is te un
c o m p le ta d is c u s ió n m a te m á tic a , s in o d a r u n a id e a d e las té c n ic a s q u e p o d ría n se r p u n to No ta l q u e p a ra to d o s lo s v a lo re s d e N d e s p u é s d e e s te p u n to . T N ) e s tá a c o ­
n e c e sa ria s e n u n tra b a jo m á s a v a n z a d o . ta d a p o r a lg ú n m ú ltip lo d e /( .Y >. É ste e s e l N su fic ie n te m e n te g ra n d e q u e m e n c io ­
n á b a m o s a n te rio rm e n te . P o r ta n to , si e l tie m p o d e e je c u c ió n T N ) d e un a lg o ritm o
e s O (iY -), e n to n c e s , ig n o ra n d o las c o n s ta n te s , p o d e m o s g a ra n tiz a r q u e a p a rtir de
un p u n to s e p u e d e a c o la r e l tie m p o d e e je c u c ió n m e d ia n te u n a fu n c ió n c u a d rá tic a .
5.4 Reglas generales p ara la notación O O b sé rv e se q u e si e l tie m p o d e e je c u c ió n re a l e s lin e a l, la a firm a c ió n d e q u e el
tie m p o d e e je c u c ió n e s O i N 2) e s té c n ic a m e n te c o rre c ta , p o rq u e la d e sig u a ld a d es
U n a v e z te n e m o s las id eas b á sic a s d e l a n á lis is d e a lg o ritm o s, p o d e m o s a d o p ta r un \á l id a . S in e m b a rg o , d e c ir q u e d ic h o tie m p o e s ( ) { N i s e r ía la a firm a c ió n m á s p re ­
e n fo q u e u n p o c o m á s fo rm a l. F.sta s e c c ió n m u e s tra las re g la s g e n e ra le s p a ra u tili­ c is a p o sib le.
z a r la n o ta c ió n O . A u n q u e e n e s te te x to se u tiliz a c a s i d e fo rm a e x c lu s iv a la n o ta ­ Si u tiliz a m o s los o p e ra d o re s d e d e sig u a ld a d tra d ic io n a le s p ara c o m p a ra r tasas
c ió n O . s e d e fin e n o tr o s tre s tip o s d e n o ta c ió n q u e e s tá n re la c io n a d o s c o n e lla y d e c re c im ie n to , e n to n c e s la p rim e ra d e fin ic ió n n o s d ic e q u e la ta s a d e c re c im ie n to
q u e s e u tiliz a rá n d e fo rm a o c a sio n a l m á s a d e la n te e n e l tex to. d e T N ) e s m e n o r o ig u a l q u e la d e / ( N ).
I.i s e g u n d a d e fin ic ió n . H X t - í h / ( V i ) . c o rre sp o n d ie n te a la lla m a d a n o U n a v e z fo rm a liz a d o s e sto s c o n c e p to s m a te m á tic o s , lo s p o n d re m o s e n re lació n
u u io n O m e g a . n o s d ic e q u e la lasa d e c re c im ie n to d e f( V » e s m a y o r o ig u a l q u e la c o n e l a n á lisis d e a lg o ritm o s. L a re g la m á s im p o rta n te e s q u e e l liem/M t d e e je c u ­
d e F i \ ) . P o r e je m p lo , puniríam o s d e c ir q u e c u a lq u ie r a lg o ritm o q u e e x a m in e til­ c ió n d e u n b u c le e s c o m o m u c h o e l tie m p o d e e je c u c ió n d e la s in s tru c c io n e s
d as las p o sib le s s u b s e c u e n c ia s e n e l p ro b le m a d e la su b s e c u e n c ia d e su m a m áx im a d e n tr o d e l b u c le (in c lu y e n d o lo s te s ts ) m u ltip lic a d o p o r e l n ú m e ro d e itera cio n es.
d e b e te n e r u n tie m p o d e e je c u c ió n p o rq u e so n p o sib le s u n n ú m e ro c u a d ra C o m o v im o s a n te s , la im c ia liz a c ió n y la c o m p ro b a c ió n d e la c o n d ic ió n d e l bucle
tic o d e su b s e c u e n c ia s. E s te e s u n a rg u m e n to s o b a - u n a c o ta in te rio r, q u e se u tiliz a e s h a b itu a l m e n te m e n o s d o m in a n te q u e la s in s tru c c io n e s q u e fo rm a n e l c u e rp o del
e n a n á lisis m á s a v a n z a d o s M ás ta rd e e n e s te te x to . \e r e m o s u n e je m p lo d e e llo ,
bucle.
d o n d e se d e m u e s tra q u e c u a lq u ie r a lg o ritm o d e o rd e n a c ió n d e p ro p ó s ito g en e ra l E l tie m p o d e e je c u c ió n d e las in s tru c c io n e s d e n tr o d e un g ru p o d e b u c le s a n i­
re q u ie re u n tie m p o íit.V log Y ).
d a d o s e s e l tie m p o d e e je c u c ió n d e la s in s tru c c io n e s (in c lu y e n d o la c o m p ro b a c ió n
L a te rc e ra d e fin ic ió n . / i . \ >= 0 ( 7 ( .V i», c o rre s p o n d ie n te a la d e n o m in a d a n o ta ­ d e la c o n d ic ió n d e l b u c le m á s in tern o » m u ltip lic a d o p o r e l ta m a ñ o d e to d o s lo s b u ­
c ió n P u ta , n o s d ic e q u e la o b te n c ió n d e la ta s a d e c re c im ie n to d e l ( \ > e s ig u a l c le s. El tie m p o d e e je c u c ió n d e u n a se c u e n c ia d e b u c le s c o n s e c u tiv o s e s ig u al al
q u e la d e F i N ). P o r eje m p lo , e l a lg o ritm o p a ra la su b s e c u e n c ia d e s u m a m á x im a tie m p o d e e je c u c ió n d e l b u c le d o m in a n te . L a d ife re n c ia e n tie m p o e n tre d o s b u ­
d e la I ig u ia 5 .5 se e je c u ta e n u n tie m p o <-)(.V: ). E s to sig n ific a q u e e l tie m p o de c le s a n id a d o s c u y o s ín d ic e s v a ría n d e I a A y d o s b u c le s c o n s e c u tiv o s n o a n id a d o s
e je c u c ió n e s tá a c o la d o p o r u n a Iu n c ió n c u a d rá tic a y q u e e s ta c o ta n o p u e d e m e jo ­ p e ro q u e s e e je c u ta n so b re lo s m is m o s ín d ic e s e s la m is m a q u e la d ife re n c ia de
ra rse . p u e s el a lg o r itm o ta m b ié n e s tá a c o la d o in te rio rm e n te p o i o tra fu n c ió n c u a ­ e s p a c io e n tre u n a m a triz b id im e n s io n a l y d o s v e c to re s u n id im e n s io n a le s. E l s e ­
d rá tic a . C u a n d o u tiliz a m o s la n o ta c ió n (-). e s ta m o s p ro p o rc io n a n d o n o so la m e n te g u n d o c a s o e s lin e a l, p u e s Y + Y e s 2/V. q u e e s ( X N ) . E n o c a sio n e s, e s ta sim p le
u na c o ta su p e rio r d e l tie m p o tic e je c u c ió n d e l a lg o ritm o , sin o q u e g a ra n tiz a m o s re g la p u e d e s o b re s tim a r e l tie m p o d e e je c u c ió n , p e r o e n la m a y o ría d e lo s c a so s no
q u e e l a n á lis is q u e n o s lle v a a e s ta c o ta s u p e r io r e s lo m á s a ju s ta d o p o sib le . A lo h a c e . E n c u a lq u ie r c a s o n o h a y p ro b le m a s, p u e s la n o ta c ió n O n o g a ra n tiz a una
p e s a r d e la p re c is ió n a d ic io n a l fa c ilita d a p o r la n o ta c ió n (-). la n o ta c ió n O se u t i ­ a* sp uesta a s in ió lic a e x a c ta , s in o ta n s ó lo u n a c o la su p erio r.
liz a m á s e x te n s a m e n te , e x c e p to p o r i n s t i g a d o r e s e n e l c a m p o d e l a n á lis is de L o s a n á lis is q u e h e m o s re a liz a d o h a s ta a h o ra s o n c o la s e n e l c a s o p e o r . que
a lg o ritm o s.
g a ra n tiz a n e l tie m p o so b re to d a s las e n tra d a s d e c ie r to ta m a ñ o . O tr o tip o d e a n á li­
L a ú ltim a d e fin ic ió n . I \ X ) = o i F t \ »>. c o rre sp o n d ie n te a la d e n o m in a d a n o tació n s is e s e l a n á lis is e n e l c a s o m e d io . E n e s te c a s o , e l tie m p o d e e je c u c ió n se i*btiene
<>. n o s d ic e q u e la tasa d e c re c im ie n to d e T i Y > e s e stric ta m e n te m e n o r q u e la de c o m o la m e d ia sobre to d a s la s p o sib le s e n tr a d a s d e ta m a ñ o Y L a m e d ia p»>dria d i ­
F iN ). E s to d ifie re ríe la n o tac ió n O . p u e s O a d m ite la p o sib ilid a d d e q u e la s ta s a s d e fe rir d e l c a s o p eo r si. p«>r e je m p lo , u n a in s tru c c ió n c o n d ic io n a l q u e d e p e n d e d e la
c re c im ie n to sean ig u ales p o r e je m p lo , m e l tie m p o d e e je c u c ió n d e u n a lg o ritm o es e n tra d a p a rtic u la r h a c e q u e e l b u c le te rm in e rá p id a m e n te . I a ' c o ta s e n e l c a s o m e ­
o i X ' ) . se g a ran tiza q u e c re c e c o n u n a tasa m e n o r q u e c u a d rá tic a (e s d e c ir, e s suh- d io se d is c u te n m á s fo rm a lm e n te e n la S e c c ió n 5 .8 . P*»c a h o ra , te n g a e n c u e n ta q u e
c u a d rá tic a ). P o r tanto, te n e r exim o c o ta o i \ : ) e s m e jo r q u e te n e r c o m o c o ta <-fcY '> e l h e c h o d e q u e u n a lg o ritm o te n g a m e jo r c o la e n e l casi) pc«* q u e o tro , n o im p lica
L a F ig u ra 5 .9 ilu stra los sig n ific a d o s d e e sta s c u a tro d e fin ic io n e s n a d a so b re su s c o ta s e n e l c a s o m ed io . S in e m b a rg o , e n m u c h o s c a s o s las c o la s e n
R e su lta o p o r tu n o a q u í c o m e n ta r u n p a r d e n o ta s d e e s tilo . N o e s d e b u e n e s- e l c a s o p e o r y e n e l c a s o m e d io e s tá n fu e rte m e n te re la c io n a d a s . C u a n d o n o lo e s ­
ti lo in c lu ir c o n s ta n te s o té r m in o s d e o rd e n m e n o r q u e e l d o m in a n te d e n tr o d e la tén . se d is c u tirá n p o r se p arad o .
n o ta c ió n O N o e s c r ib a / ( Y ) = í> t2.V : > ni TLV ) = < h \,? + V ). E n a m b o s c a so s, E l ú ltim o a s u n to re fe re n te a la n o ta c ió n O q u e d is c u tim o s e s c ó m o c re c e el
la fo rm a c o r r e c ta s e r ía 7 \ N ) = ( H N ~ ) . R e c u e rd e q u e e n c u a lq u ie r a n á lis is q u e tie m p o d e e je c u c ió n p a ra c a d a tip o d e c u rs a . Y a v im o s e s to e n las g rá fic a s d e las
re q u ie ra u n a re s p u e s ta O , so n p o s ib le s to d o tip o d e a b re v ia tu r a s . L o s té rm in o s F ig u ra s 5.1 y 5.2. P e ro q u e re m o s u n a re p u e s ta m á s c u a n tita tiv a a la s ig u ie n te p r e ­
d e o rd e n in te rio r, las c o n s ta n te s y lo s s ím b o lo s re la c ió n a le s p u e d e n e lim in a rs e g u n ta : si un a lg o ritm o ta rd a u n tie m p o T I N ) e n re s o lv e r u n p ro b le m a d e ta m a ñ o N.
to d o s.
¿ c u á n to tie m p o ta rd a rá e n re s o lv e r un p ro b le m a d e ta m a ñ o m a y o r? P o r eje m p lo ,
¿ c u á n to ta r d a rá e n re s o lv e r e l p ro b le m a c u a n d o e l ta m a ñ o d e la e n tr a d a se m u lti­
p lic a p o r d ie z ? L a s re s p u e s ta s e x a c ta s e x p e rim e n ta le s s e m u e s tra n e n la F ig u ra
Expresión m atem ática ín d ice s d e crecim iento relativos 5 10 S in e m b a rg o , n o s g u sta ría c o n te s ta r la p re g u n ta sin te n e r q u e e je c u ta r e l p r o ­
g ra m a . c o n fia n d o e n q u e n u e s tra re s p u e sta a n a lític a c o rr e s p o n d a c o n e l c o m p o rta ­
7 N ) = (HFiN)) El cre crm e n fo d e K N ) es c q u e et cre erm en to d e R N) . m ie n to » * b scnado
E m p e c e m o s e x a m in a d o e l a lg o ritm o c ú b ic o . P»*r h ip ó te s is . a su m im o s q u e el
T I N ) - I h F i X »» El crecim ien to d e K N ) e s * q u o ei cro crm en to do R N ) tie m p o d e e je c u c ió n e s tá aproxim ad»» d e m a n e ra ra/»»nable p«»r T i N ) = c N . En
c o n s e c u e n c ia te n d re m o s / ( I0 V >= <1 I0 .V > \ A h o ra u n as s im p le s m a n ip u la c io n e s
7\ N ) = G i F i N ) ) El crecim iento d e KN) e s ■ q u e et crecim iento d o RN) . m a te m á tic a s n o s lle v a n a

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

D E F IN IC IO N P ara c u a lq u ie r II. N > 0. lo g /, N = K si H K = N. o t


7 < I(),V) = IOOoV“ = l(X)7'(N). ba
E n e s ta d e fin ic ió n . II e s la b a s e d e l lo g a ritm o E n c o m p u ta c ió n , c u a n d o la báse­ co
ale
P o r ta n to , c u a n d o e l ta m a ñ o d e la e n tra d a se in c re m e n ta p o r u n fa c to r 10. e l tie m ­ s e o m ite , p o r d e fe c to s e to m a e l v a lo r 2. E s to e s n atu ral p o r v a ria s ra z o n e s , co m o
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 s e in c re m e n ta p o r un fa c to r a p ro x im a ­ se v e rá m á s a d e la n te e n e s te m ism o c a p ítu lo . D e m o stra re m o s u n re s u lta d o m a te ­
d o d e l(X>. E s to ta m b ié n p u e d e c o n firm a rse e n la F ig u ra 5 .I 0 . E n g e n e ra l, un in ­ m á tic o . e l T e o re m a 5 .4 . e n e l q u e m o s tra m o s q u e . e n lo q u e se re fie re a la n o ta ­
c re m e n to p o r u n f a c t o r / d e l ta m a ñ o d e la e n tra d a p ro d u c e u n in c re m e n to p o r un c ió n O . la b a s e n o e s im p o rta n te . V e re m o s ta m b ié n c ó m o p u e d e n s e r d e riv a d a s d i ­
f a c t o r / - d 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 . v ersa s re la c io n e s q u e in v o lu c ra n lo g a ritm o s.
F in a lm e n te , p a ra u n a lg o r itm o lin e a l, c á lc u lo s sim ila re s m o s tra ría n q u e u n in­
c re m e n to p o r d ie z d e l ta m a ñ o d e la e n tra d a tie n e c o m o re s u lta d o u n in c re m e n to
p o r diez, d e l tie m p o d e e je c u c ió n . U n a v e z m á s . e s to p u e d e se r c o n firm a d o e x p e ri- I j i b a se n o e s im portante. P a ra cu a lq u ie r co n sta n te H > I. log/, N = (X log N ). Ti
m e n ta lm e n te . O b se rv e , sin e m b a rg o , q u e p a ra e l p ro g ra m a lin e a l e l té rm in o s u fi­
c ie n te m e n te g r a n d e sig n ific a u n a e n tra d a a lg o m a y o r q u e e n los o tr o s c a s o s . E sto S e a lo g /, N = K . E n to n c e s I I K = N . S e a C = log II. E n to n c e s 2* = II. D e este Di
e s d e b id o a la s o b re c a rg a d e 0 .0 0 0 3 se g u n d o s q u e a p a re c e e n lin io s lo s c a s o s . Pura m o d o . l i K = (2 ( )K = N . P o r ta n to , te n e m o s q u e 2( k = N . lo c u a l im p lica
u n p ro g ra m a lin e a l, e s te té rm in o e s to d a v ía s ig n ific a tiv o p a ra ta m a ñ o s d e e n tra d a q u e lo g N = C K = C lo g ,, N . P o r ta n to . lo g „ N = ( l o g N i . (lo g II). l o que
m o d e ra d o s. c o m p le ta la d em o stra c ió n .
E l a n á lisis u tiliz a d o e n e sto s c a s o s n o s irv e c u a n d o hay té rm in o s lo g a rítm ic o s.
C u a n d o e l ta m a ñ o d e la e n tra d a d e u n a lg o ritm o CHN lo g /V ) s e m u ltip lic a p o r E n e l re s to d e l te x to , u tiliz a re m o s e x c lu s iv a m e n te lo g a ritm o s e n base 2. U n
d iez , e l tie m p o d e e je c u c ió n s e in c re m e n ta e n u n fa c to r q u e e s a lg o m a y o r que h e c h o im p o rta n te so b re lo s lo g a ritm o s e s q u e c r e c e n le n ta m e n te . C o m o q u ie r a q u e
2 m = 1.024. loi* 1 .0 2 4 = 10. C á lc u lm a d ic io n a le s m u e s tra n q u e e l lo g a ritm o d e un ite ra c io n e s e n e l b u c le . C u a lq u ie r fra c c ió n c o n s ta n te sirv e. >a q u e la fra c c ió n e s tá Eir
m illó n e s a p ro x im a d a m e n te 2 0 . y e l lo g a ritm o d e u n b illó n a p ro x im a d a m e n te 40. re fle ja d a e n la b a s e d e l lo g a ritm o , y e l T e o re m a 5 .4 n o s d ic e q u e la b a s e n o e s N~(
P o r c o n s ig u ie n te , e l re n d im ie n to d e u n a lg o ritm o ( X N lo g N ) e s tá m u c h o m á s c e r ­ im p o rtan te.
♦ . . * ^ I
c a d e u n a lg o ritm o lin eal ( X N ) q u e d e u n o c u a d rá tic o ( X N ~ ) . in c lu s o p a ra ta m a ­ T o d a s la s a p a ric io n e s d e lo g a ritm o s q u e fallan s e in tro d u c e n (d ire c ta o in d ire c - DQ
ñ o s d e e n tra d a m o d e ra d a m e n te g ra n d e s . A n te s d e v e r u n a lg o ritm o re a lista c u y o la m e n te ) a p lic a n d o e l T e o re m a 5.5. L a d e m o s tra c ió n u tiliz a n o c io n e s d e c á lc u lo . cr£
tie m p o d e e je c u c ió n in c lu y e u n lo g a ritm o , v e a m o s a lg u n o s e je m p lo s d e c ó m o los p e ro c o m p re n d e r la d e m o s tra c ió n n o e s n e c e sa rio p u ra u tiliz a r e l te o re m a . rú
lo g a ritm o s e n tr a n e n ju e g o . es

BITS E N U N NÚ M ERO B IN ARIO S ie n d o / / v = ! 1 / .ve tie n e i/ue / / v = 0 ( lo g Ar ). U n a e s lin u u ió n m a s Tt


¿ C u á n t o s b its s o n n e c e s a r i o s p o r a r e p r e s e n ta r N e n t e r o s c o n s e c u ­ p r e c is a v e n d r ía d a d a p o r ln ;V+0.577. d o n d e \w d e n o ta e l lo g a r itm o n e p e -
tiv o s? riano.

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

640 000 8 770 0.01370313 000000002 0 00071046 Resumen

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?

Cuestiones breves public static double potencia( double x, int n )

{
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.

n) S u m a r d o s e n te r o s d e N d íg ito s. // Fragm ento "1


b) M u ltip lic a r d o s e n te r o s d e N d íg ito s, forí int i = 0; i < n; i** )
r) D iv id ir d o s e n te ro s d e N d íg ito s. s u m a * *;
// Fragm ento 92 Problemas prácticos
for( inL i = 0; i < n; i +- )
5 .2 0 . E sc rib a u n a lg o ritm o e fic ie n te p a ra d e te r m in a r si e x is te un e n te r o i ta l q u e
for( int j = 0; j < n; j»*>
.4, = i e n u n v e c to r d e e n te ro s o rd e n a d o s d e fo rm a c re c ie n te . ¿ C u á l e s su
suma— ;
tie m p o ile e je c u c ió n ?
II Fragm ento •3 5 .2 1 . U n n ú m e r o p rim o n o tie n e d iv is o re s a p a rte d e I y d e é l m ism o . S e p id e lo
for( int i = 0; i < n ; i** ) sig u iente:
sum a» *;
a) E scrib a u n p ro g ra m a p a ra d e te rm in a r si u n e n te r o p o s itiv o A' e s p rim o .
for( int j = 0; j < n; j*«)
E n té rm in o s d e A \ ¿ c u á l e 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 d e
sum a**;
su p ro g ra m a ?
II Fragm ento «4 b) S e a H e l n ú m e ro d e b its e n la re p re se n ta c ió n b in a ria d e N . ¿ C u á l e s el
for( in t i = 0 ; i < n ; i-»-* ) v a lo r d e tf?
for( int j = 0; j < n • n; j»*) r) E n té rm in o s d e H. ¿ c u á l e 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 d e
suma**; su p ro g ra m a ?
./) C o m p a re los tie m p o s d e e je c u c ió n n e c e sa rio s p a ra d e te rm in a r si un
// Fragm ento »5
n um en* d e 2 0 b its y o tr o d e 4 0 b its s o n p rim o s.
for( int i = 0; i <n; i*- |
for( int j = 0; j < i; j**> 5 .2 2 . U n p ro b le m a im p o rta n te e n a n á lisis n u m é ric o c o n s is te e n e n c o n tr a r u n a
su m a* •; so lu c ió n a la e c u a c ió n / (X ) = 0 p a ra un F a rb itra rio . S i la fu n c ió n e s c o n ­
tin u a y te n e m o s d o s p u n to s b a jo y a lio p a ra lo s c u a le s F {b a jo ) y F ( a h o )
// Fragm ento *6
tie n e n s ig n o o p u e s to , e n to n c e s d e b e e x is tir u n a ra íz e n tre b a jo y a lto , q u e
fo r( int i * 0; i < n; i*« )
p u e d e se r e n c o n tr a d a b ie n m e d ia n te u n a b ú sq u e d a b in a ria o c o n u n a b ú s ­
for( int j = 0; j < n * n ; j* + >
q u e d a in te rp o la d a . E sc rib a u n a fu n c ió n q u e to m e c o m o p a rá m e tro s F . b a jo
fo r( int k = 0; k < j; k**)
y a lio y e n c u e n tre u n a r a íz d e l a e c u a c ió n . ¿ Q u é d e b e h a c e r p a ra a se g u ra r
suma**;
la te rm in a c ió n ?
5 .1 5 . E n o c a s io n e s , m u ltip lic a r e l ta m a ñ o d e lo s b u c le s a n id a d o s p u e d e h a c e r 5 .2 3 . U n e le m e n to m a y o rita rio e n u n v e c to r A d e ta m a ñ o N e s u n e le m e n to que
q u e e l tie m p o d e e je c u c ió n e n n o ta c ió n O s e a u n a s o b re e stim a c ió n . R ep ita a p a re c e m á s d e N Í2 v e c e s (e n c o n se c u e n c ia h a b rá a l o s u m o u n o ). Por
e l E je rc ic io 5 .1 4 p a ra e l sig u ie n te fra g m e n to d e p ro g ra m a : e je m p lo , e l v e c to r
for| int i • 1; i < n; i** )
for( int j = 0 ; j < i * i ; j * + ) 3. 3 . 4 . 2. 4 . 4 . 2. 4 . 4
i fI j % i »» 0 )
for( int k = 0; k < j; k-+ ) c o n tie n e un e le m e n to m a y o rita rio (4 ). m ie n tra s q u e e l v e c to r
suma**;
5.16. E n u n ju ic io re c ie n te , un ju e z c o n d e n ó a u n a c iu d a d p o r d e s a c a to y o rd e n ó 3. 3. 4 . 2. 4 . 4, 2. 4
u n a m u lta d e 2 e u r o s p a ra e l p rim e r d ía. C a d a d ía p o s te n o r, h a s ta q u e la
c iu d a d a c a ta ra la o rd e n d e l ju e z , la m u lla s e r ía e le v a d a a l c u a d ra d o (es no tie n e e le m e n to m a y o ritario . E scrib a u n a lg o ritm o p ara e n c o n tra r e l e le ­
d e c ir, la m u lta a u m e n ta ría d e la s ig u ie n te m a n e ra : 2 e u ro s . 4 e u ro s . 16 m e n to m ay o ritario c u a n d o ex ista, o q u e d ig a que n o ex ista. ¿ C u á l e s e l tiem po
e u ro s . 2 5 6 e u ro s . 6 5 5 3 6 e u ro s . ...). d e e je c u c ió n d e su a lg o ritm o ? (H a y u n a s o lu c ió n (X .V ).)

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 ).

Bibliografía 16. A . T u c k e r, A p p lie d C o m b in a to ric s. 2.a e d .. J o h n W iley & S o n s . N ew


Y o rk . N Y (1 9 8 4 ).

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 m á x im a s e h a to m a d o de 17. M . A . W e is s . D a ta S tr u c tu r e s a n d A lg o r ith m A n a lv s is in C . 2.a e d .. B en-


15 1. L o s lib ro s [ 4 |. | 5 | y | 6 | m u e s tra n c ó m o o p tim iz a r la v e lo c id a d d e lo s p ro g ra ­ ja m in /C u m m in g s . R edw i»od C ity , C a lif. (1 9 9 7 ).
m as. L a b ú sq u e d a in te rp o la d a fu e su g e rid a p o r p rim e ra v e / e n 11 4 1 y a n a liz a d a en
113]. L o s lib ro s 111. |X | y 117| p ro p o rc io n a n u n tra ta m ie n to m á s rig u ro s o d e l a n á li­
sis d e a lg o ritm o s. 1.a s e r ie d e tr e s p a n e s 11 0), 1111 y |I 2 ] , a c tu a liz a d a re c ie n te ­
m e n te . sig u e s ie n d o la p rin c ip a l re fe re n c ia e n e l tem a.
L o s c o n o c im ie n to s m a te m á tic o s n e c e sa rio s p a ra e l a n á lisis d e a lg o ritm o s m ás
a v a n z a d o se p ro p o rc io n a e n |2 | . | 3 | . | 7 | . [151 y 1 1 6 |. U n lib ro e s p e c ia lm e n te b u e ­
n o d e a n á lis is a v a n z a d o e s |9 |.

1. A . V . A h o . J . E. H o p c to ft. y J . I). U llm a n . T h e D e s ig n a n d A n a lv s is o f


C o m p u te r A lg o rith m s. A d d iso n -W e sle y , R e ad in g . M ass. (1 9 7 4 ),

2. M C). A lb e n so n y J. P. H u tch in so n. D iscrete M a th e m a tic s w ith A lg o rith m s.


J o h n W ile y & S o n s . N ew Y o rk . N Y (1 9 8 8 ).

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 ).

4. J L.. B e n tle y . W ritin g E ffic ie n t P ro g ra n ts, P re n tic c -H a ll. E n g le w o o d


C liffs. N J (1982).

5. J . L . B e n tle y . P r o g r a m m in g P e a rls . A d d iso n -W e sle y . R e ad in g . M a ss.


(1986).

6. J L. B e n tley . M o r e P ro g ra m m in g P e a rls . A d d iso n -W e sle y . R ead in g .


M ass. (1 9 8 8 ).

7. R A . B ru a ld i. I n t r o d u c to r • C o m b in a to rio s. N o rth -H o lla n d . N ew Y ork.


N Y (1 9 7 7 ).

8. T . H. C o rm e n . ( '. E. I.e iserso n . y K L. R iv e sl. In trix lu c tio n lo A lg o rith m s.


M IT P re s s. C a m b rid g e . M ass. (1 9 9 0 ).

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:

• D e s c rip c io n e s d e las e s tru c tu r a s d e d a lo s m á s c o m u n e s , su s o p e ra c io n e s >


su s tie m p o s d e e je c u c ió n .
• P a ra c a d a e s tru c tu ra d e d a to s , u n a in te rfa z J a s a q u e c o n te n g a e l p ro to c o lo
q u e d e b e se r im p le m e n ta d o .
• A lg u n a s a p lic a c io n e s d e las e s tru c tu ra s d e d ato s.

E sta s e s tru c tu r a s d e d a lo s s o n u tiliz a d a s e n lo s c a so s d e e s tu d io d e la P arte III


d e l lib ro y so n im p le m e n ta d a s e n la P arte IV . F.l o b je tiv o e s m o s tra r q u e la e s p e c i­
fic a c ió n . q u e d e s c rib e la fu n c io n a lid a d , e s in d e p e n d ie n te d e la im p le m e n ta c ió n
N o n e c e s ita m o s c o n o c e r c ó m o s e im p le m e n ta a lg o c o n ta l d e q u e se p a m o s q u e e s ­
tá im p lc m c n ta d o .

6.1 ¿Por q u é necesitam os estructuras d e datos?

L a s e s tru c tu ra s d e d a lo s n o s p e rm ite n lo g ra r un im p o rta n te o b je tiv 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: la re u tiliz a c ió n d e c o m p o n e n te s . C o m o s e m u e s tra
m á s ta r d e e n e l c a p ítu lo , las e s tru c tu r a s d e d a to s d e s c rita s e n e s ta secció n t e im -
p le m e n ta d u s m á s a d e la n te ) tie n e n u so s re p e tid o s. U na v e z q u e la e stru c tu ra d e da-
to s h a s id o im p lc m c n ta d a . p u e d e s e r u li li /a d a u n a y o tra v e z e n d iv e rsa s a p lic a c io ­ 1 I I C l a s e CeldaMemoria
2 //
n e s. E n e s te c a p ítu lo só lo s e p ro p o rc io n a la s c o rre sp o n d ie n te s in te rfa c e s. L a s c o n ­
// OPERACIONES PÚBLICAS'
sid e ra c io n e s so b re im p le m e n ta c io n e s e fic ie n te s se re tra s a n h a s ta la P a rte IV .
E ste e n fo q u e — la se p a ra c ió n d e la in te rfa z y la im p le m e n ta c ió n — e s p a rte del II O bject le e r! I --> Devuelve e l valor almacenado
p a ra d ig m 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. E l u s u a rio d e la e s tru c tu ra d e II void e s c r i b i r ! Object x ) Almacena x
d a to s n o n e c e sita v e r la im p le m e n ta c ió n . s ó lo la s o p e ra c io n e s d is p o n ib le s. É sta es
la p a rte d e « c u ita m ie n to y c n c a p s u la c ió 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. p u b l i c c l a s s CeldaMeraoria i m p l e m e n t s Ce l daMer a

S in e m b a rg o , o tra p arte 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 la


/ / Métodos p ú b l i c o s
a b stra c c ió n D e b e m o s p e n s a r c u id a d o s a m e n te e l d is e ñ o d e las e s tru c tu ra s d e d a to s p u b l i c O b j e c t l e e r ! > ( r e t u r n valorA lm acenado; )
p o rq u e d e b e m o s e s c r ib ir p ro g ra m a s q u e u tilic e n e s a s e s tru c tu r a s d e d a to s sin ten er p u b lic v o id e s c r i b i r ! O b ject x > { valorAlm acenado = x; )
e n c u e n ta su im p le m e n ta c ió n . E s to h a c e a la in te rfa z m á s lim p ia , m á s fle x ib le
(m á s re u tiliz a b le ) y g e n e ra lm e n te m á s fácil d e im p le m e n la r. / / R epresentación in te rn a p riv ad a d e l dato
T o d a s las e s tru c tu r a s s o n fá c ile s d e im p le m e n la r si n o n o s p re o c u p a m o s del p r i v a r e O b j e c t valorA lm acenado;
1
re n d im ie n to . F s to n o s p e rm ite c o lo c a r c o m p o n e n te s « b a ra ta s » d e n tr o d e n u e stro
p ro g ra m a e n la la s e d e d e p u ra c ió n d e l m ism o . L o s e je rc ic io s a l fin a l d e e s te c a p í­ Figura 6.2 Im p lem entoción Oe lo c la se c o n c re ta Oe celO as a e m em oria.
tu lo le p id e n e s c r ib ir im p le m c n ta c io n e s in e fic ie n te s, ú tile s p a ra p ro c e s a r p e q u e ñ a s
c a n tid a d e s d e d ato s. M ás la rd e , re e m p la z a re m o s la s im p le m c n ta c io n e s d e e s tru c ­
p rá c tic a c o lo c a r o b je to s in m u ta b le s e n e sta s e s tru c tu ra s d e d a to s , d e ta l fo rm a que
tu ra s d e d a to s « b a ra ta s » p o r im p le m c n ta c io n e s q u e tie n e n u n m e jo r re n d im ie n to
u n a g e n te e x te r n o n o p u e d a c a m b ia r e l e s ta d o d e u n o b je to q u e se e n c u e n tra d e n ­
e n tie m p o y o e s p a c io , y q u e so n ú tile s p a ra m a n e ja r g ra n d e s c a n tid a d e s d e d alo s.
tr o d e u n a e s tru c tu ra d e d a to s c o n te n e d o ra .
Y a q u e las in te rfa c e s e s tá n fija d a s, e s to s c a m b io s n o re q u e rirá n v irtu a lm e n te n in ­
g ú n c a m b io e n lo s p ro g ra m a s q u e u tiliz a n la s e s tru c tu r a s d e d ato s.
E ste c a p ítu lo d e s c rib e las e s tru c tu r a s d e d a to s u tiliz a n d o in te rfa c e s. E n la s P a r­
6.2 Las pilas
te s l \ y V im p le m e n ta m o s c a d a in te rfa z , d e riv a n d o e n to n c e s u n a n u e v a c la s e . Por
e je m p lo , las p ila s s e e sp e c ific a n c o n la in te rfa z P i l a . C u a n d o la im p le m e n tc m o s
e n e l C a p ítu lo 15. la c la s e re s u lta n te s e rá d e n o m in a d a P i l a V e c (im p le m e n ta c ió n U n a p ila e s u n a e stru c tu ra d e d a to s e n la c u a l e l a c c e s o e s tá lim ita d o a l e le m e n to
b a sa d a e n v e c to re s). E n to d o s lo s c a so s , la n u e v a c la s e im p le m e n la rá la s e s p e c ifi­ m á s re c ie n te m e n te in se rta d o . S e c o m p o rta d e fo rm a m u y p a re c id a a u n a p ila d e
c a c io n e s e n la in te rfa z y p o d rá in c lu ir a lg u n a fu n c io n a lid a d a d ic io n a l. fa c tu ra s, d e p la to s o d e p e rió d ic o s. El u ltim o e le m e n to a ñ a d id o a la p ila e s c o lo c a ­
P o r e je m p lo , la F igu ra 6 . 1 p re s e n ta u n a in te rfa z p a ra la c e ld a d e m e m o ria d e sc ri­ d o e n la c im a , d o n d e e s a c c e d id o m u y fá c ilm e n te , m ie n tra s q u e lo s e le m e n to s q u e
ta e n la S ecció n 4.6. L a in te rfa z d e sc rib e la s fu n cio n e s d is p o n ib le s; la c la s e d e riv a d a lle v a n m á s tie m p o s o n m á s d if íc ile s d e a c c e d e r. P o r ta n to , u n a p ila e s a p ro p ia d a si
c o n c re ta d e b e p ro p o rc io n a r su d efin ic ió n . L a im p le m e n ta c ió n s e m u e stra e n la F ig u ­ só lo q u e re m o s a c c e d e r al e le m e n to e n la c im a ; e l re s to d e e le m e n to s so n in a c c e s i­
ra 6 .2 y e s id én tica a la d e la F ig u ra 4 .1 6 . e x c e p to p o r lo q u e s e re fie re a la c lá u su la b le s (e n p rin c ip io ).
i m p le m e n ts . U i ru tin a m a i n d e la F ig u ra 4 .1 7 p u e d e u tiliz a rse sin c a m b io s. E n u n a p ila , las tr e s o p e ra c io n e s n a tu ra le s d e i n s e r t a r , e l i m i n a r y b u s c a r ,
P ara a h o rra r e s p a c io , la s in te rfa c e s m o s tra d a s e n e s te te x to c o n tie n e n c o m e n ta ­ se ren o m b ran p o r a p i l a r , d e s a p i l a r y c i m a . E sta s o p eracio n es b ásicas se ilustran
rio s c o n c is o s al c o m ie n z o d e c a d a c la s e , e n v e z d e lo s c o m e n ta rio s m á s e x te n s o s en la F ig u ra 6.3. E n la F igura 6 .4 s e m u estra una in terfaz J a v a p a ra u n a pila abstracta.
p a ra J a v a d o c . F l c ó d ig o e n In tern et tie n e a m b o s tip o s d e c o m e n ta rio s . E s im p o r­ S e in c lu y e u n m é to d o c i m a Y D e s a p i l a r , q u e c o m b in a e s ta s d o s o p e ra c io n e s . En
tan te o b serv a r q u e las e s tru c tu ra s d e d a to s im p lc m c n ta d a s a q u í a lm a c e n a n re fe re n ­ e s te e je m p lo n o a p a re c e n in g u n a c a ra c te rís tic a n u e v a d e Ja v a . 1.a F ig u ra 6 .5 m u e s ­
c ia s a lo s e le m e n to s in sertad o s y n o re a liz a n c o p ia s in tern as. P o r ta n to , e s u n a bu en a tra c ó m o s e u tiliz a u n a c la s e P i l a y p ro p o rc io n a la s a lid a c o rre sp o n d ie n te . O b s e r ­
v e q u e u n a p ila p u e d e se r u tiliz a d a p a ra d a r la v u e lta a u n a lista d e ele m e n to s.
1 // I n t e r f a z C e l d a M e m : s i m u l a u n a c e l d a RAM g e n é r i c a
2 // api la r d o sap ilar, cim a
3 ,, ....................••• OPERACI ONES PÚBLI CAS' * * ■ ■ * * • • • . . ............... .
4 // Object le c tu ra ! > --> Devuelve ol v a lo r almacenado
'
5 // v o i d e s c r i t u r a ! O b je ct x ) - -> Almacena x
6
7 public i n t o r f a c e CeldaMrm
8 ( P ila
9 O bject l e e r < );
10 v o i d e s c r i b i r t O b j e c t x );
U } Figura 6.3 M o d elo a e u n a pila: la e n tra ría a la p ila se reahza c o n a p i l a r . e l a c ­
Figuro 6.1 Interfaz p a ro la clase Oe celOas ab stra ctas d e m em ona. ceso c o n c i m a y e l b o rrarío c o n d e s a p i la r .
1 package E structuraaD atoa; C a d a o p e ra c ió n d e las p ila s d e b e ría ta rd a r u n a c a n iid u d c o n sia n ic d e tie m p o e n l
2
e je c u ia rs c . in d e p e n d ie n te m e n ie d e l n ú m e ro d e e le m e n to s a p ila d o s. IX* fo rm a a n a - sa
3 import E x co p e io n e s.*;
4 lo g a , e n c o n tr a r e l p e rió d ic o d e hoy e n u n a p ila d e p e rió d ic o s e s rá p id o , in d e p e n - 0
5 // Interfaz Pila d ie n te m e n te d e l o a lta q u e s e a la p ila . S in e m b a rg o , e l a c c e s o a rb itra rio a u n a p ila d
6 // n o s e so p o rta d e fo rm a e fic ie n te , p o r lo q u e n o s e c a ta lo g a c o m o o p c ió n . ©
7 «OPERACIONES PÚBLICAS’.* .................... ............................... Lx» q u e h a c e q u e las p ila s s e a n ú tile s e s q u e h a y m u c h a s a p lic a c io n e s e n las
6 / / void api la r ( x ) --> I n s e rta x q u e só lo e s n e c e sa rio a c c e d e r a l e le m e n to m á s re c ie n te m e n te in se rta d o . C o m o
9 / / v o i d á e s a p i l a r ( )— > E l i m i n a e l ú l t i m o e l e m e n t o i n s e r t a d o ilu s tra c ió n , e n la p ró x im a s e c c ió n s e d e s c rib e u n a u tiliz a c ió n im p o rta n te d e la s p i­
10 / / Object c iñ a ( > --> Devuelve e l últim o elem ento in se rta d o
la s e n e l d is e ñ o d e c o m p ila d o re s.
11 / / O bject ciitiaYDesapilar ( ) --> Devuelve y e liro in a e l ú l t i n o elem ento
12 // boolean esVacia< ) - - > D e v u e lv e t r u é s i v a c í a ; s i no f a l s e
13 / / void v a ciar i I --> Elim ina todos lo s elem entos
14 II • * * » * • * * • • • * * * • • • • • • • * * • ERRORES* * • • • * * * • * * • • • * * • • • • • • • • * • • • • • • 6.2.1 Las pilas y los lenguajes d e program ación
15 // cim a, desapilai, o cim aYDesapilar sobre la p i la vacia
16
L o s c o m p ila d o re s c o m p ru e b a n lo s p ro g ra m a s b u sc a n d o e rro re s s in tá c tic o s . A m e ­
17 p u b l i c ínteríace Pila
18 ( n u d o . sin e m b a rg o , la falta d e u n s ím b o lo (c o m o p o r e je m p lo la fa lta d e u n A n ali­
19 void api l a r ( Object x ); z a d o r d e c o m e n ta rio * / o ) ) c a u s a q u e e l c o m p ila d o r d e s p a rra m e c ie n to s d e lín e a s
20 void desapilar( ) throws D e sb o rcam ien to ln ferio r; d e m e n s a je s d e e rr o r sin id e n tific a r e l e rr o r real.
21 Object cimal ) throws D esbordam ientolr.ferior U n a h e rra m ie n ta útil e n e s ta situ a c ió n e s un p ro g ra m a q u e c o m p ru e b a si to d o
22 Object cim aY D esapilar( > throws D e s b o r d a m ie n to ln íe r io r ; e s tá e q u ilib ra d o : e s d e c ir, si p a ra to d o ( e x is te un ) c o rre s p o n d ie n te , to d o l tiene
23 boolean esV acial 1 ;
un | . e tc . I-a s e c u e n c ia [ <) ] e s c o rre c ta , p e r o 1 0 ) n o lo e s. p o r lo q u e c o n ta r
24 void v a c i a n );
25 1 sim p le m e n te e l n ú m e ro d e a p a ric io n e s d e c a d a s ím b o lo n o e s su fic ie n te . (S u p o n g a
p o r a h o ra q u e e s ta m o s p ro c e s a n d o u n a s e c u e n c ia d e to k e n s y n o s e p re o c u p e d e
Fi gur a 6 . 4 I nt er f a z p a r a l a s pilas. p ro b le m a s tales c o m o q u e la c o n s ta n te c a rá c te r ' n o n e c e sita e m p a re ja rs e c o n

U na p ila e s ú til p a ra c o m p ro b a r si hay sím b o lo s d e s e q u ilib ra d o s , p o rq u e s a b e - Si


1 i m p o r t E s t r u c t u r a s D a t o s . *; m o s q u e c u a n d o s e e n c u e n tra un s ím b o lo d e te rm in a c ió n c o m o i . d e b e e m p a re ja r- M
2 im port Excepciones.*; se c o n e l s ím b o lo n o c e rr a d o ( m á s re c ie n te m e n te visto.
3
P o r ta n to , c o lo c a n d o lo s sím b o lo s tic 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
4 // Programa s im p le p a r a p r o b a r l a s p i l a s
c o m p ro b a r si un s ím b o lo d e c ie rre tie n e se n tid o .
5
6 public fin al c la ss T estP ila E n c o n c re to , te n e m o s e l sig u ie n te a lg o ritm o :
7 {
1. C o n s tru ir u n a p ila vacía.
8 public static void m ain( S trin g [ | args )
2. L e e r s ím b o lo s h a s ta e l fin a l d e l fich ero .
9 (
>0 Pila p = new P i l a V e c ) ); r/) S i e l s ím b o lo e s u n sím b o lo d e a p e rtu ra , a p ila rlo e n la pila.
11 b) S i e s u n sím b o lo d e te rm in a c ió n \ la p ila e s tá v a c ía , e n to n c e s p ro d u ­
12 f o r ( in t i = 0; i < 5; i* . )
c i r un m e n s a je d e e rro r.
■3 p . a p i l a r < new I n t e g e r < i » >;
14 £■) E n o tro c a so , d e s a p ila r d e la p ila . S i e l s ím b o lo d e s a p ila d o n o e s el
1* S y3tem .out.print( 'C o n ten id o :’ I; sím b o lo d e a p e rtu ra c o rre sp o n d ie n te , p ro d u c ir u n m e n sa je d e error.
16 try 3. A l f in a liz a r e l fic h e ro , si la p ila n o e s tá v a c ía , m o s tra r u n e rro r.
17
18 for < ; ; 1 E n la S e c c ió n 11.1 d e s a rro lla re m o s e s te a lg o ritm o p a ra q u e tra b a je s o b r e (c a s i)
I* S ystem .out.print( ' * f p . c i m a Y D e s a p i 1a r ( > >.- to d o s lo s p ro g ra m a s Ja v a . D e ta lla re m o s la d e v o lu c ió n d e e rro re s a s í c o rn o el p ro ­
20
c e s a m ie n to d e c o m e n ta rio s, c a d e n a s , c o n s ta n te s d e tip o c a rá c te r y se c u e n c ia s de
21 c a tc h ( D esbordam ientolníerior e ) { )
e sc a p e .
22
E l a lg o r itm o p a ra c o m p r o b a r si lo s sím b o lo s e s tá n e q u ilib ra d o s s u g ie re u n a L
23 System .out.printlní ).-
24 fo rm a d e im p le m e n ta r las lla m a d a s a p ro c e d im ie n to s. E l p ro b le m a e s q u e c u a n d o
25 } se h ac e u n a llam ad a a u n n u e v o m é to d o , to d a s las v ariab les lo c a le s a l m é to d o que
realiz a la lla m a d a d e b e n se r salv ad as |*»i e l siste m a : d e o tr a fo rm a, e l n u ev o m éto d o
F ig u ra 6 .5 P rogram a e je m p lo c o n pilas: la salida es C o n t e n i d o : 4 3 2 1 0. p o d ría so b re sc rib ir e s ta s v a ria b le s. E s m á s , la p o sic ió n a c tu a l d e n tro d e la ru tin a
lla m a n te d c h e s e r g u a rd a d a d e m a n e ra q u e e l n u e v o m é to d o s e p a d ó n d e v o lv e r 1 p a c k a y e E s t r u c t u r a s D a t os
c u a n d o term in e. E ste p ro b le m a e s p a re c id o al d e los sím b o lo s e q u ilib r a d o s p o rq u e 2
3 import Excepciones.*;
u n a llam ad a a u n m é to d o y e l re g re s o d e u n m é to d o so n e s e n c ia lm e n te ig u a le s q u e
4
u n p a ré n te sis a b ie r to y u n p a ré n te s is c e rra d o , a s í q u e se d e b e ría n p o d e rse a p lic a r 5 // Interfaz Cola
la s m ism a s id e a s . E fe c tiv a m e n te , e s to e s a sí. C o m o s e d is c u te e n la S e c c ió n 7 .3 . la 6 //
p ila s e u tiliz a e n m u c h o s le n g u a je s p a ra im p le m e n ta r las lla m a d a s a m é to d o s 7 // OPERACIONES PÚBLI CAS**............ .........................
U n a a p lic a c ió n fin al im p o rta n te d e la s p ila s e s la e v a lu a c ió n d e e x p re s io n e s e n 8 i i void i n s e r ta r < x ) --> I n s e rta x
9 / / Object prim ero! ) --> Devuelve e l p rim e r elem ento
le n g u a je s d e p ro g ra m a c ió n . E n la e x p re s ió n l * 2 * 3 . e n e l m o m e n to e n q u e nos
10 I I O b je c t q u í t a r P r imeroI ) - -> Devuelvo y e l ím ína e l p r im o r e le m e n to
e n c o n tra m o s e l *. e l o p e ra d o r * y lo s o p e ra n d o s l y 2 . y a h a n s id o le íd o s. ¿ D e b e
11 l l boolean esVacia! ) --> Devuelve t r u e s i v a c ia ; s i no f a l s e
o p e ra r • so b re 2 o s o b r e 1 * 2 ? L a s re g la s d e p re c e d e n c ia n o s d ic e n q u e * o p e ra 12 ll void v aciar! ) --> E lim ina todos l o s elem entos
so b re 2. q u e e s e l o p e ra n d o m á s re c ie n te m e n te v isto . D e s p u é s d e le e r e l 3 . p o d e ­ 13 ¡¡ .................. * ERRORES* ................................................................ ..
m o s e v a lu a r 2 * 3 . o b te n ie n d o 6 . p a ra d e s p u é s a p lic a r e l o p e ra d o r ». E sto su g ie re 14 / / p rim e ro y q u i ta r P r i m e r o s o b r e una c o l a v a c ia
q u e lo s o p e ra n d o s d e b e ría n se r g u a rd a d o s e n u n a p ila (y a q u e e l * e s re te n id o h a s­ 15
16 p u b l i c i n t e r f a c e Cola
ta q u e e l o p e ra d o r * d e m a y o r p re c e d e n c ia s e e v a lú a ). U n a lg o r itm o q u e u tiliza
17 (
e s ta e s tra te g ia e s e l a lg o ritm o d e e v a lu a c ió n d e e x p r e s io n e s c o n p r e c e d e n c ia e n tr e
18 void in se rta r! O bject X );
o p e ra d o r e s. S u fu n c io n a m ie n to se d e s c rib e e n la S e c c ió n 11.2. 19 O bjoct prim ero! > throws D e sb o rd a m ie n to !n fe rio r;
20 Object q u itarP rim ero ! ) throws D esb o rd am ien to ln íerio r;
21 b o o l e a n e s V a c i a l ):
6.3 Las colas 22 void v a c i a r ! );
23 }
O tra e s tru c tu ra d e d a to s s im p le so n la s c o la s . E n m u c h o s c a s o s , e s im p o rta n te p o ­
Figuro 6.7 Interfaz d e las colas
d e r e n c o n tr a r y o e lim in a r e l e le m e n to m á s re c ie n te m e n te in s e rta d o . P e ro e n o tra s
o c a sio n e s, n o s ó lo n o e s im p o rta n te , s in o q u e e s la fo rm a e rr ó n e a d e h a c e rlo . P o r
1 im port E s t r u c t u r a s D a to s .*;
e je m p lo , e n un s iste m a m u ltip ro c e s a d o r. c u a n d o lo s tr a b a jo s s e m a n d a n a u n a im ­
2 import E xcep cio n es.* ;
p re so ra . e s p e ra m o s q u e e l tra b a jo m e n o s re c ie n te o m á s v ie jo s e a im p re so an tes. 3
E s to n o e s so la m e n te ju sto , s in o q u e e s n e c e s a rio p a ra g a ra n tiz a r q u e e l p rim e r tra ­ 4 // Programa sim p le p a r a p ro b a r las colas
b a jo n o e s p e r a p a ra sie m p re . E n c o n se c u e n c ia , u n o e s p e r a e n c o n tra r c o la s d e im ­ 5
p resió n e n to d o s lo s g ra n d e s sistem as. 6 public f in a l c la s s TestCoia
L as o p e ra c io n e s b á sic a s p e rm itid a s p o r la s c o la s son: 7 (
8 p u b l i c S t a t i c v o i d r nai r . ) S t r i n g [ I args )
• i n s e r t a r — in s e rc ió n a l fin a l d e la lín e a . 9 1
10 C o l a c = new C o l a V e c ! ) ;
• q u i t a r P r i m e r o — e lim in a c ió n d e l e le m e n to a l fre n te d e la lín e a , y
11
• prim ero a c c e s o a l e le m e n to e n e l fre n te d e la lín e a.
12 for! i n t i = 0; i < 5 : i » * )
La F ig u r a 6 .6 ilu s tr a e s ta s o p e r a c io n e s s o b r e c o la s . H is tó r ic a m e n te , 13 c . i n s e r t a r ! new l n t e g e r ! i ) );
14
q u i t a r P r i m e r o y p r i m e r o h a n sid o c o m b in a d a s e n u n a s o la o p e ra c ió n . S e g u i­
15 S ystem .out.print! ‘C o n t e n i d o : * );
m o s a q u í e s ta id e a , d e m o d o q u e q u i t a r P r i m e r o d e v u e lv e e l p rim e r e le m e n to
16 try
a d e m á s d e e lim in a rlo d e la c o la , si b ie n m a n te n e m o s ta m b ié n la o p e ra c ió n d e a c ­ 17
ceso p r i m e r o . 18 for! : r >
L a F ig u ra 6 .7 ilu stra la in te rfa z d e la s c o la s , m ie n tra s q u e la f ig u ra 6 .8 m u e s ­ 19 S ystem .out.print( H * * c.quitarP rim ero! ) );
tra c ó m o s e u san las c o la s , p ro d u c ie n d o u n e je m p lo d e s a lid a . Y a q u e las o p e ra c io ­ 20
21 catch! D esbordam ientolnferior e ) { 1
n e s d e las c o la s e s tá n re s trin g id a s d e fo rm a s im ila r a la s d e las p ila s, e s d e e sp e ra r
22
23 S y s t e m . o u t . p r i n t l n 1 I;
24 }
in se rta r q uitarP rim ero 25 )

* C o la - Figura 6.8 Program a ejem plo c o n colas: la salid a e s C o n t e n i d o : 0 1 2 3 4.


p rim ero
q u e ta m b ié n tard en un tie m p o c o n s ta n te e n e je c u ta rs e . A sí e s e n e fe c to . T o d a s las
Figuro 6 6 M od elo d e c o la la e n tra d a se realiza c o n i n s e r t a r , la salid a con o p e ra c io n e s b á s ic a s so b re las c o la s ta rd a n u n tie m p o ( X I ). E n lo s c a s o s d e e s tu d io
p r i m e r o v la elim inación c o n Q u i t a r P r i m e r o . VáT«*iui»v v a ria s a n l¡ ra c io n e s ile las c o la s .
6.4 Listas e n la z a d a s insertar b u s c a r o e l irr.i n a r

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.

A u n q u e em pezam os» la d is c u s ió n u tiliz a n d o lis ta s e n la z a d a s , las in te rfa c e s d e


El m e c a n is m o d e ite ra c ió n q u e J a v a u s a ría e s s im ila r a l s ig u ie n te ( y a q u e la s F ig u ras 6 11 y 6 .1 2 p u e d e n u tiliz a rs e p a ra c u a lq u ie r lista, in d e p e n d ie n te m e n te
L i s t a l t e r e s u n a in te r f a /. la L i s t a l t e r q u e s ig u e a n e w d e b e ría s e r re e m p la ­ d e la im p le m e n ta c ió n su b y a c e n te , l-a in te rfa z n o e s p e c ific a q u e d e b a n u tilizarse
z a d a p o r a lg u n a c la s e q u e im p le m e n ta ra a la in te rfa z L i s t a l t e r » lis ta s e n la z a d a s
/ / R ecorre la L ista , u tiliz a n d o la a b stra c c ió n y e l ite rad o r
L i s t a l t e r i t o » = new L i s t a l t e r ( l a L i s t a };
for( ite r.p rim ero ) ); iter.estaD en tro { ); i te r .a v a n z a r < ) ) 6.5 Árboles generales
S y s te m .o u t.p rin tln ! i t e r . re c u p e ra r! ) );
la»s a rlm le s so n u n a e s tru c tu ra d e d a lo s u tiliz a d a m u y a m e n u d o , fo rm a d a p o r un

§ 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

Figura 6.22 Interfaz p a ra la ciase d e la b ia s hash 6.8 C olas d e prioridad

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

1 packaae E stru ctu rasD a to s;


2 c iría a u n re n d im ie n to in ju stific a d a m e n te b a jo e n la p rá c tic a 1. Y a q u e las c o la s de
3 i r p o r t S o p o r te .* ; import S o p o rte .C o n p a ra b le ; p rio rid a d s o p o rta n ú n ic a m e n te las o p e ra c io n e s b u s c a r M i n y e l i m i n a r M i n . p o ­
4 arp o rt Excapciones.*; d ría m o s e s p e ra r u n re n d im ie n to q u e fu e ra u n c o m p ro m is o e n tr e e l tie m p o c o n s ta n ­
5 te d e la s c o la s y e l tie m p o lo g a rítm ic o d e Ion á rb o le s b in a rio s d e b ú sq u ed a.
6 // In te r fa r C olaPrioridad É ste e s. e n e fe c to , e l c a so . L a s c o la s d e p rio rid a d b á s ic a s s o p o rta n to d a s las 105'
7 // DfOt
o p e ra c io n e s 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, n o re q u ie re n e l c o s te a d i­
® // ................................ “ OPERACIONES PÚBLICAS* •******•••**••** • m p
9 ll v o i d i n s e r t a r tx J --> Inserta x
c io n al d e d o s re fe re n c ia s a o tr o s n o d o s, s o p o rta n la in s e rc ió n e n tie m p o c o n sta n te
cok
10 / / Comparable buscarM in! ) D e v u e l v e e l e l e m e n t o menor en p ro m e d io y s o n m u y fá c ile s d e im p le m e n la r. L a e s tru c tu ra re s u lta n te s e c o n o c e con

'I Comparable e l iminarMin ( ) D e v u e l v e y e l i m i n a e l e l e m e n t o me n o r c o m o m o n tíc u lo b in a r io \ e s u n a d e la s e s tru c tu ra s m á s e le g a n te s c o n o c id a s. F.l !O0<


12 / / void v a c ia r < ) Elim ina todos lo s elem entos C a p ítu lo 20 d a d e ta lle s so b re la im p le m e n ta c ió n d e lo s m o n tíc u lo s b in ario s. ope
13 / / boolear. esV acia! ) - - > Devuelve t r u e s i v a c í a ; s i no, í a l s e un v
F.l m o n tíc u lo d e e m p a re ja m ie n to s, u tiliz a d o e n la F ig u ra 6 .2 6 . e s u n a a lte rn a ti­
14 .................................... ERRORES........... ...................
v a c o m p lic a d a , útil c u a n d o s e n e c e sita c ie r ta fu n c io n a lid a d a d ic io n a l, in c lu y e n d o
15 / / b u s c a r M i r . y eliminarMin lanzan Desbordamientolnferior cuando vacia .
la h a b ilid a d d e c o m b in a r e fic ie n te m e n te d o s c o la s d e p rio rid a d se p a ra d a s.
17 p u b lic ín te r f a c e C olaPrioridad U n a a p lic a c ió n im p o rta n te d e las c o la s d e p rio rid a d se e n c u e n tra e n e l á re a d e -n a
18 ( m p
la sim u la c ió n d ir ig id a ¡m r e v e n to s. C o n sid e re , p o r e je m p lo , u n sistem a c o m o un
19 void i n s e r t a r ( Comparable x ) c ok
b a n c o e n e l q u e los c lie n te s lleg an y e sp e ra n e n fila h asta q u e u n a d e las A v e n ta n i­
ia sí
20 Comparable buscarM inf ) throws D esbordam ientolnlerior; llas e s tá d isp o n ib le . L a llegada d e lo s clie n te s e s tá g o b e rn a d a p o r u n a fu n ció n de po>
21 Comparable elim inarM int > throws D esbordam ientolnferior;
22 void v a c i a r ( >; d istrib u c ió n d e p ro b a b ilid a d , a s í c o m o e l tiem p o d e se rv ic io (el tie m p o n e c e sa rio p a ­
23 boolean e s V a c i a ! >; ra q u e e l e m p le a d o p ro p o rc io n e e l serv ic io c o m p le to a u n c lie n te ). E sta m o s in tere-
24 )

Figura 6.25 m terlaz p a ra las co la s d e prioridad 1 S i n e m b a r g o , l a s á r b o le s J e e n s a n c h a m ie n to . d is c u u J o s e n e l C a p itu lo 2 1 . s o n u n a n o ta b le e x c e p c ió n e n a lg u r


sa d o s e n e s ta d ís tic a s c o m o ¿ c u á n to tie m p o d e b e e s p e ra r u n c lie n te e n p ro m e d io ? o Elementos del juego
¿ c ó m o d e larg a p o d ría s e r la fila?
C o n c ie rta s d is trib u c io n e s d e p ro b a b ilid a d y p a ra c ie rto s v a lo re s d e A'. p o d e ­ a n á lis is sin tá c tic o d e p re ce d e n c ia d e o p e ra d o re s A lg o ritm o q u e u li li /a u n a pila
m o s c a lc u la r e s to s v a lo re s d e fo rm a e x a c ta . S in e m b a rg o , al h a c e rs e K m a y o r, e l p ara e v a lu a r ex p resio n es,
a n á lisis 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 hay q u e u sa r u n c o m p u ­ á rb o l E stru c tu ra d e d a to s m u y u tiliz a d a , fo rm a d a p o r u n c o n ju n to d e n o d o s y un
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 . IX* e s ta fo rm a , lo s g e re n te s del 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 to d o e s te lib ro , a su m im o s
b a n c o p u e d e n d e te rm in a r c u á n ta s v e n ta n illa s so n n e c e s a ria s p a ra a se g u ra r u n ser q u e lo s á rb o le s tie n e n raíz,
v ic io ra z o n a b le . U n a sim u la c ió n d ir ig í J a p o r e v e n to s c o n siste e n e l p ro c e s a m ie n to á rb o l b in a r io U n á rb o l c o n . a lo su m o , d o s h ijo s p o r nodo,
d e e v e n to s . A q u í los d o s e v e n to s so n : < I ) la lle g a d a d e u n c lie n te y (2 ) la sa lid a de á rb o l b in a r io de b ú sq u e d a U n á rb o l q u e p e rm ite la in s e rc ió n , e lim in a c ió n y b ú s ­
un c lie n te , d e ja n d o lib re u n a v e n ta n illa . E n c u a lq u ie r m o m e n to , te n e m o s u n a c o ­ q u e d a . T a m b ié n s e p u e d e u tiliz a r p a ra a c c e d e r a l A -é sim o m e n o r e le m e n to El
lecc ió n d e e v e n to s e s p e ra n d o a p ro d u c irse . P a ra e je c u ta r la sim u la c ió n , d e b e m o s c o s te e n tie m p o e s lo g a rítm ic o e n p ro m e d io p a ra u n a im p le m e n ta c ió n sim p le ,
d e te rm in a r e l s ig u ie n te e v e n to q u e s e p ro d u c irá . É ste e s e l e v e n to c u y o tie m p o d e y lo g a rítm ic o e n e l c a s o p e o r, e o n u n a im p le m e n ta c ió n m á s c u id ad a ,
a c o n te c im ie n to e s m ín im o ; p o r ta n to , p a ra p ro c e s a r la lista d e e v e n to s e fic ie n te ­ á rb o l co n r a í / A rbol c o n un n o d o d e s ig n a d o c o m o raíz.
m e n te s e u tiliz a u n a c o la d e p rio rid a d q u e e x tra e e l e le m e n to c o n tie m p o m ín im o . á rb o l s in tá c tic o d e u n a ex p re sió n U n á rb o l u tiliz a d o e n a n á lisis sin tá c tic o , e n el
I.n la S e c c ió n 13.2 s e p re se n ta u n a d is c u s ió n c o m p le ta y u n a im p le m e n ta c ió n d e la l ual e l v a lo r d e un n o d o e s e l r e 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 tili­
s im u la c ió n d ir ig id a p o r e v e n to s . z a n d o lo s v a lo re s d e sus h ijo s c o m o o p eran d o s.
d a s e ite ra d o ra C la se q u e p e rm ite a c c e d e r a u n a lista. E a c la s e d e la lisia tiene
m é to d o s q u e re fle ja n e l e s ta d o d e la lista : e l re s to d e o p e ra c io n e s e s tá n e n la
Resumen c lase iterador.
c o la E s tru c tu ra d e d a to s q u e lim ita e l a c c e s o a l e le m e n to in s e rta d o m e n o s re c ie n ­
E n e s te c a p ítu lo s e h a n e x a m in a d o la s e s tru c tu r a s d e d a to s b á sic a s u tiliz a d a s e n el tem en te.
re s to d e l lib ro . P ara c a d a u n a d e e lla s se h a p ro p o rc io n a d o u n a in te rfa z e in d ic a d o c o la d e p rio r id a d E s tru c tu ra d e d a to s q u e s o p o rta e l a c c e s o ú n ic a m e n te a l m e n o r
c u a l d e b e ría se r e l tie m p o d e e je c u c ió n d e la s o p e ra c io n e s. E n la P a rte IV d a re m o s elem e n to .
u n a im p le m e n ta c ió n d e d ic h a s e s tru c tu ra s d e d a to s q u e se a ju s te a las c o ta s de d ic c io n a r io A lm a c e n a c la v e s , q u e so n las q u e s e b u sc a n e n e l d ic c io n a rio , v m is
tie m p o a firm a d a s a q u í. L a F ig u ra 6 .2 7 re s u m e lo s re su lta d o s q u e s e o b ten d rán . c o rre sp o n d ie n te s d e fin ic io n e s,
En e l p ró x im o c a p ítu lo e s tu d ia m o s u n a h e rra m ie n ta m u y im p o rta n te p a ra re ­ e s tr u c t u r a d e d a to s U n a re p re se n ta c ió n d e lo s d a to s j u n t o c o n u n as o p e ra c io n e s
s o lv e r p ro b le m a s: la r e c u r sió n . L a re c u rsió n p e rm ite re s o lv e r d e fo rm a e fic ie n te p e rm itid a s so b re d ic h o s d a to s . L as e s tru c tu r a s d e d a to s n o s p e rm ite n lo g ra r la
m u c h o s p ro b le m a s, u tiliz a n d o a lg o ritm o s c o rto s y s e n c illo s , y e s fu n d a m e n ta l p ara re u tili/a c ió n d e co m p o n e n te s,
la im p le m e n ta c ió n d e lo s á rb o le s b in a rio s d e b ú sq u ed a. fu n c ió n h a s h F u n c ió n q u e c o n v ie rte u n o b je to H a s h a b l e e n u n e n te ro ,
h o ja E n u n á rb o l, u n n o d o sin h ijo s.
lo n g itu d d e u n c a m in o I .n u n á r b o l . e l n u m e r o d e a r i s t a s q u e h a y q u e a t r a v e s a r .
Estructura d e datos A cce so C om entarios d esd e la raí/., p a ra a lc a n z a r u n nodo,
m o n tíc u lo b in a r io Im p le m e n ta s o b re u n v e c to r las c o la s d e p rio rid a d c o n un
Pilas Sólo o l m ás recien te, M uy. m uy ráp idas tie m p o lo g a rítm ic o p o r o p e ra c ió n
c im a . 0(1)
p ila E stru c tu ra d e d a to s q u e re s trin g e e l a c c e s o a l e le m e n to m á s re c ie n te m e n te in ­
C olas Sólo a l m enos reciente. Muy. m uy rápidas sertad o .
q u i t a r P r i m e r o . 0(1) ta b la d e sím b o lo s E stru c tu ra d e d a to s u tiliz a d a p o r un c o m p ila d o r p a ra a lm a c e n a r
lo s id e n ti P icadores. Im p lc m c n ta d u g e n e ra lm e n te c o n u n a ta b la h ash .
Listas enlazadas C ualquier elem en to CXN)
ta b la h a sh E s tru c tu ra d e d a to s q u e s o p o rta in s e rc io n e s, e lim in a c io n e s > b ú s q u e ­
Árboles d e bú squeda C ualqu ier elem ento, C aso m edio, tam bién d a s. e n tie m p o c o n sta n te e n p ro m e d io
por nom bre o rango. p u ed e lograrse
OOog N ) en e l ca so peor

la b ia s hash C ualquier elem ento, C asi seguro


Errores com unes
c o n nom bre 0 ( 1)
1. N o d o c u m e n ta r c o rre c ta m e n te las c a ra c te rís tic a s d e la interfaz, d e u n a c l a ­
C o las d e prioridad b u s c a r M i n . 0(1) i n s e r t a r e s 0 ( 1) s e e s un e rr o r grave.
e l i m i n a r M i n . OOog N ) e n prom edio O (log N )
2. E s u n e r r o r a c c e d e r o e lim in a r d e u n a p ila, c o la o c o la d e p rio rid a d , vacía.
e n e l c a s o peor
E l q u e im p le m e n ta la c la s e d e b e a s e g u ra rs e d e d e te c ta r e l e rr o r y lan za r
Figuro 6.27 Resum en d e alg u n as estructuras d e d ato s una e x c e p c ió n . L a s o p e ra c io n e s d e a c c e s o o e lim in a c ió n e s tá n p e rm itid a s
e n á rb o le s o ta b la s h a s h v a c ía s p o rq u e e l a c c e s o e n u n á rb o l o ta b la h a sh 6 .3 . ¿ P u e d e n n»das las o p e ra c io n e s sig u ie n te s se r im p le m e n ta d a s e n tiem p o
v a c ía e s u n c a s o p a rtic u la r d e b ú sq u e d a sin é x ito .
lo g a rítm ic o : insertar. elim inarM in. e l im inarM ax. buscarM ir. y
V P u ed en o c u rr ir v a rio s e rr o re s m ie n tra s s e a c c e d e a u n a lista o a u n árb o l. buscarM ax?
E sto s d e b e n s e r se ñ a liz a d o s p o r la clase.
6 .4 . , Q u e e s tru c tu ra s d e d a to s d e la F ig u ra 6 .2 7 c o n d u c iría n a a lg o ritm o s d e o r­
4. luí im p le m e n ta c ió n d e u n o b je to H a s h a b l e d e b e s u m in is tra r u n a b u en a d e n a c ió n q u e s e e je c u ta ra n e n u n tie m p o m e n o r q u e c u a d rá tic o ?
fu n c ió n h a sh : e n c a s o c o n tra río , se d e te rio ra rá e l ren d im ie n to . 6 .5 . M u e s tre q u e e s p o s ib le s o p o r ta r s im u ltá n e a m e n te la s o p e ra c io n e s s i­
5. L a fu n c ió n e q u a l s (q u e to m a u n O b j e c t c o m o p a rá m e tro ) d e b e ría e s c r i­ g u ie n te s e n tie m p o c o n s ta n te : a p i l a r , c i m a , y b u s c a r M i n . O b s e rv e que
b irse p a ra lo s o b je to s q u e s e in s e rta n e n ta b la s h a sh o á rb o le s d e b ú sq u e d a . e l i m i n a r M i n n o fo rm a p a rte d e l re p e rto rio . P ista: m a n te n g a d o s p ilas,
6. U n a c o la d e p rio rid a d tu» e s u n a c o la . S ó lo s u e n a ig u al. u n a p a ra a lm a c e n a r lo s e le m e n to s \ o tr a p a ra a lm a c e n a r lo s m ín im o s s e ­
g ú n v a n a p a re c ie n d o .
6 .6 . I n a c o la d o b le p e rm ite in s e rc io n e s y e lim in a c io n e s e n a m b o s e x tre m o s de
En Internet la lín e a. ¿ C u á l c re e q u e e s e l tie m p o d e e je c u c ió n p o r o p e ra c ió n ?

A lg unos d e lo s p ro g ra m a s d e p ru e b a d e este cap ítu lo , in clu y en d o la c lase M i C a d e n a .


está n e n e l d ire c to rio C h a p te rO Ó . P o r o tra p a rte , la s in te rfa c e s p a ra las c la s e s que
Problemas prácticos
se rá n im p le m e n ta d a s e n las P a rte s IV v V s e e n c u e n tra n e n e l d ire c to rio D a ta S -
6 .7 . E sc rib a u n a ru tin a q u e im p rim a e n o rd e n in v e rso lo s e le m e n to s d e u n a lista
t r u c t u r e s . s ie n d o p a n e d e l p a q u e te D a t a s t r u c t u r e s . tra d u c id o c o m o E s t r u c -
e n la z a d a . P ara h a c e rlo , re c o rra la lista c o n u n a L i s t a l t e r . a p ila n d o c ad a
t u r a s D a t o s . S e tra ta n , e n c o n c re to , d e lo s sig u ie n te s:
e le m e n to e n u n a p ila . C u a n d o a lc a n c e e l fin d e la lista e n la z a d a , e x tra ig a
S ta c k .j a v a L a in te rfa z S t a c k . tra d u c id a p o r P i l a e n la F ig u ra 6 .4 . re p e tid a m e n te la c i m a h a s ta q u e la p ila s e q u e d e v acía .
Q u e u e ja u i 1.a in terfa z Q u e u c . tra d u c id a p o r C o l a e n la F ig u ra 6.7. 6.X. I n a e lim in a c ió n e n u n a lisia e n la z a d a o e n un á rb o l d e b ú sq u e d a b in ario ,
L is t, ja s a La in terfaz L i s t , trad u cid a p o r L i s t a e n la F ig u ra 6 .1 1. n o s p ro v o c a e l sig u ie n te p ro b le m a : c u a n d o e l e le m e n to a c tu a l e s b o rrad o ,
L is t lt r .j a v u L a in te rfa z L i s t l t r . tra d u c id a p o r L i s t a l t e r e n la ¿ c u á l s e c o n v ie rte e n e l n u e v o e le m e n to a c tu a l? D isc u ta v a ría s altern ativ as.
F ig u ra 6 .1 2 . 6.9. M u e s tre c o m o im p le m e n ta r e fic ie n te m e n te u n a p ila u tiliz a n d o u n a lista e n ­
S e a r c h T r e e .j a v a L a in te rfa z S e a r c h T r e e . tra d u c id a p o r A r b o l B u s - la z a d a c o m o a trib u to .
q u e d a e n la F ig u ra 6 .1 8 . 6 . 10 . M u e stre c o m o im p le m e n ta r e fic ie n te m e n te u n a c o la u tiliz a n d o u n a lista
ll a s h T a b le .j u v a L a in te rfa z H a s h T a b l e . tra d u c id a p o r T a b l a H a s h e n e n la z a d a c o m o a trib u to y m a n te n ie n d o u n o b je to L i s t a l t e r q u e ap u n ta
la F ig u ra 6 .2 2 . sie m p re a l ú ltim o e le m e n to d e la lista e n la z a d a .
P r i o r it y Q u c u t .ja v a La in te r f a z P r Lor i ty Q u e u c . tr a d u c id a por 6 . 1 1. P a rtie n d o d e u n a c la s e d e ta b la s h a sh . im p lem en to u n a c la s e D i c c i o n a : i o
C o l a P r i o r i d a d e n la F ig u ra 6 .2 5 . q u e p e rm ita las o p e ra c io n e s d e i n s e r t a r y b u s c a r . P ara fa c ilita r su tarea
in c lu im o s a c o n tin u a c ió n a lg u n a s d e las lín e a s d e e s ta cla se .

publ ic c la s s D iccionario
Ejercicios

Cuestiones breves / / Algunos de lo s m étodos


v oid in s e r ta r ( H ashable c la v e , O bject d e f in ic ió n ) ;
O b je ct b u s c a r I H a sh a b le c l a v e I th ro w s E lem entoN oE ncontrado;
6 .1 . M u e s tre lo s re s u lta d o s de la s ig u ie n te s e c u e n c ia de in s tru c c io n e s :
I
i n s e r t a r ( 4 ) . i n s e r t a r (8). i n s e r t a r ( l ) . i n s e r ta r < 6 ) . e l i m i n a r O
y e l i m i n a r < ). c u a n d o i n s e r t a r y e l i m i n a r so n las o p e ra cio n e s b ásicas de

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:

ii) D escriba los alg o ritm o s p a ra llevar a c a b o a p i l a r , d e s a p i l a r y c i m a .


6 .2 . S u p o n g a q u e q u iere so p o rtar, ex c lu siv a m e n te, la s tres operacio n es: i n s e r t a r . b) ¿ C u á l e s e l tie m p o d e e je c u c ió n e n n o ta c ió n O d e c a d a u n o d e esto s
b u s c a r M a x y e l i m i n a r M a x . ¿ C ó m o d e rá p id o c re e q u e se p u e d e n im p le- a lg o ritm o s?
m en tar e s ta s o p e ra c io n e s? <•) E sc rib a u n a im p le m e n ta c ió n e n J a v a d e d ic h o s alg o ritm o s.
6.13. U n a c o la p u ede s e r im p lc m c 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 su b) ¿ C u á l e s e l tie m p o d e e je c u c ió n , e n n o ta c ió n O . d e c a d a u n o d e esto s
ta m a ñ o a c tu a l. L o s e le m e n to s d e la c o la s e a lm a c e n a n e n p o sic io n e s c o n s e ­ a lg o ritm o s?
c u tiv a s d e l v e c to r, c o n e l p rim e r e le m e n to s ie m p re e n la p o sic ió n 0 . S e p i­ <•) E s c rib a u n a im p le m e n ta c ió n e n J a v a d e d ic h o s a lg o ritm o s.
d e h a c e r lo sig u ien te :
6 . 1S. A ñ a d ie n d o u n a trib u to m á s a la c la s e d e la s c o la s d e p rio rid a d d e l E je rc ic io
a) D e sc rib a lo s a lg o ritm o s p a ra lle v a r a c a b o p r i m e r o , in sertar y 6 .1 7 . e s p o sib le im p le m e n ta r i n s e r t a r y b u s c a r M i n e n tie m p o c o n s ta n ­
qu itarP rim ero. te. E l a trib u to e x tra a lm a c e n a rá la p o s ic ió n d e l v e c to r d o n d e s e e n c u e n tra
b) ¿ C u á l e s e l tie m p o d e e je c u c ió n e n n o ta c ió n O d e c a d a u n o d e e sto s e l m ín im o . S in e m b a rg o . e l i m i n a r M i n s e g u irá s ie n d o c o s to s a . S e p ide
alg o ritm o s? h a c e r lo sig u ien te:
<•» E sc ríb a u n a im p le m e n ta c ió n e n J a v a d e d ic h o s alg o ritm o s.
n) D e sc rib a lo s a lg o ritm o s p a ra lle v a r a c a b o b u s c a r M i n . i n s e r t a r y
É ste n o e s e l m é to d o m á s e fic ie n te d e im p lc m e n la r u n a c o la u tiliz a n d o elim inarM in.
u n v ecto r. T ra te d e lo c a liz a r la ra z ó n p rin c ip a l p o r la q u e a lg u n a d e la s h) ¿ C u á l e s e l tie m p o d e e je c u c ió n , e n n o ta c ió n O . d e e l i m i n a r M i n ?
o p e ra c io n e s es in e fic ie n te , y a p a rtir d e la id e a d e c o rre g ir e s ta situ a c ió n <•> E sc rib a u n a im p le m e n ta c ió n e n J a v a d e d ic h o s alg o ritm o s.
p ro p o n g a u n a im p le m e n ta c ió n a lte rn a tiv a q u e re s u lte p le n a m e n te s a tisfa c ­
6.19. U n a c o la d e p rio rid a d d o b le p e rm ite a c c e s o s ta n to a l e le m e n to m ín im o c o ­
to ria.
m o a l m á x im o . E n c o n s e c u e n c ia , s e p e rm ite n to d a s las o p e ra c io n e s si­
6 .1 4 . L a s o p e ra c io n e s p e rm itid a s p o r un á rb o l d e b ú s q u e d a p u e d e n im p le m e n ta r-
g u ie n te s: b u s c a r M i n . e l i m i n a r M i n . b u s c a r M a x y e l i m i n a r M a x . D is ­
se ta m b ié n c o n u n v e c to r, m a n te n ie n d o su ta m a ñ o a c tu a l. L o s e le m e n to s
c u tir d is tin ta s im p le m e n ta c io n e s p o sib le s b a s a d a s e n u n v e c to r, h a c ie n d o
del v e c to r s e a lm a c e n a n o rd e n a d o s e n p o s ic io n e s c o n s e c u tiv a s del vector.
p a ra c a d a u n a d e e lla s lo sig u ien te:
E n c o n s e c u e n c ia , b u s c a r p u e d e im p le m e n ta rs e c o n u n a b ú sq u e d a b in a ria .
Se p id e h a c e r l o sig u ie n te : rí) D escrib a lo s a lg o ritm o s p a r a lle v a r a c a b o b u s c a r M i n . e l i m i n a r M i n .
buscarM ax y eiim inarM ax.
ti) D e sc rib a lo s a lg o ritm o s p a ra lle v a r a c a b o i n s e r t a r y e l i m i n a r .
h) ¿C u á l e s e l tie m p o d e e je c u c ió n , e n n o ta c ió n O . d e e sto s alg o ritm o s?
h > ¿ C u á l e s e l tie m p o d e e je c u c ió n , e n n o ta c ió n O , d e c a d a u n o d e e sto s
c) E sc rib a u n a im p le m e n ta c ió n e n J a v a d e d ic h o s alg o ritm o s.
a lg o ritm o s?
r) E sc rib a u n a im p le m e n ta c ió n e n J a v a d e d ic h o s a lg o ritm o s. 6 .2 0 . U n m o n tíc u lo d e m e d ia n a s s o p o rta las sig u ie n te s o p e ra c io n e s: i n s e r t a r .
b u s c a r K e s i m o \ e l i m i n a r K e s i . n o . L a s d o s ú ltim a s b u sc a n y e lim in a n ,
6.15. U n a ta b la h ash p u e d e im p le m e n ta rs e u tiliz a n d o u n v e c to r, m a n te n ie n d o su
re s p e c tiv a m e n te , e l Á -ésim o m e n o r e le m e n to . L a im p le m e n ta c ió n m á s
ta m a ñ o a ctu a l. E o s e le m e n to s d e l v e c to r s e a lm a c e n a n e n p o sic io n e s c o n ­
s im p le m a n tie n e lo s e le m e n to s d e l m o n tíc u lo o rd e n a d o s e n un v e c to r. Se
se cu tiv as d e l v e c to r, p e r o n o d e fo rm a o rd e n a d a . E n lu g a r d e e llo , s e van
p id e h a c e r lo sig u ien te:
in s e rta n d o e n la sig u ie n te p o s ic ió n lib re d e l v e c to r. Se p id e h a c e r lo si­
g uiente: <i> D e sc rib a lo s a lg o ritm o s q u e p u e d e n s e r u tiliz a d o s p a ra s o p o rta r las
o p e ra c io n e s d e lo s m o n tíc u lo s d e m e d ian as.
n) D e s c rib a lo s a lg o ritm o s p a ra lle v a r a c a b o i n s e r t a r , e l i m i n a r y
buscar. b) ¿ C u á l e s e l tie m p o d e e je c u c ió n , e n n o ta c ió n O . d e c a d a u n o d e e sto s
b) ¿ C u á l e s e l tie m p o d e e je c u c ió n , e n n o ta c ió n O . d e c a d a u n o d e e sto s a lg o ritm o s?
alg o ritm o s? >•) E sc rib a u n a im p le m e n ta c ió n e n J a v a d e d ic h o s a lg o ritm o s.
r) E sc rib a u n a im p le m e n ta c ió n e n J a v a d e d ic h o s a lg o ritm o s.

6 .1 6 . U n a c o la d e p rio rid a d p u e d e im p le m e n ta rse u tiliz a n d o u n v e c to r o rd e n a d o ,


Bibliografía
c o m o se in d ic ó e n e l E je rc ic io 6 .1 4 . S e p id e h a c e r lo sig u ie n te :

n) D e sc rib a lo s a lg o ritm o s p ara llev a r a c a b o b u s c a r M i n . e l i m i n a r M i n L a b ib lio g ra fía c o rre s p o n d ie n te a las e s tiu c tu ra s d e d a to s p re s e n ta d a s e n e s te c a p í ­


e in sertar. tu lo s e p ro p o rc io n a e n la P arle IV.
b) ¿ C u á l e s e l tie m p o d e e je c u c ió n , e n n o ta c ió n O . d e c a d a u n o d e e sto s
alg o ritm o s?
<•) E sc rib a u n a im p le m e n ta c ió n e n J a v a d e d ic h o s a lg o ritm o s.

6.17. U n a c o la d e p rio rid a d p u e d e im p le m e n ta rse a lm a c e n a n d o lo s e le m e n to s e n


un v e c to r sin o rd e n a r c in s e rta n d o e le m e n to s e n la sig u ie n te p o s ic ió n lib re,
c o m o s e in d ic ó e n e l E je rc ic io 6 .1 5 . S e p id e h a c e r lo sig u ie n te:

ti) D e sc rib a los a lg o ritm o s p a ra lle v a r a c a b o b u s c a r M i n . e l i m i n a r M i n


c in sertar.
r 7
c a p í t u l o

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?

U n m é to d o re c u r siv o e s u n m é to d o q u e . d ire c ta o in d ire c ta m e n te , s e h ace u n a lla­


m a d a a s í m ism o E s to p u e d e p a re c e r u n c ír c u lo v ic io so : ¿ c ó m o u n m é to d o F pue­
d e re s o lv e r u n p ro b le m a lla m á n d o se a s í m is m o ? L a c la v e e s tá e n q u e e l m é to d o F
se llam a a sí m ism o p e r o c o n in s ta n c ia s d ife re n te s, m á s s im p le s, e n a lg ú n se n tid o
a d e c u a d o . A q u í tie n e a lg u n o s e jem p lo s:

• L o s fic h e ro s e n u n c o m p u ta d o r se a lm a c e n a n g e n e ra lm e n te e n d ire c to rio s.


L o s u su a rio s p u e d e n c re a r d ire c to rio s , q u e a su v e z a lm a c e n e n m á s fich ero s
y d ire c to rio s. S u p o n g a q u e dcscam »*. e x a m in a r c a d a fic h e ro d e u n d ire c to rio
I). m clu v e n d o to d o s lo s fic h e ro s d e sus s u b d ire c to rio s (y su s su h d irc c to rio s.
y a s i su c e s iv a m e n te ). E s to se p u e d e h a c e r e x a m in a n d o rc c u rsiv a m e n tc lo s
fic h e ro s d e c a d a s u b d ire c to n o ju n to c o n t«xh*s lo s fic h e ro s e n e l d ir e c to r io D
(e ste p ro b le m a se e s tu d ia e n e l C a p ítu lo 17).
• S u p o n g a m o s q u e te n e m o s u n d ic c io n a rio g ra n d e . L a s p a la b ra s e n los d ic c io ­
n a rio s se d e fin e n e n té rm in o s d e o tra s p a la b ra s. C u a n d o b u sc a m o s e l sig n ifi-
cu tio d e u n a p a la b ra , n o s ie m p re e n te n d e m o s la d e fin ic ió n , |H>r lo q u e d e b e ­ E s fá c il v e r q u e e l te o re m a e s c ie n o p a ra V = I p o rq u e ta n to e l la d o iz q u ie rd o
m o s b u s c a r a lg u n a s p a la b ra s d e la p ro p ia d e fin ic ió n . D e la m ism a fo rm a , c o m o e l la d o d e re c h o se e v a lú a n a I. U n e s tu d io m á s la b o rio so re v e la ría , p o r
p u e d e q u e n o e n te n d a m o s a lg ú n as d e e lla s, e n c u y o c a s o te n d re m o s q u e c o n ­ e je m p lo , q u e e s c ie r to p a ra 2 ^ X < 10. S in e m b a r g o , e l h e c h o d e q u e e l te o rem a
tin u a r la b ú sq u e d a d u ra n te un ra to . C o m o e l d ic c io n a rio e s fin ito , e v e n tu a l- s e c u m p la p a ra to d o s lo s ,V p a ra lo s c u a le s e s fá c il c o m p ro b a rlo a m a n o , n o im ­
m e n te lle g a re m o s a u n p u n to e n e l q u e e n te n d e m o s to d a s las p a la b ra s d e una p lic a q u e s e a c ie r to p a ra to d o X . C o n s id e re m o s , p o r e je m p lo , lo s n ú m e ro s d e la
d e fin ic ió n , c o n lo q u e e m e n d e m o s d ic h a d e fin ic ió n y p o d e m o s v o lv e r h a c ia fo rm a 2 2' + I . L o s p rim e ro s c in c o n ú m e ro s (c o rre s p o n d ie n te s a O ^ k < 4 ) s o n 3.
atrá s a tra v é s d e las o tr a s d e fin ic io n e s, o b ie n n o s d a re m o s c u e n ta d e q u e las 5 . 17. 2 5 7 y 6 5 .5 3 7 . lo s c u a le s s o n u n io s p rim o s. IX* h e c h o , h u b o u n m o m e n to en
d e fin ic io n e s so n c irc u la re s p o r lo q u e n o s q u e d a m o s a ta s c a d o s, o b ie n a l­ e l q u e s e c o n je tu ró q u e to d o s lo s n ú m e ro s d e e s ta fo rm a d e b ía n s e r p rim o s. P ero
g u n a p a la b ra q u e n o e n te n d e m o s n o e s tá d e fin id a e n e l d ic c io n a rio . N u estra e llo n o e s c ie rto : se p u e d e c o m p ro b a r fá c ilm e n te c o n u n c o m p u ta d o r q u e
e s tra te g ia re c u rs iv a p a ra c o m p re n d e r las p a la b ra s e s la sig u ie n te : si c o n o c e ­ 22 ’ + I = 641 x 6 .7 0 0 .4 1 7 . D e h e c h o , fu era d e lo s c ita d o s , n o s e c o n o c e n in g ú n
m os e l s ig n ific a d o d e u n a p a la b ra , y a lie n to s te rm in a d o ; e n c a s o c o n tra rio , o tro p rim o d e la fo rm a 2* + I.
b u sc a m o s la p a la b ra e n e l d ic c io n a rio . S i e n te n d e m o s u n ía s la s p a la b ra s de U n a p ru e b a p o r in d u c c ió n tra b a ja e n d o s p a so s. P rim e ro , a l ig u al q u e a n te s , se
la d e fin ic ió n , y a h e m o s te rm in a d o : e n c a s o c o n tra rio , a v e rig u a m o s e l sig n ifi­ d e m u e s tra q u e e l te o r e m a e s c ie r to p a ra lo s c a s o s m á s se n c illo s. D e sp u é s, se d e ­
c a d o d e la d e fin ic ió n b u sc a n d o r e c e s iv a m e n te la s p a la b ra s q u e n o c o n o c e ­ m u e s tra q u e si e l te o re m a e s c ie n o p a ra c ie r to s c a s o s , e n to n c e s s e p u e d e e x ten d e r
m o s. E ste p ro c e d im ie n to te rm in a rá si e l d ic c io n a rio e s tá b ie n d efin id o , p ero p a ra in c lu ir e l sig u ie n te c u so . P o r e je m p lo , se d e m u e s tra q u e u n te o re m a q u e es
p u e d e c ic la r in d e fin id a m e n te si u n a p a la b ra e s tá d e fin id a c irc u la rm e n te . c ie r to p a ra lo d o I < X < k ta m b ié n d e b e s e r c ie r to p a ra I < X k + I . U n a vez
• H a b itu a lm e n te (p a rte s d e ) lo s le n g u a je s d e p ro g ra m a c ió n s e d e fin e n d e f o r ­ se m u e s tra c ó m o e x te n d e r e l r a n g o d e c a s o s c ie rto s , q u e d a d e m o s tra d o e l re s u lta d o
m a r e c u r s o a. P o r e je m p lo , u n a e x p re s ió n (a r itm é tic a ) e s u n a v a ria b le p rim i­ p a ra to d o s lo s c a s o s , y a q u e p o d e m o s e x te n d e r e l r a n g o d e lo s c a s o s c ie rto s in d e fi­
tiv a . o u n a e x p re s ió n c o n p a ré n te sis, o la s u m a d e d o s e x p re s io n e s , e tc. n id a m e n te . V e a m o s la u tiliz a c ió n d e e s ta té c n ic a p a ra d e m o s tra r e l T e o re m a 7.1

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

por inducción m atem ática


m t ¡ = <* + I X * + 2 ) 2.

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

" !>** ' ~‘‘ 2 = U + D 2 - k ( k + I ) /2 . <7.5) 1 // Evalúa la suma d e l o s n p r i m e r o s e n t e r o s


2
U na m a n ip u la c ió n a lg e b r a ic a s im p le d e l la d o d e r e c h o d e la E c u a c ió n 7.5 3 public s ta tic long s( int n )
p r o d u c e a h o ra 4 {
5 ií( n -■ 1 >
6 return 1 ;
I )‘ * ' - ‘¡2 = « + I X * + 2 )/2 . 7 e l se
8 return s( n - 1 I * n;
lo c u a l d e m u e s tr a e l te o r e m a p a r a N = k + I . L u eg o , p o r in d u c c ió n , e l te o ­ 9 )
re m a e s c ie r to p a r a lin io jV ^ 1. Figura 7.1 Eva lu a ció n recursiva d e k3 sum a d e ios N prim eras enteros
d e m a s ia d a s , in c lu s o p a ra u n c o m p u ta d o r, s e r ía e l m o m e n to d e p re o c u p a rs e E sas ú ltim o d íg ito , q u e se p u e d e c a lc u la r d e fo rm a in m e d ia ta c o m o n % 1 0 (q u e v a le n
c u e stio n e s se d is c u tirá n m á s a d e la n te e n e s te m is m o ca p ítu lo . p a ra n m e n o r q u e 10).
Si te n e m o s un c a s o b a s e y n u e stra s lla m a d a s re e u r s iv a s p ro g re sa n h a c ia e l c a ­ L a re c u rs ió n n o s p io p o rc io n a u n a s o lu c ió n e le g a n te . P a ra im p rim ir 1 3 6 9 . b a s ­
s o b a se , e n to n c e s te rm in a re m o s e v e n tu a lm e n te . C o n e llo c o n c lu im o s n u e s tra s d o s ta ría c o n im p rim ir 136 s e g u id o d e l ú ltim o d íg ito . 9. C o m o h e m o s m e n c io n a d o , es
p rim e ra s re g la s fu n d a m e n ta le s d e la re c u rsió n : fác il o b te n e r e l ú ltim o d íg ito u s a n d o e l o p e ra d o r %. Im p rim ir e l n ú m e ro e n te ro
e x c e p tu a n d o su ú ltim o d íg ito e s ta m b ié n s e n c illo , y a q u e c o rre s p o n d e a im p rim ir
1. C a so s b a se : se 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 ase q u e p u e d a re s o l­ n / 1 0 . lo q u e se p u e d e h a c e r m e d ia n te u n a lla m a d a rev u lsiv a.
v e rse sin recu rsió n . F.l m é to d o d e la F ig u ra 7 .2 im p le m e n ta e s ta ru tin a d e im p re sió n . S i n e s m e n o r
2. P ro g re so : c u a lq u ie r lla m a d a re c u rs iv a d e b e p ro g r e s a r h a c ia un c a s o b ase. q u e 1 0 . e n to n c e s n o se e je c u ta la lín e a 6 y so la m e n te se im p rim e e l d íg ito n%1 0 .
F n c a s o c o n tra rio , s e im p rim e to d o s m e n o s e l ú ltim o d íg ito y d e s p u é s se im p rim e
N u e stra ru tin a tie n e a lg u n o s p ro b le m a s, ll n p rim e r p ro b le m a lo c o n s titu iría la
é s te .
lla m a d a a s ( 0 > . p a ra la c u a l e l m é to d o s e c o m p o r ta d e fo rm a p o b r e 1. S in e m b a r­
O b s e rv e q u e te n e m o s un c a s o b a s e (n e s un e n te r o d e u n s o lo d íg ito ) y q u e
g o . n o d e b e v e rs e c o m o un e r r o r p o rq u e e l c a s o re c u rs iv o d e la d e fin ic ió n d e .S'(AT
to d a s la s lla m a d a s re c u rs iv a s p ro g re sa n h a c ia e l c u so b a s e p o rq u e e l a rg u m e n to
no in c lu y e lo s v a lo re s A < I. P o d ría m o s a rre g la r e s te p ro b le m a e x te n d ie n d o la d e ­
c o n e l q u e se h a c e la lla m a d a re c u rsiv a tie n e un d íg ito m e n o s . P o r ta n to , h e m o s
fin ic ió n d e S (V ) p a ra in c lu ir N = 0 . P u e sto q u e e n e s te c a s o n o h a y n ú m e ro s que
sa tis fe c h o las d o s p rim e ra s re g la s fu n d a m e n ta le s d e la re c u rsió n .
s u m a r, u n v a lo r n a tu ra l p a ra 5 (0 ) s e r ía 0 . E s to a d e m á s h a ría q u e la d e fin ic ió n re-
P ara q u e n u e s tra ru tin a d e im p re sió n s e a útil m á s a llá d e la m e ra a n é c d o ta , la
c u rs iv a s e p u d ie ra a p lic a r a Si I ). y a q u e 5 (0 ) + I e s I . P a ra im p le m c n ta r e s te c a m ­
e x te n d e m o s p a ra q u e p u e d a im p rim ir e l n ú m e ro e n c u a lq u ie r b a s e e n tre 2 y U»'.
b io . b a s ta s u s titu ir 1 p o r 0 e n la s lín e a s 5 y 6 . L o s N n e g a tiv o s ta m b ié n p ro d u c i­
E sta m o d ific a c ió n s e m u e s tra e n la F ig u ra 7 .3 . lie m o s in tro d u c id o un v e c to r de
rían c o m p o rta m ie n to s in d e s e a b le s , q u e se p o d ría n s o lv e n ta r d e fo rm a a n á lo g a a
c a ra c te re s p a ra h a c e r m á s se n c illa la im p re sió n d e las c if ra s e n tre la a y la f . poi
c o m o h ic im o s p a ra V = 0 (s e d e ja c o m o E je rc ic io 7.2).
lo q u e a h o ra la sa lid a d e c a d a d íg ito se re a liz a in d e x a n d o e l v e c to r t a b l a D i g i t o s .
U n se g u n d o p ro b le m a e s q u e c u a n d o e l p a rá m e tro n e s g ra n d e , e l p ro g ra m a
O b sé rv e se q u e la ru tin a i m p r i m e E n t e r o n o e s ro b u s ta , p u e s si b a s e e s m a y o r
p u e d e a b o rta r o n o a c a b a r. E n n u e s tro s is te m a , p o r e je m p lo , n o s e p u e d e tra ta r
V 2* 9 .4 1 0 . q u e 16. e n to n c e s e l ín d ic e d e n tr o d e t a b l a D i g i t o s e s ta r á fu era d e ran g o . P o r su
p a rte , si b a s e e s 0 , se p ro d u c irá un e r r o r a ritm é tic o e n la lín e a 9 a l in te n ta r re a li­
E s to su c e d e p o rq u e , c o m o h e m o s v is to , la im p le m e n ta c ió n d e la re c u rsió n re ­
q u ie re un tra ta m ie n to d e las lla m a d a s re c u rs iv a s p e n d ie n te s, y p a ra c a d e n a s d e r e ­ z a r u n a d iv is ió n p o r 0.
c u rs ió n lo su fic ie n te m e n te la rg a s, e l c o m p u ta d o r s im p le m e n te s e q u e d a sin m e m o ­
ria d e d ic a d a a l e fe c to . E s to s e e x p lic a rá c o n m á s d e ta lle m á s a d e la n te e n el 1 // I mpr i mí » n c o m o u n n ú m e r o e n b a s o d i e z
c a p ítu lo . E s ta m b ié n c ie r to q u e la ru tin a e s m á s c o s to s a q u e e l b u c le e q u iv a le n te , 2

p u e s e l tr a ta m ie n to d e las lla m a d a s re c u rs iv a s lle v a u n c ie r to tiem p o . 3 public s t a t i c v o i d imprimeBaseDiezl int n )


4 I
(ju e d a c la r o p u e s q u e e s te e je m p lo c o n c re to n o re p re s e n ta e l m e jo r u s o d e la
5 i £ ( n > = 10 >
re c u rsió n . p u e s to q u e e s m u y s e n c illo re s o lv e r e l p ro b le m a sin e lla . L a m a y o r p a r­ 6 im p rim e B a se D iez ) n / 10 1;
te d e lo s b u e n o s u s o s d e la re c u rsió n n o a g o ta rá n la m e m o ria d e l c o m p u ta d o r y 7 S ystem .out.print( '0 ' * n % 1 0 >;
s ó lo s o n lig e ra m e n te m á s le n to s q u e la s im p lc m c n ta c io n e s n o re c u rsiv a s . P e ro la
re c u rsió n s ie m p re n o s c o n d u c e a p ro d u c ir un c ó d ig o m á s c o m p a c to . Fi guro 7. 2 R u t i n a r e c u r s i v a p o r a imprimir N en b a s e di ez

7.3.1 Impresión d e números en cualquier base 1 / / I m p r i m e r. e n c u a l q u i e r b a s e


2 I I As u me q u e 2 <= b a s e < = 1 6
3
U n b u e n e je m p lo d e c ó m o la re c u rs ió n s im p lific a la c o d if ic a c ió n d e lo s p ro c e d i­
4 f i n a l s t a t i c S t r i n g t a b l a D i g i t o s = • Dl23456'?89abcdeí *;
m ie n to ' e s la im p re sió n d e n ú m e ro s. S u p o n g a m o s q u e q u e re m o s im p rim ir u n n ú ­ 5
m e ro V n o n e g a tiv o e n b a s e d ie z p e ro q u e n o te n e m o s d is p o n ib le u n m é to d o d e 6 p u b l ic s t a t i c v o id im prim eE ntero( i n t n , ir.t b a s e |
im p re sió n d e n ú m e ro s, a u n q u e s í p o d e m o s im p rim ir u n d íg ito c a d a v e /. C o n s id e ­ 7 {
re m o s. p o r eje m p lo , c ó m o im p rim iría m o s e l n ú m e ro 1 3 6 9 . P rim e ro n e c e s ita ría ­ 8 i f ( n >= b a s e |
9 imprim eEnteroI n / base, b ase ) ;
m o s im p rim ir u n l . lu e g o u n 3. d e s p u é s u n 6 y fin a lm e n te un 9 . Hl p ro b le m a es 10 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 a . c h a r A t < n * basco ) ) ;
q u e o b te n e r e l p rim e r d íg ito e s un ta n to c o sto so : d a d o u n n ú m e ro n , n e c e sita m o s 11 }
un b u c le p a ra d e te r m in a r e l p rim e r d íg ito d e n. E s to c o n tra s ta c o n la o b te n c ió n d e l
Figuro 7.3 R u tin a re e m siv a p a r a imprimir N e n c u a lq u ie r b a s e e n tr e 2 y 16

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

R ecu erd e q u e la im p le m e n ta c ió n d e la re c u rsió n re q u ie re la re a liz ac ió n d e la rc a s de E n e s te lib ro hay m u c h o s e je m p lo s q u e ilu stran e l p o d e r d e la re c u rsió n S in e m - n«

h a jo n iv e l p**r p a n e riel c o m p u ta d o r D ic h o d e o irá fo rm a , la im p le m e n ta c ió n d e h a rg o . a n te s d e e x a m in a r e s o s e je m p lo s , e s im p o rta n te d a rs e c u e n ta d e q u e la


cu a lq u ie r m é to d o req u ie re c ie rta s ta rc a s d e b a jo n iv e l v u n m é to d o re c u rsiv o n o es re c u rsió n n o sie m p re e s a p ro p ia d a P o r e je m p lo , e l u s o d e la re c u rs ió n e n la F ig u - *
e n e llo p a rtic u la rm e n te e sp e c ia l (e x c e p to p o r e l h e c h o d e q u e p u e d e so b re p a sa r las ra 7.1 e s p o b re , u n b u c le fu n c io n a ría ig u al d e b ie n . El in c o n v e n ie n te p rá c tic o es
lim itacio n es del c o m p u ta d o r al lla m arse a sí m ism a d e m a s ia d a s v ec es). q u e la s lla m a d a s re c u rsiv a s c o n su m e n tie m p o v lim ita n e l v a lo r d e n p a ra e l cual
A l ig u a l q u e o tro s le n g u a je s c o m o C * * y A d a . J a v a in ip le m e n ta los m é to d o s se p u e d e e je c u ta r e l p ro g ra m a . IIn a b u e n a re g la e s q u e n u n c a se d e b e u s a r la re ­
m e d ia n te u n a p ila J e r e g istr o s J e a c tiv a c ió n . P o d e m o s v e r u n re g istro d e a c tiv a ­ c u rs ió n e n s u s titu c ió n d e u n sim p le bucle.
ció n c o m o u n t r o / o d e p a p e l q u e c o n tie n e in fo rm a c ió n re le v a n te s o b re e l m é to d o , l 'n p ro b le m a m u c h o m á s s e r io a p a re c e , p o r e je m p lo , a l in te n ta r c a lc u la r lo s ei

la c u a l in c lu y e , p o r e je m p lo , lo s v a lo re s d e lo s p a rá m e tro s y la s v a ria b le s lo c ale s. n ú m e ro s d e F ib o n a c c i re c u rsiv á m e n te . L o s p rim e ro s m a ñ e ro s J e H b o n a c c i F,+ / j . h


F.l c o n te n id o c o n c re to d e lo s re g istro s d e a c tiv a c ió n d e p e n d e d e l sistem a . .... F, s e d e fin en d e la sig u ie n te fo rm a: F t>= 0 y F x = I. E l i-é sim o n ú m e ro d e F i- ^
Se u s a u n a p ila d e re g is tro s d e a c ti\a c ió n p o rq u e la te rm in a c ió n d e lo s m é to ­ b o n a c c i e s ig u a l a la su m a d e lo s d o s a n te rio re s , e s d e c ir F , ■ F , , *■ F t _ , A fj
d o s s e p ro d u c e e n s e n tid o in v e rs o a la in v o c a c ió n d e los m is m o s R e c u e rd e q u e las p a rtir d e e s ta d e fin ic ió n , p o d e m o s d e te r m in a r q u e la se rie d e n ú m e ro s d e F ib o n a c -
p ila s so n a d e c u a d a s p a ra in v e rtir s e c u e n c ia s, la* m á s h a b itu a l e s q u e la c im a d e la c i c o n tin ú a así: I . 2 . 3. 5 . 8. 13. 2 1 . 3 4 . 5 5 . 8 9 ........
p ila a lm a c e n e e l re g is tr o d e a c tiv a c ió n d e l m é to d o a c tu a lm e n te a c tiv o . C u a n d o se I.**s n ú m e ro s d e F ib o n a c c i tie n e n u n a e n o rm id a d d e p ro p ie d a d e s , q u e e n m u ­
lla m a al m é to d o ( i . se c o lo c a un n u e v o re g istro d e a c tiv a c ió n e n la c im a d e la p ila , c h o s c a s o s p a re c e n s u rg ir d e fo rm a in e s p e ra d a D e h e c h o , la re v is ta lite F ih tm a c c i
lo c u a l h a c e q u e ( i s e a e l m é to d o a c tu a lm e n te a c tiv o . C u a n d o te rm in a u n m éto d o , (Jiuirterly-' e x is te so la m e n te c o n e l p ro p ó s ito d e p u b lic a r te o re m a s q u e im p liq u e n
s e d e sa p ila la c im a d e la p ila y e l re g istro d e a c tiv a c ió n q u e q u e d a e n la c im a c o n ­ a lo s n ú m e ro s d e F ib o n a c c i. P o r e je m p lo , la su m a d e lo s V p rim e ro s n ú m e ro s de
tie n e lo s val or es p rev io s. F ib o n a c c i es u n o m e n o s q u e F s , : . y la s u m a d e lo s c u a d ra d o s d e d o s n ú m e ro s d e
C o m o e je m p lo , e n la F ig u ra 7 .5 s e m u e s tra u n a p ila d e re g is tro s d e a c tiv a c ió n F ib o n a c c i c o n s e c u tiv o s e s s ie m p re o tr o n ú m e ro d e F ib o n a c c i (e n e l E je rc ic io 7 .9
q u e a p a re c e n e n e l c u r s o d e la e v a lu a c ió n d e s ( 4 » . Kn e s te p u n to , te n e m o s lla m a ­ se m u e s tra n o tra s ig u a ld a d e s in te re sa n te s).
d a s p e n d ie n te s a m a i n . s ( 4 ) \ s ( 3 ) . v e s ta m o s p ro c e s a n d o s ( 2 » . P u e sto q u e lo s n ú m e ro s d e F ib o n a c c i se d e fin e n re c u rs iv a m e n te . p a re c e n a tu - s
Se p ro d u c e u n a s o b re c a rg a e n e s p a c io d e b u to a la m e m o ria n e c e sa ria p a ra a l­ ral e s c r ib ir u n a ru tin a re c u rs iv a p ara d e te r m in a r F \ . D ic h a ru tin a , m o s tra d a e n la fl
m a c e n a r u n re g is tr o d e a c tiv a c ió n p a ra c a d a m é to d o a c tu a lm e n te a c tiv o . A sí. e n el F ig u ra 7.(». fu n c io n a c o rre c ta m e n te a ni vel te ó ric o , per*» tie n e u n sen** p ro b lem a:
e je m p lo a n te rio r e n e l q u e h ( 9 4 1 0 ) a b o rta , e l s iste m a te n ía e s p a c io re s e rv a d o p a ­ e n u n a m á q u in a re la tiv a m e n te rá p id a ta rd a m o s v a rio s m in u to s e n c a lc u la r F u *• E s- M
ra u n o s 9 .4 1 0 re g istro s d e a c tiv a c ió n . (O b s e rv e q u e m a i n g e n e ra ta m b ié n u n re g is­ lo e s u n a c a n tid a d a b s u rd a d e tie m p o c o n s id e ra n d o q u e e l c á lc u lo re q u e rid o p re c i­
tr o d e a c tiv a c ió n .) L a s o b re c a rg a e n tie m p o p ro d u c id a a l e je c u ta r u n a lla m a d a a un sa so la m e n te d e 3 9 su m as.
m é to d o c o rre s p o n d e a la e je c u c ió n d e la s o p e ra c io n e s d e a p ila r y d e s a p ila r so b re F l p ro b le m a s u b y a c e n te e s q u e e s ta ru tin a re c u rsiv u lle v a a c a b o m u ltitu d de
la pi l a interna. c á lc u lo s re p e tid o s. P a ra c a lc u la r f i b <n ) . c a lc u la m o s re c u rsiv a m e n te f i b ( n - l ) .
L a c e rc a n a re la c ió n e n tr e re c u rs ió n y p ila s n o s d ic e q u e lo s p ro g ra m a s re c u r s i­ C 'u.m do la lla m a d a re c u rs iv a te rm in a , c a lc u la m o s f i b ( n - 2 ) u s a n d o o tr a lla m a d a
v o s s ie m p re se p u e d e n im p le m e n ta r d e fo rm a ite ra tiv a c o n u n a p ila e x p líc ita . Prc re c u rsiv a . P e ro n o s o tro s y a h a b ía m o s c a lc u la d o f i b ( n - 2 ) a l c a lc u la r f i b ( n - l ) .
s u m ib le m e n te la p ila a lm a c e n a rá o b je to s m á s p e q u e ñ o s q u e lo s re g istro s d e a cli- lu e g o la lla m a d a a f i b ( n - 2 ) e s u n c á lc u lo repetid*» y . p o r e llo , u n a p é rd id a de
v a c ió n , d a d a la g e n e ra lid a d d e é s to s , p o r lo q u e p o d e m o s e s p e ra r ra z o n a b le m e n te tiem p o . IX- h e c h o s e e s tá n h a c ie n d o d«*s lla m a d a s a f i b ( n - 2 > e n lu g a r d e una
q u e se u s e a lg o m e n o s d e e s p a c io . A d e m á s, e l resultad** s e r ia lig e ra m e n te m á s r á ­
p id o . p e ro e l c ó d ig o n o ta b le m e n te m á s la rg o y c o m p le jo . L o s m o d e rn o s c o m p ila ­
1 n C a l c u l a e l n - e s lm o n u n e r o d e F ib o n a c c i
d o re s o p tim iz a n te s h a n reducid*» lo s c o s te s e n tie m p o a s o c ia d o s a la re c u rsió n a un
2 / / E s u n ma l a l g o r i t m o
g ra d o tal q u e ra ra m e n te v a le la p e n a e lim in a r la re c u rs ió n d e u n a a p lic a c ió n q u e la 3 pu blic a t a t i c long fib< int n >
u sa c o rre c ta m e n te . 4 t
5 1f< n <= 1 )
6 re tu rn n;
7 e ls e
C IM A : s (2 ) 8 return i i b l n - 1 ) * f i b ( r. - 2 I ;
8(3» 9 )
Figura 7 6 R u in a r e c a v a p o ra e( c Ó lc iJo d e los núm eros d e Ffco n o cci in a m ata
s (4 ) id ea
mainl)

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

Figura 7.7 Traza d e l c á lc u lo recursivo d e los núm eros d e Fib o n acci 8 {


9 r e tu r n busquedaB inaria! a. x, 0. a . l e n g t h -1 );
10 )
11
12 /• •
7.3.5 Ejem plos adicionales 13 * R utina re c u rs iv a o c u lta .
14 •/
15 p r í v a t e s t a t i c i n t b u sq u e d a B in a ria ! Comparable | ) a,
Q u iz á la m e jo r fo rm a d e e n te n d e r la re c u rsió n s e a v ie n d o a lg u n o s e je m p lo s sig n i­ 16 Comparable x. i n t i n f . i n t sup )
fic a tiv o s. E n e s ta se c c ió n , p re s e n ta m o s c u a tro e je m p lo s m á s d e re c u rsió n . L o s d o s 17 th r o w s ElementoNoEncontra<
p rim e ro s s e p o d ría n im p le m e n ta r fá c ilm e n te d e fo rm a n o re c u rsiv a , p e ro lo s dos 18 <
ú ltim o s p o n e n al d e s c u b ie rto e l p o d e r d e la re c u rsió n . 19 if! inf > sup )
20 t h r o w r.ew 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 i a t a l l a ’ )
21 i n t me d = ( i n f * s u p ) / 2:
22 i f i a [ med 1 . co m p a ra! x ) < 0 )
El factorial 23
24
r e t u r n b u s q u e d a B i n a r i a ! a . x . med
e l s e í f ( a l me d 1 . c o m p a r a i x ) > 0 )
- 1, su p );

25 r e tu r n busquedaB inaria ( a . x , i n t , med - 1 ) ;


R e c u e rd e q u e ;V» e s e l p ro d u c to d e lo s S p rim e ro s e n te ro s, p o r lo q u e p o d e m o s 26 else
e s c r ib ir ;V! c o m o A v e c e s (A' - I)!. C o m b in a d o c o n e l c a s o b a s e I! = 1. y a te n e ­ 27 r e t u r n med;
m o s to d o lo n e c e sa rio p a ra u n a im p le m e n ta c ió n re c u rsiv a , la c u a l s e m u e s tra e n la 28 }
F ig u ra 7.8. Figura 7.9 Rutina d e bú squeda b inaria usando recursión.
E n e l m é to d o rc c u rs iv o , e l c u s o b a s e d e la s lín e a s I ') y 2 0 tra ta e l c a s o d e l vec­ a o tr o p u n to , d o n d e las c o o rd e n a d a s s o n d e s p la z a m ie n to s d e sd e la e s q u in a s u p e ­
to r v a c ío . E n c a s o c o n tra rio , s e g u im o s la s d e s c rip c ió n d a d a , h a c ie n d o u n a llam ad a rio r izq u ierd a.
re c u rsiv a so b re e l fra g m e n to d e l v e c to r a p ro p ia d o (lín e a s 23 o 2 5 ) si n o s e h a e n ­ N u e stra ru tin a d ib iq a m a re a s a n i v e l a ltu ra s d ife re n te s; c a d a lla m a d a rccu rsi-
c o n tra d o y a e l e le m e n to e n e l c e n tro . C u a n d o se e n c u e n tra e l e le m e n to , se d e v u e l­ v a e s u n n iv e l m á s p ro fu n d a te n la F ig u ra 7 .1 0 h a y o c h o n iveles». E n las lín e a s 4 y
v e su p o s ic ió n e n la lín e a 27. 5 se tra ta e l c a s o b a se . E n la lín e a ó s e d ib u ja la lín e a c e n tra l y d e sp u é s se d ib u jan
O b se rv e q u 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 O . n o c a m b ia c o n re sp ecto recu rsiv á m e n te las d o s m in ia tu ra s e n las lín e a s 11 y 12. E n e l c ó d ig o d is p o n ib le e n
a la im p le m e n ta c ió n n o re c u rsiv a , y a q u e e s ta m o s re a liz a n d o e s e n c ia lm e n te el In te rn et, in c lu im o s c ó d ig o e x tr a p a ra ra le n tiz a r e l p ro c e so d e d ib u jo , d e fo rm a q u e
m ism o tra b a jo . E n la p rá c tic a , e l tie m p o d e e je c u c ió n s e rá lig e ra m e n te su p e rio r se p u e d a ir v ie n d o e l o rd en e n q u e se p in ta n las líneas.
d e b id o a los c o s te s o c u lto s d e la re c u rsió n .
Estrella fractal
Dibujando una regla E n la parte izq u ierd a d e la F igura 7.12 a p a re c e ap aren tem en te un co m p le jo patrón,
llam ad o e strella fra c ta l. e l c u a l sin em b arg o , se p u e d e d ib u ja r fácilm en te usan d o re­
L a F ig u ra 7 .1 0 m u e s tra e l re s u lta d o d e la e je c u c ió n d e u n p ro g ra m a J a v a q u e d ib u ­ cursión. E l dibujo en tero e s inicialm ente g n \ (n o se m uestra e n la figura). El patrón se
ja las m a rc a s d e u n a re g la . A q u í c o n s id e ra m o s e l p ro b le m a d e d ib u ja r u n a pulga-» fo rm a d ib u ja n d o cu ad rad o s b lan co s sobre e l fondo gris. E n la p arte d e re c h a d e la Ei
d a. E n e l m e d io s e c o lo c a la m a rc a m á s la rg a . F.n la F ig u ra 7 .1 0 . ta n to a la iz q u ie r­ g u ra 7.12 se m u estra e l dibujo antes de añ ad ir el ú ltim o cu ad rad o , q u e v a e n e l cen tro
d a c o m o a la d e re c h a d e la m a rc a c e n tra l e n c o n tra m o s u n a v e rs ió n m in ia lu riz a d a P arece ev id e n te que a n tes d e a ñ ad ir el ú ltim o c u ad rad o d e l cen tro , se h a ten id o que
d e la re g la . E s to su g ie re u n a lg o ritm o re c u rs iv o q u e d ib u ja p rim e ro la lín e a c e n tra l d ib u ja r c u a tro v ersio n es e n m in iatu ra, u n a p ara c a d a u n o d e los cuadrantes, lo cual
y d e s p u é s las m ita d e s iz q u ie rd a y d ere c h a . p ro p o rcio n a la in to n n a c ió n n ec e sa ria p a ra d e riv a r el a lg o ritm o recursivo.
E l A p é n d ic e D p ro p o rc io n a lo s d e ta lle s d e l d ib u jo d e lín e a s y fig u ras e n Ja v a . Igual q u e e n e l e je m p lo a n terio r, e l m é to d o p i n t a F r a c t a l s e rá llam ad o d esd e
B a sta d e c ir a q u í q u e e l p ro g ra m a d o r d e b e p ro p o rc io n a r u n m é to d o p a i n t . e l c u a l p a i n t y u sa u n a ru tin a d e la lib re ría d e Java, e n e s te c a s o f i l l R e c t . que p in ta un
p u e d e lla m a r a o tr o s m é to d o s. E l m é to d o p i n t a R e g l a d e la F ig u ra 7 .1 1 e s la ru ti­ re c tá n g u lo c u y a e s q u in a su p e rio r iz q u ie rd a y d im e n sio n e s d e b e n e sp e cificarse. F.n la
n a re c u rsiv a lla m a d a d e s d e p a i n t . U s a e l m é to d o d r a w L i n e , q u e es p a rte d e la F ig u ra 7 .1 3 se m u e s tra e l c ó d ig o re s u lta n te . L os p a rá m e tro s d e p i n t a F r a c t a l
lib re ría d e Ja v a . E ste m é to d o p in ta u n a lín e a d e s d e un p u n to d e c o o rd e n a d a s <v.y> in c lu y e n e l c e n tr o d e l fra c ta l y la d im e n s ió n total. C o n e llo s p o d e m o s c a lc u la r en
la lín e a 5 e l ta m a ñ o d e l c u a d ra d o g ra n d e d e l c e n tro . D e sp u é s d e tr a ta r e l c u s o base
e n la s lín e a s 7 y 8 . c a lc u la m o s lo s lím ite s d e l re c tá n g u lo c e n tra l. E n to n c e s p o d e ­
* JE Jx J m o s d ib u ja r lo s c u a tr o p e q u e ñ o s fra c ta lc s e n las lín e a s 17 a 2(1. F in a lm e n te d ib u ja ­
m o s e l c u a d ra d o c e n tr a l e n la lín e a 23. O b s e rv e q u e e l c u a d ra d o se d e b e p in ta r tras
la s lla m a d a s re c u rsiv a s , y a q u e e n c a s o c o n tra rio s e o b te n d r ía un d ib u jo d ife re n te
(e n e l E je rc ic io 7 .2 8 s e le p id e q u e e x p liq u e la d ife re n c ia ).

Figuro 7 .10 U na reg la d ib u jad a re ce siva m e n te

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

PROBLEMA DE LA O B TE N C IÓ N DE LA SU BSECUENCIA DE SU M A M Á X IM A 4* 0 3 -2 1 7* 5 S»mas


Doaa u n a s u c e s ió n d e e n t e r o s ( p o s t r e m e n t e n e g a r n o s ) A , . A 2 AN. k r o < »ae & cer ne
e n c o n t r a r ( e id e n tific a r l a s e c u e n c i a c o r r e s p o n d i e n t e a ) e l v a lo r m á ­ l’Oero*i - '-xM-D Dcra cada rr*xJ|
x im o d e L'k (A , • C o n s id e r a r e m o s q u e l a s u b s e c u e n c i a c o n t i g u a d e
s u m a m á x i m a e s l a v a c í a , d e s u m a c e r o , si t o d o s lo s e n t e r o s s o n n e Figuro 7.17 D ividiendo e n do s e l p roblem a d e la o b ten ció n d e la su bsecuen cia
g a tiv o s m óxim a.
E slc a n á lisis n o s m u e s tra q u e e l c a s o 3 se p u e d e re s o lv e r e n tie m p o lineal 1 /••
P ero , ¿ q u é p a s a c o n lo s c a s o s I y 2 ? P u e sto q u e h a y N /2 e le m e n to s e n c a d a m itad , 2 * A l g o r i c m o d e o b t e n c i ó n d e l a s u b s e c u e n c i a d e suma máxima.
la a p lic a c ió n d e u n a b ú s q u e d a e x h a u s tiv a e n c a d a m ita d re q u e riría u n tie m p o c u a - 3 * E n c u e n t r a l a suma máxima d e u n s u b v e c t o r a | i z d o . . d e h o ] .
4 • No i n t e n t a m a n t e n e r l a m e j o r s e c u e n c i a .
d rá iic o p o r c a d a m ita d . E s p e c ífic a m e n te , lo ú n ic o q u e h e m o s h e c h o e s e lim in a r la
5 •/
m ita d d e l tra b a jo , y la m ita d d e u n tie m p o c u a d rá tic o sig u e s ie n d o c u a d rá tic o . 6 p r í v a t e - s t a t i c i n t maxSumRec ( i n t [ | a , i n t i z d o ,
P e ro p o d e m o s a p lic a r la m ism a e s tra te g ia d e d iv isió n p o r la m ita d e n lo s c a s o s I 7 i n t deho >
y 2. P o d e m o s c o n tin u a r d iv id ie n d o h a s ta q u e s e a im p o sib le d iv id ir m ás. E s to e q u i­ 8 (
9 i n t m a x S u m l z d a B o r d e = C, m a x S u m D c h a B o r d e = 0;
v a le. m á s c o n c re ta m e n te , a re s o lv e r los c a s o s I y 2 rec u rsiv a m e rite . C o m o se d e ­
10 i n t sum lzda B orde - 0. sumDchaBorde = 0:
m o s tra rá m á s a d e la n te e n e l c a p ítu lo , e s to re d u c irá e l tie m p o d e e je c u c ió n p o r de 11 i n t c e n t r o = t iz d o • deho J / 2 ;
b a jo d e c u a d rá tic o . p u e s lo s a h o rro s se a c u m u la n a lo la rg o d e la e je c u c ió n del 12
a lg o ritm o . M o s tra m o s a c o n tin u a c ió n un e s q u e m a d e l a lg o ritm o 13 if ( i z d o == d e h o ) / / C a s o bas«»
14 re tu rn a ( izdo ] > 0 ? a( izdo )• : 0 ;
1. C a lc u la r re c u rriv á m e n te la su b s e c u e n c ia d e s u m a m á x im a q u e e s tá to ta l­ 15
m en te c o n te n id a e n la p rim e ra m itad . 16 i n t ma x S ui r . I z d a = maxSu-' rRec ( a , i z d o , c e n t r o );
2. C a lc u la r ^ c u r s iv a m e n te la su b s e c u e n c ia d e s u m a m á x im a q u e e s tá to ta l­ 17 i n t naxSumDcha = maxSumRec< a . c e n t r o * 1, d e h o ir
18
m en te c o n te n id a e n la s e g u n d a m itad.
19 for( int i = centro; i >= i z d o ; i-- )
3. C a lc u la r, u s a n d o d o s b u c le s c o n se c u tiv o s, la su b s e c u e n c ia d e s u m a m á x i­ 20
m a q u e c o m ie n z a e n la p rim e ra m ita d p e ro te rm in a e n la se g u n d a . 21 s u m í 2d a B o r d e * - a l i );
4. E le g ir la m a y o r d e la s tre s su m as. 22 i f (sum lzda B orde > maxSumlzdaBorde)
23 n a x S u t n lz d a B o r d e = auml z d a B o r d e ;
El m é to d o J a v a re s u lta n te a p a re c e e n la F ig u ra 7 .1 8 . U n a lg o ritm o re c u rsiv o 24
n o s e x ig e d e fin ir u n c a s o b ase. N a tu ra lm e n te , c u a n d o e l d a to e s u n so lo e le m e n to , 25 forI inr j = c e n t r o • 1; j <■ d e h o ; j** )
no u s a m o s recu rsió n . 26 (
27 s u m D c h a B o r d e •= a i j 1;
A la lla m a d a re c u rs iv a se le p a s a e l v e c to r d e e n tra d a ju n to c o n lo s lím ite s iz ­
28 i£ ( s u m D c h a B o r d e > maxSum. Dc haBor de )
q u ie rd o y d e re c h o , lo s c u a le s d e lim ita n la p o rc ió n d e v e c to r so b re la q u e s e e s tá 29 maxSumDcha3orde = sumDchaBorde;
o p e ra n d o . U n a ru tin a g u ía d e u n a lín e a in ic ia li/a lo s p a rá m e tro s lím ite a 0 y ,V I . 30 )
I-as lín e a s 13 y 14 tra ta n e l c a s o b ase. S i i z d o = = d e h o . s ó lo te n e m o s un e le ­ 31
32 r e t u r n maxJI x a x S u m l z d a , ma x S umDc h a ,
m e n to q u e c o n fo rm a la s u b s e c u e n c ia d e s u m a m á x im a si es n o n e g a tiv o ; e n c u so
33 m a x S u n iI z d a 3 o r á e - rr.axSunDcha3oráe >;
c o n tra rio , la s e c u e n c ia v a c ía c o n s u m a 0 e s m á x im a . L a s lín e a s 16 y 17 lle v a n a
34 )
c a b o las lla m a d a s re c u rsiv a s. P o d e m o s v er q u e la s lla m a d a s re c u rs iv a s sie m p re se 35
re a liz a n so b re u n a rg u m e n to m á s p e q u e ñ o q u e e l o rig in a l, p o r lo q u e h a c e m o s p ro ­ 36 / / R utina v i s i b l e públicam ente
greso*. h a c ia e l c a s o b a se . Ij s lín e a s 19 a 2 4 y 25 a 3 0 c a lc u la n las su m a s m á x i­ 37 p u b l i c s t a t i c i n t maxSubSum4< i n t ( 1 a l
38 {
m a s q u e to can e l b o rd e c e n tra l. L a s u m a d e e s to s d o s v a lo re s e s la s u m a m á x im a
39 r e t u r n n a x S u i r R e r l a . 0, a . l e n g t h - 1 1 ;
q u e s e e x tie n d e p o r a m b a s m ita d e s. L a ru tin a triv ia l m ax 3 (q u e n o se m u e s tra ) d e ­ 40 )
v u e lv e la m a y o r d e las tre s s o lu c io n e s p a rc ia les.
Figura 7.18 Algoiítm o divide y ve n ce rá s p a ra e l p ro b lem a d e lo o b ten ció n d e la
su b secu en cia d e sum a m áxim a.

7.5.2 Análisis de un algoritmo divide y vencerás sencillo


e l c o s te d e l re c o rrid o p a ra e l te r c e r c a so . L a lla m a d a in ic ia l h a c e e n to n c e s d o s lla ­
E l a lg o ritm o re c u rsiv o 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 su m a m á x im a usa m a d a s r e c u r s o a s so b re d o s s u b v e c to re s d e ta m a ñ o A 2. L l c o s te d e c a d a re c o rrid o
un tie m p o lin eal p a ra c a lc u la r la s u m a d e la m a y o r se c u e n c ia q u e a tra v ie s a e l b o r­ e n e l c a s o 3 e s la m itad d e l c o s te o rig in a l, p e r o p u e s to q u e h a y d o s lla m a d a s re c u r­
d e, > d e sp u é s h a c e d o s lla m a d a s re c u rsiv a s . L a s lla m a d a s re c u rsiv a s c a lc u la n una siv a s. e l c o s te c o m b in a d o d e las d o s lla m a d a s re c u rs iv a s e s ta m b ié n X . C a d a u n a
su m a q u e a tra v ie s a e l b o rd e c e n tra l, d e s p u é s h a c e n m á s lla m a d a s re c u rsiv a s y a s í d e e sa s d o s in s ta n c ia s re c u rs iv a s h a c e n a su v e z d o s lla m a d a s re c u rsiv a s , g e n e ra n ­
su c e siv a m e n te . E l tra b a jo to ta l in v e rtid o p o r e l a lg o r itm o e s e n to n c e s p ro p o rc io n a l d o p o r ta n to c u a tr o s u b p ro b lc m a s q u e so n u n a c u a rta p a rle d e l p ro b le m a o rig in al.
al c o s te d e las b ú sq u e d a s re a liz a d a s p o r to d a s la s lla m a d a s re c u rsiv a s. L u eg o e l to ta l d e lo s c o s te s p a ra el c a s o 3 e s ta m b ié n X .
L a l-ig u ra 7 .1 9 ilu stra g rá fic a m e n te c ó m o tra b a ja e l a lg o ritm o p a ra A' = 8 e l e ­ E v e n tu a lm e n te . lle g a re m o s a l c a s o b a se . C a d a u n o d e e llo s tie n e ta m a ñ o I.
m e n to s. C a d a re c tá n g u lo re p re s e n ta u n a lla m a d a a m ax S u m R ec. y la lo n g itu d del p e ro te n e m o s V. P o r su p u e s to , n o hay c o s te s p a ra e l c a s o 3 e n e s te c a s o , p e r o c o n ­
re c tá n g u lo e s p ro p o rc io n a l a l ta m a ñ o d e l s u b v e c to r (y p o r ta n to al c o s te d e l re c o ­ sid e ra m o s q u e la c o m p ro b a c ió n q u e d e te rm in a si e l ú n ic o e le m e n to e s p o s itiv o o
rrid o d e l su b v e c to r) so b re e l q u e a c tú a la lla m a d a . L a lla m a d a in ic ia l se m u e stra n e g a tiv o tie n e un c o s te d e I u n id a d d e tie m p o . P o r ta n to , e l c o s te to ta l p o r n iv el de
e n la p rim e ra lín ea. O b s e rv e q u e el ta m a ñ o d e l s u b v e c to r e s X . lo c u a l re p re se n ta recu rsió n . m o stra d o e n la F ig u ra 7.1 9 . e s X . C a d a n iv el red u ce a la m itad e l tam añ o
É sta e s e x a c ta m e n te la e c u a c ió n q u e s e ilu stra e n la F ig u ra 7 .1 9 . lu e g o y a s a ­
b e m o s q u e la re s p u e sta h a d e se r N log N + N . E sto s e p u e d e ra tific a r fá c ilm e n te
e x a m in a n d o u n o s p o c o s v a lo re s: r< I ) = 1. 7 ( 2 ) = 4 . 7 4 4 ) = 1 2 . 7 4 8 ) = 3 2 y
7 4 1 6 ) = 8 0 . A c o n tin u a c ió n d e m o s tra m o s fo rm a lm e n te e s te re s u lta d o (T e o re ­
m a 7 .4) u sa n d o d o s m é to d o s d ife re n te s.

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

del p ro b le m a o rig in a l, lu e g o p o r e l p rin c ip io d e la s su c e siv a s d iv isio n e s p o r la m i­ 2 7 4 AÍ/2) = 47*i N / 4 ) + N .


ta d te n e m o s a p ro x im a d a m e n te lo g N n iv ele s. D e h e c h o , e l n ú m e ro d e n iv e le s es
I + Tlog N~I ( q u e v a le 4 c u a n d o N e s ig u al a 8 ). P o r ta n to , e l tie m p o to ta l d e e je ­ S u s titu y e n d o e s to e n la E c u a c ió n 7 .6 o b te n e m o s
c u c ió n q u e e s p e ra m o s e s (H .N lo g N ).
E ste a n á lisis d a u n a e x p lic a c ió n in tu itiv a d e p o r q u é e l tie m p o d e e je c u c ió n es T i N ) = 474A T4) + 2V . (7 .7 )
O iN log iV». P ero , e n g e n e ra l, e x p a n d ir u n a lg o ritm o re c u rsiv o p a ra e x a m in a r su
c o m p o rta m ie n to e s u n a m a la id e a , y a q u e v io la la te r c e ra re g la d e la re c u rsió n . A S i u sa m o s la E c u a c ió n 7 .6 p a r a N 4 y m u ltip lic a m o s p o r 4. o b te n e m o s
c o n tin u a c ió n p re s e n ta re m o s un tra ta m ie n to m a te m á tic o m á s siste m á tic o .
S e a T i N ) e l tie m p o q u e n o s lle v a 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 4 7 <N /4 ) = 8 T( N /S ) + N .
' su b s e c u e n c ia d e s u m a m á x im a p a ra u n v e c to r d e ta m a ñ o N. S i A’ = I. e l p ro g ra m a
ta rd a u n a c a n tid a d d e tie m p o c o n sta n te e n e je c u ta r la s lín e a s 13 a 14. la c u a l to m a ­ q u e p o d e m o s s u s titu ir e n e l la d o d e r e c h o d e la E c u a c ió n 7 .7 p a r a o b te n e r
re m o s c o m o u n a u n id a d d e tie m p o . L u e g o Ti I ) = I. E n c a s o c o n tra rio , e l p ro g ra ­
m a d e b e h a c e r d o s lla m a d a s re c u rsiv a s a d e m á s d e l tie m p o lin eal q u e ta r d a e n c a l­
T i N ) = 8 T (Ar 8 ) + 3/V.
c u la r la su m a m á x im a p a ra e l c a s o 3 . L a s o b r e c a rg a c o n s ta n te e s a b s o rb id a p o r el
té rm in o O i N ) . ¿ C u á n to ta rd an la s lla m a d a s re c u rs iv a s ? P u e sto q u e resu elv e n
C o n tin u a n d o d e e s ta fo r m a , o b te n e m o s
p ro b le m a s d e ta m a ñ o N 2. te n e m o s q u e c a d a u n a d e e lla s ta rd a T i N 2 ) u n id a d e s
d e tie m p o : p o r lo q u e e l tra b a jo re c u rsiv o to ta l e s 2 T ( N 2 ). E s to g e n e ra la s e c u a ­
T i N ) = 2*74 Af/2*) + kN.
c io n e s

T i I > = 1. F in a lm e n te , to m a n d o k = log A1 (lo c u a l tie n e se n tid o , p u e s to q u e 2* = A).


T i N ) = 2 T i N ‘2 ) + O i N ) . o b 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 * ).
■>

L a d e m o s tra c ió n d e la fó rm u la re q u ie re c ie r ta fa m ilia rid a d c o n las s u m a s g e o ­


4 c o n tin u a c ió n , su m a m o s to d o s lo s la d o s iz q u ie r d o s d e la s E tu a t io n e s 7.S m é tric a s. pen> n o e s n e c e sa rio e n te n d e r la d e m o s tra c ió n p a ra titili/a r la fó rm u la
y l o ig u a la m o s a la s u m a d e lin io s lo s la d o s d e re c h o s . O b s e r v e q u e e l t e r ­
m in o T (V 2 , , V' 2) a p a r e c e e n a m b o s la d o s y p o r ta n to se c a n c ela . D e h e ­
ch o . p r á c tic a m e n te n u lo s lo s té r m in o s a p a r e c e n e n a m b o s la d o s s p u e d e n
ca n c e la rse . E s to r e c ib e e l n o m b re d e s u m a te le sc ó p ic a . C u a n d o se h a s u ­ I t i ¡o tu ciém d e la e c u a c ió n T i Y ) = A T i N H) + < H \ l ). d o n d e A 2 I y Te
m a d o v s im p lific a d o to d o , e l re s u lta d o f i n a l es B > \ .e s

( (XN k,tmA) si A > B*


n , \ r) 71 n T i N ) - < 0 < Y * lo g Y ) si A - B * .
.v - — + [(X N k) s i A < Bk

¡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 ).

H R x,) = A T i H xl ' ) + (# * > " fin a lm e n te , s i A < o . e n to n c e s lo s té r m in o s d e la se r ie g e o m é tric a so n


m a s a r e s q u e I y p o d e m o s c a b a la r la sum a u s a n d o u n a fó r m u la está n d a r,
Si d iv id im o s e n a m b o s la d o s p o r A S*, o b te n e m o s la n u e v a e c u a c ió n b á sic a o b te n ie n d o a s i
1\ M •
T ( R VI) u n " ') (it_ | w n
A XI A " 1
T i N ) = A %' ~ A L — = oI a^ Í^ ] | = (X iB ^ )Si) = ( X N 1)
ir
e s ta c< tu ició n p a r a can — - I
/l

T i R x1) / ( / ? ''- '> lo c u a l d e m u e s tr a e l te r c e r c a s o d e l T e o re m a 7.5.


A st A" 1

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 ?

L a d iv is a e s p a ñ o la tie n e m o n e d a s d e I. 5 . 10 y 25 p e s e ta s (ig n o re m o s las m o ­


de donde
n e d a s d e 5 0 p e se ta s, p o r s e r p o c o fre c u e n te s). P o d e m o s ju n ta r 6 3 p e s e ta s u s a n d o
/f*V d o s m o n e d a s d e 25 p e se ta s, u n a m o n e d a d e 10 p e s e ta s y tre s d e I p e se ta , lo q u e
T(N) = TUf") = A Kll * L 0 t— j. (7 .1 0 )
h ac e un to tal d e 6 m o n e d a s . C a m b ia r m o n e d a s e n e s ta d iv is a e s s e n c illo : u sam o s
re p e tid a m e n te la m o n e d a c o n m a y o r v a lo r q u e te n g a m o s d is p o n ib le . Se p u e d e d e ­
Si A > R i . e n to n c e s la s u m a e \ u n a s e r ie g e o m é tric a c o n u n r a d io m e n o r m o stra r q u e p ara la d iv is a e s p a ñ o la , e s to s ie m p re m in im i/a e l n ú m e ro to tal d e m o ­
q u e I. P u e sto q u e la s u m a d e la c o rr e sp o n d ie n te s e r ie in fin ita c o n v e r g e a n e d a s u sa d a s. É ste e s u n e je m p lo d e lo s lla m a d o s a lg o ritm o s d e v o ra d o re s. e n los
u n a co n sta n te , e s ta s u m a fin ita e s tá ta m b ié n a c o la d a p o r d ic h a c o n sta n te , c u a le s s e lo m a u n a d e c is ió n e n c a d a fa s e q u e p a re c e s e r la ap ro p ia d a , sin te n e r e n
c o n l o q u e o b te n e m o s la E c u a c ió n 7 .1 1. c u e n ta fu tu ra s c o n se c u e n c ia s. E sta e s tra te g ia d e « c o g e to d o lo q u e p u e d a s ah o ra»
e s la fu e n te d e l n o m b re d e e s ta c la s e d e a lg o ritm o s. R e su lta a g ra d a b le q u e un
Ti N ) = OiAsl) = (XN 17.11) p ro b le m a s e p u e d a re s o lv e r u sa n d o u n a lg o ritm o d e v o ra d o r. y a q u e e n to n c e s el
a lg o ritm o se s u e le a c e rc a r b a sta n te a n u e s tra in tu ic ió n y a d e m á s e l c ó d ig o p ro d u ­ 1 / / D e v u e lv e e l nunimo número d e m onedas p a r a d e v o l v e r un c a m b i o
c id o re s u lta c o m p re n sib le . D e sa fo rtu n a d a m e n te lo s a lg o ritm o s d e c o ra d o re s no 2 / / E s ur. a l g o r i t m o r e c u r s i v o s i m p l e muy i n e f i c i e n t e
3
sie m p re fu n c io n a n c o rre c ta m e n te . S i la d iv is a e sp a ñ o la c o n tu v ie ra u n a m o n e d a de
4 public static i n t d e v o iv e rC am b io ( i n t ¡ ¡ monedas, i n t cambio,
2 1 p e se ta s, e n to n c e s e l a lg o r itm o d e c o ra d o r s e g u iría d a n d o u n a so lu c ió n d e seis 5 in t m onedasD istintas)
m o n e d a s , c u a n d o la s o lu c ió n ó p tim a u sa tre s (d e 2 1 p ese ta s). 6 (
1.a p re g u n ta se c o n v ie rte e n to n c e s e n c ó m o re s o lv e r e l p ro b le m a p a ra un c o n ­ 7 int minMonedas = cambio;
8
ju n to d e m o n e d a s a rb itra rio . S u p o n g a m o s q u e sie m p re e x is te u n a m o n e d a d e I
9 // B ú s q u e d a d e u n a m o n e d a q u e r e ú n a e l c a r b i o exacto
u n id a d , c o n lo q u e n o s a s e g u ra m o s d e q u e e l p ro b le m a tie n e s ie m p re so lu c ió n .
10 fo r( int i = 0 ; i < m onedasD istintas; )
U n a e s tra te g ia s im p le p a ra re u n ir K u n id a d e s c o n s is te e n u s a r la re c u rsió n c o m o 11 i £ ( m o n e d a s [ i ] == c a m b i o >
sigue: 12 return 1 :
13
1. S i c o n u n a s o la m o n e d a y a p o d e m o s d e v o lv e r e l c a m b io so lic ita d o , ésta 14 / / No h a y n i n g u n a : s e r e s u e l v e r e c u r s i v a r r e n t e
( I ) e s la c a n tid a d m ín im a d e m o n e d as. 15 for( int i ■ l; j <■ c a m b i o / 2 ; ) • • )
16 {
2. E n c a s o c o n tra rio , p a ra c a d a p o s ib le v a lo r / p o d e m o s c a lc u la r d e fo rm a in ­
17 in t m onedasActuales =
d e p e n d ie n te e l n ú m e ro m ín im o d e m o n e d a s q u e se n e c e sita n p a ra re u n ir i
18 d ev o lv e rC am b io ( monedas, j , m o r.e d as D istin ta s) *
y K - i u n id a d e s , y e le g im o s el i q u e m in im ic e la s u m a d e a m b o s. 19 d e v o l v e r C a m b i o t m o n e d a s , c a m b i o - j, m o n e d a s D i s t i r . t a s
20 i f ( m o n e d a s A c t u a l e s < minMonedas )
C o m o e je m p lo , u n a v e / in tro d u c id a la m o n e d a d e 21 u n id a d e s , v e a m o s c ó m o 21 minMonedas = m o n e d a s A c t u a l e s ;
p o d e m o s d e v o lv e r 6 3 u n id a d e s d e c a m b io . C la ra m e n te , u n a m o n e d a n o e s su fi­ 22
c ie n te. P o d e m o s c a lc u la r in d e p e n d ie n te m e n te e l n ú m e r o d e m o n e d a s re q u e rid o 23
p a ra d e v o lv e r I u n id a d y 6 2 u n id a d e s d e c a m b io (q u e s o n I y 4 re sp e ctiv a m e n te ). 24 r e t u r n minMonedas:
25 )
E sto s re s u lta d o s se o b tie n e n recu rsiv a m e n te . p o r lo q u e p o d e m o s a su m irlo s c o m o
ó p tim o s (la s 6 2 u n id a d e s s e re ú n e n c o n d o s m o n e d a s d e 21 u n id a d e s y do*, d e 10 Figura 7.21 M é to d o recu rsiv o in e fic ie n te p a r a resolver e l p ro b le m a d e l c a m b o .
u n id a d e s ). O b te n e m o s a s í u n a so lu c ió n c o n c in c o m o n e d a s . S i d iv id im o s e l p ro ­
b le m a e n 2 y 61 u n id a d e s , la s so lu c io n e s re c u rs iv a s so n re s p e c tiv a m e n te 2 y 4.
d a n d o u n to tal d e se is m o n ed as. C o n tin u a m o s p ro b a n d o u*das la s p o s ib ilid a d e s, a l­ re d u n d a n te . C o m o c o n se c u e n c ia , e l a lg o ritm o n o te rm in a rá e n u n a c a n tid a d ra z o ­
g u n a s d e las c u a le s s e m u e s tra n e n la F ig u ra 7 .2 0 E v e n tu a lm e n te , lle g a m o s a la n a b le d e tie m p o p a ra e l c a s o d e las 6 3 u n id ad es.
U n a lg o r itm o a lte rn a tiv o c o n siste e n re d u c ir re c u rs iv a m e n te e l ta m a ñ o d e l p ro ­
d iv isió n e n 21 y 4 2 u n id a d e s , q u e s e p u e d e n o b te n e r u s a n d o re s p e c tiv a m e n te I y 2
b le m a e s p e c ific a n d o u n a p rim e ra m o n e d a . P o r e je m p lo , p a ra 6 3 u n id a d e s , p o ­
m o n ed as, lo q u e h a c e u n to ta l d e tres.
L a ú ltim a d iv is ió n p ro b a ría c o n 31 y 3 2 u n id a d e s . P o d e m o s re u n ir 31 u n id ad es d e m o s d a r c a m b io d e c a d a u n a d e las fo rm a s sig u ie n te s , q u e se m u e s tra n e n la
F ig u ra 7.22:
c o n d o s m o n e d a s y 32 c o n tres, lo q u e h a c e u n to ta l d e c in c o m o n ed a s. E n c o n s e ­
c u e n c ia . e l m ín im o s ig u e s ie n d o tre s m o n e d as. • U n a m o n e d a d e I u n id a d m á s e l n ú m e ro d e m o n e d a s n e c e s a rio s p a ra c a m ­
D e n u e v o , c a d a u n o d e lo s s u b p ro b le m a s se e s tá re s o lv ie n d o re c u rsiv a m e n te . b iar 6 2 u n id a d e s , c a lc u la d o «le fo rm a re cu rsiv a
lo c u a l g e n e ra d e fo rm a n a tu ra l e l a lg o r itm o d e la F ig u ra 7 .2 1 . S i e je c u ta m o s el • U n a m o n e d a d e 5 u n id a d e s m á s e l n ú m e ro d e m o n e d a s n e c e s a rio s p a ra c a m ­
a lg o ritm o p a ra c a m b ia r c a n tid a d e s p e q u e ñ a s , fu n c io n a p e rfe c ta m e n te , p e ro al b iar 5 8 u n id a d e s , c a lc u la d o d e F irm a recu rsiv a.
ig u al q u e o c u rría e n e l c á lc u lo d e lo s n ú m e ro s d e F ib o n a c c i hay d e m a s ia d o tra b a jo • U n a m o n e d a d e 10 u n id a d e s m á s e l n ú m e ro d e m o n e d a s n e c e sa rio s para
c a m b ia r 5 3 u n id a d e s , c a lc u la d o d e fo rm a re c u rsiv a .
• L’n a m o n e d a d e 21 u n id a d e s m á s e l núm er«i «lo m o n e d a s n e c e sa rio s para
c a m b ia r 4 2 u n id a d e s , c a lc u la d o «le fo rm a re c u rsiv a .
' © ; 2 1 ©
• U n a m o n e d a d e 2 5 u n id a d e s m á s e l n ú m e ro d e m o n e d a s n e c e sa rio s para
c a m b ia r 38 u n id a d e s , c a lc u la d o d e fo rm a re c u rsiv a .
62 © © © © ! 42 © ©
________________ I__________________________________ E n lu g a r do g e n e ra r 62 p ro b le m a s re c u rsiv a m e n te . c o m o se h iz o e n la F ig u ­
ra 7 .2 0 . a h o ra so la m e n te re a liz a m o s c in c o lla m a d a s re c u rsiv a s , u n a p o r c a d a tip o
d is tin to «le m o n e d a . A p e s a r «le e llo , u n a im p le m e n ta c ió n re c u rsiv a in g e n u a s e g u i­
2 © © ¡ 3 I © @
ría sien«l«i in e fic ie n te p«»rque re p e tiría c á lc u lo s . P«»r e je m p lo , e n e l p rim e r c a s o te ­
n e m o s q u e res«»lver e l p ro b le m a «le d e v o lv e r 6 2 u n id a d e s «le c a m b io . E n e s te su b -
6 1 © © ® © | 3 2 © ® © p ro b lc m a , u n a d e las lla m a d a s re c u rs iv a s q u e s e h a c e n e lig e u n a m o n e d a «le 10
u n id a d e s y re s u e lv e re c u rs iv a m e n te e l p ro b le m a p a ra 52 u n id a d e s . P«*r «itro lado,
Figura 7.20 Algunos lie los subproblem as resueftos recursivam ente en la Figura 7 21 e n e l te r c e r c a s o te n e n u is q u e re s o lv e r e l p ro b le m a d e d e v o lv e r 5 3 u n id ad es. U na
© + ©©© © 1
2
//
//
A lgoritm o de program ación dinám ica p ara e l problema de l a devolución
d e l c a m b i o . C o n o r e s u l t a d o , e l v e c t o r r n o n e d a s U s a d a s s e r e l l e n a cor .

© + ©©® ©
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>.

1. El e rro r m ás c o m ú n c u a n d o s e u s a la re c u rsió n e s o lv id a r e l c a s o b ase. T ic 'T a c M a in .ja v a S im p le in te rfa z g rá fic a d e u s u a rio p a ra e l p ro g ra m a


2. A se g ú re se d e q u e c a d a lla m a d a re c u rsiv a h ac e p ro g re s o s h a c ia u n c a s o b a ­ »le las tre s e n raya.
se. p u es e n c a s o c o n tra rio , la re c u rsió n n o te rm in a ra .
3. S e d e b e e v ita r la su p e rp o sic ió n d e lla m a d a s re c u rs iv a s , p u e s tie n d e a g e ­
n erar a lg o ritm o s e x p o n e n c ia le s.
Ejercicios
4 U sa r la re c u rsió n e n lu g a r d e u n s im p le b u c le e s u n m al e s tilo d e p ro g ra ­
m ació n .
Cuestiones breves
5. L o s a lg o ritm o s re c u rs iv o s >e a n a liz a n u s a n d o fó r m u la s re c u rsiv a s . N o s u ­ 7 .1 . ¿ C u á le s so n las c u a tr o re g la s fu n d a m e n ta le s d e la re c u rsió n ?
p o n g a a le g re m e n te q u e u n a lla m a d a re c u rs iv a re q u ie re u n tie m p o lin eal 7 .2 . M o d ifiq u e e l p ro g ra m a d e la F ig u ra 7.1 d e fo rm a q u e si n e s n e g a tiv o , se
b. V io la r l»»s d e re c h o s d e p ro p ie d a d { c o p y r i gh t ) e s ta m b ié n u n e m tr . R S A e s ­ d e v u e lv a c e ro . H a g a e l m e n o r n ú m e ro d e c a m b io s
tá p a te n ta d o , a u n q u e se p e rm ite n a lg u n t* u s o s lib re s. C o n su lte la b ib lio ­ 7 .3 . A c o n tin u a c ió n a p a re c e n c u a tr o a lte rn a tiv a s p a ra la lín e a 10 d e la ru tin a
g ra fía p a ra u n a m a y o r in fo rm a c ió n a l re sp ec to . p o te n c ia D ig a p o r q u é c a d a u n a d e e lla s e s e rró n e a .
l o n g tm p - p o t e n c i a (x * x , n / 2 . pl ; <•> m edí A . H) = m e d í A , B 2) s i A e s im p a r y B e s par.
l o n g tmp = p o t e n c i a ( p o t e n c i a (x, 2 , p>. n / 2 . p) ; d) m e d í A . B ) = m e d i í A + B ) 2 . (A - B ) 2) si A y B so n im p ares.
l o n g tm p - p o t e n c i a « p o t e n c i a <x. n / 2 . p i . 2 . p) ;
lo n g tmp = p o t e n c i a ( x . n / 2 . p) * p o t e n c i a ( x , n / 2 . p )% p; 7 .1 6 . R e su e lv a la sig u ie n te e c u a c ió n , s u p o n ie n d o q u e .4 ^ I , B > I y / ’ ^ 0.
T i V ) - A T í N B ) + D< V < lo g , \V )
7 .4 . M u estre c ó m o se procesan la s llam a d a s recu rsiv as e n e l c á lc u lo d e 2f,‘m o d 37.
7 .1 7 . F.l a lg o ritm o d e S tra sse n p a ra m u ltip lic a r m a tric e s lle v a a c a b o la m u ltip li­
7 .5 . C a lc u le m ed { 19 9 5 . 14 9 2 ).
c a c ió n d e d o s m a tric e s A' * V a tra v é s d e s ie te lla m a d a s re c u rsiv a s que
7 .6 . R o b e rto e lig e /> y t/ ig u a le s a 3 7 y 4 1 . re s p e c tiv a m e n te . lX -term in e v alo res
c a lc u la n e l p ro d u c to d e d o s m a tric e s A’ 2 * N 2. El c o s te a d ic io n a l e s c u a ­
a c e p ta b le s p a ra lo s p a rá m e tro s re s ta n te s d e l a lg o ritm o R S A .
d rá tic o . ¿ C u á l e s e l tie m p o d e e je c u c ió n d e l a lg o ritm o d e S tra sse n ?
7 .7 . M u e stre q u e e l a lg o r itm o d e c o ra d o r p a ra la d e v o lu c ió n d e l c a m b io fa lla ría
si las m o n e d a s d e 5 p e se ta s n o fo rm a ra n p a rte d e la d iv is a e sp a ñ o la .
Problemas prácticos
Problemas teóricos 7 .1 8 . El m é to d o i m p r i m e E n t e r o d e la F ig u ra 7 .4 tra ta d e fo rm a in c o rre c ta el
7.X. D e m u e stre p o r in d u c c ió n la fó rm u la sig u ie n te p a ra F\<: caso e n el q u e V = i n r e g e r . M I N . V A L U E . E x p liq u e p o r q u é y p ro p o rc io n e
u n a so lu c ió n .
7 .1 9 . E sc rib a u n m é to d o re c u rsiv o q u e d e v u e lv a e l n ú m e ro d e u n o s e n la re p re ­
Fn = — se n ta c ió n b in a ria d e .V. U se e l h e c h o d e q u e e s ig u a l a l n ú m e ro d e u n o s en
\/5
( ^ ) ' l
la re p re se n ta c ió n b in a ria d e V 2. m á s 1 si V e s im par.
7 .2 9 . Im p le m e n te d e fo rm a re c u rs iv a la b ú s q u e d a b in a ria c o n u n a c o m p a ra c ió n
7 .9 . D e m u e s tre las s ig u ie n te s id e n tid a d e s re la tiv a s a lo s n ú m e ro s d e F ib o n a e c i:
p o r nivel.
(1) F i + F 2 + ... + F N = F s + 2 - 1 7 .2 1 . El a lg o ritm o d e o b te n c ió n d e la su b se c u e n c ia d e su m a m á x im a d e la Figura
b) F \ + F , + ... + F 2 N - i = F ¡ s 7. IX n o d e v u e lv e la su b secu en cia e n c u estió n , ni n in g ú n o tro v alo r a p a rtir
Fn + F 2 + ... + ^ v = f 2 v + , del c u a l p o d am o s o b te n e rla fá cilm en te. M o d ifíq u e lo d e fo rm a q u e d e v u e lv a
p) - 1
e n un ú n ic o o b je to e l v a lo r d e la su b se c u e n c ia m á x im a y lo s ín d ic e s d e la
d) N~ / .V t I ~ (-i> v + ¿:i
su b secu en cia (de fo rm a sim ila r a c o m o se h iz o e n e l e g i r M o v i m i e n t o ) .
e)
F \P 2 + F ?F \ + ... + fr2 x - í F ; s = F l \ D e sp u é s h a g a q u e la ru tin a g u ía d e te rm in e lo s a trib u to s e s tá tic o s , ig u al q u e
/> F tF 2 + F 2F %+ ... + F 2JSF 2 \ ~ 1 = F ZN e n la S e c c ió n 5.3.
V) F\ + • i = F 2N í 1 7 .2 2 . P ro p o rc io n e u n a lg o r itm o p a ra e l p ro b le m a d e l c a m b io q u e c a lc u le e l n ú ­
m e ro d e fo r m a s d is tin ta s d e d e v o lv e r K u n id a d e s d e c a m b io .
D e m u e s tre q u e si 4 = Bí m o d N ). e n to n c e s
7 .2 3 . E l p ro b le m a d e l su b e o n jim io s u m a e s e l sig u ie n te : d u d o u n c o n ju n to d e V
cum ple:
e n te ro s. A t . A 2 A %y un e n te r o K . d e te r m in a r si h a y u n s u b c o n ju n to de
al A + C s B + C (m o d A ) e n te ro s q u e su m e n e x a c ta m e n te K . P ro p o rc io n e u n a lg o r itm o O l N K ) p ara
h) A l) = RDím od N ) re s o lv e r el p ro b lem a.
A y = B* d n o d A ) 7 .2 4 . P ro p o rc io n e un a lg o ritm o D ( 2 S ) p a ra e l p ro b le m a d e l su b c o n ju n to su m a
c)
d e s c rito e n e l E je rc ic io 7.2 3 . P ista : u s e re c u rsió n .
7 .1 1 . D e m u e stre q u e si A ^ B. e n to n c e s A m o d B < A 2 . ( Pista', c o n s id e re p o r 7 .2 5 . E sc rib a se n d a s ru tin a s c o n las sig u ie n te s d e c la ra c io n e s:
se p a ra d o lo s c a s o s H í .4 /2 > B > A 2 .) ¿ C ó m o n o s a y u d a e s to a d e m o s tra r
q u e e l tie m p o d e e je c u c ió n d e m c d e s lo g a rítm ic o ? p u b l i c v o i d p e r m u t a c i ó n { S t r i n g s t r );

7 .1 2 . D e m u e s tre p o r in d u c c ió n la fó rm u la q u e d e fin e e l númerc» d e lla m a d a s del pr i v a c e v o i d p e r m u t a c i ó n { c h a r | 1 s t r , i n t i n f , i n t s u p ) ;

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 :

n) R e c u rsió n . Figuro 7.28 C u a d ricu la d e l Ejercicio 7 33


b) P ro g ra m a c ió n d in á m ic a .

7.3(1. Im p le m e n te e l s iste m a d e c rip to g ra fía R S A u s a n d o u n a c la s e d e lib re ría


B iq D e c im a l.
Bibliografía
7 JI. M e jo re la im p le m e n ta c ió n d e las tr e s e n ra y a h a c ie n d o las ru tin a s d e s o ­
p o rte m á s e fic ie n te s y la in te rfa z g rá fic a d e u s u a rio m á s e la b o ra d a q u e la
q u e s e p ro p o rc io n a e n In te rn e t. U n a g ra n p a rte d e e s te c a p ítu lo e s tá b a s a d a e n |4 |. E n 111 se p u e d e e n c o n tr a r una
d e s c rip c ió n del a lg o ritm o U S A ju n to c o n u n a p ru e b a d e c o rre c c ió n , y a d e m á s un
7 .3 2 . S e a A u n a s e c u e n c ia d e A' n ú m e ro s d is tin to s o rd e n a d o s A , . A 2 Av
c o n A | = 0 . S e a B u n a se c u e n c ia d e A't.V 1 ) 2 n ú m e ro s, d e fin id o s p o r c a p ítu lo d e d ic a d o a la p ro g ra m a c ió n d in á m ic a . El a lg o r itm o K S A e s ta p a te n ta d o ,
= A, Aj ( í < j ) . S e a /> la se c u e n c ia re s u lta n te d e la o rd e n a c ió n d e B y su u s o c o m e rc ia l req u ie re e l p a g o d e u n a lic e n c ia : p e ro e x is te u n a im p le m e n ta ­
T a n to B c o m o I ) p u e d e n c o n te n e r e le m e n to s re p e tid o s. P o r eje m p lo , c ió n lla m a d a P G P (p r e t ty g o o d p r i v a c y ) q u e e s tá d is p o n ib le y c u y o u so n o c o m e r­
p o d ría m o s te n e r A = 0 . I. 5 . 8 . y e n to n c e s l ) = \ , 3 . 4 . 5 . 7 . 8. H a g a lo s i­ cial e s tá p e rm itid o sin n ec e sid a d d e p a g o . E n | 3 | se p u e d e n e n c o n tr a r m á s d e ta lle s
g u ien te: so b re e l p a rtic u la r. L o s e je m p lo s d e e la b o ra c ió n d e lo s d ib u jo s s e h a n a d a p ta d o
d e |2 J .
a) E sc rib a u n p ro g ra m a q u e c o n s tru y a /> a p a rtir d e A . E sta p arte e s fácil. *
1. T . H G o rm e n . C . E. L e ise rso n . y R . L. R iv e st. In ir o d u c tio n t o A lg o ritlm is.
b) E sc rib a u n p ro g ra m a q u e c o n s tru y a u n a s e c u e n c ia A c o rre sp o n d ie n te
T h e M IT P re s s. C a m b rid g e . M ass. (1 9 9 0 ).
a I). O b s e rv e q u e A n o e s ú n ic a. U s e u n a lg o r itm o d e v u e lta atrá s.
2. R . S e d g e w ic k . A lg o r ith m s in C + + . A d d iso n -W e sle y . R cad in g . M ass.
7 .3 3 . C o n s id e re u n a c u a d ríc u la A' * X e n la q u e a lg u n a s c a s illa s e s tá n o c u p a d a s
(1 9 9 2 ).
p o r c írc u lo s n e g ro s . D o s c a s illa s o c u p a d a s p e rte n e c e n a l m ism o g ru p o si
c o m p a rte n u n la d o c o m ú n . E n la F ig u ra 7 .2 8 . h a y un g r u p o d e c u a tr o c a s i­ 3. W . S ta llin g s , P ro te c t Y o itr P rivacy'. A C unde f o r P C I ’ U s e r t. P ren licc-
lla s o c u p a d a s , tr e s g ru p o s d e d o s c a s illa s o c u p a d a s y d o s c a silla s in d iv i­ H a ll. E n g le w o o d C liffs . N J 1 1995).
d u a le s o c u p a d a s. S u p o n g a m o s q u e la c u a d ríc u la s e re p re s e n ta m e d ia n te un
4. M . A. W e iss, E ffie ie n t C P r o g r a m m in g : A P ra c tic a ! A p p ro a c h . P ren tice-
v e c to r b id im e n s io n a l. E sc rib a un p ro g ra m a q u e:
H a ll. E n g le w o o d C liffs . N J (1 9 9 5 ).
a) C a lc u le e l ta m a ñ o del g r u p o a l q u e p e rte n e c e u n a c a s illa o c u p a d a .
b) C a lc u le e l n ú m e ro d e g ru p o s d istin to s.
c) L iste to d o s lo s g ru p o s.

7 .3 4 . E sc rib a u n p ro g ra m a q u e e x p a n d a la s d ire c tiv a s » i n c l u d e d e los fic h e ro s


fu e n te e s c rito s e n C o C + + . P a ra e llo re e m p la c e lín e a s d e la fo rm a

• 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.

8.1 ¿Por q u é es importante la ord en ació n?

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

p ro m e d io . El re s u lta d o ta m b ié n p u e d e s e r u tiliz a d o p a ra p ro p o rc io n a r u n a c o ta in ­ d e in c re m e n to s. C u a lq u ie r s e c u e n c ia d e in c re m e n to s e s v á lid a , c o n tal d e que se


ferio r m u y fu e rte d e l c o s te d e to d o a lg o ritm o d e o rd e n a c ió n q u e s ó lo in te rc a m b ie h i = l . p e ro a lg u n a s e le c c io n e s s o n m e jo re s q u e o tra s . D e s p u é s d e u n a fa s e u tili­
e le m e n to s a d v a c c n te s. E s to se e x p re s a e n e l T e o re m a 8.2. z a n d o u n c ie r to in c re m e n to h t . te n d re m o s q u e n | í | $ a [i + h t \ p a ra to d o i p a ra el
q u e d ic h a c o m p a ra c ió n te n g a se n tid o . E s to e s. to d o s lo s e le m e n to s s e p a ra d o s p o r
u n a d ista n c ia lit e s tá n o rd e n a d o s . S e d ic e e n to n c e s q u e e l s e c t o r e s tá h ¡-o rd e n a d o . • S h e lls o rt. u tiliz a n d o la secuencia sugerida por Connet.
• Uparan a un v e c t o r de elanw ntoo Comparable.
P o r e je m p lo , la f i g u r a 8 .3 m u e s tra u n v e c to r d e s p u é s d e la a p lic a c ió n ríe v arias
fa s e s d e l a lg o ritm o S h e lls o n . D e sp u é s d e u n a 5 o rd e n a c ió n , s e g a r a n ti/a q u e los
public static void sh e lln o rtl Comparable [ } a 1
e le m e n to s a d is ta n c ia 5 e s tá n c o rre c ta m e n te o rd e n a d o s . E n la fig u ra, lo s d is tin to s
e le m e n to s a d is ta n c ia 3 e s tá n so m b re a d o s d e ig u a l fo rm a C o m o p u e d e v e rs e , lo ­ for< i n t i n t e r v a l o = a . l e n g t h / 2 ; i n t e r v a l o > 0;
d o s e s tá n o rd e n a d o s e n tr e sí. IX* ig u al fo rm a , d e s p u é s d e la 3 -o rd e n a c ió n , se g a ­ intervalo s intervalo 2 ? 1 : (in tl ( intervalo
ra n tiz a q u e lo s e le m e n to s a d is ta n c ia 3 e s tá n c o rre c ta m e n te o rd e n a d o s e n tre s í £or( i n t i = i n te r v a l o : i < a .l e n g t h ; i** i

U n a p ro p ie d a d im p o rta n te d e S h e llso rt (q u e a firm a re m o s sin d e m o s tra c ió n ) e s que


C om para ble temp - a [ i ];
un v e c to r /^ - o r d e n a d o s ig u e e stá n d o lo d e s p u é s d e u n a /r4 , -o rd e n a c ió n . S i n o fu e ­
ra a sí. e l a lg o ritm o s e ria d e p o c a u tilid a d >a q u e e l tra b a jo re a liz a d o p o r las p rim e ­
ras ta s e s se ría d e s h e c h o p o r la s sig u ien tes. 4 forf ; i > = i n t e r v a l o Uh
En general, u n a /r4-ord en ació n leq u iere q u e p a ra c ad a p o sic ió n / e n /i4. /i4 . , ....... 5 t e r r p . m eno r Que ( a | j - intervalo ) I
j intervalo
V - I. se c o lo q u e e l e le m e n to e n e l s itio a d e c u a d o d e e n tr e la s i. i - li¡. i 2 /i* y
a l j 1 ■ a i j - intervalo );
a s í s u c e s iv a m e n te . A u n q u e e llo n o a fe c ta a la im p le m e n ta c ió n . u n e x a m e n c u id a ­
al ^ 1 = * ;
d o s o m u e s tra q u e e l e fe c to d e u n a h k -o rd e n a c ió n e s re a liz a r u n a o rd e n a c ió n p o r
in s e rc ió n e n lit su b v e c to re s in d e p e n d ie n te s (m o stra d o s c o n d ife re n te s so m b re a d o s 20 )
e n la F ig u ra 8 .3 ). P o r c o n sig u ie n te , n o d e b e ría so rp re n d e r q u e e n la F ig u ra 8 4 . la s
Figuro 8 4 im p lem enfoción d e Shedsort Q ue d ivid e por 2 2 e n vez d e por 2
lín e a s d e la ó a la 19 re p re se n te n u n a o r d e iu n to n ¡ n n in s e r c ió n / H>r i n l t n u l o s . E n
u n a o rd e n a c ió n p o r in s e rc ió n p o r in te rv a lo s, d e s p u é s d e e je c u ta r e l b u c le . K*s e le ­
m e n to s d e l v e c to r s e p a ra d o s p o r u n a d is ta n c ia d e i n t e r v a l o e s tá n o rd en arlo s.
P o r e je m p lo , c u a n d o e l i n t e r v a l o e s I. e l b u c le e s id é n tic o , in s tru c c ió n a in s­
8.4.1 Rendimiento de Shellsort
tru c c ió n . a la o rd e n a c ió n p o r in se rc ió n . E n c o n s e c u e n c ia . S h e lls o n ta m b ié n se c o ­
n o c e c o m o o rd e n a c ió n ¡*or d is m in u c ió n d e in te rv a lo s
E s fá c il m o s tra r v a rio s h e c h o s. P riin c io . c u a n d o i n t e r v a l o e s I. se g a ra n tiz a E l tie m p o d e e je c u c ió n d e S h e lls o rt d e p e n d e e n g r a n m e d id a d e la se c u e n c ia «le
q u e e l b u c le m á s in te rn o o rd e n a e l v e c to r a . S i i n t e r v a l o n u n c a se h ic ie ra I. in c re m e n to s e le g id a . L a s c o rre s p o n d ie n te s d e m o s tra c io n e s d e lo s re s u lta d o s p re c i­
te n d ría m o s a lg ú n v e c to r d e e n tra d a q u e n o p o d ría se r o rd e n a d o c o rre c ta m e n te . Poi sos e n c a d a c a s o p u e d e n re s u lta r b a sta n te c o m p lic a d a s . E l a n á lis is e n e l c a s o m e ­
ta n to . S h e llso rt o rd e n a h a s ta q u e i n t e r v a l o lle g a a v a le r I. v tr a s e llo p o d e m o s d io d e S h e lls o rt e s u n p ro b le m a a b ie r to d e s d e h a c e m u c h o tie m p o , e x c e p to p ara
p a ra i. L u ú n ic a c u e s tió n p e n d ie n te e s c ó m o e le g i r la s e c u e n c ia d e in c re m e n to s. la s se c u e n c ia s d e in c re m e n to s triv iales
S h e ll s u g irió e m p e z a r c o n i n t e r v a l o ig u a l a Y 2 . e ir d iv id ié n d o lo p o r la
m ita d h a s ta lle g a r a I. m o m e n to e n e l q u e e l a lg o r itm o te rm in a U tiliz a n d o e sto s
in c re m e n to * . S h e lls o rt re p re s e n ta u n a m e jo ra s u s ta n c ia l c o n re s p e c to a la o rd e n a ­ Shellsort
c ió n p o r in s e rc ió n , a p e sa r d e te n e r tre s b u c le s f o r a n id a d o s e n v e z d e d o s. lo q u e O rd e n a c ió n
N p o r inserción S e c u e n c ia Sólo m terv ato s D ividiendo
h a h itu a ln ie n te s e r ía in e fic ie n te . A lte ra n d o la s e c u e n c ia d e in c re m e n to s, u n o p u e d e
d e Shell im p ares p o r 2.2
s e g u ir m e jo ra n d o e l re n d im ie n to d e l a lg o ritm o . E n la f i g u r a 8 .5 s e m u e s tra una
ta b la d e re n d im ie n to s d e S h e lls o rt c o n tre s e le c c io n e s d ife re n te s d e se c u e n c ia s d e 1 000 122 11 11 9
in c rem en to s.
2000 483 26 21 23

4000 1. 936 61 59 54

O riginal 81 94 11 96 12 35 17 95 28 58 41 75 15 7950 153 141 114


8000
----------------- —
Despubs o o a 5 c * d e n ¡ x c o 35 17 II 41 75 fS 96 58 81 94 95 16000 32 560 358 322 269

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

5 íparar. izq e l í n d i c e mas a l a i z q u i e r d a d e l a u b v e c t o r .


6 9param d e r e l í n d i c e rras a l a d e r e c h a d e l s u b v e c t o r .
El p ro c e s o c o n tin ú a c o m p a ra n d o lo s e le m e n to s 26 y 27:
7
8 i v a t e s t a t i c v o i d m e r g e S o r t ( C o m p a r a b l e ( ) a,

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 .

A u n q u e la c o rre c c ió n d e l a lg o ritm o se e s ta b le c e fá c ilm e n te , n o e s tá c la r o p o r


q u é e s m á s rá p id o q u e m e rg e so rt. Ig u al q u e m e rg e s o rt. re s u e lv e d e m a n e ra re c u r­
siv a d o s s u b p ro b le m a s y re q u ie re un c i e n o tra b a jo a d ic io n a l (e n e l p a s o d e p a rti­
c ió n ). A d e m á s, a l c o n tra rio d e m e rg e so rt. n o se g a ra n tiz a q u e e l ta m a ñ o d e los
s u b p ro b le m a s s e a e l m ism o . E sto n o e s b u e n o p a ra e l re n d im ie n to . Q u ic k s o rt es
m á s rá p id o q u e m e rg e so rt p o rq u e e l p a s o d e p a rtic ió n p u e d e h a c e rs e s ig n ific a tiv a ­
j Seleccionar el pi\o(c m e n te m á s d e p risa q u e e l p a s o d e m e z c la . E n c o n c re to , p u e d e im p le m e n ta rse sin
u tiliz a r u n v e c to r a u x ilia r, y e l c ó d ig o e s m u y c o m p a c to y e fic ie n te . E s to c o m p e n ­
sa la n o g e n e ra c ió n s is te m á tic a d e s u b p ro b le m a s d e l m is m o ta m a ñ o .

8.6.2 Análisis d e quicksort

lu í d e sc rip c ió n d e l a lg o ritm o d e ja v a ria s c u e s tio n e s sin c o n te s ta r. ¿ C ó m o e le g im o s


e l p iv o te ? ¿ C ó m o re a liz a m o s la p a rtic ió n ? ¿ Q u é h a c e m o s si e n c o n tra m o s u n e le ­
Hacer la punición
m e n to ig u a l a l p iv o te ? T o d a s e s ta s c u e s tio n e s p u e d e n a fe c ta r e n g ra n m e d id a al
tie m p o d e e je c u c ió n d e l a lg o ritm o . R e a liz a re m o s u n a n á lisis q u e n o s a y u d e a d e c i­
d ir c ó m o d e b e ría m o s im p le m e n ta r los p a so s n o e s p e c ific a d o s d e q u ick so rt.

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 a E c u a c ió n 8 .4 a firm a q u e m ira m o s c a d a uní* d e lo s c o s te s d e las p o sib le s lla m a ­


712) = 711) + 2
d a s y d e s p u é s h a c e m o s la m e d ia . C o m o te n e m o s d o s lla m a d a s re c u rsiv a s , m á s un
C u a n d o su m a m o s p o r c o lu m n a s to d o s lo s té rm in o s d e la E c u a c ió n 8 .2 . p o d em o s tie m p o lin eal p a ra h a c e r la p a rtic ió n , o b te n e m o s
c a n c e la r té rm in o s d e u n o y o tro la d o , o b te n ie n d o
/71<» + 711)+ 712) + •• + l\N - l)\
TXN) = 2 1 --------------------------- ----------------------------- | + N . <8.5)
TXN) = 710 + 2 + 3 + — + /V = N(N + I)/2 = Ol.V2). (8.3)

E ste a n á lisis c o rro b o ra la in tu ic ió n d e q u e u n a d iv isió n d e sig u a l n o e s b u e n a. P ara re s o lv e r la E c u a c ió n 8 .5 . e m p e z a m o s p o r m u ltip lic a r a m b o s la d o s p o r N .


G a sta m o s N u n id a d e s d e tie m p o p a ra h a c e r la p a rtic ió n y d e s p u é s te n e m o s q u e h a ­ o b te n ie n d o
c e r u n a lla m a d a re c u rsiv a p a ra N - I , E n to n c e s g a sta m o s N - I u n id a d e s p ara
h a c e r la p a rtic ió n d e e s te su b c o n ju n to . só lo p a ra h a c e r u n a lla m a d a re c u rsiv a c o n N T \N ) = 2 (7 (0 » + 711) + 712) + - + 71/V - I » + ;V \ (8.6)
V - 2 e le m e n to s . E n e s a lla m a d a g a sta m o s N - 2 u n id a d e s p a ra re a liz a r la p a rti­
c ió n . y a s í su c e siv a m e n te . E l tie m p o to ta l p a ra re a liz a r to d a s la s p a rtic io n e s a tra ­ A h o ra e s c rib im o s la E c u a c ió n 8 .6 p a ra e l c a s o N - I . c o n la id e a d e re s ta rla d e la
v é s d e las lla m a d a s re c u rs iv a s c o in c id e e x a c ta m e n te c o n e l o b te n id o e n la E c u a ­ a n te rio r y a s í s im p lific a r e n g ra n m e d id a la e c u a c ió n T e n e m o s en to n c e s
c ió n 8.3. E s to n o s d ic e q u e c u a n d o im p le m e n te m o s la s e le c c ió n d e l p iv o te y el
p a s o d e p a rtic ió n , n o d e b e m o s h a c e r n a d a q u e h a g a p ro b a b le la o b te n c ió n d e sub- iN - I ) 7 ( . V - I ) = 2 (7 (0 ) + 7 (1 ) + 7 (2 ) + — + 71/V - 2 )) + 0V - I ) 2. (8 .7 )
c o n ju n to s d e ta m a ñ o d e sig u a l
y si re s ta m o s la E c u a c ió n 8 .7 d e la E c u a c ió n 8.6. o b te n e m o s

Caso m edio N I X N ) - (/V - I)7 N - I) = 2 7 N - I ) + 2V - I.

L o s d o s p rim e ro s a n á lisis n o s d ic e n q u e e l m e jo r y e l p e o r c a s o so n e n o rm e m e n te S i re o rg a n iz a m o s lo s té rm in o s y e lim in a m o s e l - I d e la d e re c h a (n o sig n ific a ti­


d ife re n te s . N a tu ra lm e n te , q u e re m o s s a b e r q u é o c u rre e n e l c a s o m e d io . P o d ría m o s vo ). o b te n e m o s
e s p e ra r q u e y a q u e c a d a su b p ro b le m u e s e n p ro m e d io la m ita d q u e e l o rig in a l, la
c o ta p a ra e l c a s o m e d io s e a ü ( N \ o i i N ) . E s a e x p e c ta tiv a , a u n q u e c o rre c ta p a ra la N7N) - XN + I»70V - I) + 2N. 18 . 8 )
A h o ra te n e m o s u n a fó rm u la p a ra 7'</V) e n té rm in o s d e / (V Ii. D e n u e v o , la id e a g e n e ra d a s n o llev en a tie m p o s d e e je c u c ió n m alo s. L a s e n tra d a s d e g e n e ra d a s in ­
es d e sp le g a r, p e r o la E c u a c ió n 8 .8 n o e s ta e n la to r m a a d e c u a d a p ara h a c e rlo . Si c lu y e n . e n tr e o tro s , e l c a s o e n e l q u e lo s d a to s y a e s té n o rd e n a d o s , y a q u é l e n el
d iv id im o s la E c u a c ió n 8 .8 p o r A(A' ♦ I ). o b te n e m o s q u e to d o s lo s e le m e n to s sean ig u ales. C o m o v e re m o s m á s a d e la n te , e n o c a sio n e s
so n lo s c a s o s a p a re n te m e n te m á s se n c illo s lo s q u e c o m p lic a n el alg o ritm o .
7(A') /(V ~ I) 2
N + I N N + I'
Una forma incorrecta
A h o ra p o d e m o s d e sp le g a r:
L a e le c c ió n m á s p o p u la r c u a n d o n o se c u e n ta c o n la in fo rm a c ió n q u e lo d esa c o n s-
T( A ) T I N - V) 2 je a . e s to m a r sin m á s e l p rim e r e le m e n to (e s d e c ir, e l e le m e n to e n la p o sic ió n i n i )
A' + | \ ' \ + | c o m o p iv o te . E s to e s a c e p ta b le si la e n tra d a e s a le a to ria , p e ro si la e n tra d a v a está
o rd e n a d a o e s tá e n o rd e n in v e rs o , e n to n c e s e s te p iv o te p ro p o rc io n a u n a d iv isió n
ft V - I ) _ 7(Ar - 2 ) A 2 p o b re , p u e s s e rá un e le m e n to e x tre m o . E s m á s . e s te m al c o m p o rta m ie n to s e re p e ti­
A ~ N I :V rá rc c u rsiv a m e n te . C o m o v im o s a n te rio rm e n te e n e s te c a p ítu lo , in v e rtiría m o s un
tie m p o c u a d rá tic o e n ¡n o h a c e r n ad a! (el v e c to r y a v e n ía o rd e n a d o ). E sto , h u elg a
d e c irlo , e s b a sta n te e m b a ra z o so . Fin c o n s e c u e n c ia , n u n c a u s e sin m á s e l p rim er
7(A - 2) 7(V ~ 3)
e le m e n to c o m o p iv o te .
,V — I Ar - 2 ,V - I

Una elección segura


7 (2 ) _ 7 (1 ) 2
3 ~~ 2 3 U n a e le c c ió n p e rfe c ta m e n te ra z o n a b le e s e le g ir c o m o p iv o te e l e le m e n to c e n tra l,
e s d e c ir, e l e le m e n to e n la p o s ic ió n I i n i + f i n ) 1 2 d e l v e c to r. C u a n d o la e n tra d a
S i s u m a m o s to d a s las e c u a c io n e s d e la E c u a c ió n 8 .9 . o b te n e m o s y a e s tá o rd e n a d a , e s to n o s d a e l p iv o te p e rfe c to , e n c a d a lla m a d a re c u rsiv a . Por
su p u e s to , p o d ría m o s c o n s tru ir u n v e c to r d e e n tra d a q u e fo rz a ría u n c o m p o rta m ie n ­
7(Ar) 7(1» /I I 1 I \ to c u a d rá tic o b a jo e s ta e s tra te g ia ( v é a se e l E je rc ic io 8 .8 ). p e ro las p o sib ilid a d e s de
= + 2 ( - + - + -••+ — + | q u e s e e je c u te a le a to ria m e n te un c a s o q u e req u ie ra in c lu s o e l d o b le d e l c a s o m e d io
A' + I 2 \ 3 4 A* A' + I I
s o n a stro n ó m ic a m e n te p eq u eñ as.

, 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 ~\

Figura 8.14 Algoritm o d e partición: i se p ara e n el elem ento m ayor q u e e l prvote 9.


Figura 8.9 Algoritm o d e partición: e l p ivo te, 6. se c o lo c a a l final
j se p a ra e n e l elem ento m enor. 3

8 | 1 | 4 | 9 | 0 | 3 5 | 2 | 7

Figura 8.10 Algoritm o d e partición i se p a ra e n e l elem ento m ayor q u e e l pivote. 8;


Figura 8.15 Algoritm o d e porticlón in tercam b io d e l prvote y e l elem en to en la po-
j se p a ra e n e l elem ento m enor qu e e l prvote. 2.
xir.ión i
8.6.5 Elem entos iguales al pivote 4 | 9 | 6 | 3 | 5 | 2
| e | , 7 0 !

l n d e ta lle im p o rta n te q u e d e b e m o s c o n s id e ra r e s c ó m o tra ta r los e le m e n to s q u e Figura 8.16 V e cto r original


so n ig u a le s q u e e l p iv o te. l-a> p re g u n ta s q u e d e b e m o s h a c e m o s s o n si i d e b e ría
p a ra r a l e n c o n tr a r u n e le m e n to ig u a l a l p is ó te , y si j d e b e ría p a ra r a l v e r un e le ­
0 I 1 I 4 | 9 5 | 2 | 7 8
m e n to ig u al q u e e l p iv o te , i v j d e b e ría n h a c e r lo m ism o ; d e o tra fo rm a, e l p a so 3
d e p a rtic ió n s e ría d e s ig u a l e n a m b o s lad o s. P o r e je m p lo , si i p a ra ra y j n o . linios
Figura 8.17 R esultado d e orden ar tres elem entos (e l prim ero, e l cen tral y e l últim o)
los e le m e n to s ig u a le s al p iv o te te rm in a ría n e n la p a rte d e la d e re c h a .
C o n sid e re m o s e l c a s o e n e l q u e to d o s lo s e le m e n to s d e l v e c to r so n id én tico s.
Si p a ra n ta n to i c o m o j . h a b rá m u c h o s in te rc a m b io s d e e le m e n to s id é n tic o s. A u n ­
q u e e s to p a re z c a in ú til, e l e le c to p o s itiv o q u e se c o n s ig u e e s q u e i y j se cru z a n
1 I 4 L _» I 3 I
e n la m ita d d e l v e c to r, p o r lo q u e . c u a n d o e l p iv o te e s re c o liv a d o . la p a rtic ió n c re a Figura 8 18 Resultado d e l intercam b io del p ivo te c o n e l penúltim o elem ento.
d o s su b c o n ju n to s casi ig u ales, En c o n s e c u e n c ia , se p u e d e a p lic a r e l a n á lisis d e l c a ­
so m e jo r, y e l tie m p o d e e je c u c ió n se ría O iN lo g N).
S i n o p a ra n ni i ni j . e n to n c e s i te rm in a e n la ú ltim a p o s ic ió n (su p o n ie n d o , 1. N o d e b e ría m o 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 e n la ú ltim a p o s i­
p o r su p u e s to , q u e c o n tro la m o s q u e n o se s a lg a d e lo s lím ite s ) y n o s e re a liz a n in ­ c ió n . E n vez. d e e s o . d e b e ría m o s in te rc a m b ia rlo c o n e l q u e o c u p a la p e n ú l­
g ú n in te rc a m b io . E sto p a re c e b u e n o , d a d a la s im e tría , h a s ta q u e n o s d a m o s c u e n ta tim a p o sic ió n . E s to se ilu stra e n la F ig u ra 8 .1 8 .
d e q u e e l p iv o te s e m a n te n d ría e n la ú ltim a p o sic ió n p u e s é s ta e s la c e ld a a p u n ta d a 2. i p u e d e e m p e z a r e n i n i ♦ l y j e n f i n - 2.
p o r i . A sí >e o b te n d ría n d o s c o n ju n to s c o m p le ta m e n te d is p a re s , y e l tie m p o d e 3. P o d e m o s e s ta r se g u ro s d e q u e c u a n d o i b u s c a u n e le m e n to m a y o r p arará,
e je c u c ió n se ría e l d e l c a s o p e o r. ( H N ~ ) . E l e fe c to e s e l m ism o q u e e l d e u tiliz a r e l p o rq u e , e n e l p e o r c a s o , e n c o n tra rá e l p iv o te (p a ra n d o a l d a rs e la ig u a l­
p rim e r e le m e n to d e l v e c to r c u a n d o é s te e s tá o rd e n a d o . T a rd a m o s un tie m p o c u a ­ dad».
d rá tic o e n n o h a c e r n ad a. 4. P o d e m o s e s ta r s e g u ro s d e q u e c u a n d o j b u s c a u n e le m e n to m e n o r p a ra rá ,
P o d e m o s c o n c lu ir q u e e s m e jo r h a c e r in te rc a m b io s in n e c e s a rio s y c re a r s u b ­ p o rq u e , e n e l p e o r c a s o , e n c o n tra rá e l p rim e r e le m e n to (p a ra n d o a l d a rse
c o n ju n to s ig u ales, q u e a rrie s g a rs e a c re a r c o n ju n to s d e sig u a le s. P o r ta n to , h arem o s ig u ald ad ).
q u e i y j p aren c u a n d o e n c u e n tre u n e le m e n to ig u a l q u e e l p iv o te . É sta re s u lta se r
T tx la s e s ta s o p tim iz a c io n e s s e in c o rp o ra rá n e n n u e s tro c ó d ig o fin a l del a lg o ritm o
la ú n ic a d e las c u a tro p o sib ilid a d e s q u e no c o n d u c e a u n tie m p o c u a d rá tic o p ara
e n Jav a.
e s te tip o d e en trad a.
A p rim e ra v ista, p a re c e q u e p re o c u p a rse p o r u n v e c to r c o n lo d o s lo s e le m e n to s
ig u a le s e s ab su rd o . D e s p u é s d e to d o , ¿ p a ra q u é q u e rr ía a lg u ie n o rd e n a r 5 .0 0 0 e le ­
8.6.7 Vectores pequeños
m e n to s id é n tic o s ? S in e m b a rg o , re c u e rd e q u e q u ic k s o rt e s re c u rs iv o . S u p o n g a q u e
h a y KM).(KK) e le m e n to s , d e lo s c u a le s 5 .0 0 0 so n ig u ale s. E n a lg ú n m o m e n to q u ic k ­
N u e s tra ú ltim a o p tim iz a c ió n tie n e q u e v e r c o n lo s v e c to re s p e q u e ñ o s . ¿ M e re c e la
so rt p o d ría h a c e r u n a lla m a d a re c u rs iv a c o n s ó lo lo s 5 .0 0 0 e le m e n to s id é n tic o s . V
p e n a u tiliz a r u n a ru tin a ta n p o te n te c o m o q u ic k s o rt c u a n d o s ó lo h a y q u e o rd e n a r
e n ta le s o c a s io n e s e s im p o rta n te a s e g u ra r q u e lo s 5 .0 0 0 e le m e n to s se o rd e n a n e fi­
d ie z e le m e n to s ? P o r su p u e s to , la re s p u e s ta e s no. U n a ru tin a sim p le , c o m o la o r d e ­
c ie n te m e n te .
n a c ió n p o r in s e rc ió n , s e rá p ro b a b le m e n te m á s rá p id a s o b re v e c to re s p e q u e ñ o s. L a
n a tu ra le z a re c u rs iv a d e q u ic k s o rt n o s d ic e q u e ve g e n e ra rá n m u c h a s lla m a d a s con
su b c o n ju n to s p e q u e ñ o s . P o r ta n to , m e re c e la p e n a p re g u n ta r p o r e l ta m a ñ o d e l
8.6.6 Partición con la m ediana de tres v ecto r. S i e s m e n o r q u e u n c ie r to lím ite , a p lic a re m o s o rd e n a c ió n p o r in s e rc ió n ; e n
o tro c a s o , s e g u ire m o s h a c ie n d o q u ick so rt.
C u a n d o s e u tiliz a la p a rtic ió n c o n la m e d ia n a d e tre s, p in te m o s re a liz a r u n a o p ti­ S e h a c o m p ro b a d o q u e d ie z e le m e n to s e s u n b u e n lím ite , a u n q u e c u a lq u ie r v a ­
m iz a c ió n m uy sim p le q u e a h o rra a lg u n a s c o m p a ra c io n e s y s im p lific a n o ta b le ­ lo r e n tr e 5 y 2 0 p ro d u c e re s u lta d o s s im ila re s . E l lím ite ó p tim o d e p e n d e ría d e la
m en te e l c ó d ig o . E n la F ig u ra 8 .1 6 v o lv e m o s a m o s tra r n u e stro v e c to r o rig in a l. m á q u in a y d e l c ó d ig o m á q u in a q u e se g e n e re e n c a d a c a so . F.I u tiliz a r u n lím ite
L a p a rtic ió n c o n la m e d ia n a d e tre s re q u ie re q u e e n c o n tre m o s la m e d ia n a del n o s e v ita c a s o s d e g e n e ra d o s . P o r e je m p lo , n o tie n e s e n tid o b u s c a r la m e d ia n a de
p rim e r e le m e n to , e l c e n tra l y e l ú ltim o . 1.a fo rm a m á s fác il d e h a c e rlo c o n s is te e n tre s e le m e n to s c u a n d o n o h a y ni siq u ie ra tre s e le m e n to s .
o rd e n a rlo s sobre las p o s ic io n e s q u e o c u p a n e n e l v e c to r. E l re s u lta d o se m u e stra E n e l p a sa d o se p e n s ó q u e a ú n p o d ía se r m e jo r d e ja r e l v e c to r a lg o d e s o rd e n a ­
e n la F ig u ra 8 .1 7 . O b s e rv e e l s o m b re a d o re s u lta n te : e l e le m e n to q u e te rm in a e n la d o n o h a c ie n d o n a d a , d e m o m e n to , c u a n d o n o s e n c o n tra m o s su b v c c to re s p e q u e ­
p rim e ra p o sic ió n e s m e n o r (o ig u a l) q u e e l p iv o te , y e l e le m e n to e n la ú ltim a p o si­ ñ o s . V a q u e la o rd e n a c ió n p o r in s e rc ió n e s m u y e fic ie n te p a ra v e c to re s c a s i o rd e ­
c ió n es m a y o r (o ig u a l) q u e e l p iv o te . P a rtie n d o d e e s to s h e c h o s c o n c lu im o s lo s i­ n ad o s. p o d ría m o s m o s tra r m a te m á tic a m e n te q u e u n a e je c u c ió n fin al d e la
g u ien te. o rd e n a c ió n p o r in s e rc ió n p a ra lim p ia r e l v e c to r s e r ía m á s rá p id o q u e e je c u ta r to d a s
la s lla m a d a s a in s e rc ió n c o n v e c to re s p e q u e ñ o s . E l a h o rro c o rre s p o n d e ría a la so ­ 1 // A lgoritm o q u ic k s o rt que u t i l i z a p a r t i c i ó n con
b re c a rg a p ro d u c id a p o r la s lla m a d a s al m é to d o d e o rd e n a c ió n p o r in serció n 2 / / l a m e d i a n a d e t r e s , y un 1 i m i t e p a r a d e t e c t a r v e c t o r e s p e q u e ñ o s
H o y e n d ía . las lla m a d a s a m é to d o s n o so n ta n c o s to s a s c o m o a n te s . A d em á s,
un se g u n d o re c o rrid o d e l v e c to r p a ra re a liz a r la o rd e n a c ió n p o r in s e rc ió n a p o rta un p r i v a t e s t a t i c void
c ie r to c o ste . D e b id o a la té c n ic a d e g e s tió n d e m e m o ria d e n o m in a d a c a t h in g . e n q u i c k s o r t ( Comparable ( ] a, int ini, int fin >
lo s c o m p u ta d o re s a c tu a le s e s m e jo r h a c e r la o rd e n a c ió n p o r in s e rc ió n s o b re los
su b v e c to re s p e q u e ñ o s. E llo e s d e b id o a q u e lo s a c c e s o s a m e m o ria lo c a liz a d o s so n i t ( i n i ♦ LI MI TE > f i n 1
m á s rá p itlo s q u e lo s a c c e s o s n o lo c a liz a d o s: a sí. a c c e d e r a u n a m ism a p o s ic ió n de ordenacionP orInsercion( a, ini, fin );
m e m o ria d o s v e c e s casi s e g u id a s e n un re c o rrid o , e s m á s rá p id o q u e re a liz a r un else
a c c e s o e n c a d a u n o d e lo s d o s re c o rrid o s.
/ / o r d e n a r i n i , medio, f i n
i n t medio = t i n i * f i n ) / 2 ;
8.6.8 Rutina de quicksort en Ja v a if( a | medio ] .menorQuet a( ini ) ) )
intercam biarR eferencias! a, ini, m e d i o ) .-

L a im p le m e n ta c ió n c o n c re ta d e q u ic k s o rt se m u e s tra e n la F ig u ra 8 .1 9 . E l m é to d o i f ( a | f i n ] .menorQue! a | i n i J > )


intercam b iarR eferen cias ( a, i n i , fin );
q u i c k s o r t v is ib le , d e c la ra d o e n la s lín e a s d e la 4 6 a la 4 9 , e s sim p le m e n te un
if ( a ( fin J.menorQuet a( nodio I ) )
e n v o lto rio q u e lla m a a l m é to d o re c u rs iv o q u i c k s o r t . E n c o n s e c u e n c ia , s ó lo d is ­
intercam biarR eferencias ( a. medio, fin i;
c u tire m o s la im p le m e n ta c ió n d e l m é to d o re c u rsiv o q u i c k s o r t .
E n la lín e a 7 s e p re g u n ta si e l v e c to r a o r d e n a r e s p e q u e ñ o y se lla m a a la
// Colocar e l p iv o te en la p o sició n fin - 1
o rd e n a c ió n p o r in s e rc ió n (n o m o s tra d a ) c u a n d o e l ta m a ñ o d e l p ro b le m a e s tá intercam biarR eferencias ( a, medio, fin - 1 >;
p o r d e b a jo d e u n v a lo r c o n c re to , d a d o p o r la c o n s ta n te l i m i t e . E n o tr o c a s o , se Comparable p i v o te = a( fin - 1 J;
sig u e c o n e l p ro c e d im ie n to re c u rs iv o . L a s lín e a s d e la 12 a la 18 o r d e n a n e l p ri­
m e r e le m e n to , e l c e n tr a l y e l ú ltim o s o b r e su s p r o p ia s p o s ic io n e s . E l e le m e n to // Empezar l a p a r t i c i ó n
c e n tr a l s e u tiliz a c o m o p iv o te y e n la s lín e a s 21 y 2 2 s e in te r c a m b ia (u tiliz a n d o int i, j;
i n t e r c a m b i a r R e f e r e n c i a s , q u e n o se m u e s tra ) c o n e l e le m e n to e n la ú ltim a for( i = ini, j = fin - 1; ; )
p o sic ió n . P asa m o s e n to n c e s a re a liz a r la p a rtic ió n . .Se in ic ia liz a n lo s c o n ta d o r e s i
y j a u n a p o sic ió n a n te r io r a su v a lo r in icia l d e s e a d o , d a d o q u e lo s o p e ra d o re s p re ­ w hile( al *+i J.menorQue! pivote ) )
fijo s d e in c re m e n to y d e c rc m e n to lo s a ju s ta rá n in m e d ia ta m e n te e n la s lín e a s 2 8 y
3 0 a n te s d e r e a li/a r n in g ú n a c c e s o a l v ecto r. C u a n d o e l p rim e r b u c le w h i l e d e la w hile( pivote.m enorQ uet a( --j ] J )
lín e a 28 te rm in a , i e s ta rá a p u n ta n d o a u n e le m e n to q u e e s m a y o r, o p o sib le m e n te
ig u a l, q u e e l p iv o te . D e ig u a l fo rm a , c u a n d o e l s e g u n d o b u c le te rm in a , j a p u n ta rá if ( i < j )
intercam biarR eferencias ( a, i, j );
a u n e le m e n to m e n o r o ig u a l q u e e l p iv o te . S i i y j n o s e h a n c ru z a d o , e s to s e l e ­
else
m e n to s so n in te rc a m b ia d o s, tra s lo q u e se c o n tin ú a e l re c o rrid o . E n o tro c a so , se
break;
te rm in a e l re c o rrid o , c o lo c á n d o s e c o rre c ta m e n te e l p iv o te e n la lín e a 39. L a o r d e ­
I
n a c ió n te rm in a c o n las d o s lla m a d a s re c u rs iv a s e n la s lín e a s 41 y 4 2 .
L a s o p e ra c io n e s fu n d a m e n ta le s s e re a liz a n e n la s lín e a s 2 8 a 35. L o s re c o rri­
/ / Colocar e l pivote
d o s c o n s is te n e n u n a s e r ie d e o p e ra c io n e s sim p le s: in c re m e n to s, a c c e s o s a l v e cto r in tercam b iarR eferen cias ( a. i, fin - 1 );
y c o m p a ra c io n e s se n c illa s . E sto e x p lic a la ra p id e z d e q u ic k s o rt. P a ra a se g u ra r la
e fic ie n c ia d e lo s b u c le s m á s in te rn o s , q u e re m o s e s ta r s e g u ro s d e q u e e l in te rc a m ­ q u ick s o rt ( a. in i, i - 1 ); / / O rdenar elem entos pequeños
b io d e la lín e a 3 3 c o n s ta d e la s tre s a sig n a c io n e s e s p e r a d a s y n o in c u rre e n la s o ­ q u i c k s o r t ( a , i * 1, f i n ) ; / / O r d e n a r e l e m e n t o s g r a n d e s
b re c a rg a d e u n a lla m a d a a un m é to d o . U n b u e n c o m p ila d o r q u e o p tim ic e e l c ó d i­
g o g e n e ra d o h a ría e s to a u to m á tic a m e n te , y a q u e to d o s lo s m é to d o s e n e l p a q u e te
O r d e n a c i ó n e s tá n d e c la ra d o s c o m o f i n a l , l o q u e p e rm ite la o p tim iz a c ió n e n lí­
n ea. S in e m b a rg o , p in in a s e r n e c e s a r io in tro d u c ir m a n u a lm e n te e l c ó d ig o , si el public s ta tic void q u ick so rt! Comparable | 1 a >
c o m p ila d o r n o e s c a p a z d e re a liz a r d ic h a o p tim iz a c ió n . 47 {
A u n q u e e l c ó d ig o a h o ra p a re c e s e n c illo , e s im p o rta n te n o o lv id a r q u e e llo se 48 quicksort! a, 0, a.len g th - 1 1 ;
d e b e a l a n á lisis re a liz a d o u n te s d e la im p le m e n ta c ió n . T o d av ía hay a lg u n a s tra m ­ 49 )
p a s e s c o n d id a s ( v é a s e e l E je rc ic io 8 . 12 ). Q u ic k so rt e s u n e je m p lo c lá s ic o d e la u ti­
Fi g u r a 8 . 1 9 Q uicksort c o n p artició n c o n lo m e d ia n a d e tres y un límite p a ra d e te c ­
liz a c ió n d e u n a n á lisis p re v io p a ra g u ia r la im p le m e n ta c ió n d e l p ro g ra m a . ta r vecto res o e a u e n o s
c ió n O e s m u c h o m a y o r q u e la c o n s ta n te d e l a lg o r itm o o rd in a rio q u e u tiliz a la
8.7 Selecció n rápida
p a r tic ió n c o n la m e d ia n a d e tres.

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.

Errores com unes Problemas teóricos


8 .4 . C u a n d o u x lo s lo s e le m e n to s s o n ig u ales, ¿ c u á l e s e l tie m p o d e e je c u c ió n de
1. L o s a lg o ritm o s d e o rd e n a c ió n im p lc m c n ta d o s e n e s te c a p ítu lo tra b a ja n a los s ig u ie n te s m é to d o s?
p a rtir d e la c o m p o n e n te 0 d e l v e c to r, y n o d e la I .
a) O rd e n a c ió n p o r in se rc ió n .
2. U tiliz a r una s e c u e n c ia d e in c re m e n to s in a d e c u a d a e s u n e rr o r c o m ú n al
b) S h ellso rt.
u s a r S h e llso rt. A se g ú re se d e q u e la s e c u e n c ia a c a b a e n 1. y e v ite s e c u e n ­
c) M erg eso rt.
cias d e las q u e s e s a b e q u e p ro d u c e n m a lo s re su lta d o s.
./) Q u ick so rt.
3. Q u ick so rt tiene m u ltitu d d e tram p as. L o s e rro res m á s c o m u n e s tienen q u e ver
c o n e n tra d a s o rd en ad as, ele m e n to s d u p lic a d o s y p articio n es degeneradas. 8 .5 . C u a n d o la e n tra d a e s tá y a o rd e n a d a , ¿ c u á l e s e l tie m p o d e e je c u c ió n d e los
4. 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 a p ro p ia d o p a ra p e q u e ñ a s e n ­ sig u ie n te s m éto d o s?
tradas. P e ro ni* e s b u e n o c o n e n tra d a s g ran d es.
i/) O rd e n a c ió n p o r in se rc ió n .
b) S h e llso rt.
c) M erg eso rt.
En Internet di Q u ic k so rt

T o d o s lo s a lg o ritm o s d e o rd e n a c ió n , y una im p le m e n ta c ió n d e la s e le c c ió n rá p id a , 8 .6 . C u a n d o la e n tra d a e s tá o rig in a lm e n te o rd e n a d a , p e r o e n o rd e n in v e rso ,


s e e n c u e n tra n e n u n ú n ic o fic h e ro , c o m o p a rte d e l p a q u e te D a t . a S t r u c t . u r e s . tra ­ ¿ c u á l e s e l tie m p o d e e je c u c ió n d e lo s sig u ie n te s m é to d o s?
d u c id o c o m o E s t r u c t u r a s D a t o s .
a) O rd e n a c ió n p o r in se rc ió n .
D u p lic a te T e s t.ja v a C o n tie n e e l m é to d o d e la F ig u ra 8.1 c o n un p ro g ra m a b) S h e llso rt.
de p ru e b a , e n e l d ire c to rio C h ap te rO H c) M erg e so rt.
S o r t .j a v a T ra d u c id a p o r O r d e n a c i ó n . j a v a , e n e l d ire c to rio d) Q u ick so rt.
D a ta S tr u c tu r e s .
8 .7 . S u p o n g a q u e in te rc a m b ia m o s lo s e le m e n to s a ; ¡ | v a | i » k | . q u e o rig in a l­
T e s tS o r t.j a v a C la se e n e l d ir e c to r io C h a p t c r 0 8 q u e p ru e b a to d o s los
m e n te e sta b a n fu era d e sitio . D e m u e stre q u e c o n e llo a l m e n o s se e lim in a
m é to d o s d e o rd e n a c ió n .
u n a in v e rsió n , y c o m o m u c h o 2k I.
8 .8 . C o n s tru y a u n a e n tra d a q u e p ro v o q u e e l c a s o p e o r p a ra q u ic k s o rt e n lo s si­
g u ie n te s caso s:
Ejercicios
a) U tiliz a n d o e l e le m e n to c e n tra l c o m o p iv o te .
Cuestiones breves b) H a c ie n d o p a rtic ió n c o n la m e d ia d e tres.

8 .9 . D e m u e s tre q u e la s e le c c ió n r á p id a tie n e un re n d im ie n to lin e a l e n p r o ­


8.1. O rd e n e la s e c u e n c ia ( 8 . 1 .4 . 1 .5 . 9 . 2 . 6 . 5) u tiliz a n d o lo s sig u ie n te s m é to ­
m e d io . H á g a lo re s o lv ie n d o la E c u a c ió n 8 .5 . c o n la c o n s ta n te 2 s u s titu i­
d os:
da por I .
a) O rd e n a c ió n p o r in se rc ió n . 8.1(1. U tiliz a n d o la fó rm u la d e S tirlin g . V! ^ (,V .V » \ 2 n N . d e d u z c a una e s tim a ­
b) S h e llso rt, c o n lo s in c re m e n to s ( 1 . 3 . 5). c ió n p a ra lo g (A 1!).
8 .1 1 . D e m u e stre q u e c u a lq u ie r a lg o ritm o b a sa d o e n c o m p a ra c io n e s , u tiliz a d o
p a ra o rd e n a r c u a tr o e le m e n to s , n e c e sita 5 c o m p a ra c io n e s p a ra a lg u n a en -
Prácticas de program ación
irada. D e m u e stre d e s p u é s q u e e x is te u n a lg o ritm o c a p a / d e o rd e n a r s e ­ 8 .1 8 . C o m p a re e l re n d im ie n to 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 c re m e n ­
c u e n c ia s d e c u a tr o e le m e n to s c u a le s q u ie ra u tiliz a n d o a lo s u m o 5 c o m p a ra ­ to s . s ig u ie n d o e l sig u ie n te p ro c e d im ie n to : o b te n g a e x p e n m c n ta lm e n te el
c io n es. tie m p o m e d io p ara u n c ie r to ta m a ñ o d e e n tra d a N . g e n e ra n d o v a ria s s e ­
c u e n c ia s a le a to ria s d e .V e le m e n to s . U tilice la m is m a e n tra d a p a ra to d a s las

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:

for l i ■ in i * 1 . J * fin - 2 : ; ) a) 1.a s e c u e n c ia o rig in a l d e S h e ll (d iv id ir re p e tid a m e n te p o r 2).


( b) L a se c u e n c ia o rig in a l d e S h e ll, s u m a n d o I si e l re s u lta d o e s d is tin to de
w h il e t a l 1 1 .munorQuot p i v o t e ) > c e ro , p e ro par.
i-**: c) L a s e c u e n c ia d e G o n n e t m o s tra d a e n e l te x to , e n la q u e re p e tid a m e n te
w h ilo t pivo te.m en o rü u et a | j | ) > s e d iv id e p o r 2.2.
</) L os in c re m e n to s d e H ib b a rd : I . 3. 7 .......2* - I.
j— s
e) L o s in c re m e n to s d e K n u th : I. 4. 1 3 .... (3* - 1 ) 2 .
I
/) L os in c re m e n to s d e S e d g c w ic k : 1 . 5 . 19. 4 1 . 109. ...; c a d a té rm in o es
b ie n d e la fo rm a 9 4 a - 9 • 2* + I . o d e la fo rm a 4 a - 3 • 2* + I .
¿ E s e l re s u lta d o e q u iv a le n te a la ru tin a o rig in a l?
8.1.3. S i se tie n e in fo rm a c ió n e sp e c ífic a a d e c u a d a so b re lo s e le m e n to s a o rd e n a r, 8 .1 9 . Im p le m e n te lo s m é to d o s d e o rd e n a c ió n d e S h e lls o rt y q u ic k s o rt y c o m p a re
la o rd e n a c ió n p u e d e p a s a r a s e r lin e a l. D e m u e s tre q u e u n a c o le c c ió n d e \ s u s tie m p o s d e e je c u c ió n . U s e las im p lc m c n la c io n c s d e l te x to . E je c ú te lo s
e n te ro s s h o r t p u e d e s e r o rd e n a d a e n un tie m p o lin eal. P is ta : m a n te n g a un c o n lo s sig u ie n te s o b jeto s:
v e c to r in d e x a d o d e s d e 0 h a s ta 6 5 .5 3 5 .
<0 E n teros.
8 .1 4 . T e n e m o s un v e c to r q u e c o n tie n e N n ú m e ro s Q u e re m o s s a b e r si c o n tie n e
/>) N ú m e ro s rea le s d e tip o d o u b l e .
d o s n ú m e ro s c u y a s u m a sea ig u a l a u n n ú m e ro d a d o A'. P o r e je m p lo , si la
c) C a d e n a s d e c a ra c te re s.
e n tra d a e s ( 8 . 4 . I. 61 y A' e s 10. la re s p u e s ta e s s í (4 y 6». U n m ism o n ú m e ­
ro p u e d e se r u s a d o d o s v e c e s, lla g a lo sig u ien te: 8 . 2» . E sc rib a un m é to d o q u e e lim in e to d o s los e le m e n to s re p e tid o s d e un v ecto r
A d e V e le m e n to s . D e v u e lv a e l n ú m e ro d e e le m e n to s q u e p e rm a n e c e n e n
a) D e u n a lg o r itm o ( X N 2) p a ra re s o lv e r e l p ro b le m a. A . S u m é to d o d e b e e je c u ta rs e e n p ro m e d io e n tie m p o ( X N log.V ), (u tilic e
b) D e un a lg o ritm o O (V lo g .V ) p a ra re s o lv e r e l p ro b le m a. P ista : o rd e n e q u ic k s o rt c o m o p a s o d e p re p ro c e sa m ie n to ).
p rim e ro lo s e le m e n to s . D e sp u é s d e h a c e r e s to p u e d e re s o lv e r e l p ro ­ 8 .2 1 . E l E je rc ic io 8 .2 e s tu d ia la o rd e n a c ió n e sta b le . E sc rib a u n m é to d o g e n é ric o
b le m a e n tie m p o lin eal. q u e re a lic e u n q u ic k s o rt e sta b le . P a ra h a c e rlo , s e c re a u n v e c to r e n e l q u e
r) E scrib a u n p ro g r a m a e n J a v a p a ra c a d a u n a d e d ic h a s so lu c io n e s y c a d a e n tra d a c o n te n g a u n a re fe re n c ia a u n e le m e n to y su p o sic ió n inicial
c o m p a re sus tie m p o s d e e je c u c ió n . e n e l v ecto r. S e o rd e n a e s te v e c to r, si d o s e n tr a d a s tie n e n e le m e n to s d e d a ­
lo s id é n tic o s , se u tiliz a la p o sic ió n in ic ia l p a ta ro m p e r e l e m p a te . C u a n d o
8 .1 5 . R e p ita e l E je rc ic io 8 .1 4 p a ra c u a tr o n ú m e ro s. In ten te d is e ñ a r u n a lg o ritm o
e l v e c to r e s té o rd e n a d o se rc o rd e n a e l v e c to r o rig in al.
O i \ " log A ). P ista : c a lc u le tin las las p o sib le s su m a s d e d o s e le m e n to s , o r ­
8 .22 . E sc rib a una u tilid a d sim p le d e o rd e n a c ió n . O r d e n a r . El c o m a n d o O r d e n a r
d é n e la s y c o n tin ú e c o m o e n e l E je rc ic io 8 .1 4 .
to m a c o m o p a rá m e tro e l n o m b re d e u n fic h e ro , q u e c o n tie n e u n e le m e n to
8 .1 6 . R e p ita e l E je rc ic io X. 14 p a ra tre s n ú m e ro s. In te n te d is e ñ a r un a lg o ritm o
p o r lín ea. P o r d e fe c to , las lín e a s s e c o n s id e ra n c o m o c a d e n a s d e ca ra c te re s
( X N 2 ).
y se o rd e n a n m e d ia n te e l o rd e n le x ic o g rá fic o h a b itu a l (a u n q u e d is tin g u ie n ­
8 .1 7 . E l E je rc ic io 5 .2 5 p e d ía b u s c a r la ú n ic a s o lu c ió n e n te r a a la e c u a c ió n
d o e n tre m a y ú s c u la s y m in ú s c u la s ). A ñ a d a d o s o p c io n e s : la o p c ió n - c sig ­
A 5 4- tf 5 + C 5 + 7>s + E ' = 7 * q u e sa tisfa c e 0 < A $ B < C =? P ^ F ^ F ^ N.
n ific a q u e n o s e d is tin g a e n tr e m a y ú s c u la s y m in ú s c u la s , y la o p c ió n -n
d o n d e .V e s 75. U s e la s id e a s d e l E je rc ic io 8 .1 5 p a ra o b te n e r re la tiv a m e n te
sig n ific a q u e las lín e a s d e b e n s e r c o n s id e ra d a s c o m o en te ro s.
d e p risa u n a so lu c ió n , o rd e n a n d o to d o s lo s p o sib le s v a lo re s d e
S u p o n g a q u e tie n e A fic h e ro s o rd e n a d o s . C a d a lín e a c o n tie n e u n o b je ­
/V + B + ( ' y F - i l ) + F >. y v ie n d o d e s p u é s si a lg ú n n ú m e ro del
to L i n e a , d o n d e L i n e a e s u n in te rfa z q u e im p le m e n ta e l in te rfa z
p rim e r g ru p o a p a re c e ta m b ié n e n e l s e g u n d o g ru p o . E n té rm in o s d e N.
C o m p a r a b l e y e s p e c ific a u n m é to d o o b t e n e r ! . i n e a . q u e le e la lín e a
¿ c u á n to e s p a c io y tie m p o re q u ie re mi a lg o ritm o ?
d e n tro d e l o b je to .
a) E sc rib a u n m é to d o L e e r F i c h e r o q u e le a lo s e le m e n to s d e un so lo f i­ 4. C . A . R. H o a re . « Q u ic k so rt» . C o m p u te r J o u r n a l 5 (1 9 6 2 ). 10-15.
c h e ro y lo s in tro d u z c a e n u n a c o la c re a d a p o r e l m é to d o . Se d e v o lv e rá
5. I). E . K n u lh . T h e A r t o f C o m p u te r T r o g r a m n u n y V o lu n t e 3: S o r t i n a a n d
u n a re fe re n c ia a d ic h a c o la . O b s e rv e q u e lo s e le m e n to s e n la c o la e s ta ­
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 a s s. (1997).
rán o rd e n a d o s. L a d e c la ra c ió n es
6. R S e d g e w ic k . Q u ic k so rt, G a rla n d P u b lish in g . N ew Y o rk , N Y (1 9 7 8 ).
C ola le e r F ic h e r o f S t r in g nom breF ichero ) ; (O rig in a lly p re s e n te d a s th e a u th o r 's P h D th e s is . S ta n fo rd U n iv ersity .
1975.)
h) E sc rib a un m é to d o d e n o m in a d o m e z c l a r n o s q u e to m e d o s c o la s \
7. I). L. S h e ll. « A H ig h -S p c e d S o rtin g P ro c e d u re » . C o m m u n ic a tio n s o f th e
c re e u n a te rc e ra c o n e l re s u lta d o d e la m e z c la . D e b e d e v o lv e r u n a re ­
A C M 2 7 (1 9 5 9 ). 3 0 -3 2 .
fe re n c ia a la n u e v a c o la c re a d a , y h a b e r v a c ia d o las d o s c o la s o rig in a ­
les. L a d e c la ra c ió n es: 8. M . A . W e is s . « E m p írica! R esu lts o n th e R u n n in g T im e o l S h e llso rt» .
C o m p u te r J o u r n a l 3 4 (1 9 9 1 ). 8 8 -9 1 .
C ola m ezclarD os ( C ola e l , C o la c2 ) ;
9. M . A . W e is s . E f f u i e m C P ro g ra m m in g : A P ra c tic a I A p p r o a e h . P ren tice-
H a ll. E n g le w o o d C liffs. N J (1 9 9 5 ).
c) L l a lg o r itm o p a ra p ro d u c ir u n fic h e ro o rd e n a d o e s e l sig u ie n te .
D e c la re u n a c o la d e c o la s l o s E l e m e n t o s . L la m e a l e e r F i c h e r o
con c a d a u n o d e lo s A fic h e ro s e in s e rte lo s re s u lta d o s d e v u e lto s e n
l o s E l e m e n t o s . E lim in e d o s e le m e n to s d e l o s E l e m e n t o s . m é z c le ­
lo s. e in tro d u z c a e l re s u lta d o e n la c o la . A I v e c e s. L l re s u lta d o se rá
q u e l o s E l e m e n t o s c o n te n d rá u n a ú n ic a c o la o rd e n a d a q u e c o n te n d rá
lo d o s los e le m e n to s d e los fich ero s. E sc rib a e l c o rre sp o n d ien te m étodo,
./l E sc rib a u n p ro g ra m a c o m p le to q u e im p le m e n to la m e z c la d e A fic h e ­
ro s o rd e n a d o s.
e) M u e stre q u e d e c la ra r l o s E l e m e n t o s c o m o u n a p ila d e c o la s p u ed e
c o n d u c ir a u n m a l re n d im ie n to . P ista : c o n s id e re e l c a s o e n e l c u a l el
p rim e r fic h e ro tie n e N e le m e n to s y to d o s lo s d e m á s tie n e n un s o lo e l e ­
m en to .

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 |.

1. J. L. B e n tle y > M . D . M c E Iro y , « E n g in e e rín g a S o rt F u n c tio n » . S o ftw a re -


P r a d ic c a n d E x p e rie n c e 2 3 (1 9 9 3 ). 1 2 4 9 -1 2 6 5 .

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.

9.1 ¿Por q u é son necesarios los números


aleatorios?

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 (

, = A Y ,<m odA f). (9 .1 ) 18 if) valorlnicial < 0 )


19 v a l o r l n i c i a l • = M;
20
E s ta e c u a c ió n in d ic a q u e e l (/ + I )-é sim o n ú m e ro s e o b tie n e m u ltip lic a n d o e l i-é s i­ 21 estado = v a lo r l n i c i a l ;
m o n ú m e ro p o r u n a c ie r ta c o n sta n te A , p u ra c a lc u la r d e s p u é s e l re s to d e d iv id ir el 22 i f ) e s t a d o == 0 )
re s u lta d o p o r M . E n J a v a lo e sc rib iría m o s e n la fo rm a sig u ie n te : 23 e s t a d o = 1;
24 )

x f i + 1 | = A * x [ i ] %M; Figura 9.2 Constructores d e la clase Random.


1 prívate static f i n a l int A ■ 4 8 2 7 1 ;
e s u n a e le c c ió n u su al. P a ra e s te n ú m e ro . A = 4 8 .2 7 1 e s u n o d e lo s m u c h o s v alo res
2 prívate static final i n t M - 2147483647;
q u e p e rm ite n o b te n e r un g e n e ra d o r lin eal d e c o n g ru e n c ia s c o n p e rio d o c o m p le to . 3 prívate sta tic final I r . t Q = M / A:
S u u tili/u c ió n h a s id o a m p lia m e n te e s tu d ia d a , s ie n d o re c o m e n d a d a p o r lo s e x p e r­ 4 prívate s ta tic final I n t R > M % A;
to s e n e s te c a m p o , ( 'o r n o m o s tra re m o s m á s ta rd e e n e s te m ism o c a p ítu lo , ju g a r 5
c o n g e n e ra d o re s d e n ú m e ro s a le a to rio s s ig n ific a e n m u c h o s c a s o s ro m p e r la alca -
7 * Devuelve un e n t e r o pseudoaleatorio y c a n b i a «1
t o rí e d a d . p o r l o q u e c o n v ie n e e m p le a r la fó rm u la in d ic a d a , a m e n o s q u e te n g a m o s
8 * estad» interno.
g a ra n tiz a d o q u e e s p o s ib le o b ra r d e o tra fo rm a. 9 • • r e t u r n un e n te r o p s e u d o a le a to r lo .
E sta ru tin a p a re c e se n c illa d e im p le m e n la r. S i e s t a d o re p re se n ta e l ú ltim o v a ­ 10 *
lo r c a lc u la d o p o t la ru tin a B a n d o » e n to n c e s e l n u e v o v a lo r d e e s t a d o v ie n e d e fi­ 11 public int randoalntí >
n id o p o r
13 int •stadoTmp - A • I e s t a d o % Q ) - * * < e s ta d o / Q );
U if( © a t a d o T r r p >= 0 )
e s t a d o = ( A * e s t a d o > % M; / / Incorrecto 15 e sta d o - eatadoTmp;
16 else
17 estado = estadcTmp -
D e sa fo rttm a m c n lc . si e s te c á lc u lo s e re a liz a c o n e n te ro s 3 2 -b it. e s casi s e g u ro q u e
18
e l p ro d u c to p ro v o c a rá un e rr o r d e d e sb o rd a m ie n to . A u n q u e J a v a tie n e d e fin id o un 19 re tu rn estado;
tip o l o n q 6 4 -b it. e m p le a rlo e s c o m p u ta c io n u lm e n te c o s to s o . S i n o s re strin g im o s 20 )
al tip o i n t 3 2 -b it. p o d ría m o s a rg u m e n ta r q u e el d e sb o rd a m ie n to , u n a v ez a n u la d o
e l c o rre s p o n d ie n te e rro r, m a n tie n e la ¡ileato ried ad . S in e m b a rg o , e l d e s b o rd a m ie n ­ Figuro 9 3 G o nerodor d e núm eros aleatorios
to e s in a c e p ta b le , p u e s c o n é l p e rd e m o s la g a ra n tía d e l p e rio d o c o m p le to . A fo rtu ­
n a d a m e n te . p a ra e v ita r e l d e s b o rd a m ie n to s ó lo e s n e c e s a ria u n a p e q u e ñ a m ix tific a ­ d o n d e /{ e s e l n ú m e ro d e b its d e lo s e n te ro s d e la m á q u in a y ( e s im p a r E sta s
c ió n . E n c o n c re to , si Q y R so n e l c o c ie n te y e l re s to d e M 'A . p o d e m o s re s c rib ir la lib re ría s, a l ig u al q u e la ru tin a d e la F ig u ra 9 .3 . ta m b ié n d e v u e lv e n d ire c ta m e n te e l
E c u a c ió n 9 I e n la fo rm a n u e v o v a lo r c a lc u la d o e n e s t a d o , e n lu g a r d e (p o r e je m p lo ) u n v a lo r e n tre 0 y I.
D e sa fo rtu n a d a m e n te , e s to s g e n e ra d o re s s ie m p re p ro d u c e n v a lo re s d e X , q u e s e a l­
X,. , - A(X,<mod(7)l - R\.X, Qj + MiHA',) (9.2) te rn a n e n tre p a re s c im p a re s p ro p ie d a d in d e s e a b le e n u n g e n e ra d o r - . M á s e n
g e n e ra l, c a d a s u fijo d e k b its c ic la c o n u n p e rio d o d e 2 . e n e l m e jo r d e lo s c aso s.
c o n lo q u e s e v e rific a lo sig u ie n te t i r a s e e l E je rc ic io 9 .5 ): M u c h o s o tro s g e n e ra d o re s d e n ú m e ro s a le a to rio s tie n e n c ic lo s b a sta n te m e n o re s
q u e e l m o s tra d o a q u í. É sto s n o s o n a d e c u a d o s e n a p lic a c io n e s q u e re q u ie ra n s e ­
• E l p rim e r te rm in o s ie m p re p u e d e e v a lu a rs e sin d e sb o rd a m ie n to . c u e n c ia s la rg a s d e n ú m e ro s ale a to rio s. I-a lib re ría d e J a v a tie n e u n g e n e ra d o r de
• E l se g u n d o té rm in o p u e d e e v a lu a rs e sin d e sb o rd a m ie n to , s ie m p re q u e R < Q. e s te tip o : s in e m b a rg o , e m p le a u n g e n e ra d o r lin eal d e c o n g ru e n c ia s d e 4 8 b its , de-
• <>(Y,) se e v a lú a a 0 si e l re s u lta d o d e la d ife re n c ia e n tre lo s d o s p rim e ro s té r ­ v o lv ie n d o s ó lo lo s p rim e ro s 32 b its, e v ita n d o a s í e l p ro b le m a q u e re p re s e n ta la ct-
m in o s e s p o sitiv a : se e v a lú a a I si d ic h a d if e re n c ia e s n e g a tiv a . c lic id a d d e lo s b its d e m e n o r o rd e n . E n c o n c re to , las c o n s ta n te s q u e u tiliz a son
A = 2 5 .2 1 4 .9 0 3 .9 1 7 . tf = 4 8 y C * I 3 ‘ .
P ara los v a lo re s d e V/ v A fija d o s, s e tie n e q u e (7 = 4 4 .4 8 8 y R = 3 .3 9 9 . C o m o c o n ­
F in a lm e n te , p o d ría p a re c e r q u e e s p o s ib le o b te n e r u n m e jo r g e n e ra d o r d e n ú ­
se c u e n c ia . R < (7 y u n a a p lic a c ió n d ir e c ta d e (9 .2 ) n o s d a u n a im p le m e n ta c ió n d e
m e ro s a le a to rio s a ñ a d ie n d o u n a c o n sta n te a la e c u a c ió n F o r e je m p lo , p o d ría p e n ­
u n a c la s e d e n ú m e ro s a le a to rio s. E l c ó d ig o q u e re s u lta se m u e s tra e n la F ig u ra 9 .3 .
E n e lla , la ru tin a r o n d o m l n t d e v u e lv e e l v a lo r d e e s t a d o . s a rse q u e
E n la F ig u ra 9 I a p a re c e n d o s m é to d o s a d ic io n a le s : u n o d e e llo s g e n e ra a le a to ­
ria m e n te u n re a l e n e l in te rv a lo d e 0 a I. m ie n tra s q u e e l s e g u n d o g e n e ra u n e n te ro X ,. , = ( 4 8 .2 7 IX , + l ) m o d ( 2 ?l - ll
a le a to rio e n e l in te rv a lo c e r r a d o q u e se e s p e c ific a c o m o a rg u m e n to (v é a s e e l E je r­
c ic io 9 .8 ). g e n e ra ra v a lo re s m á s a le a to rio s. S in e m b a rg o , c u a n d o u sa m o s e s ta e c u a c ió n p o d e ­
P o r ú ltim o , la c la s e ta m b ié n in c lu y e un g e n e ra d o r p a ra e l c a s o e n e l q u e se n e ­ m o s o b se rv a i que
c e s ite n n ú m e ro s a le a to rio s n o u n ifo rm e m e n te d is trib u id o s A l re s p e c to , e n la S e c ­
c ió n 9 .3 se m u e s tra e l c ó d ig o d e lo s m é to d o s p o i s s o r . y n e g E x p . (48.271 • 179 4 2 4 105 - lim o d (2 l l)= 179.424.105.
Se p u e d e e s ta r te n ta d o a a s u m ir q u e c u a lq u ie r s iste m a c o m p u ta c io n a l tie n e un
g e n e ra d o r d e n ú m e ro s a le a to rio s a l m e n o s ta n b u e n o c o m o e l d e la F ig u ra 9.3.
D e m o d o q u e . si la se m illa e s 1 7 9 .4 2 4 .1 0 5 . e l g e n e ra d o r s e b lo q u e a e n u n c ic lo d e
T ris te m e n te , e s to n o e s c ie rto . M u c h a s lib re ría s p o se e n g e n e ra d o re s b a sa d o s e n la
p e rio d o I. E s to m u e s tra lo frág ile s q u e p u e d e n se r e sto s g e n e ra d o re s.
fu n ció n

Y ,, , = <AX, + Omod2" 1 l í e t e c » e l iim im * f c n c r * S * q u e e l c o n o c i d o c o m o d i « n d i * . c v M e n l c e n l o » t i t l c m » t m x


9.3 Números aleatorios no uniformes g a n a d o re s e s 2l e 2 k'.. E s to n o s d a la d is trib u c ió n d e la F ig u ra 9 .4 . E n g e n e ra l, si
e l n ú m e ro e sp e ra d o d e b o le to s g a n a d o re s e s a . e n to n c e s la p ro b a b ilid a d d e q u e
N o to d a s las a p lic a c io n e s re q u ie re n n ú m e ro s a le a to rio s u n ifo rm e m e n te d is trib u i­ a p a re z c a n k b o le to s g a n a d o re s e s a l e a/k \.
d o s. P o r e je m p lo , las c a lific a c io n e s d e lo s a lu m n o s d e un c u rs o n u m e ro s o n o s u e ­ P a ra g e n e r a r d e fo rm a a le a to ria un e n te r o s ig u ie n d o u n a d is trib u c ió n d e P o is­
len d is trib u irse d e m a n e ra u n ifo rm e , sin o q u e se a ju s ta n a la c lá s ic a d is trib u c ió n so n c o n m e d ia a . p o d e m o s s e g u ir la s ig u ie n te e s tr a te g ia (su ju s tific a c ió n m a te ­
e n fo rm a d e c a m p a n a , c o n o c id a fo rm a lm e n te c o m o d is tr ib u c ió n n o rn u il o d e m á tic a q u e d a fu e ra d e lo s o b je tiv o s d e l te x to ) : se g e n e ra n re p e tid a m e n te n ú m e ­
G a u ss. U n g e n e ra d o r u n ifo rm e d e n ú m e ro s a le a to rio s p u e d e e m p le a rs e p a ra g e n e ­ ro s a le a to r io s e n e l in te r v a lo ( 0 . I ) d is trib u id o s d e m a n e r a u n ifo rm e h a s ta q u e su
ra r n ú m e ro s q u e s a tisfa c e n o tr o tip o d e d istrib u c io n e s. p ro d u c to s e a m e n o r ( o ig u a l) q u e e ~ a . E s to e s lo q u e se h a c e e n la r u tin a d e la
U na im p o rta n te d is trib u c ió n n o u n ifo rm e q u e s e p ro d u c e d u ra n te las s im u la ­ F ig u ra 9 .5 .
cio n e s e s la d is tr ib u c ió n d e P o iss o n . L o s s u c e s o s q u e s e p ro d u c e n b a jo la s s ig u ie n ­ O tra im p o rta n te d is trib u c ió n n o u n ifo rm e e s la d is tr ib u c ió n e x p o n e n c ia l, g e n e ­
te s c irc u n s ta n c ia s s a tisfa c e n la d is trib u c ió n d e P o isso n : ra d a e n la F ig u ra 9 .6 . E n e s ta d is trib u c ió n la m e d ia y la \ a r i a n / a c o in c id e n . La
d istrib u c ió n e x p o n e n c ia l s e e m p le a p a ra m o d e la r e l tie m p o q u e tra n sc u rre en tre
• L a p ro b a b ilid a d d e un s u c e s o e n u n a re g ió n p e q u e ñ a e s p ro p o rc io n a l a l ta ­ d o s e v e n to s a le a to rio s in d e p e n d ie n te s , c o m o e n e l e je m p lo d e sim u la c ió n d e la
m a ñ o d e la región.
S e c c ió n 13.2.
• L a p ro b a b ilid a d d e d o s s u c e s o s e n u n a re g ió n p e q u e ñ a e s p ro p o rc io n a l al M u c h a s o tra s d is trib u c io n e s a p a re c e n c o n fre c u e n c ia . H e m o s tra ta d o a q u í de
c u a d ra d o d e l ta m a ñ o d e la re g ió n , c o n lo q u e n o rm a lm e n te e s lo s u fic ie n te ­ m o s tra r c o m o u n a m a y o ría d e e lla s p u e d e n o b te n e rs e a p a rtir d e la d istrib u c ió n
m en te p e q u e ñ a c o m o p a ra p o d e r se r ig n o ra d a . u n ifo rm e . P u e d e c o n su lta rs e c u a lq u ie r lib ro so b re p ro b a b ilid a d e s y e s ta d ís tic a p a ­
• L o s h e c h o s c o n s is te n te s e n o b te n e r k s u c e s o s e n u n a re g ió n d e te rm in a d a y ra c o n o c e r m ás d e ta lle s a c e rc a d e e s ta s d istrib u c io n e s.
o b te n e r j s u c e s o s e n u n a re g ió n d is ju n ta a la a n te rio r so n in d e p e n d ie n te s.
(T é c n ic a m e n te , e s to q u ie re d e c ir q u e la p ro b a b ilid a d d e q u e a m b o s s u c e s o s
se p ro d u z c a n sim u ltá n e a m e n te se c a lc u la m u ltip lic a n d o la s p ro b a b ilid a d e s 1
2 * D e vuelve un e n t e r o u san d o una d i s t r i b u c i ó n de P o i s s o n y
d e lo s e v e n to s in d iv id u a le s.)
3 * cambia e l e sta d o in te rn o .
• L a c a n tid a d m e d ia d e s u c e s o s e n u n a re g ió n d e un ta m a ñ o d a d o e s c o n o c id a . 4 • Gparam v a l o r E s p e r a d o l a m e d i a d e l a d i s t r i b u c i ó n .
5 * ír e tu r n e l int pseudoaleatorio.
E n to n c e s, si e l n ú m e ro m e d io d e su c e so s v ie n e d a d o p o r la c o n sta n te a . la p ro b a ­
6 */
b ilid a d d e q u e se p re s e n te n e x a c ta m e n te k s u c e s o s e s a e ~afk\. 7 public int p o isso n < double valorE sperado )
L a d is trib u c ió n d e P o isso n n o rm a lm e n te s e a p lic a a s u c e s o s q u e tie n e n una 8 1
p ro b a b ilid a d re d u c id a d e p ro d u c irse . P o r e je m p lo , c o n s id é re s e e l e v e n to d e te n e r 9 double lim ite - -valorEsperado;
10 d o u b le p ro d u cto = M a th .lo g ( randomReal( ) >;
un b o le to g a n a d o r d e la lo te ría p rim itiv a , e n e l q u e la p ro b a b ilid a d d e g a n a r e l b o ­
11 in t contador;
te e s d e I e n tr e 14 m illo n e s. S u p o n d re m o s q u e lo s n ú m e ro s e s c o g id o s a l re lle n a r
12
un b o le to son. m á s o m e n o s , a le a to rio s c in d e p e n d ie n te s . S i u n a p e rs o n a relle n a 13 f cor) c o n t a d o r - 0 ; p r o d u c t o > l i m i t e ; c o n t a d o r » » >
1 0 0 b o le to s, su s p ro b a b ilid a d e s d e g a n a r so n a h o ra d e I e n tre 1 4 0 .0 0 0 (h a n m e jo ­ 14 p r o d u c t o *= M a t h . l o g ) r a n d o m R e a l ( ) ) ;
ra d o e n un fa c to r d e 100). d e m o d o q u e se v e rific a la p rim e ra c o n d ic ió n . L a p ro b a ­ 15
16 re tu rn contador;
b ilid a d d e q u e u n a p e rs o n a te n g a d o s b o le to s g a n a d o re s e s casi n u la , p o r lo q u e
17 )
ta m b ié n se c u m p le la se g u n d a c o n d ic ió n . S i a lg u n a o tr a p e rs o n a c o m p ra 10 b o le ­
to s . su s p ro b a b ilid a d e s d e g a n a r so n d e I e n tr e 1 .4 0 0 .0 0 0 . y é s ta s so n in d e p e n ­
Figura 9 .5 G e n e r a c ió n d e u n n ú m e ro a le a to rio s e g ú n la distribución d e Poisson
d ie n te s d e la p rim e ra p e rs o n a , d e m o d o q u e la te rc e ra p ro p ie d a d ta m b ié n se c u m ­
p le . S u p ó n g a s e q u e se v e n d e n 2 8 m illo n e s d e b o le to s. L a c a n tid a d m e d ia de
b o le to s g a n a d o re s e n e s ta s itu a c ió n e s 2 (é s ta e s la c if r a q u e n e c e sita m o s p a ra s a ­
tisfa c e r la ú ltim a c o n d ic ió n ). E l n ú m e ro p re v is ib le d e b o le to s g a n a d o re s e s u n a v a ­ 1 /* •
2 * Devuelve un v a lo r de t i p o double que s ig u e una d i s t r i b u c i ó n
ria b le a le a to ria c o n u n v a lo r e s p e r a d o d e 2 . q u e sa tisfa c e la d is trib u c ió n d e P o is­ 3 * ex p o n en c ia l y cambia e l e s t a d o i n te r n o .
so n . D e e s te m o d o , la p ro b a b ilid a d d e q u e s e h a y a n v e n d id o e x a c ta m e n te k b o le to s 4 • 3param v a lo r E s p e r a d o l a m edia d e l a d i s t r i b u c i ó n .
5 • 9 re tu rn e l double p seu d o aleato rio .

Boletos ganad ores 0 1 2 3 4 5 7 p u b l i c d o u b le negExp( d o u b le v a lo r E s p e r a d o )


8 (
Frecu en cia 0.135 0.271 0.271 0.180 0.090 0.036 9 return - valorE sperado • M a th .lo g ( randomReal) ) >;
10 )
Figuro 9.4 Distribución d e los g an ad o re s d e la lotería c u a n d o e l núm ero esp erad o
Figura 9.6 G e n e ra ció n d e un núm ero ale a to rio siguiendo u n a distribución expo
d e g an ad o re s es 2.
nencioi
9.4 G e n e ra ció n de una perm utación aleatoria n ú m ero s a le a to rio s, só lo p u e d e n g e n e ra r s e 2 - 2 p e rm u ta c io n e s d is tin ta s. E sto
p o d ría re p re se n ta r u n p ro b le m a e n a lg u n a s a p lic a c io n e s . P o r e je m p lo , u n p ro g ra ­
m a q u e g e n e ra ra I .(MH).(KM) p e rm u ta c io n e s (d iv id ie n d o q u iz á s e l tr a b a jo e n tre v a ­
C o n sid é re se e l p ro b le m a d e s im u la r u n ju e g o d e c a ria s. L a b a ra ja tie n e 52 c a rta s
rio s c o m p u ta d o re s ) p a ra m e d ir la e fic ie n c ia d e un a lg o r itm o d e o rd e n a c ió n , g e n e ­
d istin tas. E n e l tr a n s c u rs o do u n a p a rtid a d e b e m o s g e n e ra r c a rta s d e la b a ra ja sin
rará. c o n to ta l se g u rid a d , a lg u n a s p e rm u ta c io n e s d o s v e c e s. S e n ec e sita n
re p e tir n in g u n a . E s to c o rr e s p o n d e a l p ro c e s o d e b a ra ja r la s c a rta s p a ra d e s p u é s re ­
g e n e ra d o re s d e n ú m e ro s a le a to rio s m e jo re s p a ra h a c e r q u e la te o ría y la p rá c tic a
p a rtir c a rta s d e l m a z o re su lta n te . N a tu ra lm e n te d e s e a m o s q u e el b a ra jc o d e la s c a r ­
c o in c id a n a b so lu ta m e n te .
ta s s e a ju s to , e s d e c ir, q u e c a d a u n a d e la s 52! p o sib le s c o m b in a c io n e s te n g a la
O b s e rv e q u e s u b s titu ir la lla m a d a a l m étcxlo d e in te rc a m b ia r p o r la llam ad a
m ism a p ro b a b ilid a d d e a p a re c e r tra s b a ra ja r la s carta s.
r . r a n d o m i n t ( 0 , a . l e n g t h - 1 ) n o fu n c io n a , in c lu s o e n e l c a s o d e te n e r tre s e le ­
E ste tip o d e p ro b lem as p recisa la g en eració n d e p e rm u ta c io n e s a lea to ria s. U na
m e n to s. E x isten 3! = 6 p o sib le s p e rm u ta c io n e s y e l n ú m e ro d e se c u e n c ia s d if e re n ­
p erm u tació n a lea to ria em p lea n ú m ero s aleato rio s d istin to s p ara c a d a e le m e n to En g e ­
te s q u e p u e d e c a lc u la rs e c o n las tre s lla m a d a s d e r a n d o m i n t e s 3 — 2 7 . C o m o 6
neral. e l problem a e s e l sigu ien te: g e n era r una p e rm u ta c ió n a lea to ria d e 1. 2 Y.
n o e s d iv iso r d e 2 7 . u n a s p e rm u ta c io n e s tie n e n m a y o r p ro b a b ilid a d d e a p a re c e r
T o d as las perm utaciones deben ser equiprobables. L a aleatoriedad de la perm uta­
q u e o tra s.
ción está lim itada por la aleatoriedad del generador de núm eros pseudoaleatorios.
D e este modo, q ue Unías las perm utaciones sean igualm ente probables depende de
que Unios lo s núm eros generados sean independientes v se distribuyan unifo rm e­
mente. L a s perm utaciones aleatorias pueden generarse en tiem po lineal. 9.5 Algoritmos aleatorios
L n la F ig u ra 9 .7 s e m u e s tra u n a ru tin a , p e r m u t e , q u e s i r \ c p a ra g e n e ra r una
p e rm u ta c ió n a le a to ria . A l e fe c to p ro c e d e m o s d e l sig u ie n te m o d o : p a rtim o s d e un S u p o n g a q u e e s u n p ro fe s o r q u e d a c la s e s d e p ro g ra m a c ió n c a d a se m a n a . Q u ie re
v e c to r e n el q u e a p a re c e n lo s e le m e n to s d e I X e n u n o rd e n c u a lq u ie ra . El b u ­ a se g u ra rse d e q u e lo s e s tu d ia n te s e s tá n e s c r ib ie n d o su s p ro p io s p ro g ra m a s o . al
c le r c a li/a la m e z c la a le a to ria . E n c a d a ite ra c ió n se in te rc a m b ia j ; j | c o n un m e n o s , q u e e n tie n d e n e l c ó d ig o q u e p re s e n ta n . U n a s o lu c ió n e s p re g u n ta r a los
c ie rto e le m e n to del v e c to r e n tre la s p o s ic io n e s 0 y j t e n p a rtic u la r e s p o s ib le que a lu m n o s a c e rc a d e los p ro g ra m a s c a d a d ía d e c la s e . S in e m b a rg o , e s ta s p re g u n ta s
n o s e re a lic e n in g ú n in te rc a m b io , a l e s c o g e rs e e l e le m e n to j - é s i m o |. T ra s e je c u ta r re d u c e n e l tie m p o d is p o n ib le , p o r lo q u e só lo s e r ía p rá c tic o c u e s tio n a r la m ita d de
la ru tin a se g e n e ra u n a p e rm u ta c ió n a le a to ria d e I. 2 X. lo s p ro g ra m a s. S u p ro b le m a e s d e c id ir c u á n d o p re g u n ta r a lo s e stu d ia n te s.
lis e v id e n te q u e p e r m u t e g e n e ra p e rm u ta c io n e s a rb itra ria s . P e ro , ¿ to d a s las S i a v is a c o n a n te la c ió n d e q u e v a a p re g u n ta r, lo s a lu m n o s te n d rá n la [R isibili­
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 ? L a re s p u e sta e s s í y n o . a la v ez S i n o s d a d d e h a c e r tra m p a s n o re a liz a n d o e l 5 0 p o r c ie n to d e lo s p ro g ra m a s q u e n o van a
b a sa m o s e n e l a lg o ritm o la re s p u e sta e s sí. E x iste n V' p e rm u ta c io n e s p o s ib le s , y el se r e x a m in a d o s . A lte rn a tiv a m e n te p u e d e a d o p ta r la e s tra te g ia d e e x a m in a r un p ro ­
n ú m e ro d e p o sib le s sa lid a s d ife re n te s d e la s V - I lla m a d a s a r a n d o m i n t e n la g ra m a s í y o tr o n o . sin a v isa r p re v ia m e n te , p e ro lo s a lu m n o s p ix lrían d e s c if r a r d i­
lin e a I I es ta m b ié n .V!. E s to e s d e b id o a q u e la p rim e ra lla m a d a p ro d u c e 9 o I. c h a e s tra te g ia rá p id a m e n te . O tra |x*sibilidad e s e x a m in a r a lo s a lu m n o s s o b re los
lu e g o tie n e d o s sa lid a s. L a se g u n d a lla m a d a p ro d u c e ti. I o 2 . lu e g o n e n e tre s s a li­ p ro g ra m a s q u e p a re c e n m á s im p o rta n te s , p e ro e s to p ro b a b le m e n te c o n d u c ir á a p a ­
d as. L a lla m a d a i-é sim u tie n e N sa lid a s. E l n ú m e ro to ta l d e s a lid a s e s e l p ro d u c to tro n e s sim ila re s d e a ñ o e n a ñ o . p o r lo q u e d e n u e v o la e s tra te g ia re s u lta ría p re d e c i­
d e to d a s e sta s p o s ib ilid a d e s, y a q u e c a d a n ú m e ro a le a to rio e s in d e p e n d ie n te del b le a p a rtir d e l p rim e r año.
resto . E n c o n s e c u e n c ia , b a s ta d e m o s tra r q u e c a d a se c u e n c ia d e n ú m e ro s a le a to rio s U n m é to d o q u e p a re c e e lim in a r e s to s p ro b le m a s e s la n z a r u n a m o n e d a . E s
c o rre sp o n d e a u n a y s ó lo u n a p e rm u ta c ió n . E s to p u e d e d e m o s tra rs e ra z o n a n d o h a ­ d e c ir, h a c e un c u e s tio n a r io p a ra c a d a p ro g ra m a (re d a c ta r las p re g u n ta s n o c o n s u ­
c ia a tr á s {v é a se e l E je rc ic io 9 .6 .) m e ta n to tie m p o c o m o c o rre g irla s), y a l c o m ie n z o d e la c la s e la n z a u n a m o n ed a
S in e m b a rg o la re s p u e sta real e s n o . p u e s to d a s la s p e rm u ta c io n e s n o s o n e q u i­ p a ra d e c id ir si v a a h a b e r e x a m e n . D e e s ta m a n e ra e s im p o sib le s a b e r a n tes d e c a ­
p ro b a b le s. ( 'o r n o s ó lo h a y 2 ' 1 2 e s ta d o s in ic ia le s p o sib le s p a ra el g e n e ra d o r de d a c la s e si e s e d ía h a b rá c u e stio n a rio . A d e m á s, e s te p a tró n n o s e re p ite c a d a añ o .
L o s e s tu d ia n te s p u e d e n se r e x a m in a d o s c o n u n 5 0 p o r c ie n to d e p o s ib ilid a d e s , in­
1 /•• d e p e n d ie n te m e n te d e lo s u c e d id o a n te s . L a d e s v e n ta ja d e e s ta e s tra te g ia e s q u e el
2 * Reorder.a un v e c t o r d e to ra aleatoria.
a ñ o |x x lría a c a b a r sin q u e h a y a h a b id o n in g ú n e x a m e n . A u n q u e si s e a s u m e q u e
3
4 * Qparam a a l vector. lo s e s tu d ia n te s tie n e n q u e re a liz a r m u c h o s p ro g ra m a s , e s to e s im p ro b a b le , a m en o s
5 •/ q u e la m o n e d a e s té tru c a d a . C a d a a ñ o e l n ú m e ro e s p e r a d o d e e x á m e n e s e s la m i­
6 public static final v oid permute! O bject [ a i ta d d e l n ú m e ro d e p ro g ra m a s im p le m e n ta d o s . v c o n u n a e le v a d a p ro b a b ilid a d , el
7 {
n ú m e ro d e e x á m e n e s re a liz a d o s s e rá m u y p a re c id o a d ic h a c a n tid a d .
6 Rar.dom r * new P a n d e n 1 );
E ste e je m p lo ilu stra lo s lla m a d o s a lg o r itm o s a le a to r io s . D u ra n te s u e je c u c ió n lo!
9
10 forí int j - 1 ; j < a.len g th ; j-- > se e m p le a , e n a lg u n a o c a sió n , u n n ú m e r o a le a to rio p a ra to m a r u n a d e c is ió n , e n lu - a,<j
11 O rdenación. intercam bioH efi a . j . r . randonent< 0. j I l; g ar d e to m a rla s s ie m p re d e fo rm a d e te rm in ista . L a d u ra c ió n d e la e je c u c ió n del
12 a lg o ritm o d e p e n d e n o s ó lo d e lo s d a to s d e e n tra d a s in o ta m b ié n d e lo s n ú m e ro s
Figuro 9.7 Rufina p a ra g en e ra r perm utaciones alea torias a le to rio s g en e ra d o s.
E n e l p e o r d e lo s c a s o s la d u ra c ió n d e l a e je c u c ió n e s . c a s i s ie m p r e , la m ism a sig u e n s ie n d o p o s ib le s , p e r o a h o ra a p a re c e n c o m o re s u lta d o d e n ú m e ro s a le a to rio s
q u e la q u e la d e l a lg o r itm o n o a le a to riz a d o . L a d if e re n c ia m á s im p o rta n te e s q u e in a d e c u a d o s, y n o p o r c u lp a d e m a la s e n trad as.
u n a lg o r itm o b ie n a lc a to ri/.a d o n o tie n e d a to s d e e n tr a d a m a lo s s i n o n ú m e ro s C o m e n ta m o s a c o n tin u a c ió n las p rin c ip a le s d ife re n c ia s e n tr e lo s a lg o ritm o s
a le a to rio s ( p a r a c a d a e n tr a d a e n p a r tic u la r ) in a d e c u a d o s . E s to p a re c e s ó lo u n a a lc a to n z u d o s y lo s n o a le a to ri/a d o s . H a s ta a h o ra h e m o s v e n id o e s tu d ia n d o lo s a l­
d if e re n c ia te ó r ic a , p e r o tie n e u n a g r a n im p o rta n c ia , ta l y c o m o m u e s tra e l s i­ g o ritm o s n o a le a to ri/a d o s . C u a n d o c a lc u la m o s su tie m p o m e d io d e e je c u c ió n , s u ­
g u ie n te e je m p lo . p o n e m o s q u e to d a s las e n tra d a s s o n e q u ip ro b a b le s . S in e m b a rg o , e s ta su p o sic ió n
C o n s id é re s e e l p ro b le m a sig u ie n te . S u je f e le p id e e s c r ib ir u n p ro g ra m a que p o d ría n o se r c ie r ta y a q u e . p o r e je m p lo , las e n tra d a s c a s i o rd e n a d a s so n m á s h a b i­
c a lc u le la m e d ia d e un c o n ju n to d e 1 .0 0 0 .0 0 0 d e n ú m e ro s. D e b e e n tr e g a r e l p ro ­ tu a le s d e lo e s p e r a d o e s ta d ístic a m e n te . E s to p u e d e c a u s a r p ro b le m a s p a ra alg u n o s
g ra m a y e je c u ta rlo c o n lo s d a to s d e e n tra d a q u e e l j e f e d e c id a . S i a p a re c e la re s ­ a lg o ritm o s c o m o e l q u ic k s o rt. P ero u s a n d o u n a lg o ritm o a le a to riz a d o e l te n e r u n o s
p u esta c o rr e c ta e n u n o s p o c o s se g u n d o s ( l o q u e s e e s p e r a d e un a lg o ritm o lin eal), d a to s d e e n tra d a u o tr o s n o e s ta n im p o rta n te . E n e s te c a s o lo q u e s í e s im p o rta n te
su je f e e s ta rá m u y s a tis fe c h o p o r e l tra b a jo re a liz a d o y le p re m ia r á d e a lg ú n m o d o . e s p o d e r c o n ta r c o n v e rd a d e ro s n ú m e ro s a le a to rio s , y a q u e p a ra o b te n e r u n a e s ti­
P ero si su p ro g ra m a n o fu n c io n a o e s d e m a s ia d o le n to , su je f e le d e s p e d irá p o r in ­ m a c ió n d e l tie m p o d e e je c u c ió n se h a c e u n a m e d ia d e to d o s lo s c o m p o rta m ie n to s
c o m p e te n te . S u je f e p ie n s a q u e g a n a d e m a s ia d o y e s tá d e s e a n d o to m a r la se g u n d a p o sib le s c o rre s p o n d ie n te s a lo s n ú m e ro s a le a to rio s a s o c ia d o s a c u a lq u ie r en trad a.
o p c ió n . ¿Q u é d e b e ría h a c e r? E m p le a n d o la s e le c c ió n rá p id a c o n e le c c ió n a le a to ria d e p iv o te s ( o u n p a s o d e pre-
E l a lg o ritm o d e s e le c c ió n rá p id a d e s c rito e n la S e c c ió n 8 .7 p a re c e se r la m e jo r p ro c e s a m ie n to d e la e n tra d a ) o b te n e m o s un a lg o ritm o O ( N ) . E s to sig n ific a q u e pu­
so lu c ió n a l p ro b le m a . A u n q u e e l a lg o ritm o (v é a s e la F ig u ra 8 .2 0 ) e s m u y rá p id o ra c u a lq u ie r e n tra d a , in c lu y e n d o a q u e lla q u e y a e s tá o rd e n a d a , e l tie m p o d e e je c u ­
e n m e d ia , e s c u a d rá tic o e n e l c a s o p e o r si e l p iv o te e s p o b re . U sa n d o la m e d ia n a c ió n e stim a d o , b a s á n d o n o s e n e l c o m p o r ta m ie n to e s ta d ís tic o d e los n ú m e ro s
d e tres, te n e m o s g a ra n tiz a d o q u e e s te c a s o p e o r n o se d a rá n u n c a p a ra lo s d a to s d e a le a to rio s, e s ( H N ) . U n a c o ta d e l tie m p o e s tim a d o sera h a b itu a lm e n te a lg o m a y o r
e n tra d a m ás c o m u n e s , a l ig u a l q u e p a ra a q u e llo s q u e y a e s tá n o rd e n a d o s o tien en q u e una c o ta d e l tie m p o e n e l c a s o p ro m e d io v a q u e las su p o s ic io n e s h e c h a s p a ra
a lg ú n e le m e n to d u p lic a d o . S in e m b a rg o , a ú n e x is te u n c a s o p e o r c u a d rá tic o m o s­ g e n e ra r lo s n ú m e ro s a le a to rio s s o n m á s d é b ile s (n ú m e ro s a le a to rio s v ersu s en trad a
tra d o e n e l E je rc ic io 8.8. D e m o d o q u e su m a lé v o lo je f e tra s le e r su p ro g ra m a , p o ­ a le a to ria ), p e r o s e rá m e n o r q u e la c o rre s p o n d ie n te c o ta e n e l c a s o p e o r. P o r o tra
d ría v e r c ó m o se e lig e e l p iv o te , y s e rá c a p a z d e c o n s tru ir e l c a s o p e o r. C o m o c o n ­ p a rte , e n m u c h a s o c a s io n e s las so lu c io n e s q u e tie n e n b u e n a s c o ta s e n e l c a s o p e o r
se c u e n c ia . s e rá d esp e d id o . e x ig e n c o n fre c u e n c ia u n tra b a jo a ñ a d id o p a ra a se g u ra r q u e n o se p ro d u z c a e l c a s o
E m p le a n d o n ú m e ro s a le a to r io s p u e d e g a ra n tiz a r e s ta d ís tic a m e n te la s e g u r i­ p e o r. E l a lg o ritm o d e s e le c c ió n c o n c o s te ( H N ) e n e l c a s o p e o r e s u n re s u lta d o te ó ­
d a d d e su tra b a jo . P u e d e c o m e n z a r e l a lg o r itm o d e s e le c c ió n rá p id a m e z c la n d o ric o fo rm u la b le p e ro p o c o ú til e n la p rá c tic a .
a le a to ria m e n te la e n tr a d a e m p le a n d o e l p ro g r a m a d e la F ig u ra 9 .7 2. C o m o c o n ­ L o s a lg o ritm o s a le a to rio s se c la s ific a n e n d o s g ra n d e s fa m ilia s. L o s p rim ero s,
s e c u e n c ia . su j e f e h a p e rd id o la c a p a c id a d d e e s p e c if ic a r u n a m a la s e c u e n c ia d e c o m o e l a rrib a e s tu d ia d o , sie m p re d e v u e lv e n la re s p u e s ta c o rre c ta , a u n q u e p u e d e n
e n tra d a . C u a n d o e je c u te e l a lg o r itm o d e s e le c c ió n rá p id a , é s te p ro c e s a rá u n a e n ­ ta rd a r e n h a c e rlo , d e p e n d ie n d o d e lo s n ú m e ro s a le a to rio s g e n e ra d o s . L o s se g u n d o s
tr a d a a le a to r ia , p o r lo q u e e s d e e s p e r a r un tie m p o lin e a l e n su e je c u c ió n . ¿ P u e d e so n lo s q u e e s tu d ia re m o s e n e l re s to d e e s te c a p ítu lo . E ste se g u n d o tip o d e a lg o r it­
d u r a r u n tie m p o c u a d rá tic o ? L a re s p u e s ta e s s í. E s p o s ib le q u e la m e z c la d e c u a l­ m o s a le a to rio s s e e je c u ta n e n u n a c a n tid a d fija d e tie m p o p e ro p u e d e n c o m e te r
q u ie r e n tr a d a in ic ia l d e v u e lv a e l p e o r c a s o p a ra la s e le c c ió n rá p id a , p o r lo q u e la e rro re s d e fo rm a a le a to ria (p re su m ib le m e n te c o n u n a p ro b a b ilid a d re d u c id a ). E s­
s e c u e n c ia re s u lta n te s e r ía o r d e n a d a e n tie m p o c u a d rá tic o . S i e s lo s u f ic ie n te ­ to s e rr o re s s e c la s ific a n e n f a l s o s p o sitiv o s o fa l s o s n e g a tiv o s. E sta e s u n a té c n ic a
m e n te d e s a f o rtu n a d o c o m o p a ra q u e s u c e d a e s to , p e rd e r á s u tr a b a jo ( ¡ a u n q u e su a m p lia m e n te a c e p ta d a e n m e d ic in a . L o s falso s p o s itiv o s y lo s falso s n e g a tiv o s so n
je f e n o s e a e n p rin c ip io ta n m a lic io s o !). S in e m b a r g o , e s te s u c e s o e s e s ta d ís tic a ­ b a sta n te c o m u n e s : a lg u n o s te s ts m é d ic o s tie n e n ta s a s d e e rr o r s o rp re n d e n te m e n te
m e n te im p o s ib le : p a ra u n m illó n d e e le m e n to s , la p ro b a b ilid a d d e te n e r q u e e m ­ e le v a d a s . M ás a ú n . p a ra a lg u n o s te s ts lo s e rro re s d e p e n d e n d e las c a ra c te rístic a s
p le a r ta n s ó l o e l d o b le d e l tie m p o d e l q u e in d ic a la m e d ia e s ta n p e q u e ñ a que d e l in d iv id u o y n o d e las c irc u n s ta n c ia s a le a to ria s g e n e ra d a s , p o r lo q u e re p e tir el
p u e d e s e r ig n o ra d a . E s m u c h o , p e r o q u e m u c h o m á s p ro b a b le q u e su c o m p u ta d o r te s t p ro d u c irá u n n u e v o re s u lta d o e rró n e o . E n lo s a lg o ritm o s a le a to rio s p o d e m o s
se e q u iv o q u e o s e e s tr o p e e in o p o rtu n a m e n te . A s í q u e s u p u e s to d e tr a b a jo e s ta r ía re p e tir e l te st c o n la m is m a e n tra d a u s a n d o n ú m e ro s a le a to rio s d ife re n te s. S i e je ­
seg uro. c u ta m o s e l a lg o ritm o d ie z v e c e s y o b te n e m o s diez, p o sitiv o s, y si o b te n e r u n so lo
F.n lu g a r d e m e z c la r lo s d a to s , p o d e m o s o b te n e r u n re s u lta d o e q u iv a le n te e li­ fa lso p o sitiv o e s u n s u c e s o im p ro b a b le (p o r e je m p lo u n a v e z d e c a d a c ie n ), e n to n ­
g ie n d o e l p iv o te d e fo rm a a le a to ria e n lu g a r d e h a c e rlo d e fo rm a d e te rm in ista . E le ­ c e s la p ro b a b ilid a d d e o b te n e r c o n s e c u tiv a m e n te d ie z p o s itiv o s falso s (u n a v e z e n
g im o s a le a to ria m e n te un e le m e n to d e l v e c to r y lo in te rc a m b ia m o s c o n e l e le m e n to I 0 0 10. o s e a c ie n trillo n e s ) e s p rá c tic a m e n te nula.
e n la p o s ic ió n l i n f . E le g im o s d e fo rm a a le a to ria o tro e le m e n to y lo in te rc a m b ia ­
m o s c o n e l e le m e n to e n la p o sic ió n l s u p . E sc o g e m o s u n te rc e r e le m e n to y lo
in te rc a m b ia m o s c o n e l s itu a d o e n la p o s ic ió n m e d ia . D e s p u é s e l a lg o ritm o c o n ti­ 9.6 Test aleatorio d e primalidad
n ú a c o m o d e o rd in a rio . C o m o e n e l a lg o r itm o o rig in a l, la s p a rtic io n e s d e g e n e ra d a s

R e c o rd e m o s q u e e n la S e c c ió n 7 .4 se h a n d e s c rito m u c h o s a lg o ritm o s n u m é ric o s


J e q u e e l g c n c tj .i l» J e n ú m e r o s a le a to rio s e» l o s u fic ie n te m e n te a le a to rio c o m o p a r a q u e \ u s a lid a n o p u c
p o r s u ie fe .
q u e v im o s c ó m o p u e d e n e m p le a rs e p a ra im p le m c n ta r e l e s q u e m a d e e n c ríp ta c ió n
b a sa d o e n e l a lg o ritm o R S A . U n p a s o im p o rta n te e n e l a lg o ritm o R S A e s la p ro ­ P a ra o b te n e r u n te st d e p rim a lid a d n e c e s ita m o s u n te o re m a a d ic io n a l: e l l'eo-
d u c c ió n d e d o s n ú m e ro s p rim o s /» y q . P o d e m o s e n c o n tra r u n n ú m e ro p rim o p r o ­ re m a 9.2.
b a n d o re ite ra d a m e n te n ú m e ro s im p a re s su c e s iv o s h a s ta e n c o n tra r u n o p rim o . A sí
q u e e l p u n to c ru c ia l del a lg o ritm o e s c o m p r o b a r si u n n ú m e ro d a d o e s p rim o .
E l a lg o r itm o m á s s e n c illo p a ra c o m p r o b a r si u n n ú m e ro im p a r /V es p rim o c o n ­
siste e n e s tu d ia r s u d iv isib ilid a d . E n e s te a lg o ritm o , s e u tiliz a e l h e c h o d e q u e un S i P e s p r im o y X 2 = l( m o d P) e n to n c e s X = + l( m o d /') .
n ú m e ro m a y o r q u e 3 e s p rim o si n o e s d iv is ib le e n tr e n in g ú n o tr o im p a r m e n o r o
ig u al q u e v /V. E n la F ig u ra 9 .8 s e im p le m e n ta d ire c ta m e n te e s te m éto d o .
E l test d e la d iv is ib ilid a d e s r a z o n a b le m e n te rá p id o p a ra n ú m e ro s p e q u e ñ o s C om o X 2 - I = (H m o d / ’ ) im p lic a (A - I MA + I ) - (H m od / ’ > y / ’ es p r i- l
( 3 2 -b it). p e r o n o s e p u e d e e m p le a r ni s iq u ie ra p a ra e l tip o l o n g 6 4 -b it. p u e s se m o. X - \ o X + \ = (H m o d P).
n e c e s ita n p r o b a r c e r c a d e ^ ,V 2 d iv is o re s , e m p le á n d o s e p a ra e l l o u n a c a n tid a d
d e tie m p o d e l o rd e n ( ) ( s ¿V). I-o q u e d e s e a m o s e s u n te st d e l m is m o o rd e n de
m a g n itu d q u e la ru tin a p o t e n c i a d e la S e c c ió n 7 .4 .2 . U n te o r e m a m u y c o n o c i­
U n a c o m b in a c ió n d e lo s T e o re m a s 9.1 y 9 .2 re s u lta ú til. S e a A u n e n te r o en tre
d o q u e p u e d e lle v a rn o s a r e s o lv e r la c u e s tió n e s e l T e o re m a p e q u e ñ o d e F ern u it.
2 y N 2 . S i c a lc u la m o s A v '( m o d A') y e l re s u lta d o n o e s I . e n to n c e s N n o p u e ­
(E n a ra s d e la c o m p le litu d d e l p re s e n te te x to e l r e s u lta d o s e d e m u e s tr a e n el
d e se r p rim o , y a q u e d e o tro m o d o se c o n tra d ic e e l T e o re m a p e q u e ñ o d e F erm at.
T e o re m a 9 .1 . a u n q u e n o e s n e c e s a r io p a ra e n te n d e r la d e m o s tra c ió n d e l te st de
D e c im o s e n to n c e s q u e A e s un te s tig o d e la fa c to riz a b ilid a d d e .V. y a q u e A d e ­
p rim a lid a d .)
m u e s tra q u e V e s fa c to riz a b le . C a d a n ú m e r o c o m p u e s to A' tie n e a lg ú n te s tig o A.
p e ro p a ra a lg u n o s n ú m e ro s, lla m a d o s n ú m ero s d e C a rm u h a c l. e s to s te stig o s so n
d ifíc ile s d e e n c o n tra r. N e c e sita m o s te n e r la se g u rid a d d e q u e e x is te u n a e le v a d a
I (T e o r e m a p e q u e ñ o d e T e rm a l): S i V e s p r im o y ( ) < A < T e n lo m e s p ro b a b ilid a d d e e n c o n tr a r u n te s tig o , s e a c u a l s e a la e le c c ió n d e A'. P ara m e jo ra r
A p ~ 1 = H m o d P). n u e stra s p o sib ilid a d e s a p lic a m o s e l T e o re m a 9.2.
D u ra n te e l c á lc u lo d e A ' ta m b ié n c a lc u la m o s (A*-*2 V . A s í te n e m o s A = A'-' 2J
i C o n sid érese u n k c u a lq u ie ra v e rific a n d o I ^ k < P. C o m o P e s p rim o y m e ­ y Y = A2. O b sérv e s e q u e A e Y se c a lc u la n a u to m á tic a m e n te , c o m o p arte d e la ru ­
n o r q u e A v k . A k = (H m o d /’) e s im p o sib le. C o n sid é re se a h o ra c u a lq u ie r tin a p o t e n c i o . S i Y e s I y A n o e s ± l(m o d JV ), e n to n c e s , p o r e l T e o re m a 9 .2 . A
I ^ i < j < P . A i = A j i m o d P ) im p lic a ría Al j - i) = (K nuxl P ) p e r o e s to es n o p u e d e se r p rim o . P o d e m o s d e v o lv e r 0 c o m o e l v a lo r d e A ' c u a n d o e s to s e d e ­
im p o sib le ¡to r e l a rg u m e n to a n te r io r. y a q u e I — i < P . A d c n u is. c u a n ­ te c te. E n to n c e s A’ h a b rá ta lla d o e l te s t d e p rim a lid a d , b a s á n d o n o s e n e l T e o re m a
d o trabajam os m o d P. la secu en cia A . 2 A (P - I )A e s u n a p e rm u ta ció n d e p e q u e ñ o d e F erm at.
I. - ....../ ’ - I . E lp r o tliu lo d e a m b a s se c u e n cia s ( m o d / ’>d c ln 1 se r e q u iv a len ­ L a ru tin a t e s t i g o , m o s tra d a e n la F ig u ra 9 .9 . c a lc u la A '( n u id / ’). s a lv o q u e se
te. d erivá n d o se en to n ces la eq u iva len cia A 1’ \ p - ! ) ! = < / ’ - I )!(m o d /* ). d e d e v u e lv a 0 c u a n d o s e d e te c ta la c o n tra d ic c ió n d e l T e o re m a 9 . 2 '. S i t e s t i g o no
la q u e se sig u e e l teorem a. d e v u e lv e I . e n to n c e s A e s u n te s tig o d e l h e c h o d e q u e A' n o p u e d e s e r p rim o . En
la s lín e a s d e s d e la 12 h a s ta la 14 se h ace u n a lla m a d a re c u rs iv a y se p ro d u c e A.
E n to n c e s c a lc u la m o s A ', c o m o e n u n a c o m p u ta c ió n n o rm a l d e p o t e n c i a . C o m ­
S i e l re c íp ro c o d e l T e o r e m a p e q u e ñ o d e F c rtn a l fu e se c ie r to , e n to n c e s te n ­ p ro b a m o s si e l T e o re m a 9 .2 s e c o n tra d ic e , y se d e v u e lv e 0 si e s a sí. E n c u a lq u ie r
d ría m o s u n te s t d e p rim a lid a d c o m p u ta c io n a lm c n te e q u iv a le n te a la e x p o n e n c ia - o lio c a s o s e c o m p le ta la e je c u c ió n d e p o t e n c i a .
c ió n m o d u la r (e s to e s . O ( lo g /V)). D e s a fo rtu n a d a m e n te , e l r e s u lta d o r e c íp ro c o no E l ú n ic o te m a p e n d ie n te e s la c o rre c c ió n . S i n u e stro a lg o ritm o d e c id e q u e .V es
es c ie r to . S e c o m p r u e b a f á c ilm e n te q u e 2 ' 40 = I ( m o d 3 4 1 ), p e r o 341 e s fa c to ri- fa c to riz a b le . e n to n c e s A d e b e se rlo . S i A e s fa c to riz a b le . ¿ e s c ie rto q u e to d a A c o n
z a b le ( I I x 31). 2 $; A < A' 2 e s u n te s tig o ? D e sa fo rtu n a d a m e n te , la re s p u e sta e s no. E s to s ig n i­
fic a q u e e x is te n a lg u n o s v a lo re s d e A q u e p u e d e n fa lse a r n u e stro a lg o ritm o h a c ié n ­
1 // Devuelve t r u e s i el número impar n e s primo d o n o s d e c ir q u e A' e s p rim o . IX* h e c h o , si se e lig e A d e fo rm a a le a to ria , te n e m o s
2 u n a p ro b a b ilid a d d e I 4 d e ta lla r e n la d e te c c ió n d e u n n ú m e ro fa c to riz a b le . c o m e ­
3 public s t a t i c boolean esPrim ol lo n g n > tie n d o a s í un e rro r. O b sé rv e se q u e e s to e s c ie r to p a ra c u a lq u ie r .V. S i s ó lo s e tu v ie ­
4 { ra e s ta c o n c lu s ió n e n m e d ia p a ra lo s d is tin to s v a lo re s d e \ . e n to n c e s n o p o d ría m o s
5 for( long i = 3 . - i * i < = n ; i + = 2 )
o b te n e r u n a ru tin a lo su fic ie n te m e n te b u e n a . S i re c u p e ra m o s la a n a lo g ía c o n los
6 i í ( n I i *■ 0 1
7 returr. t a l se ; / / N o prino tests m é d ic o s, n u e stro a lg o r itm o g e n e ra fa ls o s p o s itiv o s p a ra c u a lq u ie r N . a lo su ­
8 m o e l 2 5 p o r c ie r to d e l tiem p o .
9 return true; // primo
10 )
1 ( I h t é r v r x ' < |u c o l e f»*eudi t c / a l i j o n o f u n c i o n a p a r » l o m i s g r .i m l c s a c h u l o a l o s p o s i b l e s e r r o r e s «le
Figuro 9.8 Test d e p nm olid od b a sa d o en la divisibilidad ( o r z a r q u e lo s n ú m e r o s le M e a U o s s e a n 3 2 - h il
1
2 • M é t o d o Que i m p l e m e n t a e l t e s t b á s i c o d e p r i m a l i d a d . Resumen
3 • S i t e s t i g o d e v u e lv e 1. n e s t a c t o r i z a b l e .
4 • P a r a e l l o s e c a l c u l a a ' i ( mod n ) . b u s c á n d o s e a l a v e z
5 • l a s r a í c e s no t r i v i a l e s d e 1 . F.ste c a p ítu lo d e s c rib e c ó m o se g e n e ra n y u tiliz a n lo s n ú m e ro s ale a to rio s. F l g e n e ­
oA ra d o r lin eal d e c o n g ru e n c ia s e s u n a b u e n a e le c c ió n p a ra a p lic a c io n e s se n c illa s,
7 private sta tic long t e s t i g o ( long a. long i , long n ) s ie m p re q u e s e e lija n c o n c u id a d o lo s p a rá m e tro s A y M . P o d e m o s o b te n e r n ú m e ­
00 ro s a le a to rio s q u e s ig a n d is trib u c io n e s n o u n ifo rm e s , c o m o la d is trib u c ió n d e P o is-
9 ift i == 0 >
s o n o d is trib u c io n e s e x p o n e n c ia le s , a p a rtir d e u n g e n e ra d o r d e n ú m e ro s a lea to rio s
10 return 1 ;
u n ifo rm e.
11
12 long x » t e s t i g o ! a, i / 2 . n 1 ; L o s n ú m e ro s a le a to rio s tie n e n m ú ltip le s a p lic a c io n e s . A lg u n a s d e e lla s in­
13 ift x== 0 ) / / Si n es recursivam ente ía c to riz a b le . parar c lu y e n e l e s tu d io e m p íric o d e a lg o ritm o s , la sim u la c ió n d e s is te m a s d e la v id a real
14 r e tu r n 0; y e l d is e ñ o d e a lg o ritm o s q u e e v ite n d e fo rm a p ro b a b ilís tic a e l c a s o p e o r. L o s n ú ­
15 m e ro s a le a to rio s se e m p le a n e n o tra s p a rle s d e l te x to , e s p e c ia lm e n te e n la S ecció n
16 / / n no e s prim o s i encontram os una r a í z no t r i v i a l de 13.2 y e l E je rc ic io 2 0 .1 8 .
17 long y ■ ( x * x ) % n;
C o n e s te c a p ítu lo se c o n c lu y e la P a rte II d e l lib ro . L a P arte III m u e s tra a lg u n a s
18 i f t y == 1 &&x != l& s> x ! = n - 1 )
19 return 0; a p lic a c io n e s se n c illa s , c o m e n z a n d o c o n u n a d is c u sió n a c e rc a d e lo s ju e g o s e n el
20 C a p ítu lo 10. e n e l q u e ilu stra m o s tre s té c n ic a s im p o rta n te s d e re s o lu c ió n d e p ro ­
21 ift i i 2 != 0 } b le m a s.
22 y = < a * y ) % n;
23 r e t u r n y;
24
25
26 public s t a ti c final int INTENTOS = b ;
Elementos del juego
27
28
29 • Test a le a t o r i o de prim alidad. fa ls o s p o s itiv o s y f a ls o s n e g a tiv o s E rro re s c o m e tid o s a le a to ria m e n te (c o n baja
30 * E l a j u s t e d e INTENTOS a u m e n t a e l g r a d o d e c o n f i a n z a . p ro b a b ilid a d ) p o r a lg u n o s a lg o ritm o s a le a to rio s d e d u ra c ió n Fija,
31 • 0p a r a m n e l n ú m e r o a t e s t e a r . a lg o r it m o a l e a t o r i o A lg o ritm o q u e e m p le a n ú m e ro s a le a to rio s e n lu g ar d e d e c i­
32 • f l r e t u r n f a l s e s i n n o e s p rim o (con s e g u r i d a d » . sio n e s d e te rm in is ta s , p a ra d e c id ir e l sig u ie n te p aso d e la eje c u c ió n ,
33 • t r u e s i n seguram ente e s primo. d i s tr i b u c ió n d e P o is s o n D istrib u c ió n q u e m o d e la e l n ú m e ro d e v e c e s q u e se p ro ­
34
d u c e u n s u c e s o raro .
35 public s t a ti c boolean esPrimo! long n )
36 d is t r i b u c i ó n e x p o n e n c ia l D istrib u c ió n e m p le a d a p a ra m o d e la r e l tie m p o tra n s c u ­
37 Rartdom r = n e w R a n d o ml ) ; rrid o e n tr e d o s o c u rre n c ia s d e s u c e s o s a le a to rio s. S u m e d ia y su v a ria n z a c o in ­
38 c id e n .
39 f o r ( i n t c o n t a d o r = 0 ; c o n t a d o r < INTENTOS; c o n t a d o r * * d is t r i b u c i ó n u n i f o r m e D istrib u c ió n e n la q u e to d o s lo s n ú m e ro s d e n tr o d e l ran g o
40 i f t t e s t i g o 1 r . r a n d o m l n t t 2. ( i n t ) n - 2 ). e s p e c ific a d o so n e q u ip ro b a b le s.
41 n - 1 . n ) != 1 1 g e n e r a d o r lin e a l d e c o n g r u e n c i a s U n b u e n a lg o r itm o p a ra g e n e ra r d is trib u c io n e s
42 re tu rn false;
u n ifo rm es.
43
44 return true; g e n e r a d o r lin e a l d e c o n g r u e n c i a s c o n p e r i o d o c o m p le to G e n e ra d o r lin eal de
45 c o n g ru e n c ia s c u y o p e rio d o e s M - I.
n ú m e r o s p s e u d o a l e a to r io s N ú m e ro s q u e v e rific a n m u c h a s d e la s p ro p ie d a d e s de
F ig u ra 9 .9 Test aleato rio d e prlm alidad.
lo s n ú m e ro s a le a to rio s. E s d ifíc il e n c o n tr a r b u e n o s g e n e ra d o re s d e n ú m ero s
p se u d o a le a to rio s.
E s to 110 p a r e c e u n a e s ta d ís tic a m u y b u e n a , y a q u e u n a ta s a d e e rr o r d e l 25 p o r p e r i o d o U n g e n e ra d o r d e n ú m e ro s a le a to rio s c o n p e rio d o P g e n e ra la m is m a s e ­
c ie n to e s c ie rta m e n te m u y a lta . S in e m b a rg o , si u sa m o s 2 0 v a lo re s in d e p e n d ie n te s c u e n c ia a le a to ria d e s p u é s d e P ite ra c io n e s,
d e A . e n to n c e s l a p ro b a b ilid a d d e q u e n in g u n o d e e llo s s e a te s tig o d e un n ú m e ro p e r m u ta c i ó n a l e a t o r i a R e e d u c a c ió n a le a to ria d e V e le m e n to s . P u e d e g e n e ra rse
fa c to rí/a b le e s I 4 :". q u e e s c e rc a d e u n a e n tr e u n m illó n d e m illo n e s . E ste g ra d o e n tie m p o lin e a l g e n e ra n d o u n n ú m e ro a le a to rio p o r c a d a e le m e n to .
d e c e rte z a e s m u c h o m á s ra z o n a b le , y a d e m á s p o d ría m e jo ra rse ta n to c o m o d e s e á ­ p e r m u ta c i ó n U n a p e rm u ta c ió n d e I. 2 N e s u n a s e c u e n c ia d e N e n te ro s que
s e m o s re a liz a n d o m á s in te n to s . L a ru tin a e s P r i m o . m o s tra d a e n la F ig u ra 9 .9 . se in c lu y e c a d a e le m e n to d e I . 2 N e x a c ta m e n te u n a vez.
lim ita a h a c e r c in c o in ten to s. s e m illa E s e l e s ta d o in ic ia l d e u n g e n e ra d o r d e n ú m e ro s ale a to rio s.
T e o r e m a p e q u e ñ o d e F e r i n a t E sta b le c e q u e si /* e s p rim o y o < .4 < / • en to n c e s
E je rc ic io s
A = rim o d P ). E s u n a c o n d ic ió n n e c e sa ria , p e r o n o su fic ie n te , p a ra esta
b le c c r la p rim a lid a d d e u n nú m ero .
«• «¡un d , co m p o tirio n u lid a d V a l.., d e A q u e p ru e h ,, q „ e u n n ú m e ro n o e s p rim o .
Cuestiones breves
e m p le a n d o e l le o r e m a p e q u e ñ o d e Ferm al. 9 .1 . C o n e l g e n e ra d o r d e n ú m e ro s a le a to rio s d e s c o lo e n e l te x to , d e te rm in e los
t r i a l d iv is ió n A lg o ritm o s e n c illo p a ra c o m p r o b a r la p rim a lid a d d e un n ú m e ro F s p rim e ro s 10 v a lo re s d e e s t a d o , su p o n ie n d o q u e su v a lo r in ic ia l e s I
rá p id o p a ra n ú m e ro s p e q u e ñ o s (32-bil> p e r o n o p u e d e a p lic a rs e p a ra n ú m e ro s 9 .2 . M u e stre e l re s u lta d o d e e je c u ta r e l a lg o ritm o d e l te s t d e p r.m a l.d a d p ara
grand es. = 5 6 1 . c o n v a lo re s d e A e n tre 2 y 5 (a m b o s in clu siv e).
9 t S i se v e n d e n 4 2 .0 0 0 .0 0 0 b o le to s d e la lo te ría p rim itiv a , ¿ c u á l e s e l n u m e ro
e s p e r a d o d e g a n a d o re s ? ¿ Q u é p ro b a b ilid a d h a y d e q u e e l p re m io q u e d e d e ­
s ie rto ? . ¿ y la s p ro b a b ilid a d e s d e q u e h a y a e x a c ta m e n te u n g a n a d o r?
Errores com unes
9 .4 . ¿ P o r q u é n o p u e d e e m p le a rs e u n a se m illa n u la e n e l g e n e ra d o r lin e a l d e
c o n g ru e n c ia s?
1. l-u u tiliz a c ió n d e u n a se m illa n u la p ro d u c irá n ú m e ro s a le a to rio s in a d e c u a-
dos.
2. U n u su a rio s sin e x p e rie n c ia p o d ría n r c i n ic ia li/a r la s e m illa c o n u n c ie n o
Problemas teóricos
v a lo r p re fija d o a n te s d e g e n e ra r u n a n u e v a p e rm u ta c ió n a le a to ria . E sto 9 .5 . D e m u e s tre q u e la E c u a c ió n 9 .2 e s e q u iv a le n te a la E c u a c ió n 9 1 y q u e el
p ro v o c a ría q u e se g e n e ra ra la m ism a p e rm u ta c ió n e n d is tin ta s o c a sio n e s, p ro g ra m a re s u lta n te , p re s e n ta d o e n la F ig u ra 9 .3 . e s c o rre c to .
lo q u e p ro b a b le m e n te n o se p re te n d ía . 9 .6 . C o m p le te la p ru e b a d e q u e c a d a p e rm u ta c ió n o b te n id a e n la F ig u ra 9 .7 e s
3. M u c h o s g e n e r a d l e s d e n ú m e ro s a le a to rio s so n p a rtic u la rm e n te m a lo s. En e q u ip ro b a b le .
a lg u n a s a p lic a c io n e s q u e re q u ie re n la rg a s se c u e n c ia s d e n ú m e ro s a le a to ­ 9 .7 . S u p o n g a m o s q u e te n e m o s u n a m o n e d a s e s g a d a , d e m o d o q u e a l la n z a rla la
rio s. in c lu s o e l g e n e ra d o r lin eal d e c o n g ru e n c ia s e s in sa tisfa c to rio . p ro b a b ilid a d d e q u e salg a c a ra e s p y la p ro b a b ilid a d d e q u e s a lg a cruz, e s
4. S e s a b e q u e . b a jo c ie rto s c rite r io s d e a le a to rie d a d . lo s b its d e m e n o r o rd en I - p . M u e s tre c ó m o p.»dría d is e ñ a rse u n a lg o ritm o q u e e m p le e d ic h a m o ­
d e lo s g e n e ra d o re s lin e a le s d e c o n g ru e n c ia s n o so n a le a to rio s. E n c o n s e ­ n e d a p a ra g e n e ra r un 0 o u n 1. c o n la m is m a p ro b a b ilid a d .
c u e n c ia . d e b e e v ita rs e su u so . F o r e je m p lo , r a n d o m i n t (> %2 e s u n a m ala
lá c tic a p a ra sim u la r e l la n z a m ie n to d e u n a m o n ed a.
5. C u a n d o s e g e n e ra n n ú m e ro s a le a to rio s e n u n in te rv a lo d e te rm in a d o , un Problemas prácticos
e rr o r m u y c o m ú n es m a n e ja r v a lo re s lig e ra m e n te fu e ra d e lo s lím ite s e in
9 8 E sc rib a lo s m é to d o s r a n d o m R e a l y r a n d o m i n t . IX s p u é s . im p lem en to un
c lu s o p e r m itir la g e n e ra c ió n d e v a lo re s fu e ra d e l in te rv a lo , o n o p erm itir
p ro g ra m a q u e lla m e a r a n d o m i n t 1.0 0 0 v e c e s p a ra g e n e ra r n ú m e ro s en tre
q u e e l v alo r m á s p e q u e ñ o se g e n e re c o n p ro b a b ilid a d aju sta d a.
I y | (XX). ¿ S a tis fa c e lo s te s ts e s ta d ís tic o s m á s fu e rte s d e la S e c c ió n 9 .2 .
6. M u c h o s g e n e ra d o re s d e p e rm u ta c io n e s a le a to ria s n o g e n e ra n to d a s las
9 9 E je c u te u n m illó n d e v e c e s e l g e n e ra d o r d e P o is s o n d e la F ig u ra 9 .5 to ­
p e rm u ta c io n e s p o sib le s c o n la m ism a p ro b a b ilid a d C . hiio s e h a c o m e n ta
m a n d o c o m o v a lo r e sp e ra d o 2. ¿ C o n c u e rd a la d is trib u c ió n « t e n i d a c o n la
d o e n e l te x to , n u e s tro a lg o ritm o e s ta lim ita d o p o r e l g e n e ra d o r d e núme­
ro s ale a to rio s. F ig u ra 9 .4 ?
9 10 C o n s id e r e u n a e le c c ió n e n tr e d o s c a n d id a to s e n la q u e e l g a n a d o r h a o b ­
7. C a m b la r lo s v a lo re s d e un g e n e ra d o r d e n ú m e ro s a le a to rio s e q u iv a le , m uv
te n id o u n a f r a c c ió n P d e l v o to S i e l re c u e n to d e v o to s s e re a liz a s e c u e n -
p ro b a b le m e n te , a d e b ilita r su s p ro p ie d a d e s e s ta d ístic a s .
c ia lm c n te . ¿ c u á l e s la p ro b a b ilid a d d e q u e e l g a n a d o r e s té s ie m p re e n c a ­
b e z a (o e m p a ta d o c o n s u r iv a l) d u ra n te to d o e l re c u e n to ? E ste p ro b le m a
s e c o n o c e c o n e l n o m b re d e l p r o b le m a d e la v o ta c ió n . L a re s p u e s ta e s p .
En Internet E sc rib a u n p ro g r a m a q u e lo v e rifiq u e . I n d ic a c ió n : S im u le u n a e le c c ió n
c o n 10 (XX) v o ta n te s . G e n e re a le a to ria m e n te v e c to r e s d e 10000/* u n o s y
1000) | - p ) c e ro s . D e sp u é s e s tu d ie s e c u c n c ia lm c n tc si la d ife re n c ia en tre
T o d o e l c ó d ig o q u e a p a re c e e n e s te c a p ítu lo fo rm a p a rte d e l p a q u e te S u p p o r t i n q
c e ro s y u n o s n o e s n u n c a n e g a tiv a (e llo d e b e rá o c u m r 100p d e c a d a cien
v p u e d e e n c o n tra rs e e n e l d ir e c to r io S u p p o r t in g . É sto s so n lo s n o m b re s d e lo s fi­
c h e ros: veces).

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

E \t c c a p ítu lo in tro d u c e tr e s té c n ic a s a lg o r ítm ic a s im p o rta n te s , m o s tra n d o


xu u s o e n la im p le m e n ta c ió n d e d o \ p r o g r a m a s q u e r e s u e lv e n p ro b le m a s
re c re a tiv o s , E l p n m e r p ro b le m a e s u n a s o p a d e le tra s q u e in v o lu c ra la
b ú sq u e d a d e p a la b ra s e n u n v e c to r b id im e n s io n a l d e c a ra c te re s . E l se g u n d o e s el
p ro b le m a d e lle v a r a c a b o u n a ju g a d a ó p tim a e n e l ju e g o d e las ta*s e n raya.
E n e s te c a p ítu lo verem os:

• C ó m o u s a r e l a lg o ritm o d e b ú sq u e d a b in a ría , m o d ific a n d o e l d e la F ig u ­


ra 5 .1 2 . p a ra in c o rp o ra r in fo rm a c ió n p ro c e d e n te d e b ú s q u e d a s sin é x ito y re ­
s o lv e r c a s o s p a rtic u la re s g ra n d e s d e un p ro b le m a d e b ú sq u e d a d e p a la b ra s
e n líte n o s d e I seg u n d o
• C ó m o u s a r e l a lg o ritm o d e la p o d a a lfa h e la p a ra a c e le ra r e l a lg o ritm o re ­
c u rs iv o d e la S e c c ió n 7.7.
• C ó m o u sa r las ta b la s h a s h p a ra in c re m e n ta r la v e lo c id a d d e l a lg o ritm o d e las
tre s e n raya.

10.1 Sopas d e letras

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).

F igu ro 10.1 Ejem plo d o so p a d e letras


10.1.1 Teoría E ste a lg o ritm o se p u e d e m e jo ra r a ú n m as. S u p o n g a m o s q u e e s ta m o s b u sc a n d o
e n a lg u n a d ire c c ió n y n o s d a m o s c u e n ta d e q u e lie m o s le íd o la se c u e n c ia d e c a ra c ­
te r e s q x . E l d ic c io n a rio n o c o n tie n e n in g u n a p a la b ra c o m e n z a n d o p o r q x . ¿V a le
May v a rio s a lg o ritm o s in g e n u o s q u e s e p u e d e n u sa r p u ra re s o l s e r e l p ro b le m a d e e n to n c e s la p e n a se g u ir e je c u ta n d o e l b u c le in te rn o ? 1.a re s p u e sta e s o b v ia m e n te
la s o p a ile le tra s . Hl m á s d ir e c to e s e l q u e h a c e u so d e la f u e r /a bru ta: no. S i d e le c ta m o s u n a s e c u e n c ia q u e n o e s p re fijo d e n in g u n a p a la b ra d e l d ic c io ­
n a rio . p o d e m o s c a m b ia r in m e d ia ta m e n te d e d ire c c ió n . E ste a lg o ritm o >c e x p re s a
para cada p alabra P en la l i s t a de palab ras d e la s ig u ie n te fo rm a u tiliz a n d o p seu d o c ó d ig o :
para cada f i la F
p a r a cad a colum na C para cada f l i a F
para cada d irecció n D p a r a c ad a colum na C
com probar s i P a p a r e c e e n la f i l a F. colum na C para cada d irecció n D
en la d ire c c ió n D p ara cada lo n g itu d de p a la b ra L
com probar s i lo s L c a r a c t e r e s a p a r t i r de la
p o s i c i ó n I F . C) e n l a d i r e c c i ó n
P u e sto q u e h a y 8 d ire c c io n e s , e s te a lg o ritm o re q u ie re 8 P F C c o m p ro b a c io n e s. D form an una p a la b r a
P a ra la s so p a s h a b itu a le s d e la s re v ista s , d o n d e e n c o n tra m o s 4 0 p a la b ra s o m a s e n s i no form an un p r e f i jo,
u n a m a triz d e 16 fila s p o r 16 c o lu m n a s, e s to su p o n e u n a s 8 0 .0 0 0 c o m p ro b a c io n e s , sa lir; I I d e l b u c l e más i n te r n o

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 ;

11 prívate a ta tic final i n t HAX_COLUMNAS • 64


12 p r í v a t e 3 t a t i c f i n a l i n t MAX_ PALABRAS = 100000: 1 /• *
13 2 * Imprime un mensaje ya b re un fic h e ro .
14 p u b lic BusquedaPaiabras( l 3 • Lo in te n ta re p e tid a s veces h a s ta que consigue a b r ir l o .
15 ( / • F i g u r a 1 0 .4 • ) 4 • Elp r o g r a m a t e r m i n a c u an d o se alcan za e lfin a l de fichero.
16 p u b l i c inr. r e o o l v e r S o p a ( i 5 •/
17 t / * F i a u r a 1 0 .B ' / ) 6 p r i v a t e BufferedReader a b ie F ic h ero t S trin g m ensaje )
18 7 |
19 prLvate Lnt i l l a s ; 8 S t r i n g n o m b r e F i c h e r o = " M:
20 prívate i n t columnas; 9 FileH eader fichero;
21 private ln t num Palabras; 10 B u ff e r e d R a a d o i f i c h E n t r a d a • n u i l ;
22 prívate S t r i n g [ ) p a l a b r a s = new S t r i n g { MAX_PALABRAS j ; 11
23 prívate Bu f i e r o d R e n d e r n o p a S t r e . u n ; 12 do
24 prívate 3ufíeredR eatíer paiabroStreare; 13 (
25 prívate char sopa[ ] | I = 14 S y s te m .o u t .p r i n t ln t mensaje * *: ’ >;
26 new c h a r ! MAX_PIi AS ) [ MAX..COLUMNAS ] 15
27 p rív ate 3ufreredReader in = new 16 try
28 Buf í w r e d R e a d c r ( new I n p u t S t r e a m f i e a d e r I S y a t e t o . i n I I; 17 1
29 l fl nom breFichero = i n . r e a d L i n e l );
30 private s ta tic int busquedaPrefijol s t r i n g ! I a. 19 i f ( n o m b r e F i c h e r o == n u i l >
31 S t r i n g x. l n t
n ) 20 S y s t e m . e x i t l 0 );
32 { /• Figura 10.2 */ ) 21 f ic h e r o = new F i l e R e a d e r t n o m b r e F ic h e r o I;
33 p r í v a t e B u líw x e d p e n d e r n b r w F i c h e r o l S t r i n g mnnnnje ) 22 f i c h E n t r a d a ■ n e w B u f f o r o d R e a d e r I f i c h e r o >;
34 { /• Figura 10.5 • / } 23 )
35 p riv a te void leeP alabrasI ) 24 c a r c h i IOc.xception e I
36 ( r Figura ID.6 ’ / I 25 ( S y s t e m . . e r r . p r i n t I n l ‘ No « e p u e d e a b r i r * * n c m b r e F i c h e r o ) ; )
37 p r iv a te void leeSopai i 26 1 w h i l e l f i c h E n t r a d a == n u i l ):
38 ( /• Figura 10.7 • / | 27
39 p rív a te in t resolverD ireccionim t f.laB ase, ln tcolB ase, 28 S y stem .out.printlnt ‘A b i e r t o • • nom breFichero );
40 in t íila D e lta . int colD elta ) 29 re tu rn fichEntrada:
41 { /• Figura 10.9 •/ 1 30 )
42 }
Figuro 10.5 Rutina a b r o F i c h e r o p a ra abrir los ficheros d e la so p a d e letras y cíe
Figuro 10.3 Esqueleto d e lo cióse B u s q u e d a P a l a b r a s l a lista d e palabras.
l e e P a l a b r a s , m o s tra d a e n la F ig u ra 10.6. le e la lista d e p a la b ra s. I-a m a y o r p arte 1
del c ó d ig o e s tá re la c io n a d a c o n la c o m p ro b a c ió n d e e rro re s : n o q u e re m o s le e r m ás 2 * R utina p a ra l e e r l a sopa de l e t r a s .
3 * Comprueba q u e l a s o p a e s r e c t a n g u l a r .
d e ma x _PALABRAS p a la b ra s, y q u e re m o s a s e g u ra m o s d e q u e la lista d e p a la b ra s
4 * No s e c o m p r u e b a s i s e e x c e d e l a c a p a c i d a d .
está o rd e n a d a . A n á lo g a m e n te , la ru tin a l e e s o p a . m o s tra d a e n la F ig u ra 10.7. lee 5
la s o p a tic le tra s y ta m b ié n se e n c a rg a d e la c o m p ro b a c ió n d e e rro re s . N e c e sita m o s 6 p r í v a t e void leeSopa< )
a se g u ra rn o s d e q u e p o d e m o s m a n e ja r so p a s v a c ía s . \ q u e re m o s av is a r a l u su a rio si 7 {
8 S t r i n g ur.aLinea:
la s o p a n o e s re c ta n g u la r. E n in te ré s d e la m a y o r b re v e d a d p o sib le , s e h a n o m itid o
9
a lg u n a s d e las c o m p ro b a c io n e s q u e d e b e ría n h a b e rs e re a li/a d o . E n e l E je rc i­ 10 try
c io 1 0 .1 se le p ide q u e av e rig u o lo q u e falta. 11
L a ru tin a r e s o l v e r S o p a d e la F ig u ra 10.8 an id a lo s bucles q u e reco rren las tilas, 12 unaLinea = sopaStream . readLir.e < ):
la s c o lu m n a s y las d ire c c io n e s , y lla m a a la ru tin a p riv a d a r e s o l v e r D i r e c c i o r . 13 i f l u n a L i n e a == n u i l )
14
p ara c a d a una d e las p o s ib ilid a d e s. E l v a lo r d e v u e lto e s e l n ú m e r o d e p a la b ra s e n ­ 15 f i l a s = 0;
c o n tra d o . l 'n a d ire c c ió n v ie n e d a d a p o r u n a d ire c c ió n e n la c o lu m n a v u n a d ir e c ­ 16 return;
c ió n e n la fila. P o r e je m p lo , e l su r v ie n e in d ic a d o p o r d e = 0 y d f = 1 . y e l n o reste 17
p o r d e = 1 > d f = - 1 . L a s v a ria b le s d e y d f lo m a n v a lo re s e n tre - 1 y 1 , p e r o n o 18 colum nas ■ u n a L in e a . l e n g t h < i;
19 f o r 1 i n t i = 0; i < c o lu m n a s ; i « « I
p u e d e n to m a r s im u ltá n e a m e n te e l v a lo r 0 . A h o ra , lo q u e q u e d a p o r e s c r ib ir es 20 s o p a i 0 1! i 1 = u n a L i n e a . c h a r A t < i ):
r e s o l v e r D i r e c c i o n . q u e a p a re c e e n la F ig u ra 10.9. 21
L a ru tin a r e s o l v e r D i r e c c i o n c o n s tru y e u n a c a d e n a p a rtie n d o d e la fila y la 22 f o r ( f i l a s = i;
c o lu m n a b ase y a v a n /a n d o e n la d ire c c ió n ap ro p ia d a . 23 i unaLinea = sopaStream .readL m e( ) 1 I- nuil;
24 filas** 1
25
1 /• * 26 i f < u n a L i n e a . l e n g t h ( ) != c o l u m n a s l
27 S y s t e m . e r r . p r i n t l n f 'L a sopa e s i n c o r r e c t a ' >;
2 * R utina para le e r el d ic c io n a rio .
28
3 • Se m u es tra un m ensaje dé e r r o r s i no e s t á ordenado.
29 fori i n t i = 0; i < colum nas: i* * >
4 • S e h a c e u n a c o m p r o b a c i ó n p a r a n o s o b r e p a s a r KAX . PALABRAS. 30 sopa! f i l a s ]| i 1 ■ unaLinea.charA t< i I;
31
6 p rív a te void leePalabrasI ) 32
7 ( 33 c a t c h ( lOException e ) l }
8 n u m P a la b ra s = 0; 34 }
9
10 F i g u r a 10.7 R u t i n a l e e S o p a p a r a l e e r l a s o p a d e lelras.
11
12 w hilel ( palabras! num Palabras ) =
p alab raS tream . readLir.e I ) ) nuil ) 1 /* *
14 2 * R u tina para re so lv er una sopa de l e t r a s .
3 • L leva a cabo comprobaciones en to d a s l a d ir e c c io n e s .
i f l n u m P a l a b r a s != 0 p a la b r a s ! num Palabras ].
16 4 • « r e t u r n número d e p a l a b r a s e n c o n t r a d a s
cumpareTo( p a la b r a s ! num Palabras - 1 | ) < 0 >
17 5 •
18 6 p ublic int resolverSopaI )
S y stem .err.printini ‘ El d i c c i o n a r i o n o e s t á * * 7 (
19 ' o r d e n a d o - s a l i e n d o " );
20 continué;
8
9
i n t numPal = 0 ;

2' ) 10 fort int f = 0 ; í < f i l a s ; £♦* i


22 else i f < ♦« n u m P a l a b r a s >= MAX_PALABRAS l 11 £or( int c = 0; c < colum nas: c - • i
23 break; 12 f o r < i n t d f = - 1 ; d f <= 1 ; d f « « )
24 13 f o r < i n t d e = - 1 ; d e <= 1 ; d c * « )
25 14 i f ( d f ! ■ 0 | | d e !■
26 i f < palabraS tream .readyi ) > 15 n u n P a l *= x e s o l v e r D i r e c c i o n í f ,
” S y s te m .# n . p r i n t ln ( "Aviso: no se han le íd o los * * 16 c. d f . de >:
28 " d a t o s - i n c r e m e n t e MAX_PALABRAS” ) ; 17
29 18 r e t u r n numPal:
30 c a t c h < lOException e I ( ) 19 1
31 }
Figura 10 8 Rutina r e s o l v e r S o p o q u o b u sca en todas las direccion es o partir d e
Figuro 10.6 R utin a le e P a la b r a s D oro leer la teta d e palaoras. un bunio.
1 /• *
10.2 El juego d e las tres en ra ya
2 • Busca e n ¿a sopa a p a r t i r d e un p u n t o y en u n a d i r e c c i ó n .
3 • í r e t u m número d e p a la b r a » e n c o n tr a d a s R e c o rd e m o s e l a lg o ritm o s im p le d e la S e c c ió n 7 .7 q u e p e rm itía a l c o m p u ta d o r
4 •/ e le g ir e l m o v im ie n to ó p tim o e n e l ju e g o d e las tre s e n ra y a . L a e s tra te g ia c o n o c id a
5 p r í v a t e i n t r e s o lv e r D ir e c c io n ( i n t f ila B a s e . i n t colBase.
c o m o n u n in u n c o n s is tía e n lo siguiente:
6 int fila D e lta . in t colD elta l
7 { 1. S i e l e s ta d o e s te r m in a l t e s d e c ir , s e p u e d e e v a lu a r in m e d ia ta m e n te ), d e ­
8 S trin g secuencia ■ v o lv e m o s su v alo r.
9 i r . t n u a i P a ! - 0.-
2. E n cas<» c o n tra rio , si le lo c a m o v e r a l c o m p u ta d o r, d e v o lv e m o s e l v alo r
10 i n t resultadoB usqueda:
m á x im o d e to d o s lo s e s ta d o s q u e se p u e d e n a lc a n z a r d e sp u é s d e h a c e r un
11
12 secuencia -= so p al filaB ase JI colBase ]: m o v im ie n to . L o s v a lo re s a lc a n z a d o s s e c a lc u la n d e fo rm a re c u rsiv a .
13 3. E n c a s o c o n tra rio , e s e l tu rn o d e la p e rso n a. D e v o lv e m o s e n to n c e s e l m ín i­
14 fo r< int i = fila B a se - f ila D e lta . j = colB ase - colD elta; m o d e to d o s lo s e s ta d o s a lc a n /a b le s d e s p u é s d e h a c e r un m o v im ie n to .
15 i >» 0 M J ' • 0 k i i « f i l a n J < columna»; IX* n u e v o , lo s v a lo re s a lc a n z a d o s se c a lc u la n d e Corma re c u rsiv a .
16 i -= f i l a D e l t a , j »- c o I D e l t a )
17 <
18 s e c u e n c i a ♦* s o p a [ i | [ j ] ;
10.2.1 Poda alfa-beta
19 resultadoB usqueda = busquedaPrefi j o ( pal abras,
20 s e c u e n c i a , numPal i; A u n q u e lu e s tra te g ia m in im a x p ro p o rc io n a un m o v im ie n to ó p tim o p a ra las tre s en
21
ra y a , lle v a a c a b o u n a g ra n c a n tid a d d e b ú sq u e d a s. E n c o n c re to , p a ra d e c id ir el
22 if( tp a la b ra s i resultadoB usqueda |.
23 s ta r ts W ith ( secuencia ) ) p rim e r m o v im ie n to h a c e a lr e d e d o r d e m e d io m illó n d e lla m a d a s re c u rsiv a s . E sto
24 break; su c e d e p o rq u e h a c e m á s b ú s q u e d a s d e las im p re sc in d ib le s. S u p o n g a m o s q u e e l
25 c o m p u ta d o r e s tá c o n sid e ra n d o c in c o m o v im ie n to s : C \ . ( Y C Y C t y C Y S u p o n g a ­
26 p a la b ra s !resultadoBusqueda J.eg u a lstsecuencia ) ) m o s q u e la e v a lu a c ió n re c u rsiv a d e T , re v e la q u e C i fu e rz a u n e m p a te . A c o n ti­
27 (
n u a c ió n se e v a lú a t \ . E n e s te m o m e n to , lle g a m o s a un e s ta d o e n e l q u e le toca
28 numPal*»;
m o v e r a l h u m a n o . S u p o n g a m o s q u e e n re s p u e s ta a C Y e l h u m a n o p u e d e c o n s id e ­
29 S y s te m .o u t.p rin tln » "Encontrada • * se c u e n c ia •
30 • d e * * f i l a B a s e * * * *c o i B a s e • ra r / / . , . //> w. H ,c y H Hi, y a d e m á s q u e u n a e v a lu a c ió n d e m u e s tra q u e se h a
31 • a • * i • ■ • . j |; fo rz a d o un e m p a te . A u to m á tic a m e n te se h a v is to q u e C : e s u n e m p a te e n e l m e jo r
32 ) d e lo s c a s o s e in c lu s o p o sib le m e n te u n a d e rro ta p a ra e l c o m p u ta d o r (p o rq u e s e s u ­
33 ;
p o n e q u e e l h u m a n o ju e g a ó p tim a m e n te ). P u e s to q u e n e c e s ita m o s m e jo ra r C ,. n o
34 r e t u r n numPalj
35 ) te n e m o s q u e e v a lu a r l l : l r / / . , ni / / - „ . D e c im o s q u e H 1A e s u n a r e f u m d ó n . e n el
s e n tid o d e q u e C : n o e s u n m o v im ie n to m e jo r q u e e l q u e y a h e m o s v isto . E n c o n ­
Figuro 10.9 Im p lem entación d e u n a b ú sq u ed a IndM duol se c u e n c ia d e v o lv e m o s q u e e s u n e m p a te y m a n te n e m o s a c o m o e l m e jo r
m o v im ie n to h a s ta e l m o m e n to , l o c u a l s e m u e s tra e n la F ig u ra 1 0 .11.
A s u m im o s q u e las p a la b ra s J e u n a Icira n o e s tá n p e rm itid a s (p u e s d e e s ta rlo se
c o n ta ría n o c h o v e c e s). E n las lin c a s 15 y 16. e x te n d e m o s la c a d e n a m ie n tra s c o m ­
p ro b a m o s q u e n«» re b a s a m o s lo s lím ite s d e la s o p a E n la lín e a IS a ñ a d im o s e l si­
g u ie n te c a rá c te r y e n las lin c a s 19 y 2 0 lle v a m o s a c a b o u n a b ú sq u e d a b in a ria . Si
la c a d e n a le íd a b asta e l m o m e n to n o e s u n p re fijo d e n in g u n a p a la b ra , p o d e m o s
p a ra r d e m ira r e n e s a d ire c c ió n . E n c a s o c o n tra rio , sa b e m o s q u e c o n tin u a re m o s I ¡vir el mejor
h a c ié n d o lo , tr a s c o m p ro b a r, e n la lin e a 2 6 . si y a se h a le íd o u n a p a la b ra d e la lista. resultado
L a lín e a 34 d e v u e lv e e l n ú m e ro d e p a la b ra s e n c o n tra d a s fin a lm e n te . E n la F ig u ­
ra 1 0.10 se m u e s tra u n p ro g ra m a m a l n sim p le. Usar el peor
resultado
1 / / maln sim ple
2 p u b l i c s t a t i c v o i d main< S t r i n g [ 3 args l

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 .

Figura 10.13 Dos búsquedas q u e llegan a estodos Idénticos


• H ay d e m a s ia d o s e sta d o s.
• L a id e a d e la p o d a a lfa -b e ta y d e la la b ia d e tra n sp o sic ió n e s re d u c ir los
I final clans Estado inplem ents Hashabl*
tie m p o s d e b ú s q u e d a e v ita n d o lla m a d a s lo m á s p ro n to p o s ib le e n e l juego:
3 int I ][ 1 tablero; a h o rra m o s u n a lla m a d a m u y p ro fu n d a e n la b ú s q u e d a n o re d u c e u n g ran n ú ­
4 in t valor; m e ro d e e s ta d o s a e x a m in a r y a q u e e n c u a lq u ie r c a s o d ic h a lla m a d a s o la ­
5 m e n te e x a m in a rá u n o s p o c o s e sta d o s
6 Estado( int elT ablero! 1[ J )
? / L a s F ig u ras 10.16 y 10.17 m u e s tra n e l n u e v o e l e g i r M o v i m i e n t o . E n la lí­
• t a b l e r o = n e w i n t [ J ] [ 3 1; n e a 8 d e c la ra m o s u n o b je to E s t a d o lla m a d o e s t a d o A c t u a l . E n su m o m e n to cs-
9 f o r l i n t i = 0; i < 3 ; i** I le o b je to s e c o lo c a rá e n la ta b la d e tra n sp o sic ió n . L a v a ria b le p r o f T a b l a n o s d irá
10 f o r ( in t j ■ 0; j < 3 j J** > la p ro fu n d id a d h a s ta la q u e p e rm itim o s g u a rd a r e s ta d o s e n la ta b la d e tra n s p o s i­
" tablero! i ][ j ] - elT ablero! i ][ j ).-
12 c ió n . E x p e rim e n ta n d o , a v e rig u a m o s q u e 5 e s un v a lo r ó p tim o . P e rm itir q u e se
13 g u a rd e n e s ta d o s e x a m in a d o s e n p r o f u n d i d a d 6 e s p e rju d ic ia l, d e b id o a q u e el
14 p u b lic booleanequalal O bjectld er ) c o s te e x tra q u e su p o n e m a n te n e r la ta b la d e tra n sp o sic ió n n o e s c o m p e n s a d o p o r el
15 ( m e n o r n u m e ro d e e sta d o s ex a m in a d o s.
16 f o r ( i n t i = 0 ; i < 3; )
L a s lín e a s 17 a 2 8 s o n n u e v a s . S i e s ta m o s e n la p rim e ra lla m a d a a
17 f o r l i n t j ■ 0; j < 3; J** I
e l e g í r M o v i m i e n t o , in ic ia li/a m o s la ta b la d e tra n s p o s ic ió n . E n c a s o c o n tr a n o . si
18 iCC t a b l e r o ! i 1 1 3 1 !=
'9 I(E stado)lder).tablero! i J[ j ] ) e s ta m o s e n u n a p ro fu n d id a d a p ro p ia d a , c o m p ro b a m o s si y a s e h a e v a lu a d o e l e s ta ­
20 return íalse; d o . y e n ta l c a s o d e s o lv e m o s su v a lo r E l c ó d ig o tie n e d o s tru c o s . E n p rim e r lu g ar,
21 return true; so la m e n te h e m o s d e b u s c a r e n la ta b la d e tra n sp o sic ió n s i p r o f u n d i d a d e s m a y o r
22
q u e 3 . c o m o s e o b s e rv a e n la F ig u ra 1 0 .13. L a o tra d ife re n c ia a p a re c e d e la línea
23
24 p u b lic int h a sh ( in ttamTabloro )
6 2 e n a d e la n te . In m e d ia ta m e n te a n te s d e d e v o lv e r e l re s u lta d o , a lm a c e n a m o s e l
25 v a lo r d e l e s ta d o e n la ta b la d e tra n sp o sic ió n .
26 int valorHash = 0; El u so d e la ta b la d e tra n sp o sic ió n e n e s te a lg o ritm o d e las tre s e n ra y a e lim in a
27
a lre d e d o r d e la m ita d d e lo s e s ta d o s a te n e r e n c u e n ta , c o n so la m e n te un p e q u e ñ o
28 f o r l i n t i = 0;i < 3; i** )
c o s te p a ra la s o p e ra c io n e s d e la ta b la d e tra n sp o sic ió n . E s to s ig n ific a q u e p rá c tic a ­
29 f o r l i n t j ■ 0; j < 3; ) • « )
30 valorH ash = valorHash * 4 * ta b le r o ! i ][ i 1;
m e n te se d o b la la v e lo c id a d d e l p ro g ra m a .
31
52 return valorH ash % taaTablero;
33 10.2.3 El ajedrez
34 1
Figura 10.14 C k»© E stad o . E n u n ju e g o c o m p le jo c o m o e l a je d re z o e l ju e g o G o . n o e s fa c tib le rec«*rrer to d o
e l c a m in o h asta lo s n o d o s te rm in a le s: a lg u n a s e s tim a c io n e s n o s d ic e n q u e hay
C o n tro la m o s la p ro f u n d id a d p o rq u e n o v a le la p e n a in c lu ir lo d o s lo s o s la ­ u n o s lO 100 e s ta d o s le g a le s e n e l a je d r e z , y n i to d o s lo s tr u c o s d e l m u n d o re d u c i­
d o s o n la la b ia d o tr a n s p o s ic ió n . L a s o b r e c a rg a do m a n te n e r la la b ia s u g ie re q u e rían e s ta c a n tid a d a u n n iv e l m a n e ja b le . E n e s te c a s o , te n e m o s q u e p a ra r la b ú s ­
lo s e s ta d o s c e r c a n o s a lo s c a s o s b a s e n o d e b e ría n g u a rd a r s e p o r la s s ig u ie n te s r a ­ q u e d a a p a rtir d e u n a c ie rta p ro fu n d id a d d e la re c u rs ió n . L o s n o d o s e n lo s q u e se
z o n e s: te rm in a la e x p lo ra c ió n se c o n v ie rte n e n i h k I o s te rm in a le s, lo s c u a le s se e v a lú a n
1 / / E n c u e n tra e l m ovim iento óptimo 48 if) l a d o == COMPUTADORA é.4 r e p l i c a . v a l o r > v a l o r
2 p r i v a t e Mejor e le g irM o v in ie n c o ) in n la d o , i n t a l f a , i n t b e ta . 49 ¡ | l a d o == HUMANO » re p lic a .v a lo r < valor )
3 int p r o f u n d i d a d ) 50
51 if) lado == COMPUTADORA )
4 <
5 in t op: / / E l oponente 52 a l f a = v a l o r = r e p l i c a . v a l o r ,-
6 Mejor r e p l i c a ; / / Mejor r é p l i c a d e l oponente 53 el*®
54 beta = valor = r e p lic a .v a lo r ;
7 int evalSinple; / / R esultado de una ev alu ac ió n inm ediata
8 E s t a d o e s t a d o A c t u a l ■ new E s t a d o ( t a b l e r o ); 55
56 m e j o r F i l a = f i l a ; mejorColurena = columna;
9 i n t p r o f T a b l a = 5 ; / / Má x i ma p r o f u n d i d a d a g u a r d a r
57 if) alfa >= b e t a )
10 i n t m e j o r F i l a = 0;
58 broak E x te rio r; l l R efutación
11 ir.t mejorColumna = 0;
59 J
12 ir.t v a lo r ;
60
13
61
14 if( ( evalSim ple = v a lo rE stad o l ) ) != INCIERTO > 62 II In se rta en la tab la de tran sp o sició n
15 r e t u r n new M e j o r l o v a l s i m p l e i ; 63 estad o A ctu al.v alo r ■ valor;
16 64 i f ) p r o f u n d i d a d <= p r o f T a b l a :
17 if) profundidad 0 ) 65 t r a n s p o s i c i ó n . i n s e r t a r ) e s t a d o A c t u a l I;
18 t r a n s p o s i c i ó n . v a c i a r ( I; 66
19 e i s e i f ) p r o f u n d i d a d >= 3 && p r o f u n d i d a d <= p r o f T a b l a ) 67 r e t u r n new M e j o r ) valor, m ejorFila, mejorCoiumna );
20
68 1
21 try
22 < Figura 10.17 Algoritm o d e las tres en ra y o c o n p o d a alfa- b eta y ta b la d e transposi
23 E stad o b u sc a V alo r = (Estado) ción (p arte 2).
24 tran sp o sic ió n .b u sc a r( estadoA ctual I;
25 r e t u r n new M e j o r ) b u s c a V a l o r . v a l o r ) ;
26 1 d a d d e la b ú sq u e d a so la m e n te un n iv e l, su p o n e u n in c re m e n to d e la v e lo c id a d de
27 c a tc h í ElementoNoEncontrado e M 1 /* Evaluado deba jo •/ p ro c e s a m ie n to d e u n fa c to r d e seis (p o rq u e e l n ú m e ro d e e s ta d o s s e in c re m e n ta en
28 u n fa c to r d e 3 6 ). C a d a n iv e l e x tra d e b ú sq u e d a re f u e rz a e n g ra n m a n e ra la h a b ili­
29
30 if) l a d o = ■ COMPUTADORA I d a d d e l p ro g ra m a s ó lo h asta u n c ie r to lím ite , q u e p a re c e h a b e r sid o y a a lc a n z a d o
31 p o r lo s m e jo re s p ro g ra m a s. F o r o tr a p a rte , lo s c o m p u ta d o re s n o so n ta n b u e n a s e n
32 o p ■ HUMANO; v a l o r - alia; ju e g o s p o sic io n a lc s m á s e s tá tic o s e n lo s q u e s e re q u ie re n e v a lu a c io n e s m á s su tiles
33 y un m a y o r c o n o c im ie n to d e l ju e g o . S in e m b a rg o , e s to s ó lo se p o n e e n e v id e n c ia
34 eise
c u a n d o e l c o m p u ta d o r e s tá c o m p itie n d o c o n un o p o n e n te m u y h á b il. Ia»s p o p u la ­
35 <
36 o p = COMPU7ADOFA; v a l o r = beta; re s p ro g ra m a s d e a je d re z so n h o y e n d ía m e jo re s q u e la m a y o ría d e lo s ju g a d o re s.
37 L n 1 9 9 7 . e l p ro g ra m a D e e p Hiñe, fu e c a p a z d e d e rro ta r a l c a m p e ó n d e ajed rez
38 e n u n e n c u e n tro d e se is p a rtid o s, u s a n d o u n a e n o rm e c a p a c id a d c o m p u ta c io n a l
39 E xterior: (e v a lu a n d o u n o s 2 0 0 m illo n es d e m o v im ie n to s p o r se g u n d o ).
40 for) in t f i l a = 0 ; f ila < 3 ; fila -» )
41 f o r ) i n t columna = 0 ; columna < 3 ; columna** )
42 i f i c a s i l l a V a c i a ( f i l a , columna ).)
43 Resumen
44 l u g a r ) f i l a , columna, lad o );
45 r e p l i c a = e le g irM o v im ie n to ) op, alfa, beta,
E ste c a p ítu lo h a p ro p o rc io n a d o u n a a p lic a c ió n d e la b ú s q u e d a b in a r ia y d e a lg u n a s
46 profundidad • 1 );
47 lugar) fila, columna, VACIA ) ; té c n ic a s a lg o rítm ic a s q u e so n u s a d a s h a b ilu a lm c n ie e n p ro g ra m a s d e ju e g o s c o m o
e l a je d r e z , las d a n ta s y O te lo . L o s m e jo re s p ro g ra m a s p a ra e s to s ju e g o s tie n e n el
Figura 10.16 Algoritm o d e los tres e n ra ya co n p o d a alta- b efa y ta b la d e transposi­ n iv e l d e lo s m e jo re s e x p e rto s e n e llo s. S in e m b a rg o , e l ju e g o Ció p a re c e s e r d e m a ­
ción (p o rte 1).
sia d o c o m p le jo p a ra s e r b ie n ju g a d o a b a s e d e b ú s q u e d a s p o r p a rte d e un c o m p u ta ­
d o r.
m e d ia n te u n a fu n c ió n q u e tra ta d e e s tim a r e l v a lo r del e sta d o . P o r e je m p lo , e n un
p ro g ra m a d e a je d re z , la fu n c ió n d e e v a lu a c ió n c a lc u la la c a n tid a d re la tiv a v fu e rza
d e las p ie z a s, a s í c o m o o tr o s fa c to re s re la c io n a d o s c o n la p o sic ió n
Elementos del juego
L o s c o m p u ta d o re s so n e s p e c ia lm e n te h á b ile s e n m o v im ie n to s q u e im p lican
p ro fu n d a s c o m b in a c io n e s q u e te rm in a n e n un in te rc a m b io d e m a te ria l, d e b id o a e s t r a te g ia m i n ím a x E s tra te g ia re c u rsiv a q u e p e rm ite a l c o m p u ta d o r se le c c io n a r
q u e e s s e n c illo e v a lu a r la fu e rz a d e la s p ie z a s. S in e m b a rg o , e x te n d e r la p ro fu n d i- u n m o v im ie n to ó p tim o e n e l ju e g o d e las tre s e n raya.
| mmI u a lfa -b e ta T é c n ic a u s a d a p a ra re d u c ir e l n ú m e ro d e estado-, e v a lu a d o s e n u n a
b) ¿ C u á l e s e l v a lo r d e l e sta d o ?
b ú sq u e d a m im m a x . A lfa e s e l v a lo r q u e e l h u m a n o h a d e re c h a z a r > h e la 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,
p o sició n te r m in a l P o sic ió n e n u n ju e g o q u e s e p u e d e e v a lu a r in m e d ia ta m e n te
re fu ta ció n M o v im ie n to d e l c o n tra rio q u e d e m u e s tra q u e e l m o v im ie n to o rig in a l
e n e x a m e n n o e s u n a m e jo ra d e o tr o s c o n s id e ra d o s p rev i á m e n le S i e n c o n tra ­
m o s u n a re fu ta c ió n , n o te n e m o s q u e e x a m in a r m á s m o v im ie n to s p o r d e b a jo
d e l n iv e l o rig in a l y las lla m a d a s re c u rs iv a s e n e je c u c ió n te rm in a n
•opa d e le tr a s P ro g ra m a q u e lle v a a c a b o la b ú sq u e d a d e p a la b ra s e n u n v e c to r
h id im e n s io n a l d e le tra s L a s p a la b ra s p u e d e n e s ta r o rie n ta d a s e n o c h o d ire c ­
ciones.
ta b la d e tra n sp o sició n T a b la h a sh q u e a lm a c e n a e s ta d o s p re v ia m e n te e v a lu a d o s.

Effores com unes


Figuro 10.18 Ejem plo d e p o d o alfa- b eta p o ra e l Ejercicio 10 2
1. C u a n d o u s e u n a ta b la d e tra n sp o sic ió n , lim ite e l n ú m e ro d e p o sic io n e s a l­
m a c e n a d a s p a ra e v ita r a g o la r la m e m o ria
2. E s im p o rta n te c o m p r o b a r q u e s e c u m p le n c a d a u n a d e n u e stra s su p o s ic io ­ Problemas teóricos
n e s P«»r e je m p lo , e n la s o p a d e le tra s , c o m p ru e b e q u e e l d ic c io n a rio está
o rd e n a d o . E s u n e rro r b a sta n te c o m ú n o lv id a r e s ta c o m p ro b a c ió n . 10 J . V c rifiq e q u e si x e s u n p r e f ijo d e a lg u n a p a la b ra d e u n v e c to r a . e n to n c e s x
e s u n p re fijo d e l a p a la b ra e n la q u e te rm in a la b ú sq u e d a b in aria
10.4. E x p liq u e c ó m o c a m b ia e l tie m p o d e e je c u c ió n d e l a lg o ritm o d e la b ú s q u e ­
En Internet d a d e p a la b ra s c u a n d o su c e d e lo sig u ien te:

<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 .

W o rd S r c h .ja v a C o n tie n e e l a lg o ritm o d e la so p a d e le tra s. S e h a tr a d u ­


c id o a q u í p o r B u s q u o d a P a l a b r a s . Problemas prácticos
B e s t j a va C o n tie n e la c la s e B e s t , tra d u c id a p o r M e j o r , q u e fo r­
m a p a n e d e l a lg o ritm o d e la s tr e s e n ray a 1 0 .6. E lim ine las restriccio n es im p u e sta s a l tam añ o d e la so p a d e letras y al del d ic ­
T k T a c T o e . ja v a C o n tie n e u n a c la s e T i c T a c T o e . tra d u c id a p o r T r e s - cio n ario. p resen tes e n la im p lem en tació n d e la c ía - : B u a q u e d a P a l a b r a s .
E n R a y a . U tiliz a la p<xla a lfa -b e ta y u n a ta b la d e tra n s­ 10 .7 . S u stitu y a la b ú s q u e d a b in aria p o r u n a se c u e n c ia l e n e l p ro b le m a d e la bus-
p o sició n . q u e d a d e p a la b ra s. ¿ C ó m o a fe c ta e s to a la e fic ie n c ia ’
T k T a r.M u in .ja v a C o n tie n e u n a sim p le in te rfa z g rá fic a d e u s u a rio p a ra 1 0 .8 . C o m p a re la e fic ie n c ia d e l a lg o ritm o d e b ú s q u e d a d e p a la b ra s c o n y s in la
la s tr e s e n raya. b ú sq u e d a p refijo.
1 0 .9 . Im p le m e n to u n a b u e n a in te rfa z g rá f ic a d e u s u a rio p a ra e l p ro g ra m a d e las
tre s e n ra y a . S u p ro g ra m a d e b e tra b a ja r c o m o u n a a p lic a c ió n y c o m o un
Ejercicios a p p let.
1 0 . 1 0 . U n p ro g ra m a p a ra la s tr e s e n ra y a s in in te rfa z g rá f ic a d e u s u a rio n e c e sita
C uestiones breves c ó d ig o a d ic io n a l p a ra le e r lo s m o v im ie n to s y m o s tra r e l ta b le ro E scrib a
u n a in te rfa z a m ig a b le al u su a rio .
1 0 .1 . ¿Q ué c o m p ro b a c io n e s d e e rr o r fa lta n e n la F ig u ra 10.7? 10 11. I n c lu s o c u a n d o e l c o m p u ta d o r tie n e u n m o v im ie n to q u e p r o p o r c io n a u n a
10 .2 . P a ra la situ a c ió n p re s e n ta d a e n la F ig u ra 10 .18 . d ete rm in e : v ic to r ia in m e d ia ta , p u e d e q u e n o lo re a lic e s . d e te c ta q u e o tr o m o v im ie n ­
to ta m b ié n le lle v a rá a g a n a r . A lg u n o s d e lo s p r im e r o s p ro g ra m a s d e a j e ­
a) ¿ C u a l d e la s re s p u e s ta s a l m o v im ie n to C 2 e s u n a re fu ta c ió n ?
d re z te n ía n e l p ro b le m a d e q u e e n tr a b a n e n u n a re p e tic ió n d e e s ta d o
c u a n d o d e le c ta b a n u n a v ic to ria s e g u r a , p e rm itie n d o a l c o n tr a r io p r o c la ­ C A P Í T U L 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 ?

L as p ila s se u tiliz a n m u y a m e n u d o e n lo s c o m p ila d o re s. E ste c a p ítu lo p re s e n ­


Prácticos de program ación ta d o s c o m p o n e n te s s im p le s d e u n c o m p ila d o r u n a n a liz a d o r s in tá c tic o d e
sím b o lo s e q u ilib ra d o s y u n a c a lc u la d o ra se n c illa . E l o b je tiv o c o n siste e n
10.15. E scrib a un p ro g ra m a p a ra ju g a r a las c u a tr o e n ra y a e n u n ta b le ro d e c in c o p re s e n ta r a lg o ritm o s s im p le s q u e u tilic e n p ila s p a ra , a tra v é s d e e llo s, v e r c ó m o se
p o r c in c o . ¿ P u e d e re a liz a r la b ú sq u e d a h a s ta lo s n o d o s te rm in a le s? u tiliz a n las e s tru c tu ra s d e d a to s d e s c rita s e n e l C a p ítu lo 6.
10.16. El ju e g o d e l b o g g le c o n s is te e n u n a m a triz d e le tra s y u n a lista d e p alab ras. E n e s te c a p ítu lo v erem o s:
1:1 o b je tiv o e s e n c o n tr a r p a la b ra s e n la m a triz c o n la re s tric c ió n d e q u e d o s • C ó m o u tiliz a r u n a p ila p a ra c o m p r o b a r si lo s sím b o lo s d e u n a e x p re s ió n e s ­
le tra s s e g u id a s e n la s p a la b ra s d e b e n e s ta r a d y a c e n te s e n la m a triz (es tá n e q u ilib rad o s.
d e c ir, h a c ia e l n o rte , su r. e s te u o e ste ) v d e q u e c a d a letra d e la m a triz só lo • C ó m o u tiliz a r u n a m á q u in a d e e s ta d o s p a ra h a c e r e l a n á lisis s in tá c tic o d e
se p u e d e usar una v ez p o r p alab ra. E sc rib a u n p ro g ra m a p a ra ju g a r a l b oggle sím b o lo s e q u ilib ra d o s.
10.17. E scrib a un p ro g ra m a p a ra ju g a r a M A X IT . E l ta b le ro e s u n a m a triz N * X • C ó m o u sa r u n a n álisis sin tá c tic o c o n p re c e d e n c ia d e o p e ra d o re s p a ra ev alu a r
ile n ú m e ro s c o lo c a d o s a le a to ria m e n te a l p rin c ip io d e l ju e g o . S e d e sig n a e x p re sio n e s in fija s e n un p ro g ra m a q u e im p le m e n te u n a c a lc u la d o ra sencilla.
u n a p o sic ió n c o m o p o sic ió n in ic ia l a c tu a l. D o s ju g a d o r e s s e \ a n a lte rn a n ­
d o . E n c a d a tu m o , u n ju g a d o r d e b e s e le c c io n a r u n e le m e n to d e la m a triz en
la tila o c o lu m n a a c tu a le s . E l v a lo r d e la p o sic ió n se le c c io n a d a s e s u m a a 11.1 Analizador d e símbolos equilibrados
la p u n tu a c ió n del ju g a d o r , y d ic h a p o s ic ió n s e c o n v ie rte e n la a c tu a l y no
se p u e d e e le g ir d e n u e v o . L o s ju g a d o r e s s e a lte rn a n h a s ta q u e s e h a n s e le c ­
C o m o s e d is c u tió e n la S e c c ió n 6 .2 . lo s c o m p ila d o re s c o m p ru e b a n lo s p ro g ra m a s
c io n a d o to d o s lo s e le m e n to s d e la tila y c o lu m n a a c tu a le s , e n c u y o m o ­
m e n to te rm in a e l ju e g o g a n a n d o e l ju g a d o r c o n la m a y o r p u n tu a ció n . b u sc a n d o e rro re s sin tá c tic o s. S in e m b a rg o , e n o c a s io n e s la falta d e un sím b o lo
(c o m o la fa lta d e u n A n a liz a d o r d e c o m e n ta rio * / o ) ) p u e d e c a u s a r q u e e l c o m p i­
1 0 .1 8 . O te lo ju g a d o s o b re u n ta b le ro d e 6 p o r 6 c o n d u c e a v ic to ria se g u ra a las
la d o r d e sp a rra m e c ie n to s d e lín e a s d e e rr o re s s in lleg ar a id e n tific a r e l e rr o r real.
fic h a s n eg ras. D e m u e s tre e s to e s c r ib ie n d o u n p ro g ra m a . ¿ C u á l e s la p u n ­
tu a c ió n fin al si lo s d o s ju g a d o r e s ju e g a n d e fo rm a ó p tim a ? U n a h e rra m ie n ta útil p a ra a y u d a r a la d e p u ra c ió n d e m e n s a je s d e e rr o r d e l c o m p i­
la d o r e s u n p ro g ra m a q u e c o m p ru e b e si lo s sím b o lo s e s tá n e q u ilib ra d o s . E n o tra s
p a la b ra s, to d a ( d e b e te n e r a s o c ia d a u n a ) . to d o [ u n 1, y a s í s u c e s iv a m e n te . S in
e m b a rg o , c o n ta r s im p le m e n te e l n ú m e ro d e a p a ric io n e s d e c a d a s ím b o lo n o e s s u ­
Bibliografía
ficie n te. P o r e je m p lo , la s e c u e n c ia [ O I e s c o rre c ta , p e ro ( ( ] ) n o lo es.

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 )

Finurn 11 A i 1i é>I nlOAfitmn nrinrinnl


/ / Im prime un m e n s a j e d e e r r o r s i s i m A p e r n o c a s a c o n s im F in .
11.2 Una c a lc u la d o ra sencilla
II A ctualiza los e rro re s.
p r í v a t e v o i d c oic probarP are ja I Símbolo sin A p e r. Sím bolo slmPiri I A lg u n a s d e las té c n ic a s u tiliz a d a s e n e l d is e ñ o d e c o m p ila d o re s p u e d e n u tiliz a rse a
p e q u e ñ a e s c a la e n la im p le m e n ta c ió n d e u n a c a lc u la d o ra d e b o ls illo típ ic a .
itl a im A p e r - t o k e n ** * <’ uu s i m F i n . t o k e n •= • ) ' | | c a lc u la d o ra s e v a lú a n e x p re s io n e s in fija s. c o m o 1 * 2 . q u e c o n s is te n e n un o p e ra d o r
s i m A p e r . t o k e n = = ' [ ' UU s i m F i n . t o k e n != • ) ' || b in a rio ju n t o c o n a rg u m e n to s a su iz q u ie rd a y a su d e re c h a E s te fo rm a to , b a sta n te
aim A per.token • • • { ' t. u s i m F i n . t o k e n •* ')• ) fá c il d e e v a lu a r e n u n p rin c ip io , p u e d e h a c e rs e m á s c o m p le jo . C o n sid e re la e x p re ­
< sión
S y s te m .o u t.p rin tln » "Encontrado * • simAper. token •
’ e n l a l í n e a " • l i n e a A c t u a l *■; n o c a s a c o n * *
1*2*3
BimFin. t o k e n * * en la lin e a * » s in A p e r. l a L i r i e a |;
e r r o r e s * *;
M a te m á tic a m e n te , la e x p re s ió n se e v a lú a a 7 , p o rq u e e l o p e ra d o r d e m u ltip li­
c a c ió n tie n e m a y o r p re c e d e n c ia q u e la su m a. S in e m b a rg o , a lg u n a s ca lc u la d o ra s
d a ría n c o m o re s p u e s ta 9. F.sto ilu stra q u e u n a sim p le e v a lu a c ió n d e iz q u ie rd a a d e ­
Figuro 11.9 Rutina c o m p r o b a r P a r e j a . p a ra com p rob ar q u e e l sím bolo d e term i­ re c h a n o e s su fic ie n te . N o p o d e m o s e m p e z a r e v a lu a n d o l > 2 . C o n sid e re ta m b ié n
n ació n c a s o c o n e l sím bolo d e apertura la s e x p re sio n e s

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

d o se a p ila d e n ú es o e n la p ila . P a ra o p e ra d o re s b in a rio s , q u e s o n los m á s c o n tu ­ 1 2 4 5


n e s. d o s o p e ra n d o s so n d e sa p ila d o s. C u a n d o la e x p re s ió n p o stfija c o m p le ta lia sid o
p ro c e s a d a , e l re s u lta d o d e b e ría s e r e l ú n ic o e le m e n to e n la p ila , lu í n o ta c ió n p o st-
Fija e s u n a fo rm a n atu ral d e e v a lu a r e x p re s io n e s p u e s c o n e lla n o so n n e c e s a ria s
re g la s d e p re c e d e n c ia . 3 7
6
P re s e n ta m o s a c o n tin u a c ió n u n e je m p lo se n c illo . C o n s id e r e m o s la e x p re s ió n 1.1124 1.024 3.072 3.072 18.432 18 432
p o stfija -1 -1 -1 -1 -I -1

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

lu í fig u r a l i l i m u e s tra lo s p a so s u tiliz a d o s p o r la m á q u in a p o stfija p a ra e v a lu a r­


1 2 3 4 " * -
la. C a d a p a s o in v o lu c ra u n a p ila m ie n to . P o r ta n to , y a q u e hay 9 o p e ra n d o s y 8
o p e ra d o re s, hay 17 p a s o s y 17 a p ila m ie n to s . C la ra m e n te , e l tie m p o n e c e sa rio p ara
o b se rv a n to s q u e e n o c a s io n e s lo s o p e ra d o re s p u e d e n a p a re c e r e n o rd e n in v e rso a
e v a lu a r u n a e x p re s ió n p o stfija e s lin eal.
c o m o a p a re c ía n e n la e x p re s ió n in fija . P o r su p u e s to , e s to s ó lo e s c ie r to si la p re c e ­
E l p u n to q u e fa lta p o r e s tu d ia r e s u n a lg o ritm o q u e c o m ie d a n o ta c ió n in fija en
d e n c ia d e lo s o p e ra d o r e s in v o lu c ra d o s c re c e a l ir d e iz q u ie rd a a d e re c h a . A ú n así.
n o ta ció n p o stfija . I n a v e z te n g a m o s u n o . te n d re m o s u n a lg o ritm o p a ra e v a lu a r e x ­
e l h e c h o c o m e n ta d o s u g ie re q u e u n a p ila e s la e s tru c tu ra a p ro p ia d a p a ra a lm a c e n a r
p re s io n e s infijos.
lo s o p e ra d o re s p e n d ie n te s. S ig u ie n d o e s ta ló g ic a , c u a n d o e n c o n tra m o s u n o p e ra ­
d o r. d e b e se r c o lo c a d o d e a lg u n a m a n e ra e n la p ila . El re s to d e l a lg o r itm o tie n e
q u e v e r c o n c u á n d o lo s o p e ra d o re s e n tr a n y s a le n d e la pila.
11.2.2 Conversión d e notación infija a postfija C o n sid e ra m o s a h o ra o tr a e x p re s ió n in fija m á s sim p le:

El p rin c ip io b á s ic o in v o lu c ra d o e n e l a lg o ritm o d e a n á lis is s in tá c tic o J e e x p r e s io ­


n e s r o n p r e c e d e n c ia e n tr e o p e r a d o r e s , q u e c o n v ie rte u n a e x p re s ió n in fija e n u n a
p o s tfija , ex e l sig u ie n te . C u a n d o s e e n c u e n tra u n o p e ra n d o , p o d e m o s p a sa rlo in m e ­ C u a n d o a lc a n z a m o s e l o p e ra d o r e l 2 y e l 5 s e h a n in c o rp o ra d o y a a la salid a,
d ia ta m e n te a la s a lid a . S in e m b a rg o , c u a n d o e n c o n tra m o s u n o p e ra d o r, n o p e l e ­ y ' e s tá e n la pila. Y a q u e - tie n e m e n o r p re c e d e n c ia q u e ‘ . A tie n e q u e a p lic a rs e 0
m os p a s a rlo to d a v ía a la s a lid a , p u e s a l e fe c to d e b e m o s e s p e r a r a e n c o n tr a r s u sc - a l 2 y a l 5. P o r lo q u e d e b e m o s d e s a p ila r * y. e n g e n e ra l, c u a lq u ie r o tro o p e ra d o r
que hubiese en la c im a de la p ila con m a yo r precedencia que -. E n consecuencia,
la exp resión resultante p o stfija es P re s e n ta m o s a h o ra u n re s u m e n d e lo s d ife re n te s c a s o s d e l a lg o ritm o d e a n á li­
s is sin tá c tic o 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. T o d o lo q u e s e dcsa-
2 5 * 1 - p ila e s m o s tra d o e n la sa lid a , a e x c e p c ió n d e los p a rén tesis.

• 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

C o m o e je m p lo , la F ig u ra 1 1 1 2 m u e s tra c ó m o e l a lg o ritm o p ro c e s a la e x p resió n


C u a n d o se a lc a n z a e l o p e ra d o r " . e l 3 y e l 2 h a n sid o in c o rp o ra d o s a la sa lid a , y
e l * e s tá e n la pila. Y a q u e " tie n e m a y o r p re c e d e n c ia q u e * . n o s e d e s a p ila n ad a,
1 -2 “ 3 ' 3 - <4*5*6) *7
a p ilá n d o se e n c im a e l “. I ra s e llo , e l 5 se m u e s tra in m e d ia ta m e n te , p ara lu e g o e n ­
c o n tra m o s c o n e l L a s re g la s d e p re c e d e n c ia n o s d ic e n q u e d e s a p ile m o s e l ' . s e ­
D e b a jo d e c a d a p ila se m u e s tra e l sím b o lo le íd o A la d e re c h a , e n n eg rita, s e m u e s­
g u id o d e l *. Ein e s te p u n to , n o h a y n a d a m á s q u e d c sa p ila r. p o r lo q u e d e ja m o s d e
tra e l e s ta d o d e la salida
h a c e rlo , a p ila n d o e l D e sp u é s in c o rp o ra m o s a la sa lid a e l 1 . C u a n d o s e a lc a n za
e l fin al d e la e x p re s ió n , s e d e b e n s a c a r e l re s to d e lo s o p e ra d o re s e n la p ila . L a
e x p re s ió n p o s tfija re s u lta n te es
11.2.3 Im plem entación
3 2 5 * ' l -
C o n ta m o s a h o ra c o n e l fu n d am en to te ó ric o n e c e sa rio p a ra im p le m c n ta r u n a c a lc u la ­
d o ra sim p le. N u e stra c a lc u la d o ra so p o rta rá su m a s, re s ta s, m u ltip licacio n es, d iv isio ­
A n te s d e re s u m ir e l a lg o ritm o , d e b e n re s p o n d e rse a lg u n a s p re g u n ta s. E n p ri­
n e s y e x p o n en e i acio n e s. D esarro llarem o s u n a c la s e d e n o m in a d a E v a l u a d o r . H a re ­
m e r lu g ar, si e l s ím b o lo a c tu a l e s u n * y la c im a d e la p ila e s un *. ¿ d e b e ría d e s a ­
m o s a n te s u n a h ip ó te sis sim p lific a d o ra : no s e p e rm itirá n n ú m e ro s n eg a tiv o s. La
p ila rse e l * d e la p ila, o d e b e ría q u e d a rs e a h í? L a re s p u e s ta s e o b tie n e d e c id ie n d o
si e l • e n c o n tra d o e n la e n tra d a n o s in d ic a q u e e l • d e la p ila c u e n ta y a c o n su s
Inti a: 1 - 2 * 3 " 3 - ( 4 * 5 * 6 < *
o p e ra n d o s . Y a q u e e l * a s o c ia d e iz q u ie rd a a d e re c h a , la re s p u e s ta e s a firm a tiv a .
S in e m b a rg o , si s e tr a ta r a d e l o p e ra d o r \ q u e a so c ia d e d e re c h a a iz q u ie rd a , la re s­
p u e s ta s e r ía n e g a tiv a . P o r ta n to , c u a n d o n o s to p a m o s c o n d o s o p e ra d o re s d e igual A
1 2 3
p re c e d e n c ia , h a y q u e e x a m in a r la s n o rm a s d e a s o c ia tiv id a d p a ra d e c id ir c o rre c ta ­
m e n te . c o m o m u e s tra n lo s sig u ie n te s e je m p lo s: - - - - *

l - 2 3

Expresión Infijo Explosión postfijo A sociativid ad

2*3*4 2 3 * 4 * A so ciativid ad por la Izquier­


d a e l * e n la e n tra d a es AA_ • ■* 5
3 4
m enor q u e el - d e lo pila < 1 t l

2 ' 3 ' 4 2 3 4 " " A so ciativid ad por la aere- » 5


3 - 1 4
c h a e l ‘ e n la e n tra d a es
m avor q u e e l ' d e lo pila.

é •
¿ 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

c h o e n la e n tra d a , d e s a p ila re m o s h asta e n c o n tra 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 A - _ 5 6 * * * -


q u ie rd o . P o r o tra p a rle , e n la s a lid a n o a p a re c e n p a ré n te sis.
Cknn.n I I 1*1 i'-'.-»-.! inrririn rio nrlnrlíK/v rVKfrfiln
que hubiese en la c im a de la p ila con m a yo r precedencia que E n consecuencia,
la exp resión resultante p o s ifija es P re s e n ta m o s a h o ra un re s u m e n d e lo s d ife re n te s c a s o s d e l a lg o ritm o d e a n á li­
s is s in tá c tic o 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. T o d o lo q u e s e dcsa-
2 5 * 1 - p ila e s m o s tra d o e n la s a lid a , a e x c e p c ió n d e lo s p a ré n te sis.

• 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.

C o m o e je m p lo , la F ig u ra 11.12 m u e s tra c ó m o e l a lg o ritm o p ro c e sa la e x p resió n


C u a n d o se a lc a n z a e l o p e ra d o r * . e l 3 y e l 2 h a n s id o in c o rp o ra d o s a la salid a , y
e l * e s tá e n la p ila . Y a q u e * tie n e m a y o r p re c e d e n c ia q u e *. n o s e d e sa p ila n a d a ,
1 -2 * 3 * 3 - (•1*5*6) *7
a p ilá n d o se e n c im a e l *. T r a s e llo , e l 5 se m u e s tra in m e d ia ta m e n te , p a ra lu e g o e n ­
c o n tr a m o s c o n e l I-as re g la s d e p re c e d e n c ia n o s d ic e n q u e d e s a p ilc m o s e l ' . s e ­
D e b a jo d e c ad a pila s e m u estra e l sím b o lo leído. A la d e re c h a , e n n eg rita, se m u e s ­
g u id o d e l v E n e s te p u n to , n o h a y n a d a m á s q u e d e s a p ila r, p o r lo q u e d e ja m o s d e
tra e l e stad o d e la salida.
h a c e rlo , a p ila n d o e l - D e sp u é s in c o rp o ra m o s a la s a lid a e l 1 . C u a n d o s e a lc a n z a
e l fin al d e la e x p re s ió n , s e d e b e n s a c a r e l re s to d e lo s o p e ra d o re s e n la p ila . L a
e x p re s ió n p o stfija re s u lta n te e s
11.2.3 Im plem entación
3 2 5 * * 1 -
C o n ta m o s ah o ra c o n e l fu n d a m e n to te ó ric o n e c e sa rio p a ra im p le m e n ta r u n a c a lc u la - i<
d o ra sim p le. N u e stra c a lc u la d o ra so p o rta rá su m a s, restas, m u ltip licacio n es, d iv isio ­
A n te s d e re s u m ir e l a lg o ritm o , d e b e n re sp o n d e rse a lg u n a s p re g u n ta s. E n p ri­
n es y e x p o n e n c ia c io n c s. D esa rro lla re m o s una c la s e d e n o m in a d a E v a l u a d o r . H are­
m er lu g a r, m e l s ím b o lo a c tu a l e s u n -* y la c im a d e la p ila e s u n *. ¿ d e b e ría d e s a ­
m o s a n te s una h ip ó te sis sim p lific a d o ra : n o s e p e rm itirá n n ú m ero s n eg ativ o s. L a
p ila rse e l * d e la p ila , o d e b e ría q u e d a rs e a llí? L a re s p u e sta s e o b tie n e d e c id ie n d o
si e l • e n c o n tr a d o e n la e n tra d a n o s in d ic a q u e e l • d e la p ila c u e n ta y a c o n su s
ln t ,a: - 2 * i * 3 - ( 4 * 5 * 6 ) •
o p e ra n d o s . Y a q u e e l * a so c ia d e iz q u ie rd a a d e re c h a , la re s p u e sta e s afirm a tiv a .
S in e m b a rg o , si se tra ta ra d e l o p e ra d o r “. q u e a so c ia d e d e re c h a a iz q u ie rd a , la re s ­
p u e s ta s e r ía n e g a tiv a . P o r ta n to , c u a n d o n o s to p a m o s c o n d o s o p e ra d o re s d e ig u al -
1 2 3
p re c e d e n c ia , hay q u e e x a m in a r la s n o rm a s d e a so c iu tiv id a d p a ra d e c id ir c o rre c ta ­ *
m e n te . c o m o m u e s tra n lo s sig u ie n te s e je m p lo s :
1 - 2 3 *

Expresión Infijo Expresión postfijo A soclatlvidad

2*3*4 2 3 * 4 * A s o o a tlvid a d por la Izquier­


d a : e l * e n la e o fro d a es »*. * *
a 3 4
m enor q u e e l - d e la pila ( < (

2 “ 3 * 4 2 3 4 * * A so o o tivid a d por la dere­


3 - ( 4 • 5
c h a e l ' e n la e n tra d a es
m ayor q u e e l * d e )a pilo


¿ 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 * * • -

q u ie rd o . P o r o tra p a rte , e n la sa lid a n o a p a re c e n p a ré n te sis.


d istin c ió n e n tre e l o p e ra d o r m e n o s b in a rio y e l m e n o s u n a rio re q u ie re un trab a jo e x ­ p rim era p ila se u tiliza p a ra e v a lu a r la e x p re s ió n in fija y g e n e ra r la e x p re s ió n p o stfi-
tra e n la ra tin a d e an álisis. T a m b ié n c o m p lic a la s c o sa s, a l d e b e r s e r tra ta d o c o m o ja . E s la p ila d e o p e ra d o re s d e c la ra d a e n la lín e a 3 8 . E n v ez d e m o stra r d irectam en te
u n o p e ra d o r q u e n o e s b in a rio , lis c ie rto q u e la in c o rp o ra c ió n d e o p e ra d o re s ú n a n o s p o r la sa lid a la e x p re s ió n p o stfija , m an d am o s c a d a sím b o lo a la m á q u in a postfija,
n o e s d e m a s ia d o d ifíc il: sin e m b a rg o , e l c ó d ig o e x tra n o ilu stra nin g ú n co n c ep to se g ú n se van g en eran d o . N ecesitam o s, p o r ta n to , u n a s e g u n d a p ila, q u e a lm a c e n a
n u e v o , p o r lo q u e se d e ja c o m o e jercicio . o p eran d o s. É sta e s la p ila d e la m á q u in a p o stfija, d e c la ra d a e n la línea 39. O b serv e
L a F ig u ra 1 1.13 m u estra e l e sq u e le to d e la c la s e E v a l u a d o r , u tiliz a d a p a ra leer q u e si n o tu v ié ra m o s u n m e c a n ism o d e p ro g ra m a c ió n g e n é ric a , te n d ría m o s p ro b le­
una c a d e n a d e la en trad a. Ll a lg o ritm o b á s ic o d e e v a lu a c ió n req u ie re d o s p ila s. L a m as. p u es las d o s p ila s a lm a c e n a n e le m e n to s d e d ife re n te tipo. L a F ig u ra 11.14 c o n ­
1 // C lase Evaluador: evalúa expresiones i n f ij a s tie n e d o s m é to d o s p a ra a c c e d e r a las d o s p ilas, y re a liz a r las c o n v e rsio n e s d e tipos
2 // n e c e sa ria s. El re s to d e a trib u to s s o n un o b je to d e la c la s e S t r i n g T o k e n i z e r u tili­
3 // CONSTRUCCIÓN: c o n u n v a l o r d e t i p o S t r i n g z a d o p a ra re c o rre r la e n tra d a , y atrib u to s p a ra a lm a c e n a r e l to k e n a c tu a l y. c u a n d o el
5 // . . . . . . . . . . . . . . . . . . . . OPERACIONES PÚBLICAS* ................... .. to k e n e s u n o p e ra n d o , e l v a lo r d e l o perando.
6 / / long o b te n e rV a lo r < ) --> Devuelve e l v a lo r de una e x p re sió n i n f i ja L a s lín e a s d e la 17 a la 2 5 g e n e ra n u n a se rie d e c o n sta n te s. E l co n stru cto r, m o s­
7 // « E R R O R E S • tra d o e n las lín e a s d e la 2 7 a la 3 3 . c o n stru y e las d o s p ila s y e l o b je to d e la clase
8 / / Se r e a l i z a a l g u n a c o m p r o b a c i ó n d e e r r o r e s S t r i n g T o k e n i z e r . L o s p a rá m e tro s p a ra re a liz a r la d iv isió n e n to k e n s in d ican los
9
sím b o lo s c o n sid e ra d o s c o m o d clim ita d o re s. In d ican ta m b ié n q u e e sto s d elim itad o res
10 im port E structurasD atos.*;
11 import Excepciones.*; so n to k e n s q u e d e b e n tratarse (e n v ez d e m e ro s d e lim ita d o re s q u e se s a lta n )1.
12 im port java.io.*; El ú n ic o m é to d o v isib le p ú b lic a m e n te e s o b t e n e r V a l o r . M o stra d o e n la F ig u ­
13 im port j a v a . ú t i l . S t r i n g T o k e n i z e r ,- ra 11.15, o b t e n e r V a l o r le e re p e tid a m e n te u n to k en y lo p ro c e sa h a s ta q u e d etecta
14
15 public c la ss Evaluador e l final d e línea. E n e s e m o m en to , e l e le m e n to e n la c im a d e la pila e s la respu esta,
16 { lu í F ig u ra 1 1.16 m u e s tra la ra tin a o b t e n e r T o k e n . C o m e n z a m o s sa lta n d o to d o s los
17 static final int EOL = 0; b la n c o s (lla m a n d o recu rsiv u m cn te a o b t e n e r T o k e n ) . S i n o h e m o s a lc a n z a d o e l fi­
18 static final int VALOR = 1;
nal d e la lín ea, c o m p ro b a m o s si te n e m o s a lg u n o d e lo s o p e ra d o re s d e u n c a rá c te r, y
19 static final int PAREN_A = 2 ;
20 static final int PAREN_C = 3; si e s a sí. d e v o lv e m o s e l to k en a p ro p ia d o . E n o tro c a so , se a lc a n z a la lín e a 2 4 . y c o ­
21 S t a t i c final int EXP = 4; m o q u ie ra q u e e sp e ra m o s q u e lo q u e te n g a m o s s e a u n o p e ra n d o , lo in tro d u cim o s e n
22 s ta tic final int MULT = 5;
valorA ctual.
23 s ta tic final int DI V = 6;
24 s ta tic final int MAS - 7;
25 s ta tic final int MENOS = 8; 1 /* *
26
2 * Método i n t e r n o q u e o c u l t a la conversión de tip o s.
27 p u b lic Evaluador! S trin g s )
28 { 3 •/
29 pilaO per - new P i l a V e c ! ) ; 4 p r i v a t e long c im a Y D e sa p ila rP o stfi j a I ) throw s
30 p i l a P o s t f i j a = new P i l a V e c ! ) ; D esbordam ientolníerior
31 e n t r a d a = n e w S t r i n g T o k e n i z e r ! s . " ♦ * - / * ' (> " , true I; 5 (
32 p i l a O p e r . a p i l a r ( n e w I n t e g e r ( EOL ) ) ; 6 return ( (Long) ( pilaPostfija.cim aY D esapilarI ) ) ).
33 ) 7 longValue! );
34
35 p u b lic long obtenerV alor! ) 8 )
36 {/* Figura 11.15 */ ) 9
37 10 /■ •
38 p riv a te P ila pilaO per; //
Pila de operadores para la 11 * O tro método i n te r n o que o c u l t a l a c o n v e rs ió n de t i p o s .
conversión
12 •/
39 p r i v a t e P ila p i l a P o s t f i j a ; / / P i l a p a ra l a máquina p o s t f i j a
13 private i n t c im a P ila O p e r( ) throws D esb o rd a m ie n to ln íerio r
40 StringTokenizer entrada; / / La c a d e n a d e c a r a c t e r e s
41 long v a lo rA c tu a l; / / Operando a c tu a l 14 <
42 i n t ultim oToken; / / Últim o token le íd o 15 return ( (Integer) < p i l a O p e r .c i m a ( ) ) ).intvalue( );
16 1
44 p riv a te i n t obtenerToken| )
45 {/ • F igura 11.16 */ 1
Figura 11.14 M étodos internos p a ra o cu ltar la conversión d e tipos e n ios pilas g e n é ­
46 p r i v a t e v o i d o p B i n a r i o ! i n t opCíma )
47 { /* F i g u r a 1 1 . 1 8 * / ) ricas
48 p riv a te void procesarToken( )
49 ( /* Figura 11.20 */ )
50 )

Figura 11.13 E sq u eleto d e la c la s e E v a l u a d o r . 1 E l A p c n d h - e C . 3 .2 ü c M i i h c c o n m á s d c u l l c l a c l a s e S t r i n g T o k e n l r e r .


L a s F ig u ra s 11.17 y 11.18 m u e s tra n las ru tin a s n e c e s a ria s p a ra im p lc m c n ta r la
1 /•• m á q u in a p o s tfija . o b t e n e r C im a d e v u e lv e y e lim in a e l e le m e n to d e la c im a d e la
2 • R u t i n a p ú b l i c a q u e r e a l i z a la e v a l u a c i ó n . E x a m i n a l a
3 • m áqu in a p o o t í i j a p a r a v e r s i a p a r e c e un ú n i c o r e o u l t a d o . p ila p o stfija . L a ru tin a o p B i n a r i o a p lic a o p C im a (q u e s e e s p e r a s e a e l e lc m c n io
4 • y s i e s a s í. lo devuelve; er. o t r o c a s o , s e p r o d u c e u n e r r o r . d e la c im a d e la p ila d e o p e ra d o re s) a lo s d o s e le m e n to s d e la c in ta d e la p ila p o st­
5 •/
6 p u b lic long o b te n e rV a lo r( ) fija y lo s re e m p la z a p o r e l re s u lta d o o b te n id o . T a m b ié n d e s a p ila d e la p ila d e o p e ­
7 { ra d o re s . d a d o q u e se h a c o m p le ta d o e l p ro c e s a m ie n to d e o p C im a .
8 long elP csu ltad o * 0:
9 1 /•
10 do 2 •c im a Y D e s a p i1 a r d e l a p i l a d e l a m áquin a p o s t f i j a ; d e v u e lv e e l
11 < 3 * r e s u lt a d o . S i l a p i l a e s t á v a c i a , n o g e n e r a un e r r o r .
12 u l t i n o T o k e r . = o b te n e r T o k e n I ); 4 •/
13 p r o c e s a r T o k e n I ); 5 p r ív a t e lo n g o b t e n e rC im a ( )
14 ) w h i l e ) u l t í m o T o k e n ! • EOL ) ; 6 {
15 7 try
16 try 8 ( r e t u r n c i m a Y D o s a p íl a r P o s t f ija ( ) : )
1 elR esultado = cim aY D esapiiarPoatfija( I; ) 9 c a t c h í D e s b o r d a m ie n t o ln f e r io r e )
18 catch) D esbordam ientolnferior e » 10 ( S y s t e m . e r r . p r in t l n ) " F a l t a un o p era n d o " » : }
19 ( 11 r e t u r n 0:
20 System . e r r . p r i n t l n ) ' ¡ F a l t a uno p e r a n d o ! ’ i; 12 )
21 r e t u r n 0:
22 ) F i g u r a 11. 17 Rufina o b t e n e r C i m a . q u e d e vu elve e l elem ento en la cim a d e la p i­
23
la postfijo y lo elim ina
24 if( ipilaP ostfija.esV acla< > >
25 System .err.printinl 'A v iso : ¡ a l t a unoperador I ' );
26 1 /• •
27 re tu rn elR euultado; 2 • P r o c e s a un o p e r a d o r tomando d o s e l e m e n t o » d e i a p i l a
28 ) 3 • p o s t f i ja , aplicando el operador, y apilando e l resu ltad o .
4 • i m p r i m e u n e r r o r s i f a l t a n p a r é n t e s i s d e r e c h o s o s e d i v i d e p o r 0.
Figura 11.15 Rutina o b t e n e r V a lo r . p o ra leer y procesar tokens y devolver e l el- 5 •/
m entó e n la cim a d e la pilo 6 p rív a te void opB inario< in t opCima )
7 (
1 8 ifl o p C i m a «= PARKN_A )
2 E n c u e n tr a e l s ig u ie n t e to k e n , s a lt a n d o b la n c o s , y l o d e v u e lv e . 9 (
3 P a ra un to k e n VALOR, c o lo c a e l v a l o r en v a lo r A c t u a i. 10 S y s te m .e r r .p r i n t in l " P a ré n te s is d e se q u ilib rad o » * );
4 Im p rim e un m e n s a je de e r r o r s i no s e re c o n o c e l a e n t r a d a . 11 try
5 12 ( pilaO per.desapilar( ); )
6 p r í v a t e in t obtenerTokenl ) 13 c a t c h ( D e s b o r d a m i e n t o l n f e r i o r o 1 ( ) / / No p u e d e o c u r r i r
7 ( 14 return;
8 S t r i n g a « *"j 15 )
9 16 long ld e r ■ obtenerCimaI ):
10 try 17 long l i z q = obtenerCima! ):
11 ( s • entrada.nextTokenl ); ) 18
12 c a tc h í java.útil.N oSuchE lem entE xception e | 19 ifl o p C i m a *■ EXP )
13 ( r e t u r n EOL; ) 20 p i l a P o s t f i j a . a p i l a r ( new Lo ng ( p o t e n c i a l l i z q . l d e r ) > I;
14 21 eise i f l o p C i m a MAS )
15 i f t s.equalsI ' ' l | return obtenerToken) 22 p i l a P o s t f i j a . a p i l a r ! r . ew L o n g ) l i z q * l d e r > »;
16 l£( a .e q u a l s l ) ) return EXP; 23 e i s e i f l opCima MENOS )
1? i f t s . e q u a 1s ( V ) ) return DIV; 24 p i l a P o s c f i j a . a p i l a r ( new L o n g ) l i z q - l d e r ) >;
•8 if t s.equals) ) ) return MULT; 25 eise i f l o p C i m a = = MULT )
19 if) s.equals< *I" > ) return PARENLA; 26 p i l a P o s t f i j a . a p i l a r ( n e w Lo ng < l i z q * l d e r ) ) ;
20 if I s.equaist *)* ) ) return PAREN_C; 27 e i s e i f l opCima DIV )
21 if) s.equals) *•* ) ) return MAS: 28 if l lder != 0 I
22 if) s.equals) *-' ) >r e t u r n MENOS; 29 p l l a P o s t f i j a . a p l l a r ) n e w L o n g ) l i z q / l d e r > >;
30 eise
24 try 31 (
28 ( v a lo rA c tu a i = Long.parseLong) s ): } 32 S y s te m .e r r .p r i n t ln ) " D iv isió n p o r cero* );
26 c a tc h t N unberForm atException e I 33 p i l a P o s t f i j a . a p i l a r ) new Lo ng) l i z q ) ) :
27 l 34 )
28 System .e r r .p r i n t i n l 'E rro r' ); 35 try
29 r e t u r n EOL: 36 { p i ia O p e r .d e s a p i l a r ( ); )
30 j 37 catch) D esbordam ientolnferior e I ( I
31 r e t u r n VALOR; 38 )
32
Figura 11.18 R utin a o p B in a r io p o ia opfccar o p C im a a la p ila postfija.
Figura 11.16 Rutina o h r en p r T n V o n m ia rlAwi al am liante H a lo
1^1 F ig u ra 1 1.19 d e c la ra u n a ta b la tic p r e c e d e n c ia s , q u e a lm a c e n a la p re c e d e n ­ tie n e la m e n o r p re c e d e n c ia , d e m o d o q u e s e c o lo c a rá e n la p ila (lo q u e se h a c e e n
c ia d e o p e ra d o re s y e s u tiliz a d a p a ra d e c id ir q u é o p e ra d o re s se h a n d e e lim in a r de e l c o n s tru c to r) p a ra q u e a c tú e c o m o c e n tin e la . Si s e tra ta c o m o u n o p e ra d o r q u e
la pila. S e in tro d u c e e n m e m o ria c u a n d o se c a rp a la c la s e E v a l u a d o r . L o s o p e ra ­ a so c ia p o r la d e re c h a , se m a n e ja rá e n e l c a s o d e o p e ra d o re s g e n e ra le s.
d o re s se lista n e n e l m ism o o rd e n q u e la s c o n s ta n te s b á s ic a s d e la c la se . F.l m é to d o q u e fa lta e s p r o c e s a r T o k e n , m o s tra d o e n la F ig u ra 1 1.20. C u a n d o
Q u e re m o s a s ig n a r un n ú m e ro a c a d a n iv e l d e p re c e d e n c ia . C u a n to m a y o r e s e l e n c o n tra m o s u n o p e ra n d o , s e a p ila e n la p ila p o s tfija . S i e n c o n tra m o s un p a ré n te ­
n ú m e ro , m a y o r e s la p re c e d e n c ia . P o d ría m o s lim ita m o s a a s ig n a r a lo s o p e ra d o re s s is d e re c h o , d e s a p ila m o s y p ro c e s a m o s re p e tid a m e n te e l o p e ra d o r e n la c im a d e la
a d itiv o s la p re c e d e n c ia I . a lo s m u ltip lic a tiv o s la p re c e d e n c ia 3 . a la e x p o n e n c ia - p ila d e o p e ra d o r e s h a s ta q u e a p a re z c a e l p a ré n te sis iz q u ie rd o (lín e a s d e la 19 a la
c ió n la p re c e d e n c ia 5 . y a lo s p a ré n te sis la p re c e d e n c ia 9 9 . S in e m b a rg o , ta m b ié n 2 1 ). F.l p a ré n te sis iz q u ie rd o s e d e s a p ila e n la lín e a 2 3 (O b s e rv e q u e e l te st d e la
n e c e sita rn o s te n e r e n c u e n ta la a so c ia n v id a d . P ara lo g ra rlo , a sig n a m o s a c a d a o p e ­ lín e a 22 se u tiliz a p a ra e v ita r d c s a p ila r e l c e n tin e la c u a n d o fa lta e l p aré n te sis iz ­
ra d o r un n ú m e ro q u e re p re s e n ta su p re c e d e n c ia c u a n d o e s u n s ím b o lo d e l a e n tra ­ q u ie rd o ) E n c a s o c o n tra rio , te n e m o s e l c a s o g e n e ra l d e o p e ra d o r, q u e se d e sc rib e
d a. y o tro q u e re p re s e n ta su p re c e d e n c ia c u a n d o e s un o p e ra d o r d e la p ila U n o p e ­ c o n e l c ó d ig o d e la s lin c a s d e la 2 9 a la 3 4 . E n la F ig u ra 1 1.21 se m u e s tra u n a
ra d o r q u e a s o c ia p o r la iz q u ie rd a tie n e c o m o p re c e d e n c ia e n la p ila u n a u n idad ru tin a m a in se n c illa : re p e tid a m e n te le e u n a lín e a d e la e n tra d a , in s ta n c ia un o b je to
m á s q u e la o rig in a l, m ie n tra s q u e u n o p e ra d o r q u e a so c ie p o r la d e re c h a tie n e p re ­ d e la c la s e E v a l u a d o r , y c a lc u la su v alo r.
c e d e n c ia e n la e n tra d a u n a u n id a d m á s q u e la o rig in a l. P o r ta n to , la p re c e d e n c ia d e
u n o p e ra d o r • q u e e s té e n la p ila e s 2.
U n a c o n se c u e n c ia d e e s ta re g la e s q u e c u a lq u ie ra d e lo s d o s o p e ra n d o s q u e 1
2 • D e sp u és d e l e e r un t o k e n . s e u t i l i z a e l a lg o r it m o de a n á l i s i s d e
o rig in a lm e n te te n g a n d if e re n te p re c e d e n c ia , s ig u e n e sta n d o o rd e n a d o s d e la m is­ 3 • e x p r e s io n e s co n p r e c e d e n c ia de o p e r a d o r e s p a r a e v a lu a r l o .
m a to rm a . S in e m b a rg o , si e n c o n tra m o s se n d o s o p e ra d o r e s a d itiv o s e n la p ila y 4 * S e d e t e c t a l a f a l t a d e p a r é n t e s is a b i e r t o s .
c o m o s ím b o lo d e la e n tra d a , e l o p e ra d o r e n la c im a d e la p ila te n d rá m a y o r p re c e ­ 5 •/
6 p r iv a t e v o id p r o c e s a r T o k e n ( )
d e n c ia . y p o r ta n to s e r á d e sa p ila d o . E s to e s lo q u e q u e re m o s p a ra lo s o p e ra d o re s
7 <
q u e a so c ia n p o r la izq u ierd a. 8 I n t o p C lm a ;
D e fo rm a sim ila r, si u n ' e s tá e n la p ila d e o p e ra d o re s y ta m b ié n e n la en tra d a , 9
e l o p e ra d o r d e la p ila te n d r á m e n o r p re c e d e n c ia , p o r lo q u e n o s e rá d e s a p ila d o , lo 10 try
q u e e s c o rr e c to p a ra u n o p e ra d o r q u e a so c ia p o r la d e re c h a . E l to k en VALO R n u n c a 11 (
12 sw i t c h ( u ltim o T o k e n )
s e a p ila, p o r lo q u e su p re c e d e n c ia c a re c e d e sig n ific a d o . E l to k e n d e fin d e lín e a 13 l
14 c a s e VALOR:
c ía s : P r e c e d e n c ia 15 p i l a P o n t f i j a . a p i l a r ( new L o n g ( v a lo r A c t u a l ) )¡
[ 16 re tu rn ;
i nt s l m b o l o E n t r a d a ; 17
i nt c i m a P i l a ; 18 c a s e PAREN_C:
19 w h i l e ( ( opCim a = c im a P ila O p e r l ) ) ! = PAREN_A
P r e c e d e n c ia ( i n t s im E n t . i n t s ia C im a I 20 Ut. opCim a ! ■ EO L I
[ 21 o p B in a r io ( opCim a ) ;
s lm b o lo E n tr a d a * n im E n t; 22 í f ( opCim a - - PAREN_A )
c im a P il a = s im e im a ; 23 p il a ü p e r . c i m a l ) ; l l E l im in a r p a r é n t e s is a b ie r t o
24 e ls e
25 S y s t e m . e r r . p r in t l n ( ' P a l t a p a r é n t e s is a b lo r t o * ) ;
/ / E s t o e s p a r t o d e l a c l a s e E v a lu a d o r 26 b re a k ;
/ / t a b la P r e c g e n e ra e l o rd e n d e e v a lu a c ió n d e lo u Tokenn 27
i c P r e c e d e n c ia 1 t a b la P r e c = new P r e c e d e n c ia ! 9 1 ; 28 d e f a u l t : / / C a s o de o p e ra d o r g e n e r a l
le 29 w h ile t t a b la P r e c ! u lt im o T o k e n ] . s ím b o lo E n t r a d a <=
30 t a b la P r e c ! opClm a ** c im a P ila O p e r < ) 1 .
31 c im a P il a )
t a b la P r e c I 0 - = new P r e c e d e n c ia ( 0. - 1 ): II EOL
t a b la P r e c ! 32 o p B l n a r io ( o pC im a ) ;
1 ■ new Pr e c e d e n c i a ( 0. 0 1: VALOR
19 33 i f ( u lt im o T o k e n != EOL >
t a b la P r e c ! 2 = new P r e c e d e n c ia ! 10 0 . 0 1; / i p a p e j :_ a
20 t a b la P r e c ! 3 ■ new P r e c e d e n c ia ( 0. 99 I ; t Z PAREN_C
34 p i i a O p e r . a p i l a r ( new l n t e g e r ( u lt im o T o k e n ) >;
21 35 b re ak;
t a b la P r e c ! 4 J = new P r e c e d e n c ia ( 6. 5 1; / / EXP
22 36 j
t a b la P r e c ! 5 1 3 new P r e c e d e n c ia ( 3 . 4 ) ; II MULT 37 )
23 t a b la P r e c ! 5 = new P r e c e d e n c ia ! 3. 4 \ ; II D IV
1 38 c a t c h ( D e s b o r d a m ie n t o ln f e r io r e ) ( ) / / No p u e d e o c u r r i r
24 t a b la P r e c l 7 ; = new P r e c e d e n c ia ! 1. 2 1; U MAS 39 )
25 t a b la P r e c ! B : ■ new P r e c e d e n c ia 1 1 . 2 | ; MENOS
26
Figuro 11.20 R u tn o p r o c e s a r T o k e n p a ra procesar u lt im o T o k e n utilizando el
Figuro 11.19 Tabla d e p rece d encias utllizod a p a ra evo tu a r u n o expresión infijo algoritm o d e anátsls d e expresiones c o n p re c e d e n c ia d e operadores
1 /••
2 • R u tin a main s e n c i l l a , aunque u n t a n t o chapucera c ic n d o rc c u rsiv á m e n te la e x p re s ió n p a re n tiz a d a iz q u ie rd a , in c o rp o ra n d o e n to n c e s
3 •/ e l o p e ra d o r e n la ra íz , y p ro d u c ie n d o fin a lm e n te la e x p re s ió n p a re n tiz a d a d e re c h a .
4 p u b l i c 9 t a t i c v o id malnf S t r i n g [ J a r g s )
E sta e s tra te g ia g e n e ra l (iz q u ie rd a , n o d o , d e re c h a ) s e d e n o m in a re c o r r id o e n o rd e n
5 (
6 S trin g cad; \in u tr ic o . E ste tip o d e re c o rrid o e s fácil d e re c o r d a r p o r e l tip o d e e x p re s io n e s q u e
7 B u i f e r e d R e a d e x i n = ne w B u * f e r e d R e a d e r ( new p ro d u ce.
8 InputStrea.-nReader ( System , l n ) ); U n a se g u n d a e stra te g ia c o n s is te e n im p rim ir rc c u rs iv a m e n te e l su b árb o l iz ­
9
q u ie rd o . se g u id o d e l s u b á rb o l d e re c h o , y te rm in a n d o c o n e l o p e ra d o r. O b ten em o s
10 try
11 l
do e s te m o d o la e x p re s ió n e n fo rm a p o stfija . E ste re c o rrid o s e d e n o m in a re c o r rid o
12 System , o u t , p r i n t l n ( ‘Introduzca ex p resio n e s,” * e n p o sto rd e n d e l á r b o l. U n a te rc e ra e s tra te g ia p a ra r e c o r re r e l á rb o l tie n e c o m o
13 ‘ una por lin e a :* ); re s u lta d o la e x p re s ió n p refija . T o d a s e sta s e s tra te g ia s se d is c u tirá n e n e l C a p ítu lo
14 w hile( ( cad a in.readL ine( ) ) != n u i l ) 17. 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 s u s g e n e ra liz a c io n e s ) so n e stru c tu ra s
15 (
d e d a to s ú tile s e n e l d is e ñ o d e c o m p ila d o re s , p u e s p e rm ite n m a n e ja r g lo b a lm c n te
16 S y stem .o u t.p rin tln ! ' L e í d a : * » c a d >:
17 E v a l u a d o r e v = new E v alu ad o r! c ad l; la s e x p re s io n e s , te n ie n d o e n c u e n ta su e s tru c tu ra ló g ic a . E s to h a c e m á s se n c illa la
18 S y stem .o u t.p rin tln ! e v . o b t c n c r V a 1o r ( ) ) ; g e n e ra c ió n d e c ó d ig o , y e n a lg u n o s c a s o s fa c ilita s ig n ific a tiv a m e n te lo s e sfu e rz o s
19 S y stem .o u t.p rin tln ! “I n t r o d u z c a o t r a e x p r e s i ó n : * >; d e o p tim iz a c ió n .
20 > E s d e in te ré s ta m b ié n la c o n s tru c c ió n d e l á r b o l sin tá c tic o d e u n a e x p re s ió n a
21 1
p a rtir d e s u fo rm a in fija. C o m o y a se h a v isto , s ie m p re se p u e d e c o n v e rtir u n a e x ­
22 catch! lOException e ) f }
23 ) p re s ió n in fija e n u n a p o s tfija , p o r lo q u e e s su fic ie n te v e r c ó m o se p u e d e c o n s tru ir
u n á r b o l s in tá c tic o a p a rtir d e la e x p re s ió n p o s tlija . Y e s to e s se n c illo . S e m a n tie n e
Figuro 11.21 U no rutina ma in sim ple, p o ra e va lu a r expresiones rep etid am ente u n a p ila d e (re fe re n c ia s a ) á rb o le s. C u a n d o n o s e n c o n tra m o s u n o p e ra n d o , c re a ­
m o s u n á rb o l c o n u n ú n ic o n o d o y lo a p ila m o s e n la p ila . C u a n d o e n c o n tra m o s un
o p e ra d o r, lo s d o s á rb o le s e n la c im a d e la p ila s e d e s a p ila n y c o m b in a n . E n e l n u e ­
v o á rb o l, la ra íz e s e l o p e ra d o r, e l h ijo d e re c h o e s e l p rim e r á rb o l d e s a p ila d o y el
11.2.4 Árboles sintácticos d e expresiones
h ijo iz q u ie rd o e l se g u n d o á rb o l d c sa p ilu d o . E l re s u lta d o se a p ila d e n u e v o e n la
p ila . É ste e s. e se n c ia lm e n te , e l m ism o a lg o ritm o q u e u tiliz á b a m o s p a ra la e v a lu a ­
L a F ig u ra 11.2 2 m u e s tra u n e je m p lo d e á r b o l s in tá c tic o d e u n o e x p re sió n . L a s h o ­ c ió n p o s tfija , su s titu y e n d o e l c á lc u lo d e o p e ra d o re s b in a rio s p o r la c r e a c ió n d e á r ­
j a s del á rb o l sin tá c tic o d e u n a e x p re s ió n so n o p e ra n d o s . c o m o c o n s ta n te s o n o m ­ b o le s.
b re s d e v a ria b le s , m ie n tra s q u e e l re s to d e n o d o s c o n tie n e n o p e ra d o re s. E s te árbol
p a rtic u la r e s b in a rio , p o rq u e to d o s lo s o p e ra d o re s q u e a p a re c e n e n la e x p re s ió n lo
so n . A u n q u e é s te e s e l c a s o m á s sim p le , e s p o s ib le q u e lo s n o d o s te n g a n m á s de Resumen
d o s h ijo s, a s í c o m o u n ú n ic o h ijo , c o m o o c u rre e n e l c a s o d e l o p e ra d o r m e n o s u n a-
rio.
E ste c a p itu lo e x a m in a d o s u s o s d e las p ila s e n e l á re a g e n e ra l d e le n g u a je s d e p ro ­
E l á rb o l s in tá c tic o d e u n a e x p re s ió n se e v a lú a a p lic a n d o e l o p e ra d o r e n la ra íz
g ra m a c ió n y d is e ñ o d e c o m p ila d o re s. N o s e n s e ñ a q u e la s p ila s s o n m u y p o ten tes,
a lo s v a lo re s o b te n id o s e v a lu a n d o d e fo rm a r e c u r s o a lo s su b á rb o le s iz q u ie rd o y
a u n q u e s e a n u n a e stru c tu ra b a sta n te sim p le . L a s p ila s p u e d e n u tiliz a rse p a ra c o m ­
d e re c h o . E n e l e je m p lo a n te rio r, e l h ijo iz q u ie rd o s e e v a lú a a ( a - b ) y e l h ijo d e re ­
p ro b a r si u n a s e c u e n c ia d e sím b o lo s e s tá c o rre c ta m e n te e q u ilib ra d a . El a lg o ritm o
c h o a ( a - b ) . P o r ta n to , e l á rb o l c o m p le to re p r e s e n ta ( ( a » b ) • < a - b ) ) . E s e v id e n ­
re s u lta n te c o n s u m e un tie m p o lin eal y. l o q u e e s ig u a lm e n te im p o rta n te , só lo h ace
t e q u e p o d e m o s p ro d u c ir u n a e x p re s ió n in fija (s o b re c a rg a d a d e p a ré n te s is ) p ro d u -
un re c o rrid o se c u e n c in i d e la e n tra d a . F.I a n á lisis 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 e s u n a té c n ic a q u e p u e d e u tiliz a rse p a ra a n a liz a r e x p re s io n e s in tiju s.
T a m b ié n n e c e s ita u n tie m p o lin e a l y u n s o lo re c o rrid o d e la e n tra d a , u tiliz a n d o d o s
p ilas. A u n q u e las p ila s a lm a c e n a n v a lo re s d e d ife re n te tip o , e l m e c a n ism o d e tipos
g e n é ric o s n o s p e rm ite u tiliz a r u n a ú n ic a im p le m e n ta c ió n d e las p ila s p a ra am b o s
tip o s d e o b je to s.

Elementos del juego

Ftgura 11.22 Á ibot M ntóctlco do la expresión ( a + b ) • ( a - b ) . a n á lis is d e o p e r a d o r e s c o n p r e c e d e n c i a U n a lg o r itm o q u e c o n v ie rte u n a e x p re -


a n á li s i s lé x ic o E l p ro c e s o d e re c o n o c im ie n to d e to k e n s e n u n a c a d e n a d e s ím b o ­
Ejercicios
los.
á r b o l s in tá c tic o d e u n a e x p r e s ió n U n á rb o l e n e l c u a l la s h o ja s c o n tie n e n o p e ra n -
Cuestiones breves
d o s y e l re s to d e n o d o s c o n tie n e o p e ra d o re s, 1 1 .1 . M u e s tre e l re s u lta d o d e e je c u ta r e l p ro g ra m a d e c o m p r o b a c ió n d e sím b o lo s
e x p r e s ió n in f ij a U n a e x p re s ió n e n la c u a l c a d a o p e ra d o r b in a r io tie n e su s a rg u ­ d e s e q u ilib ra d o s so b re la s sig u ie n te en trad as:
m e n to s a s u iz q u ie rd a y a su d e re c h a . C u a n d o h a y v a rio s o p e ra d o re s , la p re c e ­
d e n c ia y la a so c ia tiv id a d d e te rm in a n e n q u é o rd e n d e b e n p ro c e sa rse , a) )
e x p r e s ió n p o s t f ij a U n a e x p re s ió n q u e p u e d e se r e v a lu a d a p o r la m á q u in a p o stíija b) < )
sin u tiliz a r n in g u n a re g la d e p re c e d e n c ia , c) I [ [
m á q u i n a d e e s t a d o s T é c n ic a c o m ú n u tiliz a d a p a ra a n a liz a r sím b o lo s. E n c ad a J) ) t
m o m e n to , la m á q u in a e s tá e n u n d e te rm in a d o e sta d o . C a d a c a rá c te r d e en tra d a e) 1 )1
n o s c o n d u c e a u n n u e v o e sta d o . C u a n d o to d o v a b ie n , la m á q u in a do e sta d o s 1 1 .2 . M u e s tre las sig u ie n te s e x p re s io n e s e n n o ta c ió n p o stfija :
a c a b a p o r a lc a n z a r u n e s ta d o e n e l c u a l u n sím b o lo h a s id o re c o n o c id o ,
m á q u i n a p o s tf ija M á q u in a u tiliz a d a p a ra e v a lu a r u n a e x p re s ió n p o stfija . E l a lg o ­ a) 1* 2 - 3 ' 4
ritm o q u e u tiliz a e s e l sig u ie n te : lo s o p e ra n d o s se a p ila n e n u n a p ila y a l e n ­ h) 1 * 2 - 3 • 4
c o n tra rn o s c o n u n o p e ra d o r d e s a p ila m o s su s o p e ra n d o s y a p ila m o s e l re s u lta ­ r) 1 • 2 , 3 - 4 A5*6
J) ( 1 * 2 ) * 3 - ( 4 A{ 5 - 6 ) )
d o . A l fin al d e la e v a lu a c ió n , la p ila d e b e ría c o n te n e r e x a c ta m e n te un
e le m e n to , q u e re p re s e n ta e l resu lta d o , 11J . P a ra la e x p re s ió n in fija a * b * c • d * c ' f - g - h / ( i * j I . h a g a lo
ta b l a d e p r e c e d e n c i a s U n a ta b la u tiliz a d a p a ra d e c id ir q u é o p e ra d o re s d e b e n e li­ sig u ie n te:
m in a rse d e la p ila d e o p e ra d o re s. L o s o p e ra d o re s q u e a so c ia n p o r la iz q u ie rd a
u) M u e s tre c ó m o 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
tie n e n c o m o p re c e d e n c ia e n la p ila d e o p e ra d o re s u n a u n id a d m á s q u e su p re ­
d e o p e ra d o re s g e n e ra la c o rre s p o n d ie n te e x p re s ió n p o stfija .
c e d e n c ia c o m o s ím b o lo d e la e n tra d a . L o s o p e ra d o re s q u e a s o c ia n p o r la d e re ­
b) M u e s tre c ó m o la m á q u in a p o s tfija e v a lú a la e x p re s ió n p o s tfija re s u l­
c h a s e c o m p o rta n ju s to al rev é s.
tante.
c) D ib u je e l á rb o l sin tá c tic o c o rre sp o n d ie n te .

Errores com unes


Problemas teóricos
1. L o s e rro re s e n la e n tra d a d e b e n tra ta rse c o n e l m á x im o c u id a d o . E s un
1 1 .4 . P a ra 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, e x p liq u e c ó ­
e rr o r g ra v e d e p ro g ra m a c ió n s e r n e g lig e n te e n e s te área.
m o im p rim ir u n m e n sa je d e e rr o r q u e re fle je la c a u s a p ro b a b le d e c a d a
2. E n la ru tin 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 , e l tr a ta m ie n to in ­
e rr o r p osib le.
c o rr e c to d e las c o m illa s e s u n e r r o r h a b itu a l.
1 1.5. E x p liq u e , e n té rm in o s g e n e ra le s, c ó m o s e in c o rp o ra ría n o p e ra d o re s ú n a n o s
3. E n e l a lg o r itm o d e c o n v e rs ió n d e n o ta c ió n in fija a p o s tfija . la ta b la d e p re ­
al e v a lu a d o r d e e x p re s io n e s . A s u m a q u e lo s o p e ra d o re s ú n a n o s p re c e d e n a
c e d e n c ia s d e b e re fle ja r la p re c e d e n c ia y a so c ia tiv id a d c o rre c ta s
su o p e ra n d o , y q u e tie n e n m á x im a p re c e d e n c ia . In c lu y a u n a d e s c rip c ió n d e
c ó m o s e ría n re c o n o c id o s p o r la m á q u in a d e e sta d o s.

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

Figura 12.1 Un esq u em a d e c o d ifica ció n estándar c, s e e n c u e n tra a p ro fu n d id a d d, y a p a re c e f v e c e s e n u n fic h e ro e n to n c e s e l c o ste


d e l c ó d ig o d e l m is m o e s ig u al a
E n la vid a re al, lo s a rc h iv o s p u e d e n s e r b a s ta n te g ra n d e s . M u c h o s fic h e ro s d e P u ed e o b te n e rs e u n a c o d ific a c ió n m e jo r q u e la m o s tra d a e n la F ig u ra 12.2 te ­
g ra n (a m a ñ o so n s a lid a rio a lg u n o s p ro g ra m a s, y n o rm a lm e n te e x is te u n a g ra n d is ­ n ie n d o e n c u e n ta q u e n i e s h ijo ú n ic o . C o lo c á n d o lo e n u n n iv e l s u p e rio r (e n e l lu ­
p a rid a d e n tre e l n ú m e ro d e a p a ric io n e s d e lo s c a ra c te re s m ás fre c u e n te s y lo s m e ­ g a r d e su p a d re ) o b te n e m o s un n u e v o á rb o l m o s tra d o e n la f i g u r a 12.3. D ic h o á r­
n o s fre c u e n te s. P o r e je m p lo , m u c h o s fic h e ro s d e d a to s d e g ra n ta m a ñ o tie n e n una b o l tie n e u n c o s te d e 173 b its p e ro s ig u e e s ta n d o le jo s d e s e r ó p tim o .
e n o rm e c a n tid a d d e d íg ito s , b la n c o s y c a ra c te re s d e n u e v a lín e a , s in e m b a r g o tie ­ N ó te se q u e e l á rb o l d e la F ig u ra 12.3 e s u n á r b o l c o m p le to , e s to e s , to d o s los
n e n p o c a s c¡ o x. n o d o s o so n h o ja s o tie n e n d o s h ijo s. U n a c o d ific a c ió n ó p tim a c u m p le triv ia lm e n te
E x iste n m u c h a s s itu a c io n e s e n la s q u e s e ría m u y d e s e a b le re d u c ir e l ta m a ñ o d e e s ta p ro p ie d a d ; e n c a s o c o n tra rio , c o m o y a h e m o s v is to , lo s n o d o s q u e tie n e n un
un fich ero . P o r e je m p lo , c o m o e l e s p a c io e n d is c o e s p re c io s o e n p rá c tic a m e n te ú n ic o h ijo p u e d e n su b irse un nivel.
c u a lq u ie r m á q u in a , d is m in u ir e l e s p a c io n e c e sa rio p a ra a lm a c e n a r lo s fic h e ro s E l q u e lo s c a ra c te re s s e s itú e n s ó lo e n la s h o ja s e s im p o rta n te , p u es a s í c u a l­
a u m e n ta ría la c a p a c id a d e fe c tiv a d e l d is c o . C u a n d o lo s d a to s s e tra n sm ite n a tr a ­ q u ie r se c u e n c ia d e b its se d e c o d ific a sin a m b ig ü e d a d p o sib le . C o n s id e re m o s por
v é s d e las lín e a s te le fó n ic a s m e d ia n te un m ó d e m . la ta s a d e e fe c tiv id a d e n la tra n s­ e je m p lo la c a d e n a c o d ific a d a 0 1 0 0 1 1 1 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0 1 11. L a F ig u ra 12.3
m isió n a u m e n ta si p u e d e re d u c irse la c a n tid a d d e d a to s tra n sm itid o s. R e d u c ir la m u e s tra q u e 0 y 0 1 n o so n c ó d ig o s d e n in g ú n c a rá c te r, p e r o 0 1 0 e s e l c ó d ig o d e i.
c a n tid a d d e b its n e c e s a rio s p a ra la re p re se n ta c ió n d e d a to s re c ib e e l n o m b re de A c o n tin u a c ió n sig u e 0 1 1. q u e re p re se n ta u n a i . E l c ó d ig o 11 sig u ie n te e s u n c a ­

c o m p re sió n . R e a lm e n te , la c o m p re s ió n se re a liz a e n d o s fa se s: la fase d e c o d ific a ­ rá c te r d e n u e v a lín e a (n i). E l re s to d e la c a d e n a e s a . s p . t. i. e y ni.


c ió n (c o m p re s ió n ) y la fase d e d e c o d ific a c ió n (d e s c o m p re s ió n ). U n a e stra te g ia L o s c ó d ig o s d e lo s c a ra c te re s p u e d e n te n e r lo n g itu d e s d ife re n te s , y n in g ú n c ó ­
se n c illa e x p lic a d a e n e s te c a p ítu lo p e rm ite a h o rra r e l 2 5 p o r c ie n to d e l e s p a c io en d ig o d e c a rá c te r e s u n p re fijo d e c u a lq u ie r o tro c ó d ig o . E sta té c n ic a d e c o d ific a ­
fic h e ro s típ ic o s d e g ra n ta m a ñ o , y h a s ta un 5 0 o 6 0 p o r c ie n to e n m u c h o s arc h iv o s c ió n s e c o n o c e c o m o c ó d ig o sin p r e fijo s . R e c íp ro c a m e n te , si p e rm itim o s q u e un
do d a to s . E x te n s io n e s d e e s ta té c n ic a p e rm ite n o b te n e r a ú n m e jo re s re su lta d o s en c a rá c te r e s té e n u n n o d o q u e n o s e a u n a h o ja , e n g e n e ra l n o s e rá p o s ib le g a ra n tiz a r
la c o m p re sió n . q u e la d e c o d ific a c ió n n o s e a am b ig u a.
1.a e s tra te g ia g e n e ra l e s p e rm itir q u e la lo n g itu d d e la c o d ific a c ió n c a m b ie de C o m b in a n d o e s to s h e c h o s, c o n c lu im o s q u e n u e s tro p ro b le m a b á s ic o se re d u c e
c a rá c te r a c a rá c te r, h a c ie n d o q u e lo s c a ra c te re s m á s fre c u e n te s te n g a n c ó d ig o s m ás a e n c o n tr a r e l árb o l c o m p le to d e c o s te m ín im o (a p lic a n d o la d e fin ic ió n d a d a de
c o rto s. N ó te se q u e c u a n d o to d o s lo s c a ra c te re s a p a re c e n c o n fre c u e n c ia s s im ila re s , c o ste), e n e l q u e to d o s lo s c a ra c te re s se e n c u e n tre n e n las h o ja s . 1.a F ig u ra 12.4
n o p o d e m o s e s p e ra r un g ra n ah o rro . m u e s tra e l á rb o l ó p tim o p a ra n u e stro a lfa b e to d e m u e stra . C o m o p u e d e v e rse e n la
f ig u ra 12.5. e s ta c o d ific a c ió n re q u ie re s ó lo 146 b its. N ó te se q u e s ie m p re e x iste n
v a ria s c o d ific a c io n e s ó p tim a s . E n c o n c re to , a p a rtir d e c a d a u n a p o d e m o s e n c o n ­
12.1.1 Códigos sin prefijos tra r o tr a s d is tin ta s, in te rc a m b ia n d o lo s h ijo s d e a lg u n o s n o d o s (lo s q u e g u ste m o s)
del árbol
E l c ó d ig o b in a r io d e la F ig u ra 12.1 s e p u e d e re p re s e n ta r m e d ia n te e l á rb o l b in a rio
d e la F ig u ra 12.2. E n e s te á rb o l, lo s c a ra c te re s s e a lm a c e n a n s ó lo e n la s h o ja s . L o s
c ó d ig o s d e c a d a c a rá c te r se e n c u e n tra n re c o r rie n d o e l á rb o l d e s d e la r a í / h a s ta a l­
c a n z a r d ic h o c a rá c te r, e m p le a n d o u n 0 p a ra in d ic a r la ra m a iz q u ie rd a y u n I p ara
in d ic a r la ra m a d e re c h a . P o r e je m p lo , a s s e lle g a y e n d o p rim e ro a la iz q u ie rd a , y
lu e g o d o s v e c e s a la d e re c h a . E n c o n s e c u e n c ia , su c ó d ig o e s 0 1 1 . E sta e stru c tu ra
re c ib e e l n o m b re d e tr ie ' b in a r io (p ro n u n c ia d o e n in g lé s « tra i» ). S i c a d a c a rá c te r

Fiaura 12 3 Un órbQl d á co d ifica ctó n un p o c o m eior


Figura 12.7 El algoritm o d e Huffm an tras la prim era m ezcla

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 .

12.1.2 Algoritm o d e Huffman

¿ C ó m o s e c o n s tru y e e l á rb o l ó p tim o d e c o d ific a c ió n ? E l a lg o r itm o q u e im p le m c n -


la e l s iste m a d e c o d ific a c ió n s e d e b e a H u ffm a n , q u ie n lo d io e n 1 9 5 2 . y s e c o n o c e
c o m ú n m e n te c o m o a lg o r itm o J e H u ffm a n .
A lo larg o d e e s ta se c c ió n c o n s id e ra m o s q u e e l n ú m e ro d e c a ra c te re s a c o d if i­
c a r e s C E l a lg o ritm o d e H u ffm a n e s e l sig u ie n te : se m a n e ja rá u n b o s q u e d e a r b o ­
le s . El p e s o d e u n á rb o l e s ig u al a la s u m a d e la s fre c u e n c ia s d e su s h o ja s . S e s e ­ Figuro 12.8 El algoritm o d e Huffm on tras la seg u n d a m ezcla
le c c io n a n lo s d o s á rb o le s. 7 j y 7 \ d e m e n o r p e s o y s e fo rm a un n u e v o á rb o l c u y o s
su b á rb o le s so n 7 j y 7 \ • E ste p ro c e so s e re p ite C - I v e c e s. A l e m p e z a r e l a lg o rit­
m o s e tie n e n C á rb o le s c o n u n ú n ic o m u lo lu n á rb o l p o r c a d a carác te r» . A l fin a l del
p ro c e s o só lo q u e d a un á rb o l, q u e e s ju s ta m e n te e l á rb o l ó p tim o d e H u ffm a n . El
E je rc ic io 12.4 p ide a l le c to r q u e d e m u e s tre la c o rre c c ió n d e este alg o ritm o .

C ará cter C ódigo Frecu en cia Bits totales

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

P o r ú ltim o , se o b tie n e u n á rb o l ó p tim o , e l m o s tra d o a n te rio rm e n te e n la F ig u ­ 6 N 1 7 1


ra 12.4. c o m b in a n d o lo s d o s á rb o le s q u e n o s q u e d a n . L a F ig u ra 12.12 m u e s tra el
á rb o l ó p tim o , c o n ra íz 7 6 . ; TI 4 8 0

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).

Figuro 12.12 El oigoritm o d o Huffm an tras la m ezcla final


12.1.4 La fase d e decodificación

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 |

F ig u ra 12.15 Esquem a d e lo ciase p a ro et g en e ra d o r d e referencias cruzadas * J a s a I I ih - ih - p m W i i i M l m i h í h . I - h i u m c n m f i n t h a r »i u n c u r t e t o r |w » l o fiw m u r |w « c A -


i i s t t r e l A n C iu l n c ( M .l
W c w ilk a i
Devuelve u n I d e n t i t i c a d o r d e la e n tr a d a Muestra las referencias cruzadas
El p i í a e r c a r á c t e r y a h a s i d o l u i d o e n c a r
b l i c void generaR oferenciaC iizada
v a t e S t r i n g t o m a S t r ing l t
A r b o lB i n a t ío h u n q u e d i* io s ld c n t1 fIC a d o i ©fl ■
new A r b o i a i n a r i o B u s q u e a a < I;
String rnpStrlna =

tt In n n rt.i lo fi l d e n t ilic a d o r e ú en el á r b o l d e b ú p rju ed á


í o t < tm pStrlng c a s ; sig u í e n t e c a s 4 ); tm pString .= c a r l
w hilel ton\flS;giiionr.old( I i
i f i !e s I d C a r ( c a r I l
try
d e v o lv o rC a r( );
breaic; I d K o d o e s t © N o d o = ( I d No d o )
l o s l d e n t : i i c a d o r er¡ . b u s c a r 4 a c t ú a ; IdNodo I :
«•Kt r N o á o . 1 i n c a s . i n s e r í a r (
r e tu r n trqiString; new I n t e g e r < l i n e a A c t u a i ) I ;

catchi Elem encoNoEncontrodo © >


u ro 12.17 R utina q u e d e v u e lv e u n S t r i n g le íd o d e la o n lr o d a

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

E n e s te c a p ítu lo h e m o s p re s e n ta d o la s im p le m e n ta c io n e s d e d o s im p o rta n te s a p li­


Cuestiones breves
c a c io n e s. I a c o m p re s ió n d e fic h e ro s e s u n a d e s ta c a d a té c n ic a q u e p e rm ite a u m en 1 2 .1 . M u e stre e l á rb o l d e H u ffm a n q u e re s u lta d e la sig u ie n te d is trib u c ió n d e
ta r ta n to la c a p a c id a d e fe c tiv a d e l d is c o c o m o la v e lo c id a d e fe c tiv a d e l m ó d em . sím b o lo s d e p u n tu a c ió n y d íg ito s : d o s p u n to s 1 100». e s p a c io ( 6 0 5 ) . n u e v a
É ste e s un c a m p o d e in v e s tig a c ió n m u y a c tiv o , la i té c n ic a s e n c illa p re se n ta d a lín e a i 100). c o m a (7 0 5 ). 0 (4 3 1 ). I (2 4 2 ). 2 (1 7 0 ). 3 (5 9 ). 4 ( IS 5 ). 5 «250).
a q u í, c o n o c id a c o m o a lg o ritm o d e H u ffm a n , c o n s ig u e , h a b itu a lm e n te , u n a c o m ­ 6 (1 7 4 ). 7 (1 9 9 ). 8 (2 0 5 ) y 9 (2 1 7 » .
p re s ió n d e l - 5 p o r c ie n to d e lo s fic h e ro s d e te x to . O tro s a lg o ritm o s y e x te n s io n e s 12.2. M u c h o s s is te m a s tie n e n y a im p lc m c n la d o un p ro g ra m a d e c o m p re sió n
d e l a lg o ritm o d e H u ffm a n o b tie n e n to d a v ía m e jo re s re s u lta d o s . E l p ro b le m a d e la s C o m p rim a d is tin to s tip o s d e fic h e ro s p a ra d e te r m in a r la ta s a m e d ia de
re fe re n c ia s c ru z a d a s e s u n p ro b le m a g e n e ra l, q u e tie n e n u m e ro sa s a p lic a cio n e s. c o m p re s ió n d e su siste m a . ¿ C u á l d e b e s e r e l ta m a ñ o d e lo s fic h e ro s p a ra
q u e la c o m p re s ió n re s u lte re n ta b le ?
12J . ¿ Q u é su c e d e si se e m p le a un fic h e ro c o m p r im id o c o n e l a lg o ritm o de
Elem entos del juego H u ffm a n p a ra tra n s m itir d a to s a tra v é s d e la lín e a te le fó n ic a y s e p ie rd e un
b it a c c id e n ta lm e n te ? ¿ Q u é s e p o d ría h a c e r a l re sp e c to ?
a l g o r it m o d e H u f f m a n A lg o ritm o q u e c o n s tru y e un c ó d ig o sin p re fijo s ó p tim o .
S e b a s a e n la m e z c la re p e tid a d e d o s á rb o le s d e p e s o m ín im o , Problemas teóricos
á r b o l c o m p le to A rb o l c u y o s n o d o s o b ie n so n h o ja s o b ien tie n e n d o s hijos,
c ó d ig o s in p r e f ijo s C o d ific a c ió n e n la q u e n in g ú n c ó d ig o d e c a rá c te r e s u n p re fijo 12.4. P ru e b e la c o rre c c ió n d e l a lg o ritm o d e H u ffm a n , s ig u ie n d o lo s sig u ie n te s
d e o tr o c ó d ig o d e c a rá c te r. E n un trie , e s to e s tá g a ra n tiz a d o c u a n d o lo s c a ra c ­ pasos:
te re s ss' e n c u e n tra n s o lo e n la s h o ja s . U n c ó d ig o sin p re fijo s p u e d e d e c o d ific a r-
a) M u e s tre q u e n o e x is te n in g ú n n o d o c o n u n ú n ic o hijo.
se sin a m b ig ü e d a d ninguna,
b) M u e s tre q u e lo s d o s c a ra c te re s c o n m e n o r fre c u e n c ia d e b e n s e r lo s d o s
c o m p r e s ió n E s e l h e c h o d e re d u c ir la c a n tid a d d e b its n e c e sa rio s p a ra la re p re s e n ­
n o d o s m á s p ro fu n d o s d e l árb o l.
ta c ió n d e d a to s . S e c o m p o n e d e d o s fa se s: la fa se d e c o d if ic a c ió n (c o m p re sió n )
<•) M u e stre q u e los c a ra c te re s d e d o s n o d o s c u a le sq u ie ra situ a d o s a la m is­
y la la s e d e d e c o d ific a c ió n (d e s c o m p re s ió n ),
m a p ro fu n d id a d p u ed en in tercam b iarse sin a fe c ta r a la o p tim alid ad .
g e n e r a d o r d e r e f e r e n c ia s c r u z a d a s P ro g ra m a q u e e n u m e ra lo s id e n tific a d o re s d e
ti) E m p le e in d u c c ió n : s e g ú n v a m o s m e z c la n d o á rb o le s, c o n s id e re c o m o
un p ro g ra m a y lo s n ú m e ro s d e lín e a e n la s q u e a p a re c e n . E s u n a a p lic a c ió n
n u e v o c o n ju n to d e c a ra c te re s u n o a b s tra c to c u y o s e le m e n to s e s tá n
m u y c o m ú n , s im ila r a la c re a c ió n d e u n ín d ic e ,
a so c ia d o s a las ra íc e s d e los á rb o le s g en e ra d o s.
tr ie b in a r io E stru ctu ra d e d a to s e n la q u e u n a ra m a izq u ie rd a re p re se n ta un 0 y una
ra m a d erech a rep resen ta un I. E l c a m in o a c a d a m x ln in d ic a su c o d ifica c ió n . 12.5. ¿ B a jo q u é c o n d ic io n e s e l á rb o l d e H u ffm a n d e c a ra c te re s A S C II g e n e ra un
c ó d ig o d e d o s b its p a ra un d e te rm in a d o c a rá c te r? , ¿ y un c ó d ig o 2 0 b it?
12.6. M u e stre q u e si lo*, sím b o lo s n o s v ie n e n d a d o s o rd e n a d o s p o r fre c u e n c ia , el
Errores com unes a lg o ritm o d e H u ffm a n p u e d e im p le m c n ta rse e n tie m p o lineal.

I C u a n d o se im p le m e n ta l a c o m p re s ió n d e d a to s n o d e b e le e rs e e l fic h e ro de Problemas prácticos


e n tra d a m á s d e u n a vez.
2. E s un e rr o r h a b itu a l e m p le a r d e m a s ia d a m e m o ria p a ra a lm a c e n a r la tabla 12.7. E n e l g e n e ra d o r d e re fe re n c ia s c ru z a d a s u s e u n a lista o rd e n a d a e n lu g a r de
d e la c o m p re sió n . E s to lim ita e l p o rc e n ta je d e c o m p re s ió n q u e p u e d e c o n ­ u n árb o l b in a rio d e b ú sq u e d a . ¿ C ó m o a fe c ta e s te c a m b io a la e fic ie n c ia ?
seg u irse e n e l p ro ceso . I2 .S . L a d e s v e n ta ja d e e m p le a r u n a c o la p a ra a lm a c e n a r lo s n ú m e ro s d e lín e a d e l
g e n e ra d o r d e re fe re n c ia s c ru z a d a s , e s q u e la c o la se v a c ía d u ra n te e l p r iv e -
so . E s to p o d ría re p r e s e n ta r u n p ro b le m a e n a lg u n o s c a s o s . E n lu g a r de
En Internet g u a rd a r lo s n ú m e ro s e n u n a c o la , u se u n a lista e n la z a d a . Im p le m e n te las
sig u ie n te s e s tra te g ia s y c o m p a re su e fic ie n c ia :
E l g e n e ra d o r ele re fe re n c ia s c ru z a d a s e s tá d is p o n ib le e n e l d ire c to rio C h u p f e r l 2 . n) R e e m p la c e l a o p e ra c ió n d e i n s e r t a r p o r u n a in s e rc ió n al final d e la
El n o m b re d e l fic h e ro es:
lista. P a ra h a c e r lo d e b e re c o rre r d ic h a lista.
J a v a A n a l y z e r .j a v a E s la v ersió n in g le sa d e A n a l i z a d o r J a v a . E l p ro g ra m a h) G u a rd e la lis ta e n la z a d a y e l o b je to L i s t a l t e r q u e a p u n ta al ú ltim o
q u e in c lu y e la ru tin a p a ra e l e q u ilib ra d o d e sím b o lo s del e le m e n to d e la lista. L a in s e rc ió n a l fin al d e la lista e n la z a d a d e b e ser
C a p ítu lo 11 se e n c u e n tra e n e l d ire c to rio P a r t J . m á s e fic ie n te q u e e n e l a p u n a d o (</).
12.9. ( ó n ih iitc l«»s e je rc ic io s 12 7 y I2.K . d e m o d o q u e e l g e n e ra d o r d e re fe re n ­ C a n u t a n t e de* E u l e r : 4. 5
c ia s c ru z a d a s e m p le e u n a lisia e n la z a d a o rd e n a d a p a ra a lm a c e n a r la in fo r­ S e r l e s : 2-5
a ritm é tic a » : 4 -5
m a c ió n d e las p alab ra s, la c u a l c o n s is te e n u n S t r i n g . u n a lisia d e n ú m e ­
geom étricas: 4
ro s d e lin c a y un L i s t a l t e r q u e a p u n ta a l fin al d e la lisia arm ónicas: 5
12.10. M o d ifiq u e I d í l o d o . e n e l g e n e ra d o r d e r e f e r e n c ia s c ru z a d a s , a ñ a d ie n d o
Figura 12 21 S c *d a sencida d e l Ejercicio 12 15
un m é to d o t c S t r m g q u e m u e s tre e l n o m b re y lo s n ú m e ro s d e lin e a de
Jd N o d o . S im p lifiq u e e l m é to d o g e n e r « R e í e r e n c i a C r l i r a d a e n la fo r ­ 12.16. Im p le m e n te u n re v iso r o rto g rá fic o e m p le a n d o u n a ta b la h a s h A s u m a q u e
m a a d e c u a d a . E ste e m p ic o d e t o s t n n g e s e n g a ñ o s o , y a q u e n o rm a l­ e l d ic c io n a rio e s tá d iv id o e n d o s fu e n te s: u n g r a n d ic c io n a rio v a c re a d o y
m e n te e s te m é to d o n o a lte ra el e s ta d o d e l o b je to s o b re e l q u e a c tú a . Sin u n s e g u n d o fich ero . D e b e im »slrar to d a s las p a la b ra s m al e s c r ita s v lo s nú
e m b a rg o , a q u í v a c ía la c o la «Ic n ú m e ro s d e lín e a d e l o b je to ¿ Q u é p u ed e m e ro s «Ic lín e a e n la s q u e a p a re c e n (o b s e rv e q u e lle v a r la c u e n ta d e e sta s
h acerse p a ra s o lu c io n a r e s ta in c o n g ru e n c ia ? p a la b ra s y lo s n ú m e ro s d e lín e a e q u iv a le a la g e n e ra c ió n d e refe re n c ia s
12.11. S i u n a p a la b ra a p a re c e d o s v e c e s e n la m ism a lin ea , e l g e n e ra d o r «le refe­ c ru z a d a s ). A d e m á s , p a ra c a d a p a la b ra in c o rre c ta d e b e e n u m e r a r U nías las
re n c ia s g u a rd a rá d ic h o n ú m e ro d e lín e a d«>s v e c e s. M o d ifiq u e e l a lg o ritm o , p a la b ra s e n e l d ic c io n a rio q u e s e o b tie n e n m e d ia n te la a p lic a c ió n d e a lg u n a
d e n**do q u e lo s d u p lic a d o s x ó lo s e e n u m e re n u n a vez d e las s ig u ie n te s reg las:
1 2 .1 2 . M o d ifiq u e e l g e n e ra d o r d e re fe re n c ia s c ru z a d a s d e iiH»do q u e si u n a p a la
<i) A ñ a d ir u n ca rá c te r.
b ra a p a re c e e n lín e a s c o n se c u tiv a s , s e e s p e c ifiq u e un rang«» P«»r e je m p lo .
/•) E lim in a r u n carácter.
i f : 2 . 4 , 6 - 9 . 11 «) C a m b ia r c a ra c te re s adv ó cen les.
12.17. Im p le m e n te u n a p p le t in te ra c tiv o q u e m u e s tre c o m o se c o n s tru y e e l á rb o l
Prácticas de program ación d e H u ffm an .
12.18. Im p le m e n te u n p ro g ra m a c o m p le to p u ra la c o m p re s ió n d e fic h e ro s N«> se
12.13. IX -sco m p o g a e l A n a l i z a d o r J a v a e n tre s c la s e s: u n a c la s e b a s e a b stra c ta o lv id e d e in c lu ir u n a lg o ritm o p a ra la d e c o m p re s ió n . P a ra e llo , im p le m e n te
q u e re c o ja la fu n c io n a lid a d c o m ú n , y d o s c la s e s d e riv a d a s T e s t b a l a n e e y u n a c la s e B l t S t r e a a . O b s e rv e q u e si e l n ú m e ro to tal d e b its e n e l c ó d ig o
G enéraF.ef e re r.c ia C r u z a d a . d e sa lid a n«» e s u n m ú ltip lo e x a c to d e l n u m e ro d e b its e n u n b y tc . p u e d e n
12.14. A ñada u n a c o m p o n e n te G U I a l g e n e ra d o r d e re fe re n c ia s cru za rla s q u e m a p a re c e r b its p e rd id o s e n e l resultad»» c o m p r im id o D e b e d e fin irs e u n m e ­
c lu v a u n a o p c io n p a ra c o n s u lta s a v a n z a d a s, c o m o m o s tra r n o m b re s o p e c í - c a n is m o p a ra ig n o ra r d ic h o s b its basura
tic«*s a lm a c e n a d o s e n e l á rb o l b in a rio d e b ú sq u e d a (e n lu g a i d e m o s tra r t o ­
d o su c o n te n id o ). Bibliografía
12.15. (¡e n e re e l ín d ic e d e u n lib io . E l fic h e ro d e e n tra d a c o n siste e n u n c o n ju n to
F.I a rtíc u lo o rig in a l so b re e l a lg o ritm o d e H u ffm a n e s |3 |. A lg u n a s v a ria c io n e s se
d e e n tra d a s d e l ín d ic e . C a d a lín e a e s tá fo rm a d a p o r la c a d e n a I X : . se g u id a
«Ic u n a e n tra d a d e l ín d ic e e s c rita e n tr e lla v e s y d e u n n ú m e ro d e p á g in a d is c u te n e n |2 | y | 4 | O tr o e sq u e m a d e c o m p re s ió n m uy c o n o c id o e s la ««*/i/i’««i-
ta m b ié n e n tr e llav es. C a d a s ím b o lo : e n u n a e n tr a d a d e ín d ic e re p re se n ta d o n Z iv -lx m fH 'l. d e s c rito e n | 7 | > |6 |. T ra b a ja g e n e ra n d o s e r ie s d e c ó d ig o s d e lo n ­
g itu d fija . N o rm a lm e n te , d e b e ría m o s g e n e ra r 4 .0 9 6 c ó d ig o s 12 b its p a ra re p re s e n ­
un n iv el in ferio r. L o s s ím b o lo s | ( re p re s e n ta n e l in ic io d e u n ra n g o , y | >
re p re s e n ta e l lin a l d e l rang«» E n a lg u n a s o c a s io n e s , e s te ra n g o p u e d e s e r la ta r la s s u h e a d e n a s m á s fre c u e n te s d e l fic h e ro . 111 y |5 | s o n b u e n o s re s ú m e n e s de
m ism a p á g in a E n e s c c a s o , s ó lo d e b e in d ic a r u n ú n ic o n ú m e r o d e p a g in a lo s e s q u e m a s d e c o m p re s ió n m á s c o m u n e s .
E n o tr o c a s o , n o d e b e c o la p s a r o e x p a n d ir l«*s ra n g o s in d ic a d o s, ('«m u» I T B ell. I II W itte n . y J G C le a ry . -M o d c llin g fo r T e x t C o m p re s s io n - .
e je m p lo , la F ig u ra 12 .2 0 m u e s tra u n p«>sihle fic h e ro d e e n tr a d a y la F ig u ra A C M C o m p u u n g S u n e y s 21 (1 9 8 9 ) 5 5 7 -591.
12.21 m u e s tra la s a lid a c o rre sp o n d ie n te . 2. R . G (ia lla g e r. « V a ria tio n s o n a T h e m e b y H u ffm a n » . IE E E Transa* tions
o n In fo rm a tio n T h v o r y I I -2 4 (1 9 7 8 ). 6 6 8 -6 7 4 .
IX: (S e rie s||) (2 ? .3. D. A . H u ffm a n . « A M o d e l f o r thc C o n stru cció n o f M ín im u m R ed u n d u n cy
rx: !S e r l e a l ! g e o m é l r l e n a | ( ) ( 4) C o d c s » . P r o c e e J in g s o f llie l l i h 4 0 (1 9 5 2 ). 1098-1101.
I X: (C onstante d e E uler) 14' 4 I ) E K n u th . - D y n a in ic H u ffm a n C o d in g » . J o u r n a l o f A lg o r ith m s 6
IX: (Seri*n¡geomót r l e a s | ) | (4)
IX: (Ser í e s ( a r i tm é ti c a * ! ( ) (1 9 8 5 ) . 163-180.
! 4)
rx: (S e r i e s !a r i t r e e * l e a s l ) 5. I ) A . I.c lc w c r y I ) S H irs c h b c rg . « D a ta C o m p r e s ió n » . A C M C o m p u lin g
IX: ( S e r í e s ( a r m ó n i c a s | () (5) S u n e y s 1 9 (1 9 8 7 ) . 2 6 1 -2 9 6
I X:(C onstante de Euier) (5) 6. I A W e lc li. - A T c c h n iq u e fo r H ig h -IV ifo rm a n c e D ata C o m p ren sió n » .
[Ser i e s ' a r m ó n i c a u | 1 ) (5 1
IX: ( S e r í e s | i ) / CI C o m p u te r 17 (1 9 8 4 ). 8 -1 9
7. J Z iv y A I e in p e l. -C n m p re ssio n «»l Ii k Iiv id u ai S e q u e n c e s via V ariable-R ale
F igu ro 12.20 Entrad o senclUa d e l Ejercicio 1? 15 C o d in g » . IK K E Ira n su ctio n s o n In form ation T h e o n I I -24 (1978). 530-536.
C A P Í T U L O

13 Simulación

U n u s o im p ó rta m e d e l c o m p u ta d o r e s e l d e la sim u la c ió n , E n u n a sim u la ­


c ió n . e l c o m p u ta d o r e m u la e l fu n c io n a m ie n to d e u n s iste m a real y re c o g e
e s ta d ís tic a s . C o m o e je m p lo , pued e q u e q u e ra m o s sim u la r e l fu n c io n a ­
m ie n to d e u n b a n c o c o n L v e n ta n illa s p a ra d e te rm in a r c u á l e s e l v a lo r m ín im o d e i
c o n e l q u e se c o n s ig u e u n tie m p o d e s e n ic io r a /o n a b le . l 's a r u n c o m p u ta d o r pro-
p o rc io n a ría g ra n d e s v e n ta ja s. E n p rim e r lu g ar, la in fo rm a c ió n se re c o g e ría s in m o ­
le s ta r a lo s c lie n te s . E n s e g u n d o lu g a r, u n a s im u la c ió n p o r c o m p u ta d o r p u e d e ser
m u c h o m á s rá p id a q u e la im p le m e n ta c ió n re a l d e b id o a la v e lo c id a d d e l m ism o
E n te rc e r lu g a r, se p o d ría re p lic a r fá c ilm e n te la sim u la c ió n . E n m u c h o s c a s o s , la
e le c c ió n d e u n a e s tru c tu ra d e dati*s a p ro p ia d a n o s p u e d e a y u d a r a m e jo ra r la e f i­
c ie n c ia d e la sim u la c ió n .
E n e s te c a p ítu lo verem os:

• 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.

13.1 El problem a Josephus

E l p r o b le m a J o s e p h u s e s e l sig u ie n te juego. S e s ie n ta n N pcrs»*nas. n u m e ra d a s de


I a fo rm a n d o u n c írc u lo . S e p a s a u n a p a ta ta c a lie n te e m p e z a n d o e n la p erso n a
I. D e sp u é s d e p a s a r A l v e c e s la p a ta ta , s e e lim in a a la p e rs o n a q u e tie n e la p atata,
el c ír c u lo se e stre c h a v e l ju e g o c o n tin ú a , to m a n d o la p a ta ta la p e rs o n a se n tad a
d e sp u é s d e la q u e h a s id o e lim in a d a . L a p e rs o n a q u e s e m a n tie n e h a s ta e l fin al g a ­
n a E s b a sta n te h a b itu a l c o n s id e ra r q u e \ f e s u n a c o n sta n te d e l ju e g o , a u n q u e se
p u e d e u s a r u n g e n e ra d o r d e n ú m e ro s alcat«>ru*s p a ra c a m b ia r \ l tra s c a d a e lim i­
n ació n
E l p ro b le m a Jo s e p h u s su rg ió e n e l p rim e r sig lo A .C . e n u n a c u e v a d e u n a m o n ­
ta ñ a e n Isra e l, d o n d e lo s c e ló le s ju d ío s e s ta b a n s ie n d o a se d ia d o s p o r so ld a d o s n v
m a n o s. El h is to ria d o r Jo s e p h u s s e e n c o n tra b a e n tre e llo s . P ara c o n s te rn a c ió n de
Jo s e p h u s. Im c e ló le s v o ta r o n h a c e r u n p a c to d e s u ic id io e n lu g ar d e re n d irse a lo s
ro m a n o s. L l s u g irió e l ju e g o a q u í m encionad»» L a p a ta ta c a lie n te e ra la s e n te n c ia
d e m u e rte p ara la p e rs o n a s e n ta d a ju n to a la q u e te n ía la p a ta ta . Jo s e p h u s a m a ñ ó el
iiie c o n ;u a u u e d a r e l ú ltim o v c o n v e n c ió a la p e n ú ltim a v íc tim a d e q u e d e b ía n ren-
e n la lista , im p le m c n ta m o s e l pase re in ic ia n d o e l i«orador c o n ol p rim o r e le m e n to
E sta a c c ió n im ita u n c írc u lo . C u a n d o h o rn o s te r m in a d o tío p asar, e lim in a m o s el
e le m e n to so b re e l q u e lia u le re i/a d o e l iterad o r
P o r ra /o n e s e x p lic a d a s e n ol C a p ítu lo 16. e s m á s fácil e lim in a r e l e le m e n to
p o s te n o r a la p o s ic ió n a c tu a l u s a n d o e l m é to d o c l i m i n o r S i g . E s to se re flo ja e n
ol c ó d ig o d e la F ig u ra 13.2. d o n d e in ic ia li/a m o s a c t u a l c<*n e l ú ltim o ju g a d o r , e n
W 1 (b i 1 íc ) 1 rd> ' le í lu g a r d o l p rim e ro . E n las lin c a s 7 y 8 s e d e c la ra n la lista e n la /a d a a n ó n im a y su
ite ra d o r. U sa n d o u n b u c le c o n s tru im o s la lis ta in ic ia l e n las lín e a s 12 y 13. L a s e ­
Fi g ur o 13.1 El p ro b lem a Josephus En c o d o poso e l circu lo mOs oscuro representa
m á n tic a tío i n s e r t a r , ta l y c o m o s e e sp e c ific a e n la c la s e d e la F ig u ra 16.7. nos
a la persona q u e tie n e ¡a p a ta ta m lcloim ente. y e l ligeram ente som-
d ic e q u e la s in s e rc io n e s se re a liz a n tr a s la p o s ic ió n dol ite ra d o r > q u e e l re s u lta d o
b rea d o representa a i jugod or q u e re cib e la p a ta ta c a lle n te (y q u e por
tan to es elim inado). Los pases se realizan e n e l sentido d e las agujes d e u n a in s e rc ió n c o lo c a e l ite ra d o r e n la p o s ic ió n re c ié n in s e rta d a . D o e s ta lo rm a
del reloj o b te n e m o s la lista d e se a d a .

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

13.2.1 Ideas básicas

U n a sim u la c ió n d e e v e n to s d is c re to s c o n s is te e n e l p ro c e s a m ie n to d e e v e n to s. 13.2.2 Ejem plo: sim ulación d e un b an co d e m ódem s


A q u í lo s d o s e v e n to s a c o n s id e ra r s o n (u ) la lle g a d a d e u n c lie n te y <bl la s a lid a d e
u n c lie n te , d e ja n d o lib re u n a v e n ta n illa . E l p u n to c ru c ia l e n la g e stió n d e u n a s im u la c ió n e s la o rg a n iz a c ió n «le lo s e v e n to s
P o d e m o s u sa r u n a fu n c ió n d e p ro b a b ilid a d p a ra g e n e ra r u n a se c u e n c ia d e e n ­ e n u n a c«»lu d e p rio rid a d . P a ra c e n tr a m o s e n este p u n to , c o n sid e ra re m o s u n a s im u ­
tra d a fo rm a d a p o r p a re s o rd e n a d o s d e tie m p o s «le lleg a d u > s e rv ic io «le c a d a clien la c ió n d e u n s iste m a m uy s im p le : un h u m o ¡le m ó d e m s d e l c e n tr o d e c o m p u ta c ió n
te. o rd e n a d o s p o r tie m p o «le lle g a d a 2. N«* n e c e s ita m o s u s a r la h o ra e x a c ta d e l «lía. d e u n a u n iv e rsid a d .
sin«» q u e u s a m o s u n a u n id a d a la q u e n o s re fe rim o s c o m o tic. U n b a n c o d e n ió d e m s c o n siste e n u n a g ran c o le c c ió n «le m ó d e m s. P o r eje m p lo ,
la U n iv e rs id a d In te rn a c io n a l «le f l o r i d a (I IU ) tie n e % nn'xlcm s d is p o n ib le s p ara
I 'jb i l u l.n l g e n e r a i r t m a l m « Ir i i n n p o , - n i r r I le p a d a * , g a r a n t i z a n * ! .. ij«h- « S u * %e p r o d u c e n r n o r d e n c o m o lo s e stu d ia n te s. A u n m i n ia n s e a c c e d e m a rc a n d o u n n ú m e ro d e te lé fo n o . S i a lg u ­
n o d e lo s •*» m ó d e m s e s tá d is p o n ib le , e n to n c e s e l u s u a rio s e c o n e c to a u n o de
ello *, p e r o M ve o t a n u s a n d o lo d o * , e n to n c e s e l te lé fo n o d a rá la s e ñ a l d e « v u p ad o l - i c la s e d e la sim u lació n req u iere <xr.i c la s e q u e re p resen ta los ev en to s, b c u a l i
N u e stra s im u la c ió n m o d e li/a e l s e rv ic io p ro p o rc io n a d o p o r e l b a n c o d e m ó d em s. recibe e l n o m b re d e c la s e E v e n t o y se m u estra e n la F igura 13.5. l a * atrib u to s M»n e l '<
I.a s s a n a b le s s«*n las sig u ie n te s: n u m e n • d e c lie n te , e l instante e n q u e su ce d e rá e l e v e n to y u n a in d icació n d e l tip o del °
e v en to (MARCADO o COLGADO). Si e s ta sim u lació n fu era m á s co m p leja, c o n \a r io s ti­
• 1-1 n u m e ro d e n x td c u is e n e l b a n c o p o s d e e v e n to s, c o n se g u n d a d c o n v ertiríam o s a E v e n t o e n una c la s e base v d o m a r ía ­
• L a d is trib u c ió n d e pr«*babilidad q u e g o b ie rn a lo s in te n to s d e m a n a d o . m o s subc lases d e ella. N o I** h ac e m o s a q u í p ara no co m p lic a r las c o sa s n i o scu recer el
• L a d is trib u c ió n d e p ro b a b ilid a d q u e g o b ie rn a e l tie m p o d e c o n e x ió n fu n cio nam iento b ásico d e l a lg o ritm o d e sim ulación, l - i clase E v e n t o co n tien e c o n s ­
• L l tie m p o (re a l) q u e c u b rirá la sim u la c ió n . tructores e im plem enta la in te rfa / d e la c la s e C o m p a ra b le . O b serv e q u e tiene un
co n structo r d e c e ro parám etro* d e form u que se p u e d e c re a r u n cen tin ela / p u ra ej
L a s im u la c ió n d e l b a n c o d e m ó d e m s e s u n a v e rs ió n sim p lific a d a d e la s im u la ­
una c o la d e p rioridad q u e a lm a c e n a una co lec ció n d e o b je to s tic la clase E v e n t o . L a ©i1
c ió n d e lo s c a je ro s d e l b a n c o p o rq u e n o h a y c o la d e e sp e ra . C a d a m a rc a d o e s una
c lase E v e n t o u sa a tr ib u t a am isto so s p o ra las c la se s d e n tro d e l m ism o paquete
lle g a d a , y e l tie m p o d e c o n e x ió n e s e l tie m p o d e se rv ic io . E lim in a n d o la c o la d e
lu í c la s e p a ra la s im u la c ió n d e lo s m ó d e m s. sim K o d e m . s e m u e s tra e n la Figu
e s p e ra , e lim in a m o s la n e c e s id a d d e m a n te n e r u n a e s tru c tu r a c o la , p o r lo q u e m »-
ra 13 .6 . C o n s ta d e u n c o n ju n to d e a trib u to s. u n c o n s tru c to r y d o s m é to d o s. L os
la m e n te n e c e s ita m o s u n a e s tru c tu r a d e d a to s , la c o la d e p rio rid a d . E n e l E je r c i­ a trib u to s in c lu y e n u n n ú m e ro a le a to rio r m o s tra d o e n la lín e a 2 5 . E n la lín e a 26.
c io 13.17 s e Ic p id e in c o r p o ra r u n a c o la , d e fo rm a q u e si to d o s lo s m ó d e m s e s tá n c o n jE v e n t o s se d e c la ra c o m o u n a C o U P r i o r i d a d d e o b je to s E v e n t o . H ay
o c u p a d o s s e ir á n c o lo c a n d o e n la c o la h a s ta /. lla m a d a s . P a ra s im p lific a r la s c o ­
tre s a trib u to s m á s . U n o d e e llo s e s módems L i b r e s , q u e in ic ia lm c n te e s e l n ú m e ro
s a s . n o c a lc u la m o s v a lo re s e s ta d ís tic o s , s in o q u e e n s u lu g a r lis ta m o s c a d a ex e n d e m ó d e m s e n la s im u la c ió n , p e ro q u e c a m b ia a m e d id a q u e lo s u s u a rio s se c o n e c ­
lo a m e d id a q u e s e p ro d u c e n . T a m b ié n s u p o n e m o s q u e lo s in te n to s d e c o n e x ió n ta n y c u e lg a n L o s o tr o s d o s s o n t p o M o d io L la m a d a y f r e d . 1 a m a d a s , q u e so n
su c e d e n a in te rv a lo s c o n s ta n te s , m ie n tr a s q u e e n u n a b u e n a s im u la c ió n s e r ia n e ­
p a rá m e tro s d e la sim u la c ió n . R e c u e rd e q u e se lle v a rá a c u b o u n in te n to d e m a rc a ­
c e s a r io m o d e li/a r e l tie m p o e n tr e lle g a d a s m e d ia n te u n p r o c e s o a le a to r io . E n la
d o c a d a t r e c L la m a d a s lie s. E l c o n s tru c to r e n las lín e a s IS y I ó . q u e se im ple-
F ig u ra 13 4 se m u e s tra la s a lid a d e u n a sim u la c ió n
m e n ta e n la F ig u ra 1 3 .7 . in ic ia li/a e s to s a tr ib u la s y c o lo c a la p rim e ra lle g a d a e n la
c o la d e p ru » n d a d c o n j E v e n t o s .
1 El u s u a r io 0 m a rca en m in u to 0 y se c o n e c ta d u ra n te 1 m in u to s
2 El u s u a r io - c u e lg a en m in uto l
3 El 1 I s p o r t S o p o r t e . •: im p o rt Sopor t « . C o m p arab le.-
u s u a r lo 1 m a rca en m in uto 1 y se c o n e c ta d u ra n te 5 m in u to s
4 £1 u s u a r io 2 m a rca en m in uto 2 y se c o n e c ta d u ra n te 4 m in u to s 2 /••
5 El u s u a r io 3 • L a c l a s e d e l o s e v e n to s .
1 m arca en m in uto 3 y se c o n e c ta d u ra n te : m in u to s
6 El u s u a r io 4 • Im p lem en ta e l I n t e r f a : C o m p a ra b le
4 m a rca en m in uto 4 p o ro r e c ib e s e ñ a l de ocupado
7 5 • p a r a o r d e n a r l o s e v e n to s p o r e l in s t a n t e en que s e p ro d u c e n .
El u s u a r io 5 m arca en m in uto 5 p e ro r e c ib e s e ñ a l de ocupado
8 El u s u a r io 6 •/
6 m arca en m in uto 6 p e ro r o e ib e s e ñ a l de ocupado
7 c l a s s E v e n to Im plem en to C o m p a ra b le
9 El u s u a r io 1 c u e lg a en m in u to 6
8 (
10 El u s u a rL o 2 c u e lg a ©n m in u to 6 9 a t a t i c f i n a l In t MARCADO = i r
11 El u s u a r io 7 m arca e n m in uto ’ y s e c o n e c ta d u ra n t e - m in u to s
10 s t a t i c f i n a l i n t COLGADO = 2;
12 El u su a rlo n m arca en m in uto 8 y s e c o n e c to d u ra n t e 6 m in u to s
11
13 El u s u a r lo 9 m arca e n .m in uto 9 p e ro r e c ib o s e ñ a l de ocupado 12 p u b l i c Evento» I
14 El u sua r i o 10 m a rca en m in uto 10 p e ro r e c ib e s e f ia l de ocupado 13 ( t h i s l 0 . 0 . MARCADO I ; I
15 u s u a r io 11 *nuir « vcri
i l m in u to 1 1 p ero r e c ib e s e f ia l d e ocupado
14
16 E_ u s u a r io 12 m a rca en m in u to 12 p e ro r e c ib e s e ñ a l d e ocupado 15 p u b l i c E v e n to ! in t n o r b r e , l o n a t p o . i n t t i p o ¡
17 r• u s u a r io 1) m a rca en m in uto 13 p e ro r e c ib e s e ñ a l de ocupado 16 ( q u i e n * n e m b r e ; tiem*x. • t p o ; q u e - t i p o ; »
18 El u s u a r io 3 c u e lg a en m in uto 14 17
19 -- u s u a r io 14 m arca en m in uto 14 V SO c o n e c ta d u ra n t 0 6 m in u to s 18 p u b l i c b o o l e a n menortfue! C o m p a ra b le l d e r )
20 E1 u s u a r io 8 c u e lg a en m in uto 14 19 ( r e t u r n tiempo < ( (Evento) l d e r ) . tiem po; |
21 E. u s u a r io 15 m arca en m in u to 15 y s e c o n e c ta d u ra n t e 3 m in u to s 20
22 E¿ u n u n rlo 7 c u e lg a on m in u to 15 21 public int compara! Comparable lder I
23 El u e u a r lo 16 m arca en m in u to 16 y i i e c o n e c ta d u ra n t e 5 m in u to s 22 l
24 El u suar i o 17 m arca en m in u to 17 p e ro r e c ib e s e ñ a l de ocupado 23 r e t u r n menorQue< l d e r I 7 - 1 :
25 El u s u a r lo 15 c u e lg a en ra in u tu 1 H 24 l d e r .menor 0u«» I t n i s ) ? 1 :
26 Ei u s u a r io 18 m arca en m in u to 18 y s e c o n e c t a d u ra n te ~ m in u to s 25
27 El u s u a r lo 19 m arca en m in u to 19 p e ro r e c ib e s e ñ a l de o c u p a d o 26
27 int quien; / / í f ú me r o d e l u s u a r i o
28 long tiem po; / / C u An d o s u c e d e r é e l evento
Fi gu r o 13 4 Ejem plo d o sobda p o ra lo am u lo ció n d e l b a n c o d o m ódem s tone
29 in t que; / / MARCADO o COLGADO
m os 3 m ódem s se In ten ta un m o rca d o c o d a m inuto, e l tiem po m e­
30 )
dio d e conex ión es d e 5 minuto*. la sim ulación se e je c u ta du ran te 10
minutos Figuro 13.5 C l a s e E v e n t o u s a d a e n la s im u la c ió n d e l b o n c o d e m ó d e m s .
1 i m p o r t Kx<-«ipclorio» • •
2 import j ó v a . u t ; l .•; 1 n Usado « o la m e n to p o r filgLlamnda
3 i m p o r t Es» r u c t u r . i K D A t o H . ' j 2 p r í v a t e i n t num U suarío = 0:
4 / / C l a a o Si mM' xPtmi l l o v a i c a b o u n a s i m u l a c i ó n 3 p r í v a l e l o n g t p o S l g L l a m a d a • 0;
5 // 4
6 / / CONSTRUCTOR; c o n t r o » p a rá m e tr o » : nú m ero d o mórlnm*. 5 /••
> tie m p o m edio do c o n e x i ó n y t serepo e r . t r e 6 * C o lo c a un n u e v o e v e n t o MARCADO e n l a c o l a d e e v e n t o »
8 / / lle g a rla s 7 • Luego a v a n z a e l r e l o j r - s s t a que- s u c e d a * 1 s i g u i e n t e
9 6 • w a n t o MARCADO. En l a p r á c t i c a , u s a r í a m o s u n num ero
J® ..........' ..............M E T O D O S P U B L I C O S ............................................................................... 9 • a le a t o r i o p a ra determ inar =. tie rp o .
II v o id e ; e c S l x t > --» E je c u ta un a f iin u la c io n 10 • /

11 prívate void sigLiom aJai long d e l t a )


13 •• 12 (
14 • C l a s e SlnM -xíam.
13 c o n j K v e n t o a . i n r i e r t a r 1 new E v e n t o ! n u m U s u a r i o « • . t p o S i g L l a n a d a .
15 ■/
14 E v e r . t O • MARCADO ) l :
16 p u b l i c r L a s a SioModen
17 j 15 t . p o S l g L l a m a d a *« d e l t a ;
16 )
18 p u b l i c Slm M oden( ¡ n r modcn.*;. d o u h l e tp o M ed io ,
l"n<j I n t e r v a l o I F i gur o 13 8 Rutina G i g L L a m a d a . quo c o lo c a u n nuevo © vento MARCADO e n lo
20 i /• F ig u r a 1 J .7 • }
c o la d e even to s v o van z a ©i reloi h a sta el
m om ento e n e l qu e se pro­
22 p ul;l 11v o i d e je e S tm i lo n y t lem po P a ra d a l d u c e o l siguiente e ve n to MARCADO.
23 f / • Figura 13.9 • )

g u íe m e u s u a rio q u e in te n ta rá m a r e a r y e l tie m p o e n e l q u e s e p ro d u c irá e l e v e n to


25 p r i v a t e Random r : , , N u n e ro a l e a t o r i o
» p r i v a t » C o l a P r i o r u l a d c o n jE v e n t o o ./ / E v en to » p e n d ie n te »
D e n u e v o , su p o n e m o s, p a ra sim p lific a r, q u e las lla m a d a s se p ro d u c e n a in te rv a lo s
re g u la re s. I n la p ra c tic a , u s a ría m o s u n g e n e ra d o r d e n ú m e ro s a le a to rio s p a ra ino-
2 8 / / P a rá m e tro s B á s ic o s d e ¡a s im u la c ió n
d c li/a r la se c u e n c ia d e m arcad o s.
2
40 p . l . a . e d o u b l e tp© M *di o L l a ñ a d a :

/ /
N úm ero d e
L ong i tu d
módem»
d e u n a
» in u sa r
1 1a r a d a
t i o tr o m é to d o e s e j e c S i m . m o s tra d o e n la F ig u ra 1 3 .9 . a l q u e s e lla m a p a ra
p r í v a t e long 1 re c L la m a d a * ; / , I n t e r v a l o e n t r e lla m ad a s e je c u ta r la s im u la c ió n c o m p le ta F.s la n irín a q u e h a c e c a s i to d o e l tra b a jo . Se
lla m a c o n u n ú n ic o p a rá m e tr o q u e in d ic a la d u r a c ió n d e l a sim u la c ió n . M ie n tra s
3 3 p r í v a t e v o id s ig L la n a d a i ¿cng d e l t a »
34 ( / • f i g u r a 1 3 .8 • / ) e l c o n ju n to d e e v e n to s n o s e a v a c ío , p ro c e s a m o s e v e n to s O b s e rv e q u e e l l o no
d e b e ría s u c e d e r n u n c a , p o rq u e c u a n d o lle g a m o s a la lin e a 13. hay e x a c ta m e n te
u n a p e tic ió n d e m a re a d o e n la c o la d e p rio rid a d , m á s u n a p e tic ió n d e c o lg a d o p ara
Figura 13 6 £squok>to cto la c ia s e Sim M odem .
c a d a m ó d e m c o n e c ta d o e n e s c m o m e n to . S ie m p re q u e e lim in a m o s u n e v e n to e n la
lín e a 13 y se c o n firm a q u e e s u n m a rc a d o , g e n e ra m o s u n n u e v o e v e n to d e m a rc a ­
d o e n la lín e a 4 2 . A d e m á s, e n la lín e a 3 7 se g e n e ra u n e v e n to d e c o lg a d o c u a n d o
• C onstructor. el m a re a d o lic ite é x it o P o r la n ío , la ú n ic a fo rm a d e te rm in a r la m im a e s h a c ie n d o
• g p a r a i r a n d ama núm ero d e módems. q u e e n a lg ú n m o m e n to s i y L l a m a d a n o g e n e re u n e v e n to , o e je c u ta n d o a ejec u tar
Uparam tp o M e d io m e d i a de una l l a n a d a
d u r a c ió n .
• 9p a r a n intervalo tiem po medio e n t r e llam ada». la in s tru c c ió n b r e a k d e la lín e a 17 (lo c u a l e s m á s p ro b a b le !.
A c o n tin u a c ió n se m u e s tra u n re s u m e n d e c ó m o se p ro c e sa n los d is tin to s e v e n ­
public SimM odm nt in r rrodom», d o u b le tpoM edio. to s. S i e l e v e n to e s d e c o lg a d o , in c re m e n ta m o s m od«m *L ibr© sa e n la línea 21 e im ­
lo n g i n t e r v a l o I
p rim im o s u n m e n sa je e n las lin e a s 2 2 y 2 3 . S i e l e v e n to e s d e m a rc a d o , g en eram o s
• n e w Kor. t I c u l o B i r . a r io ( new E v e n to í » »> u n a p arle d e u n a frase c o m o sa lid a q u e re g istra e l in ten to , y e n to n c e s si hay m ó d em s
m c d e o s L ib re s = modem»; d is p o n ib le s, c o n e c ta m o s a l u su a rio . P a ra e llo , d c c re m e ni a m o s m o d e r e s L i b r e s e n
tpoM edlO L Iam ada • tp cM e d io ;
la lín e a 31 y g e n e ra m o s u n tie m p o d e c o n e x ió n (u s a n d o u n a d is trib u c ió n d e P o is-
íre c L ia m a d a a - i n te r v a l o ;
s o n e n lu g a r d e u n a u n ifo rm e» e n la lin c a 3 2 . E n to n c e s im p rim im o s e l re s to d e la
= new R ondan i );
» ig L la ñ a d a I f r e c L la m a d a s »; P l a n i f i c a la p r im e ra lla r-id a lín e a d e s a lid a e n la s lín e a s 33 y 34 y a ñ a d im o s u n e v e n to d e c o lg a d o a l c o n ju n to
d e e v e n to s (lin c a s 3 5 a 3 7 ). S i n o hay m ó d e m s lib re s, g e n e ra m o s u n m e n s a je d e
Figuro 13.7 C o n stru c to r Sim M odem s e ñ a l d e o c u p a d o . F n a m b o s c a s o s , s e c o n c lu y e g e n e ra n d o u n n u e v o e v e n to de­
m a rc a d o . 1.a F ig u ra 13 .1 0 m u e s tra e l e s ta d o d e la c o la d e p rio rid a d d e s p u é s d e c a ­
d a u l i n l n a r M l n p a ra las p rim e ra s fa s e s d e la s a lid a d e l e je m p lo q u e se m u estra
L a c la s e p a ra la s im u la c ió n c o n s ta so lu m c n le d e d o s m é to d o s. L l p rim e ro
e n la F ig u ra 13.4 E l m o m e n to e n q u e s e p ro d u c e c a d a e v e n to s e m u e s tra e n n e g ri­
s ig L la m a d a . m o s iru d o e n la F ig u ra 13.8. a ñ u d e u n a p e tic ió n d e m a r c a d o u l c o n ’
ta . y e l n ú m e ro d e m ó d e m s lib ro s <si h a y a lg u n o ) s e m u e s tra a la d e re c h a d e la
j u n i o d e c v c n lo v M u n tic n c d o s v u riu b ie s d e c la s e (g lo b a le s): e l n ú m e ro d e l si-
c o la ilc p rio rid a d L a s e c u e n c ia d e p a so s e s la siguiente:
1 ••
2 • E j e c u t a ia s i m u l a c i ó n h a s t a l l e g a r a t p o P a r a d a .
3

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 .

public void ejecSim . long tpoParada 1


C o
MA="A_C :n

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 );


^ 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 * >;

nigLlamaOa( IrecLlnmadas Uujno X T«p 1 1

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 ro b le m a J o s e p h u s P ro b le m a e n e l q u e s e p a s a re p e tid a m e n te u n a p a ta ta c a lie n ­ m u e s tre lo siguiente:


te. C u a n d o se te rm in a «le p asar, e l ju g a d o r «pie s e q u e d a c o n la p a ta ta q u e d a a) S i A e s p a r. V(V> = 1 /i V 2) - I. ...r ., s i i
e lim in a d o E l ju e g o c o n tin ú a e n to n c e s , y e l ju g a d o r q u e que«le e l ú ltim o gana b) S i jV e s im p a r y J \\A i 2 1 ) á I. e n to n c e s Jt.V ) - - /( ! N - I» - -v
s im u la c ió n U so u u p « in a n tc «le l«»s c«»mpulad«>res e n e l q u e e l c im ip u ta d o r e m u la el <•) S i JV e s im p a r y 7 (f «V 21» = L e n to n c e s h X ) - JV.
fu n c io n a m ie n to «le u n s is te m a re a l v g e n e r a m e d id a s e sta d ís tic a s d e su c«»m-
1 3 .7 . U se l«*s re s u lta d o s d e l E je rc ic io 13.6 p a ra e sc rib ir u n a lg o ritm o q u e d e ­
p o rta m ionio.
v u e lv a e l g a n a d o r d e u n ju e g o J o s e p h u s c o n N ju g a d o r e s y M - 1. «A u a l
s im u la c ió n d ir ig id a p o r eventos S im u la c ió n e n l.i q u e e n c a d a p a s o e l re lo j se
a v a n z a h a s ta e l sig u ie n te e v e n to , e s e l tie m p o d e e je c u c ió n d e d ic h o a lg o ritm o ?
13 .8 . P ro p o rc io n e u n a fiírm u la g e n e ra l p a ra e l g a n a d o r «k- u n ju e g o Jo s e p h u s con
s im u la c ió n d ir ig id a p o r tie m p o s d iscre to s S im u la c ió n e n la q u e c a d a u n u la d d e
tie m p o s e p ro c e s a c o n se c u tiv a m e n te . R e su lta in a p ro p ia d a si e l in te rv a lo e n tre N juga«k*res c u a n d o M - 2.
13.9. U s a n d o e l a lg o ritm o p a ra JV» 20. d e te rm in e e l «*r»kn d e in s e rc ió n e n el
e v e n to s su c e s iv o s e s g ra n d e ,
A B B C o n R a n g o .
tic U n id a d d e tie m p o e n u n a sim u la c ió n .
13.10. D e m u e stre q u e d e s p u é s d e a p lic a r c o n s t r u i r A r b o l (d e la F ig u ra 13.3). b) L a c o la d e p rio rid a d a sm tó ú c a m c n lo in e fic ie n te q u e se
c a d a h o ja e s tá e n u n o d e lo s d o s ú ltim o s n iv e le s d e l á rb o l E je rc ic io 6 .1 7 .
r) A rb o le s d e e n s a n c h a m ie n to t v é a se e l C a p ítu lo 2 1 j.
d) M o n tíc u lo s s e s g a d o s ' ( trV/.vc e l C a p ítu lo 22).
Problem as p rácticos r) M o n tíc u lo s d e e m p a re ja m ie n to s4! tcto.w- e l C a p ítu lo 2 2 )

13.19. Im p lem en to u n a p p le t q u e ilu stre e l fu n c io n a m ie n to d e l j


1 3 .1 1. E sc rib a u n p ro g ra m a q u e re s u e lv a la v e rs ió n h is tó ric a del p ro b le m a Jo sé-
u s a n d o ta n to e l a lg o ritm o q u e u t i h / a u n a lista e n la z a d a c o m
p h u s. P ro p o rc io n e lo s a lg o ritm o s q u e h a c e n u so d e la lista e n la z a d a y del
u n á rb o l d e b ú sq u ed a.
á rb o l d e búsq u ed a.
13.12. Im p le m e n te e l a lg o ritm o Jo s e p h u s u s a n d o u n a c o la C a d a p a s e d e la p atata
v ie n e d a d o p o r u n q u ¡ t < a r P r i m e r o se g u id o d e u n i n s e r t a r .
1 3 .1 3 . M o d ifiq u e la s im u la c ió n d e fo rm a q u e e l re lo j s e re p re se n te m e d ia n te una
v a riab le d e tip o d o u b l e , y ta n to e l tie m p o e n tr e d o s in te n to s d e m a rca d o
c o m o e l tie m p o d e c o n e x ió n se m o d e lic e n c o n u n a d is trib u c ió n e x p o n e n ­
cial.
13.14. M o d ifiq u e l a s im u la c ió n d e l b a n c o d e m ó d e m s d e fo rm a q u e E v e n t o sea
u n a c la s e b a s e a b s tra c ta , y E v e n t o M a r c a d o y E v e n t o c o l g a d o s e a n c l a ­
se s d e riv a d a s d e e lla . L a c la s e E v e n t o d e b e ría a lm a c e n a r una re fe re n c ia
i : te n c o m o a tr ib u to a d ic io n a l, q u e se in ic ia liz a rfa e n e l c o n s tm c to i
T a m b ié n d e b e ría p ro p o rc io n a rs e un m é to d o a b s tra c to im p le m e n ta d o e n la s
c la s e s d e riv a d a s , lla m a d o p r o e e s . i i E v e n t o , al q u e se lla m a ría d e s d e
e j e c S i m p a ra p ro c e s a r e l e v e n to .

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;

a) l_a c o la d e p rio rid a d u sin tó tic a m c M c in e fic ie n te q u e s e d e s c rib e e n el X ilft 1 I n i lip k - s - s k i * » h c # |* “


E je rc ic io 6.16. V Jrl T f c n m ir le s - | m i n n £ h c a p s » .
14 Grofos y caminos

E sic c a p ítu lo e s tu d ia lo s g r a fo s > m u e s tra c ó m o re s o lv e r u n p ro b le m a c o n c re ­


to d e e ra n in te ré s, d e n o m in a d o c á lc u lo d e c a m in o s m ín im o s. É ste e s u n p r o ­
b le m a fu n d a m e n ta l e n c o m p u ta c ió n y a q u e m u c h a s a p lic a c io n e s in te re s a n ­
te s p u e d e n m o d e la rs e m e d ia n te u n g ra to . E je m p lo s d e c á lc u lo d e l c a m in o m ín im o
son: c a lc u la r la ru ta m á s ráp id a e n u n tra n s p o rte , o d irig ir e l c o rr e o e le c tró n ic o a
l r a \ é s d e u n a re d d e c o m p u ta d o re s . E ste c a p ítu lo e s tu d ia d is e rs a s v a n a n te s del
p ro b le m a q u e d e p e n d e n d e c ó m o in te rp re te m o s e l s ig n ific a d o d e - m ín i m o - y la
c la s e d e p ro p ie d a d e s q u e te n g a n lo s g ra to s . L os p ro b le m a s d e b ú sq u e d a d e l c a m i­
no m ín im o so n in te re sa n te s p o rq u e , a u n q u e lo s a lg o ritm o s so n s e n c illo s , ta m b ié n
so n le n to s c o n g ra to s d e g ran ta m a ñ o a m e n o s q u e s e te n g a c u id a d o c o n las e s tru c ­
tu ras d e d a to s eleg id as.
E n e s te c a p ítu lo v erem o s:
• D e fin ic io n e s (o rin a le s d e g ra fo y d e sus c o m p o n e n te s.
• l s estructuras de- datos utilizadas para representar un
• M g o rítm o s para re s o lv e r d i \ e r s .i ' v a ria n te s d e l p ro b le m a d e l c a m in o m ín i­
m o . d a n d o im p le m e n ta c io n e s c o m p le ta s e n J a s a

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 :

ja,,- r,.2». i V >h v ». n. 11 ,.v,. tf'i.v4.tu»j


E = < U ’,. l 4.2». { V y 4». (V 'v \ \ . 8». (V v V 2. 2» >
(<V; . I » . 4 ) . «V2. \ \ . 5». «V4. i ; , , b». (VV. V’v l l )
I .m v é rtic e s a d y a c e n te s a V , so n : V: . V4. \ \ . V,, E n e s te g ra fo | l ' ¡ « 7 y hay u n a d e fin ic ió n e s tá n d a r d e d is p e rs o i P o r tant«*. e s p a rtic u la rm e n te im p o rtan te
¡El = 12. d o n d e ¡51 re p re se n ta e l c a rd in a l d e S q u e lo s a lg o ritm o s q u e d e s a rro lle m o s s e a n e fic ie n te s p a ra g ra f o s d isp e rsu s.
U n »o m in o e n u n g r a f o e s u n a s e c u e n c ia d e v é rtic e s » » . . . . ... M/v u l q u e
t u ’,, w, . i> € E p a ra I $ i < N L a lo n g itu d d e d ic h o c a m in o e s e l n ú m e ro d e a r is ­
ta s e n e l c a m in o , e s d e c ir. V I E slu lo n g itu d s e d e n o m in a lo n g itu d d e l , a n u ía » 14.1.1 Representación
sin i* .so s. l a lo n g itu d d e l m in in o c o n p e s o s e s la s u m a d e lo s c o s te s d e las a rista s
l a i p rim e ra c u e s tió n a c o n s id e ra r e s c ó m o se re p re s e n ta u n g r a lo in te rn a m e n te . Su-

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.2 R ep tesen toclón c o n listos d e a d y o c e n c to d e l grato d e la Figura 14.1.


tos nodos en la lista / representan los vértices o d va c e n fe s a / y e l coste Diccionario
d e la arista correspondiente
Figuro 14.3 Estructuras d e d ato s utilizadas en e l c á lc u lo d e los cam in o s mínimos.
c o n un grato d e e n tra d a to m ad o d e un fichero. El ca m in o co n pesos
m ás co rto d e sd e A h asta C es (A . B . E . D. C ). cu yo co ste e s 76.
En c u a lq u ie r c a s o , e s to n o tie n e g ra n im p o rta n c ia , p u e s la m a y o ría d e lo s a lg o rit­
m os q u e fu n c io n a n c o n g ra fo s se g u irá n fu n c io n a n d o c o n m u h ig r u fm e n lo s q u e
h a y d o s o m á s a ris ta s d e d ife re n te s c o s te s c o n e c ta n d o u n p a r d e v é rtic e s , a u n q u e a lg o ritm o n o c o n o c e m o s lo s n o m b re s d e n in g ú n v é rtic e , ni c u á n to s v é rtic e s h a y . ni
e n a lg ú n c a s o h a b ría q u e to m a r c ie rta s p re c a u c io n e s a l resp e c to . c u á n ta s a rista s . U tiliz a m o s d o s e s tru c tu ra s d e d a to s p a ra re p re s e n ta r e l g ra fo : un
E n la m a y o ría d e las a p lic a c io n e s d e la v id a real lo s v é rtic e s tie n e n n o m b res, d ic c io n a rio y u n a ta b la . M a n te n e r un d ic c io n a rio n o s p e rm itirá d e te r m in a r e l n u ­
e n v ez d e e s ta r d e n o ta d o s p o r n ú m e ro s c o n se c u tiv o s. E n tal c a s o n e c e sita m o s p ro ­ m e ro in te rn o d e c a d a v é rtic e . P o r e je m p lo , y a q u e d e s e l p rim e r v é rtic e e n e l f i­
p o rc io n a r u n a fo rm a d e tra n s fo rm a r d ic h o s n o m b re s e n n ú m e ro s. L a fo rm a m á s fá ­ c h e ro d e e n tra d a , le s e rá a s ig n a d o e l n ú m e ro 0 . c e s e l s e g u n d o v é rtic e e n e l fic h e ­
c il d e h a c e r e s to e s p ro p o rc io n a r u n J ic c iim u r io e n e l q u e s e a s ig n a a c a d a n o m b re ro d e e n tra d a , p o r lo q u e s e le a s ig n a rá e l n ú m e ro I . L a o tra e s tru c tu ra d e d a to s es
d e v é rtic e un n ú m e ro in te rn o e n e l r a n g o d e 0 a | Vi - I (e l n ú m e ro d e v é rtic e s se u n a g ra n ta b la q u e a lm a c e n a in fo rm a c ió n so b re to d o s lo s v é rtic e s . C o m o e s e v i­
d e te rm in a al ir e je c u ta n d o e l p ro g ra m a ). L o s n ú m e ro s in te rn o s se van a sig n a n d o d e n te a p a rtir d e la F ig u ra 14.3, la l a b i a d e l g r a fo m a n tie n e c u a tr o in fo rm a c io n e s
se g ú n se v a le y e n d o e l g ra fo . E l p rim e r n ú m e ro a s ig n a d o e s e l c e ro . C a d a v e / que p o r c a d a v értice:
s e in tro d u c e u n a a ris ta , c o m p ro b a m o s si se le h a a s ig n a d o n ú m e ro a c a d a u n o de
• d i s e : la lo n g itu d d e l c a m in o m á s c o r to (c o n p e s o o s in p eso , d e p e n d ie n d o
lo s do*, v é rtic e s , v ie n d o si e s tá n e n e l d ic c io n a rio . S i e s a sí. u tiliz a m o s e l n ú m ero
del a lg o ritm o ) d e sd e e l v é rtic e d e c o m ie n z o h a s ta e s te v é rtic e . E ste v alo r es
in tern o . E n o tru cu so , a sig n a m o s a l v é rtic e e l sig u ie n te n ú m e ro d is p o n ib le e in s e rta ­
c a lc u la d o p o r e l a lg o ritm o d e b ú sq u e d a d e l c a m in o m ín im o .
m o s e n e l d ic c io n a rio e l n o m b re d e l v értic e ju n to al n ú m e ro . C o n e s ta tra n sfo rm a ­
• a n t : e l v é rtic e a n te rio r e n e l c a m in o m á s c o n o a e s te v értice.
c ió n . to d o s lo s a lg o ritm o s s o b r e g ra to s u tiliz a rá n so la m e n te lo s n ú m e ro s intern o s.
• n o m b r e : e l n o m b re c o rre s p o n d ie n te a e s te v é rtic e . S e fija c u a n d o e l v értice
O c a sio n a lm e n te , n e c e s ita re m o s m o s tra r e l n o m b re re a l d e l v é rtic e y n o e l n ú ­
se c o lo c a e n e l d ic c io n a rio y n o c a m b ia rá n u n ca. N in g u n o d e lo s a lg o ritm o s
m e ro in te rn o , p o r lo q u e d e b e re m o s g u a rd a r, p a ra c a d a n ú m e ro in te rn o , e l c o rr e s ­
d e b ú sq u e d a d e l c a m in o m ín im o lo u tiliz a rá S ó lo s e u tiliz a a l im p rim ir el
p o n d ie n te n o m b re d e v é rtic e . U n a fo rm a d e h a c e r e s to e s g u a rd a r u n a c a d e n a d e
c a m in o final.
c a ra c te re s p a ra c a d a v é rtic e . E sta té c n ic a se u tiliz a rá m á s a d e la n te e n e l c a p ítu lo
• a d y : u n a lista d e v é rtic e s a d y a c e n te s. S e c r e a a l le e r e l g ra fo . N in g u n o de
p ara im p le m e n ta r la c la s e G r a f o . E sta c la s e > los a lg o ritm o s d e b ú sq u e d a d e c a ­
lo s a lg o ritm o s d e b ú sq u e d a d e l c a m in o m ín im o m o d ific a rá d ic h a s listas.
m in o m ín im o re q u ie re n v a ria s e s tru c tu r a s d e d a to s: lis ta s e n la z a d a s , c o la s , tab las
h a s h y c o la s d e p rio rid a d . L a s c o la s y c o la s d e p rio rid a d s e u tiliz a n e n v a rio s c á l­ P a ra se r m á s e s p e c ífic o s , e n la F ig u ra 14.3 lo s e le m e n to s so m b re a d o s n o serán
c u lo s d e c a m in o s m ín im o s. L a s listas e n la z a d a s y ta b la s h a sh s e u tiliz a n p a ra re ­ m o d ific a d o s p o r n in g u n o d e lo s c á lc u lo s d e l a lg o ritm o d e c a m in o m ín im o . E sto s
p re s e n ta r e l g ra fo . E n p a rtic u la r, u n a ta b la h a s h im p le m e n ta e l d icc io n a rio . e le m e n to s re p re s e n ta n e l g r a f o d e e n tra d a y n o c a m b ia rá n a m e n o s q u e c a m b ie el
A n te s d e m o s tra r e l e s q u e le to d e la c la s e G r a f o . e x a m in e m o s la F ig u ra 14.3. g ra fo (q u iz á s p o r la p o s te rio r in c o rp o ra c ió n o e lim in a c ió n d e a rista s). L o s e le m e n ­
q u e m u e s tra c ó m o s e rá re p re s e n ta d o n u e stro g ra fo . C o m o in d ic a la ta b la E n tr a ­ to s q u e n o e s tá n so m b re a d o s s e rá n c o m p u ta d o s p o r lo s a lg o ritm o s d e b ú sq u e d a del
d a , e l u s u a rio p ro p o rc io n a u n a lista d e a rista s , u n a p o r lín e a . A l ir a e je c u ta r el c a m in o m ín im o . A n te s d e l c á lc u lo , p o d e m o s s u p o n e r q u e e s tá n sin im e in h /a r.
L o s a lg o ritm o s d e b ú sq u e d a del c a m in o m ín im o q u e e stu d ia re m o s c o rr e s p o n ­ t
d e n a un ú n ic o o rig e n . E s d e c ir, to d o s su p o n e n u n p u n to d e o rig e n y c a lc u la n los 2 ' E sta c la s e re p re se n ta e l elem ento b ásico
c a m in o s m ín im o s d e sd e e s te p u n to a to d o s lo s d e m á s v é rtic e s . E n e s te e je m p lo , el 3 • a l m a c e n a d o p a r a un v é r t i c e .
p u n to d e c o m ie n /o s e rá A, q u e. d e a c u e rd o c o n e l d ic c io n a rio , tie n e c o m o n ú m e ro 4 •/
5 claau V értice
in te rn o 2. O b s e rv e c ó m o e l a lg o ritm o d e c la ra q u e e l c a m in o m á s c o n o h a s ta A v a ­
6 (
le 0 . E l c a m p o a n t n o s p e rm ite im p rim ir e l c a m in o , y n o s ó lo su lo n g itu d . Por 7 S t r i n g nombre; // El nombre r e a l
e je m p lo , la ta b la in d ic a q u e e l c a m in o m á s c o rto d e sd e e l v é rtic e o rig e n a c (c o n 8 L i s t a ady; II La l i s t a d e a d y a c e n c i a
n ú m e ro in te rn o I » tie n e u n c o s te to ta l d e 7 6 . O b v ia m e n te , e l ú ltim o v é rtic e d e l c a ­ 9
m in o e s c . E l v é rtic e e n e l c a m in o q u e e s tá a n te s d e C e s e l v é rtic e 0 . o sea D. 10 int d i s t ; // C o sto (después do e j e c u t a r e l algoritm o)
A n te s d e D e s tá e l v é rtic e 4 . q u e e s e l E. A n te s d e l E e s tá e l v é rtic e 3 . e s d e c ir, e. 11 in t ant: // V é r t i c e a n t e r i o r e n e l c a m in o mínimo
12 int e x tra; // V ariable e x tr a usada por lo s algoritm os
Y a n te s d e h e s tá e l v é rtic e 2 . e s d e c ir , A . q u e e s e l o rig e n . R e tro c e d ie n d o c o n el
13
c a m p o a n t v a m o s c o n s tru y e n d o e l c a m in o m ín im o A u n q u e e s ta ira z a n o s d a el
14 V ó r t i c e ! S t r i n g nom )
c a m in o e n o rd e n in v e rso , e s s e n c illo in v e rtirlo . El re s to d e e s ta s e c c ió n d e scrib e 15 (
c ó m o s e c o n s tru y e la p arte s o m b re a d a d e la ta b la d e l g r a f o y p re se n ta e l m é to d o 16 n o m b r e ^ nom; I I N om br e c o m p a r t i d o e n t a b l a hash
q u e im p rim e u n c a m in o m ín im o , a s u m ie n d o q u e y a s e han c a lc u la d o lo s c a m p o s 17 a d y = new L i s t a E n l a z a d a < ) ; / / N ue v a l i s t a
d i s t y a n t . L o s a lg o ritm o s p a ra re lle n a r lo s c a m in o s m ín im o s se d is c u tirá n u n o a 18
u n o m u s a d ela n te. 19 )

L a F ig u ra 14.4 m u e s tra e l e le m e n to b á s ic o q u e se c o lo c a e n la s lista s d e a d y a ­ Figura 14.5 l a c la se V e r t i c e a lm a c e n a inform ación d e c a d a vértice


c e n c ia : u n n ú m e ro in te rn o d e v é rtic e y e l c o s te d e la c o rre s p o n d ie n te a ris ta . A s u ­
m im o s q u e la c la s e G r a f o u tiliza un v a lo r d e tip o S t r i n g p a ra e l n o m b re d e l v ér­
1 ím port E stru ctu rau D ato fl.*;
tic e y u n v a lo r d e tip o i n t p a ra e l c o ste d e la a ris ta . L a c la s e V é r t i c e se m u e stra
2 im port S o p o rte .* ; im port Soporte.Com parable;
e n la F ig u ra 14.5. Se p ro p o rc io n a un c a m p o a d ic io n a l d e n o m in a d o e x t r a , q u e ti e ­
3 i mp o r t K x c o p c i o n a o . • :
ne d ife re n te s u s o s se g ú n e l a lg o ritm o . T o d o s lo s d e m á s e le m e n to s s ig u e n la d e s ­ 4 im port j a v a . ú t i l . S tr m g T o k e n iz e r;
c rip c ió n a n terio r. E l ú n ic o m é to d o e s e l c o n stru c to r q u e in ic ia li/a la lista e n la z a d a 5 im port j a v a .í o . * ;
Y a e sta m o s p re p a ra d o s p a ra e x a m in a r e l e sq u e le to d e la c la s e G r a f o . S u p arte 6
p ú b lic a s e m u e s tra e n la F ig u ra 14.6 y su p a rte p riv a d a e n la F ig u ra 14.7. E n las 7 // C l a s e G r a f o : c a l c u l a c a m in o s mínim os
lín e a s d e la 3 3 a la 3 5 s e d e c la ra n a lg u n a s c o n sta n te s. L a lín e a 3 5 a lm a c e n a e l v a ­ 8 //
9 // CONSTRUCCIÓN: s i n inicialiradoi
lo r d e i n f i n i t o (d iv id im o s p o r 3 p a ra q u e i n f i n i t o • i n f i n i t o n o e s té fu e ra
10 II
d e ra n g o ). A c o n tin u a c ió n v ie n e n lo s atrib u to s. 11 // ■ • • • • * * ■ • • • • • • • « • • O P E R A C I O N E S PÚBLI CAS*• • • • * » • • • « • • • * * ...............
d i c V e r t i c e s a lm a c e n a e l d ic c io n a rio . Im p lc m c n ta m o s e l d ic c io n a rio u tili­ 12 // v o id insAr int al S t r i n g o r i g . S t r i n g d e s t . i n t c o s t e )
z a n d o u n a ta b la h a s h q u e a lm a c e n a un E l e m e n t o l i a s h q u e c o n tie n e e l n o m b re d e 13 II — > In se rta a r is ta adicional
u n v é rtic e y su n ú m e ro , p e r o e n la q u e s e b u sc a b a s á n d o n o s e n e l n o m b re d e l vér- 14 // boolean p r o c e s a r F o tic io n ( BufferedReader in )
15 II - - > E j e c u t a v a r i o s a i g . c a m i n o mínimo
16 II ............ * ............ • • • * * • «ERRORES** * * * * * ............. ............................
1 /•• 17 // S e hace alg u n a comprobación de e r r o r e s so b ro s i ol g ra fo
2 • E s t a c l a s e r e p r e s e n t a e l e le m e n t o b á s i c o 18 // es c o r r e c t o , lo s p a rám etro s de p r o c e s a r P e tíc io n son
3 • de la s l i s t a n do adyacencia. 19 // v ó r t i c e s , y p a ra e s t a r s e g u r o s de que o l g r a f o cumple la»
4 •/ 20 // propiedades requeridas por cada algoritm o
5 class A rista 21
6 ( 22 /••
7 // El p r i m e r v é r t i c e e s t á i m p l í c i t o 23 • C lase Grafo: calcula c a m in o s m ínimos.
8 public Int dest; / / Segundo v é r t i c e de l a a r i s t a 24 •/
9 public int coste: // Costede la a r is ta 25 p u b l i c c l a s s Grafo
10 26 i
11 public A rista) in t d. int c ) 27 public G rafo( 1
12 ( 28 ( / • Figura 14.8 V I
13 dest id; 29 p u b lic void in sA rista( S trin g o rig . S trin g de3t, int coste
'4 c o s t e = c: 30 ( / • F i g u r a 1 4 .1 2 */ )
15 ) 31 p u b lic boolean p ro c e s a rP e tíc io n ( BufferedReader in )
16 ) 32 ( / • F ig u r a 14.16 */ )

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

35 prívate s ta tic final i n t I NFI NI TO • 2147483647 / j ; 3 * e n el d i c c i o n a r i o d e v é r t i c e » .


4 • Im p l e m e n t a el -nteríaz H a s h a b i e p r o p o r c i o n a n d o
36
37 p r iv a te TablaHash d ic V e rtic o s ; A lm acen a n ú m e r o s i n t e r n o s 5 • l an funciones hash y equals.
38 p riv ate V órtice [ ] tab la: // El v e c t o r t a b l a 6 •/
39 p r i v a t e i n t num Vertices; // Número a c t u a l d e v é r t i c e s 7 class ElementoHash iirplener.ts Hashabie

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

43 p r i v a t e i n t insNodo( S t r i n g nom breV ertice ) 11


44 ( / • F ig u r a 14.10 • / J 12 public ElementoHashl i

45 p r i v a t e v o i d i n s A r i s t a l n t e r r . a l i n t o r i g , i n t des*., i n t c o s t e l 13 (thist nuil ); I


46 ( /• F ig u ra 14.11 • / 1 14
47 p r ív a te void lim piarD atosl I 15 public ElomentoHash( String nom »
48 { / • F ig u r a 14.13 */ I 16 ( n o m b r e = norn; )
49 17
50 / / V a r i o s a l g o r i t m o s d e c a m i n o s m í n i m o s que 18 p u b i i c í n t h a s h ( int t a m a n y o T a b l a )

51 I I r e q u i e r e n un número i n t e r n o p a r a empezar 19 (r e t u r n T a b i a E x p i o r a c i o n C u a d r a r i c a . h a s h < nombre.t a m a n y o T a b l a >

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 )

54 p r í v a t e boolean d i j k s t r a l i n t nodoOrig > 22 (return nombte.equals< ttEiemonuoHaahí lder».nombre ); »

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;

1 /•• 20 hashV.nombre » new String! nombreVertlee >:

2 • C onstructor. 21 dicVertices.insertar< hashV );

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 )

F ig u ra 14.8 C onstructor d e iu clase n: F ig u ro 14.10 Rutina in s N o d o . d evue lve e« n ú m e ro intern o d e n o m b re V e r t ic e


in s N o d o . m o s tra d o e n la F ig u ra 14.10. d e v u e lv e e l n ú m e ro in te rn o d e l v é rti­ «lados p o r v a lo re s d e tip o s t r i n g . É s ta e s o tra ru tin a s e n c illa p u e s se lim ita a lla ­
c e . c o rre s p o n d ie n te a l p a rá m e tro n o m b r e V e r t i c e . F.l n o m b re «le la ru tin a re fle ja m a r a in n N o d o p a ra o b te n e r lo s n ú m e ro s in te rn o s c o rre s p o n d ie n te s . T r a s e llo se
e l h e c h o d e q u e si n o m b r c V e r t i c e n o se h a e n c o n tra d o to d a v ía (lo q u e v ie n e re ­ lla m a a i n s A r 1a t a l n t e r n a .
fle ja d o p o r su a u se n c ia e n e l d ic c io n a rio ), se le a s ig n a e l p ró x im o n ú m e r o in te rn o
d is p o n ib le > se in s e rta e n e l d ic c io n a rio , in ic ia li/á n d o s c ta m b ié n su e n tra d a e n el 1 /••
v e c to r t a b l a . 2 • Inicializa la tab la .
E l p ro c e d im ie n to c m p ic /a c o n u n a c o n su lta a la ta b la h a sh P ara h a c e r e sto , d e ­ 3 •/
4 p riv a te void 1ío p iarD ato s( )
b e m o s c re a r p rim e ro , e n la lin ca K. u n o b je to d e la c lase E i e n > e n t o H « i s h . h a s h v .
5 (
in ic ia liz á n d o lo c o n n o m b r e V e r t i c e (u tiliz a n d o u n c o n s tru c to r a p ro p ia d o ) 6 forl i n t 1 * 0 ; i < nunV ertices; i«» I
U n a v ez c o n s tru id o h a n h v . p o d e m o s re a liz a r u n a b ú sq u e d a e n la ta b la h a s h y 7 (
a lm a c e n a r e l \al»>r d e v u e lto e n r e s u l t a d o . S i la b ú sq u e d a tie n e é x ito , p o d e m o s 8 t a b l a ( 1 1 . d i s t = INFINITO;
d e v o lv e r e l c a m p o r a n g o «le r e s u l t a d o , y a c a b a m o s . E n «Uro c a s o , h e m o s e n ­ 9 t a b l a [ i 1 . a n t = VERTICB.NULO;
10 ta b l a | i |. e x t r a • 0;
c o n tra d o un v é rtic e n uevo.
11 )
E n la lín e a l ‘>. le a s ig n a m o s a e s e n u e v o v é rtic e c o m o n ú m e r o in te rn o 12 |
n u m v e r t i c e s , e l c u a l re p r e s e n ta e l p ró x im o ín d ic e d is p o n ib le e n la t a b l a (p o r­
Figuro 14.13 R utina p o ra inicializar los ca m p o s O© la t a b l a , q u e se usan en los a l­
q u e e l ín d ic e e m p ie z a e n 0 ).
goritm os do b ú sq u ed a d e com inos mínimos.
E n la lín e a 2 1 . re a liz a m o s u n a in s e rc ió n e n la ta b la h a sh . O b s e rv e c ó m o c re a ­
m o s un n u e v o o b je to d e la c la s e S t r i n g q u e s e rá re fe re n e ia d o p o r la ta b la h ash y
p o r e l v e c to r t a b l a . S e c o n s tru y e la c o rre s p o n d ie n te e n tra d a V e r t i c e , y se a ñ a ­
Im p rim e r e c u r s iv a m e n t e e l c a n in o m ín im o a nodoD est
d e a t a b l a e n la lín e a 2 5 . S i la ta b la d e l g r a f o t a b l a s e lle n a, e n la lín e a se d u p li­ ( a s p e e 1 f ic a d o p o r su núm ero I n t e r n o ) ,
c a su ta m a ñ o . L a lín e a 2 6 c o m p le ta la ru tin a d e v o lv ie n d o n u m V e r t i c e s le í n u ­ im p rim ir C a m in o e s l a r u t i n a g u ía
m en* in te rn o a sig n a d o a n o m b r e V e r t i c e ) e in c re m e n ta n d o n u m V e rt i c e s .

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 ( );

Figuro 14.12 lo m ism a rutina q u e i n n A r i n t a I n t e r n a . po ro aq u í o r i g v d e s t


«CVS o»ili.l/^< rio !/■» r i m o C » r i « r. Figuro 14 15 R utin a p o ra im prim ir e l c a m in o m ínim o c o n su lta n d o la tabla.
L os a trib u to s e v c n tu u lm c n tc c a lc u la d o s p o r a lg ú n a lg o ritm o d e b ú s q u e d a de L a ú ltim a ru tin a , a p arle d e lux q u e c a lc u la n lo s c a m in o s m ín im o s, e s e l m é to ­
c a m in o s m ín im o s s o n in ie ia li/a d o s p o r la n itin a 1 i m p i a r D a t o s . m o s tra d a e n la d o p r o c e s a r P e t i c i o n . E n la F ig u ra 1 4 . 1 6 s e m u e s tra u n a im p le m e n ta c ió n s e n ­
F ig u ra 14.13. L a s ig u ie n te e s u n a ru tin a p a ra im p rim ir e l c a m in o m ín im o u n a v e / c illa q u e p re g u n ta e l v é rtic e o rig e n y e l v é rtic e d e s tin o y e je c u ta e l a lg o ritm o de
su c á lc u lo h a s id o re a liz a d o . R e c u e rd e q u e e l c a m p o a n t p u e d e u tiliz a rs e p a ra r e ­ b ú sq u e d a d e l c a m in o c o n p e s o m ín im o le í c ó d ig o e n In tern et e je c u ta ta m b ié n
c o rre r e l c a m in o h a c ia a trá s. S in e m b a rg o , e s to n o s d a rá e l c a m in o e n o rd e n in v e r­ irtro s a lg o ritm o s a d ic io n a le s ).
so. E s to n o e s u n p ro b le m a si u tiliz a m o s re c u rsió n ; lo s v é rtic e s e n e l c a m in o a
d e s t s o n lo s m is m o s q u e a q u é llo s e n e l c a m in o a l v é rtic e a n te rio r a d e a * (e n e l 1 /• •
c a m in o ), s e g u id o s d e d e s t . E sta e s tra te g ia s e tra d u c e d ire c ta m e n te e n la p e q u e ñ a 2 • R u t i n a n a i n que: p i d e e l nom bre d e un f i c h e r o que
3 * contenga un g ra fo ; c o n s tru y e el g r a f o a p a r t i r d e l fic h e ro :
ru tin a re c u rs iv a m o s tra d a e n la F ig u ra 14.14. L a ru tin a su p o n e q u e e x is te e l c a m i­
4 • rep etid am en te p id e dos V é rtic es y e je c u ta lo s algoritm os
n o e n c u e stió n . i m p r i m i r C a m i n o . m o s tra d a e n la F ig u ra 14.15. re a liz a p rim e ro 5 * d o c a m i n o s m í n i m o s . F.l f i c h e r o d e d a t o s e s u n a s e c u e n c i a
e s ta c o m p ro b a c ió n : s i n o e x is te c a m in o , im p rim e u n m e n s a je . E n o tr o c a s o , lla m a 6 * de lín e a s: o rigen destin o co ste.
a la ru tin a re c u rsiv a e im p n m e e l c o s te del c a m in o . 7 •/
8 p u b l i c s t a t i c v o i d m a i n l S t r i n g | I at*gc )
9 {
1 /• • 10 S y s t e m . o u t . p r í n t l n < ' I n t r o d u z c a f i c h e r o con e l g r a f o : ' ):
2 • P rocesa una p e tic ió n ; d e v u elv e f a l s o s i se a c a b a e l fichero. 11 B u f f e r e d R e a d e r i r . = n e w B u í í e r e d R e a d e r I r.ew
3 •/ 12 I n p u tS t r e a n R e a d e r ( S y s te m .in ) i;
4 p u b l i c b o o l e a n p r o c e s a r P e t i c í o n < B u f f o r o d R e a d o r ir i | 13 PiU R eador ílc h ;
5 I 14 S t r i n g r.ombreFichero =
6 S t r i n g nombreOrig. nombroDent; 15
7 E i e m e n t o H a s h o r i g - r.ew E l e m e r . t o H a s h I ); 16 try
B E ie m entoH a sh d e s t = new E ie m e n t o H a s n ( I: 17 l
9 18 n o m b r e F ic h e r o » l n . r e a d L l n e t );
10 try 19 f i c h = new F i l e R e a d e r ( n o m b r e F i c h e r o );
11 20 |
12 S y scem .out.println( ‘ In tro d u zc a nodo o r i g e n : - ): 21 c a t c h ( Excepción e )
13 i f t < nombreOrig « i n . r e a d L l n e r ) I == n u i l l 22 ( S y s t e m . e r r . p r i n t lr.( e ) ; return: )
14 return ialse; 23
15 S ystem .ouc.println( "In tro d u zca nodo d e s t i n o : - ) 24 B u f f e r e ó R e a d e r f ic h G r a f O = new B u f f e r e d R e a d e r ( f i c h ):
16 i í< ( nombrtDest • l n . r e a d L i n e ( ) i == n u i l I 25 C r a f o g » n e w G r a t o ( >:
17 returr. false; 26
18 27 // Lee las a r i s t a s y las inserta
19 catcll( lOException e I 28 try
20 29 (
21 System .out.printlni 'E rro r: " * e l; 30 Strlrig linea;
31 w hile( ( linea = f i c h G r a f o . r e a d h l n e ( ) J != n u i l >
22 return false;
23 ) 32 (
33 Strm gTokenizer s t = new S t r i n g T o k e m r e r l l i n e a |;
24
34 try
35
26
36 ifi s t . c o u n t T o k e n s ( ) != 2 )
27 o rig .n o m b re = nombreOrig:
37 th r o w n«w E x c e p t l o n í ) ;
28 o r i g * (EiementoHash! í d i c V e r t i c o s . b u s c a r ( o r i g I )j 38 S tr in g o r i g = s t , nextT oken( I;
29 d e s t.n o m b re = nombreDest; 39 S tr in g d e s t = st.n ex tT o k e n l I;
30 d e s t • <E l e r a e r i t o H a a h l | d i c V e r t i c e s . b u s c a r I d e s t I )j 40 in t c o s te ■ ln te g e r .p a r s e l n t t at.nextT okoní ) I:
31 41 g . in s A r i s t a ( o r i a . d e s t. c o s t e ):
32 if t d i j k s t r a l o r ig .r a n g o ) ) 42
33 i m p rim irC a m m o i d e s r . r a n g o I; 43 c a t c h ( Exception e I
34 eise 44 { S y stem .err.p rin tIn t ‘Error: * * linea ); }
35 S y n te m .a u t.p r in tln ( 'D ijk aL ra ha f a lla d o " >; 45
36 46 )
37 c a t c h I ElemencoNoEncontr ad o o ) 47 c a t c h ( Excepción c )
38 ( S y s te m . e r r . p r l n t l n ( " V é rtic e no e s t á en e l graro" I; I 48 ( S y s t e m . e r r . p r i n t l n ( ' E r r o r : ' * e ):
39 return true; 49 w hileí g .p ro c e s a r P e ti c l o n l ín ► >
40 ) 50
51 >
Figuro 14.16 P o ra probar, p r o c e s a r P e t i c i o rí lla m a a l algoritm o d o búsqueda
d e l ca m in o mínim o (c o n pesos) Figura 14.17 Ejem p lo d e rutina m a in
U n a n ilin u m n ln s e n c illa , m o s ira d a e n la F ig u ra 14 17. ilu s iru e l c o m p o rta -
m íe n lo d e la c la s e . P id e e l n o m b r e d e u n f ic h e ro q u e c o n te n g a un g ra fo . R e p e ti­
d a m e n te le e lín e a s d e la e n tr a d a , a s ig n a n d o la lín e a a u n o b je to d e la c la s e
S t r i n g T o k e n i z e r . y a n a liz a la lín e a . E sta té c n ic a n o s p e rm ite c o m p ro b a r q u e
c a d a lin e a c o n tie n e lo s tre s c a m p o s d e u n a a n s ia . C u a n d o s e e n c u e n tra n l<*s tres
c a m p o s , s e lla m a a i n s A r i s - a . U n a v e / le íd o e l g ra fo . se e je c u ta e l a lg o ritm o d e
b ú sq u e d a d e l c a m in o c o n p e s o m ín im o . Ilau ia n ilo a p r o c e s a r P e t í c i o n .

Figuro 14 19 G ra fo después d e en co n trar todos los vértices cu yo cam in o mínimo


14.2 Problem a del cam in o mínimo sin pesos d esd e e l origen tie n e longitud 1

I .i lo n g itu d d e l c a m in o sin p e s o s m id e e l n ú m e ro d e a n s ia s . E s ta s e c c ió n e slu E l s ig u ie n te p a s o e s b u s c a r lo s v é rtic e s c u y o c a m in o m ín im o d esd e O sea


d ia e l p ro b le m a d e e n c o n tra r e l c a m in o q u e te n g a m e n o r lo n g itu d sin p e so s e n tre e x a c ta m e n te 2. H a c e m o s e s to b u s c a n d o lo s n o d o s a d y a c e n te s a y V'j (lo s v é rti­
d o s v é rtic e s e sp e c ific a d o s. ces a d is ta n c ia 11 c u y o c a m in o m ín im o n o s e c o n o z c a a ú n . E sta b ú sq u e d a n o s d ic e
q u e e l c a m in o m á s c o r to a V, y V’« e s 2. L a F ig u ra 1 4 .2 0 m u e s tra e l p ro g re s o re a li­
PROBLEMA DEL C A M IN O S IN PESOS M ÍN IM O C O N U N Ú N IC O O RIG EN z a d o h a s ta e l m o m en to .
Encontrar e l cam rno m ás co rto (m ed id o p o r e l núm ero d e aristas) F in a lm e n te , e x a m in a n d o lo s v é rtic e s a d y a c e n te s a lo s ú ltim a m e n te a lc a n z a d o s
d esd e e l vértice O a cu alq u ier otro vértice V, y V». e n c o n tra m o s q u e V t y V* tie n e n u n c a m in o m ín im o d e 3 arista s Y ya
h e m o s c a lc u la d o e l c a m in o p a ra to d o s lo s v é rtic e s . L a F ig u ra 14.21 m u e s tra e l r e ­
s u lta d o fin al d e l alg o ritm o .
E l p ro b le m a «leí c a m in o m ín im o sin p e so s e s u n c a s o e s p e c ia l d e l p ro b le m a
E sta e s tra te g ia p a ra b u sc a r un c a m in o s e d e n o m in a b ú sq u e d a e n a n c h u ra .
d e l c a m in o m ín im o c o n p e so s te n e l q u e u n io s lo s p e s o s v a le n I ). P o r ta n to , d e b e ­
O p e ra p ro c e s a n d o lo s v é rtic e s p o r n iv e le s: lo s v é rtic e s m á s c e rc a n o s a l o rig e n se
ría te n e r u n a s o lu c ió n m á s e fic ie n te q u e e l p ro b le m a c o n p e s o s . E s to e n e fe c to es
p ro c e sa n lo s p rim e ro s , y lo s m á s a le ja d o s lo s ú ltim o s.
c ie rto , a u n q u e lo s a lg o ritm o s p a ra lo d o s lo s p ro b le m a s d e c a m in o s m ín im o s son
m u y sim ilares. I a F ig u ra 14.22 ilu stra u n p rin c ip io fu n d a m e n ta l. S i u n c a m in o a l v é rtic e v tie ­
n e c o s te / ) „ y »» e s a d y a c e n te a v. e n to n c e s e x is te u n c a m in o a »»• d e c o s te
/) „ />, ♦ I. T o d o s lo s a lg o ritm o s d e b ú sq u e d a d e c a m in o s m ín im o s e m p ie z a n
c o n Ü w = x y v a n re d u c ie n d o e s te val** c u a n d o s e e x p lo r a u n v apropiad*». P ara
14.2.1 Teoría

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

Figuro 14.18 El g rato después d e m arcar ol nod o origen co m o d c a n z a tjlo co n c o ­


ro aristas Flauta 14.21 C om inos m ínim os finales
< *■

Figura 14.22 S« w es a d y a c e n te a v y h a y un ca m in o a v tam b ién h a y un cam in o


a w.

h a c e r e s to e fic ie n te m e n te , lo s v é rtic e s d e b e n e x p lo ra rs e d e fo rm a siste m á tic a


C u a n d o se e x p lo r a u n d e te rm in a d o * . se re u li/a n la s a c tu a liz a c io n e s d e lo s v é rtic e s
h a d y a c e n te s re c o rrie n d o la lista d e a d y a c e n c ia d e v.
IX' la d is c u sió n a n te rio r, c o n c lu im o s e l sig u ie n te a lg o ritm o p a ra la reso lu c ió n
d e l p ro b le m a d e lo s c a m in o s m ín im o s sin p e so s : s e a I), la lo n g itu d d e l c a m in o
m á s c o rto d e s d e O h a s ta /. S a b e m o s q u e D (, ■ 0 . e in ic ia lm e n te I), j p a ra lo d o
i / O . M a n te n e m o s n u e s tra a te n c ió n fija e n u n v é rtic e q u e in ic ia lm e n te e s O y v a ­
m o s sa lta n d o d e v é rtic e e n v é rtic e . S i » e s e l v é rtic e so b re e l q u e n o s. en to n ce s,
p u ra to d o w a d y a c e n te a r . h a c e m o s /)„ = -f I si D u = o c . E s to re fle ja e l h e ­
c h o d e q u e p o d e m o s lle g a r a u s ig u ie n d o u n c a m in o a i y e x te n d ie n d o e l c a m in o
c o n la a ris ta (v . h ). D e n u e v o e s to s e ilu stra e n la F ig u ra 14.22. V a q u e n u estra
a te n c ió n va p ro c e s a n d o c a d a v é rtic e e n o rd e n d e d is ta n c ia s a l o rig e n , y c a d a arista
su m a e x a c ta m e n te u n o a la lo n g itu d d e l c a m in o a n . p o d e m o s e s ta r s e g u ro s d e que
la p rim e ra v e / q u e />„ d e ja d e s e r */.. to m a rá e l v a lo r d e l c a m in o m ín im o a h . Por
la m is m a r a / ó n te n e m o s q u e e l p e n ú ltim o v é rtic e e n e l c a m in o a »« e s v. p o r lo que
u n a lín e a a d ic io n a l d e c ó d ig o n o s p e rm itirá a lm a c e n a r e l c a m in o e n c u e stió n .
D e sp u é s d e h a b e r p ro c e s a d o to d o s los v é rtic e s a d y a c e n te s a »•. p a sa m o s n u e stra
ate n c ió n a «‘tro v értice u te n e l q u e to d av ía n o nos h a y a m o s fija d o ) tal q u e /)„ = />,
S i e llo n o e s p o sib le , p a sa m o s a un it q u e sa tisfa g a /)„ = D , + I. S i ta m p o c o es
p o sib le , e s q u e h e m o s a c a b a d o . L a F ig u ra 14.23 m u e s tra c ó m o v a m o s v is ita n d o
v é rtic e s y a c tu a liz a n d o la s d is ta n c ia s . E l n o d o c o n s o m b ra c la r a e n c a d a e s ta d o re ­
p re se n ta n u e stro p u n to a c tu a l d e a te n c ió n . E n e s te d ib u jo y lo s q u e sig u e n , lo s e s ­
ta d o s s e m u e s tra n c o n s e c u tiv a m e n te d e a rrib a a b a jo , y «le iz q u ie rd a a d e re c h a .
E l d e ta lle q u e fa lta c o n c re ta r e s la e s tru c tu ra d e d a to s s u b y a c e n te . H ay d o s a c ­
c io n e s b á s ic a s a re a liz a r. D e b e m o s, prim en*, b u s c a r re p e tid a m e n te e l v é rtic e e n e l
q u e d e p o s ita re m o s n u e stra a te n c ió n . E li se g u n d o lu g ar, d u ra n te e l a lg o ritm o n e c e ­
sita m o s c o m p r o b a r to d o s l«*s v é rtic e s t« a d y a c e n te s a v (el v é rtic e a c tu a l). L a s e ­
g u n d a a c c ió n s e im p le m e n ta fá c ilm e n te ite ra n d o a tra v é s d e la lista d e ady acen cia Figura 14.23 C óm o se recorre e l g rato en e l c á lc u lo d e los cam inos miramos sin pe­
d e v. D e h e ch o , y a q u e c a d a a ris ta s e p ro c e s a e x a c ta m e n te u n a v e z . e l c o s te total sos Los vértices m ás oscuros h a n sido y a to talm en te procesados, les

d e to d a s las ite ra c io n e s e s O l|£ '|). L a p rim e ra a c c ió n e s m á s c o m p lic a d a : n o p e l e ­


vértices m ás claros to d avía n o h an sido considerados co m o y v.
aq u el co n som breado Interm edio e s e l vé rtice v a c tú a 1 lo s estados
m o s lim ita m o s a e x p lo r a r la ta b la b u sc a n d o e l v é rtic e a p ro p ia d o , p u e s c a d a e x p i ­ v a n d e arriba a b a jo y d o izquierda a d e re c h a según m alea la num o
ra c ió n re q u e riría un tie m p o D<|V|> y n e c e s ita m o s h a c e rlo O i |l '|) v e c e s. E n to n c e s roción
e l c o s te to tal se ría (>(|V’ i*). lo c u a l e s in a c e p ta b le p a ra g ra to s d is p e rs o s . A fo rtu n a ­
d a m e n te . e s to n o e s necesario .
C u a n d o a u n v é rtic e n s e le re b a ja su /) „ d e s d e r . s e c o n v ie rte e n c a n d id a to «*tro i k k Io c u y a d is ta n c io se h a y a re b a ja d o y a . p«*r l o q u e p u e d e c o lo c a rs e a l f i n a l
p a ra fija r n u e s tra a te n c ió n e n é l e n a lg ú n m o m e n to d e l fu tu ro . U n a vez h a y a m o s d e u n a c o la d e v é rtic e s e n e sp era
A jad o n u e s tra a te n c ió n e n tod<*s |«.\ v é rtic e s q u e s e e n c u e n tra n a ig u al d ista n c ia P a ra se le c c io n a r e l s ig u ie n te v é rtic e » e n e l q u e fije m o s n u e s tra a te n c ió n , s im ­
d e l o rig e n . q u e e l a c tu a l, p a s a re m o s a c o n s id e ra r lo s q u e s e e n c u e n tra n a d is ­ p le m e n te to m a m o s e l p r im e r v é rtic e «le la c o la . E m p e z a m o s c o n u n a c o la v a c ía , y
ta n c ia />, + I. e n tre lo s q u e s e e n c u e n tra u . P«*r lo q u e u s ó lo le q u e d a e sp e ra r p a ra q u e e l m e c a n ism o e m p ie c e a fu n c io n a r c o lo c a m o s e n la c o la e l v é rtic e ««rigen
p a c ie n te m e n te s u tu m o . C la ra m e n te , n o tie n e p o r q u é h a c e rlo d e la n te d e c u a lq u ie r O. Y a q u e c a d a v é rtic e s e intr«»duce e n la c o la v s e e lim in a d e e lla e x a c ta m e n te
u n a v e / , y y a q u e lu.s o p e ra c io n e s s o b r e las c o la s s o n c o n s ta n te s , e l c o s te u>tal d e 14.3 Problem a d e los cam in os mínimos
e le g ir un v é rtic e ¡Hira e l a lg o r itm o c o m p le to e s f> (|V |). P o r ta n to , e l c o s te d e la
b ú sq u e d a e n a n c h u ra e s tá d o m in a d o p o r los re c o rrid o s d e la s listas d e a d y a c e n c ia s,
co n pesos positivos
y e n c o n s e c u e n c ia e s í><|£]). o sea lin eal c o n re s p e c to a l ta m a ñ o d e l grafo.
lu í lo n g itu d <le u n c a m in o c o n p e s o s e s la s u m a d e l c o s te d e las a ris ta s d e l c a m in o , i
E sta s e c c ió n c o n s id e ra e l p ro b le m a d e e n c o n tra r e l c a m in o m á s c o r to c o n p e s o s , c
E n e l p ro b le m a d e lo s c a m in o s m ín im o s c o n p e so s p o sitiv o s, las a ris ta s tie n e n e o s - jj
14.2.2 Im plem entación en Ja v a
te s n o n e g a tiv o s. Q u e re m o s c a lc u la r lo s c a m in o s m ín im o s d e s d e u n v é rtic e o rig e n c
al re s to d e v é rtic e s . C o m o s e v erá e n s e g u id a , la h ip ó te s is d e q u e lo s c o s te s d e las
L a im p le m e n ta c ió n d e l a lg o ritm o d e lo s c a m in o s m ín im o s sin p e s o s e r e a li/a e n el
a ris ta s so n n o n e g a tiv o s e s m u y im p o rta n te p u e s p e rm ite u tiliz a r u n a lg o r itm o s e n ­
m é to d o s i n P e s o . m o s tra d o e n la F ig u ra 14.24 E l c ó d ig o e s u n a tra d u c c ió n literal
c illo y re la tiv a m e n te e fic ie n te . El m é to d o d e s c r ito se c o n o c e c o m o a lg o r itm o de
d e l a lg o r itm o d e s c rito a n te rio rm e n te . L a in ic ia li/a c ió n d e la s lín e a s d e la 9 a la II
D ijk s tra . E n la sig u ie n te s e c c ió n e s tu d ia re m o s u n a lg o ritm o m á s le n to q u e fu n c io ­
in ic ia li/a to d a s la s d is ta n c ia s a in fin ito , D () a 0 y a ñ a d e a la c o la e l v é rtic e o rig en .
n a a u n c o n a ris ta s n e g ativ as.
M ie n tra s q u e la c o la n o s e q u e d e v acía , h a y v é rtic e s q u e v isita r. P o r ta n to , e n la
lín e a 17. p a sa m o s a fija r la a te n c ió n e n e l v é rtic e v q u e e s e l p rim e ro d e la c o la . La PROBLEMA DE LO S C A M IN O S M ÍN IM O S C O N C O STE POSITIVO Y O RIG EN
lín e a 19 ite ra so b re su lista d e a d y a c e n c ia y p ro d u c e to d o s lo s v é rtic e s w a d y a c e n ­ Ú N IC O
te s a v . El te st />„ = cc se re a liz a e n la lín e a 22. S i e s t r u e . la a c tu a liz a c ió n Encontrar e l cam ino m ás co rto (m ed id o co n su co ste to tal) d esd e el
P w = D v + I s e re a liz a e n la lín e a 2 4 , ju n t o c o n la a c tu a liz a c ió n d e l c a m p o a n t y vértice origen O o l resto d e vértices E l co ste d e c a d a ansto es n o n e ­
la in s e rc ió n e n la c o la d e w. e n la s lín e a s 25 y 2 6 . re sp e c tiv a m e n te . gativo.

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 gur o U 2 6 Si D , e s m 'rw no e n tr e to d o s los v e r r e e s n o vtsrtodos y s to d o s ios onstos


tie n e n c o s t e n o n e g a tiv o e n to n c e s Dv r e p r e s e n ta e l c a r e n o m ínim o
h a s to v.

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

S i va m o s p a s a n d o n u e stra a te n c ió n a un v é rtic e a ú n n o v is ita d a d e e n tre


la s i/lie m in im ic e n e l v a la r l>,. e l a lg o r itm o p r o d u c ir á c o r r a la m e n te las
c a m in a s m ín im a s sie m p r e q u e n a lu n a a rista s c a n c o s te n e g a tiv o .

¡.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 .

L a F ig u ra 14.27 m u e s tra lo s p a so s d e l a lg o ritm o d e D ijk stra . L o q u e n o s q u e d a


p o r h a c e r e s e le g ir las e s tru c tu ra s d e d a to s a p ro p ia d a s P ara g ra fo s d e n s o s , p o d e ­ Figura 14.27 P a s o s d e i a lg o r itm o d e D ijkstra S ig u e lo s m is m o s c o n v e n i o s q u e e n la
m o s re c o rre r la ta b la b u s c a n d o e l v é rtic e a p ro p ia d o . C o m o e n e l c u s o sin p eso s. F ig u ra 14.23
1 4 .3 .2 Im p le m e n t a c ió n e n J a v a
e s to i**s llev aría a u n tie m p o fX |V |* ). q u e e s ó p tim o p a ra un g ra fo d e n so . P e ro pa
ra un g r a f o d is p e rso , p o d e m o s h a c e rlo m e jo r.
E l o b je to q u e se c o lo c a rá e n la c o la d e p rio rid a d s e m u e s tra e n la F ig u ra I4 ..H .
C ie rta m e n te , u n a c o la n o fu n c io n a ría E l h e c h o d e q u e d e b a m o s b u s c a r e l ver
E stá fo rm a d o p o r h y A>„. y u n a fu n c ió n d o c o m p a ra c ió n d e fin id a e n b a s e a ¡ K
tic e v c o n m e n o r / ) , su g ie re la u tiliz a c ió n d e u n a c o la d e p rio rid a d . H ay d o s f o r ­
L a F ig u ra 1 4.29 m u e s tra la r u tin a d i j k s t r a q u e c a lc u la lo s c a m in o s m ín im o s.
m a s d e u tiliz a r e s ta c o la d e p rio rid a d . U n a lo m ta e s a lm a c e n a r c a d a v é rtice e n la
c o la d e p rio rid a d y u tiliz a r la d is ta n c ia (o b te n id a c o n s u lta n d o la ta b la d e l g ra b o
c o m o fun ció n d e o rd e n a c ió n C u a n d o a lte ra m o s c u a lq u ie r />». d e b e m o s a c tu a liz a r la
2 ' • A lgoritm o de D ijk s tr a u tiliz a n d o un m o n tícu lo b in a r io .
c o la d e p rio rid a d restab le cie n d o la p ro p ie d a d d e o rd en . E s to e q u iv a le a u n a o p e ra ­
3 • D evuelve f a l s e s i se d e te c ta n a r i s t a s n e g a tiv a s .
c ió n f l o t a r . P ara h a c e r e s to n e c e sita m o s se r c a p a c e s d e e n c o n tra r la p o s ic ió n d e *
e n la c o la d e pn i» n d ad N o to d a s las im p le m e n ta c io n e s d e las c o la s d e p rio rid a d s o ­ 5 prívate boolean d ijk s tr a ! int nodoOrig )
p o rtan e s ta o p e ra c ió n E n o tra s p alab ra s, f l o t a r n o e s u n a o p e ra c ió n d e la in terfaz 6 (
C o l a P r i o r - . d a d . U na im p le m e n ta c ió n q u e s i so p o rta e s ta o p e ra c ió n e s e l m o n tíc u ­ 8 C olaPrioridad c p - new M o n t i c u l o B i n a r l o t C am ino.intN eg )j
lo d e e m p a re ja m ie n to s; su u tiliz a c ió n e n e s ta a p lic a c ió n se d isc u te e n e l C a p ítu lo 22. 9 Canino v re c ;
E n v e z d e u tiliz a r u n a c o la d e p rio rid a d c o m p le ja , u tiliz a re m o s u n m é to ­ 10
d o q u e fu n c io n a c o n c u a lq u ie r e s tr u c tu r a d e d a to s q u e im p le m e n te e l in te rfa z 11 1 in p iarD ato B ( );
12 t a b l a | nodoO rig J . d i o t = 0 ;
C o l a P r i o r i d a d N u e s tro m é lo d o c o n s is tirá e n in s e rta r e n la c o la tic p rio rid a d un 13 c p . i n s e r t a r ! new Camino» n o d o O n g . ü ) )i
o b je to fo rm a d o p o r w y c u a n d o re d u c im o s Í ) H. P a ra e le g ir e l n u e v o v é rtic e i a U
v is ita r, e lim in a re m o s re p e tid a m e n te e l m e n o r e le m e n to (u tiliz a n d o las d is ta n c ia s) 15 try
d e la c o la d e p rio rid a d h a s ta q u e s a lg a u n e le m e n to n o v is ita d o Y a q u e e l ta m a ñ o Jí ' {or, int nodosV istos: 0 ; nodosV istos < n u m V e rtic e s ;
d e la c o la d e p rio rid a d p o d ría s e r tan g ra n d e c o m o \F\. y hay c o m o m u c h o /-.| in ­ nodonV lotoa*• )
18
s e rc io n e s y e lim in a c io n e s , e l tie m p o d e e je c u c ió n se ría (h \L \ lo g F ) . Y a q u e 19 I
|£ | < |V |2 im p lic a lo g l£l < 2 lo g V |. o b te n e m o s e l m ism o c o s te (M F. lo g \V > 20 do
q u e te n d ría m o s si u tiliz á ra m o s e l p rim e r m é to d o (e n e l c u a l e l ta m a ñ o d e la c o la 21
22 i f < cp.eeV aciaI I I
d e p rio rid a d es c o m o m u c h o |V'|), 23 return true;
24 v r e c * (Camino) c p . e l im inarM in » );
1 /• • 25 ) w hile< t a b l a l v r e c .d e s t ) .e x t r a !
2 • O b je t o a lw c e n íd o en Id c o l® d e p r io r id a d 26
3 • en e l a lg o r it m o d e D i j k s t r a 27 v - v re c . dest;
4 •/
28 tablal v | .ex tra- 1;
5 c l a s s Cam ino in tp le m e n ts C o m p a ra b le & L í s t a l t e r p » new L i s t a B n l a z a d a l t e r ( t a b l a l v |. a d y I:
6 ( 31 f o r I : p . c s t a D e n t r o ! »; p .a v a n z a r ! I I
7 In t d e s t; // w
8 In t c o ste ; / / Dl w) 33 w - ( ( A r io t a l p . ro cu p e ra r( I > .d o * t ;
9 3 4 int c v w —I (A rista! p.recuperar! ) ) . coste;
10 s t a t i c C a m i n o in f N e g = new C a m in o ( > ; / / C e n t in e la
35
11 36 if( cvw < 0 I
12 C am in o I | 37 retu rn false;
13 ( thisI 0 1 ; )
14 “ i £( tablal w ] .dist > tablal v 1 . d i s t * cvw >
15 C a n in o l i n t d > 40
16 ( t h i s t d . 0 >: | 41 tablal w 1.d ist =tab lal vJ . d i s t * cv w ;
17 42 t a b l a l w ] .a n t =v;
4 3 c p . i n s e r t a r ( new Camino! w. t a b l a l w I .dist
18 C a m in o « i n t d . i n t c )
19 ( d e st * d ; c o ste * c ; ) 44
20 45
21 p u b li c b o o le a n monorQuet C o m p a ra b le ld e r ) 46
22 ( re tu rn co ste < ( (C am ino ) ld e r ) . c o s t e : )
23 48 catch! D esbordam iento!nfer ior e )

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

F igu ro 14 28 E le m e n to b á s i c o a i m o c e n o á o e n l a c o t a de p n o r íd o d Dij kst ra


L a lin c a X d e c la ra la c o la d e p rio rid a d c p R e c u e rd e q u e d e b e m o s p ro p o r c io ­
n a r u n c e n tin e la p a ra q u e s e g a ra n tic e q u e s e a m e n o r o ig u a l q u e c u a lq u ie r o b je ­
to in s e rta d o , v r o o . d e c la ra d o e n la lin e a 9 . a lm a c e n a rá e l r e s u lta d o d e c a d a
e l i m i n a r M i n . C o m o e n e l c a s o d e l a lg o ritm o sin p e s o s , e m p e z a m o s in ic ia liz a n -
d o to d a s las d is ta n c ia s a in fin ito , h a c ie n d o I ) t, = 0 y c o lo c a n d o e l v é rtic e o rig e n
d e n tro d e la e s tru c tu ra d e d ato s.
C a d a ite ra c ió n d e l b u c le f o r m á s e x te r n o e m p ie z a e n la lín e a 17 fija n d o n u e s ­
tra a te n c ió n e n e l v é rtic e v y p ro c e s á n d o lo , e x a m in a n d o lo s v é rtic e s a d y a c e n te s »«.
v s e e lig e e lim in a n d o re p e tid a m e n te e le m e n to s d e la c o la d e p rio rid a d (e n la lin ca Figuro 14.30 G ra to c o n c ic lo a e c o s t e n e g a tiv o
2 4 ) h a s ta e n c o n tra r un v é rtic e a ú n n o p ro c e sa d o . U tiliz a m o s e l a trib u to e x t r a p a ­
ra a lm a c e n a r e s ta in fo rm a c ió n . In ic ia lm e n te e x t r a v a le 0 . Por ta n to , c u a n d o el
v é rtic e n o h a s i d o p ro c e s a d o , la c o m p a ra c ió n d e l b u c le w h i l e fa lla ra e n la lín ea E ste p ro b le m a n o se re strin g e a n o d o s e n e l c ic lo . El c a m in o m á s c o n o d e V 2 a
2 5 . C u a n d o e l v é rtic e se p ro c e s a , e x t r a s e a c tu a liz a a I te n la lín e a 2 8 ). L a c o la \ \ ta m b ié n e s tá in d e fin id o p o rq u e h a y u n a fo rm a d e e n tr a r y s a lir del b u c le . E ste
d e p rio rid a d p o d ría q u e d a rs e v a c ía s i. p o r e je m p lo , a lg u n o d e lo s v é rtic e s e s in al­ b u c le se d e n o m in a c ic lo J e c o s te n eg a tivo ', c u a n d o e x is te u n o e n u n g ra to , alg u n o s
c a n z a b le . E n e s te c a s o , p o d e m o s a c a b a r in m e d ia ta m e n te . Ll b u c le d e la s lin c a s 31 (p ro b a b le m e n te m u c h o s ) c a m in o s m ín im o s n o e s tá n d e fin id o s . L a s a ris ta s d e coste-
a 4 5 e s m u y s im ila r a l c a s o d e l a lg o ritm o s in p e so s. L a d ife re n c ia e s tá e n q u e e n la n e g a tiv o n o s o n m a la s p o r s í m ism a s: so n lo s c ic lo s lo s q u e lo so n . N u e s tro a lg o ­
lín e a 3 4 d e b e m o s e x tra e r c v w d e la lista d e a d y a c e n c ia , c o m p r o b a r q u e e l c o s te no ritm o e n c o n tra rá lo s c a m in o s m ín im o s o lia rá n o ta r l.i e x is te n c ia d e c ic lo s c o n c o s ­
e s n e g a tiv o (e n o tro c a s o , n u e s tro a lg o ritm o p o d ría p ro d u c ir re s p u e s ta s in c o rre c ­ te n e g ativ o .
ta s ) y s u m a r cv w . e n v ez d e I. e n la s lín e a s 3 9 y 4 1 . U n a c o m b in a c ió n d e lo s a lg o ritm o s c o n p e so s y sin p e so s re s o lv e rá e l p ro b le ­
m a . p e ro a c o s ta d e u n d rá s tic o in c re m e n to p o te n c ia l e n e l tie m p o d e eje c u c ió n .
C o m o h e m o s su g e rid o a n te rio rm e n te , c u a n d o se m o d ific a D „ . d e b e m o s (rc )v is ita r
14.4 Problem a del cam in o mínimo co n costes e s te v é rtic e e n a lg ú n m o m e n to d e l fu tu ro . E n c o n s e c u e n c ia , u tiliz a m o s u n a c o la
negativos c o m o h ic im o s e n e l a lg o ritm o sin p e so s, p e ro u s a n d o />, + c o m o m e d id a de
la d is ta n c ia (c o m o e n e l a lg o r itm o d e D ijk stra).
Ll a lg o ritm o d e D ijk s tra n e c e s ita q u e lo s c o s te s d e la s a n s ia s s e a n n o n e g a tiv o s.
C u a n d o v is ita m o s e l v é rtic e v p o r í-é s im a v e z . e l v a lo r d e D , e s la lo n g itu d del
E s to e s ra z o n a b le p a ra la m a y o ría d e las a p lic a c io n e s , p e ro e n o c a sio n e s e s d e m a ­ c a m in o m á s c o r to fo rm a d o p o r. a l o su m o , i a rista s . U n a d e m o s tra c ió n d e e s to se
sia d o re s tric tiv o . E sta s e c c ió n e s tu d ia b re v e m e n te e l c a s o m á s g en eral.
d e ja c o m o e je rc ic io (E je rc ic io 14.9). E n c o n s e c u e n c ia , m n o h a y c ic lo s d e coste-
PROBLEMA DE LO S C A M IN O S M ÍN IM O S C O N C O STE S N E G A T IV O S n e g a tiv o . u n v é rtic e p u e d e s a lir d e la c o la c o m o m u c h o |V | v e c e s y e l a lg o ritm o
Y Ú N IC O O RIG EN c o n su m e u n tie m p o L A :t) |V ). E s m á s . si u n v é rtic e s a le d e la c o la m á s d e V'| v e ­
Buscar e l cam ino m ás corto (m edido co n su co ste total) desde e l vérti­ c e s. h a b re m o s d e te c ta d o un c ic lo d e c o s te n eg ativ o .
c e O a l resto d e vértices Los costes d e las aristas pu ed en ser negativos.

14.4.1 Teoría 14.4.2 lm plem entación en Ja v a

L a d e m o s tra c ió n d e la c o rre c c ió n d e l a lg o ritm o d e D ijk s tra n e c e sita q u e lo s c o ste s L a im p le m e n ta c ió n d e l a lg o r itm o d e b ú s q u e d a d e c a m in o s m ín im o s c o n p e so s


d e la s a rista s , y p o r ta n to lo s d e lo s c a m in o s, s e a n n o n e g a tiv o s. D e h e c h o , si e l n e g a tiv o s s e p re s e n ta e n la F ig u ra 14.31. H e m o s h e c h o u n p e q u e ñ o c a m b io c o n
g ra fo tie n e a ris ta s d e c o s te n e g a tiv o , e l a lg o ritm o d e D ijk s tra n o fu n c io n a c o rre c ­ re s p e c to a la d e s c r ip c ió n d e l a lg o ritm o : n o a ñ a d im o s u n v é rtic e a la c o la c u a n d o
ta m e n te . L l p ro b le m a se e n c u e n tra e n q u e u n a v e z q u e u n v é rtic e »• h a s id o p ro c e ­ v a e s tá e n e lla . P a ra h a c e r e sto , u tiliz a m o s e l c a m p o e x t r a . C u a n d o s e a ñ a d e un
s a d o . p u e d e e x is tir u n c a m in o d e v u e lta a v d e s d e o tro v é rtic e u n o p ro c e s a d o , con v é rtic e a la c o la , in c r e m e n ta m o s e x t r a t e n la lín e a 4 0 ). C u a n d o se q u ita d e la
c o s te b a sta n te n e g a tiv o . E n ta l c a s o , e l c a m in o q u e v a d e s d e O h a s ta » p a s a n d o p o r c o la , lo in c r e m e n ta m o s d e n u e v o te n la lín e a 2 6 ). P o r ta n to , e x t r a e s im p a r si el
ii e s m e jo r q u e ir d e O a v s in p a s a r p o r //. S i e s to ú ltim o o c u rrie ra , e sta ría m o s e n v é rtic e e s tá e n la c o la , y e x t r a / 2 n o s d ic e c u á n ta s v e c e s h a s a lid o d e la c o la (y
d ific u lta d e s: n o só lo e l c a m in o a i s e r ía in c o rre c to , s in o q u e te n d ría m o s q u e v isita r e s to e x p lic a la p re g u n ta d e l a lín e a 2 6 ). C u a n d o s e c a m b ia la d is ta n c ia a a lg ú n w.
d e n u e v o v. p o rq u e lo s v é rtic e s a lc a n z a b le s d e s d e v p o d ría n ta m b ié n s e r a fe c ta d o s p e r o y a e s tá e n la c o la ( p o r q u e e x t r a e s im p a r), n o lo a ñ a d im o s d e n u e v o . S in
H ay o tr o p ro b le m a a d ic io n a l p o r e l q u e p re o c u p a rse . C o n sid e re m o s e l g r a to de e m b a r g o , le s u m a m o s 2 p a ra in d ic a r q u e p o d ría h a b e r s a lid o > e n tr a d o d e la c o la
la F ig u ra 14.30. L l c a m in o d e l \ a V’4 tie n e c o s te 2 . S in e m b a rg o , e x is te u n c a m i­ te s to p u e d e a c e le ra r a lg o e l a lg o r itm o e n p re s e n c ia d e c ic l o s n e g a tiv o s ). E s to se
n o m á s c o n o s ig u ie n d o e l c ic lo V \. V4 , V ,. V ,. V4 . q u e tie n e c o s te - 3 . Y e s te c a ­ h a c e e n la s lín e a s 4 0 y 4 3 . L l re s to d e l a lg o r itm o u tiliz a c ó d ig o q u e y a s e h a v is ­
m in o n o e s a ú n e l m á s c o rto , y a q u e p o d ría m o s d a r u n n ú m e ro a rb itra rio d e v u e l­ to e n e l a lg o r itm o s in p e so s ( F ig u r a 14.24) y e n e l a lg o r itm o d e D ijk s tra (F ig u -
ta s a l c ie lo . P o r lo q u e e l c a m in o m á s c o n o e n tre e sto s d o s p u n to s e s tá in d efin id o .
ra 14.29).
1
2 • E je c u ta e l a lg o r i t m o de cam in os m ínim os. 14.5 Problem as d e cam inos en grafos a cíc lico s
3 • So p e r m i t e n a r i s t a s c o n c o a t e n e g a t i v o .
4 • Devuelve false s í se d etectan c ic lo s negativos
5 •/ U n a c la s e im p o rta n te d e g ra fo s so n a q u e llo s q u e n o c o n tie n e n c ic lo s , t i p ro b le m a Un
6 p r í v a t e boolean n e g ativ o s i i n t nodoOrig ) d e l c a m in o m ín im o e s m á s s e n c illo m e l g ra fo n o c o n tie n e cic lo s Cor e je m p lo , no oc|
d e b e m o s p re o c u p a m o s d e la p o sib le e x is te n c ia d e c ic lo s n e g a tiv o s , y a q u e n o hay om
COI
• int v. w; c ic lo s e n a b s o lu to E n c o n s e c u e n c ia , e s tu d ia re m o s e l sig u ie n te p ro b lem a. ior
9 C o l a q - new C o l a V e c l >•
n*
10 i n t cvw; PROBLEMA DE LO S C A M IN O S M ÍN IM O S C O N P ESO S DESDE UN Ú N IC O
i":
11 N O D O SO BRE G R A F O S A C ÍC L IC O S
12 1 im p la rD a to a ( ); Encontrar e l cam ino más corto (m edido con su coste total) en un gra­
13 tabial nodoOrig |.d is t = 0; fo o a clic o desde e l vérhee O nasta cuaiQuter otro vértice No nay res-
U q . i n s e r t a r ( new I n t o g e r i n o d o O r i g ) »;
fricciones sobre e l coste d e las arrstas
15 t a b l a | nodoOrig | . e x t r a v ­

P e ro a n te s d e a b o rd a r e l p ro b le m a d e lo s c a m in o s m ín im o s e n e s te c a s o g e n e ­
17 // Increm enta e x tr a cuando e l v ó r t i c e ve n tr a o sale ra l. e s tu d ia re m o s u n p ro b le m a re la c io n a d o : la o rd e n a c ió n to p o ló g ic u .
/ ' de la c o l a . Si e l v ó r t i c e e s t a a p u n to de e n t r a r , p e r o ya
19 / / e s t á en la c o la , c u e n t a como s i e n t r a r a ys a l i e r a
20 try
21 ( 14.5.1 O rdenación topológica
22 whilo( !q . e s V a c l a ( ) )
23 (
U n o r d e n iit/n iló g ico o id e n u Ion v é rtic e s d e un g r a l o d irig id .) a c íc lic o d e tal fo rm a Un
2* v •< (I n t e g e r ) q .q u ita r P r im e r o < » ).intV alue< >; to¡
25 q u e si h a y u n c a m in o d e u a v. e n to n c e s v a p a re c e d e s p u é s d e u e n la o rd e n a c ió n .
P o r e je m p lo , s e p u e d e u ti li /a r u n g r a to p a ra re p re se n ta r lo s p re R e q u is ito s en tre d
26 if( t a b l a [ v 1.e x t r a » . > 2 • num Vertices ) 9 fl
•7 r o tu rn foluo; / / e x i s t e un c ic lo c u rs o s d e u n a u n iv e rsid a d . U n a a ris ta (v . w ) in d ic a q u e e l c u rs o \ d e b e Ner c o m p le ­
■:
28 ta d o a n tes d e q u e p u e d a a fro n ta rs e e l c u r s o w . U n o rd e n to p o lo g ía » d e lo s c u rs o s qt
29 L i s t a l t e r p > new Li«it « E n l a z a d a I t e r ( t a b i a l v 1 . a d y ) ; e s c u a lq u ie r s e c u e n c ia q u e n o v io le l»»s p re rre q u is ito s U n a o rd e n a c ió n to p o ló g ic a cc
20 f o r < ; p . e s t a D e n t r o t >; p.avanzar( ) 1 e n c u e n tra to d o s lo s o rd e n e s to p o lo g ic o s p o sib le s s o b r e u n g r a f o a c íc lic o d a d o or
31 j at
E s ev id e n te q u e n o e x is tirá n in g ú n o rd e n to p o lo g ía » s i e l g ra fo c o n tie n e ciclo s,
>-
22 w = ( ( A r i s t a ) p . r e c u p e r a r ! )l . d e s t ; y a q u e p a ra c u a lq u ie r par d e v é rtic e s v y »» e n e l c ic lo , hay u n c a m in o d e v a »»■ y

23 cvw » | ( A r i s t a ) p . r e c u p e r a r ! )) . c o s t e ; d e w a v. P o r ta n to , c u a lq u ie r o rd e n a c ió n d e »• y i» e s ta r ía e n c o n tra d ic c ió n con Di
24 if( tabial w J.dist > tabial v J . d i s t . cvw ) a lg u n o d e lo s c a m in o s. U n g ra fo p u e d e te n e r v a n o s o rd e n e s lo p o ló g ic o s . y e n la lO
35 (
m a y o r íj d e lo s c a s o s , c u a n d o b u sq u e m o s u n o d e e llo s c u a lq u ie ra n o s v ald rá
26 tabial w J.d ist - labial v | . d í n t • cvw;
U n alg (»ritm o s e n c illo p a ra r c a li/a r la o rd e n a c ió n to p o ló g ic a c o n siste e n e n ­
27 tabla! w J . a n t - vi
38 c o n tra r p rim e ro u n v é rtic e v q u e n o te n g a a ris ta s d e e n tra d a . Se im p rim e e s te v é rti­
29 / / i n s e r t a r s ó l o s i no e s t á en l a cola c e y s e b o rra (ló g ic a m e n te ) d e l g ra fo ju n to c o n sus a n s ia s . I ra s e llo , s e s ig u e apli
40 ií< t a b la f w J . e x t r a » . % 2 •« 0 | c a n d o la m ism a e s tra te g ia a l re s to d e l g rafo . P a ra fo rm a liz a r e sto , d e fin im o s c o m o
* q . i n s e r t a r ( new I n t e g e r ( w ) ) ; g r a d o J e e n tr a d a d e u n v é rtic e v e l n um en» d e a ris ta s (« . v).
62 © l o o / / c u e n t a como u n a e l i m i n a c i ó n f a n t a s m a C a lc u la m o s lo s g ra d o s d e e n tra d a d e to d o s lo s v é rtic e s d e l g ra fo . F n la p rá c ti­
43 t a b i a l w ] . extra-*.; c a . « e lim in a r ló g ic a m e n te » s ig n ific a q u e re d u c im o s e n I e l g ra d o d e e n tra d a de
44
c a d a v é rtic e a d y a c e n te a v. L a F ig u ra 14.32 m u e s tra la a p lic a c ió n d e l a lg o ritm o a
45
u n g ra fo a c íc lic o . E l g ra d o d e e n tra d a s e c a lc u la p a ra c a d a v é rtic e . V 2 tie n e g ra d o

47 ) O; p«*r lo q u e e s e l p rim e n ) e n la o rd e n a c ió n . S i h u b ie r a v a rio s v é rtic e s c o n g ra d o
0 . p o d ría m o s e le g ir c u a lq u ie ra d e e llo s. C u a n d o se e lim in a n d e l g r a f o V2 y sus
catch( D esbordanuentolnferior e l ( ! // No p u e d e o c u r r i r
49 retu rn true; a rista s , lo s g ra d o s d e V,u V, y V', se d c c rc m c n ta n e n I A h o ra V0 tie n e g ra d o 0 . p o r
50 ) k* q u e e s e l sig u ie n te e n la o rd e n a c ió n to p o ló g ic a . y se re d u c e n lo \ g ra d o s d e V { y
V ,. E l a lg o n tm o c o n tin ú a , y e l rev io d e v é rtic e s s e e x a m in a n e n e l o rd e n V |. V *
Vt, y U v A l re ite ra r, n o b o rra m o s fís ic a m e n te las a n s ia s d e l g ra fo : la e lim in a ­
Figura 14.31 Algoritm o d e cam inos mínimos c o n costes n eg ativo s se perm iten arls c ió n (v irtu a l) d e a n s ia s s ó lo fa c ilita rá la v is u a li/a c ió n d e c ó m o d e c re c e n lo s g ra ­
tas negativas.
d o s d e e n tra d a .
T v é rtic e s d e g ra d o d e e n tra d a c e ro s e c o lo c a n e n la co la. P u r j e n c o n tr a r e l sig u ien te
v é rtic e e n e l o rd e n to p o ló g ic o . s im p le m e n te to m a m o s e l p rim e ro d e la c o la , e lim i­
n á n d o lo d e e lla . C u a n d o se re d u c e a c e r o e l g ra d o d e un v é rtic e , s e in tro d u c e e n la
c o la. S i la c o la s e q u e d a v a c ía a n te s d e h a b e r p ro c e s a d o lo d o s lo s v é rtic e s , e s p o r ­
q u e e l g ra fo c o n tie n e u n c ie lo . E l tie m p o d e e je c u c ió n e s lin e a l, p o r la m ism a r a ­
zón a rg ü id a e n e l a lg o ritm o d e c a m in o s m ín im o s sin p e so s

14.5.2 Teoría del algoritm o d e cam inos mínimos


co n un grafo a c íc lic o

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
® ® ® ®

© ®

Figuro 14.32 O rd en ació n top ológ ico Sigue e l mismo c o n ve n io q u e la Figura 14 23

IX»s c u e stio n e s i m p o n a n le s a c o n s id e ra r so n la c o rre c c ió n y la e fic ie n c ia . C la ra ­


m en te, c u a lq u ie r o rd e n p ro d u c id o p o r e l a lg o ritm o e s u n o rd e n to p o ló g ico . L a c u e s ­
tió n e s si to d o g ra fo a c íc lic o tie n e u n a o rd e n a c ió n to p o ló g ic a . y si e s así. si n uestro
a lg o ritm o g a ra n tiz a q u e e n c u e n tra u n a . L a re s p u e sta e s a firm a tiv a e n a m b o s c a so s.
S i e n c u a lq u ie r m o m e n to h a y v é rtic e s a ú n n o v is ita d o s, p e ro n in g u n o tie n e
g ra d o d e e n tr a d a c e r o , es p o rq u e e x iste u n c ic lo . P u ra v e r e sto , to m e m o s c u a lq u ie r
v é rtic e 4 o . V a q u e 4<> tie n e u n a a ris ta d e e n tra d a , p o d e m o s to m a r c o m o 4 , c u a l­
q u ie r v é rtic e c o n e c ta d o a 4 (, P e ro c o m o 4 | tie n e ta m b ié n u n a a ris ta d e e n tra d a ,
p o d e m o s to m a r c o m o 4 ; un v é rtic e c o n e c ta d o a 4 1. R e p e tim o s e l p ro c e s o N v eces.
d o n d e N e s e l n u m e ro d e v é rtic e s s in v is ita r e n e l g ra to . E n tre 4 « . 4 | .......4% d e b e
h a b e r d o s v é rtic e s id é n tic o s (y a q u e hay N v é rtic e s , p e r o V + I e le m e n to s ). Un
re c o rrid o h a c ia a tr á s e n tr e e sto s 4 , y 4 , id é n tic o s , e x h ib e u n ciclo.
E l a lg o r itm o p u e d e im p le m e n ta rsc e n tie m p o lin eal m a n te n ie n d o e n u n a c o la Figuro 14.33 Posos d e l algortim o do com inos mínimos sobre un grafo a c ic lico . S-
to d o s lo s v é rtic e s n o p ro c e s a d o s d e g ra d o d e e n tra d a c e ro . In ic ia lm e n te , to d o s lo s q u e e l mismo convento q u e la F.guro 14 23.
1 // A lgoritm o lineal, funciona nólo con g raío o «cíclicos
lis ia id e a fu n c io n a p o rq u e c u a n d o v is ita m o s e l v é rtic e r . e s ta m o s s e g u ro s de
2 prívate boolean a c ic lic o t Int nodoO rig 1
q u e I), n o s e rá re d u c id o n u n c a m á s . y a q u e p»*r d e fin ic ió n d e o rd e n to p o ló g ic o . n o
3 (
hay a ris ta s q u e lle g u e n a v d e s d e nodo*. n o v isita d o s I j F ig u ra 1 4 .3 3 m u e s tra los
4 int v. w. iteraciones • 0:
e sta d o s d e l a lg o r itm o d e c a m in o s m ín im o s, u tih /a n d o u n a o rd e n a c ió n lo p o ló g ic a 5 C o la q • new ColaV ecI l ;
p a ra g u ia i la v isita d e lo s v é rtic e s. O b s e rv e q u e la s e c u e n c ia d e v é rtic e s n o e s la 6
m ism a q u e e n e l a lg o ritm o d e D ijk stra . O b s e rv e ta m b ié n q u e lo s v é rtic e s v isita d o s 7 1 iir ^ ia r D a t o s i 1:
a n te s d e lleg ar al v é rtic e o rig e n , s o n in a lc a n z a b le s d e s d e e l o rig e n , p o r lo q u e n o 8 t a b l a [ nodoOrig ] -dlst • 0:
tie n e n in flu e n c ia e n las d is ta n c ia s h a s ta n in g ú n v é rtic e . 9
Y a q u e n o n e c e s ita m o s u n a c o la d e p rio rid a d , y s ó l o n e c e s ita m o s in c o r p o ra r la
o rd e n a c ió n lo p o ló g ic a a l c á lc u lo d e l c a m in o m ín im o , te n e m o s q u e e l a lg o r itm o se 11 (
e je c u ta rá e n tie m p o lin e a l y fu n c io n a rá c o rre c ta m e n te e n p re s e n c ia d e a rista s n e ­ 12 // C alcula los grados de entrada
13 fo r( v ■ 0; v < num V ertices; v** I
g a tiv as.
14
15 L istalter p ■ new L i s t a E n l a z a d a l t e r 1 t a b l a ( v ) .aay
1¿ t u r ( : p .est« D en tro ( ): p .av an x art ) »
14.5.3 Im plem entación ©n Ja v a 17 ta b la ! ( (A rista» p .r e c u p e r a rl > ) .dest I.
extra*»
10
L a im plem cntarw 'm d e l a lg o ritm o d e c a m in o s m ín im o s p a ra g ra to s ¿ c íc lic o s se 19
m u e s tra e n la F igura 14.34. U tiliz a m o s u n a c o la p a ra re a liz a r u n a o rd e n a c ió n to p o - 20 U Insertar en la co la vértices de grado cero

ló g ic a . y m a n ten em o s la in fo rm a c ió n so b re e l g ra d o d e e n tra d a e n e l c a m p o e x t r a . 21 fo r( v = 0; v < num V ertices; v*- )

L a s lin c a s d e la 13 a la 19 c a lc u la n lo s g ra d o s «le e n tra d a , y e n la s lin c a s d e la 21 a 22 i r t tablal v |.e x tra • • 0 )


23 q . i n s e r t a r ! new I n t e g e r ( v ) ):
la 2 3 . c o lo c a m o s e n la c o la c a d a v é rtic e c o n g ra d o 0 .
E n to n c e s, e n la lín e a 2 7 se re tira re p e tid a m e n te u n v é rtic e d e la c o la. O b s e rv e 24
25 fo r( iteraciones * 0; iq.esV acial I; iteraciones** >
q u e m la c o la se v a c ía , e l b u c le f o r te rm in a ra p o r la c o m p ro b a c ió n d e la lín e a 25.
26
S i e l b u c le te rm in a |**r la e x iste n c ia d e u n c iclo , se rá re fle ja d o e n la lín e a 50. F n 27 v»l (Integer) q .q u i t a r Prim ero! ) i.lntV alueí ):
o tro c a so , e l b u c le e n la lín e a 3 0 re c o rre la lista d e a d y a c e n c ia . o b te n ié n d o se e l v alo r
28
d e »» e n la línea 32. In m e d ia ta m e n te se d e c rc m e n to e l g ra d o d e e n tra d a d e h e n la 29 L istalter p » new L i s t a E n l a z a d a l t e r ( tabla! v |.ady
lín e a 3 3 . y. si lia lleg ad o a c e ro , se c o lo c a e s te v é rtic e e n b c o la (e n la lín e a 34). 30 for! ; p.estaD entro! ): p .avanzar! ) )
R e c u e rd e q u e si e l v é rtic e a c tu a l v a p a re c e a n te s d e O e n la o rd e n a c ió n lo p o ló ­ 31
g ic a . e n to n c e s v e s in a lc a n z a b le d e sd e O . B n c o n s e c u e n c ia , s e g u irá c u m p lié n d o s e 32 w = ( (A rista) p .re c u p e ra r< 1 >.dest;
I ) , = x y p o r ta n to , n o p u e d e a p a re c e r e n n in g ú n c a m in o a lo s v é rtic e s h a lea n - 3 3 if! --tabla! w ) .extra ■ ■ 0 1
z a b le v R e a liz a m o s la p re c e p tiv a c o m p ro b a c ió n e n la lín e a 3 6 . y si s e d a e l c a s o , 34 q .in sertar! new Integer! w > )

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:

l :n us*> im p o rta n te d e lo s g ra to s a c íc tic o s e s e l a n á lis is d e t u ñ u ñ o s c r ític o s , u n a 4 3 tablal w ] .ant • v:

fo rm a d e a n á lis is u tiliz a d a p a ra p la n ific a r la s ta rc a s a s o c ia d a s a u n p ro y e c to . F l 44

g r a tó d e la F ig u ra 14.35 sirv e c o m o e je m p lo C a d a v é rtic e re p re s e n ta u n a a c tiv i­ 45


46
d a d q u e d e b e re a liz a rse , j u n t o c o n e l tie m p o q u e s e ta rd a e n re a liz a rla . F l g r a lo se
47 )
d e n o m in a g r a lo d e a c tiv id a d e s , e n e l c u a l lo s v é rtic e s re p re se n ta n a c tiv id a d e s y las 48 catch ! D esbordam ientolnferlor © » ( ) / / No p u e d e o c u r r i r
a n s ia s re p re s e n ta n re la c io n e s d e p re c e d e n c ia , l - i e x is te n c ia d e u n a a r is ta (v . »•)
49
sig n ific a q u e la a c tiv id a d v d e b e r e a li/a r s e a n te s d e e m p e z a r la ta r e a h \ E v id e n te ­ 50 return iteraciones num V ertices;
m e n te . e s to im p lic a q u e e l g r a lo d e b e se r a c íc lic o . A su m ire m o s q u e la s a c tiv id a ­ 51 )
d e s q u e n o d e p e n d e n (d ire c ta o in d ire c ta m e n te ) e n tr e sí p u e d e n s e r re a liz a d a s en
p a ra le lo p o r d ife re n te s se rv id o re s.
Figuro 14 34 A lg o ritm o d e com in os m ínim os p o ro g ratos ocicllcos.
c a lc u la r e l tie m p o d e te rm in a c ió n m e n o r p a ra lo d o s lo s n o d o s d e l g rafo . S i d e n o ta ­
m o s e l tie m p o d e te rm in a c ió n m ín im o p a ra e l n o d o i p o r I X ',. e n to n c e s las reg las
a p lic a b le s so n

ECX- 0 y £C * - M a x ,, Mlt, ,< £ C \ + « , J .

L a F ig u ra 14 37 m u e s tra e l tie m p o d e te rm in a c ió n m ín im o p a ra c a d a v értice


e n n u e s tro e je m p lo d e g ra fo d e e v e n to s . T a m b ié n p o d e m o s c a lc u la r e l tie m p o m á ­
Figura 14.35 G ra to d e oct»v>dades x im o . IX ',. e n e l q u e c a d a e v e n to p u e d e te rm in a r sin a fe c ta r e l tie m p o d e te rm in a -
c ió n fin al, l a s fó rm u la s e n e s te c a s o son

E ste lip** «Ic g ra fo p u ed o u tiliz a rs e p a ra m o d e la r e l d e s a rro llo d e p ro y e c to s, e n


LCs - « V > L C , = M in ,, „ , 4 ,1 I X „ - c , h >.
e l c u a l so n d e in te ré s v a ria s c u e s tio n e s im p o rta n te s. E n p rim e r lu g ar, ¿ c u á l e s el
m e n o r tie m p o d e te rm in a c ió n d e l p ro y e c to ? E l g ra fo m u estra q u e s e n e c e sita n d ic /
u n id a d e s a tra v é s d e l c a m in o A . l \ / . / / . O tr a c u e s tió n im p o rta n te e s , q u é a c tiv i­ E sto s v a lo re s p u e d e n c a lc u la rs e e n tie m p o lin e a l m a n te n ie n d o , p a ra c a d a v é rtic e ,
u n a lista d e lo s v é rtic e s a d y a c e n te s y p re c e d e n te s . L o s tie m p o s d e te rm in a c ió n m í­
d a d e s se p u e d e n re tra sa r, y p o r c u á n to tie m p o , sin a fe c ta r al tie m p o m ín im o d e te r ­
n im o s se c a lc u la n s ig u ie n d o u n o rd e n to p o ló g ic o . y e l tie m p o d e te rm in a c ió n m á ­
m in a c ió n ? P o r e je m p lo , re tra s a r c u a lq u ie ra d e la s ta re a s A . C , I o I I h a ría q u e el
x im o s e c a lc u la s ig u ie n d o e l o rd e n to p o ló g ic o in v e rs o . L o s tie m p o s d e te rm in a ­
tie m p o d e te rm in a c ió n re b a s a ra la s d ie z u n id a d e s . P o r o tro lu d o , la a c tiv id a d H es
m e n o s c rític a y p u e d e re tra sa rse h a s ta d o s u n id a d e s d e tie m p o s in a fe c ta r a l tie m ­ c ió n m á x im o s se m u e s tra n e n la F ig u ra 14.38.
p o d e te rm in a c ió n final. El //e/»//*o J e e s p e r a p a ra c a d a a rista e n e l g ra fo d e e v e n to s e s la c a n tid a d d e
P a ra re a liz a r e sto s c á lc u lo s , c o n v e rtim o s e l g ra fo d e activ id u d c s e n un u r a fo J e tie m p o q u e p u e d e re tra sa rse la te rm in a c ió n d e la a c tiv id a d c o rre s p o n d ie n te sin re ­
tr a s a r e l tie m p o d e te rm in a c ió n to ta l E s fá c il v e r q u e
e v e n to s , e n e l c u a l c a d a ev e n to c o rre sp o n d e a la te rm in a c ió n d e u n a a c tiv id a d y de
to d a s su s a c tiv id a d e s d e p e n d ie n te s , L a s a c tiv id a d e s c o rre sp o n d ie n te s a lo s e v e n to s
a lc a n z a b le s d e s d e u n n o d o v e n e l g ra fo d e e v e n to s n o p u e d e n c o m e n z a r a e je c u ­ = LCm ~ FX\ - «y*.
ta rse h a s ta d e s p u é s d e h a b e r a c a b a d o la a c tiv id a d c o rr e s p o n d ie n te a l e v e n to *•.
E ste g r a f o p u e d e c o n s tr u ir s e a u to m á tic a m e n te o a m a n o (a p a rtir d e l g r a f o d e a c - l a F ig u ra 14 39 m u e s tra la e s p e r a p ara c a d a a c tiv id a d e n e l g r a to d e e v e n to s . P ara
uv id a d e s ). Q u iz á s s e a n e c e s a rio in s e rta r a ris ta s o v é rtic e s fa ls o s p a ra e v ita r in ­ c a d a n o d o , e l n u m e ro d e e n c im a e s e l m ín im o tie m p o d e te rm in a c ió n y e l n u m e ro
tro d u c ir d e p e n d e n c ia s fa ls a s 10 fa lla s e r r ó n e a s d e d e p e n d en cias» . E l g ra fo d e e v e n ­ d e a b a jo e s e l tie m p o d e te rm in a c ió n m áx im o .
to s c o rre sp o n d ie n te a l g ra fo d e a c tiv id a d e s d e la F ig u ra 1 4 .3 5 se m u e s tra e n la
F ig u ra 14.36. O b s é rv e s e l.i p re s e n c ia d e ta le s a ris ta s y v é rtic e s falso s
P ara e n c o n tra r e l tie m p o d e te rm in a c ió n m ín im o d e l p ro y e c to , s ó lo n e c e sita ­
m o s c a lc u la r la lo n g itu d d e l c a m in o n u is la r g o d e s d e e l p rim e r e v e n to al ú ltim o
e v e n to . P a ra g ra f o s g e n e ra le s, e l p ro b le m a d e l c a m in o m á x im o g e n e ra lm e n te no
tie n e se n tid o , p o r la p o s ib ilid a d d e c ic lo s J e c o s te fto sitiv o . q u e so n los e q u iv a le n ­
te s a lo s cic lo s d e c o ste s n e g a tiv o s e n lo s p ro b le m a s d e lo s c a m in o s m ín im o s S i hay
c ic lo s d e c o s te p o sitiv o , p o d e m o s p re g u n ta r p o r e l c a m in o sim p le m á s largo. S in
e m b a rg o , n o se c o n o c e n in g u n a so lu c ió n sa tisfa c to ria p a ra e s te p ro b lem a . A fortuna-
d a m e n te . e l g ra fo d e e v e n to s e s ac íc lic o : p o r lo q u e n o tenen»«*s q u e p re o c u p a m o s
d e la p re s e n c ia d e c ic lo s. E s fác il a d a p ta r e l a lg o r itm o d e c a m in o s m ín im o s p a ra

Figura 14.3Ó G r a t o d o e ve ntos. Figuro 14 36 T ie m p os d e t e r m n a c ió o m áxim o s.


c ic lo d e c o s te n e g a tiv o U n c ic lo c u y o c o s te e s m e n o r q u e c e ro . H a c e q u e la
m a y o ría d e lo s c a m in o s m ín im o s, si n o to d o s , e s té n in d e fin id o s p o rq u e p o d e ­
m o s d a r v u e lta s a rb itra ria m e n te p o r e l c ic lo y o b te n e r c a m in o s ta n p e q u e ñ o s
c o m o q u eram o s.
c ic lo d e c o s te p o s itiv o E n e l p ro b le m a d e l c a m in o m á s larg o , e l e q u iv a le n te a los
c ic lo s d e c o s te n e g a tiv o p a ra e l p ro b le m a d e l c a m in o m á s co rto ,
c o s te (p e s o ) d e u n a a r i s t a L a te r c e ra c o m p o n e n te d e u n a a ris ta , q u e m id e e l c o s te
d e a tra v e sa rla .
g r a d o d e e n t r a d a N u m e ro d e a ris ta s e n tr a n te s a un vértice,
Figura 14.39 Tiempos a e Term inación mínimos mó*«mos y d e esp e ra (inform ación g r a f o E stá fo rm a d o p o r un c o n ju n to d e v é rtic e s y u n c o n ju n to d e a n s ia s q u e c o ­
a d icio n a l en c a d a arista)
n e c ta n v é rtices.
g r a f o d e a c tiv id a d e s U n g ra fo c o n a c tiv id a d e s c o m o v é rtic e s y re la c io n e s d e p re ­
A lg u n a s a c tiv id a d e s tie n e n tie m p o d e e s p e r a c e ro . E sta s so n a c tiv id a d e s c ríti­ c e d e n c ia c o m o aristas,
c a s q u e d e b e n n e c e s a ria m e n te a c a b a r a s u h o ra H ay ul m e n o s u n c a m in o fo rm a d o g r a f o d e e v e n to s U n g ra fo q u e tie n e c o m o v é rtic e s e v e n to s q u e c o rre s p o n d e n a la
c o m p le ta m e n te c o n a n s ia s d e tie m p o d e e s p e r a c e ro : tu l c a m in o se d e n o m in a c a ­ te rm in a c ió n d e u n a a c tiv id a d y d e to d a s s u s a c tiv id a d e s d e p e n d ie n te s . L as
m in o crítico . a rista s m u e s tra n q u é a c tiv id a d d e b e c o m p le ta rs e p a ra a v a n z a r d e u n v é rtic e al
sig u ie n te . L l tie m p o d e te rm in a c ió n m ín im o e s la lo n g itu d d e l c a m in o m á s la r­
g o e n d ic h o g rafo .
g r a f o d ir ig id o U n g r a f o c u y a s a ris ta s so n p a re s o rd e n a d o s d e vértices,
Resumen g r a f o d ir ig id o a c íc lic o K ÍD A ) U n tip o d e g ra fo d irig id o q u e n o c o n tie n e ciclo s,
g r a f o s d e n s o s y d i s p e r s o s L'n g ra fo d e n s o tie n e u n g ra n n ú m e ro d e a ris ta s (g e n e ­
E ste c a p ítu lo h a m o s tra d o c ó m o s e p u e d e n u ti li /a r g ra f o s p a ra m o d e la r m u ch o s ra lm e n te c u a d rá tic o ). L o s g ra fo s típ ic o s n o so n d e n s o s , s in o d isp erso s,
p ro b le m a s d e la v id a real y e n p a rtic u la r c ó m o c a lc u la r e l c a m in o m ín im o b a jo li s t a d e a d y a c e n c ia U n v e c to r d e lis ta s u tiliz a d o p a ra re p re s e n ta r un g ra fo . U tiliza
g ra n \a r ie d a d d e c irc u n sta n c ia s. M u c h o s d e lo s g n if o s q u e a p a re c e n e n la p rá c tic a un e sp a c io lineal,
so n típ ic a m e n te m u y d is p e rs o s , p o r lo q u e e s im p o rta n te e le g ir e s tru c tu r a s d e d a ­ lo n g itu d d e u n c a m in o E l n ú m e ro d e arista s d e u n c a m in o ,
to s a p ro p ia d a s p a ra im p le m e n ta rlo s. lo n g itu d d e u n c a m in o c o n p e s o L a s u m a d e l c o s te d e la s a ris ta s d e l ca m in o ,
P ara g ra f o s sin p e s o s , lo s c a m in o s m ín im o s p u e d e n c a lc u la rs e e n tie m p o lineal lo n g itu d d e u n c a m in o s i n p e s o Ll n ú m e ro d e a ris ta s d e u n c a m in o ,
u tiliz a n d o u n a b ú sq u e d a e n a n c h u ra . P ara g ra f o s c o n p e so s p o sitiv o s, s e n ecesita m a t r i z d e a d y a c e n c i a U n a re p re se n ta c ió n d e u n g ra fo m e d ia n te u n a m a triz , que
a lg o m á s d e tie m p o , u tiliz a n d o e l a lg o ritm o d e D ijk s tra y u n a c o la d e p rio rid a d u tiliz a u n e s p a c io c u a d rá tic o .
e fic ie n te . P ara g ra fo s c o n p e so s n e g a tiv o s, e l p ro b le m a s e h a c e a ú n m á s c o m p lic a ­ o r ig e n ú n ic o U n a lg o ritm o q u e c a lc u la lo s c a m in o s m ín im o s d e s d e u n p u n to de
d o . F in a lm e n te , p a ra g ra to s a c íc lic o s , e l tie m p o d e e je c u c ió n v u e lv e a s e r lin eal, o rig e n a to d o s lo s v é rtic e s d e l g rafo .
c o n la a y u d a d e u n a o rd e n a c ió n to p o ló g ic a . tie m p o d e e s p e r a C a n tid a d d e tie m p o q u e p u e d e re tra s a rs e u n a a c tiv id a d , sin
a fe c ta r a l tie m p o to tal d e te rm in a c ió n ,
v é rtic e a d y a c e n t e »»• e s a d y a c e n te a v si hay u n a a ris ta d e v a h .

Elem entos del juego


Errores com unes
a lg o r it m o d e D ijk s tr a l ' n a lg o ritm o q u e re s u e lv e e l p ro b le m a d e lo s c a m in o s m í­ 1. U n e rro r c o m ú n e s n o c o m p r o b a r si e l g ra fo d e e n tra d a sa tisfa c e las c o n d i­
n im o s c o n peso. c io n e s re q u e rid a s p o r e l a lg o ritm o u tiliz a d o «por e je m p lo te n e r to d a s sus
a n á li s i s d e c a m in o s c r ític o s l n a fo rm a d e a n á lisis u tiliz a d a e n la p la n ific a c ió n de arista s p o sitiv a s o s e r acíc lico ).
ta re a s a s o c ia d a a un p ro y ec to , 2. E n la c la s e C a m in o , la fu n c ió n d e c o m p a ra c ió n c o m p a ra so la m e n te el
b ú s q u e d a e n a n c h u r a U n p ro c e d im ie n to d e b ú sq u e d a q u e p ro c e sa lo s v értices c a m p o c o a t e . S i e l c a m p o d e s t s e u tiliz a p a ra la c o m p a ra c ió n , e l a lg o ­
p o r n iv e le s. A q u é llo s m á s c e rc a n o s a l o rig e n s e e v a lú a n p rim e ro . N o s m o v e ­ ritm o p u e d e p a re c e r q u e fu n c io n a p a ra g ra f o s p e q u e ñ o s , p e r o p a ra g ra fo s
m o s d e v é rtic e a v é rtic e a c tu a liz a n d o la s d is ta n c ia s d e lo s v é rtic e s a d y a c e n te s, g ra n d e s e s sin d u d a in c o rre c to y d a rá re s p u e sta s s u b ó p tim a s. S in e m b a rg o ,
c a m in o S e c u e n c ia d e v é rtic e s c o n e c ta d o s p o r aristas. n u n c a p ro d u c irá u n c a m in o q u e n o e x is ta , p o r lo q u e e s te e rr o r e s d ifíc il
c a m in o s i m p l e U n c a m in o c u y o s v é rtic e s so n to d o s d is tin to s, e x c e p to e l p rim e ro d e d e te c ta r.
y e l ú ltim o q u e p u e d e n s e r ig u a les, 3. E l a lg o n tm o d e l c a m in o m ín im o so b re g ra fo s c o n c o s te s n e g a tiv o s d e b e
c ic lo E n u n g n ifo d irig id o , u n c a m in o q u e e m p ie z a y te rm in a e n e l m ism o v é rtic e c o n te n e r u n a c o m p ro b a c ió n p a ra d e te c ta r c ic lo s n e g a tiv o s ; e n o tr o c a so ,
y q u e c o n tie n e a l m e n o s u n a arista. c ic la rá in d efin id am en te.
En Internet Problem as p rácticos
1 4 .1 2 . E ste c a p ítu lo re iv in d ic a q u e e n la im p le m e n ta c ió n d e lo s a lg o ritm o s sobre
T o d o s lo s a lg o ritm o s d e e s te c a p ítu lo s e e n c u e n tra n d is p o n ib le s e n la re d . e n un g ra fo s q u e tra b a ja n c o n g ra n d e s d a to s d e e n tra d a , la e le c c ió n d e e s tru c tu ­
ú n ic o fic h e ro , e n e l d ire c to rio C h a p t c r U . E l n o m b re d e l fic h e ro e s e l sig u ie n te : ra s d e d a to s a d e c u a d a s e s c ru c ia l p a ra a se g u ra r u n re n d im ie n to ra z o n a b le
P a ra c a d a u n o d e los e je m p lo s sig u ie n te s, e n lo s q u e s e u tiliz a u n a e s tru c ­
(;ra p h .ja v n T ra d u c id o p o r G r a f o . j a v a , c o n tie n e la c la s e G r a f o c o n la ru ­ tu ra d e d a lo s p o b re o un a lg o ritm o m a lo , p ro p o rc io n e u n a n á lis is e n n o ta ­
tin a m a i n . c ió n O d e l re s u lta d o y c o m p á r e lo c o n e l re n d im ie n to d e lo s a lg o ritm o s y
e s tru c tu ra s do d a to s u tiliz a d o s e n e l te x to . In c o rp o re u n s ó lo c a m b io c ad a
v e z D e b e ría e je c u ta r su s tests c o n g ra fo s ra z o n a b le m e n te g ra n d e s v a le a ­

Ejercicios to ria m e n te d is p e rs o s . H a g a lo sig u ien te:

ii) C u a n d o se le e u n a a ris ta , c o m p ro b é si y a e s tá e n e l g rafo .


Cuestiones breves b) Im p le m e n te e l d ic c io n a rio u tiliz a n d o un re c o rrid o s e c u e n c ia l d e la
ta b la d e vértices.
1 4 .1 . E n c u e n tre e l c a m in o m á s c o rlo sin p e so s d e s d e \ \ a l re s to d e v é rtic e s en c) Im p le m e n te la c o la u tiliz a n d o e l a lg o ritm o d e l E je rc ic io 6 .1 3 (e s to
e l g ra fo d e la F ig u ra 14.1. d e b e ría a fe c ta r ul a lg o ritm o d e c a m in o s m ín im o s sin p eso s).
14.2. E n c u e n tre e l c a m in o m á s c o r t o c o n p e so s d e s d e V: a l re s to d e v é rtic e s e n J) E n e l a lg o ritm o d e c a m in o s m ín im o s sin p e s o s , im p le m e n te la b ú s ­
e l g ra fo d e la F ig u ra 14.1. q u e d a d e l v é rtic e d e m e n o r c o s te c o n un re c o rrid o se c u e n c ia l d e la
ta b la d e v é rtices.

Problem as teóricos r) Im p le m e n te la c o la d e p rio rid a d u tiliz a n d o e l a lg o r itm o d e l E je r c i­


c i o 6 .1 6 (e s to d e b e ría a fe c ta r al a lg o r itm o d e c a m in o s m ín im o s con
peso s).
14.3. M u e stre c ó m o e v ita r e l c o s te c u a d rá tic o d e la im c ia li/a c ió n d e la s m a tri­
f) Im p le m e n te lu c o la d e p rio rid a d u tiliz a n d o e l a lg o r itm o d e l E je r c i­
c e s d e a d y a c e n c ia , m a n te n ie n d o un tie m p o d e a c c e s o c o n sta n te a c a d a
c io 6 .1 7 te s to d e b e ría a f e c ta r a l a lg o ritm o d e c a m in o s m ín im o s c o n
arista.
pesos».
14.4. E x p liq u e c ó m o m o d ific a r e l a lg o ritm o d e c a m in o s m ín im o s sin p e so s, de
K) E n e l a lg o ritm o d e c a m in o s m ín im o s c o n p e so s, im p le m e n te la b ú s ­
ta l fo rm a q u e c u a n d o h a y a m á s d e u n c a m in o m ín im o ( e n té rm in o s del
q u e d a d e l v é rtic e d e m e n o r c o s te c o m o u n re c o rrid o se c u e n c ia l d e la
n ú m e ro d e a n s ia s ) e l e m p a te s e d e sh a g a e n fa v o r d e l d e m e n o r p eso to ta l
ta b la d e vértices.
14.5. E x p liq u e c ó m o m o d ific a r e l a lg o ritm o d e D ijk s tra p u ra q u e c u e n te e l n ú ­
h) E n e l a lg o ritm o d e c a m in o s m ín im o s s o b r e g ra fo s a c id i c e s , im p le ­
m e r o d e c a m in o s m ín im o s d ife re n te s d e s d e i h a s ta w .
m en to la b ú sq u e d a d e l v é rtic e c o n g ra d o d e e n tra d a c e r o c o n u n re c o ­
14.6. E x p liq u e c ó m o m o d ific a r e l a lg o r itm o d e D ijk s tra d e ta l fo rm a q u e c u a n ­
rr id o s e c u e n c ia l d e la ta b la d e v é rtices,
d o h a y a m á s d e u n c a m in o m ín im o d e s d e v h a s ta w . s e e lija e l c a m in o con
r) Im p le m e n te c a d a u n o d e lo s a lg o ritm o s u tiliz a n d o u n a m a triz de
m e n o r n ú m e ro d e aristas.
a d y a c e n c ia e n v e z d e lis ta s d e a d v a c e n c ia .
14.7. D é un e je m p lo d e g ra fo c o n a ris ta s n e g a tiv a s, p e ro s in c ic lo s n e g a tiv o s,
e n e l q u e e l a lg o ritm o d e D ijk s tra d é u n a re s p u e sta e rró n e a .
14.8. C o n s id e re e l sig u ie n te a lg o ritm o 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 P rácticas d e p ro g ra m a c ió n
m ín im o c o n a n s ia s n e g a tiv a s: s u m e u n a c o n sta n te c a c a d a c o s te d e a ris­
ta. e lim in a n d o lo s c o s te s n e g a tiv o s; c a lc u le lo s c a m in o s m ín im o s e n e s te 14.13. U n g r a f o d irig id o e s fu e rte m e n te c o n e x o si h a y u n c a m in o d e s d e c ad a
g ra fo ; tra s la d e e l re s u lta d o al g ra fo o rig in al. ¿ Q u é e s in c o rre c to e n e s te v é rtic e a c u a lq u ie r o tro . H a g a lo sig u ien te:
a lg o ritm o ?
14.9. D e m u e s tre la c o r r e c c ió n d e l a lg o r itm o d e l c a m in o m ín im o c o n a ris ta s n) E lija c u a lq u ie r v é rtic e O . M u e stre q u e si e l g r a f o e s fu e rte m e n te c o ­
n e x o . u n a lg o ritm o d e c a m in o s m ín im o s d e c la ra rá q u e lo d o s lo s v é r­
n e g a tiv a s . P a ra h a c e rlo , m u e s tre q u e c u a n d o v is ita m o s e l v é r tic e v p o r
í-é sim a v ez, e l v a lo r d e D , e s l a lo n g itu d d e l c a m in o m á s c o r to fo rm a d o , tices s o n a lc a n /a b lc s d e s d e O.
i
a lo s u m o , p o r aristas.
b) M u e stre q u e si u n g ra fo e s fu e rte m e n te c o n e x o , si la d ire c c ió n d e to ­
1 4 .1 0 . D é u n a lg o r itm o d e tie m p o lin e a l p a ra b u sc a r e l c a m in o d e m a y o r p e s o e n d as su s a n s ia s s e in v ie rte y s e e je c u ta u n a lg o ritm o d e c a m in o s m ín i­
u n g ra fo ac íc lic o . ¿ S e p u e d e e x te n d e r su a lg o ritm o a g ra fo s c o n c ic lo s? m o s d e s d e O , to d o s lo s v é rtic e s re s u lta rá n a lc a n z a b le s.
1 4 .1 1 . M u e stre q u e si lo s c o s te s d e las a ris ta s so n 0 o I e x c lu s iv a m e n te , e l a lg o ­ c) M u e s tre q u e las c o m p ro b a c io n e s e n (a) y ( b ) so n s u fic ie n te s pura
d e c id ir si u n g ra fo e s fu e rte m e n te c o n e x o (e s d e c ir, to d o g r a f o que
ritm o d e D ijk stra p u e d e im p le m e n tu rse e n tie m p o lin e a l u tiliz a n d o una
c o la d o b le (S e c c ió n 15.4). p a s e a m b o s te s ts será fu e rte m e n te c o n e x o ).
d) E sc rib a u n p ro g ra m a q u e c o m p ru e b e si u n g ra fo e s fu e rte m e n te c o ­ Bibliografía
n e x o . ¿ C u á l e s su tie m p o d e e je c u c ió n ?
E x p liq u e c o m o p u e d e re so lv erse c a d a u n o d e lo s sig u ie n te s p ro b le m a s L a s lis ta s d e a d y a c e n c ia p a ra re p re s e n ta r g ra f o s fu e ro n u tiliz a d a s p o r p rim e ra vez
a p lic a n d o u n a lg o r itm o d e c a m in o s m ín im o s. D ise ñ e u n m e c a n ism o p a ra e n ( 3 |. E l a lg o ritm o d e D ijk stra p a ra e l p ro b le m a d e lo s c a m in o s m ín im o s fue d e s ­
rep re se n ta r la e n tra d a y esc rib a un p ro g r a m a q u e resu e lva e l p ro b lem a . c rito o rig in a lm e n te e n |2 ) . E l a lg o ritm o para a ris ta s c o n c o s te n e g a tiv o se h a to m a ­
d o d e 1 1). l ’n te s t m á s e fic ie n te p a ra la te rm in a c ió n se d e s c rib e e n | 6 | . d o n d e ta m ­
1 4 .1 4 . L a e n tra d a e s u n a lista d e p u n tu a c io n e s o b te n id a s e n u n a lig a d e u n d e ­
b ién s e m u e s tra c ó m o las e s tru c tu ra s d e d a to s ju e g a n u n p a p e l im p o rta n te e n u n a
p o rte (d o n d e n o h a y e m p a te s). S i to d o s lo s e q u ip o s h a n g a n a d o a l m en o s
a m p lia v a rie d a d d e a lg o ritm o s so b re g ra fo s. 1 .a o rd e n a c ió n to p o ló g ic a e s tá to m a d a
u n a v e z y h a n p e rd id o a l m e n o s u n a v e z , p o d e m o s g e n e ra lm e n te « p ro ­
d e | 4 | . U n a g ra n c a n tid a d d e a p lic a c io n e s e n la v id a re a l d e a lg o ritm o s so b re g r a ­
b a r - . p o r un a rg u m e n to tra n sitiv o to n to , q u e c u a lq u ie r e q u ip o e s m e jo r
fo s p u e d e e n c o n tra rs e e n | 5 | . ju n to c o n re fe re n c ia s a o tr o s textos.
q u e c u a lq u ie r o tro . P o r e je m p lo , su p o n g a q u e e n u n a lig a d e seis eq u ip o s
d o n d e to d o e l m u n d o ju e g a 3 p a rtid o s, te n e m o s lo s sig u ie n te s re su lta d o s: I R E . B e llm a n . « O n a R o u tm g P ro b le m » , Q u a r te r lv o f A p p lie d M a th e m a -
A v e n c e a II y a C \ II v e n c e a C y a /•'; C v e n c e a / ) ; D v e n c e a E: E ven ce tie s 16 (1 9 5 8 ). 8 7 -9 0 .
a A : F v e n c e a D y a E. E n to n c e s p o d e m o s p r o b a r q u e A e s m e jo r q u e F 2. E . W . D ijk stra . « A N o te o n T w o P ro b le m s in C o n n e x io n w ith G ra p h s. Nu-
p o rq u e A v e n c ió a R q u e a su v e z v e n c ió a F . D e ig u a l fo rm a , p o d e m o s m e n s e h e M a lh e m a tik I (1 9 5 9 ), 2 6 9 -271.
p ro b a r q u e F e s m e jo r q u e A p o rq u e F v e n c ió a £ y £ v e n c ió a A . D ada 3. J . E. H o p c ro ft y R . E. T a rja n . « A lg o n th m 4 4 7 : E ffic ie n t A lg o rith m s fo r
u n a lista d e re s u lta d o s y d o s e q u ip o s X e Y. b u s q u e u n a d e m o s tra c ió n (si (jr a p h M a n ip u la tio n » . C o m m u n ic a tio n s o f th e A C M 16 (1 9 7 3 ). 3 7 2 -378.
e x is te ) d e q u e X e s m e jo r q u e Y o in d iq u e q u e ta l d e m o s tra c ió n n o ex iste. 4. A. B. K ah n . « T o p o lo g ic a l S o rlin g o f I.u rg e N e tw o rk s* . C o m m u n ic a tio n s
1 4 .1 5 . U n a p a la b ra p u e d e tra n sfo rm a rs e e n o tr a su s titu y e n d o u n c a rá c te r. S u p o n ­ o f th e A C M 5 (1 9 6 2 ). 5 5 8 -5 6 2 .
g a q u e te n e m o s u n d ic c io n a rio c o n p a la b ra s d e 4 le tras. D é un a lg o ritm o 5. I). E. K n u th . T he S ta n fo r d G r a p h R a s e . A d d iso n -W e sle y . R e ad in g . M ass.
q u e d e te rm in e si u n a p a la b ra A p u e d e tra n sfo rm a rs e e n o tra p a la b ra R. (1 9 9 3 ).
m e d ia n te u n a s e r ie d e s u s titu c io n e s d e u n c a rá c te r, y si e s a sí. q u e m u e s­ 6. R E. T arjan. D a ta S tr u c tu r e s a n d N etsso rk A lg o r ith m s . S o c ie ty f o r In d u s­
tre la c o rre s p o n d ie n te s e rie d e p a la b ras. P o r e je m p lo , m e s a se c o n v ie rte tria l a n d A p p lie d M a th c m a tic s. P h ila d e lp h ia , P c n n . (1985).
e n p o c o c o n la s e c u e n c ia m e s a . m e t a . s e t a . s e t o . p e t o . p o t o .
1 4 .1 6 . L a e n tra d a e s u n a c o le c c ió n d e d iv isa s y su s ta s a s d e c a m b io . ¿ H a y una
s e c u e n c ia d e in te rc a m b io s q u e p ro d u z c a d in e r o m á g ic a m e n te ? P o r e je m ­
p lo . si las d iv isa s s o n X . Y y Z. y la s ta s a s d e c a m b io s o n I X e s ig u al a 2
Y. 1 Y e s ig u a l a 2 Z y I X e s ig u a l a 3 Z . e n to n c e s 3 0 0 Z c o m p ra rá n 100
X . q u e a su v e z c o m p ra rá n 2 0 0 q u e a su v e z c o m p ra rá n 4 0 0 Z. P o r lo
q u e s e o b te n d ría u n b e n e fic io m á g ic o d e l 3 3 p o r cien to .
14.17. U n e stu d ia n te n e c e sita a p ro b a r c ie rto n ú m e ro d e c u rs o s p a ra g ra d u a rse , y
e sto s c u rs o s tie n e n p re rre q u is ito s q u e d e b e n c u m p lirs e . S u p o n g a m o s q u e
lo d o s lo s c u rs o s s e o fre c e n to d o s lo s se m e stre s y q u e u n e stu d ia n te p u e d e
m a tric u la rs e e n u n n ú m e ro in d e te rm in a d o d e c u rs o s. D a d a u n a lista d e
c u rs o s y su s p re rre q u is ito s. c a lc u le u n a p la n ific a c ió n q u e re q u ie ra e l m í­
n im o n ú m e ro d e sem e stre s.
14.18. El o b je tiv o d e l ju e g o d e K e v in tía e o n c o n siste e n c o n e c ta r a l a c to r d e una
p e líc u la c o n K ev in B a c o n p o r p a p e le s e n u n a m ism a p e líc u la E l m ín im o
n ú m e ro d e c o n e x io n e s e s e l n ú m e ro d e fla c ó n d e ese a c to r. Por e jem p lo .
T o m H an k s tiene u n n ú m e ro d e B aco n I. p o rq u e tra b a jó e n A p o lo 13 con
K ev in B aco n . S ally P ic ld n e n e u n n ú m e ro d e B aco n 2. po rq u e tra b a jó en
F o rrest G u m p c o n T o m H an k s. q u e tra b a jó e n A p o lo 13 c o n K evin B aco n
C asi to d o a c to r c o n o c id o tie n e u n n ú m e ro d e B a c o n I o 2 . S u p o n g a m o s
q u e tie n e u n a lista e x te n s a d e a c to re s y p e líc u la s , c o n p a p e le s, y h a g a lo
sig u ien te:
a) E x p liq u e c ó m o e n c o n tr a r e l n ú m e r o d e B ac o n d e u n acto r.
b) E x p liq u e c ó m o e n c o n tr a r e l a c to r c o n m a y o r n ú m e ro d e B acon.
r) E x p liq u e c ó m o b u s c a r e l m e n o r n ú m e ro d e c o n e x io n e s e n tre d o s a c ­
to re s a rb itra rio s
r u íit? i v
Implementociones
15 Pilas y colas

ste c a p ítu lo d is c u te las im p le m c n ta c io n e s d e las e s tru c tu r a s d e d a to s d e p i­

E la s y c o la s . R e c u e rd e d e l C a p ítu lo 6 . q u e su s o p e ra c io n e s b á sic a s d e b erían


re a liz a rs e e n tie m p o c o n sta n te . P a ra las p ila s y la s c o la s e x is te n d o s té c n ic a s
b á s ic a s d e c o n s e g u ir o p e ra c io n e s c o n c o s te c o n s ta n te . L a p rim e ra c o n s is te e n a l­
m a c e n a r lo s e le m e n to s d e fo rm a c o n tig u a e m p le a n d o u n v e c to r, m ie n tra s q u e la
se g u n d a c o n s is te e n a lm a c e n a rlo s d e fo rm a n o c o n tig u a e n u n a lista e n la z a d a . En
e s te c a p ítu lo s e p re s e n ta n las im p le m c n ta c io n e s d e la s d o s e s tru c tu ra s d e d a to s
e m p le a n d o a m b a s té c n ic a s. El c ó d ig o im p le m e n ta la s in te rfa c e s p re s e n ta d a s e n el
C a p ítu lo 6.
E n e s te c a p ítu lo verem os:

• U n a im p le m e n ta c ió n d e las p ila s b a sa d a e n u n v ecto r.


• U n a im p le m e n ta c ió n d e las c o la s b a sa d a e n u n v e c to r
• U n a im p le m e n ta c ió n d e las p ila s e m p le a n d o lis ta s en laz ad as.
• U n a im p le m e n ta c ió n «le las c o la s e m p le a n d o listas e n la z a d a s.
• L a u tiliz a c ió n d e la h e re n c ia p a ra o b te n e r u n a n u e v a e s tru c tu ra d e d a to s , lla ­
m a d a m í a d o b le .

15.1 lm plem entación d in á m ic a d e vectores

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

C o m o m u e s tra la F ig u ra 15.1. u n a p ila p u e d e im p lc n ie n ta rs e u s a n d o un v e c to r y


u n e n te ro . E l e n te r o c d p ( a m a d e p ila ) e s e l ín d ic e d e l v e c to r c o rre s p o n d ie n te al
e le m e n to s itu a d o e n la c im a d e la p ila . A sí. c u a n d o c d p e s - I . la p ila e s tá v acía .
P a ra a p i l a r , s e in c re m e n ta c d p y s e in s e ría e l n u e v o e le m e n to e n la p o sic ió n
c d p d e l v e c to r. E l a c c e s o a la c im a d e la p ila re s u lta triv ial, y la o p e ra c ió n «le
d e s a p i l a r s e ie a li/a decren»entand«» c d p . E n la F igura 15.1 n u istram o s la p ila resul­
tan te tra s las tres o p eracio n es siguientes: a p i l a r ( a ) , a p i l a r (b» y d e s a p i l a r ,
p a rtie n d o d e u n a p ila v acía .
1 p a c k a g e E a t t uctuzasDatos;
2
3 im p o rt E x c e p c io n e s . * :

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 )

Fi g u r o 15.5 Métodos c im a y d e s a p i l a r d e k J s P i l a s b a s a d a s e n un vector fin


insertar(b) a b

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

Figura 15.6 M é to d o c im a Y D e s a o ild r d e las P i l a s basad as e n u n vector. Fi g u r a 15.7 i m p l e m e n t a c i ó n a e las c o la s b a sa d a e n u n vector.


rin 1 package EstructuraflDato»;
2
D espula do 3 insertar V d c 3 I m p o r t E x c o p c l o n o u , *;
4
tamaño=3 cabeza 5 / / c l a s e ColaVec
6 //
7 /’ CONSTRUCCIÓN: s i n n i n g u n a i n i c i a l i z a c i ó r .
fin 8 //
i n s e r t a r (: f c d e 9 II ...............................................................OPERACIONES PÚBLI CAS....................... ..
10 / / v o i d i n s e r t a r ( x ) --> In se rta x
tam año^ 4 cabeza 11 II Object p rim e ro ( 1 - - > D e v u e l v e e l e l e m e n t o más a n t i g u o iní
12 n O b j e c t q u i t a r P r i m e r o I ) - - > D e v u e l v e y e l i m i n a e l e l e m e n t o má s <
13 II boolean esV a cia < ) --> Devuelve t r u e s i c o la v a c í a : s i no,
fin M i/ void v a c ia r! » — > Elim ina todos l o s elem entos
quitarP rím ero ( ) 1 d e 15 // ......................................................................ERRORES.................................... ..
16 primero o q u itarP rim ero d e una c o la vacia
t amaño 3 cabeza 17
18
19 • Im plem entación de l a s colas basada en un v e c to r.
t in 20 •/

quitarP rim ero ! 1 f c 21 p u b l ic c l a s s ColaVec implements Cola


22 <
tam año=2 cabeza 23 p u b l ic ColaVec( >
24 [ /• Figura 15.11 • / )
25
fin 26 p u b l i c boo l e a n e s V a c ia t )
27 { r e t u r n tamanyoActuai = = 0 ; )
quitarP rim ero ! 1 f 28 p u b lic void in s e r ta r ! O bject x »
lam año =1 cace z a 29 { /• F ig u ra 15.12 • / I
30 public void vaciar! I
Fi g u r a 15.8 Im ptem onración d e las c o la s e m p le a n d o la Im plem enfactón circular 31 t / • F ig u ra 15.15 • / I
32 p u b lic Object q u itarP rim ero i > throws D esbordam ientolnferior
33 { /• F ig u ra 15.14 * I
lo r s ó lo re s o lv e ría m o in e n iá n e a m e n te e l p ro b le m a . E s to e s d e b id o a q u e . in c lu s o si 34 p u b lic O b ject prim ero ! ) throws D esbordam ientolnferior
35 { /• F ig u ra 15.14 */ 1
el ta m a ñ o d e l v e c to r fu e ra 1.0 0 0 . d e s p u é s d e 1.000 o p e ra c io n e s i n s e r t a r , no
36
q u e d a e sp a c io lib re e n la c o la , in d e p e n d ie n te m e n te d e su ta m a ñ o a c tu a l. In c lu s o si 37 private O bject J J elV ector;
s e h a n re a liz a d o 1.000 a c c io n e s d e q u i t a r P r i m e r o . v a c ia n d o c o n e llo a nivel 38 prívate I n t tamanyoActu.il;
a b s tra c to la c o la , n o p o d e m o s a ñ a d ir n in g ú n e le m e n to m ás. 39 prívate in t cabeza;
S in e m b a r g o , ta l y c o m o m u e s tra la F ig u ra 15.8. e x is te un m o n tó n d e e sp a c io 40 prívate int fin;
lib re : to d a s las p o s ic io n e s a n te rio re s a c a b e z a e s tá n v a c ia s , p o r lo q u e p o d ría n r e ­ 41
42 static final int CAPACIDAD_POR_DEFECTO = 10;
c ic la rs e . C o n ta l o b je tiv o in tro d u c im o s la d r c u ltir id a d : c u a n d o f i n o c a b e z a r e ­
43
b a sa n la ú ltim a p o s ic ió n d e l v e c to r, se re p o s ic io n a n e n e l p rin c ip io d e l m ism o . E s­ 44 p rív ate in t increm entar! in t x
ta im p le m e n ta c ió n re c ib e e l m im b re d e im p le m e n ta c ió n c irc u la r. A h o ra sólo 45 | /• F ig u ra 15.10 • / >
n e c e s ita m o s d u p lic a r e l v e c to r c u a n d o e l n ú m e ro d e e le m e n to s e n lu c o la s e a ig u al 46 p riv a te void d uplicarC ola( )
a l n ú m e ro d e e le m e n to s in s e rta d o s e n e l v e c to r. P a ra re a liz a r i n n o r t a r t f > s itu a ­ 47 { /* F ig u r a 15.13 ' / )
m o s f i n a l p rin c ip io d e l v e c to r y c o lo c a m o s f e n e s a p o sic ió n . A h o ra , tra s la s tres 48 )

a c c io n e s q u i t a r P t i m o r o . ta m b ié n s itu a m o s c a b e z a ¡ti p rin c ip io d e l v ecto r. Fi gur o 15.9 Esqueleto d e la c la se C o l a V e c .


El e s q u e le to d e la c la s e g e n é ric a C o l a V e c s e m u e s tra e n la F ig u ra 15.9. I-a
c la s e C o la V e c tie n e c u a tro a trib u to s: u n v e c to r q u e p u e d e e x p a n d irs e d in á m ic a ­
m e n te . e l n ú m e ro d e e le m e n to s q u e e s tá n e n c a d a m o m e n to e n la c o la , y la s p o s i­ a ñ a d e l a -su p a rá m e tro y d e v u e lv e e l n u e v o v a lo r. C o m o s e r v irá p a la im p le m e n ta r
c io n e s e n e l v e c to r d e l p rim e r y ú ltim o e le m e n to d e la cola. la c irc u la rid a d . si m i re s u lta d o e s ig u al a l ta m a ñ o d e l v ecto r, s e aju sta a c ero . E s to se
E n la s e c c ió n p riv a d a d e la c la s e s e d e c la ra n d o s m é to d o s . E sto s m é to d o s son m u e s tra e n la F ig u r a 15.10. L a o tra ru tin a e s d u p l i c a r C o i a . q u e e s in v o c a d a
e m p le a d o s in te rn a m e n te p o r lo s m é to d o s d e c o l n V o c , p e r o n o e s tá n d isp o n ib le s c u a n d o i n s e r t a r p re c is a d e la d u p lic a c ió n d e l v e c to r. F-s lig e ra m e n te m á s c o m ­
p a ra e l u su a rio d e la c la s e . E l D rím ero d e e llo s e s la ru tin a a n c r e r e n t a r , uuc p lic a d a q u e d u p l i c a r V e c t o r . v a q u e a h o ra lo s e le m e n to s d e la c o la n o e s tá n ne-
1 /• •
2 • Método i n t e r n o p a r a e l i n c r e m e n to con c i r c u l a n d a d . 2 • Método I n t e r n o p a r a e x p a n d i r e l V e c t o r .
3 • «paramx c u a l q u i e r í n d i c o on o l ra n g o d«* « l V » c t o r . 3 •/
4 • « re tu rn x*l. o 0 si x e s tá a l fin a l de e lV ec to r. 4 p r iv a te void duplicarC ola! )
5 •/ 5 i
6 prívate int increm entar( int x ) 6 O bject l J nuevoVector;
7
7 l
8 nuevoVector ’ new O b j e c t I e l V e c t o r . l e n g t h * 2 J;
8 i f ( -*«x » ■ e l V e c t o r . l e n g t h I 9
9 x = 0; 10 / / Copia de lo s elem entos de l a cola
10 return x; 11 for( int i ■ 0; i < ta m a n y o A c tu a l;
11 ) 12 i*-*, c a b e z a = i n c r e m e n t a r ! cabeza ) )
13 nuevoVectorI l 1 * e lV e c to rl cabeza |;
Figuro 15.10 Rutn a d e g en e ra ció n d e ka clrcuíarld od 14
15 elV ector = nuevoVector;
16 cabeza ■ 0;
c e s a n a m e n te a lm a c e n a d o s e m p e z a n d o e n la p o sic ió n c e r o d e l v e c to r. C o m o c o n ­ 17 f i n = tamanyoActual - 1;
se c u e n c ia . lo s e le m e n to s d e b e n se r c o p ia d o s c o n c u id a d o . d u p l i c a r C o l a se d is ­ 18 J
c u te ju n to a i n s e r t a r .
F igu ra 15.13 Expansión d in á m ica d e la clase d e la s C o la s b asod as e n un vecto r
luí m a y o ría d e lo s m é to d o s p ú b lic o s s e a se m e ja n a s u s e q u iv a le n te s e n la s p i­
las. in c lu y e n d o e l c o n stru c to r m o s tra d o e n la F ig u ra 15.11. E ste c o n s tru c to r n o
e s p a rtic u la rm e n te sin g u la r, s a lv a d o e l h e c h o d e q u e d e b e m o s a s e g u ra m o s q u e O b s e r v e l o s n u e v o s v a l o r e s d e c a b e z a y f i n . e n l a s l í n e a s 1 6 y 1 7. I-as r u t in a s
c a b e z a y f i n re c ib e n lo s v a lo re s ad e cu a d o s. q u it a r P r im e r o y p r im e r o s e m u e s t r a n e n l a F i g u r a 1 5 . 1 4 ; a m b a s s o n c o r t a s y
F.n la F ig u ra 15.12 s e m u e s tra la ru tin a i n s e r t a r . L a e s tra te g ia b á sic a e s m u y se n c illa s . F in a lm e n te , v a c i a r s e m u e str a e n la F igu ra 1 5 .1 5 . D e n u e v o e s c la r o
se n c illa , ta l y c o m o s e m u e s tra e n la s lín e a s 9 a 11. d u p l i c a r C o l a . m o stra d o q u e la s rutinas d e l a s c o l a s s e e j e c u t a n e n t ie m p o c o n s ta n te . D e l m i s m o m o d o que
e n la F ig u ra 15.13. e s sim ila r a la ru tin a d e d u p lic a c ió n d e la s p ila s, s a lv o e n e n e l c a s o d e la s p ila s, e l c o s t e d e la d u p lic a c ió n d e v e c to r e s p u e d e a m ortizarse
lo q u e s e re fie re a la c o p ia d e lo s v e c to re s, e n la q u e e l re c o rrid o del v e c to r v iejo s o b r e l a s e c u e n c i a d e o p e r a c i o n e s in s e r t a r .
n o c o m ie n z a e n la p rim e ra p o sic ió n . E n e s te c a s o , e n las lín e a s 11 a 13 e l m é to d o
s a lta a lo larg o d e l v e c to r a n tig u o y c o p ia c a d a e le m e n to e n e l n u e v o . L o s re s u l­ 1 /• *
ta d o s s e c o p ia n e n e l n u e v o v e c to r, re c o rrie n d o é s te d e s d e la p rim e ra p o sició n . 2 • D e v u e lv e y e l i m i n a e l e le m e n t o m ás a n t i g u o i n s e r t a d o
3 • en la c o la .
4 • « r e t u r n e l e le m e n t o m ás a n t i g u o i n s e r t a d o e n l a c o l a .
5 • « e x c e p t io n D e a b o r d a m ie n to ln fe r io r mi la c o l a e s t á v a c i a .
• Construye la cola. 6 */
7 p u b lic O b ject q u ita rP rim ero { I throw a D c a b o r d a m ie n to ln fe r io r
p u b l i c ColaVec! ) 8 (
I 9 i £ l esV a cia t I >
e l V e c t o r • n e w o b j e c t I CAPACIDAD_POR_DEFECTO 1; 10 th r o w new D o 3 b o r d a m i o n t o l n í c r i o r ! 'Q u ita r P r im c r o " I;
vaciar! I ; 11 ta m a n y o A ctu a l--:
1 12
13 O b je c t v a lo rD e v u e lto = e lV e c t o r [ ca b e z a J ;
Figuro 15.11 C onstructor sin parám etros d e las C o la s b a sa d a s e n un vecto r 14 cab eza = in crem en ta r ! cabeza ):
15 retu rn v a lo rD ev u elto ;
16 }
17
18 /••
• I n s e r t a un nuevo elem ento en l a c o la .
19 • D e v u e l v e 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 e n i a c o l a .
* üparam x e l e le m e n to a i n s e r t a r .
20 • « r e t u r n e l e le m e n t o m ás a n t i g u o i n s e r t a d o e n l a c o l a .
21 • « e x c e p t io n D esb o rd a m ien to ln ’ e r i o r s í i a c o l a e s t a v a c ia .
p u b lic void i n s e r t a r ! O bject x > 22 •/
( 23 p u b lic O b ject p rim ero ! > throw s D e sb o r d a m ie n to ln fe r lo r
i f • t a m a n y o A c t u a l == e l V e c t o r . l e n g t h ) 24 (
d u p lic a rC o la ! ); 25 if( e a V a cia ! ) )
f i n = In c re m e n ta r! f i n ); 26 th r o w new D e s b o r d a m l e n t o l n f e r i o r I " P r im e r o ’ 1;
e l V e c t o r [ f i n J = x; 27 r e t u r n e l V e c t o r i c a b e z a J:
tomanyoAct u a l » * ; 28 }
12 }
Figuro 15.14 M étodos q u i t a r P r im e r o y p r im e r o d e las C o la s b asad as e n un
Figuro 15.12 M é to d o i n s e r t a r d e las C o la s basad os e n un vector. vector.
1 /••
2 * Vaciado ló g ic o d e la cola.
3 */
4 public void v a c ia r l )
5 {
6 ta m e n y o A c tu a i * 0;
7 cabeza = 0; íir. = -1;
8 )
Figura 15.16 im p lem entación d e u n a pila m echante u n a lista e n la z a d a
Figura 15.15 R utina v a c i a r p a r a la s C o l a s b asad as e n u n v e c to r

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. E s im p o rta n te c o m p re n d e r im p lc m e n ta c io n e s a lte rn a tiv a s q u e p u e d e n ser O b s é rv e s e q u e e l a c c e s o a la n u e v a c la s e N o d o L i s t a e s a m is to s o . E s to sig n ific a


titiles e n o tro s le n g u a je s d e p ro g ra m a c ió n . q u e e s te tip o n o p e rte n e c e a l á m b ito g lo b a l, p e r o e s v is ib le p a ra e l re s to d e c la s e s
2. L a s im p lc m e n ta c io n e s q u e e m p le a n lista s e n la z a d a s so n m á s re d u c id a s
q u e las c o rre sp o n d ie n te s v e rsio n e s c o n v e c to re s, e s p e c ia lm e n te e n el c aso 1 packag» E structurasD atos;
d e las c o la s . 2
.V D ichas im p lcm en tacio n es ilu stra n a lg u n o s p rin c ip io s q u e se esc o n d e n tras 3 / / Nodo b á s i c o a l m a c e n a d o e n u n a l i s t a e n l a z a d a .
las o p eracio n es g e n e ra le s c o n lista s e n la z a d a s p re se n ta d a s e n e l C a p itu lo 16. 4 / / N ó t e s e q u e e s t a c l a s e n o e s a c c e s i b l e É uexa
5 / / del paquete E structurasD atos.
P a ra q u e la im p le m e n ta c ió n s e a c o m p e titiv a c o n la s im p le m e n ta c io n e s c o n ti­ 6
g u a s c o n u n v e c to r, d e b e m o s s e r c a p a c e s d e e je c u ta r la s o p e ra c io n e s b á s ic a s de 7 class NodoLista
lista s e n la z a d a s e n tie m p o c o n s ta n te . E s to e s se n c illo , y a q u e lo s c a m b io s e n la lis­ 8 l
9 // C onstructores
ta e n la z a d a se lim ita n a lo s e le m e n to s d e lo s d o s e x tre m o s ( c a b e z a y f i n ) d e la
10 N o d o L ista( O bject e l Elemento >
lista. 11 { t h i s l elElem ento, n u i l l: )
12
13 NodoLista! Object elEiom ento, NodoLista n )
14 { dato = elE lea en to ; s ig u ie n te = n; )
15.2.1 Pilas
15
16 n A t r i b u t o s a m i s t o s o s ; a c c e s i b l e s d e s d e o t r a s r u t i n a s d e l pa<
E l in te rfa z P i l a p u e d e im p le m e n ta rse e m p le a n d o u n a lista e n la z a d a , e n la q u e la 17 Object dato;
c im a d e la p ila e s tá re p re se n ta d a p o r e l p rim e r e le m e n to d e la lista. E sto se ilu stra 18 NodoLista s ig u ie n te ;
e n la F ig u ra 15.16. P a ra im p le m c n ta r la o p e ra c ió n a p i l a r . c re a m o s un n u e v o n o ­ 19 )
d o y l o in c lu im o s e n la lis ta c o m o p rim e r e le m e n to . D ic h o n o d o se g e n e ra p o r la Fiauro 15.17 C lase N o d o L is ta .
d e l p a q u e te E s t i u c t u r « i » D a t o s . E s to e s p o s itiv o , y a q u e fu e r z a e l « c u ita m ie n ­ lu í o p e ra c ió n a p i l a r re q u ie re u n a ú n ic a lín e a d e c ó d ig o : la c re a c ió n d e un
to d e la in fo rm a c ió n . L o s N o d o L i s t a so n u n d e ta lle in te rn o d e l p a q u e te d e e s ­ n u e v o N o d o L i s t a . E l a trib u to c o n tie n e e l e le m e n to x a in s e n a r. y la re fe re n c ia
tru c tu ra s d e d a to s , p e ro s o n c o m p le ta m e n te in v is ib le s p a ra lo s u su a rio s d e la c la s e s i g u i e n t e p a ra e l n u e v o n o d o e s la c i m a D e P i l «i in ic ia l. E l i hh Io c re a d o p a s a a
Pila. s e r la n u e v a c im a . T o d o e s to s e re a liz a e n la lín e a 32
L a F ig u ra 1 5.1 8 m u e s tra la c la s e P i l a L i q u e im p le m e n ta e l in te rfa z P i l a L a s m im a s re s ta n te s se m u e s tra n e l la F ig u ra 15.19. L a o p e ra c ió n d e s a p i l a r
u s a n d o u n a lis ta e n la z a d a . L a p ila s e r e p r e s e n ta m e d ia n te un ú n ic o a trib u to : ta m b ié n e s m u y sen cilla. T r a s e l lest o b lig a to r io p a ra d e le c ta r la p ila v a c ía , s e a c ­
c i m a D e P i l a e s u n a re fe re n c ia q u e a p u n ta a l p rim e r N o d o L i s t a d e la lis ta e n la ­ tu a liz a c i m a D e P i l a d e n u x lo q u e a p u n te a l se g u n d o e le m e n to d e la lista. A n á lo ­
zad a. E l c o n stru c to r d e la lín e a 24 in d ic a q u e s e c re a u n a p ila v a c ía in ic ia liz a n d o g a m e n te . c i m a y c i m a Y D e s a p i l a r so n ru tin a s m u y breves.
cim aD eP ila a n u il.

kage E stru ctu rasD a to s: 1 /• •


2 • Devuelve e l ú ltim o elem ento i n s e r ta d o en la p ila .
ort Excepciones.• ; 3 • No m o d i f i c a l a p i l a .
4 • U return e l ú ltim o elem ento i n s e rta d o en la lista.
Clase P ilaL i 5 • «exception D esbordam ientolníerior s i la p ila e s tá vacia.
6 V
CONSTRUCCIÓN: s i n n i n g u n a iniC ialización 7 p u b l ic O b je ct cima! > throws D esbordam ientolníerior
8 (
.................................................. ' " " O P E R A C I O N E S PÚBLICAS............................................................ 9 i f i esV acia( I »
void a p i l a r { x ) --> I n s e r t a x 10 t h r c w new D e s b o r d a m i e n t o l n í e r i o r ! 'C im a' );
void d e s a p ila r l I --> Elim ina e l ú ltim o elem ento in s e r ta d o 11 re tu rn cim aD eP lla.dato;
O bject cima( ) --> Devuelve e l ú ltim o elem ento i n s e r ta d o 12
D b je c t cim aYDesapi l a r < ) - - > D e v u e lv e y e l im in a e l e l e m e n t o más r e c i e n t e 13
boolean esV acla! I --> Devuelve t r u e s i p i l a v a c í a : s i no. f a ls e 14 •
void v a c i a r ! ) — > Elim ina todos l o s elem entos
15 * D e v u e l v e e l ú 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 .
............................ERRORES*....................... ............................................... ..................
16 • Q e x c e p t i o n D e s b o r d a m i e n t o l n f e r i o r s i l a p i l a e s t á v a c í a .
i e s a p i l a r , cima y cim aY D esapilar s o b r e una p i l a v a c ía
17 • /
18 p u b l i c v o i d d e s a p i l a r ! ) r h r o w s D e s b o r d a m i e n t o l n í e r i o r
19 {
Implem entación de l a s p i l a s b a sa d a en una l i s t a enlazada.
20 i f t eaV acial ) )
iic class PilaLi impleroents Pila 21 t h r o w n e w D e s b o r d a m i e n t o l n í e r i o r ! ' D e s a p i i a r ' 1;
22 cim aD ePila » c im a D e P ila .s ig u ie n te ;
public PilaL i! > 23 )
< c iñ a D e p i l a . nuil: 1 24
25 / • •
p u b lic boolean esVacia! | 26 • D e v u e l v o y e l i m i n a e l ú l t i m o e l e m e n t o i n s e r t a d o
{ r e t u r n c i m a D e P i l a == n u i l ; ) 27 • e n l a p i l a .
p u b lic void vaciar! 1 28 • B r e t u r n e l ú 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 .
( CimaDePila = n u i l ; ) 29 • « e x c e p t i o n D e s b o r d a m i e n t o l n í e r i o r s i l a p i l a e s t á v a c i a .
p u b lic v o id a p il a r ! Object x ) 30 • /
l c i m a D e p i l a » new N o d o L i s t a ! x. cim aDePlla ); ) 31 p u b lic Object cim aY D esapilarl ) throws D esbordam ientolníerior
32 {
public void d e so p ila r! ) throws D esbordom ientolnferior 33 ií( e s v a c ia ! > )
{ /* F ig u ra 15.19 • / }
34 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 ! "cim aY D esapilar‘ );
p u b l ic O b je ct cima! ) throws D esbordam ientolníerior
35
( / ' F ig u ra 15.19 •/ 1
36 O b je c t datoCima = c im a D e P ila .d a to ;
p u b l i c O b ject Cim aY D esapilar( > throws D esb o rd a m ie n to ln íerio r
l / • F ig u ra 15.19 • / ) 37 c i m a D o P i l a • cI nuiDePi l a . s i g u i e n t e ;
38 r e t u r n datoCima
private N odoL ista ciraaDoPila; 39 )

Figura 15.19 C o m p o n e n te s sencillas d e la c la s e P i l a b o s o d o e n u n a lista e n la z a


.1® Esqueleto d e la clase P ila b a so d a en u n a hsta e n la za d a (P ilaL i). da (PilaL i).
15.2.2 C o las L n la F ig u ra 15.22 s e im p le m e n ta q u i t - a i P r i m e r o . D ic h a ra tin a e s ló g ic a ­
m e n te e q u iv a le n te a la o p e ra c ió n d e las p ila s d e s a p i l a r , p r im e r o e s n iu y s e n c i­
L as c o las p u e d e n im p le m e n ia rse e m p le a n d o u n a lista e n la z a d a , s ie m p re q u e se m a n ­ llo y se m u e s tra e n la F ig u ra 15.23.
ten g an re fe re n c ia s q u e ap u n te n al p rin c ip io y al fin al d e la lista L a F ig u ra 15.20 E l méUxk» i n s e r t a r d is tin g u e d o s c a so s . S i la c o la e s tá v a c ía , c re a m o s u n a
ilu stra la idea g en eral. c o la c o n u n ú n ic o e le m e n to , in v o c a n d o a n ew . v a c tu a liz a n d o c a b e z a y l i n de
l.o s m é to d o s d e las c o la s s o n p rá c tic a m e n te id é n tic o s a lo s d e la s p ila s E n la m o d o q u e a m b o s re fe re n c ie n a l ú n ic o n o d o e x is te n te . E n c a s o c o n tra rio , c re a m o s
F ig u ra 15.21 s e m u e s tra e l e s q u e le to d e la c la s e C o l a L i . L n e lla n o hay n a d a n u e ­ u n n u e v o n o d o c o n e l d a lo x . lo a ñ a d im o s a l fin al d e la lista y a c tu a liz a m o s e l fi­
v o . fu era d e l h e c h o d e q u e m a n te n e m o s d o s re fe re n c ia s e n lu g a r d e una. n a l d e la lista a e s e n u e v o nodo. T o d o e s to s e ilu stra e n la F ig u ra 15.24. N ó tese
q u e la in s e rc ió n d e l p rim e r e le m e n to e s u n c a s o e s p e c ia l, y a q u e n o e x is te n in g u n a
re fe re n c ia s i g u i e n t e a la q u e p u e d a a p u n ta r e l n u e v o n o d o T o d o e s to se h a c e en
la F ig u ra 15.25.

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 .

Figuro 15.24 O p e ra ció n i n s e r t a r p a ra la im p lem entación b a s a ría e n u n a lista


en lazad a. 15.4 C o las dobles
E ste c a p ítu lo c o n c lu y e c o n u n a d is c u sió n ac e rc a d e l u s o d e la h e re n c ia p¿jra d e ri­
1 /• • v a r u n a n u e v a e stru c tu ra d e d ato s. U n a c o la d a b le e s sim ila r a u n a c o la , e x c e p to por
2 * I n s e r t a un n u evo e le m e n to en l e c o la . e l h e c h o d e q u e e s tá p e rm itid o e l a c c e s o p o r a m b o s e x tre m o s. E l E je rc ic io 1 4 .1 1
3 • Sparam x e l e le m e n to a i n s e r t a r . d e sc rib e u n a a p lic a c ió n d e las c o la s d o b le s . L o s térm in o s e m p le a d o s e n lu g ar de
4 •/
i n s e r t a r y q u i t a r P r i m e r o , so n a n y a d i r P o r D e l a n t e . u n y a d i r P o r D e t r a s .
5p u b l i c v o id i n s e r t a r ! O b je c t x )
6( e l i m i n a r P o r D e l a n t e y e l i m i n a r P o r D e t r a s . I-a F ig u ra 15.26 m u e s tra l a c l a ­
7 i £ | e s V a c ia ( ) ) / / G e n e ra una c o la d e un s o l o d a to s e d e riv a d a C o l a D o b l e . L a d e riv a m o s a p a rtir d e C o l a V e c y a q u e la e lim in a c ió n
S f i n = c a b e z a = new N o d o L is t a l x I ; d e n o d o s a l fin al d e u n a lista n o e s tá s o p o rta d a d e fo rm a eficien te.
9 e l s e // C a s o r e g u la r E l c o n s tr u c to r p o r d e f e c t o d e e s ta c la s e v e n d rá d a d o p o r u n a lla m a d a a
10 f i n = f i n . s i g u i e n t e = new N o d o L is t a l x ) ;
s u p e r . lo q u e re s u lta a d e c u a d o , i n s e r t a r y q u i t a r P r i m e r o pueden e m ­
11 )
p le a rs e . p u e s to q u e a l e x te n d e r c la s e s n o p o d e m o s e lim in a r m é to d o s. El m é to d o
p r i m e r o d e la c la s e d e las c o la s n o s e c a m b ia , s e h e re d a sin m o d ific a c ió n alguna,
Figuro 15.25 M é to d o i n s e r t a r p a r a la c la se C o l a b o so d a e n u n a lista e n la z a ­
d a ( C o l a L i) . a n y a d i r P o r D e t r a s y e l i m i n a r P o r D e l a n t e in v o c a n a las ru tin a s i n s e r t a r
y q u i t a r P r i m e r o . L a s ú n ic a s ru tin a s q u e h a n d e se r c o m p le ta m e n te im p le m e n -
la d a s so n a n y a d i r P o r D e l a n t e . e l i m i n a r P o r D e t r a s y v e r F i n a l . P ara h a ­
L a s v e rs io n e s b a s a d a s e n v e c to re s p a re c e n se r m á s rá p id a s q u e la s b a s a d a s e n c e rlo . n e c e s ita m o s q u e lo s atribut«*s d e la c la s e o rig in a l s e a n p ro te g id o s, tra s lo
lis ta s e n la z a d a s, e s p e c ia lm e n te c u a n d o se d is p o n e u p rio ri d e u n a e s tim a c ió n a ju s ­ c u a l p o d e m o s e s c r ib ir lo s n u e v o s m é to d o s. E s to se d e ja c o m o e je rc ic io a l le c to r en
ta d a d e la c a p a c id a d . S i s e c u e n ta c o n u n c o n s tru c to r a d ic io n a l q u e p e rm ita e s p e c i­ e l E je rc ic io 15.5.
fic a r la c a p a c id a d in ic ia l (v é a s e e l E je rc ic io 15.3) y la e s tim a c ió n e s c o rre c ta , no
se rá n e c e sa rio re a liz a r n in g u n a d u p lic a c ió n . A d e m á s , e l a c c e s o s e c u e n c ia l p e rm iti­
d o p o r e l v e c to r, e s típ ic a m e n te m á s rá p id o q u e e l a c c e s o p o te n c ia lm e n te n o se- Resumen
c u e n c ia! tic la m e m o ria d in á m ic a .
S in e m b a rg o , la im p le m e n ta c ió n b a sa d a e n v e c to re s p re s e n ta d o s in c o n v e n ie n ­ E n e s te c a p ítu lo se d e s c rib e n las im p le m e n ta c io n e s d e las c la s e s d e la s p ila s y de
tes. E n p rim e r lu g a r, e n e l c a s o d e las c o la s , la im p le m e n ta c ió n m e d ia n te v e c to re s la s c o la s . A m b o s tip o s d e e s tru c tu ra s p u e d e n re p re se n ta rse e m p le a n d o un v e c to r o
e s m á s c o m p le ja q u e la im p le m e n ta c ió n m e d ia n te lis ta s e n la z a d a s , d e b id o a l c ó d i­ u n a lista e n la z a d a . E n a m b o s c a s o s , la s o p e ra c io n e s s e e je c u ta n e n tie m p o c o n s ­
g o n e c e sa rio p a ra la c irc u la rid a d y su s im p lic a c io n e s e n la d u p lic a c ió n d e l vector ta n te . p o r lo q u e to d a s e lla s so n m u y rá p id a s.
N u e stra im p le m e n ta c ió n d e la d u p lic a c ió n d e v e c to re s n o e s ta n e fic ie n te c o m o E n o tr o s le n g u a je s d e p ro g ra m a c ió n , la im p le m e n ta c ió n b a sa d a e n v e c to re s
p o d ría h a c e rs e {v é a se e l E je rc ic io 15.8). U n a im p le m e n ta c ió n m á s rá p id a n e c e s ita ­ e m p le a m á s m e m o ria p e ro m e n o s tie m p o q u e l a c o rre s p o n d ie n te im p le m e n ta c ió n
ría a lg u n a s lin e a s a d ic io n a le s d e c ó d ig o . T a m b ié n la im p le m e n ta c ió n d e la s p ila s b a sa d a e n lis ta s e n la z a d a s , c o n d u c ié n d o n o s a la típ ic a d is q u is ic ió n d e tie m p o ver­
b a sa d a e n u n v e c to r e s a lg o m á s larg a q u e la c o rre s p o n d ie n te b a sa d a e n u n a lista su s m e m o ria. E n J a v a , e s ta d is c u sió n n o e s m u y re le v a n te , d e b id o a l tra ta m ie n to
e n la z a d a . d e lo s o b je to s c o n re fe re n c ia s.
latructurasD atos: En Internet
d* l a s c o la s dobles
E stá n d is p o n ib le s lo s fic h e ro s q u e se c ita n a c o n tin u a c ió n , e n c o n trá n d o s e e n e l d i ­
tUCCIÓN: s i n n i n g u n a i n i c i a l i z a c í ó n
re c to rio D a t a S tru c tu re s A lg u n o s p ro g ra m a s d e p ru e b a se v ie ro n e n e l C a p ítu ­
............................OPERAC IONES PUBLICAS...............* ..................................................... lo 6 . m ie n tra s q u e o tro s se e m p le a n e n las a p lic a c io n e s d e la P arte III d e l lib ro
tnyadirPorD elantel O bject x |--> In serta x por delante
inyadlrP orD etraa( O bject x l --> In se rta x por d etrás S ta c k A r .j a v a Im p le m e n to u n a p ila e m p le a n d o un v e c to r. E s la v e rs ió n
: e l im ir.arPorD elante ( ) --> E lim ina e l elem ento de i a cabeza g le s a d e l a c la s e P i l a V e c .
; elim inarPorD otraa( I - - » Elim ina e l elem ento d e l f in a l S ta c k l .i.j a v a Im p le m e n ta u n a p ila e m p le a n d o u n a lista e n la z a d a . E s la
. prim ero! > --> Devuelve e l elem ento de la cabeza versió n in g le sa d e la c la s e P i l a L i .
. verFinal! > --> Devuelva e l elem ento del f in a l
Q u e u c A r.ja v a Im p le m e n ta u n a c o la e m p le a n d o un v e c to r. E s la v ersió n
in e s V a c l a ! ) - - > Devuelve t r u e s i v a c i a ; s i no, í a i s e
raciarl I - -> Elim ina to d o s l o s elem entos in g le sa d e la c la s e C o l a V e c .
a r y q u i t a r P r i m w r o e s t á n d i s p o n i b l e s , p e r o no d e b e n e m p l e a r s e Q u c u c l.i.j a v a Im p le m e n ta u n a c o la e m p le a n d o u n a lista e n la z a d a . E s la
•ceanacc # • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • » • • versió n in g le sa d e la c la s e c o l a L i .
iza u n a e x c e p c i ó n s i se elim ina o se c o n su lta una c o l a d o b le v a c ia

.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

Elementos del juego Integcr.


1 5 .3 . A ñ a d a c o n stru c to re s a la s c la s e s tic las p ila s y d e las c o la s e n su s v e rsio n e s
b a s a d a s e n v ecto res. D ic h o s c o n stru c to re s d e b e n p e rm itir e s p e c ific a r la c a ­
c i r c u l a r i d a d S e p ro d u c e c u a n d o c a b e z a o 1 i n re g re s a n a l p rin c ip io d e l v e c to r al
p a c id a d in icial d e l v ecto r.
h a b e r re b a s a d o ia ú ltim a p o s ic ió n d e l m ism o ,
15.4. E sc rib a u n m é to d o m a i n q u e c re e y m a n ip u le sim u ltá n e a m e n te d o s p ilas,
c o la d o b le C o la e n la q u e e s tá p e rm itid o e l a c c e s o p o r a m b o s e x tre m o s. L a m a y o r
u n a d e o b je to s d e tip o I n t e g e r y o tr a d e o b je to s d e tip o D o u b l e .
p a rte d e su fu n c io n a lid a d se d e riv a d e la c la s e d e la s c o la s ,
im p le m e n ta c ió n c i r c u l a r d e v e c to r e s Im p le m e n ta c ió n e n la q u e s e e m p le a la c ir­ 1 5 .5 . C o m p le te la im p le m e n ta c ió n d e la c la s e D o b l e C o l a .
1 5 .6 . Im p le m e n te la c la s e d e las p ila s b a sa d a s e n un v e c to r e m p le a n d o la clase
c u la rid a d p a ra re p re s e n ta r u n a co la.
p re d e fin id a V e c t o r . ¿ C u á le s s o n las v e n ta ja s y d e s v e n ta ja s d e e s ta a p ro x i­
m a c ió n a l p ro b le m a ?
15.7. Im p le m e n te la c la s e d e las p ila s b a sa d a s e n u n v e c to r e x te n d ie n d o la clase
Errores com unes
p re d e fin id a v e c t o r . ¿ C u á le s so n la s v e n ta ja s y d e s v e n ta ja s d e e s ta a p ro x i­

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
)

Se p u e d e a c c e d e r a l p rim e r n o d o d e la lista a tra v é s d e un p u n te ro , lo c u a l se


m u e s tra e n la F ig u ra 16.1 P o d e m o s im p rim ir la lis ta e n la z a d a o b u s c a r e n e lla c o ­
m e n /a n d o e n e l p rim e r e le m e n to y s ig u ie n d o la c a d e n a d e p u n te ro s s i g u i e n t e .
actual

Figura 16.3 Elim inación e n u n a lista enlazoda.


Figura 16.1 Usta e n la z a d a b á sica

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.

C o m o re s u lta d o d e e sta s in s tru c c io n e s, la lista a n te rio r . . . a . b , . . . a h o ra es


. . .a . x , b P o d e m o s s im p lific a r e l c ó d ig o , p u e s to q u e N o d o L i s t a tie n e un
16.1.1 Nodos c a b e c e r a
c o n s tru c to r q u e in ic ia liz a lo s a trib u to s d ire c ta m e n te . A sí. o b te n e m o s

U n p ro b le m a d e la d e s c rip c ió n b á sic a e s q u e a s u m e q u e s ie m p re q u e se e lim in a un


tmp = new N o d o L i s t a ( x , a c t u a l . s i g u i e n t e ) ; / / C r e a r u n n u e v o nodo e le m e n to , hay a lg ú n e le m e n to a n te rio r a é l. E n c o n s e c u e n c ia , la e lim in a c ió n d e l
a c t u a l . s i g u i e n t e = tm p; / / E l s i g u i e n t e a l nodo a e s x p rim e r e le m e n to d e u n a lis ta e n la z a d a s e c o n v ie rte e n u n c a s o e sp e c ia l. D e fo rm a
a n á lo g a , la ru tin a d e in s e rc ió n n o n o s p e rm ite in s e rta r u n e le m e n to e n la p rim era
p o sic ió n d e la lista , y a q u e la s in s e rc io n e s e s tá n re s trin g id a s a a q u e lla s p o sic io n e s
E n e s te p u n to , q u e d a c la r o q u e y a n o s e n e c e sita t m p . p o r lo q u e p o d e m o s li­
p o ste rio re s a a lg u n a o tra . A sí. a u n q u e e l a lg o ritm o b á s ic o fu n c io n a b ie n , hay a lg u ­
m ita rn o s a la sig u ie n te línea:
n o s c a s o s e sp e c ia le s m o le sto s q u e d e b e m o s tratar.
L o s c a s o s e s p e c ia le s so n sie m p re p ro b le m á tic o s e n e l d is e ñ o d e a lg o ritm o s y
a c t u a l .s i g u i e n t e = new N odoL ista ( x , a c t u a l .s i g u i e n t e ); c o n d u c e n c o n fre c u e n c ia a e rro re s e n e l c ó d ig o . P o r e llo e s p re fe rib le e s c r ib ir c ó ­
d ig o q u e e v ite d ic h o s c a so s e sp e c ia le s . U n a fo rm a d e lo g ra r e s to e n e s te c a s o c o n ­
siste e n in tro d u c ir u n n o d o c a b e c e ra .
U n n o d o c a b e c e ra e s u n n o d o e x tra d e la lista e n la z a d a q u e n o g u a rd a n in g ú n
d a to p e ro q u e s irv e p a ra sa tisfa c e r e l re q u e rim ie n to d e q u e c a d a n o d o q u e c o n te n ­
g a u n e le m e n to te n g a u n n o d o a n te rio r. Ln la F ig u ra 16.4 s e m u e s tra e l n o d o c a b e ­
c e ra p a ra la lista a , b . c . O b s e rv e q u e a y a n o e s u n c a s o e s p e c ia l. S e p u e d e b o rr a r
c o m o c u a lq u ie r o tro n o d o , c o lo c a n d o a c t u a l e n e l n o d o a n te rio r u é l. Iu m b ié n
p in je m o s a ñ a d ir fá c ilm e n te u n n u e \ o e le m e n to a l p rin c ip io d e la lis ta , co lo c a n d o
a c t u a l e n e l n o d o c a b e c e ra y lla m a n d o a la ru tin a d e in se rc ió n . U sa n d o e l n o d o
c a b e c e ra , s im p lific a m o s e l c ó d ig o a c a m b io d e u n a p e n a liz a c ió n d e s p re c ia b le en
Figura 16.2 Inserción en u n a lista e n laz ad a, se c re a un nod o n u e vo ( t m p ) . se c o - e sp a c io . E n a p lic a c io n e s m á s c o m p le ja s , la c a b e c e ra n o so la m e n te sim p lific a el
pid x e n é l y se determ inan los valores d e la re fe re n cia s i g u i e n t e de c ó d ig o s in o q u e ta m b ié n a u m e n ta la v e lo c id a d , y a q u e . a la p o s tre , u n m e n o r n ú ­
tm p y de a c t u a l . m e ro d e te s ts re q u ie re u n m e n o r tiem p o .
la p o s ic ió n d e la lis ta e n la q u e n o s e n c o n tra m o s se e n c o n tra ría n e n la c la s e llo ra ­
d o ra . É sta m a n tie n e u n a n o c ió n d e la p o sic ió n a c tu a l y e l n o d o c a b e c e ra d e la lista
q u e re p re s e n ta |c l p u n te ro a l ih r Io c a b e c e ra p u e d e s e r in ic ia liz u d o p o r e l c o n s tru c ­
tor). El p o s ib ilita r e l a c c e s o a la lista s e c o n s ig u e h a c ie n d o q u e la c la s e ite ra d o ra
p e rte n e z c a al m ism o p aq u ete .
c a b e c e ra
P o d e m o s v e r c a d a in s ta n c ia d e u n a c la s e ite r a d o r a c o m o un m a r c o e n e l q u e
F ig u ro 16.4 Uso d e un nod o c a o e c e ro e n la lista e n la z a d a s o la m e n te s e p e r m ite n o p e r a c io n e s le g a le s so b re las lis ta s c o m o , p o r e je m p lo ,
a v a n z a r e n la lista . E n e s te c a p ítu lo im p le m c n ta r e m o s la in te rfa z L i s t a m e ­
d ia n te la c la s e L i f l C a E n l a z a d a y la in te rfa z L i s t a l t e r m e d ia n te la c la s e
E l u s o d e n o d o s c a b e c e ra e s c o n tro v e rtid o . A lg u n o s a rg u m e n ta n q u e e l hech o L ifltaF .nJazadalter.
d e e v ita r c a s o s e s p e c ia le s n o e s ju s tific a c ió n s u fic ie n te p a ra a ñ a d ir c e ld a s ficticias, P ara v er c ó m o fu n c io n a to d o esto , e stu d ie m o s e l m é to d o e stá tic o mostrad»* e n la
c o n s id e ra n d o e l u s o d e l n o d o c a b e c e ra c o m o p o c o un tr u c o s u c io a l v ie jo e s tilo de F ig u ra 16.6. q u e pued e u s a r e n c u a lq u ie r p u n to , e l c u a l d e v u e lv e la lo n g itu d de
lo s p rim e ro s p ro g ra m a d o re s . A u n a sí. n o s o tro s lo s u sa re m o s p u e s n o s p e rm ite n una lista e n la z a d a . S e d e c la ra _ t r c o m o u n i te ñ id o r q u e p u e d e a c c e d e r a la lista e n ­
c o n c e n tra rn o s e n las m a n ip u la c io n e s b á s ic a s d e lo s p u n te ro s sin o s c u re c e r e P c ó d i- laz a d a l . i l . i s t a . Esl»* req u iere e l u so d e u n c o n stru c to r para L i s t E n l a z a d a l t e r
g o c o n c a s o s e s p e c ia le s . S i s e d e b e n o n o u sa r n o d o s c a b e c e ra e s c u e s tió n d e p re ­ q u e lo m e u n a L i s t a E r . l a z a d a c o m o p arám etro .
fe re n c ia s p e rs o n a le s. A d e m á s, e n u n a im p le m e n ta c ió n d e la c la s e su u s o se ría L a v a ria b le ¿ t r se inicializ.il c o n e l p rim e r e le m e n to d e l a L l s t a « sallan ­
c o m p le ta m e n te tra n sp a re n te al u su a rio . P e ro d e b e m o s s e r c u id a d o s o s, la ru tin a de d o p o r e n c im a d e l n o d o cab ecera» , p e ro d e c u a lq u ie r m o d o lla m a m o s al m é to d o
im p re sió n n o d e b e im p rim ir e l c o n te n id o d e l a c a b e c e ra y la s ru tin a s d e b ú sq u e d a p r i m e r o . I í i lla m a d a a l m é to d o e s t a D e n t r o re f le ja e l te st p ! = n u l 1. q u e s e lia­
d e b e n s a lta rs e e s e n o d o . C o lo c a m o s a l p rin c ip io d e la lista a h o ra sig n ific a c o lo c a r n a si p fu e ra u n p u n te n ) n o rm a l a u n N o d o L l s t a . F in a lm e n te , la lla m a d a al m é to ­
la p o sic ió n a c tu a l e n c a b e c e r a . s i g u i e n t e . C o m o s e m u e s tra e n la F ig u ra 16.5. d o a v a n z a r re fle ja la a s ig n a c ió n p = p . s i g u i e n t e .
u n a lista c o n n o d o c a b e c e ra e s v a c ía si c a b e c e r a . s i g u i e n t e e s n u i l . P«*r ta n to , p u e s to q u e la c la s e ite ra d o ra d e fin e u n o s p o c o s m é to d o s sim p le s,
p o d e m o s ite ra r so b re las lisias d e u n a fo rm a m u y n a tu ra l L a sig u ie n te s e c c ió n
m u e stra c»im o se im p le m e n ta lo d o e s to e n Ja v a . L a s ru tin a s so n in c re íb le m e n te
sim p les.

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 ••

22 p u b lic booiean enVaciat 23 • I m p l e m e n t a c i ó n .n«<oi.u-.to l i s t a e i v n l a z n . l a n c o n nu»io -abacera


23 | r e t u r n c a b e c e r a . s i g u i e n t e == n u i l : ) 24 • aei ite iá c o r de lis ta s .
24 p u b l i c v o id v a c i a r I ) 25 •
25 t cabecera.siguiente - nuil: )
26 Figura 16.8 S e cció n a e com entados d e L i s f « E n ia r a d a l t e r
27 / : A t r i b u t o s a m i s t o s o » , l u e g o L i s t a E r . l a z a d a 1l e r p u e d e a c c e d e r
28 SodnLista cabecera: " R e fe re n c ia a l nodo cab e cera
29 } F n n u e stro c a s o , m la in s e rc ió n h a te n id o é x ito , i c t u a i a p u n ta ra a l n o d o re c ie n te ­
m e n te in se rta d o , p e r o si n o . n o s e m o d ific a rá U sa m o s e n c a d a m é to d o c o m e n ta ­
Figuro 16.7 Clos© L i s t a E n ; a z a d a
rio s iü u u I ih p a ra d o c u m e n ta r e l c o m p o rta m ie n to , inc lu y e n d o la e s p e c ific a c ió n de
lo s e rr o re s q u e p u e d e n a p a re c e r y lo s c a m b io s e n e l e s ta d o d e l ite rad o r.
1-is F ig u ra s 16.8 y I6.M m u e s tra n e l e s q u e le to d e L i s t . i K n l a r a d a I t » r E sta D isc u ta m o s e l re s to d e lo s m é to d o s. F I m é to d o b u u c a r h u s » j x S i x e s tá en
e s u n a c la s e m uy in te re sa n te q u e re q u ie re u n a a te n c ió n e sp e c ia l a lo s d e ta lle s Fox ia lista, «.e m u e v e a c t u a l p a ra ap u n tar a l n o d o q u e lo c o n tie n e y b u s c a r d e v u e l­
a trib u to s d e la c la s e s o n l a i . i s t a . q u e es u n a re fe re n c ia a la lista, y a c t u a l . que ve t r u e F n c a v o c o n tra rio , b u s c a r d e v u e lv e f n l i i c y a c t u a l n o se v e m o d ifi­
e s u n a r e le rc n c ia al n o d o a ctu a l, lin e l c o n s tru c to r se in ic ia liz u l a L i s t a . q u e d e s cado.
p u e s y a n o d e b e c a m b ia r I u e g o u n ite ra d o r e s tá irre v o c a b le m e n te u n id o a u n a so- F I m é to d o . m i n a r b u s c a e l e le m e n to x. S i e s tá e n la lista lo e lim in a y
la lis ta 1. a c t u a l p a s a a a p u n ta r a i n o d o c a b e c e ra . E n c a s o c o n tr a rio la n z a u n a e x c e p c ió n y
F n las lín e a s I I a l o s e d e c la ra un c o n stru c to r. F I p a rá m e tro e s u n o b jeto i c t u a 1 n o s e v e m o d ific a d o F s im p o rta n te c a m b ia r a c t u a l , y a q u e n o d e se a ­
L l s t a E n l a c a d a . y c o m o re s u lta d o ile la c o n stru c c ió n . l a L i a t a p a s a a rete - m o s e n a b s o lu to q u e a p u n te a u n n o d o q u e y a h a s i d o e lim in a d o . U n a a lte rn a tiv a
re n c ia r a e s e p a rá m e tro y n r t m i l a p u n ta a l p rim e r n o d o d e la lista (s a ltá n d o s e la p e rfe c ta m e n te ra z o n a b le s e r ía q u e a p u n ta ra a l n o d o a n te rio r a l re c ie n te m e n te e li­
c a b e c e ra , p o r s u p u e s to ). S i la lista e s v ac ía , a c t u a l a p u n ta ra a l n o d o c a b e c e ra , m in a d o N in g u n o d e e s ta s d o s a lte rn a tiv a s e s in falib le, y a q u e si h u b ie ra d o s i lera-
y a q u e e s p e ra m o s q u e la s ig u ie n te o p e ra c ió n q u e se p ro d u z c a s e a i n u c í t a i N o d o re s re c o rrie n d o la lista y u n o d e e llo s e lim in a ra u n n o d o , e l o tro re c o rrid o pod ría
hav c o n s tru c to r d e c e r o p a rá m e tro s , p o r lo q u e si in te n tá ra m o s d e c la ra r u n o b je to v e rse a fe c ta d o n e g a tiv a m e n te
L i s t a E n l a z a d a 11 c r sin u n in ic ia li/u d o r d e lista, se p ro d u c iría u n e rro r e n tie m ­ U n a r u tin a q u e e n o c a s io n e s ( v é a s e la S e c c ió n I .V I ) re s u lta m u y ú til, es
p o d e c o m p ila c ió n P o r c o n v e n ie n c ia , e n las lín e a s 24 a 2 6 s e p ro p o rc io n a o tro e l i n n a : S i g . c u y a im p le m e n ta c ió n s e d e ja c o m o F jc r c ic io 16 ó.
c o n s tru c to r q u e a c e p ta u n a L i s t a E l m é t.O o c H U D c r t r o u sa p a ra c o m p ro b a i si la p o sic ió n a c tu a l e s tá e n b
N o s q u e d a n p o r ver lo s m é to d o s d e la c la s e T e n e m o s q u e se r m u y c u id a d o s o s al lista N o altera a c t u a l F.l m é to d o r e c u p e r a r d e v u e lv e e l e le m e n to situ a d o e n la
e x p lic a r l o q u e h ace c a d a m éto d o . P o r e je m p lo , i n s e r t a r a ñ a d e e l e le m e n to * en p o sic ió n a c tu a l ( o b ie n n u l 1 m la p o sic ió n actu al n o e s u n n o d o p e rte n e c ie n te a la
la p o sic ió n in m e d ia ta m e n te p o ste rio r a a c t u a l e n la lista. ¿ Q u é su ce d e si a c t u a l lista» T a m p o c o m o d ific a a c t u a l . El m é to d o c e r o c o lo c a a c t u a l e n e l n o d o c a ­
e s n u l 1 ? P o r su p u e s to , se p ro d u c e un e rro r. ¿ C u á l e s e l n u e v o v a lo r d e .ic* i 1 1 ’’ b ecera. p e rm itie n d o asi las in sercio n e s a l p rin c ip io d e la lista F I m é to d o p r i m e r o
c o lo c a í c t u a l e n e l p rim e r m id o d e la lista, au n q u e si e s ta e s v a c ía le a sig n a rá
»• p u c .lv l i w / i i r I i a i c i m Ih t f v U i . n i i i a u n ¿ m h u l i i » \ n a . . > j q u e J j v a l . l p c i i i n t r I.» l li i.u ll A i i'W .n «Jv u n n u i l F in a lm e n te , a v a n z a r e s e l m é to d o q u e lle v a a e o lio la ite ra c ió n . A sig n a
n H n K tm c i S i n m i S i n i i i « ii ...i< l . h i » k » ~ i.
1 p u b lic c l a s s L is t a E n la z a d a r t e r im p le m e n rs L i s t a l t e r
2 P o d ría m o s h ab er añ ad id o m ás m étodos, p e n i este co n ju n to b ásico e s b astan te po
3 tenlc. A lg u nos m éto d o s, c o m o r e t r o c e d e r , n o están soportados d e form a eficiente
4 C o n stru ye l a l i s t a . c o n e s ta v e rs ió n d e las lisias e n la z a d a s. M á s a d e la n te e n e s te c a p ítu lo , s e e stu d ia n
5 Como r e s u lt a d o , l a p o s ic ió n a c t u a l e s e l p r im e r o tra s v e rs io n e s d e la lista e n la z a d a q u e p e rm ite n la im p le m e n ta c ió n e n tie m p o
6 e le m e n to , a menos q ue l a l i s t a s e a v a c i a , e n cu yo ca so
7 l a p o s ic ió n a c t u a l e s e l e le m e n to 0 -é s im o . c o n s ta n te d e é s te y o tr o s m é to d o s. P o r a h o ra v e a m o s c ó m o se p u e d e u sa r la c la s e
8 A p aran u n a L is t a ur. o b je t o L is t a E r . 1 a z a d a a . a que e s t e L i s t a E n l a z a d a l t e r p a ra im p le m e n ta r la c o p ia y la im p re sió n d e las listas e n ­
9 it e r a d o r e s t á perm anentem ente l ig a d o . laza d as.
10
E n la F ig u ra 1 6 .1 0 se m u e s tra la im p le m e n ta c ió n d e u n m é to d o d e c o p ia d e
11 p u b ii c L i s t a E n l a z a d a I t e r ( L ia t a E n la z a d a u n a L is t a
listas. E n la lín e a 5, h a c e m o s u n a c o m p ro b a c ió n d e a lia s y te rm in a m o s in m e d ia ­
12 I
13 . a L i s t a = u n a L is t a ; ta m e n te si d ic h a c o m p ro b a c ió n d e v u e lv e t r u e . F.n c a s o c o n tra rio , lla m a m o s a
14 a c t u a l = la L is t a . e s V a c ia l | ? v a c i a r p a ra v a c ia r la lista d e stin o . D e s p u é s d e c la ra m o s u n ite ra d o r d e lisias
15 u n a L is t a .c a b e c e r a : u n a L i s t a . c a b e c e r a . s ig u ie n t e ( i t r l z q ) p a ra re c o rre r la lista d e s tin o 1 i z q y u n s e g u n d o ite ra d o r ( i t r D e r ) p ara
16
17 re c o rre r l d e r . A l p rin c ip io , i t r l z q a p u n ta a l n o d o c a b e c e ra , p u es la lisia e s tá
18 v a c ía , e i t r D e r a p u n la a l p rim e r n o d o d e la lista l d e r . F.n las lín e a s 14 y 15 se
19 E s t e c o n s t r u c t o r s e p r o p o r c io n a p o r c o n v e n ie n c ia . S i e je c u ta u n b u c le c o n e l q u e lla m a m o s re p e tid a m e n te a i n s e r t a r p a ra a ñ a d ir los
20 u n a L is t a no e s un o b je t o L is t a E n la z a d a , s e la n z a r á una e le m e n to s d e l d e r e n l i z q . P u e sto q u e la p o s ic ió n a c tu a l d e la lista d e s tin o es
21 e x c e p c ió n C la s s C a s t E x c e p t io n . En c a s o c o n t r a r i o , t ie n e
22 s ie m p re e l ú ltim o n o d o in s e rta d o , l i z q se c o n s tru y e c o m o u n a c o p ia e x a c ta d e 1 -
e l mismo co m p o rta m ie n to q ue e l c o n s t r u c t o r d e a r r i b a .
23 d e r . D e u n a fo rm a p rá c tic a m e n te id é n tic a , e n la F ig u ra 1 6 .11 s e u s a un b u c le p ara
24 p u b li c L i s t a E n l a z a d a l t e r | L i s t a u n a L is t a ) throw s im p rim ir e l c o n te n id o d e J a lista e n la z a d a l a L i s t a .
25 C la s s C a s t E x c e p t io n
26 I t h i s ( < L is t a E n la z a d a ) u n a L is t a > ;) 1 / / Método qu e c o p i a l d e r e n l i z q ;
27
2 / / Solam ente llam a a métodos p ú b lic o s
28
3 p u b l i c s t a t i c v o i d c o p i a r ( L i s t a E n l a z a d a 11zq, L i s t a E n l a z a d a l d e r >
29 * C o lo c a l a p o s ic ió n a c t u a l er. e l r.odo c a b e c e r a . 4
30
5 if! l i z q == l d e r ) / / Comprobación de a l i a s
31 p u b lic v o id c « r o ( ) 6 return;
32 { a c t u a l = l a L is t a . c a b e c e r a ; } 7
33 8 1i z q .v a c i a r I );
34 p u b li c v o id i n s e r t a r ( O b je c t x > th ro w s E le m e n to N o E n co n tra d o 9 L istaE nlazadalter i t r l z q = new L i s t a E n l a z a d a l t e r ( l i z q ) ;
35 { /* F ig u r a 1 6 . 1 2 * / ) 10 L istaE nlazadalter i t r D e r = new L i s t a E n l a z a d a l t e r ! l d e r ) ;
36 p u b li c b o o le a n b u s c a r ( O b je c t x I 11
37 { /* F ig u r a 1 6 . 1 3 * / } 12 try
38 p u b li c v o id e l i m i n a r ! O b je c t x ) th ro w s E le m e n to N o E n co n tra d o 13
39 { /* F ig u r a 1 6 . 1 4 • / } 14 for! ; i t r D e r . e s c a D e n t r o ! >; i t r D e r . a v a n z a r ! ) >
40 p u b lic O b je c t r e c u p e r a r ! 1 15 i t r l z q . i n s e r t a r í i t r D e r . re c u p e ra r I 1 );
41 ( /* F ig u r a 1 6 . 1 5 * / ) 16
42 p u b lic v o id p r im e r o ! > 17 catchi ElementoNoEncontrado e > ( } / / N o puede o c u r r i r
43 { /* F ig u r a 1 6 . 1 5 * / ) 18
44 p u b lic v o id a v a n z a r ! }
45 Figura 16.10 M éto d o d e c o p ia p a ra las listas en lazad as, usando
< /* F ig u r a 1 6 . 1 5 * / )
46 L i s t a E n l a z a d a l t e r p a ra recorrerlas
p u b lic b o o le a n e s t a D e n t r o l )
47 { /* F ig u r a 1 6 . 1 5 * / }
48 1 // M é t o d o simple d e impresión
49 p r o t e c t e d L is t a E n la z a d a l a L i s t a ; 2 p u b l ic s t a t i c v o id im prim ir! L istaE nlazada laL ista >
L ista
50 3 {
p r o t e c t e d N o d o L is t a a c t u a l ; P o s ic ió n a c t u a l
51 4 if< laLista.««V acia! I »
5 S y s te m .o u t.p rin t( 'L is ta vacía" );
F i g u r a 16. 9 Esqueleto para la clase L i s t a E n l a z a d a l t e r 6 else
7
8 L is t a E n l a z a d a l t e r i t r = new L i s t a E n l a z a d a l t e r la L is t a
a c t u a l . s i g u i e n t e a a c t u a l , s ie m p re q u e a c t u a l n o s e a n u i l , e n c u y o ca so v 9 f o r ! ; i t r . o sta D e n tro ! ) ; it r .a v a n z a r ! ) I
n o su c e d e nada.
10 S y s t e m . o u t . p r in t ( i t r . r e c u p e r a r i ) + * " ) ;
11
U>s m é to d o s p r im e r o , a v a n z a r . e s t a P e n t r o y e l i m i n a r n o la il/a n e x ­ 12 System .out.println! ):
c e p c io n e s p o rq u e e l u s o h a b itu a l d e m é to d o s e n e l s e n o d e b u c le s f o r re q u e riría 13 }
u n b lo q u e t r y / c a t c h q u e e n e s te c a s o n o e s tá ju s tific a d o .
Figura 16.11 M é to d o d e Im presión d e ListaEnlazada
A h o ra q u e liem o s v is to q u e a sp e c to tie n e 1.1 « i «u-:n l d . m d . - i n e r > t o m o se
u sa. p o d e m o s n tip ien te n ta r su s m é to d o s. L a F ig u ra K* 12 m u e s tra e l c u e rp o de
El i mí n i V ¡ a p r i m e r a a p a r i c i ó n d e un elem ento.
i n s e r t a r . C o m o h e m o s d t t h o ¿in terio rm en te e n e l c a p ítu lo , m n o hiciéraiiM is las SI n p a r a c e e n la I l u t a 80 c o l o c a actual al principio;
c o m p ro b a c io n e s d e e rr o re s la ru tin a e s ta ría l o m u d a p o r u n a s o la lín e a d e a n li g o p e r o s i no a p a r e c e e n l a l i s t a , no s e rm ^dxtica.
¿ p a r «un x e l e m e n t o a e l i m i n a r .
L a c o m p r o b a c ió n d e e rro re s a ñ a d e u n a lín e a , a d e m á s , p ara u n a m a y o r c la rid a d . ¿ e x c e p tio n EicmentoNoEncontrado si rxc s e e n c u e n t r a
hem»*s d e c id id o a ñ a d ir u n a \ a n u b le in te rm e d ia . A u n a s í m: s ig u e tra ta n d o d e un
fra g m e n to d e c o d ig o m uy re d u c id o p u b lic void e lim in a r! Ob;ect x ) t hr » El toKoKncentrado
E n la F ig u ra 16.13 >e m u e s tra la ru tin a b u s c a r , e n la q u e re c o rre m o s la lista NodoLista i t r ? la l.is ta .cabecera;
e le m e n to a e le m e n to h a s ta q u e o b ien lle g am o s a l (Hullero n u l 1 del fin a l d e la lista, w hlle! i t r .sig u ien te nuil es
o b ien e n c o n tra m o s e l e le m e n to b u sc a d o O b se rv e c u id a d o sa m e n te q u e e l o rd en e n ü tr.sig u ien te.d ato .eq u ais! x i »
itr = itr.siguiente,•
que s e M esan a c a b o los tests d e la lín e a SO e s im p o rta n te p o rq u e d e e s j fo rm a apn*-
v e c h a m o s la e v a lu a c ió n n o e stric ta . C o m o se e s tu d ió e n la S e c ció n 1.5.2. si la p o ­ l£t i t r . s i g u i e n t e «* n u l i l
n iera m itad d e l u se e v a lú a a ! a l s o . e n to n c e s el re su lta d o e s t , i 1 *»p», \ n o e s n e c e ­ t h r o w new K i e m r n t o N o E n c o n t r a d o ( ‘ F a l l o e n e l i m i n a c i ó n * l¡

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 )

7 pabllc void insertar! Obiect x i r.hrows E i e i o e n t o K o E n c o n t r a d o 10


8 ( 11 /• •
12 • C o lo c a l a p o s i c i ó n a c t u a l e n u l p r i m e r nodo.
9 ift a c t u a l *= n u i l )
13 * E sta operación es v á lid a para listar- vacias.
>0 t h r o w new El erren-oNo Encon t r a d o < ‘E r r o r d e i n s e r c i ó n ' i 14 •/
11 N o d o L i s t a n u wv o J i o d o * n e w S o d o L i s t a » x . a c t u a l . a i g u i e n t e I; 15 p u b l ic v o id priireroi
12 a c t u a l - a c t u a l . s i g u í e n - , e = nuevcNotio; 16 (
13 » 17 a c t u a l • l a L i S l a .c a b e c e r a s i g u i e n t e ;
18 )
c»gura 16 12 R u t i n a ir.s e d a r p e r o l a c i a s e L i s t a E n l a z a d a l e e r 19
20 /• •
21 • Avanzar l a p o s i c i ó n a c t u a l a l nodo s i g u i e n t e de l a I t e r a .
2 * C o lo c a la p o o l c l ó n a c t u a l e n e l p r i n * t nodo q u e c o n f i a n » 22 • S i la p u n ic ió n a c t u a l e s n u i l, no hace nada.
23 • En e s t a r u t i n a n o s e ¿ a n / . a n e x c e p c i o r . e s p o r q u e oí» u s o ma s
3 • u n e l e m e n t o . S i n o e n c o n t r a m o s x . a c t u a l n o s e v e m o d i f i cade»
24 • h a b i t u a l « d e n t r o do un b u c l e f o r» r e q u e r i r í a
4 • aparam x e l elem en to a b u s c a r.
25 • ijutr programador a ñ a d ie r a un b lo q u e t r y / c a t c h
5 • 9 r e t u r n t r u e s i e n c o m i a m o s e l e l e m e n t o X: a l n o , t a l tu* 26 •
27 rubí je void avanzar! )
7 p u b l i c t v- iol ean b u s c a r ! O b j e c t x ) 28 i
29 i f ( a c t u a l != n u i l )
9 N o d c L i s t a i t r = 1a L ; a t a . c a b e c e r a . s i g u i e n t e ; 30 a c tu a l * a c tu a l . siguíor.to;
10 w hllei i t r ! :n u i l s v I t i . d a t o .e q u a l a { x ) l 31 i
11 xtr = itr.sig u ie n te ; 32
12 33 ••
13 síi itr nuil i 34 • Comprueba s i - a p o s i c i ó n a c t u a l a p u n t a a un e l e m e n t o v a l i d o
14 re tu rn ía ls o : 35 • ¿ r e t u r n t r u e s i l a p o s ic ió n a c tú a , no e s n u il y no e s t a
15 36 • apuntando a l nodo cab ecera.
16 actual ^ Itr: 37 •
17 return true; 38 p u b L l r b o o l e a n e s t *l >enr r o l
39 <
40 return actual n u i l •»/. a c t u a l != l a L i s t e . c a b e c e r a ;
Figuro 16 13 R u tin a b u s c a r p a r a L i a t a E n U z a d a l t e r
41 I
Y a n o v o lv e m o s a u sa r n u l I p a ra d e c id ir s i u n a v a n c e n o s h a lle v a rlo h a s ta el
16.3 Listas doblem ente enlazadas fin al d e la lis ta , s in o q u e lo s a b e m o s c u a n d o lle g a m o s a c a n e c e r á o a f i n a l (r e ­
y listas enlazadas circulares c u e rd e q u e p o d e m o s ir e n c u a lq u ie r se n tid o ). El m é to d o r e t r o c e d e r s e p u e d e
im p le m e n ta r m e d ia n te
C u in o s e m encione» e n la S e c c ió n 16.2. la s lisia s e n la z a d a s s im p le s n o s o p o rta n de
fo rm a e fic ie n te a lg u n a s o p e ra c io n e s im p o rta n te s. P o r e je m p lo , a u n q u e e s fá c il ir al actual =actual .a n te rio r;
p rincipa» d e la lisia, ir a l fin a l c o n s u m e b a sta n te tie m p o . A u n q u e p o d e m o s u v a n /a r
fá c ilm e n te u s a n d o a v a n z a r , la im p le m e n ta c ió n d e r e t r o c e d e r n o se p u e d e h a ­ A n te s d e p a s a r a a lg u n a s d e las o p e ra c io n e s a d ic io n a le s q u e e s tá n d is p o n i- ú
c e r d e fo rm a e fic ie n te c o n u n a s o la re fe re n c ia s i g u i e n t e . E n a lg u n a s a p lic a c io ­ b le s , v e a m o s c ó m o c a m b ia n la s o p e ra c io n e s d e in s e rc ió n y e lim in a c ió n . N a lu - •]
n e s e s to p u e d e s e r c rític o . P o r e je m p lo , c u a n d o d is e ñ a m o s u n e d ito r d e te x to s, po­ ra ím e n te a h o r a p o d e m o s h a c e r i n s e r c a r A n t e s e i n s e r t a r D e s p u e s . E n \
d e m o s m a n te n e r la im a g e n in te rn a d e l fic h e ro c o m o u n a lista e n la / a d a d e lín eas i n u o r t a r D e u p u c s se h a lla n im p lic a d o s e l d o b le d e c a m b io s d e p u n te ro s e n las (
E n e s te c a s o , d e se a ría m o s m o v e m o s fá c ilm e n te p o r e l fic h e ro tan to h a c ia a b a jo c o ­ lista s d o b le m e n te e n la z a d a s q u e e n las lis ta s e n la z a d a s s im p le s . S i e s c r ib im o s c ad a
m o h a c ia a rrib a , insertar a n te s y d e sp u é s d e u n a lín e a , e n lu g a r d e so la m e n te d e trá s, in s tru c c ió n d e fo rm a e x p líc ita , o b te n e m o s
y p o d e r saltar rá p id a m e n te a la ú ltim a línea. U n m o m e n to d e re fle x ió n n o s su g ie re
nNodo = now NodoLi s t a E n l a z a d a D o b l e ( ) ;
que p a ra im p lem en tar e sta s o p e ra c io n e s d e fo rm a e fic ie n te , d e b e ría m o s te n e r tío s re
nN od o .an terio r = a c tu a l; / / A signa v a lo r a x . a n t e r i o r
fe re n cias e n c a d a m xlo: u n a a l sig u ie n te n o d o d e la lisia y o tro al a n te rio r. P a ra ter­
nN odo.siguíente = a c tu a l.s ig u ie n te ; / / A signa v a lo r a x . s i g u ie n te
m in a r d e h a c e r sim étrica la re p re sen ta c ió n , a ñ a d iría m o s a d e m á s u n n o d o final a d e ­
nNodo . a n t e r i o r . s i g u i e n t e = nNodo; / / A signa v a lo r a a . s i g u i e n t e
m a s d e l n o d o c a b e c e ra . E sta s lisia s re c ib e n e l n o m b re d e d o b le m e n te e n la za d a s. 1.a
n N o d o . n i g u l e n t e . a n t e r i o r = nNodo; / / A signa v a lo r a b . a n t e r i o r
F igura 16.16 m u e s tra l a lista d o b le m e n te e n la z a d a q u e c o n tie n e l<" e le m e n to s .i. b
a c t u a l - nNodo;
C a d a n o d o c o n tie n e a h o ra d o s re fe re n c ia s ( s i g u i e r . e e y a n t e r i o r ) , c o n lo q u e
se p u e d e n re a liz a r d e fo rm a se n c illa b ú s q u e d a s y re c o rrid o s e n a m b o s se n tid o s
C o m o se h a m o s tra d o a n te s e n e l c a p ítu lo , lo s d o s p rim e ro s c a m b io s d e re fe ­
O b v ia m e n te , so n n e c e s a rio s a lg u n o s c a m b io s p e q u e ñ o s per»» im p o rta n te s
re n c ia s s e p o d ría n ju n t a r e n e l c o n s tru c to r. E n la F ig u ra 16. IX s e ilu stran lo s c a m ­
E n p rim e r lu g ar, u n a lista v a c ía c o n siste a h o ra e n u n n o tlo c a b e c e r a > u n o
b io s d e a n t e r i o r y s i g u i e n t e (s ig u ie n d o e l o rd e n /. 2. 4).
f i n a l c o n e c ta d o s e n tr e sí. c o m o se m u e s tra e n la F ig u ra Ib . 17. O b s e rv e q u e no
1.a F ig u ra 16. IX ta m b ié n se p u e d e u sa r p a ra g u ia m o s e n e l a lg o ritm o d e e liin i- •(
so n n e c e sa rio s e n lo s a lg o ritm o s c a b e c e r a . a n t e r i o r y t ¡ n a l . s i g u i e n t e ,
n a c ió n . A l c o n tr a rio q u e e n las lis ta s e n la /a d a s sim p le s, a h o ra p o d e m o s e lim in a r i
p o r lo q u e n i s iq u ie ra se in ic ia liz a n l . a c o m p ro b a c ió n d e lista v a c ía e s a h o ra
e l n o d o a c tu a l p o rq u e te n e m o s a c c e so in m e d ia to al n o d o a n te rio r. P o r ta n to , para
e l i m i n a r x e n la F ig u ra 1 6 . IX. te n e m o s q u e c a m b ia r la re fe re n c ia s i g u i e n t e - '
c a b e c e r a . s i g u i e n t e == f i n a l
lie a y ln a n t e r i o r d e b . L o s c a m b io s b á sic o s s o n |¡
o bien
a c t u a l . a n t e r i o r .s ig u ie n te * a ctú a 1.s ig u ie n te ; •
II A ctu aliza a .sig u ie n te
f i n a l . a n t e r i o r == c a b e c e r a
a ctu al.siq u io n to .an terio r = a ctu al.an terio r;
// A ctualiza b .a n te rio r
actual =cabecera;

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-

Figura 16.16 lis ta d o b le m e n te e n la z a d a

Fíguro 16.18 Inserción e n u n a listo d o b le m en te e n la z a d a m ed ian te la construc­


ció n d o un n u e vo n o d o y la m o d ificació n posterior d e las referencias,
e n e» orden lnd*codo.
Fiaura 16.17 I istn pnlrr?/-v-tn u«-u-Sn
2
3 im p o rt E x c e p c io n e s .•;
4 im p o rt S o p o r t e .* : im p o rt S o p o r t e .C o m p a r a b le :
5
6 / ' C l a s e L i s t a l t e r O r d ; m a n tie n e l a ' p o s i c i ó n a c t u a l"
7 //
8 CONSTRUCCIÓN: con una L is t a E n la z a d a a l a que la
Figura 16.19 Lista circu lar d o b lem en te enlazada. 9 L i s t a l t e r O r d e s t á perm an en tem en te lig a d a
10 /, ............ O PEK ACIONES PÚBLICAS* *• *.....................................*•
11 / v o id i n s e r t a r ) x l - - > I n s e r t a x en orden
m íe n lo in d iv id u a l s e rá m u y s im ila r a la s ru tin a s d e la s lis ia s c n la /a d a s sim p le s, s ó ­ 12 / ' E l r e s t o d e o p e r a c io n e s i d é n t ic a s a l a s d e L is t a E n ia z a d a r t e r
13 // ...................... ... £RR0 R£S. . . . . . . . . . . . . . . . . . . . . . . . . .
lo la s o p e ra c io n e s d in á m ic a s im p lic a n c a m b io s a d ic io n a le s e n las re fe re n c ia s . Para
14 E x c e p c io n e s la n z a d a s p o r a c c e s o o e lim in a c ió n ile g a l.
la m a y o ría d e las ru tin a s , e l c ó d ig o e s tá d o m in a d o p o r las c o m p ro b a c io n e s de
15
e rro r. A u n q u e a lg u n a s d e e lla s c a m b ia n , p o r e je m p lo y a n o c o m p a r a m o s c o y la re ­ 16 p u b l i c c l a s s L i s t a l t e r O r d e x te n d s L i s t a E n l a z a d a l t e r
fe re n cia n u l 1. é s ta s n o se h a c e n m á s c o m p le ja s . D e ja m o s la im p le m e n ta c ió n d e la 17
c la s e c o m o p rá c tic a d e p ro g ra m a c ió n e n e l E je rc ic io 16.14. 18 p u b li c L i s t a l t e r O r d L i s t a u r .a L is t a }
19 { s u p e r) u n a L is t a I ; 1
U na p rá c tic a h a b itu a l e s c re a r u n a lista e n la z a d a c irc u la r, e n la q u e e l ú ltim o
20
n o d o a p u n ta a l p rim e ro . E s to s e p u e d e h a c e r c o n o sin c a b e c e ra , a u n q u e n o rm a l­ 21 p u b li c v o id in s e r t a r ) O b je c t x ) th ro w s E ie re n to N o E n c o n tra d o
m e n te se h a c e sin e lla , p u e s to q u e e l p ro p ó s ito p rin c ip a l d e la c a b e c e ra e s a se g u ra r 22 (
q u e c a d a n o d o tie n e u n o a n te rio r, lo c u a l y a e s c ie r to p a ra u n a lista e n la z a d a c ir c u ­ 23 i í ( x in s t a n c e o f C o m p a ra b le >
lar n o v acía . S in c a b e c e ra so la m e n te te n d re m o s q u e tra ta i c o m o u n c a s o e sp e c ial 24 in s e r t a r ) (C o m p arab le ) x >;
25 e ls e
la lista v a c ía . S e m a n tie n e u n a re fe re n c ia a l p rim e r n o d o , p e ro é s te y a n o e s e l n o ­
26 th row new E ie m e n to N o E n co n tra d o ) ' L i s t a l t e r O r d ' -
d o c a b e c e ra . P o d e m o s u sa r sim u ltá n e a m e n te lista s e n la z a d a s c irc u la re s y lista s d o ­ 27 ' in s e r t a s r e q u ie r e un o b je t o d e t ip o C o m p a ra b le ’ >;
b le m e n te e n la z a d a s, c o m o s e m u e s tra e n la F ig u ra 16.19. L a lista c ir c u la r e s útil 28
e n s itu a c io n e s e n las q u e q u e re m o s q u e la s b ú sq u e d a s p e rm ita n c ire u la rid a d . c o m o 29
p o r e je m p lo e n a lg u n o s e d ito re s d e te x to e n lo s q u e u n a \ e z q u e se lle g a a l final 30 / / i n s e r t a de form a o rd e n a d a .
31 p u b lic v o id i n s e r t a r ) C o m p a ra b le x )
del fich ero , se sig u e b u sc a n d o d e s d e e l p rin c ip io h a s ta e l p u n to e n e l q u e n o s e n ­
32
c o n trá b a m o s . E n e l E je rc ic io 1 6 .1 6 se le p id e im p le m c n ta r u n a lista c ir c u la r d o ­ 33 L is t a E n la z a d a lt e r a n t = new L i s t a E n l a z a d a l t e r < l a L i s t a >:
b le m e n te en laz ad a. 34 L is t a E n la z a d a lt e r act new L i s t a E n l a z a d a l t e r ; l a L i s t a >;
35
36 a n t . ce ro < ) ;
37 a c t . p r im e r o ) ) ;
16.4 Listas en lazad as ordenadas 38 w h i l e ) a c t . e s t a D e n t r o ) ) &&
39 ( ( C o m p a r a b le )) a c t . r e c u p e r a r ( ) I ) .m enorQ ue) x > )
A v e c e s d e s e a ría m o s g u a rd a r lo s e le m e n to s d e fo rm a o rd e n a d a e n la lista e n la ­ 40
zad a. L a d ife re n c ia fu n d a m e n ta l e n tre u n a lista e n la z a d a o rd e n a d a y u n a n o o r d e ­ 41 a c t .a v a n z a r ) »;
42 a n t .a v a n z a r ( ) ;
n a d a e s la ru tin a d e in se rc ió n . D e h e c h o , p o d e m o s o b te n e r u n a c la s e d e lis ta s o rd e ­
43 1
n ad as lim itá n d o n o s a m o d ific a r la ru tin a d e in s e rc ió n q u e y a te n e m o s e sc rita . El 44
h e c h o d e q u e la ru tin a i n s e r t a r s e a p a rte d e la c la s e L i s t a E n l a z a d a l t e r nos 45 try
lle v a a p e n s a r q u e d e b e ría m o s te n e r u n a n u e v a c la s e L i s t a i t e r ü r d b a sa d a en 46 { a n t .in s e r t a r ) x ) ; )
ella, lo c u a l se m u e s tra e n la F ig u ra 16.20. 47 c a t c h f E ie m e n to N o E n co n tra d o e ) i )// No pueae o c u r r i r
48 a c tu a l • a n t .a c t u a l;
E l c o n s tru c to r , m o s tra d o e n las lín e a s IX y 19. s im p le m e n te lla m a a l c o n s ­
49
tr u c to r d e la s u p e rc la s e . E l n u e v o m é to d o i n s e r t a r re q u ie re q u e x s e a de 50 }
la c la s e C o m p a r a b l e , p e r o n o s o b re s c rib e e l m é to d o i n s e r t a r d e la c la s e
L i s t a E n l a z a d a l t e r p o rq u e tie n e u n \ a l o r d e la c la s e O b j e c t c o m o p a rá m e tro . Figuro 16.20 C iase iterad o ra p a ra las listas en lazad as o rd en ad as e n ta q u e las in­
E n la s lín e a s 21 a 2X p ro p o rc io n a m o s u n a d e fin ic ió n q u e sí lo so b re sc rib e c in ten ta serciones a e b e n respetar e l orden
lla m a r a l m é to d o i n s e r t a r e n o rd en .
C o m o e je m p lo , la F ig u ra 16.21 ilu stra lla m a d a s a v a rio s m é to d o s i n s e r t a r .
L o s m é to d o s i n s e r t a r q u e tie n e n u n m a n e ja d o r d e e x c e p c io n e s s o n lo s q u e e s ­ q u e se le p asa c o m o p a rá m e tro u n a re fe re n c ia c o m p a r a b le e stá tic a m e n te tip a d a . es
p e ra n u n v alo r d e la c la s e o b j e c t c o m o p a rá m e tro . L a lla m a d a d e la lín e a 7 . a la la ú n ic a lla m a d a d ir e c ta al m é to d o q u e a c e p ta un v a lo r tic la c la s e C o m p a r a b l e .
I 1 l l - i n i - i i L . i)ú l>i l i n a i O l - t n o r á n n - i a i ^ a n n i ó n « m t» -Vr, - - i n i i n t - . l ’A III) \ : l l l ) f ( I c
I public s t a ti c v oid main( String | ] args ) d e fin e e n la c la s e L i s t a I t e r . L a c la s e L i s t a d e fin e so la m e n te a q u e lla s o p e ra ­
2 {
c io n e s q u e v e n a las listas c o m o u n a e n tid a d (p o r e je m p lo . e s V a c i a ) . 1.a clase
3 M i F . n t o r o m = n e w Mi E n t e r o ! b >;
4 O b j e c t o b j = new I n t e g e t ! 5 ),- L i s t a i t e r m a n tie n e u n a n o c ió n d e p o s ic ió n a c tu a l q u e se a c tu a liz a a l a v a n /a r.
5 L i s t a l t e r O r d i t r = new L i s t a l t e r O r d ( new L i s t a E n l n z n d a ( ) ) ; b u sc a r, in s e rta r e in c lu s o e lim in a r e n la lista. El c a p ítu lo h a e x a m in a d o ta m b ién
6 v a ria c io n e s d e las lis ta s e n la z a d a s, in c lu y e n d o las listas d o b le m e n te e n la z a d a s,
7 i t r .insertar< m ); // Llana a i n s e r t a r ! Comparable ) q u e p e rm ite n e l re c o rrid o d e la lista e n a m b o s se n tid o s. F in a lm e n te , h e m o s v is to
8
9 t r y { i t r .i n s e r t a r ( obj ); > q u e e s re la tiv a m e n te fácil d e riv a r u n a c la s e d e listas e n la z a d a s o rd e n a d a s a p a rtir
10 c a tc h ! ElementoNoEncontrado e ) d e la c la s e b a s e d e listas e n la z a d a s.
11 ( S y s t e m . o u t . p r i n t l n ! "E lem entol no Comparable* ); )
12
13 o b j = m;
14 t r y { i t r . i n s e r t a r ( obj ) ; } Elementos del juego
15 c a t c h ! ElemontoNoEncontrado e )
16 { S y s t e m . o u t . p r i n t l n ! *Eiemer.to2 no C o m p ara b le" ); ], c la s e i t e r a d o r a C la se q u e m a n tie n e la p o s ic ió n a c tu a l y c o n tie n e to d a s las ru tin as
q u e d e p e n d e n d e l c o n o c im ie n to d e la p o sic ió n d e la lista e n q u e n o s e n c o n tr a ­
m os.
Figura 16.21 Prog ram a q u e ilustra q u é m étodo i n s e r t a r se e stá usando.
lis ta d o b le m e n te e n la z a d a L ista e n la z a d a q u e p e rm ite re c o rrid o s e n a m b o s s e n ti­
d o s m e d ia n te e l a lm a c e n a m ie n to d e d o s re fe re n c ia s p o r n<xlo.
tip o I n t e g e r . e l c u a l n o im p le m e n ta la in te rfa z C o m p a r a b l e . L a lla m a d a d e la
lis ta e n la z a d a c i r c u l a r L ista e n la z a d a e n la q u e la re fe re n c ia s ig u ie n te ¡leí ú ltim o
lín e a 14 in v o c a a l m é to d o i n s e r t a r q u e a c e p ta un v a lo r d e la c la s e O b j e c t , y a
n o d o a p u n ta a l p rim e ro . E sto es útil e n ta re a s q u e im p lic a n c irc u la rid a d .
q u e a u n q u e e n tie m p o d e e je c u c ió n e s c ie r to q u e o b j a p u n ta a un o b je to d e la c l a ­
lis ta e n la z a d a o r d e n a d a L ista e n la z a d a e n la q u e lo s e le m e n to s e s tá n o rd e n a d o s .
se C o m p a r a b l e , e s e l tip o e s tá tic o e l u s a d o p a ra d e c id ir a q u é m é to d o s e e s tá lla­
S e d e riv a u n a c la s e L i s t a l t e r O r d a p a rtir d e L i s t a E n l a z a d a l t e r .
m a n d o . A u n a sí, e s e m é to d o i n s e r t a r lla m a rá al m é to d o i n s e r t a r q u e p ro c e sa
n o d o c a b e c e r a N«xlo e x tra e n la lista e n la z a d a q u e n o a lm a c e n a n in g ú n d a to pon»
v a lo re s d e la c la s e C o m p a r a b l e (lin c a 2 4 d e la F ig u ra 16.20). É sta e s la ra z ó n p o r
q u e sirv e p a ra s a tis fa c e r e l re q u e rim ie n to d e q u e c a d a n o d o te n g a u n o a n terio r.
la q u e s o b re sc rib im o s e l m é to d o e q u a l s c o n un O b j e c t c o m o p a rá m e tro .
E ste n o d o n o s p e rm ite e v ita r lo s c a so s e sp e c ia le s , c o m o la in s e rc ió n d e un
Ll c ó d ig o d e l n u e v o m é to d o i n s e r t a r , m o s tra d o e n la s lín e a s 31 a 4 9 d e la
n u e v o p rim e r e le m e n to \ la e lim in a c ió n d e l p rim e r e le m e n to d e la lista.
F ig u ra 16.20. u s a d o s o b je to s L i s t a l t e r O r d p a ra re c o rre r la lista c o rr e s p o n d ie n ­
te h a s ta q u e se e n c u e n tra e l p u n to c o rr e c to d e in se rc ió n . E n e s e p u n to , p o d e m o s
a p lic a r la ru tin a i n s e r t a r d e L i s t a E n l a z a d a I t e r . P a ra u s a r o b je to s d e la c l a ­
se L i s t a l t e r O r d . d e b e m o s s a b e r a q u é o b je to d e la c la s e L i s t a s e re fie re n . Se Errores com unes
trata d e l a L i s t a . q u e e s u n a trib u to p ro te g id o d e la c la s e L i s t a E n l a z a d a l t e r
> p o r ta n to e s a c c e sib le . 1. El e rr o r m ás c o m ú n e n las listas e n la z a d a s c o n siste e n c o n e c ta r in c o rre c ta ­
¿ N e c e s ita m o s r e a lm e n te u s a r L i s t a E n l a z a d a r t e r e n la n u e v a ru tin a m en te lo s n o d o s al llev ar a c a b o u n a in s e rc ió n . L a c o n e x ió n e s e s p e c ia l­
i n s e r t a r ? L a re s p u e s ta e s n o , p u e s to q u e ta n t o a c t u a l c o m o l a L i s t a son m en te d e lic a d a c u a n d o se tr a b a ja c o n listas d o b le m e n te e n la z a d a s.
a c c e s ib le s . E l E je rc ic io 1 6 .1 7 le p id e re s c rib ir e l c ó d ig o p a ra e v ita r u s a r 2. L o s m é to d o s d e u n a c la s e n o d e b e ría n p e rm itir d e s re fe re n c ia r u n punten*
L istaE n lazad alter. nuil.

U na d e fic ie n c ia d e n u e s tro e s q u e m a e s q u e se p u e d e a c c e d e r a c u a lq u ie r lista 3. S e p u e d e n p ro d u c ir p ro b le m a s c u a n d o h a y v a rio s ite ra d o re s a c c e d ie n d o a


u s a n d o m é to d o s ta n to d e L i s t a E n l a z a d a l t e r c o m o d e L i s t a l t e r O r d . p o r lo u n a m ism a lista s im u ltá n e a m e n te . P o r e je m p lo , ¿ q u é su c e d e ría si un a e r a ­
q u e n o te n e m o s g a ra n tía s d e q u e lo s m é to d o s d e L i s t a l t e r O r d e s té n tra b a ja n d o d o r e lim in a u n n o d o a l q u e o tr o ite ra d o r v a a a c c e d e r? R e s o lv e r e s te tip o
so b re u n a lista o rd e n a d a . P o d e m o s a rre g la r la situ a c ió n a ñ a d ie n d o u n a trib u to e x ­ d e p ro b le m a s req u ie re u n tra b a jo a d ic io n a l.
tra a la c la s e L i s t a E n l a z a d a q u e e s p e c ifiq u e si la lista e s tá o rd e n a d a o n o . E ste 4. T e n g a c u id a d o a l s o b re s c rib ir u n m é to d o c o n o tro c u y o s p a rá m e tro s sean
a trib u to p o d ría in ic ia li/a rs c e n la p rim e ra lla m a d a a i n s e r t a r , y la s sig u ie n te s luí s u b tip o d e lo s o rig in a le s (c o m o e s e l c a s o d e e q u a l s ) .
lla m a d a s v e rific a ría n q u e n o e s ta m o s m e z c la n d o lo s d o s tip o s

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

Cuestiones breves Prácticas d e p ro g ra m a c ió n


16.14. Im p le m e n te u n a c la s e d e lisias d o b le m e n te e n la z a d a s, in clu y en d o :
16.1. D ib u je u n a lista e n la z a d a v a c ía c o n n o d o c a b e c e ra .
16.2. D ib u je u n a lista d o b le m e n te e n la z a d a v a c ía c o n n o d o c a b e c e ra y final. r/> .M étodos i r A P r i n c i p i o e i r A F i n a l .
b) M éto d o s p r i m e r o y u l t i m o .
Problem as teóricos «•) M é to d o s i n s e r t a r A n t e s e i n s e r t a r l t e s p u e s .
(/) M é to d o s b u s c a r P r i m e r o y b u s c a r U l t i m o ( l a b ú sq u e d a c o m ie n z a
d esd e e l p rin c ip io y e l fin a l, re sp e c tiv a m e n te ).
16.3. E sc rib a u n a lg o ritm o p a ra im p rim ir d e fo rm a in v e rsa u n a lisia e n la z a d a
e) M é to d o s e l i m i n a r P r i m e r o y e i i m i n a r U l t i m o
sim p le , u s a n d o so la m e n te un e s p a c io e x tra c o n sta n te , lo c u a l im p lic a que
n o p u e d e u s a i re c u rsió n . E sc rib a un e d ito r d e lín eas. L a sin ta x is d e lo s c o m a n d o s e s sim ila r a l e d i­
16.15.
16.4. D isc u ta so b re si se ría m e jo r c o n v e rtir p r i m e r o e n ile g a l so b re las lisias to r d e lín e a s n i d e U nix. S e m a n tie n e u n a c o p ia in te rn a d e l fic h e ro c o m o
v a c í as . u n a lis ia e n la z a d a d e lín eas. P a ra p o d e r m o v e rs e h a c ia a rrib a y h a c ia a b a­
j o e n e l fic h e ro , n e c e sita rá u n a lisia d o b le m e n te e n la z a d a . E a m a y o r p arte
Problem as p rácticos d e lo s c o m a n d o s , lo s c u a le s s e m u e s tra n e n la F ig u ra 16.22. e s tá n r e p r e ­
se n ta d o s m e d ia n te u n a c a d e n a d e u n s o lo c a rá c te r, a u n q u e a lg u n o s están
fo rm a d o s p o r d o s c a ra c te re s y re q u ie re n un a rg u m e n to (o m ás).
16.5. M o d ifiq u e la ru tin a b u s c a r d e la c la s e L i s t a E n l a z a d a l t e r p a ra d e ­
16.16. Im p lem en to u n a lisia c ir c u la r d o b le m e n te e n la z a d a .
v o lv e r la ú ltim a a p a ric ió n d e l e le m e n to x.
16.17. D iseñ e d e n u e v o L i s t a E n l a z a d a . L i s t a E n l a z a d a l t e r \ L i s t a l t e -
1 6 .6 . M ira r e l c o n te n id o d e l sig u ie n te o b je to e n u n a L i s t a E n l a z a d a i t e r re ­
r O r d p a ra n o p e rm itir e l in te rc a la m ie n to d e c o m a n d o s i n s e r t a r p ro c e ­
q u iere la a p lic a c ió n d e a v a n z a r . E n a lg u n o s c a s o s , p u e d e se r p re fe rib le
d e n te s d e L i s t a E n l a z a d a l t e r y L i s t a l t e r O r d .
m ira r e l e le m e n to sig u ie n te d e la lis ta , sin a v a n z a r. E sc rib a e l m é to d o con
16.18. Si e l o rd e n e n q u e se a lm a c e n a n lo s e le m e n to s e n u n a lis ta n o e s im p o r­
la sig u ie n te d e c la ra c ió n q u e re a liz a e s to e n e l c a s o g e n e ra l. Ll m é to d o
ta n te . e n to n c e s p o d e m o s a c e le ra r la s b ú s q u e d a s u s a n d o la s ig u ie n te h e u ­
v i s t a z o d e v u e lv e u n a L i s t a E n l a z a d a l t e r q u e se c o rre s p o n d e con
r ís tic a . c o n o c id a c o m o m o v e r -a l-fr e n te : s ie m p re q u e a c c e d a a u n e le ­
las k p o sic io n e s sig u ie n te s a a c t u a l .
m e n to . m u é v a lo a l p rin c ip io d e la lista. L a ra z ó n p o r la q u e e s to
c o n s titu y e u n a m e jo ra , e s q u e lo s e le m e n to s a lo s q u e se a c c e d e fr e ­
L istaE n lazad alter v istazo ! in t k ) ; c u e n te m e n te tie n d e n a m ig r a r h a c ia e l p rin c ip io d e la lista , m ie n tr a s q u e
lo s m e n o s fre c u e n te m e n te a c c e d id o s m ig ra n h a c ia e l fin a l d e la lis ta . En
16.7. E x p liq u e lo q u e le p a s a rá a l m é to d o a ñ a d id o e n e l E je rc ic io 16.6 c u a n d o c o n se c u e n c ia , lo s e le m e n to s m á s fre c u e n te m e n te a c c e d id o s re q u ie re n una
s e d e riv e la c la s e L i a t a i t e r O r d a p a rtir d e L i s t a E n l a z a d a l t e r . b ú sq u e d a m á s b re v e . Im p le m e n te la h e u rís tic a m o v c r-a l-fre n te p a ra las
16.8. M o d ifiq u e e l m é to d o e l i m i n a r d e la c la s e L i s t a E n l a z a d a l t e r de listas e n la z a d a s.
fo rm a q u e s e e lim in e n Unías las a p a ric io n e s d e x. 16.19. E sc rib a ru tin a s u n i ó n c i n t e r s e c c i ó n q u e d e v u e lv a n la u n ió n e in te r­
16.9. A ñ a d a la ru tin a e l i m i n a r S i g a la c la s e L i s t a E n l a z a d a l t e r . Él m is ­ se cció n d e d o s listas e n la z a d a s. A s u m a q u e las listas d e e n tra d a e s tá n o r­
m o e lim in a rá e l e le m e n to s itu a d o ira s la p o s ic ió n a c tu a l. ¿ C ó m o s e tra ta n d e n ad as
lo s P o sib le s r r m r e s ‘>
Com ondo Función

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.

Figura 16.22 C o m an d es p a ra e l ed ito r del Ejercicio 16.15. 17.1.1 Definiciones

R e c u e rd e , d e l C a p ítu lo 6. q u e u n á r b o l c o n siste e n u n c o n ju n to d e n o d o s y o irn d e


a ris ta s o rie n ta d a s q u e c o n e c ta n p a re s d e n o d o s. A lo la rg o d e e s te lib ro , so lam en te
c o n sid e ra m o s á rb o le s c o n r a í / U n á rb o l c o n r a í / tie n e las sig u ie n te s p ro p ie d a d e s

• 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 .

L a F ig u ra 17.1 m u e s tra u n á rb o l. E l n o d o raíz e s A , y lo s h ijo s d e A s o n H, C .


I ) y E . C o m o A e> la raí/., n o tie n e p a d re T o d o s lo s d e m á s n o d o s tie n e n p a d re : p o r
r a í /. I n a c o n se c u e n c ia d e e s ta d e fin ic ió n e s q u e c a d a n o d o d e un á rb o l d e fin e un
s u b á rb o l. q u e e s a q u e l q u e le tie n e p o r r a í / Se tie n e a s í u n a id e n tific a c ió n en tre
n o d o v s u b á rb o l. q u e h e m o s u tiliz a d o m á s a rrib a a l d e f in ir e l ta m a ñ o d e u n n o d o
E n a lg u n a s c la se s d e á rb o le s, c o m o lo s a r b o le » b ín a n o s q u e s e e s tu d ia n m a s a d e ­
la n te e n e l c a p ítu lo . *e p u e d e p e rm itir q u e a lg u n o s d e lo s su b á rb o le s s e a n v acíos
E sta v is ió n d e lo s á rb o le s se ilu stra e n la f i g u r a 17.2

17.1.2 Im plem entación

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

Figura 17.3 Representación prm er h*o/s»^jente norm ano dei árbol d e lo F lg u a 17 1

17.1.3 Una ap licació n: sistemas d e ficheros

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

im p r ImlrNorcbr#< p r o t ); // Imprimo e l n c c b r e d e l objeto


if ( e s ü i r e c t o r i o t I »
fo r c a d a f i c h e r o r o n « u to d i r o c t o r i o (p a r a r a d a h i j o )
c . l i s t a r » p r o f * 1 I;

iKm * ex?* .pps- c p W copVSVr

/ " ,
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.

Figuro 17 4 D irectorio Unix.


■arca
libroo
dsaa
j u n t o a l n o m b re in d ic a q u e n a r c a e s u n d ire c to rio .) F l d ire c to rio m a r c a llé n e tre s chl
h ijo s — 1 i b r o a . c u r s o s y . l o g i n — d o s d e l«>s c u a le s s o n a su \ c / di le c to rio s. ch2
L u e g o m a r c a c o n tie n e d o s s u b d i r r c t o m » y u n fic h e ro . E l n o m b re d e fic h e ro m a r ­ «*cp
c a / 1 * b i o B / d s a a c h l se o b tie n e to m a n d o tre s v e c e s el lu jo m a s a la i/q u ic r d x chl
ch2
C ad a in d ica u n a a rista, p ro d u c ie n d o asi u n n o m b re d e c a m in o Si e l c a m in o c o ­
tpP» .
m ie n z a e n la raíz del s iste m a c o m p le to d e fich ero s, e n lu g a r d e e n un d ire c to rio a rb i­ chl
tra rio d en tro d e l sistem a, e n to n c e s ten em o s u n n o m b re d e c a m in o c o m p le to ; e n c a s o ch2
c o n tr a rio te n e m o s u n n o m b re J e c a m in o re la tiv o a l d ir e c to r io actu al. cursos
E ste s iste m a d e fic h e ro s je r á rq u ic o e s m u y p o p u la r p o rq u e p e rm ite a lo s u s u a ­ cop3223
syl
r io s o rg a n iz a r su s d a to s d e u n a fo rm a e s tru c tu ra d a y s e n c illa . A d e m á s , s e p u e d e n
cop3530
a lm a c e n a r d«»s fic h e ro s c o n e l m is m o n o m b re e n d is tin to s d ire c to rio s , y a q u e p«x
*yi
a c c c d c rs c a e llo s a tra v é s d e c a m in o s d is tin to s d e sd e la ra íz , su s n o m b re s d e c a m i­ . login
n o c o m p le to s o n d is tin to s. U n d ir e c to r io e n e l siste m a d e fic h e ro s U n ix e s sim p le ­
m e n te u n fic h e ro c o n u n a lista d e to d o s su s h ijo s 1, p o r l o q u e se p u e d e n re c o rre r Figuro 17.6 Listodo d e l co n te n id o d e l directorio representad o por e l órbol d e la Fi­
lo s d ire c to rio s u s a n d o u n e s q u e m a d e ite ra c ió n q u e im p lc m e n tc la c la s e a b stra c ta gura 17 4
d e la F ig u ra 6 .1 5 . e s d e c ir, p o d e m o s ite ra r so b re c a d a h ijo . D e h e c h o , e n a lg u n o s
siste m a s, si a u n d ire c to rio se le a p lic a e l c o m a n d o n o rm a l p a ra im p rim ir u n fic h e ­
ro. e n to n c e s s e p u e d e n v e r e n la s a lid a los n o m b re s d e lo s fic h e ro s c o n te n id o s e n n o re la tiv o a la r a í /, e s d e c ir, l a p ro fu n d id a d a la q u e n o s e n c o n tra m o s E n la lla ­
e s c d ire c to rio (ju n to c o n o tra in fo rm a c ió n q u e n o e s tá e n fo rm a to A S C II). m a d a in ic ial a 1 I s t a r . e l p a rá m e tro p r o f to m a e l v a lo r O. lo q u e s ig n ific a a u s e n ­
S u p o n g am o s q u e q u e re m o s listar lo s n o m b re s d e to d o s lo s fic h e ro s d e u n d ire c ­ c i a d e sa n g ría a l m o s tra r la ra íz . E ste p a rá m e tro d e p ro fu n d id a d e s u n a v a n a b le
to r io (in c lu y e n d o sus subdirector!os». E l fo rm a to d e n u e stra sa lid a c o n s is tirá e n q u e in te rn a y d ifíc ilm e n te u n a ru tin a q u e lla m a r a a l i s t a r te n d ría q u e c o n o c e r su v a ­
los n o m b re s d e lo s fic h e ro s d e p ro fu n d id a d d a p a re c e rá n sa n g rad o s «/ tabúIadores. lo r. e s to e s . c o n s id e ra d o c o m o u n p a rá m e tro . P o r e llo e l p s e u d o c ó d ig o e sp e c ific a
En la F igura 17.5 se m u e s tra u n a lg o ritm o sim p le p ara h acer esto . L a sa lid a d e d ic h o p a ra e lla u n v a lo r p o r d e fe c to d e 0 ( n o e s leg al e s p e c ific a r u n v a lo r p o r d e fe c to en
a lg o ritm o p a ra e l d ire c to rio d e la F ig u ra 17 4 se m u e s tra e n la F ig u ra 17 6. Jav a ).
I’o r a h o ra u s a r e m o s p s c u d o c ó d ig o . p e r o a l fin al d e e s ta s e c c ió n p ro p o r­ E s b a sta n te s e n c illo s e g u ir la ló g ic a d e l a lg o ritm o se im p rim e e l o b je to a c tu a l
c io n a m o s u n a im p le m e n ta c ió n e n J a v a . S u p o n e m o s la e x is te n c ia d e la c la s e c o n e l s a n g r a d o a d e c u a d o y si la e n tra d a e s u n d ire c to rio , p ro c e s a m o s re-cursiva­
S iH te n u il- ic h < * r o y d e d o s m é to d o s, i m p r i n i rN a m b ro V o n D i r e c t o r i o . El m e n te lo d o s m i s h ijo s , u n o a u n o . E s to s h ijo s s o n u n n iv e l m á s p to fu n d o s y p o r
m é to d o im p r i m i r N o m b r e p ro d u c e c o m o sa lid a e l o b je to S í s t e m a F l c h e r o ac ­ ta n to s e d e b e a ñ ad ir a l sa n g ra d o u n ta b u la d o r a d ic io n a l. A l e fe c to h a c e m o s la lla ­
tu a l c o n u r u sa n g ría d e d ta b u ljd o r c s . > e « D i r e c t o r i o c o m p ru e b a si e l o b je to m a d a re c u rsiv u c o n p r o f * i . E s d ifíc il im a g in a r u n fra g m e n to d e c ó d ig o m á s
S i s te m a F i c h e r o a c tu a l e s un d ire c to rio , e n c u y o c a s o d e v u e lv e t r u e . U sa n d o sim p le q u e c>tc p a ra llev ar a c a b o lo q u e a p r io n p a re c e u n a ta re a b a sta n te c o m ­
e sto s d o s m é to d o s s e p u e d e e s c r ib ir fá c ilm e n te la ru tin a re c u rsiv a l i s t a r , a la p le ja
c u a l te n e m o s q u e p a s a rle e l p a rá m e tro p r o f . q u e in d ic a e l n iv e l a c tu a l d e l d ire c to - E sta té c n ic a a lg o rítm ic a s e c o n o c e c o m o re c o r r id o e n p r e o i d e n . e n e l c u a l se
lle v a a c a b o e l tr a b a jo s o b r e e l n o d o a n te s d e p ro c e s a r lo s h ijo s . A d e m á s d e s e r un
a lg o ritm o c o m p a c to , se tra ta d e u n a lg o r itm o c o n c o s te e n tie m p o lin e a l, l o c u a l
c* ■rtc"“ ftchtn» lie t n u umhtfn nene un* rntrmlj I . I que tuco rcíererwu ., si mismo y «lia l l que
Jcl UirvciiMH) l.ti,. MMnuJwc un acto. I» . I« que «kiiManwiMc. «I MUctm ,1c ftebrro* ,1c Uno imi o* un ártml tie n e s u m érito . P o r q u é e s to e s e n e f e c to a sí. se d is c u tirá m á s ad e la n te e n e l c a p í­
Miutiura tcmeiamc a un ailsil tu lo
i
O tro m é to d o h a b itu al p a ra re c o rre r u n á rb o l e s e l re c o r r id o e n p o s t/m lc n . e n el
c u a l se Ile s a a c a b o e l tra b a jo s o b a ’ un n o d o d e sp u é s d e h a b e r p ro c e s a d o m i s lu jo s
C o m o eje m p lo , la F ig u ra 17.7 re p re se n ta la m ism a e s tru c tu r a ü c d ire c to rio q u e la
d e la F ig u ra 17.4 L o s n ú m e ro s e n tre p a ré n te sis re p re s e n ta n e l n ú m e ro d e b lo q u e s
d e d is c o q u e o c u p a c a d a fic h e ro . P u e s to q u e lo s d ire c to rio s so n fic h e ro s, ta m b ién
usan b lo q u e s d e d is c o ip a r a a lm a c e n a r lo s n o m b re s d e su s h ijo s e in fo rm a c ió n so
b re ellos).
S u p o n g a m o s q u e q u e re m o s c a lc u la r e l n ú m e ro to ta l d e b lo q u e s q u e oc u p a n to ­
d o s lo s fic h e ro s e n e l á rb o l. L a lo rm a m á s n a tu ra l d e h a c e r e s to e s b u s c a n d o el
n u m e ro to ta l d e b lo q u e s usarlo s p o r to d o s su s h ijo s « los c u a le s p u e d e n se r d ir e c to ­
rio s q u e d e b e n evaluarse- r e c u r s o á m e n te ): l i b r o s (4 1 ). c u r s o s tS ) y . l o a i r
t2 ). E l n ú m e ro to tal d e b lo q u e s e s e n to n c e s e l to ta l e n to d o s lo s h ijo s m á s los b lo ­
q u e s u sa d o s e n la ra íz 1 1 >. e> d e c ir 5 2 . L a ru tin a t a r a n y o d e la F ig u ra 17 .S ,im p le
m e n ta e s ta e s tra te g ia S i e l o b je to s i s t c m a F i c h o r o a c tu a l n o e s un d ire c to rio .
tam.-ir-.yo sim p le m e n te d e v u e lv e e l n u m e ro d e b lo q u e s q u e u tiliz a . E n c a s o c o n tr a ­ Figura 17.9 Traza del m étodo ca m a rr/o
rio . s e a ñ a d e el n ú m e ro d e b lo q u e s d e l d ire c to rio a c tu a l a l n ú m e r o d e b lo q u e s en
c e n tra d o s (re c u rsiv a m c n te ) e n to d o s lo s h ijo s. P a ra ilu s tra r la d ife re n c ia e n tre los
re c o rrid o s e n p re o rd e n y e n p o s to rd e n . e n la F ig u ra 17.9 se m u e s tra c o m o e l a lg o ­ Im plem entación en Java
ritm o va p ro d u c ie n d o e l ta m a ñ o d e c a d a d ire c to rio (o fic h e ro ). E n e lla v e m o s que
se h a u s a d o un re c o rrid o e n p o s to rd e n c lá s ic o p o rq u e e l ta m a ñ o to ta l d e u n d ir e c ­ J a v a p ro p o rc io n a u n a c la s e F ; l o c o n te n id a e n e l p a q u e te j a v a . i o q u e s e p u e d e
to rio n o s e c o n o c e h a s ta q u e se c o n o c e n lo s d e su s h ijo s D e n u e v o e l tie m p o de u sa r p a ra re c o rre r je r a rq u ía s d e d ire c to rio s. P o d e m o s u sa rla p a ra im p le m e n ta r el
e je c u c ió n e s lin e a l I n la S e c c ió n 17 4 si- p u e d e e n c o n tr a r m u c h a m á s in fo rm a c ió n p sc u d o c ó d tg n d e la F ig u ra 17.5. a s i c o m o e l m é to d o t a m a n y o . lo c u a l se h ace en
so b re e l r e c o r rid o d e á rb o le s. e l c ó d ig o d is p o n ib le e n la re d . L a c la s e F : . e p ro p o rc io n a v a rio s m é to d o s ú tiles.
Se p u e d e c o n s tru ir un o b je to F i l e p ro p o rc io n a n d o u n n o m b r e El m é to d o
marca*, i g e c N a n e p ro p o rc io n a e l n o m b re d e un o b je to F i l e . N o in c lu y e la p a n e d e l c a m i­
n o c o rre s p o n d ie n te a lo s d ire c to rio s , la c u a l se o b tie n e u s a n d o g e t P a t h . F.l m é lo
d o i s D i r e c t o r y d e v u e lv e t r u e si e l o b je to F i l e e s u n d ire c to rio , y l e n g t h d e ­
v u e lv e su ta m a ñ o e n b y te s S i e l fic h e ro e s u n d ire c to rio , e l m é to d o l l s t
d e v u e lv e un v e c to r d e v a lo re s d e tip o s t r i n g q u e re p re s e n ta n lo s n o m b re s d e los
fic h ero s e n e l d ir e c to r io (s in in c lu ir . ni . .).
P a ra im p le m e n ta r e l o b je to S i s t e r c a F i c h e r o d e s c r ito e n e l p se u d o c ó d ig o .
s im p le m e n te e x te n d e m o s la c la s e F i l e v p r o p o r c io n a m o s u n c o n s tru c to r ,
im p r im ír N o m b r e y l i s t a r , y a q u e e l m é to d o e s D i r e c t o r i o q u e n e c e sitá b a ­
m o s y a n o s lo p ro p o rc io n a F i l e m e d ia n te l a D l r e c t o r y . E sto s e m u e s tra e n la
F ig u ra 17.10. L a ú n ic a p a n e d ifícil so n las lín e a s i b v 17. d o n d e d e b e m o s co n stru ir
Figura 17.7 D irectorio Unix c o n los tam años a© los ficheros e l o b je to S i s t e m a ? I c h e r o h i j o . El n o m b re c o m p le to d e l fic h e ro c o n siste e n el
n o m b re d e l d ire c to rio se g u id o p o r u n se p a ra d o r i / e n U n ix ; \ e n D O S ) y seg u id o
p o r e l n o m b re d e l fic h e ro . S e p ro p o rc io n a ta m b ié n u n a ru tin a m a in sim ple.
1 m e *..w m yo ( l
2 I
3 int e a s c o ta l = s iz e O ÍT h ls F ile i );
17.2 Árboles binarios
8 sí . iaD ¿r«ctory< i »
® f o r cada fic h e ro en e s t e d i r e c t o r i o ( p a r a c a d a hi U n á r b o l b in a r io e s u n á rb o l e n e l q u e n in g ú n n o d o p u e d e te n e r m á s d e d o s hijos.
7 r a r a o t a l • • c . l o n n n y o t ); P u e s to q u e so la m e n te h a y d o s h ijo s , p o d e m o s lla m a rle s u n a v ez d is tin g u id o s uno
d e l o tro i z q u i e r d o y d e r e c h o . L a d e fin ic ió n re c u rsiv a n o s d ic e e n e s ta o c a s ió n
9 return rnm total
10 ) q u e un á rb o l b in a rio e s o b ie n v a c ío o c o n s ta d e u n a r a í /, u n á rb o l (h ijo ) i/q u ie r d o
> o tr o d e re c h o . L o s lu jo s iz q u ie rd o y d e re c h o p u e d e n s e r a s u v e z v a c ío s , d e m o d o
Figuro 17.6 PsoudocOcfcgo p o ra c a lc u la ' ©I tam añ o total d e todos los ficheros de q u e u n n o d o c o n u n so lo h ijo p o d ría te n e r u n h ijo i/q u ie r d o o u n h ijo d e re c h o
u n cJirec.tona
1 import jav a.io .* ;
2
3 p u b lic c l a s s Sistem aFichero extends F ile
4 (
5 / / C onstructor
6 public SisC eaaFicheroí S t r i n g nombre )

• nuperí nombre );
9
10

11 " Im prime e l nombre d e l f i c h e r o c o n s a n g r a d o


12 p u b l i c v o i d imprimirNombre! i n t p r o f ) Figuro 17.11 Usos d e ios árboles binarlos a la izquierda un árb ol d e expresión y a la
d e re ch o un árb ol d e c o d ifica ció n d e Huffman.
14 for! in t i = 0; i < p ro f; i - - )
S y s t e m . o u t . p r i n t ( * \ t * );
>6 S y s t e m . o u t . p r i n t l n ! g«tName( > )
17 l ' n u s o d e lo s á rb o le s b ín a n o s lo c o n s titu y e n lo s a r b o le s d e e x p re s ió n , q u e son
18 la e s tru c tu ra d e d a to s fu n d a m e n ta l e n e l d is e rto d e c o m p ila d o re s, i-a s h o ja s d e un
19 / / Método g u i a p u b l i c o p a r a listar los ficheros á rb o l ilc e x p re s ió n so n o p e ra n d o s . c o m o c o n s ta n te s o n o m b re s d e v a n u b le s , e l r e s ­
20 public void l i s t a r ! 1
to d e lo s n o d o s c o n tie n e n o p e ra d o re s. E l á rb o l s e ra b in a n o e n ta n to y c u a n d o to ­
21

22 listar! 0 ); d o s lo s o p e ra d o re s im p lic a d o s lo se a n . A u n q u e é s te e s e l c a s o m á s sim p le , e s p o si­


23 ble q u e lo s n o d o s te n g a n m á s d e d o s h ijo s ty e n e l c a s o d e o p e ra d o re s ú n a n o s,
24 so la m e n te u n o ). P o d e m o s e v a lu a r u n árb o l d e e x p re s ió n T a p lic a n d o e l o p e ra d o r
25 / / Método r e c u r s i v o p a r a l i s t a r l o s f i c h e r o s d e un d i r e c t o r i o d e la r a í / a lo s v a lo re s o b te n id o s a p a rtir d e la e v a lu a c ió n re c u rsiv a d e sus á rb o le s
26 p riv a te void l i s t a r ! int prof » i/q u ie r d o y d e re c h o F.n n u e stro c a s o , e s to p ro d u c e e l v a lo r d e ( a « ! ( b - c ) * d ) )
27
E n la S e c c ió n 1 1.2 e s tu d ia m o s la c o n s tru c c ió n y e v a lu a c ió n d e lo s a rb o le s d e e x ­
20 imprimírNcrebrel prof );
29 p resió n .
L n se g u n d o u so d e los á rb o le s b ín a n o s e s e l o r b o l d e c o tlific M io n d e H uftm un.
20 i f ! isD irectory! ) I
31 q u e se u s a p a ra im p le m c n ta r un a lg o ritm o s im p le p e r o re la tiv a m e n te e fic ie n te de
32 String [ ) hijos » listf c o m p re sió n d e d ato s. C a d a sím b o lo d e l a lf a b e to s e g u a rd a e n u n a h o ja . S u c o d ig o
33 se o b tie n e s ig u ie n d o e l c a m in o d e s d e la r a í / h a s ta e s a h o ja , te n ie n d o e n c u e n ta que
34 for! int l = 0; i < h i j o s , ler.gch; i». ) b a ja r p o r u n a a n s i a i/q u ie r d a s e c o rre s p o n d e c o n u n 0 y b a ja r p o r u n a d e re c h a se
c o rre sp o n d e c o n u n I E u c g o b s e c o d if ic a c o m o 100. E n la S e c c ió n 12.1 d is c u ti­
36 S i s t e m a F i c h e r o h i j o = new S i s t e m a F i c h e r o « g e t P a t h ! I m o s la c o n s tru c c ió n del á rb o l ó p tim o , q u e g e n e ra la m e jo r c o d ific a c ió n p osible.
* s e p a r a t o r C h a r • h i j o s [ i ] >;
h i j o . l i s t a r ! p r o f * 1 ); lu is á rb o le s b ín a n o s ta m b ié n se u tilizan c o m o s»«porte e n los á rb o le s b in ario s de
b ú sq u e d a ( véa se C a p ítu lo 18). q u e p e m u te n in se rc io n e s y a c c e so a lo s e le m e n to s en
40 tie m p o lo g arítm ico , y e n las c o la s c o n p rio rid a d , q u e so p o rtan a c c e s o y elim in a c ió n
41 d e l m ín im o d e u n a co le c c ió n d e ele m e n to s. V a ría s im p le m e n ta c io n e s e fic ie n te s de
42
la s c o la s c o n p rio rid ad u san á rb o le s, c o m o se d isc u te e n lo s C a p ítu lo s 20 a 22.
43 n R utinam am para l is ta r lo s ficheros del d ire c to rio actual L a F ig u ra 17.12 p ro p o rc io n a e l e s q u e le to d e la c la s e N o d o B i r . a r i o . L a s lí­
44 p u b lic s t a t i c v o id main! S tr in g ( ] a rg s »
n e as 4 0 a 4 2 n o s d ic e n q u e c a d a n o d o c o n s ta d e u n d a lo ju n to c o n d o s p u n te ro s a
46 Sistem aFichero t = new S i s t e m a F i c h e r o ! *.* ); lo s h ijo s. S e p ro p o rc io n a n tre s c o n stru c to re s. E l d e la lín e a 18 tie n e c e ro p a rá m e ­
47 f . lis ta r ! ); tros. E l d e la lin c a 2 0 s e u s a p a ra c o n s tru ir u n N o d o B i n a r i o d a d o u n d a to c o m o
48 p a rá m e tro . E n e sto s d o s c o n stru c to re s >c a s ig n a n u i l a las re fe re n c ia s q u e a p u n ­
49 )
ta n a lo s h ijo s i/q u ic r d o y d e re c h o . E l te rc e r c o n s tru c to r , e n la lín e a 2 2 . ¡n ic ia li/a
to d o s lo s a trib u to s d e l N o d o B i r . a r i o . O b s e rv e q u e e s to s c o n stru c to re s req u ieren
Figuro 17.10 lm p lem entación en jo v a del listodo d e un O ree tono
inic la li/a c ió n o b ie n d e lo s d o s h ijo s o d e n in g u n o d e e llo s , c o n lo q u e cv llam o s
o b je to s p a rc ia lm e n te im c ia liz a d o s.
l i a r e m o s re p e tid a m e n te la d e fin ic ió n re c u rs iv a e n e l d is e rto d e a lg o ritm o s so b re E l a c c e s o a lo s a trib u to s s e p e rm ite d e s d e »*tras c la s e s d e l m is m o p a q u e te ,
á rb o le s b ín a n o s . E sto s tie n e n u n g ra n n ú m e ro d e u s o s im p o rta n te s, «los d e lo s c u a ­ p o r l o q u e n o p ro p o r c io n a m o s m é to d o s m o d ific a d o re s n i d e a c c e s o . F.l m é to d o
le s se ilu stran e n la F ig u ra 1 7 .1 1. d u p l i c a r . d e c la ra d o e n la lín e a 3 6 . se u s a p a ra g e n e ra r u n a c o p ia d e l á rb o l c u y a
r u ír I*< «*l iwtflit u l i i i l I 'K riitilV Iv r a m s m / n V .« I I n r a ltí*i'l;tn u L iS C ll lü S líltCUS 26
package Est ruoturaaliatofl; E n e s ta s e c c ió n d e s c rib ire m o s la im p le m e n ta c ió n d e la c la s e A r b o l B i n a r i o .
C l a s e N o d o B ír.a rio ; a lm a c e n a un no d o en un á r b o l S e p ro p o rc io n a u n a c la s e N o d o B i n a r i o se p a ra d a p a ra s im p lific a r la im p lem cn tu -
CONSTRUCCIÓN: l a ) u i p a r á m e t r o s , i b ) c o r . u n O b j o c t . c ió n ilc a lg u n a s d e la s ru tin a s re c u rsiv ,is E n la F ig u ra 17 13 s e m u e s tra e l e sq u e le ­
o (el un o b j e c t . un p u n te r o i z q u i e rd o y o t r o d e re c h o . to d e la c l a s e A r b c l B i n a r i c . L a m a y o ría d e las ru tin a s so n se n c illa s d e ím p le -
m en tar p u es se lim itan a lla m a r a m éto d o s de la c la s e N o d o ¿ u ñ a r l o . E n la linca 44
’ ................. .. ' OPERACIONES PÚBLICAS * ............ * * * ............. s e d e c la ra e l ú n ic o a trib u to , u n a re fe re n c ia a l n o d o r a í/.
. i n t tamanyoi t - - > D e v u e l v e el t o m a r t e d e u n á r b o l
Int a ltu ra! I - - > D evuulve la a l t u r a de un árb o l
v o id imprim irRostO rdeni ) - -> reprim e r e c o r r i d o en poscorden I pnekage E stru ctu rasD a to s;
v o jd imprim írOrdenSlm ! j --> imprime r e c o r r i d o o r d e n a i m é t r i c o 2 C l a s e A r b o l B í n a r i a ; a lita c e n a u n á r b o l b i n a r l o
v o i d Impr u n í r P re O rd e n ( | - - > l a c r i m e e l r e c o r r i d o e n p r e o r e s r . 3 / / CONSTRUCCIÓN: i a » s i n p a r á m e t r o s o i b ! c o n u n o b j e t o a
NodoB inario d u p lic a r ! i - - > D e v u e l v e u n a c o p i a d e l Arbol 4 // c o l o c a r er. l a r a í z 4 o u n á r b o l d e u n u n l e o e l e r z e n t o .
......................... ‘ ERRORES............................ * ............. ..........................
5 ;
Ninguno
6 / .................................................... OPERACIONES... PÚBLICAS....................................................
7 v o id ínipnnirPaseC rden I ■ I m p r m e r e c o r r i d a ar, p e a t o r d e r .
Lnal c l a s s N o d o B in a rio
8 v o : d i m p r i m i r O r d o n S i m ii - - » I m p r i me r e c o r r i d o a r d e n i i m e t r i c o
N odoBinariot ) 9 v o i a im p rin u r P r e O r den i ; - - > Imprime e l t e c o z r i d o e n p r e c t d e n
i th ís t nuil ); | 10 >: o o o l e a n e s V a c i o ! « crue ai e . á rb o l e s vacio
11 </ v o i d v a c i a r i i - - * C o n s t r u y e un a r b u i v a c i o
N odoB inario! O b je c t elD aco l
{ t h i s í elD ato, n u il, n u il ); » 12 void u n irl Object : aíi-. A rbclB inario al A rboiBinario si
N o d a B l n a x i o ( O b j e c t e l Dato. N o d o B i n a r io menor. 13 --> c o n s t r u y e u n r.uovo á r b o l
' á *...................................................ERRORES**.....................................................................................................................
N n d o S m a r i o mayor *
I d a t o - e lD o to ; i z q u i e r d o - menor: derec h o = mayor, ) 15 ) I m p r e s i ó n d e n e n o a j e o <3r e r r o r p o r aniones ilegales
16
a ta t iC I n t tam anyo( NodoBinario a i 17 public class ArboLBinario
[ / • Figura 17.19 •/ } 18 i
s t a t i c i n t a l t u r a < N odoB inario a ) 19 p u b lic A rbolBinarioi >
I * F i g u r a 1 7 . 2 1 *-■ > 20 { ra í: - nuil; )
vo id im prim irPostO rdeni I 21 p u b l i c A rbol B in a ria i O b je c t elem Raiz i
I * Figura 17.22 • / ] 22 I r a í : « now N o d o B i n a r i o i « I w a R a i z ) ; )
v a i :!i mp r i m i r O r d e n S im ( ) 23
( / • F ig u ra 17.22 • / | 24 p u b lic v o id imprim irPreOrden! i
v o i d tinpr i r a i r P r e O r d e n ( ) 25 i _ t l r a i z != n u i l l r a l a . I m p r i m i r P r e O r d e n ( l ; }
i • F i g u r a 1 7 .2 2 */ )
26 p u b l i c v o i d 1 rnp r i m i r O r d o n S 1 rr, ( i
NodoBinario d u p l i c a r ( i
27 i i f i r a í z l= n u i l i r a i z . Irap rim ir O rd er. S iiM I
í /* F ig u ra 17.17 ' / )
28 p u b l i c v o i d impr imi r P o s tO r d e n !
29 • i f i r a i r l» n u i l » r a l z . I m p r im í r P o a tO r d e n t ):
/ / A tributos am isto sa s: a c c e s ib le s po r o tra s r u t in a s del paquete
Object ciato; 30 publ i c roo lean e s Vac.c l i
NodoBinario izquietdo; 31 i return raíz •• n u il; !
NodoBinario derecho: 32 pufciin v o i d v a c i a r ! i
33 { rais = n u il: I
34 p u c lic v oid u m r ( O bject eiam R aiz, A z a o .é in a ric a..
Fi g ur o 17.12 E s q u e l e t o d e l a c i a s e J i o d o B i ñ o r i o. 35 A r b o . B i n a r i o a2
36 ( •' * F i g u r a 1 7 . 1 6 • |
37 public i n t tamanyot !
a c a lc u la n las p ro p ie d a d e s p o r o lla s n o m b ra d a s p a ra e l n o d o re fe re n e ia d o p o r 38 ( r e tu r n N odoB inario.tananyoí ra íz ); :
e l p a rá m e tro a . E sta s ru tin a s se im p lc m e n la rá n e n la S e c c ió n 17 3 T a m b ié n p ro ­ 39 public :n t al cura! i
p o rc io n a m o s. e n las lín e a s <0 a 34. m im a s q u e im p rim e n e l c o n te n id o del su b árb o l 40 i re tu rn N odoB inario.altural r a ir
q u e tie n e c o m o r a í / e l n o d o a c tu a l, u s a n d o v a ria s e s tra te g ia s re c u r s iv a s p a ra re c o ­ 41 public v o i d d u p l i c a r ! A r b o l a r r . a r i c _dt*i
rre rlo . l a s fo rm a s d e re c o rre r un á rb o l se e s tu d ia n e n la S e c c ió n 17.4 ¿ P o r q u é 42 í í t i C h a s '.= n u i l l r o i r - I d e e . r a 12 - d u p l i c a r 1 ‘
43
p a sa m o s u n p a rá m e tro a las ru tin a s t « m a n y o > a l t u r a , p e r o u sa m o s e l o b je to ac­
44 p r o t e c t e d Nc<5oB;nario ra íz ;
tu al p a ra lo s re c o rrid o s y e l m é to d o d u p l i c a r ? E n re a lid a d , n o h a y u n a r a /ó » 45 |
c o n c re ta p a ra e s to , e s s ó lo una c u e s tió n d e e s tilo . A q u í p re s e n ta m o s a m b o s estilo s.
'" 'P ig m e n ta c io n e s m o stra ra n «pie la s d ife re n c ia s e n tre e llo s su rg e n c u a n d o se
q u ie re c o m p r o b a r si u n á rb o l e s n n l ;
Figuro 17.13 Esqueleto d e la clase A r b o i B ; r m : io
S e p ro p o rc io n a n d o s c o n stru c to re s. El d e la lín e a 19 c re a u n á rb o l v a c ío , m ie n ­ 1.a so lu c ió n es c u p rin c ip io sen cilla. P o d e m o s a se g u ra r q u e lo s nod o s n o a p a re ­
tra s q u e e l d e la lin c a 2 1 c re a u n á rb o l c o n u n ú n ic o n o d o . E n la s lín e a s 2 4 a 29 c e n e n d o s á rb o le s a sig n a n d o n u i l a a l - r a i z y a 2 . r a í z d e sp u é s d e u n i r . S u r­
ve d e c la ra n ru tin a s p a ra re c o rre r e l á rb o l, la s c u a le s a p lic a n m é to d o s d e la c la s e gen c o m p lic a c io n e s c u a n d o c o n sid e ra m o s a lg u n a s lla m a d a s q u e c o n tie n e n aliasin g :
N o d o B i n a r i o a la r a i z d e sp u é s d e v e rific a r q u e e l á rb o l n o e s v a c ío . U n a e s tr a ­
al .u n ir ( x , a l . a?. ) :
teg ia a lte rn a tiv a d e re c o rrid o d e á rb o le s q u e s e p u e d e im p le m c n ta r e s e l re c o rrid o
a2 . u n i r ( x. a l. a2 ) ;
p o r n iv e le s. E n la S e c c ió n 17 .4 s e e s tu d ia n to d a s la s ru tin a s d e re c o rrid o . E n las
a l.u n ir( x. a3. a3 ) ;
lín e a s 42 \ 30 se p ro p o rc io n a n ru tin a s p a ra c o n s tru ir u n á rb o l v a c ío y p u ra c o m ­
p ro b a r si u n á rb o l e s v a c ío re sp e c tiv a m e n te . L o s d o s p rim e ro s c a s o s so n sim ila re s , p o r lo q u e c o n s id e ra re m o s s ó lo e l p ri­
H ay d o s ru tin a s m á s e n la c la se . E n la s lín e a s 41 y 4 2 d e fin im o s e l m é to d o m e ro . E n la F ig u ra 17.15 se m u e s tra u n d ib u jo d e la situ a c ió n P u e sto q u e a 1 e s un
d u p l i c a r . D e s p u é s d e c o m p r o b a r e l a lia sin g . lla m a m o s a l m é to d o d u p l i c a r de a lia s d e l o b je to a c tu a l, a l . r a í z y r a i z so n a lia s. E n c o n s e c u e n c ia , tra s la lla m a ­
d a a n e w . si e je c u ta m o s a l . r a i z = n u i l , ta m b ié n e s ta m o s c a m b ia n d o r a í z a
la c la s e N o d o B i n a r i p ara o b te n e r u n a c o p ia d e l á rb o l l d e r . E n to n c e s a s ig n a ­
n u i l . P o r ta n to , e n e s to s c a s o s h e m o s d e te n e r m u c h o c u id a d o c o n lo s a lias
m o s e l re s u lta d o a la r a í / d e l á rb o l. O b s e rv e q u e a n te s d e p o d e r a p lic a r e l m é to d o
d e la c la s e N o d o B i n a r i o a l n o d o re le re n c ia d o p o r r a í z , d e b e m o s v e rific a r que
raíz
r a i z no es n u i l .
El ú ltim o m é to d o d e la c la s e e s la ru tin a u n i r , la c u a l u s a d o s á rb o le s — a l y
a 2 — y u n e le m e n to p a ra c re a r u n n u e v o á rb o l q u e tie n e a l e le m e n to c o m o raí/, y
lo s d o s á rb o le s c o m o h ijo s i/q u ie r d o y d e re c h o . E n p rin c ip io , s e tr a ta d e u n a ru tin a
do u n a s o la línea

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 ) :

S i las c o s a s lu c r a n s ie m p re ta n s e n c illa s , lo s p ro g r a m a d o re s n o e n c o n tr a ría n


tra b a jo . A fo rtu n a d a m e n te p a ra n u e s tra s c a r r e r a s p ro f e s io n a le s , h a y c o m p lic a c io ­
n e s. L a F ig u r a 17.14 m u e s tra e l r e s u lta d o d e l s e n c illo m é to d o u n i r d e u n a s o la
lín e a . Se h a c e p a te n te u n p ro b le m a : lo s novios d e lo s á rb o le s a l y ¿>2 s e e n c u e n ­ Figuro 17.15 Problem as c o n e l aliasing en lo o p era ció n un i r ; a l es tam bién el
tra n a h o ra e n d o s á rb o le s , lo s o rig in a le s y e l r e s u lta d o d e la u n ió n . E sta c o m p a r- objeto aciu at.
tic ió n p o d ría s e r u n p ro b le m a si q u is ié ra m o s e lim in a r o a lte ra r d e a lg u n a o tra
fo rm a lo s á rb o le s o rig in a le s o b ie n su s a p a ric io n e s c o m o s u b á r b o le s . p u e s c u a l­ 1 /• •
2 • R utina u n ir para l a r í a s e A rbolB inario
q u ie r m o d if ic a c ió n e n u n o u o tr o re p e r c u tiría in m e d ia ta m e n te e n e l o tr o , p u e s se
3 • F o r m a u n á r b o l n u e v o a p a r t i r «le e l e n R a l z , a l y a 2 .
tr a ta e n re a lid a d d e l m is m o o b je to . E s te e n o c a s io n e s p o d ría n o s e r e l e f e c t o p re ­ 4 • T rata c o rre e ra ra n te v a ria s situ a c io n e s de a lia s in g .
te n d id o .
6 public void u n ir! O bject elem Paiz, A rbolB inario al.
7 A r b o l B i n a r i o a2 I

9 ifi al.raiz == a í . r a i r t.t> a l . r a í z != r.ull I


10
11 S ystem ,err.prsncln< •á r b o l I z q u i e i d o = = a r b o l D e r e c h o ; * *
12 ' u n i r a b o r t a d o ’ I .-
13 return:
14
15
16 / / c r e a c i ó n d e u n r.uevo n od o
17 raiz = new J J o d o B i n a r i o t e l w i R a i z . al raiz. a2 .raiz );
18
19 // No5 a s e g u r a m o s deque cad a nodo e s t á s ó l o en un árbol
20 i 1 < Mil a I» a l >
21 a l.r a íz = nuil;
22 if< r.h is !- a 2 >
23 f\'¿ . r a i z ■ n u i l ;
24 )
F ig u ra 17.14 R e s u d a d o d e u n m é t o d o u n i r in g e n u o h a v c o m p o r tic ió n d e su b -
órbolos. F igu ra 17.16 Rutina unir p a ra »a clase A i b o 1 B i n a r i o
1:1 te rc e r c a s o n o d e b e ría p e rm itirs e p o rg u e c o lo c a ría lo s n o d o s d e <■ e n dos
sitio s d is ü n lo s d e i l . A h o ra b ie n , m a _ rc p re s e n ia ra u n u tb o l v a c io , e l te rc e r Coso
si e s ta ría p e rm itid o A l fin al re s u lto b a sta n te p e o r J e lo q u e e sp e rá b a m o s. El c ó d i-
g o re s u lta n te s e m u e s tra e n la F ig u ra 17.10. la» q u e e n un p rin c ip io e ra u n a ru tin a
d e u n a s o la lín e a se h a c o n v e rtid o e n u n a b a sta n te m á s larga.

17.3 Árboles y recursión Figura 17.18 Visión re c u rsiv o u tiii7 ad a p a r a c a i c u k r e l t a m a ñ o a e u n órbol


Sa " S * S o t 1
Va q u e lo s a rb o le s %e p u e d e n d e fin ir .le tu r m a re c u r s iv a , n o s o rp re n d e e l h e ­
c h o d e q u e la m a y o r ía d e la s ru tin a s q u e im p lic a n a lo s a rb o le s se im p le m e n tc n
d e fo rm a in a s s e m illa u s a n d o re c u rs ió n . A q u í p ro p o rc io n a m o s la im p le m e n ta c ió n tamafi o d e ] A r b o l b i n a r i o cor. x a i r « n a
r e m is iv a •le la m a y o ría d e lo s m é to d o s re s ta n te s J o la s c la s e s N o d o f lln n r ic y
A r b o l B l n a r i c . L a s ru tin a s re su lta n te s s o n in c re íb le m e n te c o m p a c ta s ir.t tatnar.yo( N o d o B ln a ció a i
C o m e n /a m o s c o n e l m é to d o - i j p l t c a r d e la c la s e N o u c B i r . u r ; o P u e s to q u e
e s u n m é to d o d e la c la s e N o d o B - .n a r 1 0 . sa b e m o s q u e e l á rb o l q u e cstam«*s d u p lo
c a n d o n«» e s v a c ío 1:1 a lg o n tm o re c u is iv o e s se n c illo . P rim e ro c re a m o s u n n o d o
8 eise
n u e v o c o n e l m ism o d a to q u e e l n o d o n u > a c tu a l D e sp u é s lla m a m o s ic e u rsiv a - 9 r e t u r n 1 • Caraanyola . i z q u i e r d o ) * tam an y o t a . de ro c h o
m en te d o s v eces a d u p l i c a r p a ra g e n e ra r e l su b á rb o l i/q u icrd i> y e l d e re c h o E n
10 )
a m b o s c a s o s , h a c e m o s la s lla m a d a s r e c u r s o a-, d e s p u é s d e c o m p r o b a r q u e e l c o -
Figuro 17 19 R u trx i p o r o cokiulo r e* tom oiSo d e u n n o d o
rrc sp o n d ic m c á rb o l e s n o v a c ío . E sta d e s c rip c ió n v e rb a l a p a re c e c o d ific a d a e n la
F ig u ra 17 17.
El s ig u ie n te m é to d o q u e p re s e n ta m o s e s la ru tin a t n t n n n y c d e la e l use L a u ltim a rutina re c u rsiv a d e e s ta se cció n c a lc u la la a ltu ra d e u n n o d o E s d ifícil El,
N o d o B i n a r i o . la c u a l d e v u e lv e e l ta m a ñ o d e l á rb o l c u y a r a í / e s e l n o d o referen* d e e s c n b ir e n fo rm a n o rccu rsiv a. p e ro s e im p le m e n ta triv ia lm e n te d e fo rm a re v u lsi­
c ia d o p o r q u e se p a s a c o m o p a rá m e tro S i d ih u ia m o s e l á rb o l re c u rsiv a m e n te . v a. u n a v e / n o s fijarn o s e n la d e s c r ip c ió n g rá fic a d e u n á r b o l L a F ig u ra 17.2(1
c o m o se m u e s tra e n la F ig u ra 17.IH . v e m o s q u e e l ta m a ñ o d e un á rb o l e s ig u a l al m u e s tra u n árb o l v is to d e fo rm a re c u rsiv a . S u p o n g a m o s q u e e l h ijo iz q u ie rd o tiene
ta m a ñ o d e l h ijo t/q u ic r d o m á s e l d e l h ijo d e re c h o m a s I . y a q u e la r a í / a p o rta un a lu n a / / , y q u e e l h ijo d e re c h o tie n e a b u ra / / „ C u a lq u ie r n o d o q u e e s te , t n iv e le s
n o d o. C o m o e n to d a ru tin a re c u rs iv a n e c e sita m o s u n c a s o b a s e q u e p u e d a re s o l­ p o r d e b a jo d e la r a í / d e l h ijo inquiérelo e s tá d + I n iv e le s p o r d e b a jo d e la raí/, d e l
v erse d ire c ta m e n te . E l á rb o l m á s p e q u e ñ o q u e la ru tin a to m a r, y o tra ta e s e l árbol á rb o l c o m p le to . L o m is m o su c e d e p a ra e l h ijo d e re c h o . L u e g o la lo n g .tu d d e l cu
v a c ío i c o rre s p o n d ie n te a a n u l 1». c u y o ta m a ñ o e s c la ra m e n te 0 El re s u lta d o e s ta m in o q u e lle v a a l n o d o m á s p ro fu n d o e n e l á rb o l o rig in a l e s I m á s d e la lo n g itu d
im p lc m e n la d o e n la F ig u ra 17.19. P o d e m o s c o m p r o b a r fá c ilm e n te q u e la re c u rsió n d e su c a m in o d e s d e la r a í / d e l s u b á rb o l c o rre s p o n d ie n te . E n c o n se c u e n c ia , si c a l ­
p ro d u ce la re s p u e sta c o rr e c ta p a ra lo s á rb o le s d e ta m a ñ o I. c u la m o s d ic h o v alo r p a ra a m b o s s u b á rb o le s. la re s p u e s ta q u e b u sc a m o s e s e l m á ­
x im o d e d ic h o s v a lo re s m á s I.
¿ (J u e su c e d e c o n e l c a s o b a s e ' IX- n u e v o , c o rre s p o n d e a l á rb o l v a c ío l-a a fir­
m a c ió n J e q u e la a ltu ra de u n a tb o l v a c ío e s ü . e s e r r ó n e a , p o rq u e u n á rb o l d e un
Devuelve an p u n te r o a . nodo r a i r de i d u p lic a d o íe! s o lo n o d o tie n e a ltu ra 0 tu n a h o ja s ie m p re tie n e a ltu ra 0». P a ra q u e la fó rm u la re-
i r b o l b i n a r l o c u y a r a . r et, e l n o d o a c t u ó . . c u rs iv a fu n c io n e c o rre c ta m e n te c o n á rb o le s d e un s o lo n o d o , d c tim in t» lu a ltu ra

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

8 / / CONSTRUCCIÓN: c o n e l árbol ai que e stá ligado e i iterador


9 //
.0 OPERACIONES PÚBLI CAS** * ...............................................
no rl 1 d
bU t»i b2 h: b b : 11 / / b o o l e a n esV alidol I --> True en un* p o a ic ló n v á lid a d e l árbo
a 1» a 1 a1 i1 a 1 a a 1 a 1 12 / / O bject r e c u p e r a n ) --> Devuelve elem en to e n p o s i c ió n actú a
13 u void prim ero! > - - » C o l o c a p o s i c i ó n a c t u a l e n p r i m e r nod.
il ti
M // void avanzar! ) - - > A v a n z a a l a g i g u i e n t e P O » ‘ C Í Ó n ..............
,5 , , .............................................................................ERRORES* ......................................
16 / / Excepciones lanzadas por acceso» o avance» ile g a le »
««» e 1 c : 17
c l* c l c 1 r 1 0 1 r i
18 /**
n a .i a : *2 .i 2 a : 19 * Clase iteradora PostOrden.
I c a 20 •/
21 public class PostO rden e x ten d a A r b o l l t e r
Figuro 17.25 Estoaos d e la pda du ran te & recorrido e n postoróen 22 (
23 public PostOrcJen!A r b o l B i n a r l o e l A rbol 1
24 I
25 o u p e rI e lA rb o l 1:
A c o n tin u a c ió n s e d c s a p ila b p o r p rim e ra v e /. p o r lo q u e ve c o lo c u d e v u e lta e n la
26 P s n e w P i l a V e c ! >:
p ila S i e x is tie ra d h ijo i/q u ie r d o d e b s e a p ila ría , p e ro c o m o n o tie n e , s e d e sa p ila 27 p . a p i l a r ! new NodoPl! a . r a í z 1 )
b p o r s e g u n d a v e / , se v u e lv e a c o lo c a r e n la p ila y s e a p ila su liip i d e re c h o d. 28 1
A h o ra s e d e s a p ila d p o r p rim e ra v e / , p o r lo q u e se c o lo c a d e n u e v o e n la p ila. N o 29

se p ro d u c e u n a o p e ra c ió n d e ap ilar, p o rq u e d n o tien e h ijo i/q u ic rd o . c o n lo q u e d se 30 public voidprim ero! )

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 ;

p o r p rim e ra v e z y tie n e u n h ijo iz q u ie rd o , e n to n c e s se a p ila su h ijo iz q u ie rd o Si


4 5 / / S e procesa primero
h a b ía sid o d c s a p ila d o p o r se g u n d a v e z y tie n e u n h ijo d e re c h o , s e a p ila su h ijo d e ­
46 p . apilar! c n o d o >:
re c h o . O b s e rv e q u e e n to d o s lo s c a s o s l a c o n s tru c c ió n d e l o b je to N o d o P l im p lica
47 i f l c n o d o . n o d o . I z q u i e r d o I- n u i l > . , ,
q u e e l n u e v o n o d o a p ila d o s e h a d c sa p ila d o 0 veces. A » p . a p i l a n n .w N o d o P lI c n o d o .n o d o , l i q u i d o I 1.
E v c n tu a lm e n tc e l b u c le f o r te rm in a rá a l h a b e rse d e s a p ila d o a lg ú n n o d o p o r 49
te rc e ra vez. O b s e rv e q u e a lo la rg o d e la s e c u e n c ia c o m p le ta d e ite ra c io n e s, p u ed e 50
h a b e r a lo su m o 3Af o p e ra c io n e s d e a p ila r y d e s a p ila r É sta e s u n a fo rm a a lte rn a n 51
v a d e esta b le c e r la lin c a lid a d d e lo s re c o rrid o s e n p o sto rd en .
1
fo rm a q u e la sig u ie n te lla m a d a a a v a n z a r p u e d a c o n tin u a r re c o rrié n d o lo . C o m o 2 • Avanza l a p o s i c i ó n a c t u a l a i s i g u i e n t e nodo en e l a t b o l .
e s m u y sim ila r a l re c o rrid o e n p o sto rd e n , d e riv a m o s la c la s e O r d e n S i n » a p a rtir dé­ 3 • do a c u e rd o con e l esquema d e r e c o r r i d o e n p r e o rd e n .
la c la s e P o s t O r d e n ta u n a p e s a r d e q u e n o e x is ta u n a re la c ió n E S -U N (A )). Ll ú n i­ 4 • B e x c o p tio n E lem entoNoEncontrado a l l a p o s l c i ó n a c t u a l cñ n u i l .
c o c a m b io e s u n a p e q u e ñ a a lte ra c ió n e n a v a n z a r , lu í n u e v a c la s e s e m u e s tra e n la 5 • /

F ig u ra 17.28. 6 public void avanzar! I throw s ElementoNoEncontrado


7 {
8 lf!p.esvacia! > I
9 {
17.4.3 Recorrido en preorden 10 Íf( a c t u a l «== n u i l )
|1 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 vanzar de ProOrden'
12 a ctu al = nuil;
F.l re c o rrid o e n p re o rd e n e s a n á lo g o al re c o rrid o e n p o sto r,leu . e x c e p to p o r e l h ech o
13 return;
d e q u e un n o d o se d e c la ra v is ita d o la p rim e ra v e / q u e s e d e s a p ila . A l h a c e rlo , el
14 I
ite ra d o r apila e l h ijo d e re c h o y lu eg o e l h ijo iz q u ierd o . F s im p o rta n te q u e n o s lije ­ 15
m os e n e l o rd en d e am b a s o p e ra c io n e s: q u e re m o s p ro ce sa r p rim en» e l h ijo iz q u ie n lo 16 try
y d e sp u é s e l d e re c h o , p o r lo q u e a p ila m o s p rim e ro e l d e re c h o y lu e g o e l izq u ierd o . 17 ( a c t u a l = l N o d o B i n a r i o )p . c i m a Y D e s a p i l a r < 1
18 catch !D esbordam ientoInferior e I
19 ( r e tu r n : ) / / N o puede suceder
1 package E strurtur.iB D dtou: 20
2 21 i f ! a c t u a l . d e r e c h o != n u i l )
3 import Excepciones.*; 22 p.api lar! actual.derecho );
4 23 i f ! actu al.izquierdo •« n u i l )
5 . C ia s e P re o r d e n ; m a n tie n e una ' p o s i c i ó n a c tu al* 24 p .a p i l a r ! a c t u a l . iz q u ie rd o );
6 // d e a c u e r d o con o ] r e c o r r i d o en p r e o r d e n 25 J

8 // CONSTRUCCIÓN: c o n e l árbol al que e s t á ligado e l iterador Figuro 17. 30 M é to d o a v a n z a r d e k j c la s e Ite ro d o ra P r e O r d e n

'0 II * .......................... ' • ‘ • • • • • • O P E R A C I O N E S PÚBLICAS....................... ............................


11 / / b o o l e a n e s V a l i d o l 1 - - > T r u o e n u n a p o s i c i ó n v á 1 ;d.> d e l á r b o l P o d ría m o s d e riv a r la c la s e P r e O r d c n a p a rtir d e la c la s e O r d e n S i m o d e la
12 // Object r e c u p e r a n Devuelve elem ento en p o s i c ió n a c t u a l
c la s e P o s t O r d e n . p e ro e s to s u p o n d ría u n c o s te in n e c e s a rio p u e s e n e s la o c a sió n
13 // void prim ero! ) - - > C o l o c a p o s i c i ó n a c t u a l e n p r i m e r nodo
14 // void avanzar < > --> Avanza a la sig u ien te - p o s i c i ó n y a n o e s n e c e s a r io m a n te n e r u n c o n ia d o r d e l n ú m e ro tic v e c e s q u e s e h a d e s a p ila ­
•5 * ■ • • ERRORES * • * • *• • d o c a d a e le m e n to . E n c o n s e c u e n c ia , la c la s e P r e O r d e n s e d e riv a d ire c ta m e n te de
jó / / Excepciones lanzadas por a cc eso s o avancen i le g a le s la c la s e A r b o l i t e r . E n la F ig u ra 1 7 . 2 9 s e m u e s tra e l e s q u e le to re s u lta n te c o n el
18 public c la s s P re orden exr^r.ds A r b o l l t e r c o n s tru c to r y e l m é to d o p r i m e r o .
19 ' E n la lín e a 44» se a ñ a d e a la c o le c c ió n d e a trib u to s d e la c la s e A r b o l r t o r una
20 public P reorden < A rb o lB in a rio e l Arbol i p ila d e re fe re n c ia s a n o d o s d e á rb o l. E l c o n s tru c to r y e l m é to d o p r i m e r o so n si­
21
22 m ila re s a lo s q u e y a h e m o s v isto . C o m o s e ilu stra e n la F ig u ra 17.30. e l m é to d o
fluperl e lA rb o l | ;
23 p = new P i l a V e c t ) ; a v a n z a r e s m á s s im p le : y a n o n e c e sita m o s m á s u n b u c le f o r . p u e s ta n p ro n to
24 p .a p i l a r ! a . r a í z > • c o m o e n la lin c a 17 se d csu p ila u n n o d o , é s te se c o n v ie n e e n e l n o d o actual. E n este
25
m o m e n to a p ila m o s e l h ijo d e re c h o y d e sp u é s e l iz q u ie rd o , c u a n d o u n o u o tro ex ista.
26
27 ic void prim ero! 1
28
29 p. vaciar I )
30 i f l a . r a i z != n u i l j
17.4.4 Recorrido por niveles
31 p . a p i l a r ! a . r a í z >;
32 try C o n c lu im o s im p lc m e n la n d o e l re c o r r id o p o r n iv e le s. E ste re c o rrid o p ro c e s a los
33 1 avanzar( ) ; ) n o d o s c o m e n z a n d o e n la ra íz y a v a n z a n d o d e fo rm a d e s c e n d e n te y d e iz q u ie rd a a
34 C atchl ElementoNoEncontrado o ) l ) // Arbol vacio
35 d ere c h a . F l n o m b re s e d e riv a d e l h e c h o d e q u e p rim e ro v is ita m o s lo s n o d o s del
36 n iv e l 0 ( l a ra íz ), d e s p u é s lo s d e l n iv e l I (lo s h ijo s d e la ra íz ), lo s d e l n iv el 2 (los
37 p u b lic v o id a v an z a r! 1 throw s ElementoNoEncontrado n ie to s d e la ra íz ), y a s í s u c e s iv a m e n te , ll n re c o rrid o p o r n iv e le s s e im p le m e n ta
38 ( / • F ig u ra 17.30 •/ }
39 u s a n d o u n a c o la e n lu g a r d e u n a p ila . 1.a c o la a lm a c e n a lo s n o d o s q u e v a n a se r
40 private Pila p ; / / p U a de o b je to s NodoBm ario v is ita d o s. C u a n d o se v isita u n n o d o , s e c o lo c a n su s h ijo s a l fin al d e la c o la , d o n d e
41 se rá n v isita d o s d e s p u é s d e lo s n o d o s q u e y a e s tá n e n la c o la . E s fá c il v e r q u e e s to
g a ra n tiz a q u e lo s n o d o s s e v is ita n p o r n iv e le s. L a c la s e P o r N i v o l e s s e m u estra
Figu ro 17.29 C ia s e P r e O r d e n c o n t o d o s to s m e t o r t n s eixc.fintn
e n la s F ig u ra s 17.31 y 17.3 2 y se a s e m e ja m u c h o a la c la s e P r e O r d e n . ü » ú n ic a s
d ife re n c ia s e s tn h a n e n q u e u sa m o s u n a c o la e n lu g a r d e u n a p ila y q u e a ñ a d im o s a 2 • A v a n z a l a p o s ic ió n a c t u a l a l s i g u ie n t e nodo en e l á r b o l.
la c o la e l h ijo iz q u ie rd o y lu e g o e l d e re c h o , e n lu g a r d e h a c e rlo a l rev é» . O b se rv e 3 « d o a c u e rd o co n e l •■quema d e r e c o r r id o p o r n iv e l e s .
q u e la c o la p u e d e se r m u y la rg a E n e l p e o r d e lo s c a s o s , lo d o s lo s n o d o s d e l ú lü - 4 • « e x c e p c ió n E le m e n to N o E n co n tra d o s i l a p o s ic ió n a c t u a l e s n u i l .
m o n iv e l (h a s ta N ¡ 2 ) p o d ría n e s ta r sim u ltá n e a m e n te e n la c o la
6 p u b li c v o id a v a n z a r ! I th ro w s E le m e n to N o E n co n tra d o
El re c o rrid o p o r n iv e le s im p le m e n ta u n a té c n ic a m á s g e n e ra l d e n o m in a d a b u s-
q u e d a e n a n c h u ra . E n la S e c c ió n 14 2 se p re s e n ta un e je m p lo d e u tiliz a c ió n d e e s ­
7 (
6 i f ! c .e s V a c la ! ) I
ta té c n ic a e n u n m a rc o m á s g e n e ra l.
9 (
10 i f ! a c t u a l -• n u i l I
,| th ro w new Elem en to N o En con trado ( *a v a n z a r d e P o r N iv e le s * ) :
1 package E structurasD atos; 12 a c tu a l » n u il;
2 13 re tu rn ;
3 im port E x ce p cio n e s.’ ; 14 )
4
15
5 II Clase PorN iveles; m antiene una 'p o s ic ió n a c t u a l ’ 16 try
6 II de a c u e rd o con un r e c o r r i d o por n l v e l e a 17 ( a c t u a l • I N o d o B in a r io ) c . q u it a r P r im e r o ! ); )
18 c a t c h ! D e s b o r d a m ie n t o ln íe r io r E I
8 // CONSTRUCCIÓN: c o n e l árbol al que e s t á ligado el iterador 19 t r e t u r n ; ) I I No pu ede s u c e d e r
20
I® 1 1 ................................................... OPERACIONES PÚBLICAS.................................................... 21 i f ! a c t u a l . i z q u i e r d o I» n u i l )
11 ll b o o l e a n « « V a l i d o l ) - - > T r u e e n una p o s i c i ó n v á l i d a d o l á r b o l 22 c . i n s e r t a r ! a c t u a l . iz q u ie r d o ) ;
12 // O b je c t r e c u p e r a r ( ) --> Devuelve e le m e n to en p o s i c i ó n a c t u a l 23 i f ! a c t u a l.d e r e c h o !• n u i l )
13 // void primero! ) - - > C o l o c a p o s i c i ó n a c t u a l o n p r i m e r nodo 24 c . i n s e r t a r ! a c t u a l.d e r e c h o I;
14 // void avanzarI ) - - > Avanza a l a s i g u i e n t e p o s i c i ó n 25 )
15 'I .................................................• • ERRORES*...................................................................................
16 H Excepciones lanzadas p o r a cc eso s o avances i l e g a le s Figuro 17.32 M é to d o a v a n z a r p a ra la clase iterad o ra P o r N i v e l e s

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

Figuro 17.34 P rogram a mcsteriaso p a ra ©i Ejercicio 17.3.


C A P Í T U L O _________________________________________________________

18 Árboles binarios
de búsqueda

P a ra e n tra d a s do g ran ta m a ñ o , e l a c c e s o e n tie m p o lin eal d e las listas e n la z a -


d a s e s p ro h ib itiv o . F.ste c a p itu lo e x a m in a u n a o p c ió n a lte rn a tiv a a la lista
e n la z a d a : e l á r b o l b in a r io d e b ú s q u e d a . F l á rb o l b in a rio d e b ú sq u e d a es
u n a e s tru c tu ra d e d a lo s se n c illa q u e p u e d e c o n s id e ra rs e c o m o u n a e x te n s ió n d e l
a lg o ritm o d e b ú sq u e d a b in a ria q u e p e rm ite ta n to in s e rc io n e s c o m o elim in a c io n e s.
E l tie m p o d e e je c u c ió n d e m u c h a s d e s u s o p e ra c io n e s e s . e n m e d ia . 0 < lo g N ).
D e sg ra c ia d a m e n te , su e fic ie n c ia e n e l c a s o p e o r e s ík .V ).
E n e s te c a p ítu lo s e re m o s :

• 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.

18.1 Id eas básicas

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

Figura 18 4 lo s árboles binarlos d e bú squeda ontos y después d e e«m lnar e l 2 (q u e


Figura 18.2 lo s árboles binarlos d e búsqueda ante s y después d e Insertar e l 6 tom a das hilos).
in icial y e l re s u lta d o tra s e lim in a r e l n o d o 2 . S u stitu im o s d ic h o n o d o p o r e l n o d o c o n tie n e la lis ta u su a l d e a trib u to s (e l d a to y d o s re fe re n c ia s ), m á s lo s atrib u to s
d e m e n o r v a lo r (3 ) d e su s u h á rh o l d e re c h o . N ó te se q u e e n c u a lq u ie ra d e lo s c a so s , a d ic io n a le s e m p le a d o s m ás la rd e . S e p e rm ite n v a ria s fo rm a s fiara la c o n stru c c ió n
la e lim in a c ió n d e u n n o d o n o in c re m e n ta la p ro fu n d id a d d e l árbol. d e u n n o do .
Im la s F ig u ra s 18.6 y IS .7 s e m u e s tra e l e s q u e le to d e ia c la s e A r b o l B i n a -
r i o B u s q u e d a . El p rin c ip a l a trib u lo e s u n a re fe re n c ia a la r a í / d e l á rb o l, llam ad a

18.1.2 Im plem entación en Ja v a r a iz .

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 ;

p e z ar. la F ig u ra 18.5 m u e s tra la c la s e N o d o B i n a r j o . C o m o e s u su a l, e l a c c e s o a 4 im p o r t E x c e p c i o n e s . * ;

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

c o m p le jo s, q u e se rá n d isc u tid o s m á s tard e e n este ca p ítu lo . P o r ta n to , d ic h o s a trib u ­ 9 //


)Q i¡ .......................... • O P E R A C IO N E S P U B L I C A S " * * * * * * * * '
tos a d ic io n a le s no se e m p le a n e n las im p le m e n ta c io n e s d e e s ta secc ió n . U n a o p c ió n
11 // v o i d i n s e r t a r I x ) --> I n s e r t a x
sería o m itirlo s d e m o m e n to y e m p le a r p o ste rio rm e n te la h e re n c ia , p e ro e s to o s c u r e ­ 12 / / v o i d e l i m i n a n x ) - - > E l i m i n a x
c e d e m a s ia d o lo s c o n c e p to s b á s ic o s , F.n c o n s e c u e n c ia , la c la s e N o d o B i n a r i o 13 / / v o i d e l i m i n a r K i n ( ) - - > E l i m i n a e l m e n o r e le m e n t o

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

5 Nodo b á s i c o a l m a c e n a d o e n t o d o s l o s á r b o l e s b i n a r i o s d e b ú s q u e d a . 2 0 /i ......................... E R R O R E S ... ............................................................................


6 i n c l u y o l o * entupo* p a r a t o d a o l a s v a r l o c i o n e s . 21 / / M u c h a » r u t i n a s la n z a n B lc m a n t o N o B n c o n t r a d o e n c o n d i c i o n e » d e g e n e r a d

7 / / E s t a c l a s e n c e s a c c e s i b l e Cuera d e l 22 / / 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 está e n e l árbol


6 paquete E structurasD atos. 23
9 24 r
10 c l a s s NodoBinario 25 * Im plem enta un á r b o l b i n a r i o de bú squeda s i n e q u i l i b r a r .
11 26 * N ó t . e a » q u e t o d a s l a n c o m p a r a c l o n e n « o b a t í a n e n «-1 m ó t o d o c o m p a r a .
12 // C onstructores 27 •/
13 N o d o B i n a r io ! C om p ara b le o'.Doto ) 28 public class A rbolBinarioBusqueda im plem ente Arbol Búsqueda
14 29 l
15 thi5l elD ato. nuil, nuil ); 30 p u b lic A rbolB inarioB usqueda( )
16 31 {r a i z • n u il; )
17 32
18 ioH.n.u : . : i: . o e l D a t o . N o d o B l n a r i o 1 1 . N o d o B l n a t l< 33 p u b l ic v o id i n n e r t a r ! Com parable x ) th ro w s E lem entoD uplicado
19 34 | r a i z = i n s e r t a r ! x. r a i z ) ; I
20 dato = e l Dato; 35 p ubl i c v o i d e l im in a r ( C om parable x ) th ro w s E lem entoN oEncontrado
21 Izquierdo ■ 11; 36 { r a i z • e l i m i n a r ! x . r a i s >; I
22 derecho = id; 37 p u b lic v o id elim inarM inl I throw s E lem entoN oEncontrado
23 38 ( r a í z - elim inaiM in! r a í z ): )
24 39 p u b l i c C om parable buscarM in! ) th ro w s Elem entoN oEncontiado
40 ( r e t u r n buscarM in! r a í z ) .d a to ; )
25 / / A t r i b u t o s a m is to s o s ; a c c e s i b l e s por o t ron r u t i n a s d e l p a q u ete
41 p u b l i c C om parable búacarM ax! ) throw s ElemontoN oEncontrado
26 Comparable d a to ; / / La i n f o r m a c i ó n d e l nado
42 ! r e t u r n buscarM axt r a i z 1 .d a to ; )
27 NodcBinario iz q u ie rd o ; / / Hijo izquierdo
43 p u b l 1c C o m p a r a b l e b u n c a r ( C o m p a r a b l e x ) t h r o w s E letnen to N o ti
28 N a d o ü in a rlo d e re c h o ; / / H ijo d e r e c h o
29 44 l return buscar! x, ra iz ) .dato; )
45 p u b lic boolean esV acio( )
30 H Jnfonrwición d o e q u i l i b r i o ; *o ampien u n a e n c a d a t i p o d e á r b o l
46 ( roturn r a í z «* n u i l ; )
81 int tam anyo = 1; / / Para a rb o le s b in a r io s de búsqueda con rango
47 p u b lic void v acia r! I
32 int Color = 1; //P a r a árb o les rojinegros
48 J r o i * • nu 11; 1
33 Int nivel = 1; / / P a r a AA-árboles
34 ) 49 p u b lic v o id im prim írA tbol! )
50 {im prim írA rbol! r a íz ); 1

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

• Método i n t e r n o p a r a b u s c a r e l mayor e l e m e n t o d e un s u b á r b o l . tie n e h ijo iz q u ie rd o , e lim in a m o s d e fo rm a rc e u rsiv u e l m e n o r e le m e n to d e l s u b á r­


‘ Oparam t l a r a í z d e l s u b á r b o l . bo l iz q u ie rd o , p o r m e d io d e la lla m a d a re c u rs iv a d e l a lín e a 13. S i a lc a n z a m o s la ^
• Q r e tu rn e l nodo que c o n ti e n e e l mayor e le m en to . línea 14. s a b e m o s q u e e n e s e m o m e n to e s ta m o s situ a d o s so b re e l m e n o r n o d o d e l su
• P 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 .
•I á rb o l. E s to s ig n ific a , e n p a rtic u la r, q u e t e s la r a íz d e un s u b á rb o l q u e n o tie n e m
p r o t e c t e d NodoBinario h ijo iz q u ie rd o . S i h a c e m o s q u e t s e a ig u al a t . d e r e c h o e n to n c e s t e s a h o ra la o í

buacarMax( NodoBinario t l throwu EiementoNoEncontrado raíz d e u n s u b á rb o l q u e h a p e rd id o su m e n o r e le m e n to . E s to e s lo q u e h a c e m o s en


( la lín e a 15. C o m o a n te s , d e b e m o s d e v o lv e r la raíz, d e l á rb o l re s u lta n te . P e ro , ¿al
ifl t =: nuil > h a c e rlo n o d e sc o n e c ta m o s e l á rb o l? D e n u e v o , la re s p u e s ta e s n o . S i t e ra i o í r ­
t h r o w new E l e m e n t o N o E n c o n t i a d o I " b u a c a r M a x d e A r b o l B ú s q u e d a " ) se d e v u e lv e e l n u e v o t . q u e s e a s ig n a a r a i z e n e l m é to d o p ú b lic o , y e l p ro c e so
w h l l e l t . d e r e c h o !« n u i l ) es se g u ro . S i t n o e r a r a í z en to n c e * e s p . I z q u i e r d o , d o n d e p e s e l p a d re d e i
t = t.derecho; e n e l m o m e n to d e la lla m a d a re c u rsiv a . E l m é to d o q u e tie n e a p c o m o su p a rá m e ­
return t; tr o (e n o tr a s p a la b ra s , e l m é to d o q u e h iz o la lla m a d a a l m é to d o a c tu a l) c a m b ia
p . i z q u i e r d o a l n u e v o t . A sí. e l h ijo i z q u i e r d o d e l p a d re a p u n ta a t . y e l árbol
q u e d a c o n e c ta d o . L o q u e h e m o s h e c h o e s m a n te n e r e l p a d re e n la p ila d e la re c u r­
uro 18.9 b u s c a r M i n y b u a c a r M a x d e los á rb o le s binados d e búsqueda
sió n e n lu g a r d e c o n tr o la r lo e x p líc ita m e n te e n u n b u c le ite rativ o .
l i n a v e z e m p le a d o o t e tru c o e n e l c a s o m á s se n c illo , p o d e m o s a d a p ta rlo para
la ru tin a g e n e ra l e l i m i n a r . E s to se m u e s tra e n la F ig u ra 18.12. S i e l á rb o l e s v a ­
’ Método i n t e r n o p a r a i n s e r t a r en un s u b á r b o l .
• Op a : a r o x e l e l e m e n t o a i n s e r t a r . c ío . e l m é lo d o e l i m i n a r fu lla, la n z á n d o s e u n a e x c e p c ió n e n la lín e a 13. F.n caso
' Spararo t l a r a í z d e l s u b á r b o l .
• í r e t u r n la nueva r a í z .
• B except ion ElementoDupl íc a d o s i e l e le m e n to que a j u s t a 1
2 • M é to d o i n t e r n o p a r a e l i m i n a r e l m e n o r e le m e n t o de u n s u b á r b o L .
con x ya e s t á e n e l s u b á r b o l d e r a í z t .
•f 3 • « p a r o m t l a r a í z d e l n u b á r b o l .

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 .

i n u o r t a r l Comparable x. N odoB inario t I throw n EiementoDupl Icado 5 • B excepti o n E ie m e n t o N o E n c o n t r a d o si e l s u b á r b o l e s t a v a c i o .

{ 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

6 H C i a a t i AhBCo nRa ng o 6 ‘ l o mayor qao e l t a m a ñ o d e l « u b á r b o l .

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

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 í " • U m i n a r M i n d e ABBR" (: lla m a d a re c u rs iv a fa lla , t a m a n y o p e rm a n e c e in v a ria n te , e l i m i n a r e s p a re c id o , y


13 i f i t . i z q u i e r d o *= n u i l » se m u e s tra e n la F ig u ra 18.18.
14 re tu rn t.derecho;
15 t . i z q u i e r d o ■e l i m i n a r M l n ( t . i z q u i e r d o )¡
16
17 t . tam anyo--; 18.3 Análisis d e las o p eracio n es d e los árboles
18 return t;
19 ) binarios d e búsqueda
Figura 18.17 O p e ra ció n e l i m i n a r M i n d e l o s órboles binarios d e bú squeda con
E s fác il c o m p r o b a r q u e e l c o s te d e c a d a o p e ra c ió n d e lo s á rb o le s b in a r io s d e b ú s ­
b ú squeda por posición.
q u e d a ( i n s e r t a r , b u s c a r y e l i m i n a r » e s p ro p o rc io n a l a l n ú m e ro d e nod o s
c o n su lta d o s d u ra n te la o p e ra c ió n . A si. p o d e m o s c o n s id e ra r q u e e l c o s te d e l a c c e so
a c a d a n o d o e s I m á s su p ro fu n d id a d (re c o rd a m o s q u e l a p ro fu n d id a d m id e e l n ú ­
1 /•• m e ro d e a rc o s e n lu g a r del n ú m e ro d e n o d o s). T o d o e s to n o s d a e l c o s te d e u n a
2 • Método i n t e r n o p a r a e l i m i n a r d e u n s u b á r b o l . a j u s t a n d o b ú s q u e d a c o n éx ito .
3 e l tamaf.o d e l o s n o d o » c u a n d o c o r r e s p o n d a . L a F ig u ra 18.19 m u e s tra d o s á rb o le s. E l d e la iz q u ie rd a e s u n á rb o l b ie n e q u ili­
4 • «paran x e l elem ento a e lim in a r.
b ra d o c o n 15 nodos. E l co ste d e a c c e d e r a c u a lq u ie r n o d o e s d e a lo su m o . 4 u n id a ­
5 * «paran c la r a íz d el subárbol.
6 • « re tu rn la nueva ra íz . d e s. au n q u e a lg u n o s n o d o s re q u ie re n m e n o s acceso s. E s to e s p rá c tic a m e n te an álo g o
7 • « e x c e p t i o n Elem er.toN oEncontrado s i no h a y n i n g ú n e l e m e n t o a la situ a c ió n q u e se p ro d u ce e n e l a lg o ritm o d e b ú sq u e d a b in a n a . E n c o n se c u e n c ia ,
8 • que a ju s te con x en el subárbol de ra íz t. si e l árbol e s tá b ie n e q u ilib ra d o , e l c o s te d e lo s a c c e so s e s lo garítm ico.
9 •/ D e sa fo rtu n a d a m e n te , n o te n e m o s la g a ra n tía d e q u e to d o e l á rb o l e s té bien
10 p r o t e c te d 'iodoBinario e q u ilib ra d o . E l se g u n d o á rb o l d e la F ig u ra 18.19 e s e l e je m p lo c lá s ic o d e á rb o l no
H e l i m i n a r ( Comparable x . NodoBir.ario t > th ro w s ElereentoNoEncontrado
e q u ilib ra d o . A q u í, lo s N n o d o s e s tá n e n e l c a m in o a r e c o r re r h a s ta lleg ar al n o d o
13 ií( t == n u i l ) d e m a y o r p ro fu n d id a d , d e fo rm a q u e e l c o s te d e la b ú sq u e d a e n e l p e o r d e los
14 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 " e l i m i n a r d e ABBR* ) ; c a s o s e s O ( N ) . D e b id o a q u e e l á rb o l d e b ú s q u e d a h a d e g e n e ra d o e n u n a lista
10 i í l x.com para( t .d a t o I < 0 I
16 t . iz q u ie rd o = e lim in a r ! x. t . iz q u ie rd o ».-
17 e ls e if< x .com para( t . d a t o J > 0 )
t . d e r e c h o = e l i m i n a r ! x, t . d e r e c h o );
19 e l s e i f ( t . i z q u i e r d o • • n u i l l l t . d e r e c h o ! - n u i l | / / Do s h i j o s
20

21 t . d a t o ■ buscarM in! t.d e r e c h o J .d a to ;


22 t.d e rec h o = elim ínarM m ! t.d e rec h o ) ;
23
24 else
25 re tu rn ( t . izquierdo != n u ll ) ? t . izquierdo : t.d erech o ;
26 t.tam anyo--;
27 return t;
28 )

Figuro 18.19 El órDol b*en equilibroOo d e lo izquierda tiene u n a profund idad d e


Figura 18.18 O p e ra ció n e l i m i n a r d e los árb oles binarios d e bú squeda c o n bus [lo g N j; e l á rb o l n o oquilibrodo d e la d e re c h a tiene u n a p rofuntfdad
q u e d a por posición,
de N - 1.
e n lu /a d u . e l tie m p o m e d io d e la b ú s q u e d a e n e s ta in s ta n c ia p a r ta a la r e s la n u -
lu í lo n g itu d d e l c a n tillo m ie n to d e u n á r b o l b in a r io d e b ú sq u e d a e s . a p r o ­
lu d d e l c o s te e n e l c a s o p e o r, q u e ta m b ié n e s Í 7 ( \ ) A sí. s e tie n e n d o s e x tre m o s:
x im a d a m e n te e n m e d ia . 1.38/V log V. a v i n i e n d o q u e to d a s lo s p e r m u ta d o
e n e l c u s í » m e jo r, e l c o s te d e lo s a c c e s o s es lo g a r ítm ic o . y en e l c a s o p e o r es
lin eal. n e s so n e q u ip ro b a h le s.

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 .

18.4 Árboles AVL

El p rim e r tip o d e á rb o l b in a rio ¡le b ú sq u e d a b ie n e q u ilib ra d o fu e e l á r b o l A V I. (d e ­


b e su n o m b re u sus a u to re s A d e lso n -V e lsk ii y L a n d is ). L o s á rb o le s A V L ilu stra n Figura 18.21 Dos ato ó les bínanos d e b u sao ed o e l árb ol d e la izquierda e s un Orbe*
la s id e a s b ásica* ¡le u n a a m p lia c la s e d e á rb o le s b in a rio s d e b ú sq u e d a b ie n e q u ili­ A V L m ientras q u e e l d o »a d e re c h a n o lo e s (los nodos n o equilibrados
b ra d o s. Se tra ta n d e á rb o le s b in a rio s d e b ú s q u e d a c o n u n a c o n d ic ió n a d ic io n a l de a p a re c e n e n un tono m as oscuro).
su c e d e e n m u c h o s d e lo s a lg o ritm o s d e lo s á rb o le s d e b ú sq u e d a e q u ilib ra d o s A l ir
U n á r b td A V L d e a ltu r a I I tie n e p o r lo m e n o s l f l i _, - I m u lo s, d o n d e I',
re c o rrie n d o e l c a m in o h a c ia la r a í / y a c tu a liz a n d o la in fo rm a c ió n d e l eq u ilib rio ,
e s e l i-é sim o n ú m e ro d e F ib o n a c c i I v é a se la S e n io n 7 .J .4 I.
p o d e m o s e n c o n tra r u n n o d o c u y o n u e v o e q u ilib rio in c u m p la la c o n d ic ió n A V L .
S e a S h e l ta m a ñ o d e l m e n o r á r b o l A V I . d e a lta r a I I C la ra m e n te S„ = I y E sta s e c c ió n m u e s tra c ó m o re c u p e ra r e l e q u ilib rio d e l á rb o l d e sd e e l p rim e r n o d o
S | = 2. L a / i g u r a IX. 2 2 m a e str a i/a e e l m e n o r a r b o ! A V L d e a lta ra I I d e ­ (e s d e c ir, e l m á s p ro fu n d o ) q u e in c u m p le la c o n d ic ió n A V L . d e m o s tra n d o q u e el
b e te n e r su b á r b o le s d e ta m a ñ o H - I v H - 2 . E s to e s d e b id o a q u e a l m e c a n ism o p ro p u e s to g a ra n tiz a q u e e l á rb o l c o m p le to o b te n id o sa tisfa c e la p ro ­
m e n o s u n s u b á r b o l tie n e a lta r a I I - I y la c o n d ic ió n d e e q u ilib r io im p lic a p ie d a d A V L .
q u e la s a lta r a s d e lo s su b á r b o le s p u e d e n d ife r ir a lo s u m o e n a n a a n id a d . S u p o n g a m o s q u e e l n o d o c u y o e q u ilib r io d e b e m o s a ju s ta r e s .V. C o m o c u a l­
D ic h o s su b a rin d es d e b e n te n e r e l m e n o r n ú m e ro d e n o d o s p o s ib le p a r a su q u ie r n o d o tie n e a lo s u m o d o s h ijo s , y la d ife re n c ia d e las p ro fu n d id a d e s d e los
a lta r a , lu e g o S f / = S n , + S „ ¡ + I . F s s e n c illo c o m p le ta r la d e m o s tr a ­ su b á rb o le s d e X e s 2. e l in c u m p lim ie n to d e la p ro p ie d a d p u e d e d a rs e e n u n o d e los
c ió n e m p le a n d o in d u c c ió n . c u a tr o c a s o s sig u ie n te s:

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 .

Figuro 18.23 R otación sim ple p o ra tratar e l c a s o 1

P a ra ic c q u i lib ra r d e tu r m a c o rre c ta e l á rb o l, q u e re m o s s u b i r á un n iv e l v b aja r


( oto» ta n to . N ó te se q u e d e h e c h o e s to e s a lg o m á s d e li> q u e re q u ie re la p ro p ie d a d
A V L . P a ra h a c e rlo , d e b e m o s re o rg a n iz a r lo s n o d o s e n u n á rb o l d e b ú s q u e d a e q u i­
v a le n te . tal y c o m o se m u e s tra e n la F ig u ra 18.23. I .lie» q u e d a ilu stra d o p o r e l si­
g u ie n te ra z o n a m ie n to a b s tra c to : c o n s id e ra m o s e l á rb o l c o m o u n a e s tru c tu r a tle x i-
b le . p o n e m o s un p e s o e n e l n o d o A>. c e rn im o s lo s o jo s , y d e ja m o s q u e a c lú c la
g ra v e d a d le c q u ilib ra n d o la b a la n /a . E l re s u lta d o e s q u e A, s e rá la n u e v a raíz.
I j p ro p ie d a d d e lo s á rb o le s b in a rio s d e b ú sq u e d a in d ic a q u e e n e l á rb o l in ic ia l.
k2 > k a s í q u e e n e l n u e v o á rb o l k 2 s e c o n v ie rte e n e l h ijo d e re c h o d e A ,. A y C Figuro 18.25 La ro tació n simple a rreg la et arpo! A V L tras la inserción a e I
c o n tin ú a n c o m o h ijo iz q u ie rd o d e A, e h ijo d e re c h o d e A*, re s p e c tiv a m e n te . F l su-
b árb ol If. q u e c o n tie n e lo s e le m e n to s e n tr e A, y A: . p u e d e c o lo c a rs e e n e l n u ev o
á rb o l c o m o h ijo iz q u ie rd o d e A>. sa tisfa c ié n d o s e a s í to d o s lo s re q u e rim ie n to s d e la
o rd en ació n .
P a ra h a c e r to d o e s to s ó lo s e p re c is a n lo s c a m b io s d e la s re fe re n c ia s d e lo s h i­
jo s m o s tra d o s e n la F ig u ra 18.24. q u e p ro d u c e n u n n u e v o á rb o l b u ta n o q u e a h o ra
es u n A V L F s to e s d e b id o a q u e A s u b e u n n iv e l. H p e rm a n e c e e n e l m is m o y (*
d e sc ie n d e u n n iv e l. A) y k 2 n o s ó lo s a tis f a c e n la p ro p ie d a d A V L . s in o q u e a d e m á s
m is su b á rb o lc s so n d e la m is m a a ltu ra . M á s a ú n . la n u e v a a ltu ra d e l s u b á rb o l c o m ­
p le to e s e x a c ta m e n te la m is m a q u e la a ltu ra d e l s u b á rb o l p re v io a la in s e rc ió n , q u e
h a p ro v o c a d o e l c re c im ie n to d e A . A sí. n o e s n e c e sa rio re a liz a r n in g u n a a c tu a liz a ­
c ió n m a s d e las a ltu ra s d e lo s n o d o s q u e s e e n c u e n tra n e n e l c a m in o h a c ia la ra íz ,
y c o m o c o n s e c u e n c ia , n o se n e c e s ita n m á s ro ta c io n e s. E sta ro ta c ió n sim p le se uti-

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.

Figuro 18.30 La ro tació n d o b le a rreg la et árb ol AVL tras la inserción d e 5.

Figuro 18.31 R o tació n d o b le izquierda-derecha p o ra arreg lar e l ca so 3.

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

U n a a lte rn a tiv a h is tó ric a m e n te p o p u la r a lo s á rb o le s A V L so n lo s á r b o le s m jin e -


uro.s. A l ig u al q u e e n lo s á rb o le s A V L . la s o p e ra c io n e s so b re lo s á rb o le s ro jin e ­
g ro s so n lo g a rítm ic a s e n e l c a s o p eo r. L a p rin c ip a l v e n ta ja d e lo s á rb o le s ro jin e ­
g ro s e s q u e las ru tin a s d e in s e rc ió n y d e e lim in a c ió n p u e d e n e fe c tu a rs e c o n un
ú n ic o re c o rrid o d e s c e n d e n te E s to c o n tra s ta c o n lo s á rb o le s \ V L . e n lo s q u e e s n e ­
c e s a r io u n re c o rrid o d e s c e n d e n te p a ra e sta b le c e r e l lu g a r d e la in s e rc ió n y o tro re ­
c o rrid o a s c e n d e n te p a ra a c tu a liz a r la s a ltu ra s d e los n o d o s y . p o s ib le m e n te , aju sta r
su e q u ilib rio . C o m o re su lta d o , u n a c u id a d o s a im p le m e n ta c ió n n o re c u rs iv a d e los
á rb o le s ro jin e g ro s e s m ás sim p le y e fic ie n te q u e u n a im p le m e n ta c ió n d e lo s á r b o ­
le s A V L .
L n á rb o l ro jin e g ro e s u n á rb o l b in a rio d e b ú sq u e d a q u e v e rific a la s sig u ie n te s
Figuro 18 34 fcjemplo do órtxX rojinegro k i se c u e n cia d o resorciones e s 10. 85. 15.
p ro p ie d a d e s d e o rd e n :
70. ? 0 .00 3 0 .5 0 . 6 5 .8 0 .9 0 .4 0 .5 y 55. Los nod os som breados son rojos.
E s to s c a p lic a ría e n la in s e rc ió n d e 3 u 8 . pon» n o e n la in s e rc ió n d e 9 9 . S e a X la
n u e v a h o ja a ñ a d id a . / ’ su p a d re . 5 e l h e rm a n o d e l p a d re (si e x is (e ) y ( ¡ e l a h u c io .
L:n e s te c a s o s ó lo X y / ’ s o n ro jo s . G e s n e g ro y a q u e e n c a s o c o n tr a rio a n te s d e la
in s e rc ió n e x is tiría n d o s n o d o s ro jo s c o n s e c u tiv o s — u n in c u m p lim ie n to d e la p ro ­
p ie d a d ' — . A d o p ta n d o la te rm in o lo g ía d e lo s a rb o le s A V L . d e c im o s q u e re sp e c to
a Í7. .V e s u n n o d o e x te r io r o in te rio r. S i .V e s u n n ie to e x te rio r, la p ro p ie d a d 3 se
re c u p e ra m e d ia n te u n a ro ta c ió n s im p le e n tre su p a d re y su a b u e lo , c o n a lg u n o s
c a m b io s d e c o lo r . S i A' e s u n n ie to in te rio r, e s s u fic ie n te u n a ro ta c ió n d o b le y a lg u ­
n o s c a m b io s d e c o lo r. L a ro ta c ió n s im p le se m u e s tra e n la F ig u ra 18.35 y la d o b le Figura 18.37 Si S es rojo, uno ro tación sim ple entre e i p a d re y e l ab u elo . Junto a los
e n la F ig u ra 18.36. A u n q u e .Y e s u n a h o ja , h e m o s ilustrad»» u n c a s o m¿ís g e n e ra l, cam b io s d e color ap rop iad os, re stab le ce la te rce ra p ro p ie d a d entre
q u e p e rm ite q u e A' e s té e n m e d io d e l á rb o l. lis ta ro ta c ió n m i s g e n e ra l s e rá e m p le a ­ X yP
d a m á s ta rd e , e n e s te m is m o c a p ítu lo .
A n te s d e c o n tin u a r, o b se rv e m o s p o r q u é e s ta s ro ta c io n e s s o n c o rre c ta s. N e c e ­
fá c il c o m p ro b a r q u e e n e s te c a s o d e b e h a b e r tre s n o d o s e n lo s c a m in o s h a s ta I ) y
sita m o s a se g u ra r q u e n o e x is te n il«»s n o d o s ro jo s c o n se c u tiv o s. P o r e je m p lo , e n la
E . y m'»Io u n o d e e llo s p u e d e se r n e g ro . E s to n o s in d ic a q u e ta n to S c o m o la n u e v a
F ig u ra 18.36 e s fá c il v e r q u e la s ú n ic a s p o s ib le s in s ta n c ia s d e m *dos ro jo s c o n s e ­
r a í / d e l s u b á rb o l d e b e n s e r ro ja s . P o r e je m p lo e n la F ig u ra 18 .3 7 . s e m u e s tra el
c u tiv o s se e n c o n tra ría n e n tr e P y u n o d e su s h ijo s, o e n tre ( ¡ y C . S in e m b a r g o , las
c a s o d e la ro ta c ió n s im p le q u e s e p ro d u c e c u a n d o .Y e s u n n ie to e x te rio r. A u n q u e ,
ra íc e s d e A . H y C d e b e n s e r n e g ra s ; d e lo c o n tr a rio e n e l á rb o l d e p a rtid a s e in ­
e n e s te c a s o p a re c e fu n c io n a r, a p a re c e un p ro b le m a : ¿ q u é su c e d e si el p a d re d e la
c u m p liría la p ro p ie d a d 3. F.n e l á rb o l in ic ia l, e x is te u n ú n ic o n o d o n e g ro e n e l c a ­
r a í / d e l s u b a rh o l (e s d e c ir, e l b is a b u e lo in ic ia l d e A'» ta m b ié n e s ro jo ? P iu le m o s
m in o d e sd e la r a í / d e l á rb o l h a s ta A . H y C , y d o s n o d o s n e g ro s e n e l c a m in o desde-
filtra r este m e c a n ism o h a c ia a trá s, h a s ta q u e lle g u e m o s a la ra íz (q u e s e c o lo re a rá
la raí/, h a s ta l ) y E. E s fá c il c o m p r o b a r q u e é s te e s to d a v ía e l c a s o ilc sp u é s d e la
e n n e g ro ) o y a n o se te n g a n n o d o s ro jo s c o n s e c u tiv o s . P e ro e n to n c e s d e b e ría m o s
ro ta c ió n y la rec o lo ra c ió n .
re a liz a r u n re c o rrid o a s c e n d e n te h a c ia la r a í /, ig u a l q u e e n lo s á rb o le s A V L .
P ero , ¿ q u é su ced e si .V e s ro jo y se in te n ta in se rta r e l e le m e n to 7 9 e n e l á rb o l d e
la F ig u ra 18.347 E n to n c e s n o fu n c io n a n n i la ro ta c ió n s im p le n i la ro ta c ió n d o b le,
y a q u e a m b a s in c lu y e n e n s u s re s u lta d o s n o d o s ro jo s c o n se c u tiv o s. IX* h e c h o , es
18.5.2 Árboles rojinegros descendentes

P a ra e v ita r la e v e n tu a l n e c e sid a d d e te n e r q u e h a c e r un d o b le re c o rrid o d e l á rb o l,


a p lic a m o s u n p ro c e d im ie n to d e s c e n d e n te m ie n tra s se b u sc a e l p u n to d e in serció n .
M ás c o n c re ta m e n te , s e g a r u n li/a q u e c u a n d o lle g a m o s a u n a h o ja e in s e rta m o s un
n o d o . 5 n o será to jo . E n to n c e s b asta c o n a ñ a d ir u n a h o ja ro ja y . si e> n e c e sa rio ,
e m p le a r u n a s o la ro ta c u m (s im p le o d o b le ). E l p ro c e s o e s c o n c c p tu a lm c n lc s e n ­
c illo .
E n e l re c o rrid o h a c ia a b a jo , c u a n d o s e e n c u e n tra u n n o d o .Y c o n d o s lu jo s r o ­
jo s . c o n v e rtim o s Y e n ro jo y sus d o s h ijo s e n n e g ro . L a F ig u ra 18.38 m u e s tra este
Figuro 18.35 SI S e s neg ro y X e s un m oto externo, lo p ro p ied a d 3 se re cu p e ra co n c a m b io d e c o lo r. L s s e n c illo c o m p r o b a r q u e e l n ú m e ro d e n o d o s n e g ro s e n lo s ca
u n a ro to o ó n sim ple en tre su p a d re y su a b u e lo c o n (os cam b io s a d e m in o s p o r d e b a jo d e A' p e rm a n e c e in v a ria n te . S in e m b a rg o , si e l p a d re d e X e s ro ­
c u a d o s d e color j o , in tro d u c im o s d o s n o d o s re jo s c o n se c u tiv o s. P e ro e n e s te cas»», p o d e m o s re a li­
z a r la ro ta c ió n s im p le d e la F ig u ra 18.35 o la ro ta c ió n d o b le d e la F ig u ra 18.36.
A h o ra b ie n , ¿ q u é su c e d e ría si e l h e rm a n o d e l p a d re d e .Y fu e se ta m b ié n ro jo ? En
re a lid a d , e s to n o p u e d e su ced er. S i e n e l c a m in o h a c ia la s h o ja s e n c o n tra m o s un
n o d o > c o n d o s h ijo s r e jo s , sa b e m o s q u e lo s n ie to s d e ) d e b e n se r n e g ro s. Y c o m o
lo s h ijo s d e Y se c o lo re a n e n n e g ro , in c lu so d e s p u é s d e la ro ta c ió n q u e p u e d e pro-

Figura 18.36 SI S e s negro y X e s un nieto interior, una ro tació n d o b le e n la q u e


In tervengan X. su p ad re y su ab u elo , junto a los cam b io s d e color Flgura 18.38 de color;
C a m b io &ó*o si el padre d e X os rojo se co ntinua e l proceso
ap rop iad os, solucionara e l incum plim iento d e la te rce ra n ro n ie d ad ron iinn rntnrmn
d u c irsc . n o e n c o n tra re m o s o tro n o d o ro jo e n d o s n iv e le s A si. c u a n d o lle g a m o s a
A', si e l p a d re d e A' e s ro jo e n to n c e s n o e s p o sib le q u e e l h e rm a n o d e l p u d re d e Y
se a ro jo tam b ién .
C o m o e je m p lo , s u p o n g a m o s q u e d e s e a m o s in s e r ta r 4 5 e n e l á r b o l d e la F ig u ­
ra 18.34. L n e l c a m in o h a c ia la s h o ja s d e l á rb o l, e n c o n tr a m o s e l n o d o 5 0 q u e tien e
d o s h ijo s ro jo s . E n to n c e s h a c e m o s un c a m b io d e c o lo r , c o lo r e a n d o 5 0 e n ro jo , y
4 0 y 55 e n n e g ro . El re s u lta d o se m u e s tra e n la F ig u ra 1 8 .3 9 . S in e m b a rg o , a h o ra
5 0 y 6 0 so n ro jo s E n c o n s e c u e n c ia , h a c e m o s u n a ro ta c ió n s im p le ( y a q u e 5 0 e s un
n o d o e x te rio r) e n tr e 6 0 y 70. c o n v in ie n d o 6 0 e n la raíz n e g ra d e l s u b á rb o l d e re c h o
d e 3 0 y c o lo re a n d o 7 0 e n ro jo T o d o e s to s e m u e s tra e n la F ig u ra 18.40. E n to n c e s
c o n tin u a m o s e l p ro c e s o , re a liz a n d o lo s m is m o s c a m b io s si e n c o n tra m o s e n e l c a ­
Figura 18.41 inserción d e 45 co m o nod o rojo.
m in o o tr o s n o d o s c o n d o s h ijo s ro jo s. F n n u e stro e je m p lo n o hay n in g u n o m ás.
C u a n d o a lc a n z a m o s u n a h o ja , in s e rta m o s 45 c o m o u n n o d o ro jo , y c o m o e l p a ­
d re e s n e g ro , y a h e m o s te rm in a d o . E n la F ig u ra 18 41 se m u e s tra e l á rb o l q u e se v e n ta ja d e lo s á rb o le s ro jin e g ro s e s la s o b re c a rg a re la tiv a m e n te p e q u e ñ a q u e se
o b tie n e . S i e l p a d re h u b ie se s id o ro jo , h a b ría m o s n e c e sita d o h a c e r u n a ro ta c ió n . n e c e s ita p a ra re a liz a r u n a in s e rc ió n y e l h e c h o d e q u e . e n la p rá c tic a , las ro ta c io ­
T a l y c o m o m u e s tra la F ig u ra 1 8 .4 1. e l á rb o l ro jin e g ro q u e s e o b tie n e e s tá , p o r
n es so n b a sta n te in fre c u e n te s
lo g e n e ra l, m uy b ie n e q u ilib ra d o . L as d is tin ta s p ru e b a s su g ie re n q u e e l n ú m e ro d e
n o d o s c o n s u lta d o s e n u n a b ú sq u e d a d e u n á rb o l ro jin e g ro m e d io e s c a s i id é n tic o al
n ú m e ro d e n o d o s c o n s u lta d o s e n lo s á rb o le s A V L a u n q u e e s tá tic a m e n te la s p ío
p ie d a d e s d e e q u ilib rio d e lo s á rb o le s ro jin e g ro s s o n lig e ra m e n te m á s d é b ile s , l.a 18.5.3 Im plem entación en Ja v a

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 .

A c a u s a d e e s to s e le m e n to s , in c lu s o las o p e r a c io n e s b á s ic a s n e c e s ita n ser


Figura 18.39 El ca m b io cJe color ó e 50 supone uno incorrección, d e b id o a q u e és­ m o d ific a d a s . C o m o c o n s e c u e n c ia , n o tie n e s e n tid o e m p le a r la h e r e n c ia d e la c l a ­
to se p ro d u ce e n un nod o exterior, p a ra arreg larla b a sta u n a ro ta­
se A r b o l B i n a r ¿o B u s q u o -d a D e m o d o q u e . e s ta c la s e e s tá e s c r ita p a rtie n d o d e
ción simple.
c e ro . Su s e c c ió n p ú b lic a se m u e s tra e n la F ig u ra 18.42 y la s e c c ió n p riv a d a e n la
F ig u ra 18.43. R e c o rd a m o s q u e. p o r d e le c to , el c o n s im c to i d e N o d o B in a r l o inicia-
liza e l a trib u to c o l o r a I P o r ta n to . NEGRO d e b e s e r I. I.a s lin c a s 5 9 y 6 0 d ecla ran
lo s c e n tin e la s q u e h a n s id o e x p lic a d o s a n te rio rm e n te . E n la ru tin a i n s e r t a r se
e m p le a n c u a tr o re fe re n c ia s : a c t u a l , p a d r e , a b u e lo y b i s a b u e l o . S u d e c la ra ­
c ió n c o m o a trib u to s e stá tic o s (eii las lín e a s 6 6 a 6 9 ) in d ic a q u e s o n ese n c ia lm e n te
v a ria b le s g lo b a le s. E s to e s d e b id o a q u e . c o m o m o s tra re m o s m á s ta rd e , e s c o n v e ­
n ien te te n e rlo s c o m p a rtid o s |*or las m im a s i n s e r t a : y r e o r i e n t a c i o n . h l m é ­
to d o o l i m i n a r e s tá sin im p le m e n ta r.
E l r e s to d e r u tin a s s o n s i m i la r e s a lo s m é to d o s c o r r e s p o n d ie n te s de
A r b o l B i n a r i o B u s q u e d a . e x c e p to e n q u e s e tra ta n a d e c u a d a m e n te lo s n o d o s
c e n tin e las. E n c o n c re to , e l c o n stru c to r d e b e c o d ific a rse c o n e l v alo r / . > v a c ia r
y e s v a c i o , m o s tra d o s e n las lín e a s 4 5 a 4 8 . n e c e sita n e m p le a r n o d o N u lo «en lu­
Figura 18.40 Resultado d e lo rotoción sim ple quo arreg la e l íatto prod ucid o e n el
nod o 50 g a r d e n u l 1) y c a b e c e r a . d e r e c h o «en lu g ar d e la típ ic a r a í z ) .
p a c k a g e E fl t r u c t u t a n D a t o a ; 51 p r l v a t o v o id imprlm lrArboi» N odoB inario l i
52 ( /• Figura 18.45 */ >
im p o r t S o p o r t e . * : im p o r r S o p o r t o . C o m p a r a b l e ; 53 p r i v a t e v oid r e o ii e n f .a c i ó n ( Comparable ítem I
j m p o r t E x c e p c l o n e s . * ; 54 { • Figura 1 8 . 4 9 •/
55 p r i v a t e N o d o B in ario r o t a r » Com parable Item.
N odoBinario p a d re i
I / C l n u o A r b o I R o jo N e g r o

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 í :

• p r í v a t e NodoBinario 1. f tie n e d o s h ijo s n eg ro s: c a m b io d e c o lo r (F ig u ra 1 8 .5 1 ».


9 rotar! Comparable I te r a . N o d o B i n a r i o p a d r e | 2. / tie n e un h ijo e x te rio r ro jo : re a liz a r u n a ro ta c ió n sim p le (F ig u ra IX.52».
10 {
3. / tie n e u n h ijo in te rio r ro jo : re a liz a r u n a ro ta c ió n d o b le (F ig u ra 18.53».
J* lí( 1 1 oo.m e n o r fu e I p a d r e . d a t o l >
^ rerurri p adre, izq u ierd o = item .nenorgu© ! l i n a o b s e rv a c ió n d e te n id a d e la s ro ta c io n e s n o s c o n d u c e a la c o n c lu s ió n de
U p a d re .i z q u le rd o .dato I q u e m / tie n e d o s h ijo s ro jo s, ta n to u n a ro ta c ió n sim p le c o m o u n a ro ta c ió n d o b le
R o t a c i o n e s .cor.Hí j o í z q u i e r d o ( p a d r e . I z q u i e r d o i : fu n c io n a ría n c o rre c ta m e n te , d e fo rm a q u e e s m á s ló g ic o d e c a n ta rs e p o r la ro ta c ió n
JJ R°t«clor.e*.conHi joD erecho! p a d re, iz q u ie rd o i
10 else sim p le O b s e rv e q u e si X e s u n a h o ja e n to n c e s su s d o s h ijo s M * n n e g ro s, a s í que
|J return padre dexecho » i t e n . menorQue! sie m p re p o d e m o s e m p le a r a lg u n o d e e s to s tr e s m e c a n ism o s p a ra c o n s e g u ir q u e su
,o padre.derecho.dato » ? c o lo r s e a ro jo
y R otaciones.conH ijolrquierdo. padre.derecho i ¡
2| Rotaciones.conM lJoD erecho! p a d re .d e re c h o l

Figuro 18 50 R utina p o ra ream ar la rotoción a p e o p o d a

di.) m ie m n is descendem os ,x ., el árb o l, p asam os x c o m o p arám cim . C o m o se e s-


pem un num ero red ucid o de rotaciones a lo largo d e la inserción, h acerlo d e esle
m o d o es. adem ás d e sim p le, rápido.
c i r i n ^ m i e n r a c ‘ on , ! am il r o l " r cuan d o es necesario , para efectuar «mu rota­ Figuro 18.51 X lle n e do s hijos nogros cu yo s herm anos son tam btón negros: d e b o
c ió n sim p le o doble. C o m o una rotación d ob le n o es m ás q ue la co m b in a ció n «le m os hnr.of un rnrnbiO d e COlOí.
• X tie n e u n s«»l«» h ijo . S i é s te e s n e g ro , s e a p lic a e l c a s o p rin c ip a l y si e s ro jo ,
e lim in a m o s X . si e s n e c e s a rio , y c o lo re a m o s su h ijo e n n eg ro .

E n a lg u n a s « ic a sio u c s s e u tiliz a c o m o a lte r n a tiv a la e lim in a c ió n ¡ x r e ; o \ a . e n


la q u e lo s e le m e n to s e lim in a d o s s e m a re a n s im p le m e n te c o m o ta le s S in e m b a r ­
g o . c o n s u m e e s p a c io d e lo rm a in n e c e sa ria y c o m p lic a o tr a s ru tin a s <e r a s e e l E je r­
c ic io IK.24)

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 :

1. I.o s e n la c e s h o riz o n ta le s s«»n re fe re n c ia s d e la d o s d e re c h o s ( y a q u e sol**


lo s h ijo s d e re c h o s s«*n ro jo s).
Figuro 18 54 x e s n e g r o y a i m e n o s u n h*o suyo e s rojo si d e s c e n d e m o s a l sig u ie n te 2. N o e x iste n «l«*s e n la c e s h o riz o n ta le s c o n s e c u tiv o s (y a q u e n«» p u e d e n e x is ­
nivel y c o e m o s e n u n n o d o rojo, to d o o s tó b ie n o n c a s o c o n tro n o
tir «l«»s n o d o s ro jo s co n secu tiv o s» .
r© oteam os u n a r o ta c ió n e n tr e su p a d r e v u n h e rm a n o .
3. 1-**% n o d o * d e l n iv e l 2 , o su p e rio re s . d e b e n te n e r d o s hijos,
4. S i un n o d o n o tie n e u n e n la c e h o riz o n ta l d e re c h o e n to n c e s s u s d o s h ijo s
están a l m is m o nivel

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.

Figuro 16 57 r e p a r t o e s u n o ro to c ó n s*nple en tre X y R obsérvese q u e el rwei


de /? aumento
18.6.1 Inserción
m a s a l p o d re in icial d e X. a l c re a r un e n la c e h o riz o n ta l iz q u ie rd o o e n la c e s h o n -
L a in s e rc ió n d e u n n u e v o e le m e n to s ie m p re se h a c e e n e l n iv e l m á s b a jo . C o m o e s
z o n ta lc s d e r e c h o s c o n s e c u tiv o s : a m b o s p ro b le m a s p u e d e n s o lu c io n a rs e a p lic a n ­
h a b itu a l, e s to p u e d e c a u s a r p ro b le m a s. E n la F ig u ra 1 8 .5 5 la in s e rc ió n d e 2 p o d ría
d o la e s tr a te g ia q i r o / r e p a r t o e n e l c a m in o d e r e g r e s o a la ra íz , li s t o s e h ace
c re a r u n e n la c e h o riz o n ta l iz q u ie rd o , m ie n tra s q u e la in s e rc ió n «le 4 5 g e n e ra ría d o s
a u to m á tic a m e n te si se u s a re c u r s ió n . a s í q u e u n a im p le m e n ta c ió n r e c u r s o a d e
e n la c e s h o riz o n ta le s d e re c h o s c o n se c u tiv o s. C o m o c o n s e c u e n c ia , d e s p u é s d e in ­
i n s e r t a r e s s ó lo d o s lla m a d a s m á s la rg a q u e la c o rre s p o n d ie n te ru tin a d e lo s á r­
se rta r u n n o d o e n e l n iv e l m á s p ro fu n d o , p u e d e n n e c e sita rse a lg u n a s ro tu c io n c s p a ­
b o le s d e b ú s q u e d a n o e q u ilib ra d o s.
ra re s ta b le c e r las 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.
P a ra v e r e l a lg o r itm o e n a c c ió n , m o s tra m o s e l r e s u lta d o d e in s e rta r e l e le ­
F.n a m b o s c a so s, u n a ú n ic a ro ta c ió n sim p le a rre g la e l p ro b le m a E lim in a m o s los
m e n to 4 5 e n e l A A -á rb o l d e l a F ig u ra 18.55. E n la F ig u ra 18 5 8 . c u a n d o aflad im o s
e n la c e s h o riz o n ta le s iz q u ie rd o s h a c ie n d o u n a ro ta c ió n e n tre e l n o d o y su h ijo iz ­
4 5 e n e l ú ltim o n iv e l, s e fo rm a n d o s e n la c e s h o n /o n t a lc s c o n s e c u tiv o s . L o s pares
q u ie rd o y e lim in a m o s h*s e n la c e s h o riz o n ta le s d e re c h o s c o n se c u tiv o s re a liz a n d o una
g i r o / r e p a r t o se ap lican e n e l c a m in o d e v u e lta a la ra íz , siem p re q u e s e a ncccsa
ro ta c ió n en tre e l p rim e ro y e l seg u n d o d e li»s (tre s) n o d o s c o n e c ta d o s m e d ia n te los
rio . F ji p a rtic u la r, v n e cesita un r e p a r t o en e l n o d o 35 a c a u sa d e los e n la c e s h o ri­
d o s e n la c e s E s lm p ro c e d im ie n to s se lla m a n g i r o y r e p a r t o , re sp ec tiv a m en te .
zo n ta le s d e re c h o s c o n se c u tiv o s. El re su ltad o se m u e s tra e n la F ig u ra 18.59. C u a n d o
g i r o s e m u estra e n la F ig u ra 1 8 .5 6 y r e p a r t o e n la F ig u ra 18.57. U n g i r o
la re c u rs ió n v u e lv e a l n o d o 5 0 . e n c o n tra m o s u n e n la c e h o n /o n l a l iz q u ie rd o . R e a li­
e lim in a u n e n la c e h o riz o n ta l iz q u ie rd o S in e m b a rg o , p u e d e g e n e ra r e n la c e » h o ri­
z a m o s e n to n c e s u n g i r o e n 5 0 p a ra e lim in a r e l e n la c e h o riz o n ta l (el resultad.*
z o n ta le s d e re c h o s co n se c u tiv o » . >a q u e e l h ijo d e re c h o d e X p u e d e s e r ta m b ié n h o ri­
p u e d e v e rs e e n la F ig u ra 18.60» y u n r e p a r t o e n 4 0 p a ra e li m i n a r lo s e n la c e s
z o n ta l. F n e s te c a s o , in v o c a re m o s p rim en » a g i r o y d e s p u é s a r e p a r t o . D esp u é s
h o riz o n ta le s d e r e c h o s c o n s e c u tiv o s . E n la F ig u ra 18 61 se m u e s tra e l re s u lta d o
d e r e p a r t o se in c re m e n ta e l n iv e l d e l n o d o d e l c e n tro . E s to p u e d e c a u s a r p ro h le -

F ig u ro 18 5 8 Sltuoción después d e nsertor 45 e n nuestro árbol ejem p lo a p a re c e n


F *g u ro 1 8 .5 5 A A á rb o l o b to n O o d e lo n serció n d e 10. 85. 15. 70. 20. 60. 30 50 65 dos em o ces horizontales d e re ch o s co nsecutivos iras e l nod o 35
80 00 40 5. 55 y 35

F ig u ro 18 5 9 Sltuoción después d e l r e p a r t o nn 35: ésto g en e ra un e n la c e hori­


F igu ro 18 56 g i r o o s u n o r o t a c ió n sim p le e n lr e X y P
zontal lzai»erdo en 50
186.2 Elim inación

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 >

Figuro 18 64 C u a n d o se elim ina e l e lem en to I . todos ios nod os están e n e l nivel 1


HBU,° " “ ^ — 70 * " - < • < *» — esnoiuonraios a p a re c ie n d o asi e n la c e s horizontales izquierdos

18.6.3 Im plem entación en Ja v a

F.l e sq u e le to d e la c la s e d e lo s A A -á rb o lc s se m u e s tra e n las F ig u ra s 18.65 y 18.66. La


G ra n p arte d e e lla d u p lic a im p le m e n ta c io n e s d e á rb o le s a n te rio re s , lin a v e / m ás.
e m p le a m o s e l c e n tin e la n o d o N u lo ; sin e m b a rg o , a h o ra n o n e c e s ita m o s u n a p se u -

d o -ra íz . L l c o n s tru c to r , q u e n o m o s tra m o s, g e n e ra e l n o d o N u lo . ig u a l q u e e n e l (a
c a s o d e lo s á rb o le s ro jin e g ro s . y h a c e q u e r a i r le a p u n te n o d o N u lo e s tá e n e l a
n iv e l 0 . L a s ru tin a s e m p ic a n d iv e rs o s m é to d o s p r i v a d a au x ilia re s. rÓi
"B -o 1 . 63 W u o o o n o e sp u e , Qel r e p a r t o e n 3 0 lo « e , c , 0 n , e n a c o m o » i n n e r t a r s e m u e s tra e n la F ig u ra 1X 6 7 . C o m o h e m o s m e n c io n a d o a n te rio r­
m en te e n e s te c a p itu lo , e s te m é to d o e s id é n tic o a l i n s e i t a r re c u rs iv o d e lr»s ár-
package E stru c tu rn u D a to s: 43 p r í v a l o N o d o D in a t lo

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 ;

p u b l i c v o i d i n s e r t a r < C o m p a ra b le x ) th ro w s E le m e n c o D u p lic a d o 66 p r í v a t e s t a t i c N o d o B in a r io u l t i m o N odo ;


1 r a íz = in s e r ta r ! x. r a iz ) ; ) 67 )
p u b l ic v o id e li m in a r ! C o m p arab le x ) th ro w s E lem en to N o E n co n trad o
{ r a í z i e lim in a r) x. r a íz ) ; )
Figura 18.66 Esqueleto d e la ctose d e los A A _á rb o le s (p a rte 2).
p u b l i c v o i d e ii m in a r M i n ! > th r o w s E lem en to N o E n co n trad o
{ e li m in a r ! b u scarM in ! ) ) : 1
p u b l i c C o m p ara b le b u s c a rM in ! I t h r o w s E le m e n to N o E n c o n tra d o
I / • Im p lem en tació n h a b i t u a l ; v e r e l c ó d ig o e n I n t e r n e t * / í I
p u b l i c C o m p a ra b le b u sc a rM ax ! ) th r o w s E lem en to N o E n co n trad o 2 • Método interno para insertar e n u n subárbol.
[ / * rm p ie m en tació n h a b i t u a l ; v er e l c ó d ig o e n I n t e r n e t * / ) • felparam x ol elemento n muurtar.
p u b l i c C o m p a ra b le o u s c a r ! C o m p ara b le x I th r o w s E le m e n to N o E n c o n tra d o • «param t la raíz del árbcl.
( /* Im p le m en tació n h a b it u a l: v er e l c ó d ig o o n I n t e r n e t • / ) • « r e t u r n l n n u e v a raíz.
p u b lic b o o lean e s V a c io ( \ • aexception ElemencoDuplicado si el elemento que ajusta
I r e t u r n r a i z == n o d o N u l o : ) con x y a e s t á e n el subárbol de raiz t .
P u b lic v o id v a c i a n )
{ r a i z = n o d oN ulo; ) private NodoBinario
p u b l i c v o i d i m p r 1m i r A r b o l < > í n s e r t a i ! 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 s K i e m e n t o D u p l i c n d o
! im p rim irA rb o l« r a i z > }
i£! t «• n o d o N u l o )
jro 18.65 Esqueleto d e lo c ió s e d e tos A A _ a rb o le s (porte 1 ). t = n e w í J o d o 3 i n a r i o ( x . n o d o N u lo . n o d o N u lo I :

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

Figura 1868 M éto d o g i r o d e la clase AA A r b o l

14 Faso 1: Busca descendiendo por e l árbol y actualiza


1
15 u i t iroN odo y nod o B o rrad o
2 • R e p a r to p r i m i t i v o p a r a lo s A A -A rD o l* * .
3 * ¿param c la r a i z d e l á r b o l.
17 Ifl x.mer.orQue» t.dato 3 I
4 • ¿ r a r u r n l a n u e v a r a í z deapu ea <j«? m r o t a c ió n . 16 t.izquierdo « e l i m i n a r < x. t.izquierdo I;
19 eise
6 p r i v a t e N o d o B in a r io r a p a r t o » N o d o B in a r io t i
20
7 |
21 r.odoBor r a d o • t :
• tí( t .d e r e c h o .d e r e c h o .n iv e l t .n iv e l t 22 t.derecho r eliminar! x. r.derecho >•
23 )
10 t = F o t a c Io n e s .c o n H ijo D e r e o h o l t I; 24 !! P aso 2: Si x está ai final del árbol.
11 t .n iv e l-.,
25 lo eliminamos
12
26 :f 1 t == u l t i m o N o d o
13 re tu rn t ;
14 | 27
28 i f ( n o d o B o r r a d o == r.o d o N u lo ||
29 x . c o m p a r a l n o d o B o r r a d o .d a t o > != 0 )
Figuro 18 69 M éto d o r o p a r t o d o la c las© AA A r b o 1
30 throw n e w E l e m e n t o N o E n c o n t r a d o » ’d e A A _ A r b o l e l i m i n a r
31 nodoBorrado. dato =■ t.dar.o:
Nótese que cstu m ism a técnica puede em plearse en la n iiin a b u s c a r para sustituir 32 r.odoBorrudo - nodoNuio:
las com paraciones entre tres realizadas en cad a m xlo por coniparacnxxrs entre dos 33 t = t.derecho :

en cada ikhIo. m ás un tcsi »lc igualdad ad icio n al a l lin al u lt im o N o d o referencia el 34


35 ' / P a s o 3: En o t r o caso, no estamos al final:
rxxlo del n ise l - 1 en el q ue fin aliza la búsqueda C o m o no nos detenemos hasta que 36 ./ debemos restablecer el equilibrio
llegam os a l fin al, m el elem ento se encuentra en el árbol. u U ia v o N o d o apunta al 37 em e
nodo del n ivel - 1 que contiene el valo r de « e m p la zam ie n to que .Jebe ser elim inado. 38 it< t .i z q u i e r d o . n i v e l < t.nivel - 1 II

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

A m ed id a q u e e l g ra d o d e ra m ific a ció n a u m e n ta . I.i p ro fu n d id a d d ism in u y e . C u a n d o : t «%r r « U « % y A J e t e e n r c l i |a r « r JuntMC Ij* p r im e ra s I . « m í u *«*»


J
ÍWí ÍF B P ff
Ti
______________[H M |M |I 1 4l I. N 7

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
\— .________

Figura 18.72 Un B-árbol d e orden 5.


Figuro 18.73 El B-árbol resultante tras d e io inserción d e 57 e n e l árbol d e la Figu­
ra 18 72.
C a d a n o d o re p ré s e n la u n b lo q u e d e d is c o , a s í q u e e s c o g e m o s M y L b a sá n d o ­
n o s e n e l ta m a ñ o d e lo s d e m o n io s q u e d e b e n g u a rd a rse . C o m o e je m p lo , su p o n g a ­ fo rm a c o n tro la d a , q u e p u e d e c a lc u la rs e fá c ilm e n te . E l B -á rb o l o b te n id o se m u e s tra
m o s q u e un b lo q u e a lm a c e n a 8 .1 9 2 b y te s . E n n u e slro e je m p lo c a d a c la s e o c u p a 32 e n la F ig u ra 18.74. A u n q u e la d iv is ió n d e n o d o s c o n su m e tie m p o , y a q u e n e c esita
b y le s. E n u n B -á rb o l d e o rd e n M . Ic n d ría m o s M I c la v e s p a ra u n to ta l de d o s e sc ritu ra s e n d is c o a d ic io n a le s , e s u n a situ a c ió n re la tiv a m e n te ra ra P o r e je m ­
32M - 3 2 b y te s . a d e m á s d e X I ra m a s. C o m o c a d a ra m a e s. e s e n c ia lm e n te , e l m i­ p lo . si l- e s 3 2 . c u a n d o d iv id im o s un n o d o se c re a n d o s h o ja s c o n 16 y 17 e le m e n ­
m e n ) d e o tro b lo q u e d e d is c o , p o d e m o s s u p o n e r q u e c a d a u n a d e e lla s o c u p a 4 b y ­ to s. re s p e c tiv a m e n te . I'a ra la h oja c o n 17 e le m e n to s , p o d e m o s re a liz a r 15 in s e rc io ­
te s . E s d e c ir, la s ra m a s o c u p a n 4 3 / b y te s. I.a m e m o ria to ta l n e c e sa ria p a ra un n o d o n e s m á s sin q u e s e a n e c e sa rio n in g ú n d e s d o b la m ie n to a d ic io n a l. V isto d e o tro
in te rn o e s 36A1 3 2 . E l m a y o r \ a l o r d e M p a ra e l q u e e s ta c if r a n o su p e ra 8 . 192 m o d o , p o r c a d a d iv isió n d e u n n o d o h a y . a p ro x im a d a m e n te . L 2 in s e rc io n e s sin
e s 2 2 8 . A s i q u e e le g ire m o s M = 228. C o m o c a d a re g is tro d e d a to s es d e 2 5 6 b y ­ d e sd o b la m ien to .
te s . s e ria m o s c a p a c e s d e a lm a c e n a r 3 2 d e e llo s e n u n b lo q u e , p o r lo q u e L = 32. 1.a d iv is ió n e n e l e je m p lo a n te rio r d e l n o d o re s u e lv e e l p ro b le m a , y a q u e e l p a - i<j
D e e s te m o d o h e m o s g a ra n tiz a d o q u e c a d a h o ja tie n e e n tr e 16 y 3 2 re g istro s de d re n o tie n e c o m p le to su c o n ju n to d e h ijo s. P e ro , ¿ q u é o c u rr iría e n c a s o c o n tra rio ?

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

21 099^ “ " ' V" W W * C~ ' Add,^-weítey. R c jd in g . M«s.

n e l C a p ítu lo IX h e m o s d is c u tid o los á rb o le s b in a rio s d e b ú sq u e d a , los c u a ­

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.

19.1 Id eas básicas

luis ta b la s J e lot a liz a c ió n p e rm ite n c o n s u lta r o e lim in a r c u a lq u ie r e le m e n to c o n o ­


c ie n d o su n o m b re , d e m o d o q u e lo q u e e s ta m o s ¡m p le m c n ta n d o e s u n d ic c io n a rio .
D e se a ría m o s se r c a p a c e s d e e je c u ta r la s o p e ra c io n e s b á s ic a s e n tie m p o c o n sta n te ,
ta l y c o m o se h a c o n se g u id o e n lo s c a s o s d e las p ila s \ d e las co las. D e b id o a q u e el
tip o d e a c c e s o s e s tá a h o ra m u c h o m e n o s restrin g id o , e s to p a re c e un o b p a v o im p o si­
ble P a re c e razo n ab le q u e c u a n d o e l d ic c io n a rio a u m e n ta d e ta m a ñ o , las b ú sq u e d a s
lard aran m á s tiem p o , sin e m b a rg o , e s to n o tiene p o r q u e ser n e cesariam en te así.
S u p o n g a m o s, p o r e je m p lo . q u e to d o s lo s e le m e n to s so n e n te ro s n o n e g a m o s
19.2 Función d e localización
p e q u e ñ o s, e n tre U y 6 5 .5 3 5 . E n to n c e s p o d e m o s e m p le a r un v e c to r, in d e x a d o e n tre
0 y 6 5 5 3 5 . p a ra im p le m c n ta r la s o p e ra c io n e s c o m o s ig u e E n p rim e r lu g a r, in icia C a lc u la r la fu n c ió n d e lo c a liz a c ió n p a ra c a d e n a s tie n e u n a sutil c o m p lic a c ió n : la
1i/ a m o s to d a s las c a s illa s d e l v e c to r a c o n 0 . P a ra re a l i / a r i n s e r t a r i i > e je c u ta ­ c o n v e rs ió n d e s a x g e n e ra u n e n te r o q u e e s c a s i m á s g ra n d e d c l o q u e p u e d e a l­
m o s a | i | * ♦ . O b s e rv e q u e a : í | re p re s e n ta e l n u m e ro d e v e c e s q u e h a sid o in scr m a c e n a r c o n v e n ie n te m e n te la m á q u in a . E s to e s d e b id o a q u e 128 . . q u e so lo
la d o P ara e je c u ta r b u s c a r i 1 1 c o m p ro b a m o s q u e a [ i ; n o s e a 0 . P ara re a li/a r se d ife re n c ia d e l m a y o r e n te r o d c u n a m á q u in a 3 2 bit e n u n f a c to r d e 8. C o rn o
e l i m i n a r 1 1 ) . n o s a s e g u ra m o s d e h a b e r e n c o n tra d o i . y si e s a sí. e je c u ta m o s c o n s e c u e n c ia , n o p o d e m o s c a lc u la r la fu n c ió n d c lo c a liz a c ió n m a n e ja n d o d ile c ta ­
a ( i ) - - . C la ra m e n te , e l tie m p o d e e je c u c ió n d e c a d a o p e ra c ió n e s c o n sta n te . T e ­ m e n te p o te n c ia s d c 128. E n su lu g ar, n o s b a s a re m o s e n la s ig u ie n te o b se rv a c ió n .
n e m o s a d e m a s e l c o s te d e la in ic iu li/n c ió n d e l v e c to r, p e ro é s ta su p o n e u n a c a n ti­ U n p o lin o m io c u a lq u ie ra
d a d d e tra b a jo c o n s ta n te (6 5 .5 3 6 a sig n a c io n e s ), p u e s s ó lo s e e je c u ta u n a v e /.
E s ta s o lu c ió n tie n e d o s p ro b le m a s . E n p rim e r lu g a r, s u p o n g a m o s q u e m a n e ­ A , X ' + A ; X : + ¿ |X ' * "
ja m o s e n te r o s d c 3 2 h its e n lu g a r d c e n te r o s d c 16 b its . E n ta l c a s o , e l v e c to r a
p u e d e e v a lu a rse c o m o
d e b e ría a lm a c e n a r 4 b illo n e s d e e le m e n to s , lo q u e e s im p ra c tic a b le E n se g u n d o
lu g a r, si lo s e le m e n to s n o so n e n te r o s s in o c a d e n a s d e c a ra c te re s (o c u a lq u ie r (((A \ ) X + A 2) X + A ,)X + A o {l92)
o tra c o s a m á s g e n e ra l), n o p o d ría m o s e m p le a r d ir e c ta m e n te e n te r o s p a ra in d e x u r
e l v e c to r. O b s e rv e q u e e n la E c u a c ió n 19.2 e v ita m o s e l c á lc u lo d ir e c to d e X \ E s to e s
El s e g u n d o p ro b le m a n o lo e s re a lm e n te . Ig u a l q u e e l n ú m e r o 1 2 3 4 e s u n a c o n v e n ie n te p o r tr e s ra z o n e s . E n p n m e r lu g a r, s e e v ita u n resultad*, in te rm e d io d e ­
s e c u e n c ia d e d íg ito s i 2 . 3 . 4 ) . l a c a d e n a * h o l a * e s la s e c u e n c ia fo r m a d a p o r m a s ia d o g ra n d e , e l c u a l, c o m o v e re m o s m á s ta rd e , p ro v o c a ría e n g e n e ra l, u n d e s ­
lo s c a ra c te re s ' h ' . ' o 1. ' l * > ' a " . T e n e m o s q u e e l n ú m e r o 1 2 3 4 s e p u e d e r e ­ b o rd a m ie n to . E n s e g u n d o lu g a r, e l c ó m p u to e n la e c u a c ió n s ó lo c o n tie n e tr e s p ro
c u p e ra r m e d ia n te e l v a lo r d e i • l( ) ‘ ♦ 2 • 10* + 3 - 101 ♦ 4 • 10°. R e c u e rd e , d e la S e c ­ d u e lo s V tr e s su m a s: u n p o lin o m io d e g ra d o N se c a lc u la c o n N p ro d u c to s y Af
c ió n 12 .1 . q u e u n c a rá c te r p u ed e se r re p re s e n ta d o c o n 7 b its c o m o u n n ú m e ro e n ­ su m a s. E s to re s u lta m á s e c o n ó m ic o q u e e l c á lc u lo d ir e c to e n la E c u a c ió n 19.1. E n
tre 0 y 127. C o m o u n c a rá c te r e s b á s ic a m e n te u n e n te r o p e q u e ñ o , p o d e m o s te r c e r lu g a r, e l c á lc u lo s e re a liz a d e iz q u ie rd a a d e re c h a (A » c o rr e s p o n d e a • h • . A 2
in te rp re ta r u n a c a d e n a c o m o un e n te r o U n a re p re se n ta c ió n p o sib le es a o * v a s i s u c e s iv a m e n te , y X e s 128).
• h 1 • 12 8 * + • o ' • 12X * ♦ ' 1 ‘ - 1 2 8 1 ♦ ‘ a * - 128° E s to p e rm itiría u n a im p le m en ta P e rm a n e c e a u n e l p ro b le m a d e d e sb o rd a m ie n to : c o m o e l re s u lta d o d e lo s c á l ­
c ió n m e d ia n te u n s e c t o r b á sic o , c o m o la q u e lie n to s v is to a n te rio rm e n te c u lo s e s e l m ism o , p ro b a b le m e n te e s d e m a s ia d o g ra n d e . S in e m b a rg o , s ó lo n e c e si­
E l p ro b le m a q u e c o n lle v a e s ta e s tra te g ia es q u e la re p re se n ta c ió n e n te r a d e s ­ ta m o s e l re s u lta d o m ó d u lo t a m a n y o T a b la . A p lic a n d o e l o p e ra d o r % d e s p u é s d e
c rita g e n e ra e n te ro s m u y g ra n d e s la re p re se n ta c ió n d e ’ h o l a 1 e s 2 2 4 2 2 9 .2 2 7 y c a d a p ro d u c to ( o su m a ), c o n s e g u im o s q u e lo s re s u lta d o s in te rm e d io s s e a n p eque
c a d e n a s m á s la rg a s g e n e ra n re p re se n ta c io n e s m u c h o m a y o re s. E s to n o s c o n d u c e ñ o s 1 lu í fu n c ió n d e lo c a liz a c ió n re s u lta n te s e m u e s tra e n la F ig u ra 19.1. U n a c a ­
d e n u e v o a l p rim e r p ro b le m a : ¿ C ó m o e v ita m o s e l u so d e u n v e c to r a b su rd a m e n te ra c te rís tic a a lg o in c ó m o d a d e e s ta fu n c ió n e s q u e e l c á lc u lo d c m ó d u lo e s c o sto so
g ra n d e ? C o m o e l d e s b o rd a m ie n to e s tá p e rm itid o (y su s re s u lta d o s s o n c o n s is te n te s e n u n a
E s to se c o n s ig u e u s a n d o u n a fu n c ió n q u e a s o c ia a n ú m e r o s g ra n d e s l o c a ­ m ism a p la ta fo rm a ), p o d e m o s h a c e r q u e e l c á lc u lo d c la fu n c ió n d e lo c a liz a c ió n
d e n a s in te rp re ta d a s c o m o n ú m e ro s ) o tr o s m a s p e q u e ñ o s y m a n e ja b le s . L a f u n ­ s e a a lg o m á s rá p id o r e a liz a n d o u n a s o la o p e ra c ió n m ó d u lo , ju s to a n te s d e l
c ió n q u e a s o c ia a un e le m e n to u n ín d ic e p e q u e ñ o s e c o n o c e c o m o f u m i o n h a s h o r e t u r n . D e sg ra c ia d a m e n te , la re p e tic ió n d e l p ro d u c to p o r 128 tie n d e a dc«pfaizar
J u n c ió n J e to ta liz a c ió n . S i x e s un e n te r o ( n o n e g a tiv o ) a r b itra rio e n to n c e s lo s c a ra c te re s d e l p rin c ip io h a c ia la iz q u ie rd a , n o in flu y e n d o e n e l re su lta d o - P a ra
i g e n e re u n n ú m e r o e n tr e 0 y u , u d e c u u d o p a ra re m e d ia r e s ta situ a c ió n , m u ltip lic a re m o s p o r 37 e n lu g a r d e h a c e rlo p o r 1 -8 . E sto
in d e x a r u n a p o s ic ió n d e un v e c to r d c ta m a ñ o t a m a n y o T a b l a . S i s e s u n a c a d e n a , re d u c e e l d e s p la z a m ie n to d e lo s c a ra c te re s in ic ia le s
p o d e m o s c o n v e rtir a e n u n e n te r o g ra n d e x . e m p le a n d o e l m é to d o s u g e rid o a n te ­
rio rm e n te v d e s p u é s a p lic a r e l o p e ra d o r • p a ra o b te n e r u n ín d ic e a d e c u a d o . A sí. si
1 / / F u n c ió n d e l o c a l i r a c l ó n a c e p t a b le
t a m a n y o T a b l a e s 10.000. • h o l a * se in d e x a ría p o r 9 2 2 7 . 1.a S e c c ió n 19.2 d is c u ­ 2 p u b li c t m a l s t a t i c i n t h a s h . S t r i n g c l a v e , in t ta m a n yo T a b la
te c o n d e ta lle la im p le m e n ta c ió n d e fu n c io n e s d e lo c a li/u c ió n p a ra c a d e n a s d e c a ­ 3 I
re c ie re s 4 I n t v a lo r H a s h -
E l e m p le o d e la fu n c ió n d e lo c a liz a c ió n in tro d u c e u n a c o m p lic a c ió n : e s p o si­
A 'o r < in t i • O í i < c l a v e , lo n g t h t I : i “ »
b le q u e a d o s e le m e n to s d is tin to s le s c o rre s p o n d a la m is m a p o sic ió n . E s to n o p o ­ 7 v .lo r H a s h • v a lo rH a s h • 121 • ^
d e m o s e v ita rlo , y a q u e e x is te n m u c h o s m á s e le m e n to s p o te n c ia le s q u e p o sic io n e s
C u a n d o e s to s u c e d e , se p ro d u c e u n a c o lisió n . E x iste n m u c h o s m é to d o s p u ra re s o l­ 9 return v a lo r H a s h :
v e r c o n ra p id e z u n a c o lis ió n . E stu d ia re m o s tr e s d e lo s m á s sim p le s: e x p lo ra c ió n 1° )
lin e a l, e x p lo r a c ió n . u a d r á tic a y c m a je n a m ie n to sep a ra d o . T o d o s e llo s so n s e n c i­ Figuro 19.1 Prime» in te n to d e m p te m e n t o c ió n d e u n o fu n c ió n d e to c c f e o c ió n
llo s d e im p lc m c n ta r. p e ro tie n e n u n a e fic ie n c ia d istin ta , d e p e n d ie n d o d e l g ra d o d e
o c u p a c ió n d e l v ecto r E n U S c v v .o n 7 4 * c u a d u rn U - t» «mVluk.
El re s u lta d o se m u e s tra e n la F ig u ra 19.2. lis ta n o e s n e c e sa ria m e n te la m ejo r 1 / / F u n c ió n d e l o c a l I s a c l ó n p o b r e c u an d o tam an y o T ab la «n g ra n d e
fu n c ió n p o sib le . E s c ie n o a d e m á s q u e e n a lg u n a s a p lic a c io n e s tp o r e je m p lo , c u a n ­ 2 p u b l i c í i r . a l e t a t i c ¿r.t h a s h l S t r i n g c l a v e , i n t t a m a n y o T a b l a i

d o in te rv ie n e n c a d e n a s la rg a s), p o d e m o s q u e re r ju g a r c o n e lla . S in e m b a rg o , e n la 3 <


4 i n t v a i o r H a s h = 0;
m a y o ría d e los c a s o s la fu n c ió n e s b a sta n te b u e n a . O b s e rv e q u e e l d e sb o rd a m ie n to
5
p o d ría g e n e ra r n ú m e ro s n e g a tiv o s. P o r e llo , m e l o p e ra d o r d e m ó d u lo g e n e ra un 6 to i l in t 1 = 0; 1 ' c la v o . le n g th t ) ; ;•« I
v a lo r n e g a tiv o , lo c o n v e rtim o s e n p o s itiv o (lín e a s 15 y 16). N ó te se ta m b ié n q u e el 7 v a io rH ash * = c l a v e . c h a rA t( a I:
re s u lta d o o b te n id o al p e rm itir e l d e s b o rd a m ie n to y h a c ie n d o u n a s o la o p e ra c ió n de 8
9 r e tu r n v a io rH a sh * ta m a n y o T a b la ;
m ó d u lo tm a l n o e s e l m is m o q u e e l q u e se o b te n d r ía h a c ie n d o d ic h a o p e ra c ió n tras
10 l
c a d a p a so . D e m o d o q u e h e m o s a lte ra d o lig e ra m e n te la fu n c ió n o rig in a l, p e ro e s to
n o re p re s e n ta n in g ú n p ro b le m a , p u e s n o s e tra ta b a d e a lg o a m a n te n e r a u ltra n z a Figura 19.3 F u n ció n d e lo c a liz a c ió n i n o d e c u c d a c u a n d o t a m a n y o T a b l a es
V a le la p e n a in s is tir e n q u e . a u n q u e la e f ic ie n c ia e s u n a c o n s id e ra c ió n im p o r­ g ra n d e
ta n te d u ra n te e l d is e ñ o d e la fu n c ió n , p e rs e g u im o s q u e é s ta d is trib u y a la s c la v e s
d e lo rm a e q u ita tiv a , a fin d e r e d u c ir a l m á x im o la s c o lis io n e s . C o m o c o n s e c u e n ­
c ia . d e b e m o s s e r c u id a d o s o s e n n o lle v a r la s o p tim iz a c io n e s d e m a s ia d o lejo s. U n 19.3 Exploración lineal
e je m p lo .le e llo e s la fu n c ió n d e lo c a liz a c ió n d e la F ig u r a 19.3 E n e lla n o s lim i­
ta m o s a a ñ a d ir lo s c a r a c te r e s a la s c la v e s y d e v o lv e m o s e l r e s u lta d o m ó d u lo A h o ra q u e d is p o n e m o s d e u n a fu n c ió n d e lo c a liz a c ió n , n e c e s ita m o s d e c id ir lo q u e
t a m a n y o T a b l a . ¿ Q u é p o d ría se r m á s se n c illo ? L a fu n c ió n e s fácil d e iin p lc in e n - h a c e r c u a n d o se p ro d u z c a u n a c o lisió n . M á s c o n c re ta m e n te , si ¡i Y le c o rre sp o n d e
ta r y c a lc u la e l v a lo r h ash rá p id a m e n te . S in e m b a rg o , si t a m a n y o T a b l a e s m uy u n a p o sic ió n q u e y a e s tá o c u p a d a , ¿ d ó n d e lo c o lo c a m o s ? I-a e s tra te g ia m á s sim p le
g ra n d e , la fu n c ió n n o d is trib u y e b ien los c la v e s . P o r e je m p lo , su p o n g a m o s que p o sib le e s la e x p lo r a c ió n lin e a l, q u e c o n siste e n b u s c a r s e c u e n c ia lm e n te e n e l v e c ­
t a m a n y o T a b l a e s 10.000. S u p o n g a m o s ta m b ié n q u e la s c la v e s tie n e n , a lo su m o . to r h a s ta q u e e n c o n tre m o s u n a p o s ic ió n v a c ía . L a b ú s q u e d a r o ta d e s d e la ú ltim a
H c a ra c te re s. E n to n c e s, c o m o u n e le m e n to A S C II d e l tip o c h a r e s u n e n te r o e n tre p o s ic ió n h a s ta la p rim e ra , s i e llo e s n e c e s a rio . L a F ig u ra 19.4 m u e s tra e l re s u lta d o
0 y 127. la fu n c ió n s ó lo p o d ría to m a r v a lo re s e n tre 0 y 1 .0 1 6 (1 2 7 * 8 ). In d u d a b le ­ d e in s e rta r la s c la v e s 8 9 . 18. 4 9 . 5 8 y 9 e n u n a ta b la h a s h c u a n d o s e e m p le a e x p lo ­
m e n te . é s ta n o e s u n a d is trib u c ió n u n ifo rm e . T o d a la e fic ie n c ia g a n a d a p o r la v e lo ­ ra c ió n lin e a l. S u p o n e m o s q u e la fu n c ió n d e lo c a liz a c ió n d e v u e lv e la c la v e A m ó­
c id a d d e l c á lc u lo d e la fu n c ió n s e rá m á s q u e c o n tra rre s ta d a p o r e l e sfu e rz o q u e re ­ d u lo e l ta m a ñ o d e la ta b la. L a F ig u ra 19.4 in c lu y e lo s v a lo re s d e la fu n c ió n d e lo­
q u ie re re s o lv e r u n a g ra n c a n tid a d d e c o lisio n e s. c a liz a c ió n .
P o r ú ltim o , o b s e rv e q u e 0 e s u n re s u lta d o p o sib le d e la fu n c ió n , p o r lo q u e las
ta b la s s e im lcx an c o m e n z a n d o e n e l 0 . h a s h l 8 9 . 10 ) = 9
h a a h t IB , 1 0 )= 8
hasht 49. 10 ) = 9
1 /•• h a sh ( 58. 1 0 )= 8
2 •R u tin a de lo c a liz a c ió n p ara o b jeto s de la c la s e S trin g . hashl 9. 1 0 )= 9
3 •íparam c la v e la cadena a p ro cesar.
4 • flparam t a m a n y o T a b l a e l * am a fio d e l a t a ñ í a h a s h . fV./iuiM d , lir tp u é % de D e ip u é n k D r * p u é id t tic
5 •« r e tu r n e l v a lo r hash. in x e r tu r SQ in s e r ta r IH m u n a r4 9 m ie r ta r tt tn t ,n < i r 9

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 .

19.3.1 Análisis d e la exploración lineal

P a ra e s tim a r la e fic ie n c ia d e la e x p lo ra c ió n lin e a l, h a c e m o s d o s s u p o s ic io n e s :

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

L a p rim e ra su p o s ic ió n e s p e rfe c ta m e n te ra z o n a b le , y a q u e e n o tro c a s o n o es*


lo riam o s m a n e ja n d o u n a ta b la h a sh . L a s e g u n d a su p o s ic ió n in d ic a q u e si la tr a c ­
c ió n o c u p a d a d e la ta b la e s /.. e n to n c e s c a d a v e / q u e e x a m in a m o s una c e ld a , la
p ro b a b ilid a d d e q u e e s té o c u p a d a e s ta m b ié n /.. in d e p e n d ie n te m e n te d e lo s in te n ­
to s a n te rio re s. 1.a in d e p e n d e n c ia e s u n a p ro p ie d a d e s ta d ís tic a im p o rta n te q u e s im ­
p lific a e n u n g ra d o m u y im p o rta n te e l a n á lisis d e s u c e s o s a le a to rio s. D e s g ra c ia d a ­
m e n te . ta l y c o m o s e d is c u te e n la S e c c ió n 1 9 .3 .2 . d ic h a su p o sic ió n d e
in d e p e n d e n c ia n o e s só lo in ju s tific a d a sin o ta m b ié n e rró n e a . A p e s a r d e e llo , nos
e s d e a y u d a p u es n o s in d ic a h a s ta d o n d e p o d e m o s lle g a r si s o m o s m á s c u id a d o s o s Figura 19.5 Bustíoción d e la ogrupoción pnm arta en lo exploración «neo* (e n e l c e n ­
e n la re s o lu c ió n d e c o n flic to s . C o m o y a h e m o s d ic h o a n te s , la e fic ie n c ia d e una tro) resp ecto a lo n o agrupocxbn (om bo) y a la m enos m p o r t a n t e a g ru ­
ta b la h ash d e p e n d e e n g ra n m e d id a d e lo lle n a q u e e s tá la ta b la . S u o c u p a c ió n se p a ció n s e c in d a n a en la exploración cu a d rá tic a (a b a fo ); la s « te a s m as
in d ica m e d ia n te e l fa c to r d e c a rg a . largas representan celd a s o cu p a d a s e l ta cto r d e c a r g a e s 07.
E n la a g ru p a c ió n p rim a ria se tie n e n b lo q u e s d e c e ld a s o c u p u d a s. C o m o c o n s e ­
c u e n c ia . m u c h a s c la v e s re q u e rirá n u n n ú m e ro e x c e s iv o d e in te n to s p a ra re s o lv e r el E l n u m e r o m e d io d e c e ld a s e x a m in a d a s d u r a n te una b u u ju e d a sin é x ito
c o n flic to , p a ra te rm in a r a ñ a d ié n d o s e a u n o d e lo s b lo q u e s. E n la a g ru p a c ió n p n e m p le a n d o e x p lo r a c ió n lin e a l es c e n a d e ( I + I ( I / ) " ) 2. E l n u m e ro
m a n a , la falta d e e fic ie n c ia n o e s ta s ó lo p ro v o c a d a p o r lo s e le m e n to s q u e c o lis io ­ m e d io d e c e ld a s e x a m in a d a s d u r a n te u n a b ú sq u e d a c o n é x ito es a p r o x im a ­
n a n p o r te n e r e l m ism o v a lo r h u sh . sin.» ta m b ié n p o r a q u é llo s q u e c o lis io n a n e n las d a m e n te ( I + I ( I ~ /.)) 2 .
p o s ic io n e s a lte rn a tiv a s d e o tro s. El a n á lis is m a te m á tic o q u e s e p re c is a p a ra te n e r
E l c o s te d e u n a b ú s q u e d a sin é x ito e \ e l m is m o q u e e l c o s te d e u n a in s e r­
lo d o e s to c o rre c ta m e n te e n c u e n ta e s b a s ta n te co m p lic ad .» , p e ro h a sid o re a liz a d o
c ió n P a ra la s b ú s q u e d a s e x ito s a s , c a lc u la m o s e l c o s te m e d io d e u n a i n ­
y a . o b te n ié n d o se e l resultad.» d e l T e.*rem a 19 2.
se r c ió n s o b r e u n a s e m e n c ia d e e lla s C o m o la ta b la e s m a n d e . /H ite m o 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.

19.3.3 Análisis d e la op eración b u s c a r - Ü ' V J


E l c o s te d e u n a in s e rc ió n p u e d e e m p le a rs e p a ra a c o ta r e l c o s te d e b u s c a r . E x isten P o d e m o s a p lic a r l a m is m a té c n ic a p a ra o b te n e r e l c o s te d e u n b u s c a r e x ito so ,
d o s tip o s d e o p e ra c io n e s b u s c a r : e x ito s a s y n o e x ito s a s U n a o p e ra c ió n b u s c a r b a jo la h ip ó te sis d e in d e p e n d e n c ia (e m p le a n d o l i x í = I ( I - «) e n e l T eorem a
n o e x ito s a e s se n c illa d e a n a liz a r. L a se c u e n c ia d e c e ld a s q u e so n e x a m in a d a s d u ­ 19 .3 ). S i ni* hay n in g ú n tip o d e a g ru p a c ió n , e l c o s te m e d io d e d ic h a o p e ra c ió n e m ­
ran te u n a b ú sq u e d a sin é x ito d e V e s e x a c ta m e n te la m is m a q u e la s q u e se ría n con p le a n d o la e x p lo ra c ió n lin e a l s e r ía ln ( I /•) S i e l ta c to r d e c a rg a e s 0 .5 . e n ­
s u lla d a s e n i n s e r t a r X . D e e s te m o d o o b te n e m o s u n a re s p u e sta in m e d ia ta p ara to n c e s e l n u m e ro m e d io d e in te n to s p a ra u n a b ú s q u e d a e x ito s a c o n e x p lo ra c ió n li­
e l c o s te d e las b ú sq u e d a s n o e x ito sa s. n e a l e s 1.5. m ie n tra s e l a n á lis is te ó r ic o p ro d u c iría un v a lo r d e 1.4. O b s e rv e q u e
P a ra o p e ra c io n e s b u s c a r e x ito s a s , la s c o s a s so n lig e ra m e n te m á s c o m p lic a e s ta m e d ia n o d e p e n d e d e la o rd e n a c ió n d e las c la v e s , sin»» m»I«» d e la e q u id a d d e la
d a s L a F ig u ra 19 4 m u e s tra u n a ta b la c o n A *= 0 .5 . E n ta l c a s o , e l c o s te m e d io d e fu n c ió n d e lo c a liz a c ió n N«Vtcse ta m b ié n q u e a u n q u e m a n e je m o s fu n c io n e s c o n
u n a in s e rc ió n e s 2.5. El c o s t e m e d io d e b u s c a r u n e le m e n to re c ié n in s e rta d o se ría b u e n a s p r o p ie d a d e s e x is tirá n sie m p re , tant»» se c u e n c ia s d e p ru e b a s m ás la rg a s c o ­
e n to n c e s 2.5 . sin im p o rta r c u á n ta s in s e rc io n e s le s ig a n E n c o n tra p a rtid a , e l c o s te mí» o tra s m a s c o rta s , q u e c o n trib u y e n a la iivcdia P»»r e je m p lo , e x is te n , c o n t»»da
d e b u s c a r e l p rim e r e le m e n to insertad»* e n la ta b la e s s ie m p re e l d e 1.0 in te n to s c e rte z a , s e c u e n c ia s d e lo n g itu d 4. 5 y b. in c lu s o e n u n a ta b la h u sh medí»» v a r i a
A sí. e n u n a ta b la c o n ¿ = 0 .5 . a lg u n a s b ú sq u e d a s s»»n s im p le s y ««ras m a s c o m p li­ D e te rm in a r la lo n g itu d d e la m a y o r d e la s s e c u e n c ia s d e p ru e b a s e s un c á lc u lo
c a d a s E n c o n c re to , e l c o s te d e una b ú s q u e d a e x ito s a d e .X' e s ig u a l a l c o s te d e b u s ­ re a lm e n te c o m p lic a d o , y a q u e la a g ru p a c ió n p rim a ria n«» s ó lo in c re m e n ta s u lo n g i­
c a r ,\ e n e l m ism o m o m e n to e n e l q u e X e s in se rta d o . P a ra e n c o n tra r e l c o s te m e tu d su*» q u e a u m e n ta la prc»bahilidad d e q u e a p a re z c a . El p ro b le m a p r in c ip a que
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 fa c to r d e c a rg a / . d e b e m o s c a lc u la r p re se n ta la a g ru p a c ió n p rim a ria o s q u e la e fic ie n c ia e m p e o ra e x ira o id in a n a m c n ic
e l c o s te m e d io d e u n a in s e rc ió n h a c ie n d o la m e d ia s o b re lo d o s lo s fa c to re s d e c a i ­ e n la in s e rc ió n e n ta b la s h a s h c o n fa c to re s d e c a rg a e le v a d o s. A d e m á s, a u m e n ta la
g a q u e n o s lle v a n a C o n e s ta b a s e , p o d e m o s c a lc u la r e l tie m p o m e d io d e una p ro b a b ilid a d d e a lg u n a s d e las se c u e n c ia s m á s la rg a s (e s to e s . a q u é lla s q u e s e e n ­
b ú sq u e d a c o n e x p lo ra c ió n lin eal. c u e n tra n e n e l e x tr e m o s u p e r io r d e la m edia).
P a ra re d u c ir e l n ú m e ro d e in te n to s , n e c e s ita m o s u n e sq u e m a d e reso lu c ió n de
h a B h t 8 9 . 10 ) = 9
c o n flic to s q u e e v ite la a g ru p a c ió n p rim a ria . O b s e rv e q u e si la ta b la e s tá m e d io v a ­
h a s h ( 1 8 , 10 ) = 3
c ia . e lim in a r lo s e le c to s d e la a g ru p a c ió n p rim a ria p o d ría e v ita r, e n m e d ia , la m i­ h a a h í 49. 10 I = 9
tad d e lo s in te n to s e n e l c a s o d e u n a in s e rc ió n o d e u n a b ú s q u e d a sin é x ito v una
h a s h t 58. 10 ) = 8
d é c im a p a rte e n e l c a s o d e u n a b ú sq u e d a e x ito sa . A p e s a r d e q u e re s u lte ra z o n a b le
haaht 9 . 10 > = 9
in te n ta r re d u c ir la p ro b a b ilid a d d e la s se c u e n c ia s m á s la rg as, la e x p lo r a c ió n lin e a l
es a n a e stra te g ia h a s ta iu r ú til. C o m o es ta n fácil d e im p le m e n ta r. c u a lq u ie r o tro ttfx p u é » ,U D c ip u C s tlf IV y u n W r /V . /•!»'«</<
• I tn p u fíd r
m u n a r tly tn < e o a r ¡X i n s t r u i r 49 m u n a rS H in s tr u ir V
m é to d o q u e se u tilic e p a ra e lim in a r la a g ru p a c ió n p rim a ria d e b e ría te n e r u n a c o m ­
p le jid a d sim ila r E li c a s o c o n tra río , in v e rtiría m o s d e m a s ia d o tie m p o in te n ta n d o II 49 49 49

e v ita r u n a p e q u e ñ a fra c c ió n d e l n ú m e ro d e p ru e b as. U n a a lte rn a tiv a ra z o n a b le es


1
la e x p lo r a c ió n c u a d rá tic a .
1 58 58

\ 9

19.4 Exploración cu a d rá tica 4

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

H + i* s H + j ? (m»«d.M> II, - //«i ♦ C < m od.M i


( |9 J t
i~ = y ‘ (m o d M i //, , = H a -r ( i - l r ( m o d .W i .

i ' ~ j : = O trn o d M i Si resta m o s a m b a s e c u á n im e s e n la h u a c u m I 9 J . o b ten em o s

( 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

n a m lev " h í ? " * 7 K ,V K K Í a a h la h la D c s p * , c re a m o s


u n a n u e v a la b ia v a c ía d e ta m a ñ o d o b le , e n la s lin e a s IS v 19. P o r ú ltim o re c o rre ­
m o s e l v e c to r a n tig u o in s e rta n d o su s e le m e n to s a c tiv o s e n la n u e v a Utbla. L a ru tin a 19.5 Hashing enlazado
t Z T ' n """ U" J T * fU nctón * ‘^ ' “ ‘C tón iv a q u e e l v e c to r tie n e un
ta m a ñ o d .fe r e n le ) y re su e lv e d e fo rm a a u .o m .H iea to d a s la s c o lis io n e s . P o d em o s
U n a a lte rn a tiv a a la e x p lo ra c ió n c u a d rá tic a m u y c o n o c id a e s e l h a sh in g e n la z a d o o
* 1 “ la lla m a d a « c u r s i v a a i n s e r t a r ( e n la lin ca 2 4 ) n o fu erza lu ish in g a b ie r to . E n e l h a s h in g e n la z a d o , se m a n e ja u n v e c to r d e listas en la z a d a s:
u n n u e v o reh ash . C o m o a lle m a iiv a . p o d e m o s re e m p la z a r la lín e a 2 4 c o n d o s lin e a s
/-o. / - ........ ... i- L a fu n c ió n d e lo c a liz a c ió n in d ic a e n q u é lis ta d e b e m o s insertar
cíe LOdigo c n ire sus c o rre s p o n d ie n te s lla v e s (v é a s e e l E je rc ic io 1 9 1 4 ,
e l e le m e n to .V y d e sp u é s , d u ra n te la e je c u c ió n d e u n a o p e ra c ió n b u s c a r , n o s d ic e
>e m e m e n to n a d a d e I,» q u e h e m o s h e c h o d e p e n d e d e la e x p lo ra c ió n c u a d ra d - e n q u e lista s e e n c u e n tra e l e le m e n to X . L a id e a su b y a c e n te e s q u e . a u n q u e la b ú s ­
v a. L a I-,gura 19.14 im p le m e n ta d ic h a e s tra te g ia d e re s o lu c ió n d e c o n flic to s c r ie n -
q u e d a e n u n a lista e n la z a d a e s u n a o p e ra c ió n lin e a l, si las lis ta s so n lo s u fic ie n te ­
b t 2 , r C Í,0 " T 7 U H " ! " -V “ ’d " i ‘-a " d‘' "K I'H lo ó u s e a r p o s m e d ia n te m e n te c o rta s, e l tie m p o d e b u s q u e d j s e rá re d u c id o . E n p a rtic u la r, su p o n g a m o s q u e
a lg o ritm o d e e x p lo ra c ió n c u a d rá tic a . L a b ú sq u e d a e n la ta b la c o n tin ú a h a s ta q u e
e l fa c to r d e c a rg a , q u e ah o ra se d e fin e c o rn o V A l. e s N ó tese q u e e n el h ash in g
SC e-nvuentra u n a c e ld a v a c ia o u n e le m e n to q u e a ju s te . L a m e to d o lo g ía d e s c r ita en
e n la z a d o , e l ta c to r «le c a rg a n o e s tá a c o ta d o p o r 1.0. L a lo n g itu d m e d ia d e c ad a
e l T e o re m a 19.5 s e .m p le m e n ta e n las lín e a s 12 a 14. O b s e rv e q u e si x e s tá m a re a -
lista es /.. lo q u e h a c e q u e e l n ú m e ro m e d io «le in te n to s d u ra n te u n a in s e rc ió n o
£ c o m o e l,m ,n u d o . s u p o s.c .rtn será d e v u e lta p o r b u s c a r * , . . e o n l i n w B u s c a r u n a h u sq u e d a s in é x it o sea /.. E l n u m e ro d e in te n to s c o rre s p o n d ie n te a u n a b ú s ­
la n z a ra u n a e x e e p e to n s ie m p re q u e d e te rm in e q u e x n o e s u n e le m e n to a c tiv o
q u e d a e x ito s a e s I + /. 2 E s to e s d e b id o a q u e u n a b ú sq u e d a e x ito s a sie m p re se
re a liz a ra e n u n a lista n o v a c ía , y e s «le e s p e ra r q u e te n g a m o s q u e re c o rre r la m itad
«le su s e le m e n to s . El c o s te re la tiv o d e u n a b ú sq u e d a e x ito s a re s p e c to a u n a n o e x i­
19.4.2 Análisis d e la exploración cu ad rática to sa p u e d e p a re c e r a n ó m a lo c u a n d o /. < 2. y a q u e la p rim e ra d e e lla s e s m a s c o s ­
to sa q u e la se g u n d a . S in e m b a rg o , e s to tie n e s e n tid o y a q u e m u c h a s «le las búsque-
d a s sin é x ito to p a ría n c o n u n a lista v acia .
n ? U ," M' , * ' i " P lo r a t '™ to d a v ía n o h a p o d id o
7 ; ; ;: ‘ “ Su ‘t t 'f 'P 'O .d a d . A u n q u e e s ta e s tra te g ia e l,m in a la ag ru p a- U n f a c to r d e c a rg a m u y c o rrie n te e s 1 .0 ; u n fa c to r d e c a rg a m e n o r n o a u m e n ta
d e m o d o s ig n ific a tiv o la e fic ie n c ia , y a d e m á s n e c e sita d e un e s p a c io ex tra . El
e e lZ T r^ , V p " '™ " ’" “ ij P ro b a rá n la s m ism a s
a tra c tiv o d e l h a s h in g e n la z a d o e s q u e la e fic ie n c ia n o s e v e a fe c ta d a p«>r u n iroxle-
b u jo a e llo d *7 ? " 0CC C° " n ° , " lMe J c h e m i a r i a l>c-
b ,d o a e llo , d e n u e v o , n o p o d e m o s s u p o n e r la In d e p e n d e n c ia d e m .e n to s su c e s iv o s. ra d o in c re m e n to d e l fa c to r d e c a rg a , a d e m á s «le q u e p o d e m o s cv itar e l re h a sh i ng.
E ste e s u n d e ta lle im p o rta n te e n los le n g u a je s e n lo s q u e n o s e p u e d e re a liz a r la p u e d e p ro v o c a r e l m a l c o m p o rta m ie n to d e lo s á rb o le s b in a rio s. L »s a rb o le s b in a ­
e x p a n sió n d in á m ic a d e lo s v e c to re s. A d e m á s , e l n ú m e ro d e p ru e b a s d e u n a b ú s ­ rio s d e b ú sq u e d a s o n a lg o c o s to s o s d e im p le m e n ta r. A si q u e . si n o n e c e sita m o s
q u e d a e s m e n o r q u e e n la e x p lo ra c ió n c u a d rá tic a , e n p a rtic u la r e n las b ú sq u e d a s n in g u n a in fo rm a c ió n d e o rd e n y e x is te a lg u n a p o sib ilid a d d o q u e a p a re z c a n e n tr a ­
n o ex ito sas. d as o rd e n a d a s , la ta b la h a s h e s la e s tru c tu ra d e d a to s q u e d e b e m o s e m p le a r.
P o d e m o s im p le m e n ta r e l h a sh in g e n la z a d o e m p le a n d o la s c la s e s d e listas e n la ­ L a s a p lic a c io n e s d e l h a sh in g so n m u y n u m e ro sa s. L o s c o m p ila d o re s e m p ic a n
z a d a s e x is te n te s . S in e m b a r g o , c o m o e n e s ta o c a sió n e l n o d o c a b e c e ra re p re se n ta ta b la s h a s h p a ra tra ta r las v a ria b le s d e c la ra d a s e n e l c ó d ig o . D ic h a e s tru c tu ra d e
un g a s to in ú til d e e s p a c io , p u e s n o se n e c e s ita p a ra n a d a , p o d e m o s o p ta r p o r n o d a to s se lla m a ta b la J e sím b o lo s. L a s ta b la s h a s h s o n las m á s a d e c u a d a s e n este
r e u tili/a r c o m p o n e n te s , im p le m e n ta n d o la s lis ta s c o m o si fu e s e n p ila s. E l e sfu e rz o c a s o y a q u e s ó lo se n e c e sita n o p e ra c io n e s d e i n s e r t a r y b u s c a r . N o rm a lm e n te .
re a liz a d o e n la c o d ific a c ió n re s u lta g ra ta m e n te c la rific a d o r. A d e m á s, e l g a s to d e I o n identifie-adores s o n c o rto s , d e m o d o q u e la fu n c ió n h a s h p u e d e c o m p u ta rs e r á ­

m e m o ria s e re d u c e a u n a re fe re n c ia p o r n o d o , a d e m á s d e u n a re fe re n c ia a d ic io n al p id a m e n te . O b s e rv e q u e e n e s ta a p lic a c ió n , la m a y o r ía d e las b ú sq u e d a s tien en


p o r lista. |m.i e je m p lo , c u a n d o e l fa c to r d e c a rg a e s 1.0 te n e m o s d o s re fe re n c ia s é x ito .
p o r e le m e n to . E ste h e c h o p u e d e s e r im p o rta n te e n o tro s le n g u a je s d e p ro g r a m a ­ O tr o u s o m u y c o m ú n d e la s ta b la s h a s h s o n lo s ju e g o s d e c o m p u ta d o r. A m e d i­
c ió n s . lo s e le m e n to s a g u a rd a r s o n d e g ra n ta m a ñ o E n n u e stro cu so , te n e m o s las d a q u e e l p ro g ra m a b u sc a e n tr e las d is tin ta s lín e a s d e ju e g o , lle v a la c u e n ta d e las
m ism a s d ific u lta d e s q u e e n la s im p le m e n ta c io n e s d e las p ila s b a sa d a s e n v e cto res p o sic io n e s q u e h a v is to m e d ia n te la c o m p u ta c ió n d e u n a fu n c ió n h a s h b a s a d a e n la
y e n lisias e n la z a d a s. p o sic ió n (y a lm a c e n a n d o e l m o v im ie n to h e c h o p a ra e s a p o s ic ió n ). S i u n a d e d i­
c h a s p o sic io n e s se re p ite , e l p ro g ra m a p u e d e e v it a r la re p e tic ió n d e (c o s to so s ) c á l­
c u lo s h a c ie n d o u n a tra n s p o s ic ió n d e m o v im ie n to s . E sta e s tru c tu r a c o m ú n a todos
lo s ju e g o s d e c o m p u ta d o r s e lla m a ta b la J e tr a n sp o sic ió n . E s to y a s e v io e n la
Resumen
S e c c ió n 10.2. c u a n d o s e im p le m e n to e l ju e g o d e la s tre s e n raya.
U n te rc e r u so d e l h a sh in g so n los c o rre c to re s o rto g rá fic o s. S i la d e te c c ió n d e
L a s ta b la s h a s h p u e d e n e m p le a rs e p a ra q u e e l c o s te m e d io d e la s o p e ra c io n e s lo s e rr o re s p rim a so b re su c o rre c c ió n , se p u e d e h a c e r u n h a s h in g p re v io s o b re un
i n s e r t a r y b u s c a r s e a c o n sta n te . C u a n d o u tiliz a m o s ta b la s h a sh . e s e sp e c ia l­ d ic c io n a rio c o m p le to , p u d ié n d o se c o m p r o b a r la c o rre c c ió n d e las p a la b ra s e n
m e n te im p o rta n te p re s ta r a te n c ió n a d e ta lle s c o m o e l fa c to r d e c a rg a : e n c a s o c o n ­ tie m p o c o n sta n te . L a s ta b la s luish so n a d e c u a d a s p a ra e llo y a q u e n o e s im p o rta n te
trario . las c o ta s c o n s ta n te s d e tie m p o n o so n d e a p lic a c ió n . T a m b ié n e s im p o rta n te m a n te n e r o rd e n a d a s las p a la b ra s. B a sta c o n im p rim ir lo s e rr o re s e n e l m ism o o r ­
e le g ir c u id a d o s a m e n te la fu n c ió n d e lo c a liz a c ió n , s o b re to d o c u a n d o la s c la v e s d e n e n e l q u e se p ro d u cen .
q u e s e m a n e ja n n o so n e n te ro s ni c a d e n a s c o rta s. D e b e e le g irs e u n a fu n c ió n fác il­ E s to c o m p le ta la d is c u sió n d e lo s m e c a n is m o s b á s ic o s d e b ú sq u e d a , t i si­
m e n te c a lc u la b le c o n u n a b u e n a d is trib u c ió n d e su s v alo res. g u ie n te c a p ítu lo e s tu d ia lo s m o n tíc u lo s b in a rio s , lo s c u a le s im p le m c n ta n la s c o las
N o rm a lm e n te , e n e l h a sh m g e n la z a d o e l fa c to r d e c a rg a e s tá m u y c e rc a n o a I. d e p rio rid a d , p e rm itie n d o a s í e l a c c e s o e fic ie n te a lo s e le m e n to s m á s p e q u e ñ o s de
a u n q u e la e fic ie n c ia n o e m p e o ra s e n s ib le m e n te c u a n d o e s te fa c to r c r e c e m u c h o u n a c o le c c ió n .
E n la e x p lo ra c ió n c u a d rá tic a , e l ta m a ñ o d e la ta b la d e b e s e r u n n ú m e ro p rim o y el
fa c to r d e c a rg a n o d e b e ría e x c e d e r 0 .5 . E l re h u s h in g d e b e e m p ic a rs e p a ra p e rm itir
q u e la ta b la c re z c a m a n te n ie n d o e l fa c to r d e c a rg a a d e c u a d a m e n te . E s to e s im p o r­ Elementos del juego
tan te si h a y e s c a s e z d e e s p a c io y n o e s p o sib le d e c la ra r in ic ia lm e n te u n a ta b la h a sh
d e g ra n tam añ o . a g r u p a c i ó n p r i m a r i a P ro b le m a d e la e x p lo ra c ió n lin eal q u e a fe c ta a la efic ie n c ia .
A p e sa r d e lo s re su lta d o s o b te n id o s p a ra las ta b la s h a sh . p o d e m o s se g u ir e m ­ A p a re c e n g ra n d e s g ru p o s d e c e ld a s o c u p a d a s , h a c ie n d o q u e las in s e rc io n e s en
p lea n d o á rb o le s b ín a n o s d e b ú sq u e d a p ara im p le m e n ta r la s o p e ra c io n e s i n s e r t a r e llo s s e a n m á s c o sto sa s. A d e m á s , d ic h a s in s e rc io n e s p ro v o c a n q u e lo s g ru p o s
y b u s c a r . A u n q u e las c o ta s d e l tie m p o m e d io o b te n id a s so n ( h lo g X >. lo s á rb o le s d e c e ld a s o c u p a d a s c re z c a n a ú n m ás.
b ín a n o s d e b ú sq u e d a p e rm ite n d is p o n e r a d ic io n a lm e n te d e d iv e rsa s ru tin a s que a g r u p a c i ó n s e c u n d a r i a A g ru p a c ió n q u e s e p ro d u c e c u a n d o lo s e le m e n to s in d e x a -
p re c isa n d e u n c ie r to o rd e n y so n . p o r tan to , m á s p o te n te s S i e m p le a m o s u n a tab la d o s e n la m is m a p o s ic ió n e x a m in a n las m ism a s c e ld a s a lte rn a tiv a s. S u p o n e
h a s h n o p o d e m o s b u s c a r d e fo rm a e fic ie n te e l m e n o r d e lo s e le m e n to s a lm a c e n a ­ u n a d e s v ia c ió n m e n o r d e lo s re s u lta d o s te ó ric o s ,
d o s m e x te n d e r la ta b la p a ra p e rm itir c o m p u ta c io n e s so b re e l i-é sim o e le m e n to d e c o lis ió n S e p ro d u c e c u a n d o a d o s o m á s e le m e n to s d e u n a ta b la h a s h les c o rr e s ­
la ta b la re s p e c to d e l o rd e n A d e m á s, n o p o d e m o s b u s c a r e fic ie n te m e n te u n a c a d e ­ p o n d e e n e lla la m ism a p o sic ió n . E ste p ro b le m a e s in e v ita b le y a q u e h a b itu a l-
n a a m e n o s q u e la c o n o z c a m o s d e fo rm a e x a c ta . U n á rb o l b in a rio d e b ú sq u e d a m e n te h a y m á s e le m e n to s q u e p o sic io n e s,
p u e d e e n c o n tra r rá p id a m e n te to 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 e n u n ran g o e lim in a c ió n p e r e z o s a T é c n ic a d e m a rc a r lo s e le m e n to s c o m o e lim in a d o s e n lu g ar
d e te rm in a d o , m ie n tra s q u e e s to n o lo p u e d e h a c e r u n a ta b la h a sh . P o r o tra p arte, d e b o rra rlo s tísic a m e n te . E s n e c e s a ria e n las ta b la s h a s h c o n e x p lo ra c ió n ,
e n la p rá c tic a la c o ta fX Io g .V ) n o re s u lta m u c h o m a y o r q u e ( h l ). e s p e c ia lm e n te e x p lo r a c ió n c u a d r á t i c a R e so lu c ió n d e c o n flic to s q u e e x a m in a las c e ld a s I. 4 . 9 y
p o iq u e lo s á rb o le s b in a rio s n o n e c e sita n n i d e m u ltip lic a c io n e s n i d e d iv isio n es. a s i s u c e s iv a m e n te , a p a rtir d e la p o s ic ió n in icial,
P o r o tra p a rte , e l c a s o p e o r p ara e l h a s h m g s u e le p re v e n ir d e u n a in c o rre c ta e x p lo r a c ió n lin e a l T é c n ic a p a ra e v ita r lo s c o n flic to s, q u e e x a m in a se c u e n c ia i-
e le c c ió n d e lo s m e c a n ism o s q u e in te iv ic n e n . m ie n tra s q u e u n a e n tra d a o rd e n a d a m e n te e l v e c to r h a s ta q u e se e n c u e n tra u n a c e ld a v acía .
f a c t o r d e c a r g a N ú m e ro d e e le m e n to s d e la tab lu h a s h d iv id id o p o r e l ta m a ñ o del Q u a d ra tk E rn b in g T a b le J a v a C o n tie n e la im p le m e n ta c ió n d e las
v e c to r d e la ta b la h a sh . F.n u n a la b ia h a sh c o n e x p lo ra c ió n , e l fa c to r d e carg a ta b la s h ash c o n e x p lo ra c ió n c u a d rá ­
to m a v a lo re s e n tr e 0 (v a c ía ) y I (lle n a ). E n e l h a s h in g e n la z a d o p u e d e ser tic a . E s la v e rs ió n in g le s a d e la c la s e
m ayor que I . T a b la E x p lo ra c io n C u a d ra t i c a .
fu n c ió n h a s h F u n c ió n q u e c o n v ie rte un e le m e n to e n un e n te r o a d e c u a d o puru in-
de.xar la p o s ic ió n d e l v e c to r e n e l q u e se a lm a c e n a d ic h o e le m e n to . S i la fu n ­
c ió n hash e s in v e c tiv a , p o d e m o s a c c e d e r a l e le m e n to a tra v é s d e su ín d ic e e n
Ejercicios
e l v e c to r. N o rm a lm e n te n o s o n in v e c tiv a s , p o r lo q u e v a rio s e le m e n to s p u ed en
c o lis io n a r e n e l m is m o ín d ic e ,
C uestiones breves
h a s h i n g Im p le m e n ta c ió n d e la s ta b la s h a s h p a ra re a liz a r in s e rc io n e s, e lim in a c io ­ 19.1. ¿ C u á le s so n lo s ín d ic e s d e l v e c to r d e u n a ta b la h ash d e ta m a ñ o I I ?
n e s y b ú sq u ed as. 19.2. ¿ C u á l e s e l ta m a ñ o a p ro p ia d o d e u n a ta b la h ash si e l n ú m e ro d e e le m e n to s
h a s h in g d o b le T é c n ic a d e h a sh in g q u e n o su fre d e a g ru p a c ió n s e c u n d a ria . P ara la q u e h a y e n e lla e s 10 °
re s o lu c ió n d e c o n flic to s e m p ic a u n a se g u n d a fu n c ió n h a sh 19.3. E x p liq u e c ó m o se re a liz a ría la e lim in a c ió n e n las ta b la s c o n e x p lo r a c ió n v
h a s h i n g e n la z a d o A lte rn a tiv a e fic ie n te , h a b la n d o e n té rm in o s d e e s p a c io , a la e x ­ c o n h a sh in g e n laz ad o .
p lo ra c ió n c u a d rá tic a , e n la q u e se m a n tie n e u n v e c to r d e lista s e n la z a d a s. Es 19.4. ¿ C u á l e s e l n ú m e ro e s p e r a d o d e p ru e b a s e n u n a b ú sq u e d a c o n y s in é x ito
m e n o s s e n s ib le a fa c to re s d e c a rg a e le v a d o s . P re s e n ta a lg u n o s d e lo s in c o n v e ­ e n u no ta b la h ash c o n e x p lo r a c ió n lin e a l y f a c to r d e c a rg a 0 .2 5 ?
n ie n te s d e la s im p le m e n ta c io n e s d e la s p ila s b a s a d a s e n v e c to re s y e n listas e n ­ 19.5. D a d a la e n tra d a (4 .3 7 1 . 1 .3 2 3 .6 .1 7 3 . 4 .1 9 9 . 4 .3 4 4 .9 .6 7 9 . 1.989). u n a ta b la
lazad as. d e ta m a ñ o fijo 10 y la fu n c ió n h ash H i X ) = X m o d 10. m u estre
ta b l a h a s h lá h l a e m p le a d a p a ta im p le m e n la r u n d ic c io n a rio c u y a s o p e ra c io n e s se
re a liz a n e n tie m p o c o n sta n te . a) la ta b la h ash c o n e x p lo ra c ió n lin eal resu ltan te.
li) la ta b la hush c o n e x p lo ra c ió n c u a d rá tic a re su lta n te .
<■) la ta b la c o n h a sh in g e n la z a d o re su lta n te .
Errores com unes 19.6. M u e stre e l re s u lta d o d e h a c e r u n re h a s h in g e n c a d a u n a d e las ta b la s del
E je rc ic io 19.5. E l ta m a ñ o d e la n u e v a ta b la d e b e se r u n n ú m e ro p rim o .
1. L a fu n c ió n d e lo c a liz a c ió n d e v u e lv e u n e le m e n to d e u p o i n t . D e b id o a 1 9 .7 . L a ru tin a e 3 V a e i a a ú n n o h a s id o im p lc m e n ta d a . Im p le m é n te la d e m o d o
q u e lo s c á lc u lo s in te rm e d io s p u e d e n p ro v o c a r u n d e sb o rd a m ie n to , la v a ­ q u e d e v u e lv a la e x p re s ió n t a m a n y o A c t u a l == 0.
riab le lo cal d e b e c o m p ro b a r q u e e l re s u lta d o d e la o p e ra c ió n d e m o d u lo
n o e s n e g a tiv o , e v ita n d o a s í la d e v o lu c ió n d e u n v a lo r fu e ra d e ran g o . Problem as teóricos
2. L a e fic ie n c ia d e u n a ta b la h a s h c o n e x p lo ra c ió n e m p e o ra s e n s ib le m e n te a
m e d id a q u e e l fa c to r d e c a r g a s e a p ro x im a a 1.0 N o d e b e p e rm itirse q u e 19.8. U n a e s tra te g ia a lte rn a tiv a d e re s o lu c ió n d e c o n flic to s c o n s is te e n d e fin ir
e s to s u c e d a , h a c ie n d o u n re h a s h in g c u a n d o e l fa c to r d e c a r e a s e a p ro x im e u n a se c u e n c ia . FU) = /?,. d o n d e R {, = 0 y R x. R , R u , e s u n a se c u e n ­
a 0.5. c ia a le a to ria d e lo s \ l - I p rim e ro s e n te ro s (re c u e rd e q u e e l ta m a ñ o d e la
3. L a e fic ie n c ia d e to d o s lo s m é to d o s d e h a sh in g d e p e n d e del u s o d e u n a ta b la e s M) .
b u e n a (u n c ió n d e lo c a liz a c ió n . U n e rr o r m u y u su a l e s e m p le a r u n a fu n c ió n íi) D e m u e s tre q u e b a jo e s ta e s tra te g ia , las c o lis io n e s p u e d e n re so lv e rse
in ad ecu ad a. s ie m p re q u e la ta b la n o e s té llena.
h) ¿ P o d ría e lim in a r e s ta e s tra te g ia la a g ru p a c ió n p rim a ria ?
c) ¿ P o d ría e lim in a r e s ta e s tra te g ia la a g ru p a c ió n se c u n d a ria ?
En Internet il) S i e l fa c to r d e c a rg a d e la ta b la e s /.. ¿ c u á l e s e l c o s te e n tie m p o d e una
in s e rc ió n ?
L a ta b la h a s h c o n e x p lo r a c ió n c u a d r á tic a s e e n c u e n tr a e n e l d ir e c to r io e) L a g e n e ra c ió n d e u n a p e rm u ta c ió n a le a to ria m e d ia n te e l a lg o r itm o d e
D a ta S tr u c tu r e s . E n e l d ir e c to r io C h a p t e r l 9 p o d e m o s e n c o n tra r u n a c o le c c ió n de la S e c c ió n 9 .4 im p lic a u n g r a n n ú m e ro d e (c o s to s a s ) lla m a d a s al g e n e ­
fic h e ro s p ara g e n e ra r la F ig u ra 19.5. ra d o r d e n ú m e ro s ale a to rio s. 1 \ ; u n a lg o r itm o e fic ie n te p a ra la g e n e ra ­
c ió n d e p e rm u ta c io n e s a le a to ria s q u e e v ite las lla m a d a s a l g e n e ra d o r
H ash E ntr y .ja va C o n tie n e la im p le m e n ta c ió n de
d e n ú m e ro s ale a to rio s.
E n tra d a H a s h .
P r o b i n g H a s h T a b l e .ja v a C o n tie n e la im p le m e n ta c ió n d e la 1 9 .9 . S i e l re h a s h in g s e p ro d u c e ta n p ro n to c o m o e l fa c to r d e c a rg a s e a p ro x im a
c lase a b stra c ta d e las ta b la s h a s h c o n a Ü.5. e n a d e la n te c u a n d o s e in s e rte u n n u e v o e le m e n to , e l fac to r d e c a rg a
e x p lo ra c ió n . E s la v e rsió n in g le sa d e e s ta r á e n tre 0 .2 5 y 0 .5 . ¿ C u á l e s e l fa c to r d e c a rg a e s p e r a d o e n e s ta s itu a ­
la c la s e E x p lo r a c io n T a b la H a s h . c ió n ? E n c o n c re to , ¿ e s o n o c ie r to q u e e l f a c to r d e c a rg a m e d io e s 0 .3 7 5 ?
1 9 .1 0 . C u a n d o w e je c u ta e l p ro c e s o d e l re h a s h in g . s e h o c e n ( H H ) in te n to s p ara 19.19. R e a lic e sim u lac io n e s p a ra c o m p a ra r la e fic ie n c ia d e l h a sh in g c o n lo s re ­
in s e rta r .V e le m e n to s . D é u n a e s tim a c ió n d e l n u m e ro d e in te n to s (e s d e c ir. s u lta d o s te ó ric o s. D e c la re u n a ta b la h ash c o n e x p lo ra c ió n . In s e rte e n e lla
N o 2 N o a lg o s im ila r) n e c e s a rio . In d ic a n d o : C a lc u le e l c o s te m e d io de I0.IMN) e n te ro s g e n e ra d o s a le a to ria m e n te y c a lc u le e l n ú m e r o m e d io dc
u n a in s e rc ió n e n la n u e v a ta b la E n d ic h a s in s e rc io n e s e l ta c to r d e c a rc a p ru e b a s re a liz a d a s É ste e s e l c o s te m e d io d e u n a b ú s q u e d a e x ito sa . R e p i­
v aría d e s d e 0 a 0 .2 5 . ta e l te st s a n a s v e c e s p a ra o b te n e r u n a m e d ia a ju s ta d a > re a lic e las p r u e ­
19 . 11. B a jo c ie ñ a s h ip ó tesis, e l c o s te e sp e ra d o d e u n a in se rc ió n e n u n a ta b la h a sh b a s p a ra las e x p lo ra c io n e s lin e a l y c u a d rá tic a , c o n fa c to re s d e c a rg a 0 .1 .
c o n a g ru p a c ió n se c u n d a n a v ie n e d a d o p o r I ( I ln ( I - 0 .2 0 .9 IX*be d e c la ra rs e la ta b la d e m o d o q u e n u n c a s e a n e c e sa rio el
D e s g ra c ia d a m e n te , e s ta fó rm u la n o e s a ju s ta d a p a ra la e x p lo ra c ió n c u a ­ re h a s h in g P o r e je m p lo , e n e l te s t c o n fa c to r d c c a rg a 0 .4 d e b e r ía d e c la ­
d rá tic a P ese a e llo , a s u m ie n d o q u e lo fu e ra , d e te rm in e lo sig u ie n te : ra rse u n a ta b la d e ta m a ñ o a p ro x im a d o 2 5 .0 0 0 (a jú ste s e p a ra q u e s e a un
n ú m e ro p rim o ).
<i) E l c o s te e s p e r a d o «Ic u n a b ú sq u e d a sin é x ito .
19.20. C o m p a re e l tie m p o n e c e s a r io p a ra la s b ú s q u e d a s e x ito s a s y la s in s e rc io ­
h) E l c o s te e s p e r a d o d e u n a b ú sq u e d a e x ito sa .
n e s e n u n a ta b la h a s h c o n h a sh in g e n la z a d o y fa c to r d e c a rg a I y u n a ta ­
b la h a s h c o n e x p lo r a c ió n c u a d rá tic a y fac to r d c c a rg a 0 .5 . R e a lic e las
1 9 .1 2 . E m p le a m o s u n a ta b la h a sh c o n e x p lo ra c ió n c u a d rá tic a p a ra a lm a c e n a r
p ru e b a s c o n e n te ro s, c a d e n a s y re g istro s c o m p lic a d o s e n lo s q u e la c la v e
l()(KX) o b je to s d e tip o S t r i n g . S u p cm g am o s q u e e l fa c to r d c c a rg a e s 0 .4
y q u e la lo n g itu d m e d ia d e las c a d e n a s e s 8 . D e te rm in e lo sig u ie n te : s e a u n a c ad en a
1 9 .2 1 . U n p ro g r a m a e n B A S IC c o n s is te e n u n a s e r ie d c in s tru c c io n e s, n u m e ra ­
a) E l ta m a ñ o d e la ta b la h a sh d a s to d a s e lla s e n o rd e n a sc e n d e n te . E l ccHitrol ve tra n s m ite e m p le a n d o
hí L a c a n tid a d d c m e m o ria e m p le a d a p a ra a lm a c e n a r lo s 10 0 0 0 o b je to s u n a in s tru c c ió n g a lo o g o s n b y u n n ú m e r o d c in s tru c c ió n . E sc rib a u n p ro ­
d c tip o S t r i n g . g ra m a q u e le a u n p ro g ra m a c o rr e c to e n B A S IC y n u m ere d e n u e v o sus
c) la i c a n tid a d d e m e m o n a a d ic io n a l e m p le a d a p o r la ta b la hash in s tru c c io n e s d c m o d o q u e la p rim e ra e m p ie c e e n e l n ú m e ro F y c a d a ins
di L a m e m o ria t«*tal q u e n e c e sita la ta b la h ash . tra c c ió n te n g a u n n ú m e ro D m a y o r q u e la a n te rio r. IX-bc a su m irs e u n li­
r) F.I c o s te e n e sp a c io . m ite m á x im o d e N in s tru c c io n e s , p e ro lo s n ú m e ro s d e las m ism a s e n la
e n tra d a p o d ría n se r ta n g ra n d e s c o m o u n e n te r o d e 32 b its. S u p ro g ra m a
d e b e e je c u ta rs e e n tie m p o lin e a l.
Problem as p rácticos 19.22. D ise ñ e u n a p p le t q u e ilu s tre e l f u n c io n a m ie n to d e la e x p lo r a c ió n c u a ­
d rá tic a .
19.13. Im p le m e n te la e x p lo ra c ió n lin eal.
19.14. Im p lem en to e n la c la s e d e la s ta b la s h a s h c o n e x p lo ra c ió n , e l c ó d ig o del
re h a s h in g sin re a liz a r n in g u n a lla m a d a re c u rs iv a a i n s e r t a r .
Bibliografía
1 9 .1 5 . E x p e rim e n te c o n la ta b la h a s h q u e e x a m in a u n c a rá c te r a le a to rio e n una
c a d e n a ¿ E s e s ta u n a o p c ió n m e jo r q u e la a d o p ta d a e n e l te x to ?
1 9 .1 6 . M o d ifiq u e la c la s e d e la s ta b la s h a s h d c m o d o q u e la o p e ra c ió n e s V a c i a A p e sa r d e la a p a re n te s im p lic id a d d e l h a sh in g . g ra n p a ite d e s u a n á lisis e s m u y
s e e je c u te e n tie m p o c o n sta n te c o m p lic a d o y a u n hay m u c h a s c u e s tio n e s sin re s o lv e r E x iste n d iv e r s o s te m a s te ó ­
1 9 .1 7 . M o d ifiq u e e l a lg o ritm o d e e lim in a c ió n d c m in io q u e e l ta c to r d e carg a ric o s m u y in te re s a n te s e n re la c ió n c o n e l in te n to d e d is m in u ir la p o t a b i l i d a d del
s ie m p re se e n c u e n tre p o r d e b a jo d e I X. y s e e je c u te e l re h a s h in g p ara m al fu n c io n a m ie n to d e l m é to d o d e h ash in g .
m a n te n e r la ta b la m e d io lle n a. D e b e m a n te n e rs e u n c a m p o d e d a to s a d i­ U n a rtíc u lo p io n e ro so b re re h a s h in g e s 1 11|. E n | 6 | p u e d e e n c o n tra rs e v a lio sa
cio n a l. ¿ P o r q u é ? in fo rm a c ió n a c e rc a d e e s te te n ia , in c lu y e n d o u n a n á lis is d e l h a s h in g c e rr a d o c o n
e x p lo ra c ió n lin e a l. E l h a s h in g d o b le se a n a liz a e n |5 ) y | 7 | O tr o e s q u e m a d c re s o ­
lu c ió n d e c o n flic to s e s e l h a s h in g c o a lts c e n ie , d e s c r ito e n 112 1. U n e x c e le n te re s u ­
P rácticas d e p ro g ra m a c ió n m en so b re e l te m a p u e d e e n c o n tr a rs e e n | 8 | ; |9 | re a liz a s u g e re n c ia s y a d v e rte n c ia s
s o b re la e le c c ió n d e la s fu n c io n e s d e lo c a liz a c ió n . E n | 4 | p u e d e n e n c o n tr a rs e p re ­
19.18. E lija u n d ic c io n a rio d e g ra n ta m a ñ o C re e u n a ta b la h a sh den v e c e s m ás c is o s re s u lta d o s a n a lític o s y d e s im u la c ió n a c e rc a d e to d o s lo s m é to d o s d e s c rito s
g ra n d e q u e e l d ic c io n a rio . A p liq u e a c a d a p a la b ra la fu n c ió n d e lo c a liz a ­ e n e s te c a p ítu lo Y a o | I 3 | m u e s tra q u e e l h a s h in g u n ifo rm e , e n e l q u e n o e x iste
c ió n d e s c r ita e n e l te x to , a lm a c é n e la y c u e n te e l n ú m e r o d c v e ces q u e se n in g ú n tip o d c a g ru p a c ió n , e s ó p tim o re s p e c to a l c o s te d c u n a b ú sq u e d a e x ito sa.
in d e x a c a d a p o sic ió n . IX- e s te m o d o s e o b te n d rá u n a d is trib u c ió n . C ierto S i s e c o n o c e n c o n a n te la c ió n las c la v e s d e e n tra d a , e n to n c e s e x is te u n a tu n
p o rc e n ta je d c la s p o sic io n e s n o s e in d e x a ra n u n c a , a lg u n a s lo s e rá n una c ió n h a sh p e rf e c ta q u e e v ita c u a lq u ie r c o lis ió n 111. O tro s e s q u e m a s d e h a sh in g a l­
v e z . o tr a s d o s v e c e s y a s i su c e siv a m e n te . C o m p a re e s ta d is trib u c ió n c o n g o m á s c o m p lic a d o s , e n lo s q u e e l c a s o p e o r n o so lo d e p e n d e d e la e n tra d a sin o
la q u e se o b tie n e c o n v a lo re s a le a to rio s, u n ifo rm e m e n te d is trib u id o s , u ti­ ta m b ié n d e c ie r to s n ú m e ro s a le a to rio s e le g id o s, a p a re c e n e n | 2 | y | 3 | - E s to s e s q u e ­
liz a n d o la d is c u s ió n so b re e llo s d e la S e c c ió n 9 .3 . m a s g a ra n tiz a n q u e e n e l c a s o p e o r s e p ro d u c e u n n ú m e r o c o n sta n te d e c o lisio n e s
(a u n q u e la e la b o ra c ió n d e la fu n c ió n h a sh p u e d e n c c c s ila r g ra n c a n tid a d d e tie m p o
c a p í t u l o _______________________________________________________________________
e n e l im p ro b a b le c a s o d e q u e s e u tilic e n n ú m e ro s a le a to rio s in ad ec u ad o s» . S«*n
mu> ú tile s e n la im p le m e n ta c ió n e n h a rd w a re d e las ta b la s h ash .
E n | l ü | p u e d e e n c o n tra rs e o tr o m é to d o p a ra re s o lv e r e l E je rc ic io 19.8. 20 Una cola de prioridad:
1.

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 .

4. C». H G onnet y R B a e /a Y a te s. H a n d h o o k o f A lg o r ith m s a n d l)„ ta


S tn u t u r e s . 2 . ' e d . A d d iso n -W e sle y . R e a d in g . M a ss (1 9 9 1 ).

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

6. I). E. K n u th . T he A r t o f C o m p u te r T i'o g ru m m in g , V o l. 3: S o r tin g a n d


S e a r th m g . 2 .a e d .. A d d iso n -W e sle y . R e a d in g . M a s s. (1 9 9 7 ).
L e l a c c e s o a l e le m e n to m ín im o . E n e s te c a p ítu lo s e e s tu d ia u n a im p le m e n ta -
c ió n d e la c o la d e p rio rid a d , e l e le g a n te m o n tíc u lo lu n a rio . E l m o n tíc u lo b i ­
n a rio s o p o rta la in s e rc ió n d e n u e v o s e le m e n to s y la e lim in a c ió n d e l e le m e n to m í­
7. G L u e k e r y M . M o lo d o w itc h . « M o re A n a ly sis o f D o u b le H a s h in g - . n im o e n tie m p o lo g a r ítm ic o e n e l c a s o peor. S o la m e n te u s a un v e c to r y e s m uy
C o m b i n a to r i a 13 1 1993). 8 3 -9 6 . sim p le d e im p le m e n ta r
E n e s te c a p ítu lo e s tu d ia re m o s.
8. W . D M au rcr y T . G . L e w is. -H a s h T a b le M e th o d s - . C o m p u tm v S u r-
x e y s 7 1 1975). 5 -2 0 . • L a s p ro p ie d a d e s b á s ic a s d e lo s m o n tíc u lo s b ín a n o s .
• C ó m o se p u e d e n c o d if ic a r las o p e ra c io n e s i n s e r t a r y e l i m i n a r M i n para
9. B J M c K e n /ie . R H a rrie s , y T B ell. -S e lc c lin g a H a sh in g A lg o rith m -.
q u e se e je c u te n e n tie m p o lo g a rítm ic o .
S o ftw a r e P r a c tic e a n d E x p e h e n c t 2 0 (1 9 9 0 ). 2 0 9 -2 2 4 .
• U n a lg o ritm o lin e a l d e c o n s tru c c ió n d e m o n tícu lo s.
10. R M o rris. « S c u ltc r S to ra g c T e c h m q u e s -. C o m m u n ic a tio n s o f th e A C M • U n a im p le m e n ta c ió n e n Ja v a .
I I (1 9 6 8 ), 3 8 -4 4 . • U n a lg o ritm o d e o rd e n a c ió n fá c ilm e n te im p le m e n ta b lc : e l m é to d o d c l m o n tí­
c u lo (h e a p s o r t). q u e s e e je c u ta e n u n tie m p o O iN log N ) s in re q u e rir n in g u ­
11. W . W . P e le rs o n . -A d d re s s in g fo r R a n d o m A c c e ss S to r a g e - . IH M J o u r ­
n a l o f R e se a rc h a n d D e v e lo p m e n t I (1 9 5 7 ). 130-146 n a m e m o ria a d ic io n a l.
• C ó m o s e p u e d e n u tiliz a r lo s m o n tíc u lo s p a ra im p le m e n ta r la o rd e n a c ió n e x ­
12. J S. V itte r. « Im p le m e n ta tio n s fo r C o a lc s c e d H a s h in g - . In fo rm a tio n P r o ­ tern a
c e s s in g L e l l e n 11 (1 9 8 0 ). 8 4 -8 6 .

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

/• < V 3 im p o rt S o p o r t o . * ; Im port S o p o rto .C o m p a ra b lo :


4 im p o rt E x c e p c io n e s .• ;
5
6 I I C la s e M o n ticu io B ln ario
7 //
Figuro 20 2 P ro o e O o d cíe o rd eo o ció n O e ios m ontículos 8 // CONSTRUCCIÓN: c o n u n c e n t i n e l a c o n u n v a l o r m enos i n f i n i t o

10 // .................................................... OPERACIONES PÚBLICAS..................................................


11 ll v o id i n s e r ta n x > --> I n s e r ta x
12 II C o rt¥ » arab le e l i m i n a r M i n ! ) - - > E l i m i n a y d e v u e l v e e l m enor
13 H C uir*>arable b u s c a r M i n ! ) - - > D e v u e lv e e l m enor e le m e n to
U // b o o lean e s V a c ia < ) - - > D ev u elv e t r u e s i e s t a v a c io
15 // v o id v a c ia r! I - - > E lim in a to d o s lo s « lem o n to s
16 // v o id in tr o d u c ir! x I - - > I n s e r t a x « p erezo sam en teI
17 ....................... • ERRORES** *
16 b u scarM in y e lim in a rM in la n z a n D e sb o rd o m ie n to ln fe i io r s i v a c io
19
20
21 Im p le m en ta u n m o n tí c u lo b i n a r i o .
Figuro 20 3 Dos órbo*es co m p leto s (só*o e l d o lo eq tserd a e s u » m ontículo) 22 P e r m ite i n s e r c i ó n p e r e z o s a y p r o p o r c i o n a un m étodo l i n e a l de
23 c o n s tru c c ió n de m o n tíc u lo s.
24 O b s e r v e »rue t o d a s l a s c o m p a r a c i o n e s e s t á n b a s a d a s e n c o r p a r a .
25
e n c o n tra ra m iu .h U » e n la r a í / S i c o n s id e ra m o s q u e c u a lq u ie r s u b á ih o l ta m b ié n d e ­
26 p u b lic c l a s s M o r.tic u lo B in a rio im p lem ents C o la P r io r id a d
b e ría se r un m o n tíc u lo (r e c u rs iv a m e n te ). e n to n c e s c a d a n o d o d e b e se r m e n o r que 27 (
to d o s m i s d e s c e n d ie n te s . A p lic a n d o e s te r a /o n .iu u e n io o b te n e m o s la p ro p ie d a d d e 28 p u b lic M o n tic u io B ln a r lo ( C o m p arab le in lN eg )
o rd e n a c ió n d e lo s m o n tícu lo s. 29 { /* F ig u ra 2 0 .7 • / )
30 p u b lic v o id i n s e r t a r ! C o m p arab le x )
31 ( /* F i g u r a 2 0 .1 2 • / )
PROPIEDAD DE O R D E N A C I Ó N DE UN M O N TÍC U LO 32 p u b lic v o id i n t r o d u c i r ! C om parable x )
En un m ontículo, p a ra c a d a nodo X co n p a d re P. se cum ple q u e e l 33 ( /* F ig u r a 2 0 .1 2 • / )
d a to en P es m enor o ig u al q u e e l d a to en X 34 p u b lic C om parable b u sc a rM in ! ) th ro w s D e s b o rd a m ie n to ln f e r i o r
35 ( /* F ig u ra 2 0 .6 • / )
36 p u b lic C om parable e lim in a r M in ! ) th r o w s D e s b o r d a a u e n t o ln l e r io r
E n la F ig u ra 2 0 .2 se ilu stra la p ro 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. En 37 ( /• F ig u ra 2 0 .1 6 • / )
la F ig u ra 2 0 .3 . e l á rb o l d e la i/q u ie r d a e s u n m o n tíc u lo , p e r o e l d e la d e re c h a n o I** 38 p u b lic b o o le a n e s V a c ia ! )
e s (la lín e a p u n te a d a m u e s tra e l lu g a r e n e l q u e se v io la la p ro p ie d a d ! O b se rv e 39 { r e t u r n ta m A c tu a l »» 0; )
40 p u b lic v o id v a c ia r! )
q u e la r a í / n o n e n e p a d re . E n la re p r e s e n ta c ió n im p líc ita , p o d e m o s c o lo c a r e l v a ­
41 ( tam A ctu al = 0 : )
lo r x e n la p o s ic ió n 0 p a ra e lim in a r e s ie c a s o e s p e c ia l c u a n d o im p lc m c n ta -
Figuro 20.4 E sq u e le to d e la d o s © M o n t i c u l o B i n a r i o ( p o rto l s e c c i ó n p i l l e a )
m o s lo s m o n tíc u lo s . P o r la p ro p ie d a d d e o r d e n a c ió n , v e m o s q u e e l m e n o r e l e ­
m e n to s ie m p re s e p u e d e e n c o n tr a r e n la r a í / , d e m o d o q u e b u s c a r M i n se p u e d e
e je c u ta r e n u e m p o c o n s ta n te . L o s m o n tíc u lo s m m i n w l e s s o p o rta n a c c e s o a l m á ­ 42 p r í v a t e i n t tam A c tu al; I I N úm ero d e e l e m e n t o s d e l m o n t í c u l o
x im o e n lu g a r d e a l m ín im o . P a ra im p lc m c n ia r lo s b a s ta c o n h a c e r u n o s m ín im o s 43 p r í v a t e b o o le a n o rd e n a d o ; I I T ru e s i ru m p ie p r o p ie d a d o r d e n a c ió n
c a m b io s. 44 p r í v a t e C o m p a ra b le | | v e c t o r ; l l E l v e c t o r d e l m o n tíc u
45 p r i v a t e s t a t i c f i n a l i n t CAPACIDAD = 1 1 ;
46
47 p r i v a t e v o i d o b t e n e r V e c t o r < i n t nuevoTa-xM ax )
20.1.3 O peraciones permitidas 48 ( /* F i g u r a 2 0 .8 • /
49 p r í v a t e v o i d coetprobarT am I
A h o ra q u e h e m o s fijad»» la re p r e s e n ta c ió n , p o d e m o s e m p e z a r a e s c r ib ir c ó d ig o 50 ( / • F ig u r a 2 0 .1 1 */ 1
51 p r í v a t e v o id h u n d ir! in t hueco >
V a s o b e m o s q u e n u e s tro m o n tíc u lo s o p o r ta la s o p e ra c io n e s b á s ic a s i n s e r t a r . 52 ( / • F i g u r a 2 0 .1 7 • / )
b u s c a r M i n y e l i m i n a r M i n . y ta m b ié n la s h a b itu a le s e s V a c i o y v a c i a t A ñ a ­ 53 p r í v a t e v o i d a r r o g l arM ont. i c u l o ! )
d ire m o s a d e m á s a lg u n o s o p e ra c io n e s m ás. L a F ig u ra 2 0 .4 m u e s tra la s e c c ió n p u ­ 54 < / • F i g u r a 2 0 .1 9 * / )
b lic a d e la c la s e e ilu stra a lg u n o s d e cst»»s m é to d o s a d ic io n a le s . L a F ig u ra 20.5 55 )
c o n tie n e la p a rte p riv a d o d e la c la s e . Ftauro 20.5 E s a u e ie to d e la c k n e M o n t i c u i o B i n a r i o (p a r t e 2 s e c c ió n p rtv o d a )
C o m e n /a m o s e x a m in a n d o los m éto d o s p ú b lic o s El c o n stru c to r se d e c la ra e n la 1 /••
lín ea 28. m ientras q u e e l m éto d o i n s e r t a r ap arece e n la 3 0 A ñ a d e u n n u ev o ciernen- 2 * C o n stru y e e l m o n tíc u lo b in a r io .
3 • f l p a r a m i n t h ’e g u n v a l o r m e n o r o i g u a l q u e t o d o o lo s dem ás.
lo x al m ontículo, realizando las o p eraciones n ecesarias p ara m antener la p m p ied ad de
ordenación del m ontículo. En la línea 3 2 s e añ ad e u n m éto d o n u ev o , i n t r o d u c i r , el 5 p u b l i c M o n t i c u 1oB i n a r i o ( C o m p a r a b l e in fN eq >
cual añade un nuevo elem en to x a l m ontículo. pcn> no garantiza q u e se m an ten g a la 6 (
propiedad d e ordenación d e l m ontículo. ¿ P ara q u é q u erríam o s i n t r o d u c i r un d e m e n ­ 7 t a m A c t u a l * 0;
to e n e l m o n tíc u lo ? lu í re s p u e sta e s q u e I n t r o d u c i r e s u n m é to d o m u c h o m ás 8 o rd en ad o - t r u e ;
9 o b t e n e r V e c t o r ( CAPACIDAD ) :
se n c illo d e im p le m e n ta r q u e i n s e r t a r . P o r su p u e sto , tan p ro n to c o m o re a liz a m o s
10 v e c t o r I 0 1 ■ InfíJeg;
u n a o p eració n i n t r o d u c i r . y a n o te n e m o s u n m o n tíc u lo , p o r lo q u e n o d e b e m o s 11 )
e s p e ra r q u e fu n cio n en c o rre c ta m e n te la s o p e ra c io n e s b u s c a r M i n o e l i m i n a r M i n .
Figuro 20.7 Constructor poro M o n t í c u l o B i n a r i o
P o r eje m p lo , si q u e re m o s i n t r o d u c i r un n u ev o m ín im o , n o te n e m o s g a ra n tía s de
q u e se situ a rá e n la ra íz (d e h e c h o e s d e e s p e r a r q u e n o l o haga».
E n c o n se c u e n c ia , u sa r i n t r o d u c i r p a re c e u n a id e a to n ta . P e ro n o l o e s , p o r ­
q u e h a y m u c h a s a p lic a c io n e s e n la s q u e p o d e m o s te n e r q u e i n t r o d u c i r m u ch o s 2 * M étodo p r i v a d o p a r a r e s e r v a r m e x c r ia p a r a e l v e c t o r .
3 * In c lu y e una p o s ic ió n e x tr a p a ra e l c e n t i n e l a .
e le m e n to s a n te s d e q u e se p ro d u z c a la sig u ie n te lla m a d a a e l im in a r M in . E n tal
4 • S p a r a ir . n u e v o T a m M a x l a c a p a c i d a d d e l m o n t í c u l o .
c a s o , n o n e c e s ita m o s m a n te n e r e l m o n tíc u lo o rd e n a d o h a s ta q u e se p ro d u z c a la
lla m ad a a © 1 I m i n a r M i n . L a o p e ra c ió n a r r e g l a r M o n t i c u l o . d e c la ra d a e n la lí­ 6 p r í v a t e v o id o b ter.erV ec to r ( i n t n ue v o T a m M ax 1
n e a 5 3 . rce sta b lc c c e l o rd e n e n e l m o n tíc u lo e n tie m p o lin e a l, sin im p o rta r lo d e s o r­ 7
d e n a d o q u e se e n c u e n tre . L u eg o , p o r e je m p lo , si q u e re m o s c o lo c a r A’ e le m e n to s en 8 v ecto r - new C o m p a r a b l e ! n ue v o T a m M ax * 1 1 ;
9 )
e l m o n tíc u lo a n te s d e e je c u ta r la p rim e ra o p e ra c ió n « 1 i m in a rM in . e s m á s e fic ie n te
e je c u ta r N o p e ra c io n e s i n t r o d u c i r y u n a a r r e g l a r M o n t l e u l o q u e N o p e ra c io ­ Figuro 20.8 R eserva d e m em oria p a ra e l v e c to r (m éto d o la m o d o por e l construc­
nes i n s e r t a r . S in e m b a rg o , n o u sa re m o s i n t r o d u c i r e n su stitu c ió n d e só lo u nos tor v du ran te la dupbcoción d e l tam añ o del vecto r)
pocos i n s e r t a r . E l m é to d o a r r e g l a r H o n t i c u l o e s p riv a d o , y su u s o e s tr a n s ­
p a re n te E l re s to d e a trib u to s s o n lo s q u e y a so sp e c h á b a m o s: u n v e c to r a l q u e se a sig n a
E l re s to d e las o p e ra c io n e s so n c o m o e sp e ra n n is. E n la lin e a 34 s e d e c la ra m e m o n a d in á m ic a m e n te y u n e n te r o q u e a lm a c e n a e l ta m a ñ o a c tu a l d e l m o n tíc u ­
b u s c a r M in . q u e d e v u e lv e e l e le m e n to m ín im o E l m é to d o e l i m i n a r M i n . e n la lo F.l c o n s tru c to r , m o s tra d o e n la F ig u ra 2 0 .7 . in ic ia liz a lo s a trib u to s, a sig n a n d o
lín e a 3 6 . d e v u e lv e y e lim in a e l e le m e n to m ín im o . T a m b ié n se p ro p o rc io n a n , e n la s t r u e a o r d e n a d o y re s e rv a n d o d e s p u é s m e m o ria p a ra e l v e c to r m e d ia n te u n a lla ­
lín e a s 3 8 a 4 1 . lo s h a b itu a le s e s V a c i o y v a c i a r . m a d a a o b t c n c r V e c t o r . e n la lín e a 9 . D e sp u é s, e n la lín e a 10. se c o lo c a e l c e n ti­
I n a v ez p ro c e s a m o s u n a o p e ra c ió n i n t r o d u c i r ,e l u s u a rio n o p u e d e re a liz a r n e la e n la p o s ic ió n 0 . E l u s u a rio d e b e p ro p o rc io n a r a l c o n s tru c to r i n f N e g c o m o
u n a o p e ra c ió n b u s c a r M i n n i e l i m i n a r M in sin re a liz a r a n te s una o p e ra c ió n u n p a rá m e tro . E l c u e r p o d e o b t c n c r V e c t o r . m o s tra d o e n la F ig u ra 2 0 .8 . c o n s la
a r r e g l a r M o n t i c u l o . E n lu g a r d e c o n fia r e n q u e e l u s u a rio h a g a e s ta llam ad a, d e u n a s o la linca.
m a n te n e m o s u n a trib u lo o r d e n a d o , q u e to m a e l v a lo r f a i n o c u a n d o u n a a p lic a ­
c ió n d e i n t r o d u c i r p ro d u c e u n a v io la c ió n d e l o rd e n e n e l m o n tíc u lo . L a F ig u ra
20.6 m u e s tra q u e b u s c a r M i n c o m p ru e b a si s e s a tis fa c e la p ro p ie d a d d e o rd e n a ­ 20.2 lm plem entación d e las o p eracio n es básicas
c ió n d e m o n tíc u lo , y e n c a s o d e n o se r a sí. p ro d u c e a u to m á tic a m e n te u n a lla m a d a
a a r r e g l a r M o n t i c u l o p a ra re s ta b le c e r la p ro p ie d a d
L a p ro p ie d a d d e o rd e n a c ió n p a re c e b u e n a h a s ta e l m o m e n to , p u e s to q u e p erm ite
u n rá p id o a c c e s o a l e le m e n to m ín im o A h o ra d e b e m o s m o s tra r q u e p o d e m o s so ­
1 p o rta r e fic ie n te m e n te la s o p e ra c io n e s i n s e r t a r y e l i m i n a r M i n , h a c ié n d o lo e n
2 • B usca e l « la w n t o n á s p e q u e ñ o er. l a c o l a d e p r i o r i d a d .
un tie m p o lo g a rítm ic o . E s fá c il, c o n c e p tu a l y p rá c tic a m e n te , re a liz a r las d«>s o p e ­
3 * flre tu rn «1 e le m e n to m ás p e q u e ñ o .
4 • í a x c e p t io n D e s b o r d a m ie n to ln te r ío r si la c o la e s t a v a c ia . ra c io n e s re q u e rid a s. T o d o e l tr a b a jo im p lic a d o s e e n c u e n tra e n m a n te n e r la p ro p ie ­
d a d d e o rd e n a c ió n d e l m o n tícu lo .
6 p u b l i c C o m p a ra b le b u sc a rM in ( I th ro w o D o s b o r d a m ie n to ln te r io r

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

l.a o p e ra c ió n e i i m i n a r M i n s e re a liz a d e lo rm u sim ila r a la s in s e rc io n e s . C o m o


y a h e m o s v isto , e n c o n tra r e l m ín im o e s fá c il; la p a n e d ifíc il e s e lim in a rlo . C u a n d o
s e e lim in a e l m ín im o , s e c re a u n h u e c o e n la ra iz . P u e s to q u e e l m o n tíc u lo tie n e
a h o ra un e le m e n to m e n o s , la p ro p ie d a d e s tru c tu r a l n o s d ic e q u e s e d e b e e lim in a r
e l ú ltim o n o d o . l-a F ig u r a 2 0 .1 3 m u e s tra la s itu a c ió n : e l e le m e n to m ín im o e s 13.
la r a íz tie n e u n h u e c o y e l ú ltim o e le m e n to d e b e c o lo c a rs e e n a lg ú n lu g a r del
m o n tícu lo .
Si e l ú ltim o e le m e n to s e p u d ie ra c o lo c a r e n e l h u ec o , y a h a b ría m o s te rm in a d o Figuro 20.15 Últimos do s pasos d e e i i m i n a r M i n
P e ro e s to e s im p o s ib le , a m e n o s q u e e l ta m a ñ o d e l á rb o l s e a 2 o 3 . p o rq u e lo s e le ­
m e n to s d e la p a rte in f e rio r so n m á s g ra n d e s q u e lo s d e l se g u n d o n iv e l. D e b e m o s
h a c e r lo m ism o q u e e n la in s e rc ió n : p o n e r a lg ú n e le m e n to e n e l h u e c o y d e sp u é s 2 • Elimina • : el e m e n t o mínimo d o l a c o l a d e prioridad.
3 • «exception D e s b o r d a m i e n t o l n f e r i o r si l a c o l a e s t á v acia.
m o v e r e l h u eco . L a ú n ic a d ife re n c ia e s tá e n q u e e n e l i m i n a r K i n . n o s m o v e m o s
h a c ia a b a jo . P ara h a c e r e s to , b u sc a m o s e l h ijo d e l h u e c o c o n e l e le m e n to m á s pe 5 public Comparable elíminazMin( ) throws Desbordamientolníerior
q u e ñ o . S i e s e e le m e n to e s m e n o r q u e e l q u e e s ta m o s in te n ta n d o c o lo c a r, m o v e m o s 6 {
7 C o m p a r a b l e c l e m M i n »b u s c a r M i n ! >:
el h ijo a l h u e c o , e m p u ja n d o a s í e l h u e c o un n iv e l h a c ia a b a jo . L n la F ig u ra 2 0 .1 4 .
8 v e c t o r [ 1 1 = v e c t o r [t a m A c t u a l - - I;
c o lo c a m o s e l h ijo m á s p e q u e ñ o (1 4 ) e n e l h u e c o , m o v ie n d o e l h u e c o u n n iv e l h a ­ 9 hundir) l );
c ia a b a jo . R e p e tim o s e s to d e n u e v o , c o lo c a n d o 19 e n e l h u e c o y c re a n d o un n u e v o 10
h u e c o u n n iv e l m ás a b a jo . E n to n c e s c o lo c a m o s 2 6 e n e l h u e c o y c re a m o s un n u e ­ 11 return eLe m M i n ;
12 )
v o h u e c o e n e l ú ltim o n iv e l. F in a lm e n te , p o d e m o s c o lo c a r 31 e n e l h u e c o , c o m o se
m u e s tra e n la F ig u ra 2 0 .1 5 . E s fácil v e r q u e é s ta e s u n a o p e ra c ió n lo g a rítm ic a en Figuro 20.16 M é to d o e i i m i n a r M i n
e l c a s o p e o r. L la m a m o s a e s te p ro c e s o h u n d im ie n to . N o e s s o rp re n d e n te q u e el
h u n d im ie n to ra ra m e n te te rm in e a n tes d e b a ja r u n o o d o s n iv e le s, p o r lo q u e la a b u s c a r M i n e n la lín e a 7. El v e rd a d e ro tra b a jo lo lle v a a c a b o h u n d i r , q u e se
o p e ra c ió n e s ta m b ié n lo g a rítm ic a e n e l c a s o m ed io . m u e s tra e n la F ig u ra 2 0 .1 7 . El c ó d ig o a q u í m o s tra d o e s sim ila r e n e sp íritu a l del
I-a F ig u ra 2 0 .1 6 m u e s tra e l m é to d o e i i m i n a r M i n . L a s c o m p ro b a c io n e s de re flo ta m ie n to e n e l m é to d o i n s e r t a r . D e b id o a q u e h a y d o s h ijo s e n lu g a r d e un
m o n tíc u lo v a c ío > d e o rd e n a c ió n se re a liz a n a u to m á tic a m e n te a tra v é s d e la lla m a d a p a d re , e l c ó d ig o s e c o m p lic a un p o c o m á s . El m é to d o h u n d i r to n ta u n ú n ic o a r­
g u m e n to q u e n o s d ic e d ó n d e s e v a a c o lo c a r e l h u e c o . E n to n c e s e l e le m e n to s itu a ­
d o e n e l h u e c o s e e lim in a y c o m ie n z a e l h u n d im ie n to .

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-

Figura 20 22 M o n "c u » "O S u « a m a d a o h u n d i r . 4 1 (O lo «*~ d d ,: y "O S IO lo-


F igu ra 20 18 Visión recurstva d o l m ontículo m ado o h u n d i r 13 1 ( a lo d erech o ).
r
| O b s e r v e q u e u n a a r is ta n u n c a s e m a r c a d o s v e c e s v q u e se m a rc a n to d a s
la s a r is ta s e x c e p to la s d e l c a m in o d e la d e r e c h a P u e s to q u e lu is N - I
a n s i a s l a c a d a runlo e x c e p to a la r a íz le lle g a u n a a r i s ta ) y I I a rista s e n e l
c a m in o d e la d e re c h a , e l n ú m e ro d e a rista s m a r c a d a s e s N - I ~ H . lo
| q u e c o n c lu y e la d e m o str a c ió n d c l teo rem a .

Figuro 20.23 M ontículo tros la lla m ad a a h u n d i r (2 ) <a ia izquierda), y tras la lla­


m a d a a h u n d i r ( 1) ( a ia d e ro c h a ), ferm cxando asi la e ie cu cló n de
a r r e g l a r M o n t ic u lo .

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 .

U sa n d o las o b s e rv a c io n e s d e la s e c c ió n a n te rio r, p o d e m o s im p le m e n ta r este


p ro c e s o d e fo rm a m á s efic ie n te :

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

E l p a s o I req u ie re un tie m p o to ta l lin e a l y e l p a s o 2 ta m b ié n re q u ie re un tiem ­


Figura 20.27 M a rco d o d e ta prim era an sia izquierda y d e las tres ansias derech as p o lin e a l E n e l p a s o 3, c ad a M antuda a © i i m i n a r M i n e x ig e u n tie m p o lo g a rítm i­
situadas a co n tin u ació n , p a ra tos nodos d e altura 4. c o . c o n lo q u e N lla m a d a s ta rd a n u n tie m p o <>iK lo g V ). E n c o n s e c u e n c ia , te n e ­
m o s u n a lg o r itm o d e o rd e n a c ió n ( K N log V ) e n e l c a s o p e o r, lo q u e e s a l m en o s
U n á rb o l b in a rio c o m p le to n o e s un á rb o l p e rfe c to , p e ro c ! re s u lta d o q u e h e ­ ig u a l d e b u e n o q u e u n a lg o ritm o b a sa d o e n c o m p a ra c io n e s , c o m o s e v ió e n la S e c ­
m o s o b te n id o e s u n a c o ta s u p e rio r d e la s u m a d e las a ltu ra s d e lo s n o d o s d e un c ió n K.8. U n p ro b le m a d e l a lg o ritm o la l y c o m o lo liem o s p re s e n ta d o e s q u e la o r­
á rb o l b in a rio c o m p le to . P u e s to q u e u n á rb o l c o m p le to tie n e e n tre 2 H y 2H * 1 - I d e n a c ió n d e u n v e c to r re q u ie re la c o n s tru c c ió n d e u n a e s tru c tu ra d e d a to s m o n tí­
n o d o s, e s te te o re m a im p lic a q u e la s u m a e s O ( N ) . U n a rg u m e n to m ás c u id a d o s o c u lo . q u e y a c o n lle v a e n s í m ism a la s o b re c a rg a d e im p le m c n ia rse c o m o un
e sta b le c e q u e la s u m a d e la s a ltu ra s e s N - \ i N ) . d o n d e \ i N ) e s e l n ú m e ro de v ecto r. S e ría p re fe rib le e m u la r e l m o n tíc u lo , e n lu g a r d e u sa r to d a la p a ra le m a lia
u n o s e n la re p re se n ta c ió n b in a ria d e iV. Se d e ja c o m o E je rc ic io 2 0 .1 2 la d e m o s tra ­ d e la c la s e d e lo s m o n tíc u lo s. S u p o n d re m o s p a ra e l re s to d e e s ta d is c u sió n q u e v a ­
ció n d e e s te re su lta d o . m o s a h a c e r esto.
P e ro , in c lu s o a u n q u e n o u se m o s d ire c ta m e n te la c la s e d e lo s m o n tíc u lo s, te n e ­
m o s e l p ro b le m a d e te n e r q u e u tiliz a r un se g u n d o v e c to r, y a q u e te n e m o s q u e a l­
20.4 O p eracio n es avanzadas: reducirClave m a c e n a r e n esc se g u n d o v e c to r e l o rd e n e n e l q u e lo s e le m e n to s v a n sa lie n d o del
y mezclar e q u iv a le n te a l m o n tíc u lo , p a ra d e s p u é s c o p ia r lo e n e l o rig in a l. S e h a d o b la d o la
c a n tid a d d e m e m o ria u tiliz a d a , lo c u a l p u e d e s e r c rític o e n a lg u n a s a p lic a c io n e s .
E n e l C a p ítu lo 2 2 se e s tu d ia n u n a s c o la s d e p rio rid a d q u e so p o rta n d o s o p e ra c io ­ O b s e rv e m o s q u e e l tie m p o e x tr a u tiliz a d o e n c o p ia r e l se g u n d o v e c to r e n e l p rim e ­
n e s a d ic io n a le s . L a o p e ra c ió n r e d u c i r c l a v e r e d u c e e l v a lo r d e u n e le m e n to e n la ro . e s so la m e n te t h X ) . p o r lo q u e a d ife re n c ia d e lo q u e s u c e d ía e n la o rd e n a c ió n
c o la d e p rio rid a d . S e su p o n e c o n o c id a la p o sic ió n d e l e le m e n to . E n u n m o n tíc u ­ p o r m e z c la , e l v e c to r a d ic io n a l n o a fe c ta d e fo rm a s ig n ific a tiv a al tie m p o d e e j e ­
lo b in a rio , e s to s e p u e d e c o n s e g u ir fá c ilm e n te re llo ta n d o h a s ta r e s ta b le c e r e l o r­ c u c ió n . E l p ro b le m a e s e l e sp a c io .
d e n e n e l m o n tíc u lo . S in e m b a rg o , d e b e m o s te n e r c u id a d o , y a q u e h e m o s su p u e sto U n a fo rm a in te lig e n te d e e v ita r e l u s o d e un se g u n d o v e c to r h a c e u s o d e l h e - usí

q u e la p o sic ió n d e c a d a e le m e n to s e a lm a c e n a d e fo rm a se p a ra d a . T o d o s los e le ­ cIk> d e q u e d e s p u é s d e c a d a o p e ra c ió n e i i m i n a r M i n . e l m o n tíc u lo tie n e un e le - va|


m e n to s im p lic a d o s e n e l re flo ta m ie n to v e n su s p o sic io n e s m o d ific a d a s. El m éto d o m e n tó m e n o s . E n c o n s e c u e n c ia , la ú ltim a c e ld a d e l v e c to r e s tá d is p o n ib le p u ra a l- ^
r e d u c i r C l a v e e s ú til e n la im p le m e n ta c ió n d e a lg o ritm o s s o b r e g ra to s (p o r e je m ­ m a c e n a r e l e le m e n to e lim in a d o . P o r e je m p lo , su p o n g a m o s q u e le ñ e m o s un
p lo e l a lg o ritm o d e D ijk stm . v is to e n la S e c c ió n 14 3). m o n tíc u lo d e 6 e le m e n to s . L a p rim e ra o p e ra c ió n e l i m i n a r M i n p ro d u c e A y A h o ­
E l a lg o ritm o m e z c l a r c o m b in a d o s c o la s d e p rio rid a d - D e b id o a q u e e l m o n tí­ ra e l m o n tíc u lo tie n e 5 e le m e n to s , p o r lo q u e p o d e m o s c o lo c a r A \ e n la p o s ic ió n 6.
c u lo e s tá b a s a d o e n u n v e c to r, lo m e jo r q u e p o d e m o s e s p e ra r c o n s e g u ir c o n una I-a s ig u ie n te o p e ra c ió n e i i m i n a r M i n p ro d u c e A ¡- P u e sto q u e e l m o n tíc u lo tiene
m e / d a e s c o p ia r lo s e le m e n to s d e l m o n tíc u lo m á s p e q u e ñ o e n e l g ra n d e y re a liza r a lte ra so la m e n te 4 e le m e n to s , p o d e m o s c o lo c a r A : e n la p o s ic ió n 5.
d e sp u é s a lg u n o s a rre g lo s. A u n a s í. e s to lle v a rá u n tie m p o a l m e n o s lin eal p o r o p e ­ B a jo e s ta e s tr a te g ia , e l v e c to r c o n te n d r á , d e s p u é s d e la ú ltim a o p e ra c ió n Sri

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 .

L a F ig u ra 2 0 .2 9 m u e s tra e l m o n tíc u lo re s u lta n te tra s la p rim e ra a p lic a c ió n <k-


e l i m in a r M a x . líl ú ltim o e le m e n to d e l m o n tíc u lo e s 2 1 ; 9 7 s e h a c o lo c a d o e n u n a • M é t o d o e s t á n d a r d** o r d e n a c i ó n m e d i a n t e u n m o n t í c u l o
p a rte d e l v e c to r q u e té c n ic a m e n te y a n o fo rm a p a n e d e l m o n tícu lo . • «param v un v e c t o r do o b j e t o s d e l a c l a s e C om parable
l - i F ig u ra 2 0 .3 0 m u e s tra q u e tra s la s e g u n d a a p lic a c ió n d e e l i m i n a r M a x . 16
se c o n v ie n e e n e l ú ltim o e le m e n to . A h o ra q u e d a n so la m e n te o c h o e le m e n to s e n el p u b lic sta tic v o i d o r d e n a V i a M o n t i c u 1o ( C o m p a r a b l e [ ] v )
m o n tíc u lo . E l m á x im o e le m e n to . 5 9 . q u e h a s id o e lim in a d o , s e c o lo c a e n u n a p o s i­ (
c ió n d e l v e c to r q u e y a n o p e rte n e c e al m o n tíc u lo . D e sp u é s d e e je c u ta r o tr a s s ie te for t in t i = v .le n g th / 2; i >= 0 ; i-- > // C o n stru cció n
h u n d í r 2 ( v . S . v . l e n g t h )¡
o p e ra c io n e s e l i m i n a r M a x m ás. e l m o n tíc u lo c o n te n d rá s ó lo u n e le m e n to , p ero
f o r « in t i = v .le n g th - l ; i > 0; 1— » 1/ e iim in a rM a x
lo s e le m e n to s q u e a p a re c e n e n e l v e c to r s e e n c u e n tra n o rd e n a d o s d e fo rm a c r e ­
c ie n te.
In tercam b iarR eferen cias( v, 0. i );
1.a im p le m e n ta c ió n d e l m é to d o d e l m o n tíc u lo ( o r d e n a V i a M o n t i c u l o ) e s sim ­ h u n d ír2 < v. 0. i I;
p le p o rq u e las o p e ra c io n e s b á sic a s se c o rre s p o n d e n c o n la s o p e ra c io n e s so b re los )
m o n tíc u lo s. H a y tr e s p e q u e ñ a s d ife re n c ia s. E n p rim e r lu g a r, p u e s to q u e e sta m o s 4 )
u sa n d o un m o n tíc u lo m a x im a i, n e c e s ita m o s in v e rtir to d a s la s c o m p a ra c io n e s , p a ­
Figura 20.31 Rutina o r d e n a V i a M o n t i c u l o .
sa n d o d e > a <. F.n se g u n d o lu g ar, y a n o p o d e m o s a s u m ir q u e h a y u n c e n tin e la en
la p o sic ió n 0 . p o rq u e to d o s lo s d e m á s a lg o ritm o s d e o rd e n a c ió n a lm a c e n a n d a to s
e n la p o sic ió n 0 y o r d e n V i a M o n t i c u l o n o d e b e ría s e r d ife re n te e n e s te sen tid o . c o n c re to , d a d o u n n o d o e n la p o sic ió n i. s u p a d re e s tá e n la p o sic ió n ( i - I ) 2 . su
A u n q u e y a n o s e n e c e sita e l c e n tin e la (p o rq u e n o h a y o p e ra c io n e s d e re flo ta m ie n - h ijo iz q u ie rd o e n la 2 / + I . y e l d e re c h o e n la s ig u ie n te al h ijo iz q u ie rd o . E n te rc e r
10). s u a u se n c ia a fe c ta a lo s c á lc u lo s d e la s p o sic io n e s d e lo s h ijo s y d e l p a d re . E n lu g a r, h u n d i r 2 n e c e sita s e r in fo rm a d o d e l ta m a ñ o a c tu a l d e l m o n tíc u lo (q u e se
re d u c e e n 1 e n c a d a ite ra c ió n d e e i i m i n a r M a x » . L a im p le m e n ta c ió n d e h u n d i r 2
s e d e ja c o m o E je rc ic io 2 0 .2 0 . S u p o n ie n d o q u e h e m o s e s e n t o h u n d i r 2 . en to n c e s
e l a lg o r itm o o r d e n V i a M o n t i c u l o s e p u e d e e x p re s a r fá c ilm e n te , c o m o s e m u e s­
tra e n la E ig u ra 20.31.

20.6 O rd en ació n externa

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

Al 11 12 15 17 28 35 41 58 75 81 94 96 99 Figura 20 38 Sltuoción después d e u n a ro n d a a e m ezcla 3-ana (lo longitud d e la

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

m e z c la b u sica d e d o s c in ta s a u n a m e z c la A' aria.


Figura 20 39 Sltuoción después d e dos rondas d e m ezclas 3-arlas
M e z c la r d o s c a rre ra s c o n s is te e n re c o rre r c a d a c in ta d e e n tra d a h a s ta e l p rin c i­
p io d e las c a rre ra s a m e z c la r E n to n c e s s e to m a e l e le m e n to m á s p e q u e ñ o d e los
d o s (a q u e llo s s«*brc lo s q u e n o s e n c o n tra m o s e n c a d a u n a d e la s c in ta s ) y s e c o lo c a IX*spués d e la fase d e c o n s tru c c ió n d e las c a ñ e r a s inicíale*», e l n ú m e ro d e pasa-
e n u n a c in ta d e s a lid a a v a n z a n d o la c o rre s p o n d ie n te c in ta d e e n tra d a . S i ha> A c in ­ d j> re q u e rid a s u s a n d o u n a m e z c la A '-ana e s \ lo g * t.V M ) . p o rq u e la lo n g itu d d e
ta s d e e n tr a d a , la e s tra te g ia tra b a ja d e la m ism a fo rm a ; la ú n ic a d ife re n c ia e s tá e n la s c a ñ e r a s s e h a c e A vece» m á s g ra n d e c a d a v ez. P ara n u e s tro e je m p lo , s e tie n e
q u e e s lig e ra m e n te m as c o m p lic a d o e n c o n tra r e l e le m e n to m á s p e q u e ñ o e n tre A [ l o g . 1 3 /3 1 - 2 . S i tu v ié ra m o s 10 c in ta s, e n to n c e s A' - 5 . y e n ta l c a s o , e n el
e le m e n to s . P o d e m o s e n c o n tra r e l m á s p e q u e ñ o u s a n d o u n a c o la d e p rio rid a d P a ra e je m p lo g ra n d e d e la se c c ió n a n te rio r, las 3 2 0 c a rre ra s re q u e riría n lo g 5 3 2 0 - 4
o b te n e r e l sig u ie n te e le m e n to a e s c r ib ir e n la c in ta d e sa lid a , lle v a m o s a c a b o una pasad as
o p e ra c ió n e l i m i n a r M i n . S e a v a n z a la c o rre s p o n d ie n te c in ta d e e n tr a d a , y si a ú n
n o s e h a c o m p le ta d o la c a ñ e r a d e e s a c in ta d e e n tra d a , in s e rta m o s e l n u e v o e le
m e n tó e n la c o la d e p rio rid a d . L a F ig u ra 2 0 .3 7 m u e s tra c ó m o s e d is trib u y e la e n ­
tra d a d e l e je m p lo a n te rio r e n tr e s c in ta s L a s F ig u ra s 2 0 .3 8 y 2 0 .3 9 m u e s tra n las
20.6.5 M ezcla multifase
d o s p a su d a s d e la m e z c la 3 -a ria q u e c o m p le ta n la o rd e n a c ió n .
L a e s tra te g ia d e la m e z c la A -aria d e s a rro lla d a e n la s e c c ió n a n te rio r re q u ie re el
u s o d e 2A c in ta s . E s to p o d ría s e r p ro h ib itiv o e n a lg u n a s a p lic a c io n e s . E s p o sib le
h a c e rlo c o n so la m e n te A ♦ I c in ta s , a lo q u e se lla m a m e z c la m u ltifa s e . U n e je m ­
p lo d e e llo se ría re a lizar u n a m e z c la 2 -a ría u sa n d o so la m e n te tre s c in ta s
S u p o n g a m o s q u e te n e m o s tr e s cin ta s — 7 1 . 7 ? y 7”3 — y u n fic h e ro d e e n tra d a
e n 71 q u e p ro d u c e 3 4 c a rre ra s. U n a o p c ió n c o n s is te e n c o lo c a r 17 c a rre ra s e n c a d a
u n a d e la s c in ta s 7 2 y 7 3 E n to n c e s p o d ría m o s m e z c la r e s te re s u lta d o e n T I . o b te ­
n ie n d o e n to n c e s u n a c in ta c o n 17 c a ñ e r a s . E l p ro b le m a e s tá e n q u e p u e s to q u e t o ­
d a s las c a rre ra s e s tá n e n u n a so la c in ta . ah«*ra d e b e m m p o n e r a lg u n a s d e e lla s e n
la c in ta 7 2 p a ra p o d e r re a liz a r la s ig u ie n te m ezc la. I-a fo rm a ló g ic a d e h a c e r e s to
c o n siste e n c o p ia r las p rim e ra s o c h o c a rre ra s d e 71 e n 7 2 y d e s p u é s re a liz a r la
Figu ro 20.37 Distribución Inicial d e carreras d e long itud 3 o o tres cintas m ezcla.
x im a c ió n p o sib le , h a s ta q u e n o s d a m o s c u e n ta d e q u e ta n p ro n to c o m o s e e sc rib e
C o rre rá D espués
e l p rim e r e le m e n to e n la c in ta d e sa lid a , la m e m o ria q u e e s ta b a u tiliz a n d o e s tá d is ­
C o n st T3*T2 TW T2 TW T3 T2*T3 TW T2 TNT3 T2*T3 p o n ib le p a ra o tr o e le m e n to S i e l sig u ie n te e le m e n to d e la c in ta e s m a y o r q u e e l
q u e a c a b a d e e s c rib irs e e n la c in ta , e n to n c e s s e p u e d e in c lu ir e n la carrera.
TI 0 13 5 0 3 1 0 1 U s a n d o e s ta o b s e rv a c ió n , p o d e m o s d a r u n a lg o ritm o p a ra p ro d u c ir c a rre ra s ,
T2 21 8 0 5 2 0 1 0
llamad»» h a b itu a lm e n te se le c c ió n d e l re e m p la zo . In ic ia lm e n te se leen \ l e le m e n to s
13 13 0 8 3 0 2 1 2
y se c o lo c a n e n u n a c o la d e p rio rid a d t e n Ij m e m o ria p rin c ip a l), usand»» o p e ra c io ­
Figuro 20 40 N ix n e ro d e c o rre ro s u s a n d o lo m e z c la m u l t a s e n e s i n t r o d u c i r y u n a o p e ra c ió n a r r e g l a r H o n t i c u l o a l fin a l. L le v a m o s a
c a b o u n a o p e r a c ió n o l i r r u n a r M i n , e s c r ib ie n d o e l e le m e n to m e n o r e n la c in ta d e
s a lid a . L e e m o s e l s ig u ie n te e le m e n to d e la c in ta d e e n tr a d a . S i e s m a y o r q u e e l
lis io tie n e e l e fe c to ü c a ñ a d ir m e d ia p a sa d a e x tr a p o r c a d a p a sa d a re a liz a d a . L a
e le m e n to q u e a c a b a m o s d e e s c r ib ir , p o d e m o s a ñ a d ir lo a la c o la d e p rio rid a d
c u e stió n e s. ¿ p o d e m o s h a c e rlo m e jo r?
u s a n d o u n a o p e ra c ió n i n s e r t a r : e n c a s o c o n tr a rio , n o p u e d e fo r m a r p a rte d e la
U n m é to d o a lte rn a tiv o c o n s is te e n d iv id ir la s 34 c a rre ra s d e fo rm a n o u n if o r­
c a rr e ra a c tu a l P u e s to q u e la c o la d e p rio rid a d tie n e u n e le m e n to m e n o s , e s te e l e ­
m e. S u p o n g a m o s q u e c o lo c a m o s 21 c a rre ra s e n 12 y 13 e n 7 3 . E n to n c e s p o d ría ­
m e n to s e a lm a c e n a rá e n e l e s p a c io q u e n o fo r m a p a n e d e l m o n tíc u lo (e s p a c io
m o s m e z c la r 13 c a rre ra s p ro d u c ie n d o e l resultad»» \*>brc 71 a n te s d e q u e 7 3 s e v a ­
in u e n o i d e la c o la d e p rio rid a d h a s ta q u e s e c o m p le te la c a rre ra . > s e u tiliz a rá e n
c íe . E n to n c e s p o d e m o s re b o b in a r 7 1 y 7 3 . y m e z c la r d e sp u é s 71 c o n 13 c a ñ e r a s , y
la sig u ie n te A lm a c e n a r u n e le m e n to e n e l e sp a c io m u e rto e s e x a c ta m e n te lo que
72 c o n K c a ñ e r a s p ro d u c ie n d o e l re s u lta d o so b re 7 3 T ra s e llo m e z c la ría m o s 71 y
se h a c ía e n h e a p so rt. C o n tin u a m o s h a c ie n d o e s to h a s t j q u e e l tainañ»» d e la c o la de
/ 3 . y a s i su c e siv a m e n te . L a F ig u ra 2 0 .4 0 m u e s tra e l núm ert» d e c a ñ e r a s e n c a d a
p n o n d a d s e h a g a 0 . e n c u y o m o m e n to s e a c a b a la c a rre ra . C **nicnzam os u n a n u e ­
c in ta d e sp u é s d e c a d a p asad a
v a carT cra c o n s tru y e n d o u n a n u e v a c o la d e p n o n d a d iiuhzan»l«> u n a o p e ra c ió n
1.a d is trib u c ió n o rig in a l d e las c a rre ra s su p o n e u n a g ra n d ife re n c ia . P»»r e je m ­
a r r e g l a r M o n t i c u l o so b re lod«»s los e le m e n to s situ a d o s e n e l e s p a c io m u erto .
p lo . si s e c o lo c a n 22 c a rre ra s e n 72 y 12 e n 7 3 . d e s p u é s d e la p rim e ra m e z c la . »*b-
L a F ig u ra 20.41 m u e s tra la c o n s tru c c ió n d e la c a rr e ra p a ra e l p e q u e ñ o e je m p lo
te n e m o s 12 c a rre ra s e n 71 y 10 e n 72. T ra s u n a n u e v a m e z c la hay 10 c a ñ e r a s e n
q u e h e m o s e s ta d o u tiliz a n d o , c o n M - 3 L o s e le m e n to s re s e rv a d o s p a ra la si-
71 y 2 c a rre ra s e n 7 3 E n e s te p u n to , la e je c u c ió n s e h a c e m á s le n ta p o rq u e s o la ­
g u íe n te c a rre ra a p a re c e n s o m b re a d o s. L o s e le m e n to s 11. 9 4 y Hl se c o lo c a n u s a n ­
m e n te p o d e m o s m e z c la r d o s c o n ju n to s d e c a rre ra s a n te s d e a g o la r 7 3 . E n to n c e s 7 1
d o a r r e g l a r M o n t i c u l o . S e p ro d u c e la s a lid a d e 11 y e n to n c e s se c o lo c a *>0 e n
tie n e H c a rre ra s y /'2 tie n e 2 c a rr e ra s . D e n u e v o so la m e n te p o d e m o s m e z c la r d o s
e l m o n tíc u lo m e d ia n te u n a in s e rc ió n , p u e s e s m a y o r q u e 11 E l e le m e n to Hl s a le a
c o n ju n to s d e c a ñ e r a s , o b te n ie n d o 71 c o n t> c a rre ra s y 7 3 c o n 2 c a rre ra s. D esp u é s
d e tre s p a s a d a s m á s . 12 tie n e d o s c a ñ e r a s y las d e m á s c in ta s e s tá n v a c ía s. D e b e ­
m o s c o p ia r I c a rr e ra e n o tr a c in ta . D e sp u é s m e z c la m o s y te rm in a m o s 3 e le m e n to s d e l v e c to r S ig u ie n te
Se o b s e rv a q u e la p rim e ra d is trib u c ió n c o n s id e ra d a e s ó p tim a . S i e l n ú m e ro de d e l m o n tíc u lo e le m e n to
c a rre ra s e s u n n ú m e r o d e F ib o n a c c i 7 \ . e n to n c e s la m e jo r f»*rma d e d istrib u irla s v e c to r(l) v e c t o r (2 ) v e c to r(3 ) S a li d a L e c tu r a
c o n s is te e n d is id ir ía s e n d o s n ú m e ro s d e F ib o n a c c i. F s , y Fs .. En ca so co n ­
11 94 81 11 96
trario . la c in ta d e b e ría re lle n a rse c o n c a rre ra s fa lsa s p a ra c o n s e g u ir u n n ú m e r o d e
01 94 96 81 12
c a rre ra s ig u al a un n ú m e r o d e F ib o n a c c i. L o s d e ta lle s d e c ó m o c o lo c a r e l c o n ju n to C a rre ra 1 94 96 12 94 35
in icial d e c a rre ra s e n las c in ta s se d e ja c o m o E je rc ic io 2 0 .1 9 . P o d e m o s e x te n d e r 96 35 12 96 17
e s to a la s m e z c la s A" a ria s, e n la s q u e n e c e s ita ría m o s p a ra la d is trib u c ió n ó p tim a 17 35 12 F in al d e R econs­
la c a r r e r a tr u c c i ó n i
n ú m e ro s d e F ib o n a c c i d e o rd e n A' U n n ú m e ro d e F ib o n a c c i d e o rd e n K se d e fin e
c o m o la s u m a d e lo s A n ú m e ro s d e F ib o n a c c i d e o rd e n A a n te rio re s , c o m o in d ic a n 99
12 35 17 12
la s sig u ie n te s ecu a c io n e s: 17 35 99 17 28
28 99 35 28 58
F * * \ N ) = F*k \ N - I ) + F*k \ N - 2 ) + . . . + F*Kt( N - K ) C a rre ra 2 35 99 58 35 41
41 99 58 41 75
7<a '<0 * N < A - 2) = 0 58 99 75 58 15
75 99 15 75 F in al d e
F * k,( K - h - I la c i n t a
99 15 99
15 F in al d e R econs­
20.6.6 Selecció n del reem plazo la c a r r e r a t r u c c ió n

L a ú ltim a c u e s tió n q u e c o n sid e ra m o s e s la c o n s tru c c ió n d e la s c a rre ra s. L a e s tr a te ­ C a rre ra 3 15 15


g ia u s a d a h a s ta e l m o m e n to e s se n c illa le e m o s ta n to s e le m e n to s c o m o s e a p o sib le
y lo s o rd e n a m o s, e s c r ib ie n d o e l resultad»» e n u n a c in ta . E sta p a re c e la m e jo r a p ro ­ F igura 20.41 E je m p lo d e c o n s tr u c c ió n d e u n a c a rre ra
c o n tin u a c ió n , y e n to n c e s se le e 12. C o m o 12 e s m e n o r q u e K l. n o p u e d e in c lu irse tra v é s d e lo s h ijo s m e n o re s h a s ta q u e se p u e d a c o lo c a r e l e le m e n to sin v io la r
I e n la c a rre ra a c tu a l, p o r lo q u e se c o lo c a e n e l e s p a c io m u e rto del m o n tíc u lo . El la p ro p ie d a d d e o rd e n a c ió n d c l m o n tícu lo ,
m o n tíc u lo a h o ra s o la m e n te c o n tie n e ‘>4 y 0 6 D e s p u é s d e p ro d u c irse su salid a , só ­ m ezcla m u ltla ria M e z c la A -a n a q u e re d u c e e l n u m e r o d e p a sa d a s 1.a im p lem cn -
lo te n e m o s e le m e n to s e n e l e s p a c io m u e rto , p o r lo q u e c o n s tru im o s u n n u ev o
tu c ió n o b v ia u sa 2 A' cin tas,
m o n tíc u lo c o m e n z a n d o a s í c o n la s e g u n d a c a rre ra . E n e s te e je m p lo , la s e le c c ió n m e z c la m u ltifa se Im p lcm cn tu u n a m e z c la A a ria u s a n d o A * I cin tas,
del re e m p la z o p ro d u c e so la m e n te 3 c a rre ra s, c o m p a ra d a s c o n la s 5 o b te n id a s m e ­ m o n tíc u lo b in a r io E stru c tu ra c lá s ic a u s a d a p a ra im p le m e n ta r las c o la s d e p rio ri­
d ia n te o rd e n a c ió n . G ra c ia s a e llo , u n a m e z c la 3 a n a a c a b a e n u n a p a sa d a e n lu g a r d a d . T ie n e d o s p ro p ie d a d e s: u n a e s tru c tu ra l v o tr a d e o rd e n a c ió n
d e e n d o s. S i la e n tra d a e s tá d is trib u id a a le a to ria m e n te , s e p u e d e d e m o s tra r q u e la m o n tíc u lo m a x im a l M o n tíc u lo q u e so p o rta a c c e s o s a l m á x im o e n lu g ar d e al m í ­
s e le c c ió n clel re e m p la z o p u e d e p ro d u c ir c a rre ra s d e lo n g itu d m e d ia 2.1/ P a ra núes
nim o.
tr o e je m p lo g ra n d e , te n d ría m o s 1 6 0 c a rre ra s e n lu g a r d e 3 2 0 . p»>r lo q u e u n a m e z ­ o p e ra ció n a r r a g l a r M o n t i c u l o P ro c e s o d e re s ta b le c e r la p ro p ie d a d d e o rd en a
c la 5 -a n a a u n re q u e riría c u a tro p a s a d a s E n e s te c a s o n o n o s h e m o s jh o r r a d o n in ­ c ió n d e u n m o n tíc u lo S e p u e d e h a c e r e n tie m p o lin eal a p lic a n d o u n a ru tin a de
g u n a p a sa d a , a u n q u e si tu v ié ra m o s su e rte p o d ría m o s a h o rrá rn o s la d e te n e r 125 h u n d im ie n to a U nios lo s n o d o s e n s e n tid o in v e rs o a l r e c o r rid o p o r n iv eles,
c a rre ra s o m e n o s P u e s to q u e la o rd e n a c ió n e x te rn a la rd a ta n to , c a d a p a sa d a que o p e ra ció n i n t r o d u c i r O p e ra c ió n q u e añ a d e u n e le m e n to , p e r o q u e a l c o n tra rio
n o s a h o rre m o s p u e d e te n e r u n a g ra n in flu e n c ia e n e l tie m p o to ta l d e e je c u c ió n . q u e i n s e r t a r , n o g a ra n tiz a q u e se m a n te n g a la o rd e n a c ió n d e l m o n tíc u lo E s
C o m o h e m o s v is to , e s p o sib le q u e la s e le c c ió n d c l re e m p la z o n o s e a m e jo r q u e útil si p re te n d e m o s a ñ a d ir m u c h o s e le m e n to s a n te s d e a c c e d e r a l m ín im o
e l a lg o ritm o e stá n d a r. P e ro , la e n tra d a d e la q u e p a rtim o s e s tá c o n fre c u e n c ia casi o rd e n a c ió n e x te rn a M é to d o d e o rd e n a c ió n u s a d o c u a n d o la c a n tid a d d e d a to s es
o rd e n a d a , e n c u y o c a s o la s e le c c ió n d e l re e m p la z o p ro d u c e u n a s p o c a s c a rre ra s, d e m a s ia d o g ra n d e p a ra c a b e r e n la m e m o ria p rin cip al,
a n o rm a lm e n te larg as. E ste tip o d e e n tra d a e s h a b itu a l e n las o rd e n a c io n e s e x te rn a s p ro p ie d a d d e o r d e n a c ió n d e l m o n tíc u lo P ro p ie d a d q u e sc c u m p le e n u n m o n tí­
y h ace q u e la se le c c ió n d e l re e m p la z o s e a e x tre m a d a m e n te v alio sa c u lo (m in im a l). q u e c o n siste e n q u e e l e le m e n to d c l p a d re d e u n n o d o n u n c a es
m a y o r q u e e l e le m e n to d c l p ro p io n o d o
r e flo ta m icn to L a in s e rc ió n se im p lc m e n ta c re a n d o un h u e c o e n la p rim e ra posi
Resumen c ió n d is p o n ib le , flo tá n d o lo d e s p u é s h a s ta q u e s c p u e d a c o lo c a r e n é l e l n u e v o
e le m e n to s in q u e e l l o sup«*nga u n a v io la c ió n d e l o rd e n re s p e c to a su p a d re ,
E n e s te c a p ítu lo h e m o s p re s e n ta d o u n a im p le m e n ta c ió n e le g a n te d e la c o la de re p re se n ta c ió n im p líc it a U s o d e u n v e c to r p a ra a lm a c e n a r u n m o n tíc u lo
p n o n d a d E l m o n tíc u lo b in a rio u s a so la m e n te un s e c to r, y s o p o rta la s o p e ra c io n e s s e le cció n d e l r e e m p la z o l.a lo n g itu d d e las c a i m a s c o n s tru id a s im c ia lm c n tc p u e ­
b á s ic a s e n tie m p o lo g a rítm ic o , e n e l c a s o p e o r. El m o n tíc u lo n o s fa c ilita u n a lg o ­ d e s e r m a y o r q u e la c a n tid a d d e m e m o ria p rin c ip a l d is p o n ib le S i p o d e m o s a l ­
ritm o d e o rd e n a c ió n c o n o c id o , e l m é to d o d c l m o n tíc u lo o h c a p s o r l L o s E je rc ic io s m a c e n a r 1/ e le m e n to s e n la m e m o ria p rin c ip a l, c o n e s ta té c n ic a p o d e m o s es
2 0 .2 2 y 2 0 .2 3 le p id e n c o m p a r a r la e fic ie n c ia d e l h c a p s o rt c o n la d e l q u ic k so rt. p e ia r c a rre ra s d e lo n g itu d 2.W
G e n e ra lm e n te h a b la n d o , h e a p s o n e s m a s le n to q u e e l q u ic k s o rt. p e r o e s m á s s e n c i­
llo d e im p le m e n ta r. F in a lm e n te , h e m o s v is to q u e la s c o la s d e p rio rid a d s o n e s tru c ­
tu ra s d e d a to s im p o rta n te s e n la o rd e n a c ió n e x te rn a . Errores com unes
E s to c o m p le ta la im p le m e n ta c ió n d e la s e s tru c tu r a s d e d a lo s fu n d a m e n ta le s
c lá s ic a s . E n la P arte V se e x a m in a n e s tru c tu r a s d e d a to s m á s so fistic a d a s, c o m e n ­ 1. E l m o n tíc u lo b in a rio re q u ie re u n c e n tin e la e n la p o s ic ió n 0 . U n e rr o r c o ­
z a n d o c o n e l á rb o l d e e n sa n c h a m ie n to , u n á rb o l b in a rio d e b ú sq u e d a c o n a lg u n a s m ú n e s u tiliz a r u n c e n tin e la in a p ro p ia d o .
p ro p ie d a d e s e sp e c ia le s . 2. L a p arte m á s d ifíc il d c l m o n tíc u lo b in a rio e s e l c a s o d e l h u n d im ie n to
c u a n d o so la m e n te e x is te u n o d e lo s h ijo s . Y a q u e e s u n a situ a c ió n ra ra , es
d ifíc il d e s c u b rir u n a im p le m e n ta c ió n in co rrecta.
3 S i s e h a e je c u ta d o u n a o p e ra c ió n i n t r o d u c i r , la p ro p ie d a d d e o rd e n a c ió n
Elem entos del juego
del m o n tíc u lo d e b e re sta b le c e rse a n tes d e a c c e d e r a l e le m e n to m ínim o.
4 P a ra h c a p so rl. I»»s d a to s c o m ie n z a n e n la p o s ic ió n O. p o r lo q u e lo s h ijo s
á r b o l b in a r io co m p leto Á rb o l c o m p le ta m e n te lle n o , sin q u e fa lte n in g ú n n o d o
d e l n o d o / s c e n c u e n tra n e n las p o s ic io n e s 2 i + I y 2i + 2
U n m o n tíc u lo e s u n árb o l b in a rio c o m p le to , lo q u e p e rm ite su re p re se n ta c ió n
m e d ia n te u n v e c to r y g a ra n tiz a u n a p ro f u n d id a d lo g a rítm ic a ,
c a r r e r a G ru p o o rd e n a d o e n la o rd e n a c ió n e x te rn a . A l fin a l d e la o rd e n a c ió n te n e ­
En Internet
m o s so la m e n te u n a c a rre ra ,
h c a p s o rl A lg o ritm o b a s a d o e n la id e a d e q u e sc p u e d e u sa r u n a c o la d e p rio rid a d E l m o n tíc u lo b in a r io e s tá d is p o n ib le e n e l d ir e c to r io O a ta S tru c tu rc s. F.I nom b re
p a ra o rd e n a r e le m e n to s e n un tie m p o (M A lo g N ).
d e l fic h e ro e s e l sig u ie n te .
h u n d im ie n to L a e lim in a c ió n d e l e le m e n to m ín im o im p lic a c o lo c a r e l ú ltim o e le ­
m e n to e n u n h u e c o c re a d o e n la raíz. E l h u e c o se v a h u n d ie n d o e n e l á rb o l a Itinarv lle a u .iu v u C ontiene la im p lem e ntación del m o n tíc u lo b inario.
2 0 .1 1 . V e rifiq u e q u e la s u m a d e las a ltu ra s d e un á rb o l b in a rio p e rf e c to es
Ejercicios
V - \ i N ) . d o n d e ríA > e s e l n ú m e ro d e u n o s e n la re p re se n ta c ió n b in aria

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

a) D e m u e s tre q u e h a y 2 ' n o d o s d e a ltu ra H - i. a c u a lq u ie ra d e las clav es.


f) P ro p o rc io n e u n a lg o r itm 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
b) E sc o b a la ecu ació n q u e d e fin e la sum a d e la s a ltu ras u sa n d o la parte (a).
c) E v a lú e la s u m a d e la p a n e (b). tie m p o lineal.
2 0 .IX. U n m m ird rh til e s u n á rb o l b in a rio d e b ú sq u e d a e n e l q u e c a d a n o d o a lm a ­ ti r á e n m e d ia so la m e n te u n o o d o s n iv e le s E sc rib a u n a ra tin a p a ra in tro ­
c e n a un e le m e n to . d«>s h ijo s y u n a p rio rid a d a le a to ria g e n e ra d a e n la c o n s d u c ir e s ta idea. C o m p a re e l tie m p o d e e je c u c ió n c o n e l d e la ím p le m e n ta -
m ic c ió n d e l n o d o L o s n o d o s d e l á rb o l o b e d e c e n e l o rd e n h a b itu a l d e los c ió o e s tá n d a r d e h eap so rt
á rb o le s b ín a n o s d e b ú sq u e d a , p e r o ta m b ié n d e b e n m a n te n e r la o rd e n a c ió n 2 0 .2 4 . Im p le m e n te u n a o rd e n a c ió n e x te rn a .
d e tip o m o n tíc u lo c o n re s p e c to a las p n o n d a d e s E l m o n tá rh o l e s una 2 0 .2 5 . Ib s e rte u n u p p let q u e ilu stre e l fu n c io n a m ie n to d e l m o n tíc u lo b in a rio
b u e n a a l té m a lo a a lo s á rb o le s b in a rio s e q u i l i b r a d a p o rq u e e l e q u ilib rio
s e b a s a e n p rio rid a d e s a le a to ria s e n lu g a r d e e n lo s v a lo re s d e su s e le m e n ­
to s. E n c o n se c u e n c ia lo s re s u lta d o s d e lo s á rb o le s b ín a n o s d e b ú sq u e d a Bibliografía
p a ra e l c a s o m e d io se a p lic a n ta m b ié n a q u í. H a g a lo sig u ie n te:
F.l m o n tíc u lo b in a r io se d e s c r ib ió p o r p rim e ra v e / , e n e l c o n te x to d e l a lg o ritm o
a) M u e s tre q u e u n a c o le c c ió n d e e le m e n to s d is tin to s, c a d a u n o d e los
h e a p so rt. e n |X | E l a lg o r itm o lin eal a r r e g l a r M o n t i c u l o se h a to m a d o d e |4 |
c u a le s tie n e u n a p rio rid a d d is tin ta , s e p u e d e re p re se n ta r m e d ia n te un
E n 17J s e p ro p o rc io n a n re s u lta d o s p re c iso s d e l n ú m e ro d e c o m p a ra c io n e s > m o v i­
ú n ic o m o n tá rh o l
m ie n to s d e d a to s u s a d o s p o r h e a p s o rt e n lo s c a s o s p e o r, m e jo r > m e d io E n lo s ( a
/») M u e s tre c ó m o lle v a r a c a b o u n a in s e rc ió n e n u n m o n tá rh o l u sa n d o
p im ío s 21 y 2 2 se d is c u te n im p le m c n ta c io n e s a v a n z a d a s d e las c o la s d e p rio rid a d
un a lg o r itm o a sc e n d e n te
L a o rd e n a c ió n e x te rn a s e d is c u te e n d e ta lle e n |6 |. E l E je rc ic io 2 0 .1 5 se resu elv e
i) M u e stre c o m o lle v a r a c a b o u n a in s e rc ió n e n un m o n tá rh o l u san d o
e n | 5 | . e l 2 0 .1 6 e n (21 y e l 2 0 .1 7 e n |. H L o s m o n lá rb o le s s e d e s c rib e n e n 111.
u n a lg o r itm o d e sc e n d e n te .
«/» M u e s tre c ó m o lle v a r a c a b o u n a e lim in a c ió n e n u n m o n tárh o l. L C A ra g ó n y R S e id e l. - R a n d o m i /c d S e a rc h T r c c s - . A lje o h th m tc a If»
(1 9 9 6 ). 4 M ^ 4 9 7 .
2 0 .1 9 . E x p liq u e c ó m o c o lo c a r e l c o n ju n to in ic ia l d e c a rre ra s e n d o s c in ta s c u a n ­
d o e l n ú m e ro d e c in ta s n o e s u n n ú m e ro d e F ib o n a c c i 2. M . I ) A tk in s o n . J R S ack . N . S antón», y T S lro th o tte . « M in -M a x R eap s
a n d ( ¡ c n c r u li/c d l*rioriiy Q ucueft». C o im n u n ic a lio n v o ) th e A C M 29

Problem as p rácticos (19X 6). 9 9 6 -1 0 0 0 .

3. Y . D in g y M . A. W e iss. - T h e k d H cap : A n E ffic ie n i M u lti-d im c n sio n a l


2 0 .2 0 . E sc rib a la ru tin a h u n d i r 2 c o n la s ig u ie n te d e c la ra c ió n (R e c u e rd e q u e el P n o rily Q u e u c - , /V m r rd m g .i o f th e T h ir d W o r L \h o p o n A lg o r ilh m s a n d
m o n tíc u lo m a x m u l c o m ie n /a e n la p o s ic ió n 0 . n o e n la I ): D a ta S ir u ttu r e s (1 9 9 3 ). 3 0 2 -3 1 3 .
4 R W F lo y d . - A lg o n lh m 2 4 5 : T recsort 3 » . C o in m u n U a tio in o f lite A ( M 7
p r i v a t e s t a t l e v o i d h u n d ir2 ( C o m p ara b le | J v,
(1 9 6 4 ). 701.
ir»t í n d i c e , i n t tam an y o l;
5. D B . J o h n s o n . « P n o rily Q u e u e s w ith U p d a tc a n d F in d in g M ín im u m

Prácticos d e p ro g ra m a c ió n S p an iiin g T r c e s - . In fo rm a tio n P n K e s s in g U n e n 4 (1 9 7 5 ). 5 3 -5 7 .

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

21.1 Auto-ajustamiento y análisis amortizado

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:

• l.o s á rb o le s d e b ú sq u e d a e q u ilib r a d o s n e c e sita n a lm a c e n a r u n a trib u lo ex tra


p o r n o d o c o n in fo rm a c ió n d e e q u ilib rio
• S o n c o m p lic a d o s d e im p lc m c n la r; c o m o re s u lta d o , la s in s e rc io n e s y e lim in a ­
E le g im o s s a c rific a r e l re n d im ie n to lo g a rítm ic o e n e l c a s o p e o r. Y a q u e n o q u e - El
c io n e s so n c o s to s a s y p ro p e n sa s a erro re s.
re m o s m a n te n e r in fo rm a c ió n s o b re e l e q u ilib rio , e s te s a c rific io p a re c e in e v ita b le . °
• N o g a n a m o s n a d a c u a n d o tra b a ja m o s c o n e n tra d a s sen cillas.
S in e m b a rg o , n o p o d e m o s a d m itir e l re n d im ie n to típ ic o d e u n á rb o l d e b ú sq u e d a u
E x a m in e m o s las c o n s e c u e n c ia s d e c a d a u n a d e e s ta s d e fic ie n c ia s E n p rim e r d e se q u ilib ra d o . H a y . e n c a m b io , un c o m p ro m is o ra z o n a b le : u n tie m p o O i N ) p a ra d(
lu g ar, lo s á rb o le s d e b ú sq u e d a e q u ilib ra d o s re q u ie re n a lm a c e n a r u n a trib u to ex tra. u n a c c e s o a is la d o p u e d e s e r a c e p ta b le , s ie m p re y c u a n d o n o o c u rr a m u y a m e n u d o . e<
A u n q u e e n te o r ía é s te p u e d e se r ta n p e q u e ñ o c o m o u n ú n ic o b it (c o m o e n los árh o - E n p a rtic u la r, si M o p e ra c io n e s (e m p e z a n d o c o n la p rim e ra o p e ra c ió n ) la rd a n un ei
le s ro jin eg ro s» , e n la p rá c tic a , p a ra sa tisfa c e r la s re s tric c io n e s h a rd w a re , e l a trib u to tie m p o to ta l Ü ( M lo g >\) e n e l c a s o p e o r, e n to n c e s e l h e c h o d e q u e a lg u n a s o p e ra - °*
u tiliz a rá un e n te r o c o m p le to . A |>esar d e to d o , e n u n a é p o c a e n la q u e la s m e m o c io n e s s e a n c o s to s a s n o tie n e g ra v e s c o n s e c u e n c ia s . C u a n d o p a ra u n a s e c u e n c ia d e
ría s d e lo s c o m p u ta d o re s s o n y a e n o rm e s u n o p u e d e p re g u n ta rs e si d e b e p re o c u ­ o p e ra c io n e s p o d e m o s d e m o s tra r u n a c o ta , e n e l c a s o p e o r, m e jo r q u e la c o rre s p o n ­
p a rs e d e m a s ia d o d e la m e m o ria . L a re s p u e sta e n la m a y o ría d e lo s c a s o s e s p ro b a ­ d ie n te c o ta o b te n id a c o n s id e ra n d o c a d a o p e ra c ió n p o r s e p a ra d o , e l tie m p o d e e je ­
b le m e n te 110. si n o fu e ra p o rq u e e l m a n te n im ie n to d e l a trib u to e x ira re q u ie re un c u c ió n s e d e n o m in a a m o r tiz a d o . En e l e je m p lo a n te rio r, te n e m o s un c o s te a m o rti­
c ó d ig o m ás c o m p lic a d o y tie n d e a lle v a rn o s a tie m p o s m a y o re s d e e je c u c ió n y a z a d o lo g a rítm ic o . E s d e c ir, a lg u n a s o p e ra c io n e s p u e d e n ta rd a r m á s q u e u n tie m p o
un n ú m e ro m a y o r d e e rro re s. D e h e c h o , e s d ifíc il c o m p r o b a r si la in fo rm a c ió n de lo g a rítm ic o , p e r o e s ta m o s s e g u ro s d e q u e se c o m p e n s a n c o n o tr a s o p e ra c io n e s m e ­
e q u ilib rio d e lo s á rb o le s d e b ú sq u e d a e s c o rré e la , y a q u e lo s e rro re s só lo n o s c o n ­ n tís c o s to s a s q u e o c u rrie ro n a n te rio rm e n te e n la se c u e n c ia .
d u c e n a u n á rb o l d e se q u ilib ra d o . S i s ó lo d e fo rm a m u y e s p o rá d ic a c o m e tié s e m o s S in e m b arg o , u n a coca am o rtiz a d a n o e s siem pre acep tab le. L n co n creto , si una
tale s e rro re s le v e s , p u e d e se r m u y d ifíc il e n c o n tra rlo s. P o r la m o , c o m o c u e stió n o p erac ió n m a la c o n su m e d em asiad o tiem p o , realm en te n ecesitam o s u n a c o ta e n e l c a ­
p ra c tic a , lo s a lg o ritm o s q u e n o s p e rm ita n e lim in a r d ic h a s c o m p lic a c io n e s , sin c o n so p e o r e n vez d e u n a c o ta am ortizada. A u n a sí. e n m u ch o s c a so s las estructuras de
e llo s a c rific a r e l re n d im ie n to , se m e re c e n u n a c o n s id e ra c ió n seria. dato s s e u tilizan c o m o p arte d e un a lg o ritm o y só lo e s im portante la c a n tid a d to tal de
H a y u n a s e g u n d a ra z ó n p o r la c u a l p o d e m o s s o s p e c h a r q u e e l re n d im ie n to de tie m p o c o n su m id a p o r la e stru ctu ra e n e l transcurso d e la ejec u ció n d e l algoritm o.
la b ú sq u e d a e q u ilib ra d a p o d ría m e jo ra rse . T e n e m o s q u e s u re n d im ie n to e n e l c u so Y a h e m o s v is to u n e je m p lo d e c o ta a m o rtiz a d a . C u a n d o tm p lc m e n ta m o s la d u ­
p e o r, e n p ro m e d io y e n e l cas») m e jo r so n e s e n c ia lm e n te id é n tic o s . U n e je m p lo es p lic a c ió n d e l v e c to r e n u n a p ila o c o la , e l c o s te d e u n a s o la o p e ra c ió n e s c o n sta n te
la o p e ra c ió n b u s c a r s o b r e a lg ú n e le m e n to X . E s ra z o n a b le e s p e r a r q u e e l c o s te d e c u a n d o n o e s n e c e s a ria la d u p lic a c ió n , p e ro e s ( X N ) c u a n d o sí I» e s. S in e m b a rg o ,
u n a p rim e ra e je c u c ió n d e b u s c a r s e a lo g a rítm ic o : p e ro u n s e g u n d o a c c e s o in m e ­ c u a lq u ie r s e c u e n c ia d e \ l o p e ra c io n e s so b re la c o la o p ila g a ra n tiz a un c o s te total
d ia to a ,V d e b e ría s e r m e n o s c o sto so q u e e l p rim e ro . E n un á rb o l ro jin e g ro e s to no ( X M ) . lo q u e sig n ific a un c o s te a m o rtiz a d o c o n sta n te p o r o p e ra c ió n . F.l h e c h o di­
e s c ie rto . T a m b ié n e s p e ra ría m o s q u e si re a liz a m o s a c c e s o s a A'. Y y / . e n to n c e s un q u e la d u p lic a c ió n d e l v e c to r s e a c o s to s a n o tie n e c o n s e c u e n c ia s , p o rq u e s u co ste
n u e v o a c c e s o a la m is m a te rn a d e e le m e n to s d e b e ría s e r m á s rá p id o . E s to e s im ­ p u e d e d is trib u irs e e n tre m u c h a s o p e ra c io n e s a n te rio re s q u e n o fu e ro n c o sto sa s.
p o rta n te d e b id o a la re a la ,le l E sta re g la , su g e rid a p o r e s tu d io s e m p íric o s,
a firm a q u e . e n la p rá c tic a , e l ‘« I p o r c ie n to d e lo s a c c e s o s q u e s e re q u ie re n c o rr e s ­ 21.1.2 Una estrategia simple d e auto-ajustamiento
p o n d e n s ó lo al 10 p o r c ie n to d e lo s d a to s . E n c o n s e c u e n c ia , q u e re m o s u n a c c e so
(que no funciona)
rá p id o p a ra d ic h o 9 0 p o r c ie n to .
L a re g la d e l 9 0 -1 0 s e h a u tiliz a d o d u ra n te m u c h o s a ñ o s e n s is te m a s d e d is c o s E n un á rb o l b in a rio d e b ú sq u e d a , n o p o d e m o s lim ita m o s a a lm a c e n a r lo s e le m e n ­
d e c n in id u sa lid a U n a m e m o ria d e re s p a ld o (c a t ite) a lm a c e n a e n m e m o ria p rin c i­ to s fre c u e n te m e n te a c c e d id o s e n u n a ta b la . E s to s ó lo fu n c io n a b a e n e l c a s o d e l a c ­
p a l e l c o n te n id o d e a lg u n o s M o q u e s d e d is c o . N u e stra e s p e ra n z a e s q u e c u a n d o se c e s o a m e m o ria e x te m a d e b id o a q u e la té c n ic a d e l u so d e la m e m o ria d e re s p a ld o
h a g a u n a p e tic ió n d e a c c e s o a d is c o , e l b lo q u e p u e d a e n c o n tr a rs e e n la c a c h e de s e b e n e fic ia d e la g r a n d ife re n c ia e n tr e e l tie m p o d e u n a c c e s o a m e m o ria y d e un
m e m o ria p rin c ip a l y a s í s e a h o rre e l c o s te d e u n a c c e s o a d is c o . P o r su p u e s to , só lo a c c e s o a d is c o . Y a q u e e l c o s te d e u n a c c e so e n u n á rb o l b in a rio d e b ú s q u e d a es
u n o s p o c o s b lo q u e s d e d is c o p u e d e n a lm a c e n a rs e e n m e m o ria . A ú n a sí. a lm a c e n a r p ro p o rc io n a l a la p ro fu n d id a d d e l n o d o a c c e d id o , p o d e m o s in te n ta r re e s tru c tu ra r
lo s b lo q u e s d e d is c o m á s re c ie n te m e n te a c c e d id o s p e rm ite u n a m e jo ra c o n s id e ra ­ e l á rb o l m o v ie n d o h a c ia la ra íz lo s e le m e n to s m a s fre c u e n te m e n te a c c e d id o s. A u n - ,
b le e n e l re n d im ie n to , p u e s fre c u e n te m e n te lo s m ism o s b lo q u e s so n a c c e d id o s u n a q u e e s to su p o n e u n tie m p o e x tr a e n la p rim e ra o p e ra c ió n b u s c a r , a la larg a p o d ría
> o tra v ez. L o s n a v e g a d o re s d e In tern et u tiliz a n la m ism a id e a : u n a c a c h é a lm a c e ­ m e re c e r la pena.
na Id e a lm e n te las p á g in a s W e b v is ita d a s ú ltim a m e n te . 1.a fo rm a m á s fácil d e d e s p la z a r u n e le m e n to h a c ia la ra íz c o n s is te e n in te r­
c a m b ia rlo c o n tin u a m e n te c o n su p a d re h asta q u e lleg u e a la raíz E n to n c e s, si a c ­
c e d e m o s a l e le m e n to p o r s e g u n d a v ez. e l se g u n d o a c c e s o e s m u y b a ra to . In c lu so si
21.1.1 C otas d e tiem po am ortizadas se re a liz a ra n o tr a s o p e ra c io n e s a n te s d e l s ig u ie n te a c c e so , e s te e le m e n to se g u irá
e s ta n d o c e rc a d e la ra íz y p o r ta n to , s e rá e n c o n tra d o rá p id a m e n te . E sta e s tra te g ia
E sta m o s p id ie n d o m u c h o : q u e re m o s e v ita r la in fo rm a c ió n d e e q u ilib rio y s e r c a p a ­ s e d e n o m in a e s tr a te g ia d e ro ta c ió n h a c ia la r a íz E n la F ig u ra 21.1 s e m u e s tra la
c e s d e s a c a r p a rtid o d e la re g la d e l 9 0 -1 0 E llo n o s c o n d u c e a p e n s a r q u e p o d ría ­ a p lic a c ió n d e e s ta e s tra te g ia a l n o d o 3
m o s te n e r q u e re n u n c ia r a a lg u n a d e la s p ro p ie d a d e s d e lo s á rb o le s d e b ú sq u e d a
' U n a in a r iv H 'm c u e n n . c o m o u n * c * « o P - u i * > . u n c i m i e n t o s i c m f w « c . n o t a r l a c o n * , u r u h o j . e m n
e q u ilib ra d o s.
I i u l . u w - i I . «m « u - n ia .« u n o u n a c c « o 4 la b o u d o n * « e n tin a s u b ú sq u e d a
figuro 21.1 Estrotegio d e ro tació n h a c ia la raíz a p lic a d a c u a n d o se a c c e d e a l Figura 21.3 C iertos a c ce s o s secu en ciales a los elem entos requieren un tiem po to ­
nod o 3 tal cu o d rá tico

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.

21.3 O p eracio n es b ásicas d e los árboles


d e ensancham iento
Figuro 21.4 C a o ^ O f e x c W v o d e tos á r O lo s d e e n s a n c h a m ie n to ) s e om ñe el
C o m o s e m e n c io n ó a n te rio rm e n te , d e sp u é s d e c a d a a c c e s o se re a liz a u n a o p e ra ­
c ió n d e e n sa n c h a m ie n to . C u a n d o se re a liz a u n a in s e rc ió n , re a liz a m o s u n e n s a n ­
c h a m ie n to . C o m o re s u lta d o , e l n u e v o e le m e n to in s e rta d o se c o n v ie rte e n la ra í/
“ r r r qi? cs" ’ d,n,erc * 10 que * hace en b " * * * '" 1* ™ >-* « « - del á rb o l. D e n o h a c e rlo , p o d ría m o s g a s ta r u n tie m p o c u a d rá tic o c n la in s e rc ió n d e
OÓO h a c ia la r a íz r o la e n tr e X y P y d e s p u é s e n tre X y G L a ro ta c ió n d e e n sa n c h a -
m íe n lo z ig -z ig r „ ia e n tre /• y ( j y d e s p u é s e n tr e A' y P . V e le m e n to s e n e l árbol
H! e a m h io e n e l c a s o z ig -z ig p a r e c e b a s ta n te p e q u e ñ o : s o rp re n d e u n ta n to q u e E n la o p e ra c ió n b u s c a r , h a c e n * * e n e n sa n c h a m ie n to d e s d e e l ú ltim o n o d o ac­
re n g a ta n ta re p e rc u s tó n P ara v e r la d ife re n c ia e n tre e l e n s a n c h a m ie n to v l a ruta- c e d id o d u ra n te la b ú sq u e d a S i la b ú sq u e d a tie n e éx ito , e n lo m e s e l e le m e n to e n c o n ­
tra d o se rá e n s a n c h a d o y s e c o n v e rtirá e n la n u e v a r a í /. S i la b ú sq u e d a n o tie n e éx ito ,
T e o r r n n 'a’ J | rJ, 'í i h P ™ « * * ' I m a l re s u lta d o del
T e o re m a . 1 . 1 . D e n u e v o , in s e rta m o s las c la v e s I. 2 . 3 N c n „ „ j r b o , ,n j d a l . se rá e n sa n c h a d o e l ú ltim o n o d o a c c e d id o a n tes d e a lc a n /a r u n a re fe re n c ia n u l : y se
m e n te v a c o e n u n tie m p o to ta l lin e a l y o b te n e m o s u n á rb o l d e s e q u ilib ra d » só lo c o n v e rtirá e n la n u e v a r a í /. E ste p ro c e s o e s n e c e sa rio : d e o tr a fo rm a , s i r e ite r á s e ­
c o n h ijo s iz q u ie rd o s. S in e m b a rg o , c o m o m u e s tra la l-ig u ra 2 1 .7 . e l re s u lta d o d e m o s la b ú sq u e d a d e l e le m e n to 0 c n e l á rb o l in icial d e la F ig u ra 2 1 7 u tiliz a ría m o s
u n tie m p o lin eal p o r o p e ra c ió n . D e ig u al m a n e ra , 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 r M a x re a liz a rá n u n e n s a n c h a m ie n to d e s p u é s d e a c c e d e r a l á rb o l
L a s o p e r a c io n e s in te r e s a n te s so n la s e lim in a c io n e s . R e c o rd e m o s que
a i i m m a r M i n y « 1 I n n n a r N a x so n o p e ra c io n e s im p o rta n te s d e las c o la s d e pri*v-
rid a d . C o n á rb o le s d e e n sa n c h a m ie n to , e sta s o p e ra c io n e s s o n se n c illa s. Iin p lcm cn -
ta m i* e i i m i n a r M i n d e la sig u ie n te m a n e ra P rim e ro re a liz a m o s b u s c a r M i n . lo
q u e h a c e q u e e l m e n o r e le m e n to se c o lo q u e e n la ra íz , c o n lo q u e p o r las p ro p ie d a ­
d e s d e l«* á rb o le s d e b ú sq u e d a , n o h a b rá n in g ú n h ijo iz q u ie rd o P o d e m o s u tiliz a r
e l h ijo d e re c h o c o m o n u e v a ra íz. IV fo rm a sim ila r. e l i m i n u r M a x p u e d e im ple*
m e n ta rse lla m a n d o a b u s c a r M a x y h a c ie n d o q u e la n u e v a ra íz s e a e l h ijo iz q u ie r­
d o d e s p u é s d e l en sa n c h a m ie n to .
H a sta la o p e ra c ió n e l i m i n a r e s s e n c illa P ara re a liz a r la e lim in a c ió n , a c c e d e ­
m o s a l elem ente* q u e q u e re m o s e lim in a r. E s to lo c o lo c a e n la r a í /. S i e s b o rrad o ,
o b te n e m o s d o s su h á rb o le s / y / ) (iz q u ie r d o > d e re c h o ) . S i b u s c a n * * e l m a y o r
e le m e n to e n /. u tiliz a n d o l a o p e ra c ió n b u s c a r M a x . e n to n c e s e l m a y o r e le m e n to
se c o lo c a r á c n la r a í / d e / y n o te n d r á h ijo d e r e c h o . T e rm in a m o s la o p e ra c ió n
e l i m i n a r h a c ie n d o q u e I ) s e a e l h ijo d e re c h o d e la ra íz d e /. l ' n e je m p lo d e e s ta
F igu ro 21.7 R e su tto d o d e l e r u o n c h o m lo o t o e n e l n o d o I (tres z o - z a , u n zkn. o p e ra c ió n >c m u e s tra c n la E ig u ra 2 1 .8 .
P a ra s im p lific a r la n o ta c ió n , to m a re m o s # O i = lo g .V(i>. E s to n o s c o n d u c e a

<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

b u s c a r M ax e n e l subárbol izquierdo, e le v a n d o e l 5 a la faz d e un árbol s a n c h a m ie n to sim p le e s tá fo rm a d o p o r u n a s e r ie d e ro ta c io n e s zig -z ig o z ig zag , 1'


el
izquerdo. entonces se p u ed e a ñ a d ir el hijo d erech o (n o mostrodo). se g u id a s, e v c n tu a lm e n te . p o r u n a ro ta c ió n z ig C a d a ro ta c ió n zig -zig o zig -zag
oo
p u e d e c o n ta rs e c o m o d o s ro ta c io n e s sim p les. ca

E l c o s le d e l.i o p e ra c ió n e l i m i n a r e s e l d e d o s e n sa n c h a m ie n to s. T o d a s la* S e a .V e l n o d o d e s d e d o n d e s e e n s a n c h a e l á rb o l y r e l n ú m e ro to tal d e ro ta c io ­ nr

d e m á s o p e ra c io n e s tie n e n e l c o s te d e u n e n sa n c h a m ie n to . P o r ta n to , n e c e sita m o s n e s re a liz a d a s d u ra n te e l e n sa n c h a m ie n to . S e a ‘1*. la fu n c ió n d e p o te n c ia l del árbol


a n a liz a r e l c o s te d e u n a s e rie d e p a so s d e e n sa n c h a m ie n to . L a p ró x im a se c c ió n in m e d ia ta m e n te d e s p u é s d e l í- é s im o e n sa n c h a m ie n to . E n p a rtic u la r. <!'„ e s e l p o ­
m u e s tra q u e e l c o s te a m e n iz a d o «le u n e n s a n c h a m ie n to e s. c o m o m u c h o , e l de te n c ia l a n te s d e l p rim e r e n sa n c h a m ie n to .
1 N + I ro ta c io n e s . E n tre o tr a s c o s a s , e s to s ig n ific a q u e n o d e b e m o s p re o c u ­
p a m o s d e q u e e l a lg o r itm o d e e lim in a c ió n d e s c rito a n te rio rm e n te p u e d a d a r lugar
S i e l i-v s im o e n sa n c h a m ie n to u tiliza r, ro ta c io n e s, .ve tiene Te
a c o m p o rta m ie n to s se s g a d o s. L a c o ta a m o rtiz a d a d e lo s á rb o le s d e e n s a n c h a m ie n ­
to a s e g u r a q u e c u a lq u ie r se c u e n c ia d e M e n sa n c h a m ie n to s n e c e s ita ra , c o m o m u ­ «I», - «1*, , + r, $ 3 log N + I
c h o . 3 M log V + M ro ta c io n e s. E n c o n s e c u e n c ia , u n a s e c u e n c ia «le M o p e ra c io n e s
q u e e m p ie c e c o n un á rb o l v a c ío e x ig irá , c o m o m u c h o , u n tie m p o 0(M lo g .V). A n te s d e p ro b a r e l T e o re m a 2 1.2 . v e a m o s lo q u e sig n ific a . E l c o s te d e M e n ­ Tci
s a n c h a m ie n to s p u e d e to m a rse c o m o - fL ,r , ro ta c io n e s S i lo s M e n sa n c h a m ie n to s .i-;
es:
so n c o n se c u tiv o s t e s d e c ir, n o se e n tre m e z c la n in s e rc io n e s o e lim in acio n es» , e n ­
*1
21.4 Análisis del ensancham iento ascend en te to n c e s e l p o te n c ia l d e l á rb o l d e sp u é s d e l i- é s im o e n s a n c h a m ie n to e s e l m is m o que su
a n te s del ( / + l) -c s im o e n sa n c h a m ie n to . P o r ta n to , p o d e m o s u tiliz a r M v e c e s el
T e o re m a 2 1 .2 p a ra o b te n e r la s e c u e n c ia d e e c u a c io n e s e n la E c u a c ió n 21.1
L l a n á lis is d e lo s á rb o le s d e e n s a n c h a m ie n to e s c o m p lic a d o p o rq u e c a d a e n s a n ­
c h a m ie n to p u e d e n c c c sita i d e s d e u n a s p o c a s h a s ta O i N ) ro ta c io n e s . E s m á s . ul
<1*. - <1»„ + r , < 3 lo g \ ‘ + I
c o n tra rio d e lo q u e su c e d e c o n lo s á rb o le s d e b ú sq u e d a e q u ilib ra d o s, c a d a e n s a n ­
c h a m ie n to c a m b ia la e s tru c tu ra d e l á rb o l. E sta s e c c ió n p ru e b a q u e e l c o s te a m o rti­ «1»: - <!>, + r2< 3 log N + I
z a d o d e un e n s a n c h a m ie n to e s . c o m o m u c h o , e l d e 3 lo g A '-f I ro ta c io n e s . L a c o la 4», - <J*: + r» $ 3 lo g \ ' + I «21.11
a m o rtiz a d a d e lo s á rb o le s d e e n s a n c h a m ie n to a se g u ra q u e c u a lq u ie r se c u e n c ia de
M e n s a n c h a m ie n to s n e c e s ita rá , c o m o m u c h o . 3 M lo g Y + A/ ro ta c io n e s. E n c o n se ­ *r*v/ - 4>.m- i + ru < 3 lo g V + I
c u e n c ia . u n a se c u e n c ia d e M o p e ra c io n e s q u e e m p ie c e c o n un á rb o l v a c ío e x ig irá ,
c o m o m u c h o , u n tie m p o 0 { S 1 lo g N ). E s ta s e c u a c io n e s s e s o la p a n , d e m o d o q u e si s u m a m o s to d a s e lla s, o b te n e m o s
P ara p ro b a r e s ta c o la , in tro d u c im o s u n a fu n c ió n d e c o n ta b ilid a d d e n o m in a d a
J u n c ió n d e p o te n c ia l. L a fu n c ió n d e p o te n c ia l n o s e c a lc u la e n a b s o lu to p o r e l a l­ <D„ - «I>„ + , r, $ (3 lo g A' + 1 )M . «21-2»
g o ritm o . E s s ó lo u n m e c a n ism o d e c o n ta b ilid a d v irtu a l p ara e sta b le c e r la c o ta d e
tie m p o re q u e rid a . S u e le c c ió n n o e s o b v ia , o b te n ié n d o se g e n e ra lm e n te tra s una lo q u e a c o ta e l n ú m e ro to ta l d e ro ta c io n e s d e la sig u ie n te m an era
g ran c a n tid a d d e p ru e b a s y e rro re s.
P a ra c a d a n o d o / e n e l á r b o l d e e n sa n c h a m ie n to , s e a S ( i ) e l n ú m e ro d e d e s c e n ­ X " , r, ^ (3 lo g V * I )M - t<l>u - *o>-
d ie n te s d e i (in c lu y e n d o a l p ro p io /). N u e stra fu n c ió n d e p o te n c ia l se rá la su m a,
so b re to d o s lo s n o d o s / e n e l á rb o l T. d e l lo g a ritm o d e S { i l M á s e x a c ta m e n te . C o n s id e re m o s a h o ra lo q u e ix u r r e c u a n d o s e e n tre m e z c la n la s in s e rc io n e s c o n
la s b ú sq u e d a s . M e re c e la p e n a o b se rv a r q u e e l p o te n c ia l d e un á rb o l v a c ío e s 0.
C u a n d o s e in s e rta u n n o d o e n e l á rb o l c o m o u n a h o ja , a n te s d e l e n s a n c h a m ie n to el
p o te n c ia l d e l á rb o l s e v e in c re m e n ta d o e n c o m o m u c h o log .V (e s to s e d e m o stra rá
e n b re v e ). S u p o n g a m o s q u e nc u iili/a n r , ro ta c io n e s e n la in s e rc ió n y q u e e l p o te n ­
cial a n te s d e la in s e rc ió n e s <l>, _ IX -spués d e la in s e rc ió n e l p o te n c ia l v a ld rá c o ­ S i a + b ^ c v a v h s o n a m b o s e n te r o s p o s itiv o s , e n to n c e s Te
m o m u c h o «f>, , + log V. D e sp u é s d e l e n s a n c h a m ie n to q u e m u e v e e l n o d o in s e r­
tad»» a la r a í / , e l n u e v o p o te n c ia l sa tisfa rá l«>g a + lo g l> < 2 lo g c - 2.

<I>, - (<&,_ , + lo g \ ' ) -f r , $ 3 lo g N + I E n v ir tu d d e la d e s ig u a ld a d a ritm é tic o -g e o m é tric a , te n d r e m o s De


(21.3)
<J>, - <l>, - , + r ( í 4 lo g N + I . N a h ^ l a + b )/2 .

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 .

- f l, < (3 log .V + I )/•• + (4 lo g N + I ) / - i<|»„ - <1>0 ). (2 1 .4 )

21.4.1 Dem ostración d e la co ta d e ensancham iento


P o r o tr a p a n e , a n te s d e la p rim e ra o p e ra c ió n e l p o te n c ia l e s 0 y . y a q u e n u n c a p u e ­
d e se r n e g a tiv o , te n e m o s ‘l>w - <!»,, > 0 . F.n c o n se c u e n c ia , o b te n e m o s
F n p rim e r lu g a r, si e l n o d o a e n sa n c h a r e s la ra íz , n o s e p ro d u c irá n ro ta c io n e s y n o
hay n in g ú n c a m b io d e p o te n c ia l. D e m o d o q u e e l re s u lta d o d e l te o re m a s e ten d ría
- f l , n ^ (3 lo g ¿V + I i F + (4 lo g N + I )/. (2 1 .5 ) triv ia lm e n te , p o r lo q u e p o d e m o s a su m ir q u e hay a l m e n o s u n a ro ta c ió n . S e a .V el
n o d o in v o lu c ra d o e n e l e n sa n c h a m ie n to . N e c e sita m o s p ro b a r q u e si s e re a liz a n r
lo q u e m u e s tra q u e e l c o s te |x»r o p e ra c ió n d e c u a lq u ie r se c u e n c ia d e b ú sq u e d a s e ro ta c io n e s (u n /i/.- z ig u z ig -z a g c u e n ta c o m o d o s ro ta c io n e s ), e n to n c e s /• m á s el
in s e rc io n e s e s. c o m o m u c h o , lo g a rítm ic o . Y a q u e u n a e lim in a c ió n e q u iv a le a d o s c a m b io d e p o te n c ia l e s . c o m o m u c h o . 3 log .V + 1. S e a A e l c a m b io d e p o ten cial
e n sa n c h a m ie n to s, e lla ta m b ié n e s lo g a rítm ic a . C o n to d o e llo p o d e m o s p ro b a r las c a u s a d o p o r c u a lq u ie ra d e los p a s o s d e l e n sa n c h a m ie n to , / i g . z ig -z a g . o zig -zig .
d o s a firm a c io n e s p e n d ie n te s, a sa b e r, e l T e o re m a 2 1 .2 y e l h e c h o d e q u e u n a in s e r­ S e a n /?,< Y ) y S,< Y l e l r a n g o y e l ta m a ñ o d e c a d a n o d o ,Y in m e d ia ta m e n te a n te s d e
c ió n d e u n n o d o a ñ a d e c o m o m u c h o lo g N a l p o te n c ia l. A m b o s te o re m a s se p r u e ­ un p a s o d e l e n s a n c h a m ie n to > s e a n R , \ X ) y .S>( Y ) e l ra n g o y e l ta m a ñ o d e c a d a
b an u tiliz a n d o a rg u m e n to s d e d e sp lie g u e . N o s o c u p a m o s p rim e ro e n e l T e o re m a n o d o Y in m e d ia ta m e n te d e s p u é s d e l p a s o d e l e n sa n c h a m ie n to . A c o n tin u a c ió n se
21.3 d e la a firm a c ió n so b re la in serc ió n . p re se n ta n la s c o ta s q u e s e rá n p ro b ad as.
E n e l cas«* d e u n p a s o z ig q u e a sc ie n d e a l n o d o Y . A < 3 < /? ,(Y ) - f í , ( Y ) ) . m ie n ­
tra s q u e p a ra lo s «>tros d o s p a s o s . A ^ 3 [ R , ( Y ) R , { X )) 2. C u a n d o su m a m o s
L o in serció n c o m o u n a h o ja d e l N -é s im o n o d o e n u n á r b o l a r r e z a , c o m o e sta s c o ta s s o b re t«>dos los p a so s q u e c o m p re n d e n u n e n sa n c h a m ie n to , la s u m a «la
m u c h o , log N til /p o ten cia l d e l á rb o l. lu g a r a la c«>ta d e se a d a . E sta s c«»tas s e p ru e b a n d e fo rm a se p a ra d a e n lo s T e o re m a s
d e l 2 1 .5 a l 2 1 .7 . E n to n c e s, la d e m o s tra c ió n d e l T e o re m a 2 1 .2 s e c o m p le ta a p lic a n ­
d o u n ra z o n a m ie n to d e su m a s so la p a d a s.
L o s ú n ic o s n o d o s c u y o s r a n g o s s e ven a fe c ta d o s so n a q u é llo s e n e l ca m in o
d e s d e lo h o ja in s e rta d a a la r a í:. S e a n S t . 5 * S , su s ta m a ñ o s a n te s d e
la in s e rc ió n y o b s e n e r n o s q u e S t = ,V - I y S\ < S 2 < - < S t . Tom am os
c o m o .9 ,. S\ lo s ta m a ñ o s d e sp u é s tic la in s e rc ió n . C la ra m e n te . P a ra u n / h is o zig. A < 3</?/< Y ) - /? , (Y )).

•V¿ $ Y ,_ , /Hira i < k . y a q u e S] = S , + I. F n c o n se c u e n c ia . R


. F o r to n to , e l c a m b io e n e l p o te n c ia l es C o m o s e h a m e n c io n a d o a n te s e n e s ta s e c c ió n , lo s ú n ic o s n o d o s c u y o s
r a n g o s c a m b ia n e n u n p u s o z ig s o n Y F. F n c o n s e c u e n c ia , e l c a m b io d e
p o te n c ia l e s R ,( X ) - R ,i Y ) + R ,i P ) - R , i P ) . D e la F ig u ra 2 1 A d e d u ­
,< * ; - # , > * * ; - R \ 4 i f . . , - * , > $ lo g .V Af, ^ lo g ,v.
c im o s S , t P ) < 5 , ( / ') . p o r lo q u e s e s ig u e q u e R , ( P * R , { F ) < 0 . En
c o n s e c u e n c ia , e l c a m b io d e p o te n c ia l s a tis fa c e A ^ R / i X ) — /?,< *)•
P a ra p ro b a r e l T eorem a 2 1 .2 . d e sc o m p o n e m o s c a d a p a s o d e e n sa n c h a m ie n to
q u e S f { X ) > 5¿(Y). s e s ig u e q u e R , i X ) ~ R , ( X ) > 0. p o r l o q u e
e n s u s c o m p o n e n te s z ig . z ig -z a g y z ig -z ig . y e sta b le c e m o s u n a c o la «leí c o s te de
A s* 3 < ff,(Y ) - A \(Y » .
c a d a tip o d e ro ta c ió n . P o r d e s p lie g u e d e e s ta s c o la s , o b te n e m o s u n a c o ta p a ra el
e n sa n c h a m ie n to . A n te s d e c o n tin u a r, n e c e sita m o s u n re s u lta d o té c n ic o , e l T e o re -
m u 2 1.4. L o s pas«»\ zig z ag y z ig -z ig so n m á s c o m p lic a d o s , p o rq u e s e v e n a fe c ta d o s los
r.m oiis d e iti-s n o d o s P ro b a m o s n rim e ro e l c a s o zie-z.ag.
6 P a ra u n p u s o z i g - w g . A ^ 3 < /f,< X ) ~ R , ( X ) ) ~ 2 . D e la F ig u ra 2 I b . 5 ,( X ) + S,< G ) $ 5 , ( X ). ¡u>r lo q u e a l a p lic a r e l T eore­
m a 2 1 4 m u q u ed a
n C o m o m ile s , u ñ e m o s tr e s c a m b io s, p o r l o q u e e l c a m b io ,1c p o te n c ia l n e ­
ne dado p o r R , ( X ) + 1 1 , ( 0 ) < 2 R / i X ) ~ 2. (2 1 .1 0 )

A =R,lX) - R,iX) + Rf i p) - R'iP) + /?,<G ) - RJG). R e o rg a n iz a n d o la F , tu ició n 2 1 .1 0 . o b te n e m o s

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 - - R,(Xi + R ,lP ) R , i P \ + R,(G). C u a n d o s u s titu im o s e n la E c u a c ió n 2 1 . 1 1 o b te n e m o s

A d e m a s 5,< P ) 2* 5,< X ). p o r l o q u e . /J,( / ’ > 2> R , l . \ ) R e a liza n d o e sta su sti­ A £ 3 íR ,( X ) - R , ( X ») - 2.


tu c ió n \ r e o r g a n iz a n d o té r m in o s o b te n e m o s
U n a v e / q u e h e m o s o b te n id o c o ta s p a ra c a d a u n o d e lo s p a so s d e l e n s a n c h a ­
A $ R ,\ P) 4 * ,( < ;» - 2R,iX). (21.6) m ie n to . p in te m o s fin a lm e n te c o m p le ta r la d e m o s tra c ió n d e l T e o re m a 2 1 2 .

.3 p a r t ir d e la F ig u ra 21 .5 . S , ( P ) + S ,(G > $ 5 , ( 3 0 . A p lic a n d o e l te o re m a


2 1 4 . o b te n e m o s lo g 5 , » / ’ ) * lo g S , i G ) < 2 lo g S , i X ) 2. y p o r la d e fi­
S e a R ,t( X ) e l ra n g o d e Y a m e s d e l e n s a n c h a m ie n to , y R , ( X i e l r a n g o d e X
n ic ió n d c l ra n g o , e s to s e c o n v ie r te en
d e sp u é s d e l i- é s im o p a s o d e l e n s a n c h a m ie n to . A n te s d e l til tim o p a s o d c l
R , ( P \ + R ,iG ) 2 R , { X ) - 2. (2 1 .7 ) e n sa n c h a m ie n to , lo d o s lo s /rasas h a n sid o z ig z a g o zi g-zi g. S u p o n g a m o s
q u e h a y k d e e sto s p a so s. E n to n c e s e l n ú m e r o to ta l d e r o ta c io n e s re a liza ­
S u s titu y e n d o la F c u a c io n 2 1 . 7 e n la E c u a c ió n 21 b o b te n e m o s d a s e n es t e p u n to e s 2k. E l c a m b io to ta l d e l p o te n c ia l es

A $ 2 R , ( X \ - 2 R , t X ) - 2. (2 1 .8 ) i ; = l< 3 ( / W * ,_ ,< * » - 2 ).

C o m o e n e l c a s o d e la ro ta , io n zig . R , ( Y l A',< ,V) > 0 . ¡m r lo q u e p m le -


E s ta s u m a n o s c o n d u c e a M R ^ X ) R „ iX » 2k . E n e s te p u n to , e l n ú m e ­
m o s s u m a r lo a l la d o d e r e c h o d e la E c u a c ió n 2 1 .K y f a c t o n z a r p a r a o b te ­
ro io ta I d e ro ta c io n e s m á s e l c a m b io to ta l d e p o te n c ia l e s tá a c o ta d o p o r
n e r lo d e s ig u a ld a d d e se a d a
3 R ki X >, y a q u e 2 k té r m in o s se c a n c e la n y e l r a n g o in ic ia l d e X e s n o n e g a ­
A < 3 iR,(X) R, i . Y » - 2 . tivo . S i la ú ltim a ro ta c ió n e s u n z ig -z ig o u n z ig za g , e n to n c e s u n n u e v o
p r itc e s o d e s u m a s so la p a d a s n o s c o n d u c e a u n to ta l d e 3 Rf r aí z ) . O b s e r v e ­
F in a lm e n te . p ro b a m o s la c o ta p a r a e l c a s o z ig -/¡g . m o s q u e aquí, e l - 2 e n e l in c r e m e n to d e p o te n c ia l c a m e la ,lo s r o ta c io ­
n e s. P o r s u p a ite , e s to n o o c u r r e e n e l c a s o ¿ig, ¡u>r lo q u e o b te n d ría m o s
3 R (r a íz ) + 1. Y a q u e. e n e l p e o r c a so , e l ra n g o d e la ra íz e s log N . e l n ú ­
P a ra c a d a p a s o zi g-zi g s e tie n e A $ 3 ( /f ,( X ) - A,< .Vtl 2. m e r o to ta l d e ro ta c io n e s m á s e l c a m b io d e p o te n c ia l d u r a n te e l e n s a n c h a ­
m ie n to es. c o m o m u c h o . 3 log N + I.
C o m o a n tes, te n e m o s tr e s c a m b io s. ju>r lo q u e e l c a m in o d e p o te n c ia l v ie ­
ne dado por
L a d e m o s tra c ió n d e la c o ta d e los á rb o le s tic e n s a n c h a m ie n to , a u n q u e c o m p le ­
A = R , ( A l - R ¿ X ) + R , { P ) - R t{ P ) + R , \ G ) - R ¿ G ) . j a . ilu stra a lg u n o s p u n to s in te re sa n te s. P rim e ro , e l c a s o z ig -z ig e s a p a re n te m e n te el
m á s c o s to s o , y a q u e c o n trib u y e c o n la c o n s ta n te d o m in a n te tres, m ie n tra s q u e el
D e l a F ig u ra 2 1 .6 d e d u c im o s S , ( .V) = 5,1 C ,). ¡m r lo q u e lo s r a n g o s d e a m - c a s o z ig -z a g lo h a c e c o n d o s. L a d e m o s tra c ió n n o fu n c io n a ría si in te n tá ra m o s a p li­
l»os m u lo s s o n ig u a le s. O b te n e m o s e n to n c e s c a rla a l c a s o d e la ro ta c ió n h a c ia la ra íz . E sto s e d e b e a q u e . e n e l c a s o zig . e l n ú ­
m e r o d e ro ta c io n e s m á s e l c a m b io d e p o te n c ia l e s R , ( X ) - A(«X» + I. El I fin al
A = - AM.V) *- R , i P ) - R , i P \ + R ,(C ,t. n o s e e lim in a a l re a liz a r s u m a s so la p a d a s, p o r lo q u e n o p o d ría m o s p ro b a r u n a c o ­
ta lo g a rítm ic a . E s to e s c o rre c to , p u e s y a s a b ía m o s q u e e n e s te c a s o n o e ra p o sib le
D e fo r m a a n á lo g a o b te n e m o s R , { P \ > R ¡ { X ) y R , ( P ) < R,C.V). R e a liz a n ­ o b te n e r u n a c o ta lo g a rítm ic a .
d o e s ta s u s titu c ió n s r e o r g a n iz a n d o té r m in o s o b te n e m o s L a té c n ic a d e a n á lisis a m o rtiz a d o e s m u y in te re sa n te , y se h a n d e s a rro lla d o a l­
g u n o s p rin c ip io s g e n e ra le s p a ra fo rm a liz a r e l m arco . E n la b ib lio g ra fía se p u e d e n
f - n r i m l r - t r m . i s i t i ' l n l l c ’ s : i l r<’s n « v t o
21.5 Árboles d e ensancham iento d escen d en te

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

Figura 21.10 Zig z a g d e sce n d e n te sim plificado


¿ig -ag «implicado V a c io

Ziü-ziy

Figura 21.11 M ontaje final d e l en sancham iento d e sce n d e n te

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

Figura 21.12 Posos d e un en sancham iento d e sce n d e n te (a c c e d ie n d o a l 19 del


21.6 lm plem entación d e los árboles pnm er árb ol)
c o n ensancham iento d escen d en te

L l e s q u e le to d e la c la s e d e lo s á rb o le s c o n e n s a n c h a m ie n to s e m u e s tra e n lu F i­ d e l á rb o l e s ig u al a x . le ñ e m o s u n d u p lic a d o . L n e s te c a s o , n o q u e re m o s in s e rta r x


g u ra 2 1 .1 3 . P a r a e lim in a r m o le sto s c a s o s e sp e c ia le s , m a n te n e m o s u n c e n tin e la e s ­ p o r lo q u e ve la n z a u n a e x c e p c ió n . S i la n u e v a raíz c o n tie n e u n v a lo r q u e cv m a y o r
tá tic o n o d o N u lo . L l c e n tin e la s e c o lo c a e n m e m o ria y s e in ic ia liz a d u ra n te la c a r ­ q u e x . e n to n c e s lu n u e v a ra íz y >u su b árb o l d e re c h o .se c o n v ie rte n e n e l un .subár­
g a d e la c la s e , c o m o m u e s tra la F ig u ra 2 1 .1 4 b o l d e re c h o »le n o d o N u e v o y e l s u b á rb o l iz q u ie rd o d e la ra íz se c o n v ie rte e n el
L a F ig u ra 2 1 .1 5 m u e s tra e l m é to d o d e in s e rc ió n d e u n e le m e n to x . U n n u ev o su b á rb o l iz q u ie rd o d e n o d o N u e v o . S e a p lic a un ra z o n a m ie n to s im ila r si la n u e v a
n o d o ( n o d o N u e v o ) ve c o l i v a e n m e m o ria y vi e l á rb o l e s v a c ío se c re a u n á rb o l raíz c o n tie n e u n v a lo r m e n o r q u e x . L n c u a lq u ie r cav o . n o d o N u e v o ve a s ig n a a
c o n u n n o d o . E n o tr o c a s o , e n s a n c h a m o s d e s d e x . S i e l e le m e n to e n la n u e v a raíz r a í z p a ra in d ic a r q u e e s la n u e v a raíz
p a c 'k a g e E s tru c tu ra íiD o t-o s ;
1 /• •
2 * C o n s t r u y e e i á r b o l.
Im p o rt S o p o r t e .•? Im p o rt S o p o r t e .C o m p a ra b le ; 3 */
lm p or t E x c e p c Io n e s .* ; 4 p u b li c A rb o lE r.s a n c h a m ie n to ! I
5 (
II C l a s e A rb o lE n s a n c h a m ie n to 6 r a í z « n odoN ulo:
ti 7 )

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

ll v o id in s e r t a r * x) --> In s e r t a x U nodoN ulo = new N o d o B in a r io ! n u i l ) :


// v o id e l¡m in a r í x) --> E l im in a x 12 n o d o N u io . iz q u ie r d o = n o d o N u lo .d e re c h o = nodoNulo.*
// v o id e lim in a r M in ! I - - > E l im in a e l menor e le m e n to 13
II C o m p a ra b le b u s c a r ! x ) - - > D e v u e lv e e i e le m e n to q ue c a s a co n x
// C o m p a ra b le b u s c a r M in ! I - - > D e v u e lv e e l menor d e m e n to Figuro 21.14 C onstrucción d e l órbol d e en san ch am ien to In clu yen d o la miclafca-
II C o m p a ra b le b u sc a rM a x i l - - > D e v u e lv e e l m ayor e le m e n to cton estática
/1 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 í o ; a l n o , f a l s e
// v o id v a c ia r ) ) - - > E l im in a to d o s lo s e le m e n to s
II v o id im p r im ir A r b o 1 ( ) --> Im p r im ir e i á r b o l en o rd e n
II ERRORES• • • • » • • • • • • • • • • • • • • • • • • • • • • • • • 1 /• •
' / M uchas r u t i n a s la n z a n E le m e n to N o E n co n tra d o er. c a s o s d e g e n e ra d o s 2 * I n s e r t a er. e l á r b o l .
// in s e r t a r la n z a E le m e n to D u p lIc a d o s i e l d e m e n t o y a e s t á 3 * P p a r a ro x e i e l e m e n t o a i n s e r t a r .
4 • 9 e x c e p tio n E le m e n to D u p lic a d o s i un e le m e n to q ue c a s a
5 * con x ya e s tá en e l á r b o l.
Im p lem en ta un á r b o l con e n s a n c h a m ie n to d e s c e n d e n te . 6 •/
L a s c o m p a ra c io n e s s e b a s a n e n e l m étodo co m p ara. 7 p u b lic v o id in se rta r! C om parable x l th ro w s E le m e n to D u p lic a d o
8 (
p u b lic c l a s s A rb o lE n s a n c h a m ie n to im p le m e n ts A rb o lB u s q u e d a 9 N o d o B in a r io nodoNuevo = r.e w N o d o B i n a r i o ! x );
10
p u b l i c A rb o lE n s a n c h a m ie n to ( ) 11 if í ra iz == n o d o N u l o I
< /• F ig u r a 2 1 . 1 4 • / ) 12
p u b l i c v o id I n s e r t a r ! C o m p a ra b le x ) th ro w s E le m e n to D u p lIc a d o 13 n o d o N u e v o .iz q u ie rd o = nodoNuevo. d e rec h o = no d o N u lo ;
< / * F ig u r a 2 1 . 1 5 • / ) 14 ra iz = nodoNuevo;
p u b l i c v o id e l i m i n a r ! C o m p a ra b le x ) th ro w s Elem e n to N o Er.co ntrad o 15
( / * F ig u r a 2 1 . 1 6 • / J 16 e ls e
p r o t e c t e d N o d o B in a r io e n s a n c h a m ie n to ! C o m p a ra b le x . N o d o B in a r io t ) 17
{ /• F ig u r a 2 1 . 1 8 * / ) 18 r a í z = e n sa n c h a m ie n to ! x . ra iz Ir
p u b lic C o m p a ra b le b u s c a r ! C o m p a ra b le x > throw s Elem encoN oEncontrad o 19 i f ! x.m e n o rQ u e ! r a i z . d a t o I )
( /• F ig u r a 2 1 . 1 7 •/ )
20
p u b lic v o id e lim in a r M in ! ) th ro w s E le m e n to N o En co n tra d o 21 n o d o N u e v o .iz q u ie rd o = r a i z . i z q u ie r d o ;
( e l i m in a r ! b u s c a r M in ! ) ) ; )
22 n o d o N u e v o .d e re c h o • r a i z ;
p u b l i c b o o le a n e s V a c io ! )
23 r a i z . i z q u i e r d o = n o d oN ulo;
( r e t u r n r a í z == n o d o N u lo ; }
24 r a í z » nodoNuevo;
p u b l i c v o id v a c i a r ! )
25
( r a í z = n o d o N u lo : I
26 e lse
27 i f ! ra iz .d a to .m e n o rQ u e ! x I I
/ / b u s c a rM in , b u s c a r Max e i i r p n n : r A r b o l e s t á n d is p o n ib le s e n In t e r n e t
28
p r iv a t e N o d o B in a r io r a iz ; 29 n o d o N u e v o .d e re c h o - r a i z . d e r e c h o ;
30 n o d o N u e v o .iz q u ie rd o = r a i z ;
31 r a i z . d o r e c h o ■ no d o N u lo ;
:lguro 21.13 Esqueleto O e lo ció se d e árb oles c o n e n san ch am ien to d e sce n d e n te 32 r a i z = nodoNuevo;
33
34 e ls e
1-a F ig u ra 2 1 .1 6 m u e s tra e l a lg o ritm o d e e lim in a c ió n d e u n á rb o l d e e n s a n c h a ­
35 t h r o w new E le m e n r o D u p l i c a d o ! ‘ In se rtar en e i á rb o l’
m ie n to . P u e d e re s u lta r c h o c a n te q u e e l p ro c e d im ie n to d e e lim in a c ió n s e a m á s c o r ­ 36
to q u e e l c o rre s p o n d ie n te p ro c e d im ie n to d e in se rc ió n . L l m é to d o b u s c a r se 37 )
m u e s tra e n la F ig u ra 2 1 1 7 D e sp u é s del e n s a n c h a m ie n to , e l e le m e n to s o lic ita d o o
b ie n e s la raí/, o n o e s tá e n e l á rb o l, p o r lo q u e e l m é to d o e s m u v c o n o . L o ú n ico
F igu ra 21.15 inserción en e l ó rb o l c o n e n sa n c h a m ie n to descend ente.
1 /•• 1 p rlv ct* H ifltic N o d o B in ario c a b o e n ra - » «w N o d o B i n a r i o l n u il »j
2 • E lim in a c ió n d e l á r b o l. 2
3 • íp .jr.i— x e l e le m e n t o a « lím ir ..ir . 3 /•*
4 • « e x c e p t i o n E le m e n to N o E n c o n tra d o s i n o h a y un |
5 • e le m e n to que c a s e c o n x en e l á rb o l. 5 • E l ú ltim o nodo a c c e d id o s e c o n v ie r te en la r a íz .
6 •/ 6 * «p aran x e l e le m e n to n i quo pe r e l i o i c e l e n d rtn c h n n ie n to .
7 pu b l :c v o id e l im in a r < C om para n !** x ith ro w s E le m e n to N o E n c o n tra d o 7 • 8 p a r a m t l a r á i z cié i s u b á r b o l q u e h a y q u e e n s a n c h a r .
8 I 8 • « r e tu r n e l su b á rb o l d e s p u é s d « l e n sa n c h a m ie n to .
9 N od o B in ar i o nuev o A rb o l; 9 •/
10 10 p r o t e c t e d N o d o B in a rio e n s a n c h a m ie n to I C om parable x , N o d o B in a rio t I
11 / / S I x a e e n c u e n tr a , « a t a r á en la r a í z 11 1
12 ra iz = e n sa n c h a m ie n to ! x . ra íz ); 12 N o d o B in a rio a a x A r t o l I z q , m íriA rb o lD er:
13 ;í( r a i : . d a t o . c o m p a r a ( x ) !• o ) 13
14 t h r o w new E - e m e r.to N o E n c o n tra d o i ' E l i m i n a r d e i á r b o l ' ) 14 c a b e c e r a . i z q u i e r d o = c a b e c e r a , d e re c h o = nod o N u lo ;
15 15 m ax A rb o lIz q - n ln A rb o lD e r ® c a b e c e r a ;
16 ¿ tí r a i z . i z q u i e r d o == n o d o N u l o ) 16
17 nuevoA rbol = r a í 2 . d e rec h o ; 17 n o d o N u lo .d ato = x: / / G a ran tiza un e m p a reja m ie n to
18 © I do 18
19 19 ñor! ; ; I
70 /. Buücrar o l m á x i m o d e l s u b á r b o l i z q u i e r d o 20 l!< x .m o n o rQ u e t t.d a to » )
21 E n sa n ch a rlo h a c ia ia r a í z ; e n la z a r h i j o derech o 21 (
22 nuevoA rbol = r a i z . iz q u ie rd o ; 22 i í <x .m e n o rQ u e l t . i z q u i e r d o . d a t o ) í
23 n u e v o A rb o l * e n s a n c h a m ie n to l x. n u ev o A rb o l ); 23 t a R o ta c io n e s .co n H i j o lz q u i e r d o I t J;
24 n u e v o A rb o l.d e re c h o = r a :z .d e r e c h o ; 24 i f l * . i z q u i e r d o r= nodoN ulo )
25 25 break;
26 ra iz = nuevoA rbol ; 26 / / E n la z a r derech o
27 ) 27 n in A rb o lD e r. Iz q u ie rd o = t :
28 m in A ib o lD e r = t ;
Figura 21.16 Eim in o d o n e n e l árbol d e en san ch am ien to d escen d en te. 29 t = t.iz q u ie rd o ;
30
31 e l s e i f ! t.d a to .m e n o rC u e ! x J )
1 32 (
2 * B uscar un ele m en to e n e l á r b o l . 33 i f ! t.d e re c h o .d a to .n e n o r\¿ u e ! x | i
3 • «param x e l e le m e n to a b u s c a r . 34 t = R o ta c io n e s . c o n H ijo D e re c h o ! t );
4 • « r e tu r n e l e le m e n to e n c o n tra d o . 35 : t ! t . d e r e c h o «= n o d o N u l o l
5 ' 0 e x c e p c i ó n E le m e n to N o E n c o n tra d o s i n o h a y un 36 break:
6 * e le m e n to q ue conn con x e n e l á r b o l . 37 ' / E n la z a r Iz q u ie rd o
7 */ 38 m a x A rb o lIz q .d e re c h o = t :
8 p u b lic C om parable b u s c a r ; C om parable x ) th ro w s E lem entoN oE ncontrado 39 m a x A rb o lIz q • t :
9 ( 40 t = t.d e re c h o ;
10 ra íz = e n s a n c h a m i e n t o < x. ra iz I; 41
11 42 e ls e
12 if < e s v a c io l I || r a í z . d a t o . co m p ara! x ) != 0 ) 43 break:
13 t h r o w new E le m e n t o N o E n c o n t r a d o ! "B u sc a r e n e l á r b o l " I; 44
14
45 m a x A rb o lIz q .d e re c h o = t . i z q u i e r d o ;
15 re tu rn ra iz .d a to ; 46 m i n A r b o l D e r . i z q u a o r i l o = r. . d e r e c h o ;
16 > 47 t.iz q u ie r d o = cab e ce ra.d ere c h o ;
48 t.d e re c h o = c a b e c e ra . iz q u ie rd o ;
Figuro 21.17 M éto d o b u s c a r d e los árboles d e ensancham iento
49 re tu rn t ;
50 )

q u e n o s la lü i c s la ru tin a 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 e im p le m e n ta c o m o Figuro 21.18 Algoritm o d e en sancham iento d e sce n d e n te


m é to d o p ro te g id o p a ta q u e . si se d e s e a , n u e s tra c la s e p u e d a se r e x te n d id a c o n un
a lg o ritm o d e e n s a n c h a m ie n to d ife re n te . son in ic ia l m e n te v acío s, p o r lo q u e la c a b e c e ra s e u ti li /a p a ra sc ñ a lu r a l m ín im o y
N u estra im p le m e n ta c ió n . m o stra d a e n la F ig u ra 2 1 .1 8 . u tiliz a u n a c a b e c e ra c o n m á x im o n o d o d e l á rb o l iz q u ie rd o \ d e re c h o , re s p e c tiv a m e n te , e n e s te e s ta d o in i­
re fe re n c ia s iz q u ie rd a y d e re c h a q u e a la p o s tre c o n te n d r á la s ra íc e s d e lo s á rb o le s cia l. D e e s ta m a n e ra , e l c ó d ig o p u e d e e v ita r c o m p ro b a c io n e s d e á rb o le s v a c ío s . La
iz q u ie rd o y d e re c h o c a b e c e r a e s u n a trib u to e s tá tic o , y a q u e q u e re m o s c o lo c a rlo p rim e ra v e /, q u e e l á rb o l iz q u ie rd o d e ja d e s e r v a c ío , la re fe re n c ia d e re c h a d e la
e n m e m o ria s ó l o u n a v e / d u ra n te la s e c u e n c ia d e e n sa n c h a m ie n to s, lis to s á rb o le s c a b e c e ra s e im c ia li/a rú y n o c a m b ia rá c n e l lu iu r o P o r ta n to , c o n te n d rá la r a í /
d e l h ijo iz q u ie rd o a l fin al d e la b ú sq u e d a d e sc e n d e n te . IX* fo rm a sim ila r, la te le
á r b o l d e e n s a n c h a m ie n to ascen d en te Á rb o l e n e l c u a l lo s e le m e n to s son ro tad o s
re n c ia iz q u ie rd a d e la c a b e c e ra c o n te n d rá a la p o stre la ra íz d e l á rb o l d erech o .
h a c ia la ra íz u tiliz a n d o un m é to d o a lg o m á s c o m p lic a d o q u e e l u tiliz a d o e n lu
A n te s d e l m o n ta je a l fin a l d e l e n s a n c h a m ie n to , c a b e c e r a . i z q u i e r d o y
ro ta c ió n se n c illa h a c ia la raíz
c a b e c e r a . d e r e c h o rc fe re n c ia ra n a Ai y /.. re sp e c tiv a m e n te (e s to n o e s u n e rro r
á r b o l d e e n s a n c h a m ie n to d e sce n d en te T ipo d e á rb o l d e e n s a n c h a m ie n to m á s e f i ­
tip o g rá fic o , sig a lo s e n la c e s). T e n g a e n c u e n ta q u e e s ta m o s u tiliz a n d o e l e n sa n
c ie n te e n la p rá c tic a q u e su c o n tra p a rtid a a s c e n d e n te , c o m o o c u rrió e n e l c a s o
c h a n iic n to sim p lific a d o .
d e lo s á rb o le s ro jin eg ro s
e n s a n c h a m ie n t o E s tra te g ia d e ro ta c ió n h a c ia la ra iz q u e p e rm ite o b te n e r u n a c o ta
a m o rtiz a d a lo g a rítm ic a
21.7 C o m p aracio n es de los árboles
e strate g ia d e ro ta c ió n h a c ia la r a íz E stra te g ia q u e re o rg a n iz a un a ib o l b in a rio de
d e en sancham iento co n otros árboles b ú sq u e d a d e sp u é s d e c a d a a c c e s o d e fo rm a q u e d e s p la z a lo s e le m e n to s m á s
d e búsqueda fre c u e n te m e n te a c c e d id o s c e rc a d e la raíz,
fu n c ió n d e p o te n cia l H e rra m ie n ta d e c o n ta b ilid a d u tiliz a d a p a ra p ro b a r u n a c o ta
Lu im p le m e n ta c ió n e n la s e c c ió n a n te rio r su g ie re q u e los á rb o le s d e e n s a n c h a ­ a m o rtiza d a.
m ie n to n o so n tan c o m p lic a d o s c o m o lo s á rb o le s ro jin e g ro s y so n c a s i ta n sim p le s r a n g o E n e l a n á lisis d e un á rb o l d e e n sa n c h a m ie n to , e l lo g a ritm o d e l ta m a ñ o de
c o m o lo s A A -á rb o le s ¿ M e re c e la p e n a u tiliz a rlo s ? L a re s p u e sta d e fin itiv a e s tá un n o d o .
a ú n p o r o b te n e r, p e ro p a re c e q u e si lo s a c c e s o s n o s o n a le a to rio s , lo s á rb o le s de re g la d e l 9 0 - 1 0 R e g la q u e a firm a q u e e l 9 0 p o r c ie n to d e lo s a c c e s o s c o rre s p o n ­
e n s a n c h a m ie n to tie n e n e n e fe c to m u y b u e n re n d im ie n to e n la p rá c tic a . lis m ás. a l­ d e n a l 10 p o r c ie n to d e lo s d a to s . L o s á rb o le s d e b ú sq u e d a e q u ilib ra d o s n o s a ­
g u n a s p ro p ie d a d e s re la tiv a s a sU b u e n re n d im ie n to p u e d e n p ro b a rse a n a lític a ­ c a n p a rtid o d e e s ta re g la ,
m e n te L w a c c e s o s n o a le a to rio s in c lu y e n a q u é llo s q u e sig u e n la re g la d e l ‘«>-10. z ig y z ig -z a g L o s c a s o s z ig y z ig za g so n id é n tic o s a lo s c a s o s d e la ro ta c ió n h a c ia
a s í c o m o d iv e rs o s c a s o s e s p e c ia le s c o m o a c c e s o s s e c u e n c ia le s . a c c e s o s p o r lo s d o s la ra íz . E l c a s o z ig se u tiliz a c u a n d o X e s un h ijo d e la ra íz , y e l zig zag c u a n d o
e x tre m o s y p a tro n e s d e a c c e s o s q u e so n típ ic o s d e las c o la s d e p rio rid a d d u ra n te X e s u n n o d o m á s in te rn o
c ie rto s tip o s d e s im u la c ió n d e e v e n to s . L o s e je rc ic io s le p id e n e stu d ia r e s to c o n z ig -z ig E l c a s o z ig -z ig e s e x c lu s iv o d e lo s á rb o le s d e e n s a n c h a m ie n to S e u tiliza
m á s detalle c u a n d o X e s u n n o d o e x te rn o .
S in e m b a rg o , lo s á rb o le s d e e n s a n c h a m ie n to n o so n p e rfe c to s. U n p ro b le m a es
q u e . d e b id o a l e n sa n c h a m ie n to , la o p e ra c ió n b u s c a r e s c o s to s a b n c o n se c u e n c ia ,
c u a n d o las se c u e n c ia s d e a c c e s o s so n a le a to ria s y u n ifo rm e s , lo s á rb o le s d e e n s a n ­ Errores com unes
c h a m ie n to n o so n ta n b u e n o s c o m o o tro s á rb o le s e q u ilib ra d o s.
1. IX*spués d e c a d a a c c e s o s e tie n e q u e re a liz a r u n e n sa n c h a m ie n to , a u n e n el
c a s o d e lo s q u e n o te n g a n é x ito , p u e s si n o . n o so n v á lid a s las c o ta s de
Resumen ren d im ien to .
2. E l c ó d ig o e s u n ta n to re b u s c a d o S e a cuidad**so.
E ste c a p ítu lo 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 so n u n a re cie n te
a lte rn a tiv a a lo s á rb o le s d e b ú sq u e d a e q u ilib ra d o s. L o s á rb o le s d e e n s a n c h a m ie n to
tie n e n a lg u n a s p ro p ie d a d e s n o ta b le s q u e p u e d e n se r d e m o s tra d a s, in c lu y e n d o un En Internet
c o s te a m o rtiz a d o lo g a rítm ic o p o r o p e ra c ió n O tra s p ro p ie d a d e s se in d ic a n e n los
e je rc ic io s. A lg u n o s e s tu d io s h a n su g e rid o q u e los á rb o le s d e e n s a n c h a m ie n to p u e ­ 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 tá d is p o n ib le e n In te rn e t e n e l d ire c to rio
d e n u tilizarse e n un a m p lio ra n g o d e a p lic a c io n e s d e b id o a su a p a re n te h a b ilid a d D a t u S t r u i 'l u r e v E l n o m b re d e l fic h e ro e s e l sig u ie n te :
d e a d a p ta rse a las se c u e n c ia s d e a c c e so s se n c illa s. S p Iu y J ’r e v .ja v a T ra d u c id o c o m o A r b o l E n n a n c h a m io n t o . j n v a . c o n tie n e
E l p ró x im o c a p ítu lo d e s c rib e d o s e s tru c tu ra s d e c o la s d e p rio rid a d q u e . c o m o la im p le m e n ta c ió n d e la c la s e *le lo s á rb o le s d e e n s a n c h a ­
los á rb o le s d e e n sa n c h a m ie n to , tie n e n re n d im ie n to s p o b re s e n e l c a s o p e o r, p e ro m ien to .
b u e n o s re n d im ie n to s a m e n iz a d o s . U n a d e é s ta s , 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 se r u n a e le c c ió n e x c e le n te e n a lg u n a s a p lic a c io n e s .
Ejercicios
Elementos del juego C uestiones breves
a n á li s i s a m o r t i z a d o M é to d o d e a n á lis is q u e a c o ta e l c o s te d e u n a s e c u e n c ia d e 21.1. M u e stre e l re s u lta d o d e in s e rta r lt*s v a lo re s 3. I . 4 . 5. 2 . 9 . 6 y 8 e n un
o p e ra c io n e s y d is trib u y e e q u ita tiv a m e n te e l c o s te e n tr e la s o p e ra c io n e s d e la
o) árb o l d e e n s a n c h a m ie n to axcendcntc.
secuencia.
h) árb o l d e e n s a n c h a m ie n to d e sc e n d e n te .
2 1 .1 2 . C o m p a re e m p íric a m e n te u n a im p le m e n ta c ió n «le las c o la s «le p rio rid a d
2 1 .2 . M u e s tre e l r e s u lta d o «lo e lim in a r e l 3 «leí á rb o l d e l E je rc ic io 21.1 e n a m ­
u tiliz a n d o u n á rb o l «le e n s a n c h a m ie n to c o n u n m o n tíc u lo b in a rio . U tilice
b o s c aso s.
lo s sig u ie n te s m o d e lo s «le e n trad a:
Problem as teóricos a) In se rc io n e s > o p e ra c io n e s © 1 ¿ m in a r M in ale a to ria s.
h) O p e ra c io n e s d e i n s e r t a r > e l i m i n a r M i n c o rre s p o n d ie n te s a una
213. D e m u e stre q u e e l c o s te 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 d e s ­
s im u la c ió n d irig id a p o r e v e n to s
c e n d e n te e s (H lo g V i
O p e ra c io n e s d e i n s e r t a r v e l i m n a r M i n c o rre sp o n d ie n te s a l al-
2 1 .4 . D e m u e stre q u e si to d o s lo s mxl«>s d e u n á rb o l d e e n s a n c h a m ie n to so n a c ­
g o ritm o «le D ijkstra.
c e d id o s e n o rd e n se c u e n c ia l. e l á rb o l re s u lta n te e s ta rá fo rm a d o p o r una
c a d e n a d e h ijo s i/q u ie rd o s. 2 1 .1 3 . D ise ñ e un a p p lc t q u e ilu stre la s o p e ra c io n e s d e los á rb o le s d e e n s a n c h a ­
2 1 .5 . S u p o n g a m o s q u e . e n u n m ie n to d e a h o rra r tie m p o , e n sa n c h a m o s só lo e n m ie n to . P u e d e u tiliz a r e l e n s a n c h a m ie n to a s c e n d e n te o d e sc e n d e n te
u n a ile c a d a d o s o p e ra c io n e s. ¿ S ig u e s ie n d o lo g a rítm ic o e l c o s te a m o rti­
zado?
2 1 .6 . L os n o d o s d e l I a l V = 1 .0 2 4 fo rm a n u n á rb o l d e e n s a n c h a m ie n to d e h i ­ Bibliografía
jo s iz q u ie rd o s

a) ¿ C u á l e s la lo n g itu d e x a c ta d e l c a m in o in te rn o d e l á rb o l? L o s á rb o le s «le e n s a n c h a m ie n to se d e sc rib e n e n e l a rtíc u lo 131 E l c o n c e p to d e a n a


Id C a lc u le la lo n g itu d d e l c a m in o in te rn o d e s p u é s d e la s o p e ra c io n e s lisis a m o rtiz a d o s e d is c u te e n e l a ilic u lo | 4 | y ta m b ié n c o n g ra n d e ta lle e n |5 |. U n a
b u s c a r ( 1 ) . b u s c a r ( 2 ) . b u s c a r O l . c u a n d o se u tiliz a u n e n s a n ­ c o m p a ra c ió n 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 l«»s á rb o le s A V L se p re se n ta
c h a m ie n to a sc e n d e n te . e n 111. | 2 | m u e s tra q u e l«*s a rb o le s d e e n s a n c h a m ie n to se c o m p o rta n b ie n e n a lg u ­
n o s tip*»N «le s im u la c ió n d ir ig id a p o r ev en to s.
2 1 .7 . C a m b ia n d o la fu n c ió n d e p o te n c ia l, se p u e d e n o b te n e r d ife re n te s c o ta s
p a ra e l e n sa n c h a m ie n to . S e a h i ) u n a fu n c ió n p e s o a s ig n a d a a c a d a n o d o I J. B ell y C» C íupta. « A n E v a lu a ü o n o f S c lf-A d ju stin g B inary S e a rc h T ree
d e l á rb o l y S U ) la s u m a d e lo s p e so s d e l»»dos lo s n«xlo\ e n e l á rb o l cuya T e c h n iq u c s -. S o ftw a re P ru t tic e a n d E x p e n e n i e 2 3 1 1993). 3 6 9 -382.
r a í / e s i. in c lu y e n d o a i F.I c a s o e s p e c ia l P i i ) = I p a ra to d o s |»*s n tx io s 2. D W J o n e s . - A n E m p iric a l C «*m purison «»f P rio n tx -Q u e u c a n d E v e n t Set
o H T csp o n d e a la (u n c ió n u tiliz a d a e n la d e m o s tra c ió n d e I j c**ta d e l e n ­ Im p Icm e n L U io n s-. C o n w tu m ta u o n s o f th e A C M 2 9 < 1986». 3 0 0 -3 1 1.
sa n c h a m ie n to D e m u e s tre lo s sig u ie n te s teo rem as:
3 D. I ) S lc a to r > R E . T a rja n . -S c lf-a d ju s tm g B in ary S e a rc h T re e s » . Jo u r-
a) L l tie m p o to ta l d e a c c e s o e s O i M + (A / + .Vi lo g V ».
n a l o f t e A C M 3 2 (1985». 6 5 2 -6 8 6
b) S i t/¡ e s e l n ú m e ro to ta l d e v e c e s q u e se a c c e d e al n o d o i y «/, > i) p a ­
ra i«hIo i. e l tie m p o d e a c c e s o to ta l e s ( H M *• X ;\ ,«/, l o g i M </,i ». 4. K. E- T a rja n . « A m o rti/e d C o m p u ia tio n a l C o m p lc a ity » . S I A M J o u r n a l on
A lg e b ra ic ¡uní M u ir te M e th o d s 6 1 1985». 3 0 6 318
Problem as p rácticos 5 \| A . W e is s . M ita S tr u c tu r e s a n d A lg o n ih m A n a lv s is in C + + . B e n ja m in
C u m n u n g s P u b h sh in g C o .. R cdw «xxl C u y . C a lif. (1 9 9 4 ).
2 I.H . Im p le m e n te la c la s e d e la s c o la s d e p rio rid a d u tiliz a n d o u n á rb o l d e e n ­
sa n c h a m ie n to
2 1 .9 . M o d ifiq u e lo s á rb o le s d e e n s a n c h a m ie n to p a ra q u e s o p o rte n a c c e s o s indc-
x.idos se g ú n e l o rd e n «le los e le m e n to s e n e l árbol

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

ste c a p ítu lo e x a m in a las c o la s d e p rio rid a d q u e so p o rta n u n a o p e ra c ió n a d i­

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:

• U n a d is c u sió n a c e rc a d e lo s n u m tfc u lo s sesgad*>%, q u e n o so n m á s q u e c o la s


d e pn«*ridad c o m b in a b le s im p le m e n ta d a s m e d ia n te árbolcN b in ario s.
• U n a d is c u s ió n a c e rc a d e lo s m o n ifiu U ts d e em p itre ja m ie ra a s, q u e s o n colan­
do p rio rid a d c o m b in a b le s b a s a d a s e n lo s á rb o le s M - ario s. E o s m o n tíc u lo s de
e m p a re ja m ie n to s so n u n a a lte rn a tiv a p rá c tic a a lo s m o n tíc u lo s b ín a n o s , aun
c u a n d o la o p e ra c ió n m e z c l a r n o s e a n ecesaria.

22.1 Los montículos sesgados

l ' n m o n tíc u lo s e s g a d o es u n u p o p a rtic u la r (e n e l s e n tid o q u e p re c is a re m o s m á s


a d e la n te ) d e á 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 n d ic h o s á rb o le s n o se
im p o n e e n p rin c ip io n in g u n a re s tric c ió n e s tru c tu r a l, p o r lo q u e . a d ife re n c ia d e lo
q u e su ce d e e n los m o n t íc u l o o e n lo s árb o les b ín a n o s d e b ú sq u e d a e q u ilib ra d o s, no
e x is te n in g u n a g a ran tía d e q u e la p ro fu n d id a d d e l á rb o l s e a k tg a h tm ic a . IX* e s ta fo r­
m a . k*s m o n tíc u lo s s e s g a d t* re s u lta n s im ila re s a lo s á rb o le s d e e n sa n c h a m ie n to .

22.1.1 La m ezcla es im portante

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 .

E l m o n tíc u lo s e s g a d o es u n d e s ta c a d o e je m p lo d e u n a e s tru c tu ra re la tiv a m e n te Un


sim p le , c u y o a n á lis is n o lo e s e n a b so lu to . S in e m b a rg o , e s c ie r to q u e d ic h o an áli- m
s is e s s e n c illo d e c o n c lu ir u n a v e z q u e la fu n c ió n d e p o te n c ia l a d e c u a d a h a s id o ur
id e n tific a d a D e sg ra c ia d a m e n te , a ú n n o d is p o n e m o s d e n in g ú n tip o d e te o ría g en e- pf
ra l q u e n o s p e rm ita e le g ir las fu n c io n e s d e p o te n c ia l a d e c u a d a s p a ra c a d a p ro b le - a<
m a. N o rm a lm e n te , e s n e c e sa rio p ro b a r c o n m u c h a s fu n c io n e s a n te s d e d a r c o n la
Figuro 22.3 C a m b io e n e l esta d o p esad o/lig ero despuós d e la m ezclo adecuada
I n c o m e n ta rio lin .il re s u lta o p o rtu n o . A u n q u e la d e s c rip c ió n in icia l ilel a lg o ­
ritm o e m p le a re c u rsió n y la re c u rsió n p e rm ite o b te n e r u n c ó d ig o m á s s e n c illo , é s ta
n o p u e d e e m p le a rs e e n la p ra c tic a E s to e s d e b id o a q u e e l c o s te lin eal e n e l c a s o
p eo r puede- p ro v o c a r u n d e s b o rd a m ie n to d e la p ila , si im p le m e n tá ra m o s e l a lg o rit­
m o c o n re c u rsió n . C o m o c o n s e c u e n c ia , d e b e im p le m e n ta rs e la c o rre sp o n d ie n te
v e rs ió n ite ra tiv a d e l a lg o ritm o E n lu g ar d e a la r g a m o s e n e l e s tu d io d e t«xl»*s e sto s
d e ta lle s té c n ic o s u n la n ío e n o jo s o s . p re te rim o s p re s c n ta i u n a e stru c tu ra d c dat«»s
a lte rn a tiv a u n pix:o m á s c o m p lic a d a : e l m o n tíc u lo J e e m p a re ia n u c n io \ . E sta es-
Figuro 22 5 Pop rosen toción de< m ontículo O o em p arejam ien to s O o la Figura 22 4
truc tu ra d e d a to s n o h a sid o to d a v ía c o m p le ta m e n te a n a liz a d a , p e ro p a re c e c o m ­
la fcnea a s c u a rep resen ta un p a r d e re fe re n cia s q u e c o n e c ta los n o­
p o rtarse m u y b ie n e n la p ráctica.
do s e n am b as d ire ccio n e s

22.2 Los m ontículos d e em parejam ientos p artic u la r d e m e z c la P ara re a lizar u n a o p e ra c ió n r e d u c i r e l a v e . re d u cim o s e l v a ­


lo r d e l rxxlo c o rre sp o n d ie n te . D eb id o a q u e n o m a n te n e m o s e n to d o s lo s m*dos refe­
El m o n tíc u lo J e eni/xirejanu ciiio s e s u n á rb o l .V/-ano c o n o rd en ació n d e m ontículos, re n c ia s a su s p ad res, n o sa b e m o s si e s to in c u m p le e l o rd e n d e l m o n tícu lo P o r este
no restringido estructural m en te. C u m p le la p n 'p ie d a d d e q u e e l co ste d e to d a s la s o p e ­ m o tiv o , d e slig a m o s d e su p ad re e l n o d o a ju s ta d o y c o m p le ta m o s r e d u c i r C l a v e
raciones. salvo la elim in ació n , e s c o n stan te e n el c a s o p eo r. A u n q u e «*1 i n i n a r M l n es c o m b in a n d o lo s d o s m o n tíc u lo s d c e m p a re ja m ie n to s o b te n id o s. L a F ig u ra 22.5
lin e a l e n e l c u s o p e o r, p u e d e c o m p r o b a rs e q u e c u a lq u ie r s e c u e n c ia d e o p e r a c io ­ m u e s tra c ó m o d e s lig a r un n o d o d e su p a d re , e lim in á n d o lo d e lo q u e e s . b á s ic a ­
n e s d e lo s m o n tíc u lo s J e e m p a r e ja m ie n to s tie n e c o s te a m o r tiz a d o lo g a rítm ic o . m e n te . u n a lista e n la z a d a d e h ijo s. A d e m á s s e v e rific a u n h e c h o im p o rta n te : u n ía s
S e h a c o n je tu ra d o , p e ro n o d e m o s tra d o , q u e p u e d e n c o n s e g u irs e m e jo re s re s u lta ­ la s o p e ra c io n e s d e s c rita s tie n e n u n c o s te c o n sta n te . S in e m b a rg o , c u a n d o c o n s id e ­
d o s M a s e x a c ta m e n te , q u 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 i n a i M i n . tie n e n ra m o s o l i m i n a r M i n i h * te n e m o s ta n ta su erte.
c o s te am * * m /ad o c o n s ta n te , m ie n tra s q u e e l i m i n a r M i n tie n e c o s te a m o r ti/a d o P a ra re a liz a r e l i m i n a r M i n . d e b e m o s e lim in a r la ra íz d e l á rb o l, c re a n d o u n a el
lo g a rítm ic o . c o le c c ió n d e m o n tíc u lo s. S i la ra íz tie n e i h ijo s , la c o m b in a c ió n d e tod«*s e llo s en
L a F ig u ra 22 4 m u e s tra un m o n tíc u lo d e e m p a re ja m ie n to s a b s tra c to S u im p le- un ú n ic o m«>ntículo re q u ie re c ~ I m e z c la s. C o m o c o n s e c u e n c ia , si hay m u c h o s
m c n ta c ió n u s a la re p re se n ta c ió n p n m e r h ijo s ig u ie n te h e rm a n o , p re s e n ta d a e n el h ijo s . e l p ro c e s o re q u e rirá b a sta n te tie m p o . E n p a rtic u la r, si la s e c u e n c ia d e in s e r­
C a p ítu lo 17. L a o p e ra c ió n r o d u e i r e l a v e . ta l y c o m o m o s tra re m o s m á s ta rd e , c ió n fu e ra I . 2 V. e n to n c e s e s s e n c illo c o m p ro b a r q u e e l p rim en » d e e llo s e s ta ­
n e c e sita q u e c a d a n o d o c o n te n g a u n a re fe re n c ia a d ic io n a l C a d a n o d o q u e s e a el rá e n la ra íz y q u e e l re s to s e rá n su s hiji»s. C o n s e c u e n te m e n te . ©1 i m i n a r M i n e s
hi jo m ás iz q u ie rd o d e «*tro c o n tie n e u n a re fe re n c ia a su p a d re : e n o tro c a s o , e l n o ­ O i ;V). L o m e jo r q u e p»xlcnu»s e s p e ra r e s p re p a ra r las m e z c la s d e m o d o q u e n o se

d o e s un h e rm a n o d e re c h o y c o n tie n e u n a re fe re n c ia a su h e rm a n o iz q u ierd o . E n la re p ita n in sta n c ia * c o s to s a s d e la o p e ra c ió n e l i m i n a r M i n .


F ig u ra 2 2 .5 se m u e s tra e s ta re p re s e n ta c ió n , e n la q u e la lin e a m á s o s c u ra in d ic a L a v a ria n te m á s sim p le y p rá c tic a d e to d a s las p n «puestas e s la m e zc la e n J o s
q u e d o s re fe re n c ia s (u n a e n c a d a d ir e c c ió n ) c o n e c ta n lo s p a re s d e nodo s. p a s a J i u F.n p rim e r lu g a r m e z c la m o s p a re s d e h ijo s y e n d o d e iz q u ie rd a a d e re ­
c h a 2. D e sp u é s d e e s te p rim e r re c o r rid o , se h a re d u c id o a la m ita d e l n ú m e ro d e
á rb o le s a c o m b in a r E l se g u n d o re c o rrid o se h a c e d e d e re c h a a iz q u ie rd a L n cadu
22.2.1 Operaciones del montículo d e em parejam ientos un»» d e lo s p a so s c o m b in a m o s e l á rb o l s itu a d o m á s a la d e re c h a q u e n o s q u e d a de
y teoría la p rim e ra p a s a d a c o n e l o b te n id o d e s p u é s d e la m e z c la a c tu a l P o r e je m p lo , si t e ­
n e m o s h ijo s d e sd e r , h a s ta c H. e l p n m e r re c o rrid o re a liz a las m e z c la s r , y e, y
F u p rin c ip io , las o p e ra c io n e s b á s ic a s d e lo s m o n tíc u lo s d e c m p a re ia m ie n lo s so n
r 4 . c5 y r h . y < 7 y *•„. L o s r e s u l t a d a so n * /,. J 2 . J , y </4 . R e a liz a m o s la se g u n d a
s e n c illa s. F.sta e s la ra z ó n p o r la q u e s e c o m p o n a n b ie n e n la p ra c tic a . P a ra c o m b i­
p a sa d a m e z c la n d o </, y J 4 : J : s e c o m b in a c o n e s te re s u lta d o , y «/, s e m e z c la c o n el
n a r d o s m o n tíc u lo s J e e m p a re ja m ie n to s, c o n v e n im o s e l m o n tíc u lo c o n la ra ít
re s u lta d o d e d ic h a c o m b in a c ió n , c o m p le tá n d o s e a s í la ru tin a o l i m in a r M in . L a ^
m j v c r e n e l p n m e r h ijo d e l m o n tíc u lo c o n la ra í/, m e n o r L a in s e rc ió n e s u n c a s o
F ig u ra 2 2 .6 m u e s tra e l re s u lta d o d e e l i m i n a r M i n M*bre e l m o n tíc u lo d e e m p a re - ^
ja n n e n to s d c la F ig u ra 2 2 .5 . c
S i mi p o s i b l e s ta m b ié n o tr a s e s tra te g ia s d e m e z c la P o r e je m p lo . p»xiem os inser-
lar e n u n a c o la c a d a suhartx»! i c o rre s p o n d ie n te a u n h ijo ), sacar r c p e t i d a i i K - n t c d e ^
la c o la d o s a rb o le s e in se rta r d e n u e v o e n la c o la e l re s u lta d o d e su m e z c la . D e s - ^
p u e s d e c - I m e z c la s , s ó lo p e rm a n e c e u n á rb o l e n la c o la > é s e e s e l re s u lta d o de
e l i m i n a r M i n S in e m b a rg o , u sa r u n a p ila e n lu g a r d e u n a c o la p u e d e e s tro p e a r e l ej

‘ I V h c m o » l e n e r i t m U l o »i e l m i m e n . .k- h i p » c * i m p u i C’iu m i lo .- u « . m x * J c . c o m p l e U m . * e l p n m e r p * * > <

Fiauro 22 4 í?MV<“tf*ntnriZv» nf-ntrrv-to rto i m rrw->ntindo rio <»mnnro«nrt»t»»nlnc « n o to lii ) n c « m e l d r i t u l « í ile n u f c i d e I . m c / c U J e i i u » a lu U c r c t h a


p a c k a y o E s t r u c t u ra siD a to a ,

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

U ................ * * 'OPERACIONES PÚ BLICAS................ .. ..................................


U v o id i n s e r t a r ( x ) --> I n s e r t a x
f/ N o d c E m p a r a ja m ie n t o s a n y a d i r E l e m ( x l
- - » i n s e r t a x y d e v u e lv e su p o s ic ió n
II C o m p a ra b le e lim in a r M in ! ) D e v u e lv e y e l i m in a e l roenoie le n e n t
II C o m p a ra b le b u s c a r M in l I D e v u e lv e e l menor e le m en to
// b o o ie a n o s V a c io ! > - - > D e v u e lv e t r u e s i v a c io : o l n o , ía lu j
II v o id v a c i a r ) ) - - > E l im in a to d o s l o s e le m e n to s
U v o id r e d u c i r e l a v e « NodoFunpare ja m ie n t o s p , n u e v o V a lo r >
// - - > D is m in u y e e l v a lo r en e l nodo p
¡I • epjíoRES * ............................................................ ..............
// b u s c a c K in y e lim in a r M in la n z a n D e s b o r d a n !o n t o I n f e r io r « o b r e e l v a c io

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

22.2.2 Im plem entación del montículo de em parejam ientos 32 < /* F i g u r a 2 2 . 1 5 V )


33 p r i v a t e N o d o S n p a reja m ien to s
34 corablnatterm anofl ( N o d o K m p a r e jn n iw n to s p r im erH erm nno
l . a fu n c io n a lid a d d e M o n t i c u L o E m p a r e j a m i e n t a s s e d e s c rib e e n la l-ig u ra 22.7 35 ( I a F ig u r a 2 2 .1 6 •/ 1
> e l e s q u e le to d e d ic h a c la s e se m u e s tra e n la F ig u ra 2 2 .8 . E l n o d o b á s ic o d e 36
u n m o n tíc u lo d e e m p a re ja m ie n to s . N o d o E m p a r e j a m i e n L o a . se p u e d e v e r e n la F igu ro 22.8 Esqueleto d e lo clase d e los m ontículos d e em p arejam ientos.
F ig u ra 2 2 .9 . y c o n siste e n u n e le m e n to y tr e s re fe re n c ia s D o s d e e lla s s o n e l hijo 1
2 *B u s c a el m e n o r e le m e n t o de -a c o l a de p r i o r i d a d .
iz q u ie rd o > e l h e rm a n o sig u ie n te , l a te rc e ra re fe re n c ia e s p r « > v . q u e a p u n ta a su
3 * U r e t u r r . e l m e n o r v io r o u iit o .
p a d re , si e l n o d o e s e l p rim e r h ijo , o a u n h e rm a n o iz q u ie rd o , e n c a s o c o n tra rio . La 4 • ion D e s íw r íla m e iic o ln t e r io r a: l a coln d e p r io r id a d <*»td ■.•.•cía
c la s e N o d o E m p a r e j a m e s p ú b lic a , p o r lo q u e s e p u e d e n e m p le a r referen
e n t o s 5
c ía s I iü líj sus o b je to s, p e ro su s a trib u to s y e l c o n s tru c to r so n d e a c c e s o a m is to s o v 6 p u b l i c C o m p a r a b l e b u e c a r M i n t 1 t h r o w » D o s b o r d a m l e n t o l n f e r l o r

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 :

e l m o n tíc u lo . E s te u ltim o a tr ib u lo s e u tiliz a p a ra s im p lific a r la o p e ra c ió n 11


r e d u c i r C i a v c . M o n t i c u l o E m p a r e m a m d e b e im p lc m c n ta r e l in te r­
i e n t o s
F ig u ra 22.10 Método b u s c a r M i n de la clase d e los montículos d e em pareja
faz C o l a P r i o r i d a d . C o m o re s u lta d o , e l c o m p o r ta m ie n to d e i n s e r t a r n o m íen tos
p u e d e c a m b ia r. S in e m b a r g o , d e s e a m o s d e v o lv e r u n a re f e re n c ia al n u e v o
t o a p ara u tiliz a rla a l in v o c a r a n r l a v e . P ü i e s te
m o tiv o im p le m e n ta n io s a n y a d i r E i e m E s ta ru tin a in v o c a a i n s e r t a r y d e v u e l­ 1 prívate ncdoEs-pare;amientes rwevotfodo = nuil: // Ú l t i m o nodc insertado

ve el nuevo N o d o E m p a r e j a m i e n t o s re c ié n c re a d o . P a ra I la c e rio . c o m p a rte el 2


3
a trib u lo n u e v o N o d o (q u e se d e s c rib e e n la im p le m e n ta c ió n «le i r m e r t .ir ) N o se 4 • inserción en La c o l a d * p r i o r i d a d .
in c lu y e n in g ú n m é to d o m e z c l a r : su im p le m e n ta c ió n e s se n c illa , y se d e ja c o m o 5 ■S e p e r m i t e n d u p l i c a d o s .
e je rc ic io a l le c to r e n e l E je rc ic io 22.10. 6 * flparairi x “ I e l e m e n t o a in s e r t a r

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 |

Figuro 22.13 M éto d o r e d u c i r C U v e d o lo clase d e los m ontículos d e e m p are ja­


mientos. Figura 22.14 c a m p a r a Y E n la z a c o m b in a d os arboles.
1 1 /••
2 Método i n t e r n o b á s i c o p a r a m a n t e n e r e l 2 • Método in te r n o que implementa l a m ésela en dos pasadas.
3 orden un el m ontículo. 3 • ípatam primerHermano la r a i a ;
4 E nlaza prim ero y segundo p a r a m antener e l orden. 4 • s e supone que no es n u 11.
5 <?param p r i m e r o l a r a í z d o l á r b o l 1 , n o d e b e s e r n u i l 5 •
6 p r i m e r o . s i g u l o n t e H e r a o n o DEBE s e r n u i l e n l a e n t r a d a . 6 p r í v a t e NodoEmparejamlentos
7 flparam s e g u n d o l a r a í z d e l d r b c i 2 , p u e d e s e r n u i l . 7 c c r b i n a H e rm a n o s < NodoEmparejare: e n t o s prim erH erm ano
8 liroturr, e l r e s u l t a d o de la m ez c la . 8 I
0 9 líi p rim erH erm ano.s lguieriteHermano == n u i l I
10 10 r e t u r n primerHermano;
11 c fflpar&YEnlaxaí N o d o E m p a r e j a a - e n t us p r i m e r o . Kc d oE mp a r e n a me nt o s se g u nd o 11
12 t 12 '/ C reación del vector
13 lí< Segundo «• n u i l ) 13 NodoEEipatejamienLos l 1 v e c t o r A r b o l e a -
14 re tu rn prim ero; 14 new K o d o E m p a r e j a m i e n t e s i tamanycAccual J;
15 15
16 i t l segundo.dato.nenorQ uel prim ero .d ato 1 ) 16 / / Alm acenamiento de l o s a r b o l e s en e l v e c to r
17 17 inr. n u i r e r o H e r a a n o * ■ 0;
18 l l E n l a r a p r i m e r o como e l h i j o mas i z q u i e r d o d e s e g a n d o 18 t o r i ; p r i m e c H e r m a n o != n u i l ; numos«Hermanos*« I
19 segundo.pcev = p n m ero .p rev ; 19
20 p rlm e ro .p re v « segundo; 20 v e c t o r A r b o l e s I numeroHertnanou ) • p r im e r H e r a a n o ;
21 prirero .slg u ien teH erm ai> : = segundo, izq u ierd o ; 21 prireetH em ano-prev-siguionteH erm ano s n u l l ; I I ro m pe l o s en
22 l f l pr ircero. sigulontoH erm ano !• n u i l | 22 primerHermano « prim erH erm ano.uiguienteH ernano;
23 p r i m e r o . siguienceH ermano.prev* = p rim e ro ; 23 1
24 atagundo. i z q u i e r d o « p r i m e r o : 24 vectorA rbolenl r i u me r « H e r m a n o s 1 nuil;
25 r e tu r n segunda; 25
26 26 Combinación de p a r e s d e s u b á r b o le s . di* i z q u i e r d a a d e r e c h a
27 else 27 Int 1 = 0 ;
28 28 f o n ; i - 1 < n u m e r o H e r m a n o s : i *= 2 )
29 t i E n l a z a s e g u n d o c omo v i h i j o ma o i z q u i e r d o d e p r i m e r o 29 v e c t o r A r b o l e s I i 1 » c a m p o r a Y E n 1a z a ( v e c t o r A r b o l e a l i I.
30 segundo.prev = prim ero; 30 v e c t o r A r b o l e s I i * 1 1 >:
31 p r i m e r o . s i g u i e n t v Hor mnr . o - s e g u n d o . BÍ g u i o n t « H« >r r r . a n o ; 31
32 i í ( prIm ero.HiguienteHerm ano !- n u il i 32 :t ] e s e l r e s u l t a d o d e l ú ltim o comparaYEnlaza.
33 prim ero.siguienteH erm ano.prev = primero; 33 ll Si e l número d e á r b o l e s e s Impar, c o g e e l ú ltim o d e el
34 segundo.sIguient«H erm ano - p r im e r o .i z q u le r d o ; 34 i n t i ■ 1 - 2;
35 i í l s e g u n d o . s i g u i e n t e H e r m a n o != n u i l ) 35 Lf l j = = n u r - e r o K e r m a n o s - 3 >
36 segundo, s i g u i enr.eHermano.ptov ■ segundo; 36 • /• c to rA rb o le u l i J • c o m p a ra Y E n la x a ( v e c t o r A r b o le a | J 1
37 p rim e ro .iz q u ie rd o = segundo; 3 7 vectorA rboles 1 j * :
38 re tu rn primero; 38
39 39 R e c o r r id o de d e r e c h a a i z q u i e r d a , combinando e l ú ltim o
40 1 40 1I c o n q : s i g u i e n t e a l ú l t i m o . El r e s u l t a d o e s e l n u e v o ú
41 í o r l i ] >« 2 ; j ■« 2 I
Figuro 22.15 Rutina c o m p a r a Y E n l a z a . 42 v e c t o r A r b o i e s I i - 2 I = compar a Y E n l a z a ( v e c t o r A r b o l e s I j - 2
4 3 vect or A rb o le » | | ]

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.

Figuro 22 17 Algontm o d e Diestro q u e em p leo m ontículos d e em porejorruentos v


la rutina r e d u c lr C la v e 1.1 n o d o i r . » c í o w c s i a n m c lu iJ u en e l i n o o l Ic u lo ü c r m f w r r p n i K 'n l n v . p o i l o q u e e n U U n e . 1 4 n o
S p a s s r s . 'í s ü r s - 1 ~
lo g a rítm ic o 1 a c " HI»^ H cncn u n co m c a m o rtiz a d o
m ic a d e las o p e ra c io n e s d e l m o n tíc u lo sesgad»* n o e s u n a c o ta p a ra e l cas»»
p eo r
22^. M u e s tre q u e las o p e ra c io n e s r e d u c i r e l a v e y a u s e n i a r c i a v e pue«len
Errores com unes u n p le m e n ta rse e n l«»s m o n tíc u lo s s e s g a d o s c»*n u n c«»ste a m o n i /a d o lo g a ­
rítm ico.

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

O a f a S ir u c lu r e s U F ijll r u 2 2 . l7 S 'p 'X '^ . ™ e l d .re c to rio P roblem as p rácticos


C P ° -4 (C trn p h .jn v a está en el Z í ! 2 ^ ^ « d
2 2 .1 0 . In c lu y a u n m é to d o p u b lic o m e z c l a i e n la c la s e d e lo s m o n tíc u lo s d e e m ­
I " ir l l t a p . ja v a r „ w |;1 lmplt. n lc n |iK . ^ |m
p a re ja m ie n to s. A se g ú re se d e q u e c a d a n«Kl«* a p a re c e e n un ú n ic o .»rbc»l
™ P - ~ .o v t x |a le rs lrin ln g |e s a ^ b cU * 2 2 .1 1. U s e u n v e c to r q u e se e x p a n d a sie m p re q u e sea n e c e sa rio , p a ra a lm a c e n a r
P a lr N o d c .l a v a í w T P " ,0 ] a n i^ o S . v e c to r A r b o le e en c o n b in a H e ra a n o s .

f r r r 'i c,ón * r<* ^ * »■* ^ n „ v u -


P rácticos d e p ro g ra m a c ió n
^ c ~ r : b- *- *
2 2 .1 2 . Im p le m e n te u n a v e rs ió n n o rccurxivji d e l m o n tíc u lo sesg ad o .
Ejercicios 2 2 .1 3 . Im p le m e n te lo s m o n tíc u lo s d e e m p a re ja m ie n to s e m p le a n d o u n c e n tin e la

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 .

6 J T S ta s k o y J. S . V itte r. « P a irin g H c a p s E x p e rim e n ts a n d A n a ly sis» .


C im in iu n u a tio n s o f th e A C M 3 2 1 19X7». 2 3 4 -2 4 9 .
23.1 R elacion es d e e q u iva le n cia
7. M A . W c iss. D a ta S tr u c lu r e s a n d A lg o r ith m A n a ly s is in C + ♦ . B e n ja m ín
C u m in in g s P u b h sh in g C o .. K c d w o o d C ity . C a lif. (1 9 9 4 ). U n a re la c ió n R so b re u n c o n ju n to 5 se d e fin e c o m o u n c o n ju n to d e p a re s d e e le ­
m e n to s ta , b i c o n a . h e S. S i (o . b i € R e sc rib ire m o s a K b y d ire m o s q u e a e s tá
re la c io n a d o c o n b. U n a re la c ió n d e e q u iv a le n c ia e s u n a re la c ió n H q u e sa tisfa c e
la s sig u ie n te s tre s p ro p ie d a d e s:

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.

I.a c o n c c tiv id a d e lé c tric a , d o n d e to d a s las c o n e x io n e s s e re a liz a n m e d ia n te c a ­


b le s e lé c tric o s , c s u n a re la c ió n d e e q u iv a le n c ia C la ra m e n te . la re la c ió n c s re fle x i­
v a . y a q u e c u a lq u ie r c o m p o n e n te e s tá c o n e c ta d a a si m ism a . Si a e s tá c o n e c ta d o
e lé c tric a m e n te a b . e n to n c e s b e s tá c o n e c ta d o a a . p o r lo q u e la re la c ió n e s sim é tri­
ca. F in a lm e n te , si a e s tá c o n e c ta d o a b y a su v e z b e s tá c o n e c ta d o a «. e n to n c e s a
e s ta rá c o n e c ta d o a c.
I V la m is m a m a n e ra , la c o n c c tiv id a d a tra v é s d e u n a re d b id irc c c io n a l fo rm a
ta m b ié n ir p ro d u c ie n d o su s re s p u e s ta s e n tie m p o d e e je c u c ió n , e n e l se n tid o de­
c la se s d e e q u iv a le n c ia d e c o m p o n e n te s c o n e c ta d a s. S in e m b a rg o , si la s c o n e x io n e s
q u e c u a n d o s e re a liz a u n a b ú sq u e d a , d e b e m o s tra rse la re s p u e sta a n te s d e p ro s e ­
d e la re d fu eran d irig id a s «es d e c ir, u n a c o n e x ió n d e » a h n o im p lic a u n a d e h a
g u ir. O tra p o s ib ilid a d s e r ía p e rm itir q u e la se c u e n c ia c o m p le ta do re s u lta d .» se
i ), e n to n c e s n o te n d ría m o s u n a re la c ió n d e e q u iv a le n c ia porque- fa lla ría la p ro p ie ­
m i t r a r a tra s la e je c u c ió n d e to d a s las lla m a d a s a b u s c a r y u n í r . E n ta l c a s o . la
d a d d e s im e tría U n e je m p lo e s u n a re la c ió n e n la c u a l la c iu d a d a e s tá re la c io n a d a
re s p u e sta q u e prop*»rcionará c a d a b u s c a : d e b e ría sci c o n s is te n te c o n las u n io n e s
c o n la c iu d a d b si e s p o s ib le v ia ja r d e a a b m e d ia n te u n a c a rre te ra E sta re lac ió n
re a l i/o d a s a n te s d e la b ú sq u e d a , a u n q u e e l a lg o r itm o p ro c e s e t.x las la s p e tic io n e s
e s u n a re la c ió n d e e q u iv a le n c ia si las c a rre te ra s so n d e d o b le sentid.»
a n te s d e p r.x lu c ir la p rim e ra re s p u e sta E sta d ife re n c ia e s p a re c id a a la e x iste n te
e n tr e un e x a m e n e s c rito (d o n d e g e n e ra lm e n te s ó lo s e tie n e q u e d a r la re s p u e sta a n ­
te s d e u n tie m p o lím ite ) y u n e x a m e n o ra l (d o n d e hav q u e d a r la re s p u e sta a c a d a
23.2 Eq u ivalen cias d in ám icas y dos a p lica cio n e s p re g u n ta u n te s .Ic c o n o c e r la sig u ien te).
O b se rv e m o s q u e n o se re a liz a n in g u n a o p e ra c ió n c o m p a r a n d o I .» v a lo re s de
1.» e le m e n to s sin.» q u e só lo s e n e c e sita su lo c a liz a c ió n P«»r e s ta ra z ó n , p o d em o s
D ada u n a re la c ió n d e e q u iv a le n c ia , q u e d e n t a r e m o s p o r e l s ím b o lo ^ . e l p ro b le ­
a s u m ir q u e to d o s I .» e le m e n to s h a n s id o n u m e ra d o s d e fo rm a s e c u c n c ia l p a rtie n d o
m a in m e d ia to q u e su rg e e s d e c id ir, d a d o s a y b c u a le s q u ie ra , s i a - b . S i la re la ­
d e 0 > q u e la n u m e ra c ió n p u e d e d e te rm in a rse fá c ilm e n te u tiliz a n d o u n e sq u e m a
c ió n s e a lm a c e n a c o m o u n vect«*r b id im e n s io n a l .Ic v a l o r o b»«oléanos, e s to p u ed e
d e c id irs e e n tie m p o c o n s ta n te . L l p ro b le m a o q u e la s re la c io n e s g e n e ra lm e n te se h ash .
A n te s .Ic d e s c r ib ir c o m o im p le m e n la r las o p eraci.» n cs b u s c a r y u n i r , esta
d e fin e n .le fo rm a im p líc ita , e n \ c / d e e x p líc ita m e n te
s e c c ió n p ro p o rc io n a d o s a p lic a c io n e s d e la e s tru c tu ra d e d alo s.
P o r e je m p lo , si c o n s id e ra m o s u n a re la c ió n d e e q u iv a le n c ia d e fin id a so b re el
c o n ju n to c o n c in c o e le m e n to s ¡ o , . u : , „ x. a 4 . ,»5 ¡. ha> e n to tu l 25 p a re s d e e le m e n ­
to s . c a d a u n o d e lo s c u a le s p u e d e , e n p rin c ip io , p e rte n e c e r a la re la c ió n o n o . Sin
e m b a rg o , d e la in fo rm a c ió n </, - a 2 . , i K - n 4. «/1 ' m y a 4 ** a 2 s e s ig u e q u e t o ­ 23.2.1 Aplicación * 1: árboles d e recubrimiento mínimo
d o s lo s e le m e n to s h a n d e e s ta r re la c io n a d o s e n tr e sí. N o s g u s ta ría se r c a p a c e s d e
in fe rir rá p id a m e n te a lg o c o m o e s to
U n á r b o l d e r e c u b r im ie n to d e u n g r a t o n.» d m g id o ( i e s u n árb o l fo rm a d o a p artir
L a c la s e ile e q u iv a le n c ia d e u n e le m e n to i € S e s e l su b c o n ju n to d e S q u e c o n -
d e las a ris ta s d e l g ra fo q u e c o n e c ta to d o s I .» v é rtic e s d e G . O b s e rv e q u e . a l c o n tr a ­
tie n c a 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 i O b s e rv e m o s q u e la s c la s e s de
rio d e lo q u e s u c e d ía e n lo s g r i f o s d e l C a p itu lo 14. a h o ra u n a a n s i a li». »■> dc G es
e q u iv a le n c ia fo rm a n u n a p a rtic ió n d e S: t.»do m ie m b ro d e 5 a p a re c e e x a c ta m e n te
id é n tic a a la a ris ta (v . u» E l c o s te d e u n á rb o l d e re c u b rim ie n to e s la s u m a d e los
e n u n a c la s e d e e q u iv a le n c ia P a ra d e c id ir si a - /». só lo n e c e sita m o s c o m p ro b a r si c o s te s d e la s arista s e n e l á rb o l, e l p ro b le m a d e l á r b o l d e r t i a b rim ie n to m ín im o
a y b e s tá n e n la m ism a c la s e d e e q u iv a le n c ia . E s to p ro p o rc io n a la e s tra te g ia p ara
c o n s is te e n b u sc a r e l árb o l d e re c u b rim ie n to d e m e n o r c o ste . C o m o m o strarem o s
re s o lv e r e l p ro b le m a d e la e q u iv a le n c ia
e n b re v e , la c o n c c tiv id a d d e un g ra fo p u e d e c o m p ro b a rse c o m o p a rle d e l c á lc u lo
C o n s id e re m o s un u p o p a rtic ió n c u y o s e le m e n to s se c o n stru irá n a p a r tir d e la
d e l á rb o l d e re c u b rim ie n to m ínim o.
p a rtic ió n trivial q u e v ie n e d a d a p o r u n a c o le c c ió n d e .V c o n ju n to s, c a d a u n o c o n un
E n la F ig u ra 2 3 .1. e l g r a to d e la d e re c h a e s u n árb o l d e re c u b rim ie n to m ín im o
e le m e n to . E sta p a rtic ió n in ic ia l c o rre s p o n d e a la re la c ió n d e e q u iv a le n c ia triv ial.
d e l g ra fo .le la i/q u ie r d a t e n e s te c a s o e s e l ú n ic o , p e ro e s to n o tie n e p o r q u é se r
C a d a c o n ju n to tie n e u n e le m e n to d is tin to . p o r lo q u e S ,n .V ; - 0 o b te n ié n d o s e ,
c ie n o e n g e n e ra l, e n p a rtic u la r si e l gruí.» n e n e m u c h a s a n s ia s c o n e l m is m o c o s ­
p o r ta n to , u n a p a rtició n .
te ). O b s e rv e q u e e l n u m e ro d e a n s ia s «leí á rb o l d e re c u b rim ie n to m ín im o es
Hay d o s o p e ra c io n e s p e rm itid a s L a p rim e ra e s b u s c a r , q u e d e v u e lv e e l n o m ­ ¡ l '| - I. El á rb o l d e re c u b n m ie n to m ín im o e s u n á r b o l pi*rquc e s a c íc lic o : e s d e
b re d e l c o n ju n to «es d e c ir, la c la s e d e e q u iv a le n c ia ) q u e c o n tie n e a u n e le m e n to
r e c u b r im ie n to p o iq u e c u b re to d o s I .» v é rtic e s ; y e s m ín im o . p«*r ra z o n e s «»bvias
d a d o . L a se g u n d a o p e ra c ió n a ñ a d e p a re s a la re la c ió n re p re se n ta d a . S i q u e re m o s S u p o n g a m o s q u e te n e m o s q u e c o n e c ta r v a n a s c iu d a d e s m e d ia n te c a rre te ra s , m in i­
a ñ a d ir e l par (o . /») a la re la c ió n , v e m o s p rim e ro si a y b y a e s tá n re la c io n a d o s.
m iz a n d o e l c o s te to tal d e la c o n s tru c c ió n , c o n la re s tric c ió n «Ic q u e s ó lo s e p u e d e
E s to se c o n sig u e lla m a n d o a b u u c a i c o n a y /». c o m p r o b a n d o si e s tá n e n la m ism a
c a m b ia r d e c a rr e te ra e n u n a c iu d a d (e n o tra s p a la b ra s, n o s e p e n n ú e n c ru c e s a d i­
c la s e d e e q u iv a le n c ia . S i n o e s a sí. lla m a m o s a u n i r . E sta o p e ra c ió n m e z c la las c io n a le s). E n tal cas.» n e c e sita m o s re s o lv e r u n p ro b le m a d e á rb o l d e re c u b rim ie n to
c la s e s d e e q u iv a le n c ia q u e c o n tie n e n a a y a /». e n u n a n u e v a c la s e d e e q u iv a le n ­ m ín im o , e n e l q u e c a d a v é rtic e e s u n a c iu d a d v c a d a a ris ta re p re s e n ta e l c o s te de
c ia . D esd e e l p u n to d e v ista c o n ju n tis ta . e l e fe c to e s la c re a c ió n d e u n n u e v o c o n ­
c o n s tru ir u n a c a rre te ra e n tre las c iu d a d e s q u e c o n e c ta
ju n to St - S, u Sr d e s tru y e n d o lo s o rig in a le s , c o n I.» q u e s e p re s e rv a e l h e c h o de
A ñ a d ir c ru c e s e n lu g a re s a r b itr a n .» d o ria lu g a r a l p ro b le m a d e l á r b o l d e Stet-
q u e to d o s |<» c o n ju n to s d e la p a rtic ió n sean disjunt.»s L a e s tru c tu ra d e d a to s que n e r . e l c u a l e s m u c h o m á s d ifíc il d e re s o lv e r. P o r o tra p a rte , e n tr e «»tn»s re su lta d o s,
c o n tie n e e sta s o p e ra c io n e s se d e n o m in a e n o c a s io n e s e s tr u i tu ra d e /m e n c ió n u n ir
s e p u e d e d e m o s tra r q u e si e l c o s te d e u n a c o n e x ió n e s p ro p o rc io n a l a la d ista n c ia
b u sc a r. L l te rm in o a lg o r itm o u n i r b u s c a r s e re fie re a l pr«*ceso d e p e tic io n e s d e e u c líd c a . e l á rb o l d e re c u b rim ie n to m ín im o e s . c o m o m u c h o , u n 15 |>«*r c ie r to m ás
u n ió n y b ú sq u e d a u tiliz a n d o u n a e stru c tu ra d e p a rtic ió n .
c o s to s o q u e e l á rb o l m ín im o d e S te in c r. E s to s ig n ific a q u e e l á rb o l d e re c u b ri­
E l a lg o r itm o e s d in á m ic o e n e l se n tid o «le q u e . d u ra n te s u e je c u c ió n , lo s c o n ­ m ie n to m ín im o , q u e e s fácil d e c a lc u la r, p ro p o rc io n a u n a b u e n a a p ro x im a c ió n al
ju n to s d e la p a rtic ió n p u e d e n c a m b ia r vía la o p e ra c ió n u n i r . E l a lg o ritm o d e b e
:¡rh.á m ín im o «le S iein er. u n e e s d ifíc il d e ca lc u la r.
Figura 23.1 Un g rafo G <a lo izquierda) y su órbol d e recubrim iento mínimo

I n a lg o ritm o se n c illo , c o m ú n m e n te d e n o m in a d o a lg o r itm o d c K ru sk a l, c o n ­


s is te e n s e le c c io n a r las arista s e n o rd e n c re c ie n te d e c o s te , in c o rp o ra n d o u n a arista
si c o n e llo n o se in tro d u c e u n c ie lo . F o rm a lm e n te , e l a lg o ritm o d e K ru sk a l m a n tie ­
ne u n b o sq u e , e s to e s. u n a c o le c c ió n d e á rb o le s. In ic ia lm c n te . h a y !V á rb o le s c a d a
u n o c o n u n ú n ic o n o d o A l a ñ a d ir u n a a ris ta se u n e n d o s á rb o le s e n uno. C u a n d o el
a lg o ritm o te rm in a , h a y s ó lo u n á rb o l, y é s te e s el á rb o l d e re c u b rim ie n to m ín im o '.
C o n ta n d o e l n ú m e ro d e a ris ta s s e le c c io n a d a s , p o d e m o s d e te rm in a r c u á n d o d e b e
0 d a rse p o r c o n c lu id o e l alg o ritm o .
L a F ig u ra 2 3 .2 m u e s tra la a c c ió n d e l a lg o r itm o d e K ru sk a l so b re e l g r a f o d e la
F ig u ra 2 3 .1 . L a s c in c o p rim e ra s a ris ta s so n to d a s in c o rp o ra d a s p o rq u e n o c re a n c i ­
c lo s . L a s d o s a ris ta s s ig u ie n te s (»-,. v , ) (d e c o s te 3 ) y tv „ . r : > (d e c o s te 4 ). so n
re c h a z a d a s p o rq u e c re a r ía n u n c ic lo e n e l g ra fo . L a a ris ta c o n s id e ra d a a c o n tin u a ­
c ió n e s in c o rp o ra d a . Y a q u e e s la s e x ta a ris ta y e l g ra fo tie n e s ie te v é rtic e s , p o d e
m o s d a r p o r c o n c lu id a la a p lic a c ió n d e l alg o ritm o .
P a ra g e n e ra r e l o rd e n e n q u e s e r á n e x a m in a d a s la s a rista s s e r ía s u fic ie n te con
o rd e n a rla s. P o d e m o s h a c e rlo c o n u n c o s te £ |l o g |f T |. tra s l o q u e ir ía m o s re c o ­
rrie n d o e l v e c to r o rd e n a d o d e a rista s . D e fo rm a a lte rn a tiv a , s e p o d ría c o n s tru ir una
c o la d e p rio rid a d c o n la s \E \ a ris ta s y o b te n e r re p e tid a m e n te la s a ris ta s lla m a n d o a
b u i r a r M i n . A u n q u e e l c o s te e n e l c u s o p e o r n o c a m b ia , u tiliz a r u n a c o la d e p rio ­
rid a d e s a v e c e s m e jo r p o rq u e c u a n d o lo s g ra fo s s o n a le a to rio s e l a lg o ritm o d e
K ru sk al tie n d e a u tiliz a r só lo u n a p e q u e ñ a fra c c ió n d e l to tal d e a rista s . P o r s u p u e s ­
to . e n e l c a s o p e o r, s ie m p re e s p o sib le q u e h a g a fa lta p ro b a r c o n to d a s la s aristas.
P o r e je m p lo , si a ñ a d ié ra m o s u n v é rtic e e x tr a v8 y u n a a ris ta (v 5. vg) d e c o s te 100.
te n d ría m o s q u e e x a m in a r to d a s la s a rista s . E n e s te c a so , u tiliz a r d ire c ta m e n te Figuro 23.2 El algoritm o d e Kruskal después d e considerar c a d a arista, los pasos se
presentan d e arribo a b a jo y d e izquierda a d e re c h a , siguiendo la nu­
q u ic k s o rt s e r ía m ás rá p id o . E n c o n s e c u e n c ia , la e le c c ió n e n tre la c o la d e p rio rid a d
m eración
y u n a o rd e n a c ió n in ic ia l d e b e h a c e rs e e n b a s e a u n a e s p e c u la c ió n so b re c u á n ta s
arista s s e rá n e x a m in a d a s a la p o stre.
M á s in te re sa n te e s la c u e s tió n d e c ó m o d e c id im o s si u n a a rista tu . »•) debe re c u b rim ie n to , si w e s ta b a c o n e c ta d o a ii y v lo e sta b a a x y h q u e d a n c o n e c ta ­
a c e p ta rse o re c h a z a rs e . C la ra m e n te , a ñ a d ir la a ris ta <u, v) p ro v o c a ría u n c ic lo si (y d o s y p o r ta n to p asan a p e rte n e c e r a l m is m o co n ju n to .
só lo si) a v i e s tu v ie ra n y a c o n e c ta d o s e n e l b o sq u e d e re c u b rim ie n to a c tu a l. P o r
ta n to , m a n te n d re m o s las c o m p o n e n te s c o n e x a s d e l b o sq u e d e re c u b rim ie n to e n
23.2.2 Aplicación *2: el problema del antecesor
u n a e s tru c tu ra d e p u n ic ió n In ic ia lm c n te . c a d a v é rtic e e s tá e n u n a c la s e d is tin ta . Si
com ún más próximo
u y i e s tá n e n la m ism a c o m p o n e n te , la a ris ta s e re c h a z a p o rq u e u y r y a e stán
c o n e c ta d o s. E n o tr o c a s o , se se le c c io n a la a ris ta y s e re a liz a u n a o p e ra c ió n d e
O tro e je m p lo d e a p lic a c ió n d e la e s tru c tu ra d e p a rtic ió n e s e l p ro b le m a d e l antece­
u n í r c o n lo s d o s c o n ju n to s d is ju n to s q u e c o n tie n e n a u y a v. E s to e s e x a c ta m e n te
s o r c o m ú n m á s p ró x im o (A C P )
lo q u e n e c e sita m o s h a c e r p o rq u e u n a v e / s e h a a ñ a d id o la a ris ta (m. i ) a l b o s q u e d e
PROBLEMA DEL A N TE C E SO R C O M Ú N M Á S P R Ó X IM O
1
e n a n o , e l a l g o r i t m o , - i t n m a r a u m n u h . I c u n á r t t o l: c a d a á f k i l r r p i r t c n t a r i l u n j i h . i l d e r c c u h d m tc M w m í n l m u
D odo u n á r b o l y u n a lisia d e p a r e s d e n o d o s e n e l á r b o l, b u s c a r e l o n
• n e v a «icI g r a t o l e c e s o r c o m ú n m á s p r ó x im o d e c o d a p a r d e n o d o s
C o m o e je m p lo , lu l í g u l a 2 } .* m u e s tra u n á rb o l c o n u n a lista «le p a re s q u e c o n
tien e c in c o p e tic io n e s P ara e l p a r «le n .x lo s u y r . e l n o d o C e s e l a n te c e so r de
a m b o s m ás c e rc a n o , M y /< so n ta m b ié n a n te c e s o re s , p e ro n o s o n lo s m á s c e rc a ­
n o s .) D isp o n e m o s d e la s e c u e n c ia c o m p le ta d e p e tic io n e s a n te s J e te n e r q u e p ro ­
p o rc io n a l la p rim e ra re s p u e sta . E ste e s u n p ro b le m a im p o rta n te e n la te o r ía d e gra-
f o \ q u e ta m b ié n tie n e a p lic a c io n e s e n e l c a m p o d e la b io lo g ía conipii!acu>n.il
(d o n d e e l á rb o l re p re s e n ta la e v o lu c ió n )
F.l a lg ttfilm o tu n o * *11.1 re a liz a n d o un re c o rrid o e n p o sto rd e n d e l á rb o l C u a n d o
e s ta m o s a p u n to d e a c a b a r d e p ro c e s a r u n n o d o , e x a m in a m o s la lista «le p a re s p ara
v er si hay a lg ú n c a lc u lo d e a n te c e s o r q u e re a liz a r. S i u e s e l n o d o a c tu a l, (u . v ) está
e n la lista d e p e tic io n e s y y a h e m o s te r m in a d o la lla m a d a re c u rsiv a c o n v. e n to n ­
c e s te n e m o s in fo rm a c ió n s u fic ie n te p a ra d e te rm in a r A C f t u . v)
L a F ig u ra 23 -l a y u d a a c o m p re n d e r c ó m o fu n c io n a e l a lg o ritm o , lis ta m o s a
p u n to d e te rm in a r la lla m a d a re c u rs iv a c o rre s p o n d ie n te a /> T o d o s lo s n o d o s so m
b re a d o s lian s id o v is ita d o s p o r u n a lla m a d a r e c u r s o a. y e x c e p to p o r los n o d o s e n
e l c a m in o a />. to d a s las d e m á s lla m a d a s re c u rsiv a s y a h a n te rm in a d o M a rc a m o s Figura 23 4 l os conjuntos justo antes d e term inar la lla m ad a re cu ryva correspon­
u n n o d o d e sp u é s «le q u e su lla m a d a re c u rsiv a h a y a te rm in a d o . S i r e s ta m arcad o . d ie n te a D D so m a rc a c o m o visitado y ACPKD. v ) es la sujeción d e v a l
M ' P t P . v i e s a lg ú n n o d o e n e l c a m in o a /> L a s u je c ió n d e u n n o d o »• v is ita d o ( p e ­ com ino a c tu a l
ro n o n e c e sa ria m e n te m a rc a d o ) se d e fin e c o m o e l n o d o e n e l c a m in o d e a c c e so
a c tu a l q u e e s tá m á s c e rc a d e »\ lin la F ig u ra 23 4 . la s u je c ió n «le /• e s A . la su je c ió n
d e «/ e s H y r n o e s tá su je to . p u e s a u n tie n e q u e s e r v isitad,*; p o d e m o s c o n sid e ra r 3. . e s ta e n e l s u b á rb o l d e I). p o r l«» q u e A C I ‘(v . I )) I ) O b s e rv e q u e éste

q u e la su je c ió n «le r e s e l m ism o r la p rim e ra v e z q u e se v is ita C o m o m u e s tra n los n«» e s un c a s o e sp e c ia l p u es la s u je c ió n «le v e s I )


d ib u jo s , c a d a n o d o e n e l c a m in o «le a c c e s o a c tu a l e s u n a su je c ió n (al m e n o s «le él
T«xk< l«* q u e ta lla e s aseg u ru n x » s « k q u e e n l«»«l«i in sta n te p o d e m o s d e te rm in a r Poro
m ism o ) F-s m á s . lo s n o d o s v is ita d o s (««mían c la s e s d e e q u iv a le n c ia : «lm m u lo s es C'CX'*
la su je c ió n d e u n n o d o v isita d o . E s to s e lo g ra fá c ilm e n te utilizan»!»» e l a lg o ritm o d e
ta n relacu*nad«*s si tie n e n la m ism a s u je c ió n , y p o d e m o s c o n si« k ra r q u e ca«la n o d o cent
u r . i r b u s c a r IX -spués «le te rm in a r u n a lla m a d a rc c u rsiv a . lla m a n * * a u n i r . Por
v is ita d o e s tá e n su p ro p ia c la s e S u p o n g a m o s ah«»ra q u e 11). t i e s tá e n la lisia de Se ur
e je m p lo , d e s p u é s d e q u e te rm in a la llan u « la rc c u rs iv a c o n I ) e n la F ig u ra 2 3 4. se u n tl
p a re s , le ñ e m o s lie s caso s:
c a m b ia a ( la s u je c ió n d e t«»dos lo s n o d o s e n l>. L a n u e v a situ a c ió n se m u e s tra e n
1. \ n o e s tá m a r c a d o . p«»r l o q u e n o te n e m o s in f o rm a c ió n «le c ó m o c u lc u la F ig u ra 2 3 .5 . E n c«*nse c u e n c ia . n e c e s ita n * * u n ir las d«*s c la s e s «le e q u iv a le n c ia
la i A C P t P . vi. S in e m b a r g o , c u a n d o v s e m a r q u e , p o d re m o s « Ictcrm m ar
A C P iv . I »
2. v e s tá m a re a d o per.» n o e s tá e n e l s u b á rb o l «le I). p«>r l«* q u e A C P Iv . P ) es
la su jcciiui d e v.

Figura 23 5 D eipuíW d e q u e term ina la llam o d a co r respondiente a m ezclam os D.


Figura 23.3 El an te ce so r com ún m ás próximo d e c o d a petición e n la se cu e n cia et conjunto c o n sujeción e n D co n e l conjunto c o n sujeción e n C y c a l
d o paror. (» y). (u z) (w x) U. w ) y (iv . y) e s A. C . A B o y ro specflvo cutam os A C P IC . v ) p a to todos tos nodos v q u e están m arcod o s, antes
m ente d e com p letar la lla m ad a recursiva correspondlont© a C
en una. En cualquier momento, podento*. obtener l.isujeción Je un vértice v lia el suhútbol se combina con laclase de equivalencia actual de u y nos aseguramos
mando a b u s c a r sobre una e.stnictura de partición. Ya que b u s c a r devuelve el de actualizar la sujeción, en las lincas 24 y 25. Cuando todos los hijos han sido
número de un conjunto, podemos utiliza! un vectoi . - - c l o n para almacénai el visitados recursoámenle, podemos marcar ii como procesado en la línea 2‘í y ter­
nodo sujeción correspondiente a cada conjunto. minar comprobando todas las peticiones ACP que involucren a u en las líneas de
loi Figura 23.6 muestra una implementación en pseudocódigo del algoritmo la 30 a la 33a.
ACP Como hemos mencionado anteriormente, la operación buscar general­
mente asume que loselementos del conjunto m «ii0. I ,V I.par loque en un
paso de prepr»«cebamiento que calculael tamaño del árbol almacenamos el número
en picorden de cada nodo delárbol. Aunque un enf««quc orientado a objetos p««dríj 23.3 El algoritm o d e búsqueda rápida
intentar incorporar una traducción dentro de buscar, utili/andoquizás un diccio­
nario. en estecaso ello seriacomputacionalmente ineficiente Asumimos también Esta sección presenta los preparativa para la implementación eficiente de la es*
que tenemos un vector de listas para almacenar las peticiones ACP La listai al­ tructura de partición. Hay dos estrategias básicas para resolver el problema unir
macena las peticionescorrespondientes al nodo i. Teniendo cuidado de estos deta­ buscar. Una consigue que lainstrucción buscar pueda ejecutarse en tiempocons­
lles.el código es extraordinariamente breve. tante en el caso peor. > la ««ira logra lo mismo para la operación unir. Reciente­
Cuando se visita por primera vez un nodo //.se genera la sujeción a si mismo mente se ha demostrado que ambas cosas no pueden lograrse simultáneamente en
en la linca IN de la Figura 23.6. Entonces se procesan rccursivamcnte sus hijos v . tiempo constante (inclusoamortizado! en el caso peor.
mediante la Humada en la línea 23. Después de que acaba cada llamada recursiva. El primer cnloque se denomina iilf¡oriinu> b i i s q u t J u r á p a la . Para que la
operación busca: sea rápida, podríamos mantener en un vector el nombre de la
1 // Al g o r í t r o o d e l a n t e c e s o r c o m ú n ma s c e r c a n o
clase de equivalencia de cada elemento, buscax se reduce entonces a un simple
2• acceso en tiempo constante Supongamos que queremos realizar unir<</. /»!. Su­
3 // P r e c o n d i c i o n e s (y o b j e t o s g l o b a l e s ) : póngame también,que <i está en laclase ileequivalencia /y b estáen y. Podemos
4 // 1. La e s t r u c t u r a d e p a r t i c i ó n e s t a i n i c i a l i z a d a recorrer el vector, intercambiando h*das las ¡ por/. Desgraciadamente, este reco­
5 // 2 . Todos l o s nodos e s t á n i n l c l a l m o n t e s i n marca: rridocuesta un tiempo lineal. Por tanto una secuencia de V 1 operaciones unir
6 // 3. L o s n ú m e r o s e r . p r e o r d e n y a e s t á n a s i g n a d o s e n e l c a r p o
(el máximo número posible, ya que tras ellas tod**» los elementos estarían en la
7 II 4 . Cada nodo p u e d o a l m a c e n a : s u e s t a d o d o m a r c a jo
8 misma ciase)tardaríaun tiempo cuadrático. En el caso típico,en elcual el número
La l i s t a d e p a r e s e s t a d i s p o n i b l e g i o b a l m e r . t e
0 ilebúsquedas es subcuadrático. estoes claramente inaceptable.
10 Par t1 c i o n s « new P a r t i c i ó n * tamar.yoArbcl ) : Una idea consiste en mantener todos loselementos que están en la misma cla­
11 íiodo [ ) s u j e c i ó n = n e w N o d o ( t a m a n y o A r b o l | r se de equivalencia en una listaenlazada Esto ah»wra tiempo al actualizar, pues no
12
tenemos que buscar en el vector completo. Sin embargo, esto no reduce por sí
13 ll main r e a l i z a la l l a m a d a acp* r a í z )
14 mismo eltiempo de ejecución asintótico. ya que todavía es posible realizar <-)(\'*)
/ después de las in íc ía iiz a c lo n e s necesarias
15 actualizaciones de lasclases de equivalencia durante el transcurso del algoritmo.
16 void acpl Nodo u l Si mantenemos también el tamaño de las clases de equivalencia (y cuando se fiare
17 realiza una unión, cambiamos el nombre de la clase pequeña por el de la muyor! cual-
18 jecionl e.bucear* u.nuro ) | * u ; entonces el tiempo total invertidoen V llamadas a unir es 0 { V log \ ). Esto se de-
19
be a que cada elemento puede cambiar de clase de equivalencia como mucho muc.
20 Hace l a s 11a r a d a s e n p o s t o r d e n
21 (o r l c a d a h i j o v d e u 1 log V veces, ya que cada vez que cambia de clase, su nueva clase de equivalencia po*«
22 es al menos el doble de grande de lo que era laantigua (por loque se puede upli- «*■»
23 acp( v | ; car el principiode duplicaciones sucesivas).
24 s.ur.ir* s.buscar* u.nua l. s.buscar* v.nua ) 1; Esta estrategia asegura que cualquier secuencia de a lo sumo S í búsquedas y ^
25 s u j e c i ó n * s . b u s c a r * u . n u r ) J«u; N ~ I uniones tardará,como mucho. <h S I ♦ S log N ) . Si M es lineal, ésta es toda- ^
26
27
vía una solución costosa. También es un poco confusa. va que debemos mantener pe»
28 / / Hace l o s c A i c u i o s a c p p a r a l o s p a r o s que i n v o l u c r e n
listas ordenadas La próxima sección examina una solución al problema unir bus- «rr
29 u.marcado = tru e : carque hace más fácil uní:.pero mas difícil buscar. Este enfoque alternativoes
30 f o r * c a d a v t a l q u e acp* u . v l ha s i d o s o l i c i t a d o el algoritmo de unión rápida Aun asi.el tiempo de ejecución de cualquier secuen­
31 i ( | v . marcado ) cia de como mucho M búsquedas y /V - I uniones será sólo un poco más que
32 S y s t e m . o u t - p r i n t I n 1* a c p ( • • u • " , * • v *
33 ( M S I + N ) . y sólo se usará un vector de enteros.
- ) tíU • . SU J e c i o n l u . b u s c a r ( v.
34
* l u i . w u m c n i c l u d í a n * ! . « d r» w .< - w » m i s v a * . e n U ú l i . n u in O iw c W n . p e ro h a c ié n d o lo w i t c » t / a u r n o . l « n
Figura 23 6 P seoó ocód lg o d e l p ro ü le m a ACP A C H m . ni
© O 0 O O © © 0 © O © © G ^

Figura 23 9 El b o squ e después do k i unión d e los árb oles c o n ra íce s 6 y 7


Figura 23.7 Un b o s q u e c o c re s p o n d ie n re a o c h o o to m e n to s. ire cio tm e n le e n c o n
ju n to s a«te*e n te s

23.4 El algoritm o d e unión rápida


Recordemos que el problema unir buscar no requiere que laoperación b u n c a r de-
vuelva un nombre específico, sólo que las búsquedas de dos elementos devuelvan
la misma respuesta m y sólo si están en el mismo conjunto l'na idea puede ser
utili/jr un árbol para representar un conjunto, ya que cada elemento en el árbol
tiene la misma raí/. p»»r loque la raí/ puctlc usarse como nomba- «leíc«»njunlo.
C a d a c o n ju n to s e re p re s e n ta p o r u n á rb o l, c o n lo q u e e n s u m a te n e m o s u n A m -
i/u r E l n om ba* «le c a d a c«*njunt«> v ie n e d a d o p«*r e l nod«» e n la r a í / N u e stro s á r ­ Figura 23 10 El b o squ e despviés d e lo unión d e los «árboles c o n ra íce s 4 y 6
b o le s n o s«»n n e c e s a ria m e n te b ín a n o s . pcr«> su re p re se n ta c ió n e s se n c illa p o rq u e la
ú n ica in fo rm a c ió n n e c e sa ria e s e l p a d re «le c a d a n o d o . l*or ta n to , só lo n e c e sita m o s
un tiempo «leejecución en el cas«» |»eor 0( N ) para cuda operación buacai.Típi­
u n s e c to r d e e n te r o s : c a d a e n tr a d a p ¡ i ¡ e n e l v e c to r re p r e s e n ta e l p a d re «leí cle-
camente (como muestran las »i«*saplicaciones previas), el tiempo de ejecución se
m e n to i . y p a ra in d ic a r q u e e s ta m o s e n la r a í / p o d e m o s u tiliz a r I c o m o p a d re
calcula para una secuencia dc M instrucciones entreme/ciadas F.nel caso pon. M
L a F ig u ra 2 3 .7 m u e s tra u n b o s q u e d e á rb o le s triv ia le s y e l v e c to r q u e l o r e p r e ­
operacmocs consecutivas podrían taiilarun tiempo 01 V/V».
sen ta.
En general, un tiemp»»dc ejecución cuadrático para una secuencia de opcracio*
P a ra re a liz a r la u n ió n d e d«»s c o n ju n to s, m e /c la m o s lo s d o s á rb o le s h a c ie n d o
nes no es aceptable Afonunadamcnte. hay varias formas sencillasde asegurar que
q u e la r a í / d c u n o d e e llo s a p u n te a la r a í / d e l o tro . D e b e ría e s ta r c la r o q u e esta
o p e ra c ió n tie n e un c o s te c o n s ta n te , lu is F ig u ra s 2 3 .8 . 2 3 .9 y 2 3 .1 0 re p re s e n ta el
este tiempo «leejecución i h » se de nunca.
b o sq u e d e s p u é s d e u n ir(4 .5 ). u n irlft .7 ) y u n í >14.6). d o n d e h e m o s a d o p ta d o e l
c o n v e n io d e q u e la n u e v a r a í / d e s p u é s d e u n ir ( i.v ) e s i.
23.4.1 Algoritmos d e unión inteligentes
l a b ú sq u e d a d e l e le m e n to .i s e r e a li/a d e v o lv ie n d o la r a í / del á rb o l q u e c o n tie ­
n e « F l tiemp«* n e c e sa rio p a ra r e a li/a r e s ta o p e ra c ió n e s p ro p o rc io n a l a l n ú m e ro Las uniones anteriores se hicieron «leuna f«*rma bastantearbitraria, haciendo que el
d e ihh Io s e n e l c a m in o «le i a la r a í /. 1j e s tra te g ia «ic u n u in d e s c rita a n te rio rm e n te segundo árbol pasara a ser un subárb«*l «leí primen», l ’n a ih c j« tj sencilla es exigir
n«>s p e rm ite c re a r u n árb«>l e n e l q u e lo d o n o d o e s té e n e l c a m in o a i . o b te n ié n d o se que siempre el arb«*l más pequeño pa>c a >ersubárbol del árbol may«»r. rompiendo
losempates c«mi u n criteriocualquiera: este método se demmiina u n ió n ¡ * > r ta m a ñ a .
u -1 Las tres uniones «le la sección antcn«*rcorrespoinlon a sc*n«l«*sempates. p*»r lo que
-1 podemos considerai que se reuli/aron |*»i tamaño. Si la siguiente operación lucra
© O © O © © ; unir(3.4). se formaría el árbol «le la Figura 23.11 Si n«> hubiéramos utili/ad«» la
-1
heurísticj «leítamaño, se habría gencratl*' un h«»sque más profundo (tres n«»d«»s. en
-1
4
lugar «le u i h » sólo, verían incrementada su profundidad en un nivel).
-1
Podemos «leiiH*strarque silas um.'iics se hacen p«*rlanuñ«». lapn»lundi«la«l «le
* 1
cualquier n««d*»nunca es mejor que l«*gN . Para ver esto. »*bservam«>s que imcial-
-1
mente linio ii«kI«> está a profundidad 0. Cuamk* su pr«*lundidad aumenta com«»
-1 resultad»* «le una unión, se coloca en un árbol cuyo tamaño es al men«»s el d«*ble
F igu ra 23 8 El b osaue dosoaOs d e lo uroon d e los árb oles c o n raíces 4 y í> «leí anterior. En consecuencia su pr«»fuiididad puede incrementarse c«*nm mucho
1 -1

© © 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

E l e sq u e le to d e la c la s e d e la e stru ctu ra d e p a rtic ió n se m u e s tra e n la F igura 23.15;


la im p le m e n ta c ió n se m u e s tra c n la F ig u ra 2 3 .1 6 . S e h a o m itid o la c o m p ro b a c ió n d e
e m ire s , p a ra e v ita r o s c u re c e r lo s d e ta lle s d e l alg o ritm o . P o r supuesto, u n p ro g ra m a
ro b u s to d e b e ría c o m p ro b a r e s to s e rro re s S in la c o m p ro b a c ió n d e e m ire s , e l a lg o rit­
m o c o m p le to e s so rp re n d e n te m e n te b rev e
Figura 23.14 C om presión d e com m os q u e re s iita o l e je c u ta r b u s c a r< 14) e n ©i ór E n la ru tin a, la u n ió n se r e a li/a v ib re las ra íc e s d e lo s á rb o le s A lg u n a s v e c e s la
b o l d e la fig u ra 23 12 o p e ra c ió n s e im p le m e n ta p a sá n d o le d o s e le m e n to s c u a le sq u ie ra y te n ie n d o q u e u tili­
z a r b u s c a r para d e te rm in a r las raíc e s
con la compresión ilc caminos, una secuencia de M operaciones requiere como
mucho un tiempo I X M log N i . por lo que la compresión de caminos por sí sola
1 /••
garanti/a un coste amorti/ado logarítmico para laoperación b u s c a r 2 • C o n s t r u c t o r d r l a e s t r u c t u r a do p a r t i c i ó n .
La compresión de caminos cs perfectamente compatible con la unión por la- 3 * U p a ra n numElementos e l n ú m e r o i n i c i a l d® c o n j u n t o s .
maño. por lo que ambas mimas pueden implemenlarse a la ve/ Sin embargo, la 4 •/
compresión de caminos no es completamente compatible con la unión por alturas, 5 p u b lic E st rPsrtlcion ( i n t numEl«s*mloB )
6 (
poique la compresión de caminos puede cambiar la altura de los árboles. No está 7 v e c t o r - new i n t | numF.lamento® 1:
claro cómo calcularla de nuevo eficientemente, por lo que no intentamos seguir 8 f o r | i n t i = 0 ; i < v e c t o r . l e n g t h ; i* * I
este camino. En consecuencia, los valores almacenados en cada árbol se convier­ 9 v e c t o r ( l I * -X:
tencn estimaciones de laaltura (lascuales cn losucesivo denominaremos r a n g o s i. 10 )
pero esto no es un problema El algoritmo resultante recibe el nombre de u n n 'm 11
12
p o r r a n g o . Como veremos en laSección 23.6. lacombinación de una unión inteli­
13 • u n ir une d o s c o n ju n to s d is j u n t o s u ti li z a n d o la a l t u r a .
gente y lacompresión de caminos garann/a un tiempo de ejecución casi lineal pa­ 14 • Aaomino® q u e r a i z l y r a iz 2 io n d is tin to ® .
ra una secuencia de M operaciones. 15 • 0p a r a n r a i z l la r a i z d e l p r i s e r c o n ju n to .
16 • « p a ra n r a iz 2 l a r a í z d e l se g u n d o c o n j u n t o .
1 package E s? ru ctu rasD a to s; 17 •/
2 18 p u b l i c v o id u n i r l i n t r a i z l . i n t r a i z 2 )
3 / / C l a s e E a t r P a r t i c i ó n 19 <
4 20 i f ( v e c t o r I r a i z 2 1 < v e c t o r l r a i z l 1 ) / ' r a i z 2 m as p ro f u n d a
5 / / CONSTRUCCIÓN: I n d i c a n d o «1 num ero Inicial cl*> c o n j u n t o » 21 v e c to r I r a i z l 1 - r a l z 2 : I I r a i z 2 nueva ra íz
6 22 e ls e
7 * ...............................................OPERACIONES PUBLICAS* • • • *.......................................... 23 <
8 // v o id u n ; r ( r a x x l , i a l x 2 i - - > M ezc la l o s d o s co n ju n to ® 24 lf< v e c t o r | r a i z l I v e c to rl t a l / 2 1 )
9 in t b u sc a r ( x ) - - > D ev u eiv e e l c o n ju n to que c o n t ie n e a x 25 v e c to rl r a i z l 1 --; / / A c tu a liz a r a ltu r a
10 / ....................... * ..........................................ERRORES................................ .. ........................... 26 v e c t o r I r ® lz 2 1 - r a i z l j H r a i z l n u e v a r a i z
11 // S i n co m p ro b a ció n de e r r o r e s
27
12 28 )
13 /• •
29
14 • E s t r u c t u r a d e p a r t i c i ó n , u t i l i z a n d o u n ió n p o r r a n g o
30 /••
15 • y c < n p r « ® i ó n d® c a n i n o ® .
16 •/ 31 * H u aq uvda c o n c a a p r e a i ó n d e c a n i n o s .
32 • S e o m i te l a d e t e c c i ó n d e e r r o r e s .
17 p u b lic cías® E s ? rP a rtic io n
18 { 33 * Ui—r.im x e l e l e n - n i t o b u a c a d o .
19 public E strP a rt i c : o n f :r.r 34 • U r e tu r n e l c o n j u n t o q u e c o n t i e n e a x.
20 ( /• F ig u r a 2 3 . 1 6 • / I 35 •/
21 p u b l i c v o i d u n i r < lnt r a i z l . lnt raiz2 I 36 p u b l i c in t b u s c a n l n t x )
22 ( / • Figura 23.16 •/ ) 37 (
23 public int b u sc a n lnt x i 38 ií< v e c to rI x I < 0 )
24 ( /• F i g u r a 2 3 . 16 • I 39 re tu r n x;
25 40 «• l no
26 prívate un | | vector: 41 re tu rn v e c to rl x ] » b u sc a r! v e c to r l x | I
27 1 42 )
Ftnurn 2.3 )S F v s iM bln rto ln ri»u » f r u u o 9% i A im r*> m «ntor.lón d e lo e stru c tu ra d e p a rtic ió n sin d e te c c ió n d e errores
Ll procedimiento interesante c\ b u s c a r . Una vez la búsqueda s e ha realizado Eliel resto«leesta sección.pr«»barefiK*s un a-Miliari»»alg«> nús débil. Mostraremos
recursivámente, se asigna a v e c t o r [ x J laraízque después e s devuelta Ya que esto que cualquiersecuencia de \ f - Qt A')operaciones de unrón o búsquc«la requieren un
ocurre de forma recursica. todm l«* r*xfc* en el camino pasarán a apuniar (como Ueni|x> total ( A M log* A') la misma cota sigue siendo cierta si utilizan»* la un»*n
padre» a la raíz original por tamaño en vez «lelaunKHi p«x rango. Esteanálisises. pnthablemente, el más com­
plicado del libro y uno de los primer»* análisis realmente coinplcjí*jamás reali/atlos
para un alg«»ntm«> trivial «le implementar. Extendiendo esta técnica, podríamos
23.6 C aso peor d e la unión por rango pu*bat también lacota más fuerte afirmada previamente.
y la com presión d e cam inos

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

ftxlriun** querer cakular algunos vakaes. per.»para Uxlos losproptotos prácti-


cos. a M . N \ < 4.que es lo úmc«» importante aquí P«x ejemplo, para cualquier) > I. F.n a u s e n c ia d e l a c o m p r e s i ó n d e c a m in o s , c u a n d o u n a s e c u e n c ia d e m s - Té
tenemos t i u c c i o n e s u n i r e s t á s i e n d o e je c u t a d a , u n m u l o d e r a n g o r d e b e te n e r a l
m e n o s 2 ' d e s c e n d ie n te s , u n lu y é n d o l e a é l m i u n o .
.4(2.j ) = .4(1..4(2.j - h)
_ - ti Ia i d e m o s t n u ió n e s p o r i n d u c c ió n , lu í b a s e , c u m u l o r = 0 . e s c la r a m e n te D i

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

D u ra n te to d o e l a lg o ritm o , lo s d e p ó sito s to ta le s d e e u ro s lu ijo la re g la I N


to ta liza n V /( G ( V ) + 2). ^ 2* < y - i r

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

Figuro 23 16 Ovts»ón co n cre to d e los rang os ©n grupos u tte a d a e n la dem ostró


cló n Elem entos d el juego

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).

2 3 .1 . M u e s tre e l r e s u lta d o d e la sig u ie n te s e c u e n c ia d e in s tru c c io n e s: u n i r ( l . 2 > . Problem as prácticos


u n i r (3.4). u n iri.3 .5 ). u n í r t 1.7). u n ir ( 3 .6 ) . unir< 8.9> . u n i r t 1.8). u n ir (3 .IO ).
u n i r t 3 . l l ) . u n i r ( 3 . l 2 ) . u n ir ( 3 .1 3 ) . u n i r ( l 4 . ! 5 ) . u n i r t l 6 . l 7 ) . u n i r ( l 4 . l 6 ) . 2 3 .1 1 . Im p lem en to d e fo rm a n o re c u rsiv a la o p e ra c ió n b u s c a r . ¿ H a y u n a d if e ­
u n i r t 1 .3 ). u n i r t 1.1 4 ), c u a n d o s e u tiliz a n la s sig u ie n te s o p e ra c io n e s de re n c ia n o ta b le e n e l tie m p o d e e je c u c ió n ?
u nión: 2 3 .1 2 . S u p o n g a q u e q u ie re a ñ a d ir u n a o p e ra c ió n e x tra , d e s u n i r , q u e d e s h a c e la
ú ltim a u n ió n a ú n n o d e s h e c h a U n a fo rm a d e h a c e r e s to e s u tiliz a r la
a) A rbitraria.
u n ió n p«*r ra n g o , p e ro c o n un b u s c a r sin c o m p re s ió n d e c a m in o s , y u tili­
b) P o r a ltu ra
z a r u n a p ila p a ra a lm a c e n a r e l e s ta d o a n tig u o a n te r io r a la u n ió n l 'n a
») P o r ta m a ñ o
d e s u n i ó n p u e d e im p lem en tar> e d c sa p ila n d o d e la p ila e l e s ta d o an tig u o .

2 3 .2 . P a ra c a d a u n o d e lo s á rb o le s d c l e je rc ic io a n te rio r, re a lic e u n a b ú sq u e d a a) ¿ P o r q u é n o pt*dciiios u tiliz a r la c o m p re s ió n d e c a m in o s ’


c o n c o m p r e s ió n d e c a m in o s d c l n o d o m á s p ro fu n d o />» Im p lem en to e l a lg o n tm o u n ir b u s c a r d esu n ir.
2 3 .3 . C a lc u le e l á rb o l d e re c u b rim ie n to m ín im o d e l g r a f o d e la F ig u ra 2 * 19
M u e s tre e l f u n c io n a m ie n to d c l a lg o r itm o AC'P c o n lo s d a lo s d e la F ig u ­
2 3 .4 .
ra 2 3 .3 . e Prácticos d e p ro g ra m a c ió n
2 3 .1 3 . A ñ a d a c o m p ro b a c ió n d e e rro re s a la im p le m e n ta c ió n d e la e s tru c tu ra d e
p a rtic ió n d e la F ig u ra 2 3 .1 6 .
2 3 .1 4 . E sc ríb a u n p ro g r a m a q u e d e te rm in e lo s e fe c to s d e la c o m p r e s ió n d e c a m i­
n o s y d e d iv e rsa s e stra te g ia s d e u n ió n S u p ro g ra m a d e b e ría p ro c e s a r una
la rg a se c u e n c ia d e o p e ra c io n e s d e e q u iv a le n c ia u tiliz a n d o to d a s la s e s tra ­
te g ia s e s tu d ia d a s (in c lu y e n d o la d iv is ió n d c l c a m in o p o r la m ita d d e l
E je rc ic io 2 3 .1 0 )
2 3 .1 5 . Im p le m e n te e l a lg o n tm o d e K ru sk al.
Hguro 23 19 u n g ra fo G p a ra e l Ejercicio 23 3. 2 3 .1 6 . U n a a lte rn a tiv a a l a lg o ritm o d e l á rb o l d e re c u b rim ie n to m ín im o s c d e b e a
P rim 1121. T ru b u ia e x p a n d ie n d o u n sol»* á rb o l e n su c e s iv o s p a so s. E m p ie-
/ a e lig ie n d o c u a lq u ie r n o d o c o m o la raí/.. A l c o m ie n z o d e un p a so , a lg u ­ 6. J D o v le y R L. R iv e st. « L in e a r E x p e c te d T im e o l a S im p le U n io n I ind
n o s n o d o s so n p a rle d e l á rb o l y e l re s to n o lo so n F n c a d a p a so , a ñ a d im o s A lg o rilh m » . In fo rm a tio n P r o c e ss in g I r t t e r s 5 1 1976). 146-148
la a ris ta d e c o s te m ín im o q u e c o n e c ta u n n o d o d e l á rb o l c o n u n o d e fuera.
7. H . N . Gabovv y R E. T a rja n . «A L in e a r-tim e A lg o n th m fo r a S p e c ia l C a ­
I 'n a im p le m e n ta c ió n d e l a lg o ritm o d e P rirn e s e s e n c ia lm e n te id é n tic a al
s e o í D isjo in l S et U n io n ... J o u r n a l o j C o m p u te r a n d S y ste m S c ie n c e s 30
a lg o ritm o d e c a m in o s m ín im o s d e D ijk s tra v is to e n la S e c c ió n 14.3. c o n
1 1985). 2 0 9 -2 2 !.
la s ig u ie n te re g la d e a c tu a liz a c ió n : d u = m in ( < /„ . €*,.„) le n v e z de
</.. = m in u A ,. d , + <v. „ i). A d e m á s, y a q u e e l g ra fo n o e s d irig id o , c a d a 8. B . A G a lle r y M . J . F is c h e r. « A n Im p ro v e d H q u iv alen ce A lg o rilh m » .
a rista a p a re c e e n d o s lis ia s d e a d y a c e n c ia Im p le m e n te e l a lg o ritm o de C o m m u n ic a tio n s o f th e A C M 7 (1964». 3 0 1 -3 0 3 .
P rim y c o m p a re su re n d im ie n to c o n e l d e K ru sk al. 9. J E. H o p c ro ft y J D . U llm a n . « S e t M e rg in g .A lg o rith m s-. S IA M Jo u rn a l
2 3 .1 7 . E sc rib a un p ro g ra m a p a ra re s o lv e r e l p ro b le m a A C P p a ra á rb o le s b in a ­
o n C o m p u tin g 2 » 1973). 2 9 4 -303.
rio s. C o m p ru e b e su e fic ie n c ia c o n s tru y e n d o u n á rb o l b in a rio a le a to rio
c o n 10 .0 0 0 e le m e n to s y re a liz a n d o 10 0 0 0 p re g u n ta s s o b re e l an tec eso r 10. D. F K n u th y A S c h o n a g e . « T h e E x p e c te d L in e a rity o f a S im p le E q u i-
v a le u c e A lg o rilh m » . T h e o r ttie a l C o m p u te r S e te n e r 6 (1 9 7 8 ). 2 8 1 -3 1 5 .

11. J B K ru sk a l. J r . « O n th e S h o rtc st S p a n m n g S u b tre c o f a G ra p h a n d the


Bibliografía T ra v e lin g S a le sm a n P ro b le m * . P ro c e e d in g s o f tlir A m e r ic a n M a th em a t-
ic a l S o c ic ty 7 (1 9 5 6 ). 48-50.

12. R. C P rim . « S h o rte st C o n n e c tio n N e tw o rk s a n d S o m c G e n e ra li/a tio n s » .


l.a re p re se n ta c ió n d e los c o n ju n to s d e u n a p a rtic ió n m e d ia n te á rb o le s fu e p ro p u e s ­
B e ll S y ste m T e c lin ic a l J o u r n a l 3 6 (1 9 5 7 ). 1389-1401.
ta e n |8 |. |1 | a trib u y e la c o m p re s ió n d e c a m in o s a M c llro y y M o rris y c o n tie n e
v a ria s a p lic a c io n e s d e la e s tru c tu ra d e p a rtic ió n El a lg o ritm o d e K ru sk a l ap arece 13. R F T a rja n . « E ffic ic n c y o f u G o o d b u l N ot L in e a r S e t U n io n A lg o ­
e n 1111, m ie n tra s q u e la a lte rn a tiv a e stu d ia d a e n e l E je rc ic io 2 3 .1 6 e s d e | I 2 | . El n th m » . J o u r n a l o f th e A C M 22 t 1975). 2 1 5 -2 2 5 .
a lg o ritm o A C 'P se e s tu d ia e n |2 |. S e p u e d e n e n c o n tra r o tr a s a p lic a c io n e s e n 115|
14. R. E . T a rja n . « A C la s s o f A lg o rith m s W h ic h R e q u ire N o n lin e a r T im e lo
L a c o ta D i A /lo g * A ) p a ra e l p ro b le m a u n ir b u s c a r e s d e |9 |. T a rja n | I 3 | o b tu v o
M ain tam D isjo in t S e ts » . 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 18
la c o la í AA/j i A/. A » y d e m o s tró q u e la m ism a e s a ju sta d a. E s m ás. la c o ta e s in trín ­
se c a a l p ro b le m a y n o p u e d e s e r m e jo ra d a p o r un a lg o ritm o a lte rn a tiv o 11 6 1. O tra s (1 9 7 9 ). 110-127.
e stra te g ia s p u n í la c o m p re sió n d e c a m in o s y la u n ió n c o n sig u e n las m ism a s c o ta s: 15. R . E . T a rja n . « A p p lic a tio n s o f P ath C o m p re n s ió n o n B a la n c c d T rc e s » .
v é a se 116| p a ra m á s d e ta lle s . S i la se c u e n c ia d e u n io n e s se c o n o c e d e a n te m a n o , es J o u r n a l o f th e A C M 2 6 < 1979). 6 9 0 -7 1 5 .
p o sib le re s o lv e r e l p ro b le m a e n tie m p o lin eal |7 | . E ste re s u lta d o p u e d e u tiliza rse
16. R . E. T a rja n y J. v a n L e e u w e n . - W o r s l C a s e A n a ly sis o f S e t U n io n A l-
p a ra p ro b a r q u e e l p ro b le m a A C P p u e d e re s o lv e rs e e n tie m p o lin eal.
g o rilh m s » . J o u r n a l o f th e A C M 31 l 1 9 8 4 ). 2 4 5 -281.
D iv e rs o s re s u lta d o s so b re la c o m p le jid a d e n p ro m e d io d e l p ro b le m a u n ir b u s ­
c a r a p a re c e n e n |6 ] , 1 1 0 |. | I7 J y [4 j. O tro s re s u lta d o s q u e a c o ta n e l tie m p o d e e je ­ 17. A . C . Y ao . « O n th e A v e ra g e B e h a v io r o f S et M e rg in g A lg o rith m s» . P ro ­
c u c ió n d e c a d a o p e ra c ió n p o r s e p a ra d o (e n o p o s ic ió n a la c o n sid e ra c ió n d e s e ­ c e e d in g s o f th e h ig h th A n im a l A C M S y m p o siu m o n th e T h e o r y o j C om -
c u e n c ia s e n te ra s ) a p a re c e n e n |5 | . p u ta tio n (1 9 7 6 ). 1 9 2 -195.

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.

3. L.. B a n a c h o w sk i. ««A C 'o m p lem en t lo T a rja n ’s R csiilt a b o u t th e Lovver


R o u n d o n th e S et U n io n P ro b le m » . In fo rm a tio n P r o c e s s in g Ix ’tte r s I I
(1 9 8 0 ). 5 9 -6 5 .

4 B . B ol lo b a s y I. S im ó n . « P ro h a b ilislic A n a ly sis o f D isjo in l S e t U n io n A l­


g o rith m s» . S I A M J o u r n a l o n C o m p u tin g 22 (1 9 9 3 ). 10 5 3 -1 0 8 6 .

5. N . B lu m . «O n the S in g le -o p e ra tio n W o rs t-c a s e T im e C o m p le x itv o f the


D isjo in l S el U n io n P ro h le m » . S I A M J o u r n a l o n C o m p u tin g 15 (1 9 8 6 ).
1021-1024.
A Plataformas para Java

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 + + .

Supondremos que ya se ha realizado una instalación básica.

A. 1 Estab lecien d o el entorno


Independientemente del sistema de desarrollo que utilicemos, necesitamos asegu­
ramos de que se les ha asignado un valor adecuado a las siguientes d»»s \anahles
de enlomo:
especifica un conjunto de directorios donde se buscan losejecutables
• p ath :
«como J a v a c . j a v a y j a v a d o c ) .
• classpath :especifica un conjunto de directorios donde se buscan los pa­
quetes (como jnvo.lang y Eat ructurasDatos).
Si se asigna a p a t h un valor inadecuado, podría no encontrarse alguno de los
ejecutables,como j a v a c . Si se asigna una valor inadecuado a C L A S S P A T H . enton­
ces fallarán lasdirectivas import y otros usos de los paquetes.
Algunos de los productos descritos en esta sección asignan automáticamente
valores a las variables de entorno al ser instalados. Aun así. para usar los progra­
mas del libro, necesitará modificar CLASSPATH para incluir los paquetes aquí des
critos.
Las instrucciones para Unix y Windows95 son básicamente idénticas, excepto
en loque se refiere a su sintaxis concreta.

A. 1.1 Instrucciones para Unix

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

-d e p e n d H a c e qu e e l co m p rad o r recom pMe ficheros d e clases rele-


reocioaos d e sd e otros ficheros d e ciase. N orm alm ente sólo A.3.1 Sym antec Cctfé
re c o m p Ja ficheros d e c la se obsoletos a los q u e se h o c e re
fe re n cia d e sd e et c ó d ig o fuente
1. C o m e n z a m o s p.»r im c ia li/a r C a fé . V e re m o s b re v e m e n te u n lo g o tip o c o lo re a ­
Figuro A. 1 O p cio n es d e ja v o c d o . A c o n tin u a c ió n , n o s e n c o n tra re m o s c o n la pc«*r c a ra c te rís tic a d e C a fé : la
p a n ta lla e s p rá c tic a m e n te tra n sp a re n te , p o r lo q u e *>u e n to r n o d e s is te m a será
El m a n d a to ja v a ta m b ié n tie n e o p c io n e s . S e p ro p o rc io n a u n a lista c o m p le ta de a ú n v is ib le . S i e s la p rim e ra v e z q u e u tiliz a m o s C a fé , n o s e n c o n tra re m o s c o n
e lla s e n la d o c u m e n ta c ió n p a ra JD K . a lg u n o s b o to n e s e s p a rc id o s p o r la p a n ta lla . Se p u e d e n m o v e r a la p arte s u p e ­
rio r p a ra o b te n e r a lg o sim ila r a la F ig u ra A .2 . N ó te se q u e e n la fig u ra s o la ­
m e n te se m u e s tra la p a rte su p e rio r d e la p a n ta lla .
A.3 Entornos d e desarrollo visual
2. A h o ra c re a re m o s u n n u e v o p ro y e c to p a ra T e s t S t a c k . a l q u e p o r s im p lic id a d
S xm a n tct C a fé se d is tin g u ió p o r se r e l p rim e r siste m a d e l m e rc a d o c o n un e n to rn o le lla m a re m o s T e s t S t a c k . P u lse e l m en ú P r o je a y se le c c io n e N e w . c o m o se
J e d esarro llo m o derno. M icro so ft V isu a l J+ + s e d istin g u e p o r se r un p ro d u cto M ic ro ­ m u e s tra e n la F ig u ra A .3.
soft. S u apariencia y fu n d am e n to s son id é n tic o s a l p o p u lar V isual C + + d e M icrosoft 3. E n e s te p u n to , in ic ia li/a m o s la h e rra m ie n ta P r o je c tE x p r e s s , q u e h a c e a p a re c e r
A m b o s s is te m a s in c lu y e n , e n tr e o tr a s c o sa s. u n a s e c u e n c ia d e c u a tr o c u a d ro s d e d iá lo g o . E s p ro b a b le q u e só lo n e c e site m o s
lo s tr e s prim ero s.
• u n e d ito r v is u a l q u e ilu m in a e n d ife re n te s c o lo re s la s p a la b ra s c la v e , los c o ­
m e n ta rio s y lo s to k e n s ;
• b o to n e s p a ra c o m p ila r y e je c u ta r p ro g ra m a s;
• v en ta n a s q u e p ro p o rc io n a n sim u ltá n e a m e n te v a ria s v istas d e l p ro y ec to , c o m o
la sa lid a d e l c o m p ila d o r, e l c ó d ig o fu e n te y la lista d e fic h e ro s del p ro y e c to ;
• h e rra m ie n ta s d e d e p u ra c ió n , y
• a y u d a d u ra n te su uso.

1.a in teg ració n d e e sta s v ista s e n u n ú n ic o p ro d u c to im p lic a , p o r e je m p lo , q u e si


Figura A 2
se p ulsa d o s v eces so b re un m e n sa je d e e rr o r del c o m p ila d o r, a p a re c e ilu m in a d a la
lín ea d e c ó d ig o d o n d e se h a d e te c ta d o e l e rro r. U n a v e z h a y a d is fru ta d o d e u n sis te ­
m a visual, le re su ltará d ifíc il v o lv e r a un siste m a b asa d o e n te x to . U n a c a ra c te rística
in q u irían te e s e l e d ito r d e recu rso s, q u e p e rm ite a l p ro g ra m a d o r d is e ñ a r un e n to rn o
g rá fic o u sa n d o u n s iste m a C A I). El e d ito r d e re c u rso s g e n e ra rá c ó d ig o J a v a q u e d e s ­
c rib e e l e n to rn o . E s to e s útil p ara e l d is e ñ o d e In te rfa c e s G rá fic a s d e U su ario .
l-os s is te m a s v is u a le s tie n e n a lg u n a s d e sv e n ta ja s . E n p rim e r lu g a r, a d ife re n c ia
d e l J D K ile S u n . n o so n g ra tu ito s E n s e g u n d o lu g a r, s e debe* h a c e r e l e s f u e rz o de-
c re a r u n p ro y e c to p u ra c a d a p ro g ra m a , lo c u a l p u e d e re s u lta r te d io s o p a ra p ro g ra ­
m as p e q u e ñ o s q u e s o la m e n te u tiliza n u n fic h e ro fu en te. E n te r c e r lu g a r, la v ersió n
m á s a c tu a liz a d a d e J a v a sie m p re a p a re c e rá d is p o n ib le a n te s p a ra e l s is te m a JD K
d e S u n . l a s a c tu a liz a c io n e s a p a re c e rá n e n lo s siste m a s c o m e rc ia le s p o c o d e sp u é s,
y n o s e rá n g ra tu ita s. P o r e je m p lo , c u a n d o s e e s c r ib ió la v e rs ió n o rig in a l d e este Figuro A 3
lib ro , e l ú n ic o c o m p ila d o r q u e s«*p«*riaha J a v a I I e r a e l JD K I I 1.
1 S Jft T.: L n d C a p i tu lo 6 J d i a i m n s m u c l a s e T e a tP » 1 » c u y * v e n i d a e n c i n a l ( e n i n f k S l w U a n u r « # t
e a e j p d u h c c rc O c ia n U CT M K tta J e u n p r o y e c to p a r a La v e n » * o n g r a l J e b c la s e , p o r l o g u e . J e a h o r a c « a d e l
h a h l a J e I . » M a r r a » g u c c U a t u n J i t p . * i h l c « e n e l r a m é a l o e n g u c %c c a c n b a ó l a « e r * * * o r i g i n a l J e c a e
' se rá n c in t i la n - * I W . . >w. .i a v ve h m a n a la v e r s u ta o r ig in a l, p a ra m a n te n e r la c o h e r e n c ia c o n la» fig u ra * .
c e s e s c r ib im o s e l n o m b re d e l p ro y e c to A s e a t t a ^ í p ro >e c l° F n "*"
M lfijo . p r j Pulse V „ , . V éa, e la F i u r j A * reSC * * * « « el

A V .,. Véase I , F .g u ru A S " * r ^ *-■Ptu lse


la c la s e P n o c ip a l
-

‘’ * í W S i'í ss : í í ? fcHf* r "


p o n e e li,. s í 1 cT L *, 'T ''* ' T " "
ei« -
d « * " • *1
m i s a d ela n te. A h e n tativ a m e n .c , p , x W "**"* * pm>’tCU'
(d e sd e ruera d e C a fé ) v te c le a r su n o m h te t í , ° " esU
S¡ lo n t s t a c k .ja v a e s t u , ^ y ™ h A fi

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

C u a n d o s e e je c u ta una aplicación d e co n so la. ap a re c e u n a v e n ta n a M S-D O S.


E s in te ra c tiv a , c o n lo q u e se a c e p ta n m a n d a to s d e e n tra d a . D e s a to r tu ñ a d a ­
m e n te . la v e n ta n a d e sa p a re c e c u a n d o e l p ro g ra m a te rm in a , lo q u e h ace d ifícil
v e r la salid a. P a ra e v ita r e sto , p o d e m o s h a c e r u n a d e las s ig u ie n te s c o sa s :

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).

A.3.2 Microsoft Visual J++

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

1 ...ni». •< « n ■ KI^J 1


** 1

««jopar»

Figura A 18

7. A c o n tin u a c ió n , p o d e m o s c a m b ia r a lg u n a s c a ra c te rís tic a s d e l p ro y e c to . E n el


m e n ú H m ld . se le c c io n a m o s S e tttn g s . c o m o s e m u e s tra e n la F ig u ra A . 19.
8. A p a re c e e n to n c e s e l c u a d ro d e d iá lo g o /'r o je e ! S e ttin g s . F:n é l sele c c io n a m o s
D e b u g . e s c rib im o s e l n o m b re d e la c la s e a d e p u ra r e je c u ta r e n C la w f o r i/e-
b tig g in g e x e e iitin g . y se le c c io n a m o s la o p c ió n S ta n d -a lo n e in te rp re ta r, c o m o
se m u e s tra e n la F ig u ra A .20.
9. A h o ra e s tá to d o lis to p a ra c o m p ila r e l p ro y e c to y eje c u ta rlo . L o s b o to n e s p ara
h a c e r e s to so n los sig u ie n te s: e l b o tó n p a ra c o m p ila r e s e l b o tó n d e l m e d io s i­
tu a d o d ire c ta m e n te so b re la \ i s t a d e la c la s e y e l b o tó n p a ra e je c u ta r e s e l p ri­
m e ro s»»bre la \ is ta d e l c ó d ig o fu e n te . E s ta s p o s ic io n e s d e p e n d e n d e la c o n fi-

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*
$***%

n r»rc.--^i«c* *o-h (T.1


Uveti* Im jr, **>*-*. ir « ikkwci te

• i............. ........1 -*J


« I c— | 1
Figura A 22

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.

Categoría Ejemplos Asociatividad

O p e ra cio n e s sobre referencias A la izquierda

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

R elocionales < < = > > = instanceof A la izquierda

D e ig u ald ad = = ! = A la izquierda

Y b o o le an o (o brt a bit) & A la izquierda

O exclusivo b o o le a n o (o b it a bit) A
A la izquierda

O b o o le a n o (o bit a bit) I 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

Figura B 1 O p erad o res Ja v a , listados d© m ayor a m enor p re ce d e n cia


c
A P É N D I C E

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

É ste e s e l p a q u e te e s tá n d a r q u e im p o rta n a u to m á tic a m e n te to d o s lo s p ro g ra m a s


Ja v a .

0 .1 .1 C h a ra c te r

L a c la s e C h a r a c t e r o c u lta e n u n o b je to u n v a lo r d e l tip o p rim itiv o c h a r . U n o b ­


je to d e tip o C h a r a c t e r tie n e u n ú n ic o c a m p o c u y o tip o e s c h a r . lis ta c la s e ta m ­
b ié n p ro p o rc io n a v a rio s m é to d o s p a ra d e te rm in a r e l tip o d e u n c a rá c te r y la c o n ­
v e rsió n d e c a ra c te re s e n tr e m a y ú s c u la s y m in ú sc u la s, y v icev e rsa, lis u n a c la s e
fin al.

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 )

C o m p a ra e l o b je to C h « » r a c t « > i c o n e l »>bjet«* e s p e c ific a d o , lil re s u lta d o e s t r u c ,


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 C h a r a c t e r q u e r e p r e ­
se n ta e l m is m o v a lo r c h a r q u e e l o b je to actual.

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 )

D e v u e lv e t r u e s i y s ó lo si e l c a rá c te r e sp e c ific a d o p u e d e s e r p a rte d e u n id en tifi-


c a d o r J a v a . (In c o rp o ra d o e n J a v a I I.)
C.1.3 O b je c t

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 ( )

Constantes im portantes C o n s tru y e u n o b je to ; rara v ez s e in v o c a d ire c ta m e n te .

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 >

IX -vucIve u n a c a d e n a q u e re p re se n ta e l o b je to . E l re s u lta d o d e b e ría s e r u n a r e p r e ­ D e v u e lv e t r u c , si y s ó lo si la c a d e n a te rm in a c o n e l s u f ijo e s p e c ific a d o c o m o a r­


se n ta c ió n c o n c is a p e r o in fo rm a tiv a , q u e s e a fácil d e leer g u m en to .

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

M étodos im portantes a la lo n g itu d d c la c a d e n a s o b re la q u e s e tra b a ja . S i hay c o n c a te n a c io n e s rep etid as


a la m is m a c a d e n a , e l c o s te p u e d e se r p ro h ib itiv o .
L’n e je m p lo e s e l m é to d o triv ia l d e la F ig u ra C . I q u e g e n e ra u n a c a d e n a c o n ,V
S t r i n g ( )
c a ra c te re s A . A ñ a d ir e l i é s im o c a rá c te r req u ie re u n c o s te p ro p o rc io n a l a i. y a q u e .
C re a u n a c a d e n a vacía. c o m o h e m o s v is to , s e c re a u n a n u e v a c a d e n a d e lo n g itu d i. E l c o s te to tal d e l m é to ­
S t r i n g ( S t r i n g a n o t h e r S t r )
d o v ie n e d a d o p o r I * 2 + 3 » ... a N . lo c u a l e s c u a d rá tic o . C o m o c a s o e x tre m o ,
p a ra e je c u ta r e s te m é lo d o c o n .V = 6 4 .0 0 0 e n u n P e n tiu m KM) se n e c e sita n un»*s 5
C re a u n a n u e v a c a d e n a q u e c o n tie n e la m ism a se c u e n c ia tic c a ra c te re s q u e la c a ­
m in u to s.
d e n a d a d a c o m o a rg u m e n to .
P ara q u e las o p e ra c io n e s sean e fic ie n te s, lo s c a ra c te re s s e d e b erían m a n ip u la r d i­
c h a r c h a r A t ( i n t i n d a x ) re c ta m e n te . c o n stru y e n d o fin a lm e n te u n a so la c a d e n a c o n te n ie n d o e l re s u lta d o de
D e v u e lv e e l c a rá c te r e n la p o s ic ió n e sp e c ific a d a . E l ín d ic e v a ría d e sd e 0 h a sta sead o . tra s c o m p le ta r las o p e ra c io n e s. Fisto e s lo q u e h ace la c la s e S t r i n g B u f f e r
l e n g t h ( ) - l . Se la n z a S t r i n g l n d e x O u t O í B o u n d s K x c e p t i o n si la p o s ic ió n U n v a lo r d e l t i p o S t r i n g B u f f e r p u e d e c o n s tr u ir s e a p a r tir d e u n a c a d e n a
e s tá fu e ra d e ran g o . c u a lq u ie ra o b ie n re p r e s e n ta r la c a d e n a v a c ía . S o b re e llo s se p u e d e n a p lic a r d i­
v e rs a s o p e r a c io n e s q u e m a n ip u la n e l S t r i n g B u f f e r . c o m o a p p o n d . q u e a ñ a d e
b o o l e a n e q u a l s ( O b j e c t o b j )
p»»r e l fin a l; s e t C h a r . q u e c a m b ia u n c a r á c te r c o n c re to ; e i n s e r t . q u e a ñ a d e
C o m p a ra la c a d e n a c o n e l o b je to e s p e c ific a d o . E l re s u lta d o e s t r u é . si y s ó lo si el p o r e l m e d io d e s p la z a n d o c a r a c te r e s si e l l o e s n e c e s a rio . E l c o m p ila d o r u tiliz a
a rg u m e n to e s d is tin to d e n u l 1 y e s u n o b je to S t r i n g q u e re p re s e n ta la m is m a se lo s S t r i n g B u f f e r p a ra g e n e r a r c ó d ig o e f ic ie n te p a ra las c o n c a te n a c io n e s tr i­
c u c n c ia d e c a ra c te re s q u e e l o b je to . v ia le s. P a r a o p e ra c io n e s n o tr iv ia le s , ta le s c o m o e l e je m p lo d c la F ig u ra C . l . lo
tie n e q u e h a c e r u n o m is m o . L u F ig u r a C .2 m u e s tra c ó m o s e p u e d e u tiliz a r un
i n t c o m p a r a T o t S t r i n g a t r )
S t r i n g B u f f o r p a ra g e n e ra r d e fo rm a e f ic ie n te u n s t r i n g d e N c a ra c te re s A.
C o m p a ra d o s c a d e n a s re s p e c to a l o rd en le x ic o g rá fic o . L a c o m p a ra c ió n se b asa e n el E ste m é to d o e s lin eal y re q u ie re 1.5 se g u n d o s p a ra V = 6 4 .0 0 0 .
v alo r U n ic o d e d e c a d a c a rá c te r e n las c a d e n a s. D e v u e lv e e l v a lo r 0 si la s ca d en a s
so n ig u ales: un v alo r m e n o r q u e 0 si la c ad e n a q u e re c ib e e l m e n sa je es m e n o r lex i­
1 I I M é t o d o c u a d r á t i c o q u e g e n e r a u n a c a d e n a c o n n Aor
c o g rá fic a m e n te q u e la c a d e n a a rg u m e n to ; y u n v a lo r m a y o r q u e 0 . e n o tro caso . 2 s t a t i c S t r i n g c a d e n a L a r g a M a l a t int n )
i n t l a n g t h ( )
3 (
4 S t r i n g r e s u l t a d o ■ **;
D e v u e lv e la lo n g itu d d e la cad e n a, 5 fo rt in t i ■ 0 ; i < n; i* * >
6 r e s u l t a d o • • 'A-;
b o o l a a n a t a r t s W i t h ( S t r i n g p r e f i x )
7 re tu rn resultado;
D e v u e lv e t r u e , si y s o lo si la c a d e n a c o m ie n z a c o n e l p re fijo e s p e c ific a d o c o m o 8 )
a rg u m e n to . Fiauro C . l M éto d o Ineficiente p o ra g en erar un S t r i n g d e N ca ro cte re s A
1 / / M étodo l i n e a l quo g e n e r a u n a ca d e n a co n n A es tip o s p rim itiv 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 . S e la n / a la e x c e p c ió n
2 s t a t i c S t r i n g ca d e n a L a rg a B u e n a ( i n t n ) S t r in g f n d e x O u t O f B o u n d s E x c e p t io n si la p o s ic ió n n o e s válida.
3 (
4 S t r in g B u f f e r r e s u lt a d o = new S t r i n g B u f t e r < l S t r i n g B u f f e r r e v e r s e ( )
5
6 f o r ( int l - 0 ; i < n ; i * * ) L a s e c u e n c ia d e c a ra c te re s q u e c o n tie n e e l b u ffe r s e r c c m p la / a p»»r su in v e rsa . E s­
7 r e s u l t a d o . a p p e n d l *A ' J ; to e s lo 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 r i\tra d e o p e ra c io n e s.
8
S t r i n g t o S t r i n g ( )
9 r e t u r n new S t r i n g i r e s u lt a d o ) ;
10 ) C o n v ie rte e l c o n te n id o e n un v a lo r S t r i n g . S e c re a u n n u e v o o b je to d e tip o
S t r i r . g y ^e im c ia li/a c o n la s e c u e n c ia d e c a ra c te re s re p re se n ta d a e n e s e m o m e n ­
Figuro C .2 M étodo e ficie n te po ro g en erar un s t r i n q de N co ra c te re s A
to p o r e l b u ffe r. C a m b io s p o ste rio re s d e l b u ff e r n o a fe c ta n a l c o n te n id o d e la c a d e ­
na.
S t r i n g B u f f o r u ti li /a d u p lic a c ió n d e v e c to re s, p a ra a s í a se g u ra r q u e su c a p a ­
c id a d p u e d e e x p a n d irse , si e llo c s n e c e sa rio . 1:1 (a m a ñ o in ic ia l e s d e 16 c a ra c te re s.
C.1.6 System
M étodos importantes
lu í c la s e S y s t e m c o n tie n e v a rio s a trib u to s y m é to d o s ú tile s . N o p u e d e se r instan-
c ia d a . E n tre las fa c ilid a d e s p ro p o rc io n a d a s p»>r la c la s e S y s t e r se e n c u e n tra n los
S t r i n g B u f f e r < )
c a n a le s d e e n tra d a y s a lid a e stá n d a r, e l c a n a l d e e m i r e s , u n m é to d o e x i t . y m u ­
C o n s tru y e un v a lo r S t r i n g B u f f e r sin c a ra c te re s y c o n u n a c a p a c id a d in ic ial de
c h o s m é to d o s d e s is te m a q u e n o >e u tilizan e n e s te te x to .
16 ca ra c te re s

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 )

e n u n a ristra d e o p e ra c io n e s. H ay »*tras o p e ra c io n e s i n s o r t d is p o n ib le s p a ra los D e v u e lv e la n ro n ie d a il d e l s iste m a in d ic a d a ñ o r la c la v e e sp e c ific a d a .


■t a t i c v o i d «xit ( i n t « t a t ú a ) C.1.8 Throwable
C o n c lu y e la e je c u c ió n d c l p ro g ra m a . Kl a rg u m e n to sirv e p a ra in d ic a r e l e s ta d o de
te rm in a c ió n ; p o r c o n v e n io , u n c ó d ig o d is tin to d e c e r o in d ic a u n a te rm in a c ió n L a c la s e T h r o w a b l e e s la supere lase d e uxi«»s l«»s e rro re s y e x c e p c io n e s e n e l le n ­
a n o rm a l. F.ste m é to d o n o te rm in a «le fo rm a n o rm a l. v n o p u e d e se r lla m a d o d e sd e g u a je Ja v a . Sól«* l«*s o b je to s q u e son in s ta n c ia s d e e s ta c la s e t«» «le a lg u n a d e sus
u n a p p le t. su b c la s e s ) p u e d e n se r lan z a d o s D e fo rm a sim ila r, s ó lo e s ta c la s e «> a lg u n a d e sus
su b c la se s p u e d e s e r e l lip«> d e l a r g u m e n to d e la c lá u s u la c a t c h . l" n o b je to
■ t a t i c v o i d g c< )
T h r o w a b l e c o n tie n e u n a in s ta n tá n e a d e la p ila d e e je c u c ió n «le su h e b ra e n e l m o ­
E je c u ta e l re c o le c to r d e b a su ra . L a lla m a d a a e s te m é to d o s o lic ita al s iste m a de
m e n to e n q u e é s ta fu e c re a d a T a m b ié n p u e d e c o n te n e r u n m e n s a je q u e d é m á s in-
e je c u c ió n q u e in v ie rta e sfu e rz o s e n re c ic la r «>bjet«>s q u e y a n o p u e d e n se r u tiliz a ­
fo m ia c ió n so b re e l e r r o r d e te c ta d o .
d o s. p a ra h a c e r q u e la m e m o ria q u e o c u p a n \ u c l \ a a e sta r d is p o n ib le . C u a n d o el
m é to d o te rm in a , e l s iste m a h a h e c h o to d o lo p o s ib le p o r lib e ra r e l e s p a c io d e los
o b je to s n o u tilizad o s. M étodos importantes
C.1.7 Thread Th r o w a b l e( )
C o n s tru y e u n n u e v o o b je to T h r o w a b l e sin m e n s a je . L a lia z a «le la p ila s e rellen a
l 'n a h eb ra e s un flu jo «le eje c u c ió n L n p a rtic u la r, un p ro g ram a. I n a a p lica c ió n p u e ­
a u to m á tic a m e n te
d e te n e r sim u ltá n e a m e n te d iv e rsa s h e b ra s e n e je c u c ió n . I.as h e b ra s se n e c e sita n en
la s a n im a c io n e s . E ste u s o d e la s h e b ra s s e d is c u te e n la s Secci«*nes D .4 y D 5 .5 . Throwable ( String ■••■age )
A q u í s ó lo s e e n u m e ra n lo s m c tix k ts q u e e s tá n re la c io n a r a s c o n a p lic a c io n e s d e C o n stru y e u n n u e v o o b je to T h r o w a b l e c o n e l m e n s a je e s p e c ific a d o . L a tr a z a d e
a n im a c ió n o q u e se h a n u tiliz a d o e n o tr o p u n to d e e s te libro. la p ila s e re lle n a a u to m á tic a m e n te .

M étodos im portantes String getMe««age( )


D e v u e lv e e l m e n s a je «leí «»bjeto.
T h r e a d ( R u n n a b l e t a r g e t )
String getLocalizedMe««age < )
C re a u n n u e v o o b je t o T h r r .i d . t a r g o t e s e l o b je to c u y o m é to d o r u n es e jec u tad o ,
D e v u e lv e u n a d e s c r ip c ió n lo c a liz a d a d e l o b je to . L a s s u b c la s e s p u e d e n s o b r e s c ri­
s t a t i c v o i d s l e e p ( l o n g m i l l i s e c o n d s )
b ir e s te m é to d o p a ra p ro d u c ir u n m e n s a je e s p e c ífic o P a ra las s u b c la s e s q u e no
H a c e q u e se d u e r m a (c e s e su e je c u c ió n ) la h e b ra q u e e s ta a c tu a lm e n te e n e je c u ­ lo s o b r e s c rib a n , la im p le m e n ta c ió n p o r d e le c to d e v u e lv e e l m is m o r e s u lta d o q u e
c ió n . d u ra n te e l n ú m e r o e s p e c if ic a d o d e m ilis e g u n d o s . L a n z a la e x c e p c ió n
getM essage.
í n t e r r u p t e d K x c e p t i o n m «*tra h e b ra y a h a interrum pid*» a é s ta E sta e x c e p c ió n
d e b e ría se r c a p tu ra d a . String toString ( )

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 .

H a c e q u e c o m ie n c e la e je c u c ió n d e la h e b ra . I«» q u e se c o n s ig u e lla m a n d o a l mét«>- voi d printStackTrac«{ )


d o r u n d e la h e b ra . L a n z a la e x c e p c ió n n i e g a l T h r e a d S t a t a E x c e p t i o n si la Im p rim e e l o b je to y su tra z a e n e l c a n a l d e e rr o re s e stán d ar.
h e b ra y a se e s tá e je c u ta n d o E sta e x c e p c ió n n o tie n e p o r q u é se r c a p tu ra d a .
v o i d s t o p ( )

D e tie n e la e je c u c ió n d e la h eb ra. S e p u e d e p a ra r u n a h e b ra q u e to d a v ía n o h a e m ­ C.2 C lases d el p aq u ete j a v a . i o


p e z a d o a e je c u ta rs e . S i la h e b ra e m p ie z a a e je c u ta rs e m á s ta rd e , te rm in a in m e d ia ­
tam en te. E ste p a q u e te c o n tie n e c la s e s p a ra m a n ip u la r fic h e ro s y c a n a le s d e e n tra d a salid a.
b o o l a a n i « A l i v « ( )
L a s c la s e s e s tu d ia d a s a q u í so n n u e v a s e n J a v a 1.1. e x c e p to la c la s e F i l e .

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 ( )

S u s p e n d e la h e b ra S i la h e b ra e s tá v iv a . e> s u s p e n d id a y \ u e je c u c ió n n«» p ro g re sa L ee te x to d e s d e un c a n a l d e e n tra d a d e c a ra c te re s, a lm a c e n a n d o l«*s c a ra c te re s en


h a s ta q u e s e re a n u d e e x p líc ita m e n te , un b u tf e r d e ta l fo rm a q u e la le c tu ra d e c a ra c te re s , v e c to re s y lín e a s >ea e fic ie n te .
v o i d r e s u a e ( ) S e p u e d e e s p e c ific a r e l ta m a ñ o d e l b u tf e r. «» s e p u e d e u tiliz a r un ta m a ñ o p o r d e ­
R e a n u d a la e je c u c ió n «le u n a h e b ra s u s p e n d id a S i la h e b ra e s tá v iv a p e r o s u s p e n ­ le c to . E n la m a y o ría d e las o c a s io n e s e l v a lo r p o r d e fe c to e s su fic ie n te . E n g e n e ­
d id a . la e je c u c ió n e s re a n u d a d a p e rm itié n d o s e q u e h a g a p ro g re so s e n ella. ral. c a d a p e tic ió n «le lectu ra so b re u n R e a d e r p ro v o c u la c o rre s p o n d ie n te lectu ra
en e l c a n a l d e en tra d a . P o r ta n to , c u a n d o la o p e r a c ió n d e le ctu ra p u e d a se r c o s t o ­ S tr in g g e tP a th t )
sa. e s a co n seja b le e n v o lv e r el R e a d e r c o n u n B u f f e r e d R e a d e r . c o m o un D e v u e lv e e l n o m b re d e la ru ta d e l fic h e ro representad»! p»>r e l o b je to ,
F ileR ea d er o In p u tS trea m R ea d er.
b o o la a n « x i s t s ( )

Métodos importantes D e v u e lv e t r u e si y s ó l o si e l fic h e ro especificad»» ex iste.

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 ( )

L e e u n a lín e a tic te x to . S e c o n s id e ra q u e u n a lín e a te rm in a c o n u n c a rá c te r d e fin


C.2.3 FileReader
d e lín e a ( • \ n •). u n s a lto d e c a r r o ( • \ r • ) o u n s a lto d e c a rro se g u id o in m e d ia ta ­
m e n te p o r u n fin d e línea. D e v u e lv e u n a c a d e n a q u e c o n tie n e la lin c a, sin in clu ir
P i l e R e a d e r e s u n a c la s e c u y o liso re s u lta c o n v e n ie n te p a ra leer fic h e ro s d e c a ­
lo s c a ra c te re s d e te rm in a c ió n , o n u i l si se lia lle g a d o al final d e l llu jo . L a n z a la
ra c te re s E sta c la s e e x tie n d e R e a d e r . p e to su s m é to d o s n o d e b e ría n s e r u tiliz a d o s
e x c e p c ió n l O E x c e p t i o n si se p ro d u c e u n e rr o r d e E S.
d ire c ta m e n te . P ara h a c e rlo 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 clase
b o o l e a n r e a d y ( ) B u f f e r e d R e a d e r . ta n to p o r e fic ie n c ia c o m o p a ra a s í p tn ic r lla m a r a r c a d L i n e .
In h u m a sobre si e l c a n a l e s tá p re p a ra d o p a ra ser le íd o U n a se c u e n c ia d e c a ra c te re s
e n un h u ff e r e s tá lista si e l b u ffe r n o e s v a c ío o si la sec u en c ia d e c a ra c te re s su b y a ­ Métodos importantes
c e n te e s tá lista, l- a n /a la e x c e p c ió n l O E x c e p t i o n si se p ro d u c e u n e rr o r d e E S.
F il« R « a d e r ( S t r i n g file n a s » » )
v o i d c l o a e ( )
C o n s tru y e u n o b je to F i l e R e a d e r p a ra e l n o m b re d e fic h e ro d a d o l a n z a la e x ­
C ie rra e l can al. 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 se p ro d u c e u n e rro r d e E S.
c e p c ió n F i le N o t r o u n d E x c e p t io n si e l fichen» n o s e p u e d e ab rir.

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

E l c a rá c te r s e p a ra d o r d e d ire c to rio s d e p e n d ie n te d e l siste m a . E ste c a rá c te r se p a ra


e l d ir e c to r io d e l m im b re d e l fic h e ro .
Métodos importantes
In p u tS tre a m R e a d e r ( In p u tS tre a m i n )
Métodos importantes U rc a u n o b je to in p u t S t r e a m R e a d o r a p a rtir d e l I n p u t S t r e a m d a d o . U n
I n p u t S t r e a n típ ic o e s S y s t e m . i n i .
P i l e t S t r i n g n t M )

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 )

C o n s tru y e u n S t r i n g T o k e n i z e r p ara la c a d e n a e sp e c ific a d a . U tiliz a e l c o n ju n to


Se u tiliz a u n a in s ta n c ia d e e s ta c la s e p a ra g e n e ra r u n a s e c u e n c ia «le n ú m e ro s p seu -
de s e p a ra d o re s p o r d e fe c to , e l c u a l e s * \ t n \ r * : e l e s p a c io e n b la n c o , e l c a rá c te r
d o a le a to rio s. I.a c la s e u tiliz a una se m illa d e 4X h its, la c u a l se im x lific a u tiliz a n d o
tabulad«»r. e l c a rá c te r d e n u e v a lín e a y e l c a rá c te r d e salu* d e línea.
una fó rm u la d e c o n g ru e n c ia lin eal (d a d a a l fin al «le la S e c c ió n 9 .2 ). S i s e c re a n
c o n la m ism a s e m illa d«*s in s ta n c ia s «le la c la s e Random y s e re a liz a s o b r e c a d a S t r i n g T o k e n i z e r ( S t r i n g i t r , S t r i n g d e l i m )

u n a la m is m a se c u e n c ia d e o p e ra c io n e s , g e n e ra rá n y d e v o lv e rá n la m is m a se c u e n ­ C o n s tru y e u n S t r i n g T o k e n i z e r p a ra la c a d e n a e sp e c ific a d a . T o m a c o m o sepa-


c ia d e n ú m ero s. ra d o re s lo s c a ra c te re s e n e l a rg u m e n to d o l Lm.
St r i n g Toke n i z e r ( S t r i n g s t r , S t r i n g d e l i m , b o o l e a n r e t u r n T o k e n s )

Métodos importantes C o n s tru y e un S t r i n g T o k e n i z e r p a ra la c a d e n a e sp e c ific a d a . L o s c a ra c te re s e n


e l a rg u m e n to d e l im so n lo s se p a ra d o re s. S i r e t u r n T o k e n s e s t r u e . lo s c a ra c te ­
R a n d o m ( )
re s se p a ra d o re s ta m b ié n se d e v u e lv e n c o m o to k e n s ; c a d a s e p a ra d o r se d e v u e lv e
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. L a s e m illa s e in ic ia li/a c«*n un c o m o u n a c a d e n a d e lo n g itu d u n o . S i es f a l s e . lo s c a ra c te re s s e p a ra d o re s s e s a l­
val«>r b a s a d o e n la h o ra a ctu a l. ta n y s irv e n , ú n ic a m e n te , p a ra se p a ra r to k en s.
booleanhasM oroT okens( )
A P É N D I C E _______________________________________________________________________
D e v u e lv e t r u e si y s ó lo si h a y m á s to k e n s d is p o n ib le s e n la cad e n a .
S t r i n g n e x t T o k e n l )

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 )

H a c e q u e la c o m p o n e n te d e l v e c to r e n la p o s ic ió n in d ic a d a s e a e l o b je to d a d o . La D. 1 El Abstract W indow Toolkit


c o m p o n e n te a n te r io r e n e s a p o s ic ió n e s d e s c a rta d a . L a p o sic ió n d e b e se r un v alo r
m a y o r o ig u al q u e 0 y m e n o r q u e e l ta m a ñ o a c tu a l d e l v ecto r. E n o tro c a so , se la n ­ E l A b s tr a c t W indow T o o lk it (A W T ) e s u n c o n ju n to d e u tilid a d e s G U I in c lu id o en El >
z a la e x c e p c ió n 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 . roí
to d o s lo s s is te m a s Ja v a . E stá c o m p u e s to p o r las c la s e s b á s ic a s q u e p e rm ite n d is e ­
co
v o i d s e t S i z e ( i n t n o v /S iz e ) ñ a r in te rfa c e s d e u su a rio . D ic h a s c la s e s se e n c u e n tra n e n e l p a q u e te j a v a . a w t . El
Util
E sta b le c e e l ta m a ñ o d e l v e c to r. S i e l n u e v o ta m a ñ o e s m a y o r q u e e l a c tu a l, s e a ñ a ­ A W T e s p o rta b le y fu n c io n a e n m u ltitu d d e p la ta fo rm a s. S u u so e s s e n c illo si se nr
d e n n u e v o s e le m e n to s n u i l a l fin a l d e l v e c to r. S i e l n u e v o ta m a ñ o e s m e n o r q u e p re te n d e d is e ñ a r in te rfa c e s s im p le s. G ra c ia s a é l . las G U I p u e d e n im p le m e n ta rse sb i
e l a c tu a l, se d e sc a rta n to tla s la s p o sic io n e s d e s d e n e w S i z e . sin re c u rrir a a y u d a s d e d e s a rro llo v is u a l, y su p o n e u n a m e jo ra im p o rta n te sobre

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

en un programa GUI. el flujode control es menos evidente. El programador debe


suministrar el manejador de eventos empleado en la ejecución de algunos frag­
mentos de código. Figura D.2 Je ra rq u ía re d u cid o del AWT.
Java 1.0 incluía un modelo de eventos que era bastante complejo de manejar.
En Ja\a I I ha sido sustituido por un modelo de eventos más robusto y sencillo.
Como era de esperar, los dos modelos no son completamente compatibles. Más D.2.1 C o m p o n en »
concretamente, un compilador de Java 1.0no puede compilar código que haga uso
del nuevo modelo de exentos. Por su parte, loscompiladores de Java I I muestran 1.a clase C o m p o n e n t es una clase abstracta, superelaso de muchos objetos del
mensajes ante el uso de lasconstrucciones de Java 1.0. Sin embargo, el código de AWT. Debido a que es abstracta, no puede distanciarse. Un objeto de la clase
Java 1.0ya compilado sí puede ejecutarse sin problemas en un intérprete de Java C o m p o n e n t representa un elemento que tiene una posición y un tamaño, y puede
l.l. En esteapéndice sólo se describe el nuevo modelo de eventos. dibujarseen la pantalla, además de aceptar eventos de entrada. En la Figura 0.2 se
La Figura 1)1 muestra algunos de loselementos básicos incluidosen el AWT. muestran algunos ejemplos de objetos de esta clase.
Entre ellos están C h o i c e (se ha seleccionado C ir c le ) . un elemento de tipo L i s t La clase C o m p o n e n t contiene multitud de métodos. Algunos de ellos pueden
(se ha seleccionado r e d ), campos de texto de tipo T e x L K i e l d . campos de confir­ emplearse para especificarel color o el tipo de fuente: otras se usan para manipu­
mación C h e c k b o x y un botón de tipo B u t t o n (cuyo nombre es D r a w ). Al lado lareventos. Algunos de los métodos más importantes son
del botón puede verse un campo de textoempleado únicamente para lasalida (por void p a in t ( G raphics g ) ;
esta ra/ón es más oscuro que los campos de texto que hay sobre él).En laesquina void s e tS iz e ( in t w idth, in t h eight ) ;
superior izquierda ha> un objeto de la clase C a n v a s . empleado para dibujar y v oid setB ackground ( C olor c ) ;
aceptar laentrada a través del ratón.
void setF ont < Font f ) ;
Este apéndice describe la organización básica del AWT. En primer lugar, se v o id show( ) ;
explican diferentes clases de objetos, cómo pueden emplearse para realizar la en­
trada \ la salida, cómo organizados y cómo se manejan losdistintoseventos. Iras Normalmente, el método p a i n t se asocia a objetosde tipoC a n v a s . Se descri­
ello, se describe el concepto relacionado de applet. por medio del cual se descarga be en la Sección D.3.2. El método s e t S i z e 3 se emplea para cambiar el tamaño
un programa de Internet y se ejecuta en un browser como Netscape Navigator o de un objeto. Funciona sobre objetos de laclase C a n v a s . pero no debe invocarse
Internet Explorer. sobre objetos que tengan configuración automática, como los de tipo B u t t o n . Los
métodos s e t B a c k g r o u n d y s e t F o n t se usan para modificar el color del fondo )
el tipode letra asociados a un objeto de laclase C o m p o n e n t . Necesitan, respecti­
D.2 Elem entos básicos d el AWT vamente. un objeto de lasclases C o l o r y F o n t . I’or último, el método s h o w con­
vierte una componente en visible. Su uso típico se realiza sobre un F r a m e .

El A W T se organiza empleando una jerarquía de herencia de clases. En la Figu­


ra D.2 se muestra una versión reducida de esta jerarquía, ya que no se muestran D.2.2 Container
algunas clases intermedias. Por ejemplo, en lajerarquía completa. T e x t F i e l d y
T e x t A r e a extienden la clase T e x t C o m p o n e n t , mientras que no se muestran La clase c o n t a i n e r es la superclase abstracta que representa todas las compo­
muchas clases de las relacionadas con fuentes de letras, colores, y otros objetos nentes que pueden contener a otras. Un ejemplo de subclase es la clase w i n d o w .
de lajerarquía de C o m p o n e n t . I.asclases F o n t y C o l o r , definidas en el paquete
j a v a . a w t . extienden laclase O b j e c t . * L n J a v a I I . e l m¿t«xl<> s e r S i r c M i t ti l u v e a r e s l s e .
q u e re p r e s e n ta la s v e n ta n a s d e a lto n iv e l. T a l y c o m o m u e s tra la je r a r q u ía de 1 import java.awt.1;
h e re n c ia , u n C o n t a i n e r E S -U N (A ) C o m p o n e n t . U n a in sta n c ia p a rtic u la r d e la 2
c la s e C o n t a i n e r a lm a c e n a rá u n a c o le c c ió n d e o b je to s d e la c la s e C o m p o n e n t . 3 public class FileDialogTcst

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

T al y c o m o m u e s tra la F ig u ra D .2 . e x iste n d o s tip o s d e o b je to s C o n t a i n e r : la s F i g u r a D.3 Prog ram a d e la Figura 2.11 a d a p ta d o p a ra em p le ar u n a GUI.


v e n ta n a s d e a lto n iv e l W i n d o w y lo s o b je to s d e la c la s e P a n e l . W i n d o w e s tá e s p e ­
c ia liz a d a e n v a ria s e n tid a d e s d e a lto n iv el. E x iste n c u a tr o tip o s b á sic o s d e v e n ta ­
n as d e a lto nivel: ü itifa _2J*J

1. window: v e n ta n a d e a lto n iv e l sin b o rd e.


Loor, jn ~3 fcj a ] ÍTTjiiJ
2. Frame: v e n ta n a d e a lto n iv e l c o n b o rd e y u n a b a rra d e m e n ú s a so c ia d a j0 5 « - 2JK -17
U re d b is c k
(p e rte n e c e a la c la s e M e n u B a r J ).
3. D i a l o g : v e n ta n a d e a lto n iv e l e m p le a d a p a ra c re a r d iá lo g o s ; u n a su b c la se h13
su y a es F i l e D i a l o g . ►1 3

4. FileDialog: v e n ta n a d e a lto n iv e l u tiliz a d a c u a n d o se n e c e s ita m o stra r •2PP


una lista d e lo s a rc h iv o s d e u n d ire c to rio .

U n a a p lic a c ió n q u e e m p le a u n a in te rfa z G U I d e b e te n e r u n F r a m e (o u n a c la s e fíe ñame Qpen


q u e e x tie n d a a F r a m e ) c o m o c o n te n e d o r m á s e x te rn o . L a F ig u ra 2 .1 1 m u e s tra un Ftei cá •><)« ~3 Cancel
p ro g ra m a q u e e n u m e ra e l c o n te n id o d e lo s fic h e ro s c u y o s n o m b re s s e e sp e c ific a n
e n la lín e a d e c o m a n d o s . E n u n a a p lic a c ió n G U I. e l n o m b re d e l fic h e ro d e b e e s p e ­
Fi gur a D.4 Salid a d e l p rogram a F i l e D i a l o g T e s t d e la Figura D.3.
c ific a rse e n u n o b je to d e tip o f í l e D i a l o g . L a F ig u ra D .3 m u e s tra u n a G U I s e n ­
c illa q u e u sa u n o b je to d e la c la s e F i l e D i a l o g p a ra o b te n e r e l n o m b re d e l fic h e ­
ro d e en tra d a . C o m o a n te s , la lista s e e n v ía a la sa lid a e s tá n d a r, a u n q u e d e v u e lv e e l n o m b re d e l fichen» s e le c c io n a d o (o n u l 1 si la p e tic ió n h a s id o c a n c e ­
e v id e n te m e n te . ixxlría e n v ia rs e a u n a c o m p o n e n te G U I d e salida. la d a ). Ln la lín e a 18. in v o c a m o s a l m é to d o l i s t F i l e d e s d e la c la s e im p lc m c n ta -
E n la lín e a I d e la F ig u ra D .3 s e im p o rta n to d a s la s c la s e s d e l p a q u e te d a e n la F ig u ra 2 . 1 1 '.
j a v a . a w t . L a rutina m a i n c o m ie n z a c re a n d o y m o stra n d o un n u e v o F r a m e £ c n E ste e je m p lo m u e s tra q u e c n J a v a c s s e n c illo p ro g ra m a r c o s a s p o c o c o m p lic a ­
la s lín e a s 9 y 10. R e c o rd e m o s q u e e n to d a a p lic a c ió n G U I d e b e c re a rs e u n F r a m e . d as. I.o s o b je to s d e tip o D i a l o g (al c o n tra rio d e lo q u e s u c e d e c o n lo s o b je to s e s ­
Y a q u e d e m o m e n to n o h e m o s h e c h o nada m á s . el F r a m e n o tie n e ta m a ñ o , n o c o n ­ p e c ia le s d e F i l e D i a l o g ) so n m á s d ifíc ile s d e p ro g ra m a r. E s to e s d e b id o a q u e el
tien e n in g u n a c o m p o n e n te y c o n siste ú n ic a m e n te e n una barra d e m e n ú s e n la p arte m é to d o s h o w d e la c la s e F i l e D i a l o g n o d e v u e lv e n a d a h a s ta q u e n o se h a y a s e ­
su p erior. A c o n tin u a c ió n , e n la lín ea 13. c re a m o s u n F i l e D i a l o g d . a so c ia d o le c c io n a d o u n fic h e ro . A sí. e n la lín e a 17. u n a a c c ió n c u a lq u ie ra e n F i l e D i a l o g
a l F í a m e £ . c u y o n o m b re e s L is t F ile y s u a c c ió n e s L O A D . Hl re s u lta d o d e la lí­ se h a r e a liz a d o s ó lo c u a n d o g e t F i l e te rm in a . E n la c la s e D i a l o g . e l m é to d o
n e a 14 s e m u e s tra e n la F ig u ra D .4 . l . a lla m a d a e n la lín e a 17 al m é to d o g e c F i l e s h o w re to rn a in m e d ia ta m e n te . IX- este m o d o , la lla m a d a p a ra e x a m in a r la acción

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

L a b e 2 e s u n a c o m p o n e n te u tiliz a d a p a ra c o lo c a r te x to e n un c o n te n e d o r. S u uso L ist


p rin c ip a l e s e tiq u e ta r o tr a s c o m p o n e n te s c o m o C h o i c e , L i s t . T e x t F i e l d o
P a n e l (m u c h a s o tr a s c o m p o n e n te s y a m u e s tra n su n o m b re d e a lg ú n m o d o ). E n la 1.a c o m p o n e n te L i s t p e rm ite la s e le c c ió n d e u n a c a d e n a d e c a ra c te re s d e en tre
F ig u ra D I. la s fra se s S h a p e . X C a o r e >' C a a r so n e tiq u e ta s . L o s o b je to s d e la c la ­ u n a lista d e s p le g a d a d e ellas. E n la F ig u ra D . I la e le c c ió n d e lo s c o lo re s se p re s e n ­
se L a b e l se c o n s tru y e n c o n u n a c a d e n a d e c a ra c te re s o p c io n a l q u e p u e d e m o d ifi­ ta e n fo rm a d e lista. L o s o b je to s d e la c la s e L i s t s e d is tin g u e n d e lo s o b je to s d e la
c a rs e c o n e l m é to d o s e t T e x t . L o s m é to d o s so n c lase c h o i c e p o r tre s d e ta lle s:

L a b e l ( ); 1. L o s o b je to s d e la c la s e L i s t p u e d e n c o n fig u ra rs e d e m o d o q u e p erm itan


Label ( S trin g theL abol ) ; s e le c c io n a r u n o o v a rio s ele m e n to s.
void setT ex t { S trin g theL abel ) ; 2. L o s o b je to s d e la c la s e L i s t p e rm ite n a l u s u a rio v e r v a ria s o p c io n e s al
m ism o tiem p o .
3. L o s o b je to s d e la c la s e L i s t o c u p a n m a y o r e s p a c io e n la p a n ta lla q u e los
Button
d e la c la s e c h o i c e .
L o s m é to d o s b á s ic o s d e e s ta c la s e son
L a c la s e B u t t o n s e e m p le a p a ra c re a r b o to n e s c o n e tiq u e ta . L a F ig u ra I). I c o n tie ­
ne u n o d e e llo s, c u y a e tiq u e ta e s D r a w . C u a n d o se p u ls a un o b je to d e la c la s e L is t( );
B u t t o n . se g e n e ra u n e v e n to . L a S e c c ió n D .3 .3 d e s c rib e c ó m o s e p ro c e s a n e sto s L is t ( i n t row s, b o o ie a n m u i t i p l e S e l e c t i o n s );
e v e n to s . L a in te rfa z B u t t o n e s sim ila r a L a b e l . M á s c o n c re ta m e n te , u n o b je to d e v o id addltem < S trir.g ite m ) ;
la c la s e B u t t o n s e c o n s tru y e c o n u n a c a d e n a d e c a ra c te re s o p c io n a l. E sta e tiq u e ta S trin g g etS electedltem (
p u e d e m o d ific a rse c o n e l m é to d o s e t T e x t . L o s m é to d o s so n String [ J g e t S e l e c t e d l t e m s ( );
v o id s e l e c t ( i n t index ) ;
B utton( ) ;
B u t t o n < S t r i n g t h e L a b e l >; U n o b je to d e L i s t se c o n s tru y e sin p a rá m e tro s o c o n d o s d e e llo s. E l c o n s ­
v oid se tT e x t ( S trin g theL abel ); tru c to r c o n d o s p a rá m e tro s e s p e c ific a e l n ú m e ro v is ib le d e fila s (e n o tr a s p alab ras,
e l n ú m e ro d e lila s q u e se m o strarán » y un b o o le a n o q u e d e te rm in a si s e p e rm ite n
se le c c io n e s m ú ltip le s. L o s m é to d o s a d d l t e m . g e t s e l e c t e d l t e m y s e l e c t tie ­
Choice
n e n e l m ism o c o m p o rta m ie n to q u e lo s m é to d o s c o rre s p o n d ie n te s d e la c la s e
c h o i c e . g e t S e l e c t e d i t c m d e v u e lv e n u i l si n o se se le c c io n a n in g ú n e le m e n to
L a c la s e C h o i c e se e m p le a p a ra s e le c c io n a r u n a s o la c a d e n a d e c a ra c te re s d e e n ­ o b ie n s e se le c c io n a m á s d e uno. g e t S e l e c t e d l t e m s s e e m p le a p a ra tra ta r s e le c ­
tre u n a lista d e sp le g a b le d e e lla s. S ó lo p o d e m o s se le c c io n a r c a d e n a s e n la lista y c io n e s m ú ltip le s ; d e v u e lv e u n v e c to r d e c a d e n a s d e c a ra c te re s c o rre sp o n d ie n te a
e n c a d a m o m e n to s ó lo s e p u e d e re a liz a r u n a ú n ic a e le c c ió n . L n la F ig u ra I). I el los e le m e n to s s e le c c io n a d o s . A l ig u al q u e e n e l c a s o d e C h o i c e . e m p le a n d o o tro s
tip o d e t h e S h a p e e s un o b je to C h o i c e : e n e s te m o m e n to la o p c ió n e le g id a e s m é to d o s p ú b lic o s se p u e d e n o b te n e r ín d ic e s e n lu g a r d e c a d e n a s d e c a ra c te re s.
C irc le . A lg u n o s d e lo s m é to d o s d e e s ta c la s e son

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

Canvas U n c o n f i g u r a d o r o rg a n iz a d e fo rm a a u to m á tic a las c o m p o n e n te s d e n tr o d e u n c o n ­ Ele


te n e d o r Se a so c ia a u n c o n te n e d o r m e d ia n te e l c o m a n d o s e t L a y o u t . U n e je m p lo org
U n a c o m p o n e n te C a ti v a s re p re s e n ta u n á re a d e la p a n ta lla , re c ta n g u la r y e n b la n ­ OU
d e su u so e s la lla m a d a co
c o . e n la q u e la a p lic a c ió n p u e d e d ib u ja r. L o s g rá f ic o s m á s se n c illo s se d e sc rib e n
de
e n la S e c c ió n D .3 .2 . U n o b je to d e la c la s e C a n v a s ta m b ié n p u e d e re c ib ir d a to s de s e t L a y o u t < n e w F l o w L a y o u t < ) >;
c c m

e n tra d a d e l u s u a rio e n fo rm a d e e v e n to s p ro d u c id o s p o r e l ra tó n o e l te c la d o . L o s O b s e rv e q u e n o se n e c e sita g u a rd a r u n a re fe re n c ia a u n c o n fig u ra d o s E l c o n te n e ­ co


e le m e n to s d e e s ta c la s e n u n c a se e m p le a n d ire c ta m e n te : el p ro g ra m a d o r d e fin e ase
d o r s o b r e e l q u e s e a p lic a e l c o m a n d o s e t L a y o u t lo h a c e , a lm a c e n á n d o lo co m o
u n a su b c la se d e C a n v a s c o n la fu n c io n a lid a d a d e c u a d a . L a su b c la s e d is e ñ a d a d e ­ co
un a trib u to p riv a d o . C u a n d o se e m p le a u n c o n fig u ra d o r. n o fu n c io n a n m u c h a s p e ­ me
be s o b re s c rib ir e l m éto d o tic io n e s p a ra c a m b ia r e l ta m a ñ o d e a lg u n a s c o m p o n e n te s , c o m o los b o to n e s , y a se
void p a in t ( G raphics g ) ; q u e e l c o n fig u ra d o r e sc o g e su s p ro p ia s d im e n s io n e s . Ua id e a e s q u e e l c o n fig u ra ­
d o r d e te rm in a rá las d im e n sio n e s id eales p a ra sa tisfa c e r las e sp e c ificacio n es.

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

v a ria s lín e a s y su fu n c io n a lid a d e s sim ila r. P o r e s te m o tiv o , e n e s ta s e c c ió n só lo co


c o n fig u ra e m p le a n d o F l o w L a y o u t . su s c o m p o n e n te s se a ñ a d e n e n u n a tila de
c o n sid e ra m o s la c la s e T e x t F i e l d . P o r d e fe c to , e l te x to p u e d e s e r e d ita d o p o r el F.
iz q u ie rd a a d e re c h a . C u a n d o n o q u e d a e s p a c io lib re e n u n a fila , s e fo rm a u n a añ
u su a rio , p e ro e s p o sib le c o n v e rtirlo e n n o e d ita b le . E n la F ig u ra I). I a p a re c e n tre s
n u e v a . P o r d e fe c to , c a d a lila e s tá c e n tr a d a . E s to p u e d e m o d ific a rs e e s p e c if ic a n ­ co
o b je to s d e tip o T e x t F i e l d : d o s p a ra l a ' c o o rd e n a d a s y u n a te rc e ra , n o ed ita b le
d o u n p a rá m e tr o a d ic io n a l e n e l c o n s tr u c to r c o n e l v a lo r F l o w L a y o u t . L E F T o un
p o r e l u su a rio , q u e se e m p le a p a ra lo s m e n s a je s d e e rro r. E l c o lo r d e fo n d o d e un u
F 1o w L a y o u t . R I G H T .
c a m p o d e te x to n o e d ita b le e s d is tin to del d e u n c a m p o d e te x to e d ita b le . A lg u n o s
El p ro b le m a a l e m p le a r e s te c o n fig u ra d o r a p a re c e c u a n d o u n a fila s e ro m p e en
d e lo s m é to d o s m á s u su a le s d e e s ta c la s e son
un lu n a r in a d e c u a d o . P o r e je m p lo , si u n a fila e s d e m a s ia d o co rta , p u e d e p ro d u c irse
T extF ield { ) ; u n a se p a ra c ió n e n tr e u n o b je to d e tip o L a b e l y o tr o d e tip o T e x t F i e l d . au n q u e
T extF ield! in t c o is ) ; a m b o s d e b a n a p a re c e r ju n to s . U n a fo rm a d e ev ita r e s ta s c o m p lic a c io n e s e s c re a r
T extF ield! S trin g te x t, int c o is ) ; u n P a n e l c o n e s o s d o s e le m e n to s y a ñ a d ir d e s p u é s d ic h o P a n e l al c o n ten e d o r.
S trin g getT ext < ) ; O tro p ro b le m a q u e p re s e n ta F l o w L a y o u t e s a lin e a r v e rtic a lm e n te lo s o b je to s.
v o i d s e t E d i t a b l e I b o o l e a n e d i t a b l e >; El c o n fig u ra d o r F lo w L a y o u t e s e l e m p le a d o p o r d e f e c to e n un o b je to d e tip o
void setT ex t ( S trin g te x t ) ; P a n e l.
BorderLayout 1 / / S i t ú a todo* Ion objeto *
2 p r i v a t e v o id doTheLayout( 1
i
E l c o n fig u ra d o r B o r d e iL < iy o u c e s e l q u e s e e m p le a p o r d e Ic e lo c o n o b je to s d e la P a n e l t o p H a l f = new P a n e l < );
4
je r a rq u ía W i n d o w . c o m o F r a m e o D i a l o g . C o n fig u ra un c o n te n e d o r s itu a n d o m i s 5 P a n e l b o t t o m H a l f = new P a n e l ( );
c o m p o n e n te s e n c in c o p o s ic io n e s p re d e te rm in a d a s. P a ra q u e e s to su c e d a , e l m é to ­ A

d o a d d d e b e e m p le a rs e c o n u n se g u n d o p a rá m e tro c u y o v a lo r d e b e s e r * N o r t h - . 7 / / C oloca la prim era m itad


8 t o p H a l f . * © t L a y o u t ( ne w F l o w L a y o u t l 1 >;
■ S o u t h * . * E a 8 i * . " W e st" o " C e n t e r * . L a F ig u ra D .7 m u e s tra c in c o b o to n es 9 t o p H a l t . a d d I t h e C a n v a s >;
a ñ a d id o s e n un F r ame e m p le a n d o B o r d e i L a y o u t . F.l c ó d ig o p a ra g e n e ra r e s ta c o n ­ 10 t o p H a l f . a d d l new L a b e l ( * S h a pe* 1 )
fig u ració n s e m u e s tra e n la F ig u ra 1X8. N o rm a lm e n te , a lg u n a d e la s c in c o p o sic io ­ 11 t o p H a l f . a d d t t hvShap* I ;
n e s q u e d a v acan te. A d em as, la s c o m p o n e n te s e m p le a d a s su e len se r o b je to s d e tip o 12 t o p H a l f . a d d t t h e C o l o r );
13 t o p H a l f . a d d t n e w L a b e l ( *X r o o r " » 1 r
P a n e l q u e c o n tien en o tra s c o m p o n e n te s sig u ie n d o c o n fig u ra c io n e s d iferen te s 14 t o p H a 11 . a d d ( t h e X C o o r 1;
C o m o e je m p lo , e l c ó d ig o d e la F ig u ra I) V m u e s tra c ó m o s e o rg a m /a n lo s o b ­ 15 r o p H a l f . a d d ( new I - a b e 1 ( *Y c o o r ' ) x ) ;
je to s d e la F ig u ra D . I. A q u í s e tie n e n d o s Illa s , p e ro d e s e a m o s a se g u ra r q u e las 16 t o p H a l f . a d d t thaYCoor );
17
c a ja s d e c o n firm a c ió n , lo s b o lo n e s . y las c a ja s d e s a lid a d e te x to se e n c u e n tra n d e ­ II Coloca la segunda m itad
18
b a jo d e l re s to d e la G U I P ara e llo , la id e a e s c re a r d o s o b je to s d e la c la s e P a n e l, 19 b o t t omHa1 f . s e t L a y o u t t new F l o w L a y o u t ( ) );
u n o q u e c o n tie n e lo s e le m e n to s d e la p a rte s u p e r io r y o tr o q u e c o n tie n e lo s d e la 20 bottcxnHaif . a d d t s m a l l P i c );
p arte in fe rio r. L o s p a n e le s se c o lo c a n u n o e n c im a d e o tro , c o n fig u rá n d o lo s m e ­ 21 b o t t o m H a l f . a d d t m e d i u m P i c >;
22 b o t t o m H a l f . a d d t l a i y e P i c >;
d ia n te B o r d e r L a y o u t . 23 b o t t o m H a l f . a d d t t h e F i l l B o x 1:
I-as lín e a s 4 \ 5 c re a n d o s o b je to s d e tip o P a n e l. t o p H a l í y b o t t o m H a lf . 24 b o t t o m H a l f . a d d t th e D ra w B u tto n );
C a d a u n o d e e sto s o b je to s se c o n fig u ra n in d e p e n d ie n te m e n te u s a n d o F lo w L a y o u t . 25 b o t t o m H a l f . a d d t th e M e s s a g e ) ;
26
O b s e rv e q u e lo s m é to d o s s e t L a y o u t y a d d s e a p lic a n al P a n e l a p ro p ia d o . D e b i­ I I C o n f i g u x a c l ó n d e l a GUI
27
d o a q u e e s to s p a n e le s s e c o n fig u ra n c o n F lo w L a y o u t . p u e d e n c o n s u m ir m á s de 28 * © t L a y o u t ( n e w B o r d e r L a y o u t t 1 >;
u n a fila y n o te n e r su fic ie n te e s p a c io lib re d isp o n ib le . E s to p ttd ria c a u s a r u n a sep a- 29 a d d t t o p H a l f . ’ N o rth * ) ;
30 a d d t b o t t o m H a l f . 'S o u th * > ;
31 >
f e UnMkd T í-J *|
Figuro D 9 C ó d ig o q u e c o n fig u ro los o b je to s d e lo Figura D 1

ra c ió n e n tre lo s o b je to s d e tip o L a b e l y lo s d e tip o T e x t F i e l d . S e d e ja c o m o


e je rc ic io a l le c to r la c r e a c ió n d e o b je to d e tip o p a n e l a d ic io n a le s p u ra aseg u rar
q u e n o se p ro d u c e n e s ta s se p a ra c io n e s e n tr e u n a e tiq u e ta y su c o m p o n e n te c o rr e s ­
Figuro D.7 C m c o b o to n e s o r g o n u o d o s p o r B o r d e r L a y o u t
p o n d ie n te . L 'na v e / q u e lo s p a n e le s h a n sid o g e n e ra d o s s e e m p le a B o r d e r L a y o u t
1 irport jA va.avt. • ¡ p a ra a lin e a rlo s E s to s e h a c e e n las lín e a s 28 a .V). O b s e rv e q u e la s c o m p o n e n te s
2 d e lo s d o s o b je to s e s tá n c e n tra d a s . É ste e s e l re s u lta d o d e F lo w L a y o u t . P a ra a li­
3 n G a ñ e r a l a F i g u r a D.7 n e a r a la iz q u ie rd a e l c o n te n id o d e los p a n e le s, las lín e a s 8 y 19 p o d ría n c o n s tru ir
4 p u b l i c c l a s s B o r d e r T e s t e x t e n d s Fí ame e l o b je to F lo w L a y o u t c o n e l p a rá m e tro a d ic io n a l F lo w L a y o u t . L E F T .
5 {
C u a n d o se e m p le a B o r d e r L a y o u t y lo s m é to d o s a d d s e u lili/a n sin c a d e n a s
6 public static v o i d ra a in t S t r i n g [ ) args )
7 d e c a ra c te re s , la p o s ic ió n p o r d e fe c to e s ’ C e n t e r *. S i s e e s p e c ific a un S t r in g .
8 Fíame f ■ new B o r d a r T e s t t »; p e ro n o e s n in g u n o d e lo s c in c o m e n c io n a d o s, se la n z a u n a excepción'*.
9
10 f . s e t L a y o u t < n e w B o r d e r L a y o u t ( ) >;
11 í.addt r.ew B u t t o n l ' N o r t h * I . ’ N o r t h * >; El configurador n u l 1
12 f.addt new B u t t o n l * E a s t" ) . ’ E a s f >
13 f . a d d ( new B u t t o n l ' S o u t h * ) . " S o u th * I ;
14 f.addt ne w B u t t o n l "Wes t* ) . " W e s t " I ; L l c o n fiR u rtu io r n u l i s e e m p le a p a ra situ a r lo s e le m e n to s e n u n a p o s ic ió n e x acta
15 f . a d d t new B u t t o n l " C e n t e r * ) . ’C e n t e r * ); E n e s te c o n fig u ra d o r. c a d a o b je to se in c lu y e e n e l c o n te n e d o r e m p le a n d o a d d Su
16 ta m a ñ o y p o s ic ió n s e a c tu a liz a n m e d ia n te u n a lla m a d a a l m é to d o s e t B o u n d s :
17 f.packl >; // Re du ce e l m a r c o a l t a m a ñ o mínimo
15 l.show l )j // M u e s t r a e l marco v o i d H o tB o u n d n t i n t x . i n t y . i n t w id t h . i n t h e ig h t )
19
20 >
■ T o n g a e n a t r n U q u e e n l a s a 1 O . I m w p m c i * » d e -<*> « M a n « v e r t í * » , y U » c a d en a » d e c a rá c te r *
■ a t o r a d a * . l o q u e d i f k u K a l a d e p u r a n d o . I-M c e M ll o a u n s e p e r m i l e . p e r o s e d e s a c o n s e j a
A q u í x c y re p re s e n ta n la p o sic ió n d e l e x tr e m o su p e rio r iz q u ie rd o d e l o b je to c o n E n J a v a la s c o o rd e n a d a s so n re la tiv a s a l e x tr e m o su p e rio r iz q u ie rd o d e la En
re s p e c to a l e x tr e m o s u p e r io r iz q u ie rd o d e su c o n te n e d o r, w id t h y h e i g h t r e p r e ­ co m p o n en te'. L o s m é to d o s d r a w O v a l. d r a w R e c t . f i l l O v a l y f i l l R e c t d ib u - co
s e n ta n e l ta m a ñ o d e l o b je to . I.a s u n id a d e s e m p le a d a s s o n pix cls. ja n u n o b je to c o n lo s a trib u to s h e ig h t y w id t h e s p e c ific a d o s , c u y o e x tr e m o su - ^
1:1 « tn f ig u r a d o r n u l 1 d e p e n d e d e la plutat»»rma e m p le a d a , y e s to n o rm a lm e n te p e r io r iz q u ie rd o e s tá indicad»» p o r lo s p a rá m e tro s x e y . d r a w L in e y d r a w S t r i n g 0 ,
e s u n g ra n in c o n v e n ie n te . d ib u ja n lín e a s y te x to , re s p e c tiv a m e n te . El m é to d o s e t C o l o r s e e m p le a p a ra
c a m b ia r e l c o lo r a c tu a l; e l n u e v o c o lo r s e e m p le a e n to d a s la s ru tin a s d e d ib u jo ,
Configuradores estéticos h a s ta q u e e s c a m b ia d o d e n uevo.
L a F ig u ra D IO m u e s tra c ó m o se im p le m e n ta e l o b je to d e tip o C a n v a s d e la
J a v a ta m b ié n p o n e a n u e s tra d is p o s ic ió n c a r d L a y o u t . G r i d L a y o u t y F ig u ra D I . I-a n u e v a c la s e G U IC a n v a a e x tie n d e a C a n v a s . S e d e fin e n v a rio s atri
G r id B a g L a y o u t . El c o n tig u ra d o r C a r d L a y o u t s im u la la e s té tic a d e la s a p lic a ­ h u io s p riv a d o s q u e d e s c r ib e n e l estad»» a c tu a l d e l o b je to c a n v a s . E l construct»»r
c io n e s tle W in d o w s, p e n i tie n e u n a a p a rie n c ia te rrib le e n e l A W T E l c o n tig u ra d o r p»»r d e fe c to d e G U iC a n v a s e s ra z o n a b le , lu e g o lo a c e p ta m o s.
G r i d L a y o u t añ a d e c o m p o n e n te s e n u n a m a lla , p e r o h a c e q u e to d a s la s e n tra d a s a
d ic h a m a lla te n g a n e x a c ta m e n te e l m ism o ta m a ñ o . E s to h a c e q u e e n a lg u n a s o c a ­
sio n es las c o m p o n e n te s se a g ra n d e n d e m a n e ra e x tra ñ a . E s m u y ú til c u a n d o e s to n o 1 im port j a v a . a w t . ■;
2
p u e d e p ro v o c a r p ro b lem as. p o r e je m p lo e n e l te c la d o d e u n a c a lc u la d o ra q u e c o n sis­ 3 p u b l i c c l a s s GUICanvas e x t e n d s Canvas
te e n u n a m alla b id im e n sio n a l d e b oto n es. E l c o n fig u ra d o r G r id B a g L a y o u t in c o r­
p o ra las c o m p o n e n te s e n u n a m alla, p e ro p e rm ite q u e u n m ism o e le m e n to o c u p e v a ­ 5 public v o i d s e t P a r a m a (S t r i n g t h e S h a p . . S t r i n g t h e C o l o r .
¿ i n t x. i n t y . i n t s i z e . b o o le a n f i l l >
n a s c e ld a s. S u u s o e s m á s c o m p lic a d o q u e e l d e l re s to d e c o n fig u ra d o re s .
7 {
8 t h i s . theShape = theShape;
Herramientas visuales 9 thii».theC olor * theC olor;
10 xcoor x; y c o o r - y;
A lg u n o s p ro d u c to s c o m e rc ia le s , c o m o S y m a n te c C a fé y M ic ro so ft J + + , in c lu y e n 11 theS ize = size:
12 flllO n ■ f i l l :
h e rra m ie n ta s q u e p e rm ite n al p ro g ra m a d o r d is e ñ a r la c o n fig u ra c ió n u sa n d o u n s is ­
13 r e p a i n t ( );
te m a d e U po C A D . L a h e rra m ie n ta p ro d u c e e l c ó d ig o J a v a n e c e s a r io p a ra c o n s ­ 14
tru ir l«*s o b je to s y c o lo c a rlo s d e la fo rm a in d ic a d a N o rm a lm e n te , g e n e ra la in te r­ 15
16 public void p a in tIG raphics g >
faz e m p le a n d o e l c o n fig u ra d o r n u i l . A u n u tiliz a n d o e sto s s is te m a s el
17 (
p ro g ra m a d o r d e b e e s c r ib ir la m a y o r ía d e l c o d ig o . in c lu y e n d o e l tr a ta m ie n to d e los 18 i f ( th eC olor.equalsl ’ red' I )
e v e n to s ; pero, e s c ie n o q u e ev ita n e l s u c io tra b a jo d e c a lc u la r la p o s ic ió n p recisa 19 o . s e t C o lo r < C o lo r .r e d );
d e lo s o b je to s. 20 « l s e Lft th e C o lo r .« g u a la ! ’ b lu e - ) )
21 g . s e t C o l o r t C o l o r . b l u e >;
22 w i d t h - 25 * ( t h . S i z e • 1 ) :
D.3.2 Gráficos 23
24 i f ( t h e S h a p e . e q u a 1s ( ‘Square’ ) >
25 i f ( flllO n >
C o m o y a h e m o s c o m e n ta d o e n la S e c c ió n D .2 .5 , lo s g rá fic o s se d ib u ja n e m p le a n ­ 26 g .fillR ect t xcoor. ycoor. width. w i d t h );
d o u n o b je to d e tip o c a n v a s . M á s c o n c re ta m e n te , p a ra g e n e ra r g rá fic o s , e l p ro ­ 27 olse
g ra m a d o r d e b e d e fin ir u n a n u e v a c la s e q u e e x tie n d a a C a n v a s . E sta n u e v a c lase 28 g.drawRectI xcoor, ycoor. w idth, w id th )¡
29 e l se i £( t h e S h a p e .e q u a l s ( ' C i r c l e * ) >
d e b e c o n te n e r un c o n s tru c to r «el g e n e ra d o p o r d e fe c to e s in a c e p ta b le ), so b re sc rib ir
30 i f t 1 1 1 ion 1
e l m é to d o p a i n t y te n e r u n m é to d o q u e p u e d a in v o c a rse d e s d e e l c o n te n e d o r del 31 g_fillO valt xcoor. ycoor. w idth. w i d t h >:
o b je to C a n v a s . E l m é to d o p a i n t es 32 « 1 se
3 3 g.draw ovalt xcoor. ycoor. width. width )
v o id p a in t ( G r a p h ic s g ) ; 34 )
G r a p h i c s e s u n a c la s e a b s tra c ta q u e d e fin e u n a g ra n c a n tid a d d e m é to d o s. A lg u ­ 35
36 prívate S trin g theShape » **;
n o s d e e llo s son 37 prívalo S trin g theColor -
38 private in t xcoor;
v o id d ra w O v a l ( i n t x . i n t y , i n t w id t h . i n t h e i g h t ) ; 39 private int ycoor: rlAm
v o id d ra w R e c t ( i n t x . i n t y . i n t w id t h . i n t h e i g h t ) ; 40 priva!, int th .S ix.; // 0 - pequerto. 1 - mediano. 2 - grande
v o i d f i 1 l O v a l ( i n t x . i n t y . i n t w id t h . i n t h e i g h t ) ; 41 private boolean fillO n ;
v o i d f i l l R e c t ( i n t x , i n t y , i n t w id t h . i n t h e i g h t > ; 42 priva!, int width;
43 )
v o i d d r a w L in e ( i n t x l . i n t x 2 . i n t y l , i n t y 2 } ;
v o id d r a w S t r in g l S t r i n g a t r . i n t x . i n t y ) ; Figura D IO O b )o to C a n v a s b ásic o m ostra d o e n la esquina superior Izquierda d e
v o id s u t C o lo r ( C o lo r c ) ;
1 p u b lic void u p d a te ( G raphics g )
se n c illo d e tra ta r la p u ls a c ió n d e u n o b je to B u t t o n es q u e mi c o n te n e d o r im ple-
2 (
m e n te la in te rfa z A c t i o n L i s t e n e r . c o d if ic a n d o u n m é to d o a c t i o n P e r f o r m e d
3 painel g ) ;
4 ) y d e c la ra n d o q u e é l e s e l m a n e ja d o r d e l e v e n to m en cio n ad o .
E s to se h a c e so b re n u e s tro e je m p lo e n la F ig u ra D. I . c o m o s ig u e . R ecu erd e
Figuro D. 11 Sobrescrilura d e u p d a t e p o ra e vitar e l borrodo e n un r e p a i n t . q u e e n la F ig u ra D .5 y a h e m o s h e c h o d o s c o s a s . E n la lín e a 4 . u u i d e c la ra q u e
im p le m e n ta la interfaz. A e t i o n L i s t e n e r . y e n la lín e a 10 u n a in s ta n c ia d e G U I se
L os a trib u io s se a c tu a liz a n c o n e l m é to d o s e t P a r a m s . d e fin id o d e m o d o q u e d e c la ra c o m o e l m a n e ja d o r d e l e v e n to d e p u ls a r su o b je to B u t t o n . E n la F ig u ­
e l c o n te n e d o r (e s to e s . la c la s e G U I q u e a lm a c e n a e l C U i C a n v a s » p u e d e c o m u n i­ ra D . l 2 ¡m p le m c n ta m o s la in te rfa z d e e s c u c h a in v o c a n d o a s c t P a r a m d esd e
c a r a l G U I C a n v a s e l e s ta d o d e su s c o m p o n e n te s d e e n tra d a . s e t P a r a m s se m u e s­ a c t i o n P e r f o r m e d e n la c la s e G U I C a n v a s . E ste e je m p lo se s im p lific a p o r e l h e ­
tra e n las lín e a s 5 a 14 S u ú ltim a lín e a e s u n a lla m a d a a l m é to d o r e p a i n t . c h o d e q u e e x is te u n ú n ic o o b je to B u t t o n . a s í q u e c u a n d o a c t i o n P e r f o r m e d es
E l m é to d o r e p a i n t in v o c a a l m é to d o u p d a t e . P o r d e te c to , u p d a t e v a c ía la in v o c a d o , s a b e m o s lo q u e h a c e r. S i GUI c o n tie n e v a rio s o b je to s d e tip o B u t t o n y
c o m p o n e n te y d e s p u é s lla m a a p a i n t . T o d o lo q u e n e c e s ita m o s e n to n c e s e s e s c r i­ d e c la ra s e r e l m a n e ja d o r d e lo s e v e n to s p ro d u c id o s p o r to d o s e llo s, e n to n c e s
b ir un m é to d o p a i n t q u e re a lic e lo s d ib u jo s tal y c o m o se e s p e c ific a e n lo s a tr ib u ­ a c t i o n P e r f o r m e d d e b e ría e x a m in a r e l p a rá m e tro e v t p a ra d e te r m in a r q u é
to s. C o m o p u e d e v e rs e e n la s lín e a s 16 a 3 4 d e su im p le m e n ta c ió n . e l m é to d o e v e n to d e b e se r p ro c e s a d o : e s to p ro b a b le m e n te s u p o n g a e je c u ta r u n a se c u e n c ia d e
paint s e lim ita a lla m a r a lo s m é to d o s d e la c la s e G r a p h i c s d e s c r ito s a n te rio r­ te s ts i £ / e l s e 7. El p a rá m e tro e v t . q u e e n n u e stro c a s o e s u n a re fe re n c ia d e tip o
m e n te e n e s te m ism o a p én d ic e . A c t i o n E v e n t . sie m p re se p a s a a u n m a n e ja d o r d e e v e n to s . F.l tip o d e l e v e n to e s tá
R e c u e rd o q u e . p o r d e fe c to , u n a lla m a d a a r e p a i n t v a c ía la c o m p o n e n te . En e n fu n c ió n d e l tip o d e su m a n e ja d o r ( A c t i o n E v e n t . W i n d o w E v e n t y a s í su c e s i­
a lg u n a s o c a sio n e s, p re fe riría m o s e s c r ib ir e n e lla e n lu g a r d e b o rra rla . P a ra h a c e rlo , vam en te» . p e ro s e rá sie m p re u n a su b c la se d e A W T E v e n t .
s o b re sc rib im o s e l m é to d o u p d a t e e n la n u e v a c la s e , tal y c o m o s e m u e s tra e n la U n ev e n to im p o rta n te q u e n e c e sita s e r p ro c e s a d o e s e l e v e n to d e c ie rre d e u n a ei
F ig u ra D .l I. v e n ta n a . E ste e v e n to s e g e n e ra c u a n d o s e c ie r ra u n a a p lic a c ió n p re s io n a n d o

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

C u a n d o e l u su a rio u tiliz a e l ra tó n o e l te c la d o , e l s iste m a o p e ra tiv o p ro d u c e un


e v e n to . E l s iste m a in icial d e tra ta m ie n to d e e v e n to s d e J a v a e r a b a sta n te c o m p le jo 1 / / T ra ta l a p u ls a c ió n d e l botón en e l dibujo
y h a s id o c o m p le ta m e n te re h e c h o . E l n u e v o m o d e lo e s m u c h o m á s s e n c illo d e p ro ­ 2 p u b lic v o id actio n P erfo rm ed t A ctionEvent e v t )
g ra m a r q u e e l an tig u o . O b s e rv e q u e a m b o s m o d e lo s s o n in c o m p a tib le s : lo s e v e n ­ 3 <
4 try
to s d e J a v a l . l n o so n c o m p re n sib le s p a ra lo s c o m p ila d o re s d e J a v a 1.0 y v ic e v e r­
5 I
sa. L a s re g la s b á sic a s q u e d e b e n seg u irse s o n la s sig u ie n te s:
6 theC anvas.setParam s|
7 t h e S h a p e . g e t S e l e c t e d l t e r a t I.
1. C u a lq u ie r c la s e q u e in c lu y a c ó d ig o p a ra e l tr a ta m ie n to d e e v e n to s d e b e 8 * t h e C o l o r . g e t S e l e c t e d l t e r a t I.
im p le m e n ta r u n a in te rfa z J e e s c u c h a . E je m p lo s d e e sta s in te rfa c e s son 9 integer.parselnt( t h e X C o o r . g e t T e x t ( ) ),
A c t i o n l . i s c c n o r . W i n d o w L i s t c n e r y M o u a c L i s t o n e r . C om o es ha­ 10 I n t e g e r . p a r s e l n t < th e Y C o o r . g e t T e x t < ) ),
b itu al. im p le m e n ta r u n a in te rfa z su p o n e q u e to d o s lo s m é to d o s d e la in te r­ 11 sm allP ic.getS tatet ) ? 0 :
faz d e b e n d e fin irs e e n la clase. 12 i r e d i u m P i c . g e t S t a t e ( ) ? 1 : 2.
13 t h e F i l l B o x . g e t S t a t e t ) 1;
2. U n o b je to q u e q u ie re tra ta r u n e v e n to g e n e ra d o p o r u n a c o m p o n e n te , d e b e 14 theM essage.s e tT e x t( );
d e c la ra r e s e p o s ib le tr a ta m ie n to m e d ia n te u n m e n s a je d e a ñ a J ir e sc u c h a 15 )
e n v ia d o a la c o m p o n e n te q u e g e n e ra d ic h o e v e n to . C u a n d o u n a c o m p o ­ 16 c a t c h ( Exception e )
n e n te g e n e ra un e v e n to , é s te s e e n v ía a l o b je to q u e h a d e c la ra d o q u e lo 17 ( theM essage.a«tText( 'Incom plete input" )
18 )
re c ib irá . S i n in g ú n o b je to h a d e c la ra d o q u e lo h a rá , e n to n c e s e s ig n o ra d o .
Figura D. 12 C ó d ig o p a ra frotar la pulsación d e l bo tón en e l dibujo d e la Figura D. 1
P o r e je m p lo , c o n s id e re e l e v e n to q u e s e g e n e ra c u a n d o e l u s u a rio p u lsa u n o b je to
d e la c la s e B u t t o n . p u lsa la te c la R e tu rn c u a n d o s e e n c u e n tra e n u n a T e x t F í e l d .
o re a liz a u n a s e le c c ió n e n u n o b je to d e la c la s e L i s t o M e n u l t e m . El m o d o m á s L ' i u f o r m a d e h a c e r l o es e m p l e a r e v t . qetSov-rcc ( i . q u e d e v u e l v e una re fe re n c ia al o b je to que ha ecna
1 in p o rt j a v a . aw t. • ; im port j a v a . a w t . e v e n t ; D.3.4 Resumen: en cajan d o las piezas
2 /, Narco que se c i e r r a cuando se gen era un ev ento de c i e r r e de ventana
3 p u b l i c c l a s s C1 o s e a b l e F r a r r . e e x t e n d a Franve i m p l e n e n t s W l n d o w L i s t e n e r H e a q u í u n re s u m e n d e c ó m o c re a r u n a a p lic a c ió n G U I. L a fu n c io n a lid a d d e la
4 í
G U I d e b e situ a rse e n u n a c la s e q u e e x tie n d a a P a n e l . P a ra e s ta c la s e d e b e h acerse
5 p u b l ic C1oseabloFramet )
6 { addW indowListener( t h i s ); } lo sig u ien te:
7
8 p u b l i c v o i d windowClosir.y ( WindowEvent e v e n t ) • D e c id ir c u á le s so n lo s e le m e n to s d e e n tra d a y c u á le s los d e salid a. S i los
9 ( System .exit < a i ; } m ism o s e le m e n to s s e e m p le a n v a ria s v e c e s, d e b e c o n s tru irs e u n a c la s e a d i­
10 p u b l i c v o i d w i n d o w C lo s e d ( WindowEvent e v e n t ) c io n a l p a ra a g ru p a r la fu n c io n a lid a d c o m ú n y a p lic a r e sto s p rin c ip io s a d i ­
11 c h a clase.
12 public v o i d window D eiconi f i e d 1 WindowEvent e v e n t )
• S i s e e m p le a n g rá fic o s , d e b e m o s c o n s tru ir u n a n u e v a c la s e q u e e x tie n d a a
13 ( )
14 public v o id windowlconified< WindowEvent e v e n t I Canvas. E sta c la s e d e b e im p le m e n ta r u n m é to d o p a i n t e in c lu ir o tro m é to ­
15 d o p u b lic o q u e p u e d a se r e m p le a d o p o r e l c o n te n e d o r p a ra c o m u n ic a rs e c o n
16 public v oid windowActivatedl WindowEvent e v e n t ) e lla . T a m b ié n s e n e c e sita c o d ific a r u n m é to d o c o n stru c to r.
17 { 1 • E sc o g e r u n c o n fig u ra d o r y e m p le a r e l c o m a n d o s e t L a y o u t .
18 public v o i d w i r . d o w D e a C t i v a t e d ( WindowEvent e v e n t >
• A ñ a d ir las c o m p o n e n te s a la G U I u sa n d o add.
19
20 public v o i d windowOper.ed i WjndowEve.it e v e n t ) • T ra ta r lo s e v e n to s . L a m a n e ra m á s se n c illa d e h a c e rlo e s u tiliz a r u n o b je to
21 { } d e tip o B u - t o n y c a p tu r a r su p u ls a c ió n c o n a c t ior.Perf o r m e d .
22 )
U n a v e / q u e la G U I h a s id o im p le m e n ta d a . u n a a p lic a c ió n d e fin e u n a c la s e
Fi gur a D. 13 C la se CloseabieFrame: es sim ilar a Frame pero troto e l e ve n to d e q u e e x tie n d e C l o s e a b i e F r a m e c o n u n a ru tin a m a i n . 1.a ru tin a m a i n sim p le ­
cierre d e u n a ven tan a. m e n te c re a u n a in s ta n c ia d e e s ta c la s e d e m a rc o e x te n d id a , c o lo c a e l pan el d e la
G U I d e n tro d e l m a rc o y e m p ic a s o b re é l los m é to d o s p a c k y s h o w .
El m a n e ja d o r d c l e v e n to d e c ie rre d e v e n ta n a e s se n c illo : s ó lo r e a l i/ a la lla m ad a
S y s t e m . e x i t . L o s m é to d o s re s ta n te s n o tie n e n n in g u n a im p le m e n ta c ió n e s p e ­
c ia l. E l c o n s tru c to r d e c la ra q u e p u e d e re c ib ir e l e v e n to d c l c ie rre d e u n a v en tan a .
D.4 A nim acion es y hebras
E n lo su c e s iv o p o d e m o s e m p le a r la c la s e C l o s e a b i e F r a m e e n lu g a r d e la c lase
Frame.
D e b id o a q u e e l A W T n o s p e rm ite d ib u ja r o b je to s, e s n atu ral in te n ta r re a liz a r a n i­
L a F ig u ra D .I 4 m u e s tra un m é to d o m a i n q u e p u e d e e m p le a rs e p a ra in ic ia r la
m a c io n e s. P ro b a b le m e n te , la h a b ilid a d d e J a v a a la h o ra d e a n im a r p á g in a s W eb
a p lic a c ió n d e la F ig u ra D. I. L o c o lo c a m o s e n u n a c la s e a p a rte , a la q u e lla m am o s
h a sid o la re s p o n sa b le d e su a p o g e o e n tre lo s le n g u a je s d e p ro g ra m a c ió n .
B a s ic G U I . B a s ic G U I e x tie n d e la c la s e C l o s e a b i e F r a m e . F.l m é to d o m a i n sim ­
L a a n im a c ió n e n J a v a p u e d e p a re c e r tr iv ia l: to d o lo q u e te n e m o s q u e h a c e r es
p le m e n te c re a u n o b je to F r a m e . e n e l q u e c o lo c a m o s u n o b je to G U I. C o m o só lo
lla m a r re p e tid a m e n te a r e p a i n t c o n d is tin ta s p e tic io n e s . S i s e p a ra m o s las lla m a ­
e x iste u n o b je to , p u e d e e m p le a rs e e l c o n fig u ra d o r F l o w L a y o u t p a ra e l F r a m e f .
d as a r e p a i n t u tiliz a n d o T h r e a d . s l e e p . p o d e m o s re ta rd a r la a n im a c ió n h asta
D e sp u é s a ñ a d im o s un o b je to d e tip o GUI s in n o m b re y a p lic a m o s e l m é to d o p a c k
q u e a lc a n c e u n a v e lo c id a d ad ecu ad a. U n e je m p lo d e e s ta s id e a s s e m u e s tra e n la
so b re e l o b je to F r a m e . L a ru tin a p a c k c o m p rim e e l F r a m e ta n to c o m o s e a p o si­
F ig u ra D. 15. A q u í, in te n ta m o s m o s tra r c ó m o u n c írc u lo d e ra d io 5 0 se d e s p la z a a
b le . d a d a s las c o m p o n e n te s q u e lo fo rm a n . E l m é to d o s h o w m u e s tra e l F r a m e .
lo la rg o d e la d ia g o n a l d e sd e (0 .0 ) h a s ta 1 199.199». d o n d e , c o m o e s h a b itu a l, e sta s
c o o rd e n a d a s re p re s e n ta n e l e x tr e m o su p e rio r iz q u ie rd o «le la c aja e n la q u e está
1 im port j a v a .a w t .* :
in s c rito e l c írc u lo (la s p o s ic io n e s so n re la tiv a s a l e x tr e m o su p e rio r iz q u ie rd o del
2
3 public c la ss BasicGUI e x t e n d s C l o s e a b i e F r a m e m a rc o ). In v o c a m o s re ite ra d a m e n te a r e p a i n t . s e p a ra n d o las lla m a d a s 25 m ilise-
4 { g u n d o s.
5 public s ta tic v o id mainl Strir.g I ] args > D e s g ra c ia d a m e n te , c u a n d o se e je c u ta e s te p ro g ra m a , s c o b s e rv a u n a e s p e ra de
6 u n o s 5 s e g u n d o s , tra s lo c u a l s im p le m e n te se d ib u ja e l ú ltim o c írc u lo . E s to n o es
7 Frame í = new B a s i c G U I ( >;
lo q u e q u e ría m o s.
8
9 f . s e t L a y o u t l new F l o w L a y o u t ( ) ); L a s o lu c ió n a n u e s tro p ro b le m a e s e m p le a r h e b ra s (e n in g lé s th r e a d s). C ó m o
10 í . a d d i n e w GUM ) ) ; e m p le a r e n g e n e ra l las h e b ra s e s a lg o c o m p lic a d o , pcr«> lo s e le m e n to s c o n c re to s
11 f . p a c k t >; n e c e sa rio s p a ra re s o lv e r n u e stro p ro b le m a so n s im p le s . C o m e n z a m o s c re a n d o u n a
12 i . s h o w l >; h e b ra «le e je c u c ió n in d e p e n d ie n te . P a ra h a c e rlo , re a liz a m o s lo s sig u ie n te s pas«ts:
13
14 } I. H a c e m o s q u e n u e s tra c la s e im p le m e n te la interfaz. R u n n a b l e . D ic h a
F in u m n í a Oí —'- . i r ' ll-. Cií-Ii iro f» I in te rfa z tie n e un s o lo m é to d o llam ad o run.
1 im port ja v a .a w t.* ; 1 im port ja v a .a w t.* ;
2 2 p u b l ic c l a s s G oodCircles ex te n d s CloseableFram e
3 / / I n t e n t a d i b u j a r u n a s e c u e n c i a a n im a d a d e c i r c u i o s iraplam ant■ R u n n a b le

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 )

2. D e c la ra m o s u n a h e b ra , u o b je to d e la c la s e T h r e a d . c o m o u n a trib u lo y lo Figura D. 16 Im p lem entación c o rre c ta d e la an im a ció n d e l círculo.


in ic ia li/.a m o s a m e s d e la c o n s tru c c ió n del o b jeto .
3. In ic ia m o s la h e b ra o T h r e a d . q u e p re se n ta n c s la c o m u n ic a c ió n d e las h e b ra s e n ir e s í y e l a se g u ra rn o s d e q u e
4 Im p le m e n ta m o s e l m é to d o r u n d e m o d o q u e é l h a g a to d o e l tra b a jo . c o m p a rte n d e fo rm a c o n siste n te lo s re c u rs o s c o m u n e s . P o r e je m p lo , e n m u c h a s
o c a sio n e s e s d e se a b le q u e u n a h e b ra b lo q u e e a las re s ta n te s e n lo q u e s e re fie re a
L a F igura 1X16 m u estra c ó m o se h a ce esto . L o s c a m b io s h e c h o s e n la F ig u ra D I 5
la m o d ific a c ió n o in c lu s o al a c c e so a u n re c u rs o c o m p a rtid o , c o m o p o r e je m p lo
se m u e s tra n e n n e g rita (el n o m b re d e la c la s e h a s id o c a m b ia d o , d e m o d o q u e a m ­
u n a v aria b le. J a v a in c lu y e m e c a n ism o s p a ra to d o e llo a tra v é s d e la p a la b ra re s e r­
b a s \e r s io n e s e s tá n d is p o n ib le s e n In te rn e t c o m o B a d C i r c l e s y G o o d C i r e l é s ,
v a d a s y n c h r o n i z e d . P u e d e e n c o n tra rs e m á s in fo rm a c ió n a c e rc a d e la s h e b ra s en
re s p e c tiv a m e n te ). E n p rim e r lu g a r, e n la lín e a 3 d e c la ra m o s q u e la c la s e im p le-
la m a y o ría d e las re fe re n c ia s d e Java.
m e n ta e l in te rfa z R u n n a b l e . L n se g u n d o lu g a r, e n la lín e a 6 d e c la ra m o s u n a tri­
b u to d o c la s e T h r e a d y lo c o n s tru im o s e n la lín e a 10. E n te rc e r lu g a r, in ic ia m o s la
e je c u c ió n d e la h e b ra e n la lín e a 11. F in a lm e n te , c n la s lín e a s 14 a 17 im p le m e n ta - D.5 Applets
m o s e l m é to d o » u n , q u e s e lim ita a lla m a r a l m é to d o d i a w C i r c l c s .
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 te m a d e la s h e b ra s e s tá re la c io n a ­ U n a p p le t e s u n p e q u e ñ o p ro g ra m a in m e rso e n o tr a a p lic a c ió n . E l s iste m a J a v a in - (
d o c o n la s a n im a c io n e s . S o n m u y ú tile s c n la im p le m e n ta c ió n d e p ro g ra m a s c o n - c lu y e u n a a p lic a c ió n d e n o m in a d a A p p le t V ie w e r q u e p u e d e u tiliz a rse p a ra e je c u ta r ,
< >n Inv vari-ic hehr-iv «I.* .‘ ii-riii-ión I a nrinrinal (litirullad u n a p p le t. S in e m b a r c o , la situ a c ió n m á s c o m ú n e s n u e u n a n n le t s e ilrx c a re u e v ía <
^ ~ _______ o — s i . - * , . .
In te rn e t y se e je c u te lo c a lm e n te p o r u n n a v e g a d o r q u e s o p o rte Ja v a , ta l c o m o
% (« f i . C— — * * _
N e ts c a p e N a v ig a to r o M ic r o s o ft In te r n e t E x p lo rer.
£ s 3 ^ ^ ^ ^ ^ m i
C u a n d o s e in c lu y e u n a p p lc t e n u n a p á g in a W e b . \ u c ó d ig o J a s a se d e sc a rg a ... fa * ¿o™ o»*» ^ ..._______________________
d esd e e l c o m p u ta d o r s e rv id o r s ie n d o e je c u ta d o p o r e l n a v e g a d o r. E s to tie n e la
v enta)u d e re b a ja r la c a rg a e n e l serv id o r E s to s e d e b e a q u e u n a v e / q u e se d e s ­
c a rg a e l c ó d ig o J a v a , to d o e l tra b a jo se h a c e lo c a lm e n te . T ran sp aren cy M astere: D ata S tru ctu res
U n a d e la s fa s c in a n te s d ire c c io n e s fu tu ra s q u e J a v a e s tá e m p e z a n d o a e x p lo ra r
tiene q u e v e r c o n e l a lm a c e n a m ie n to d e s o ftw a re e n u n sitio W e b . A c tu a lm e n te , and P roblem Solving using Ja v a
lo s u su a rio s d e u n c o m p u ta d o r p e rs o n a l d e b e n in s ta la r e l s o ftw a re e n su p ro p ia
m á q u in a E s to req u ie re u n c i e n o e s p a c io e n d is c o , y lim ita p o r ta n to la c a n tid a d de
so ftw a re d if e re n te q u e p u e d e e s ta r sim u ltá n e a m e n te in sta la d o . A d e m á s, e x is te e l
p ro b le m a d e m a n te n e r la ú ltim a v e rs ió n d e c a d a so ftw a re , q u e h a b itu a lm c n te in ­
c lu y e la c o rre c c ió n d e a lg u n o s e rr o re s d e te c ta d o s . C o n lo s a p p le ts. to d o e l s o ftw a ­
re s e a lm a c e n a ría e n u n sitio W e b y lo s u su a rio s p a g a ría n p o r c a d a u so d e l s o ftw a ­
re. E s to a h o rra ría e s p a c io e n d is c o , p e rm itiría q u e h u b ie s e m á s so ftw a re d is p o n ib le
y h a ría m a s fá c il a se g u ra r q u e s ie m p re se u tiliz a la ú ltim a v e rs ió n d is p o n ib le . El
re s u lta d o se ría e l d e n o m in a d o - c o m p u ta d o r e n la r e d - y p o d ría se r s ig n ific a tiv a ­
m e n te m á s b a ra to q u e u n P C a ctu a l. E n e l m o m e n to e n q u e s e e s c rib ió e s te lib ro ,
e l u so m á s c o m ú n d e J a v a c o n sista e n e l d ise rto d e a n im a c io n e s q u e a d o rn a b a n p a ­ Figuro 0 . 1 7 P ó ^ n o W e b visto o través d e N e ts c a p e N a v s ja to f. co rresp o n d en te ai
g in a s W 'eb q u e e n o tro c a s o s e ría n tris te s y estáticas. c ó t*g o HTML d e la Figura D 18.
P ara u sa r un a p p lc t. e l u s u a rio d e b e c o n o c e r a lg o a c e rc a d e l len g u a je d e liiper-
te x to H T M L , e l le n g u a je q u e e n tie n d e n lo s n a v e g a d o re s W’e b . a fin d e q u e e l n a ­
v e g a d o r c a rg u e c o rre c ta m e n te e l c ó d ig o d e l a p p lc t. U n a p p lc t ta m b ié n se im ple-
m e n ta d e u n a fo rm a a lg o d ife re n te a u n p ro g ra m a d e a p lic a c ió n . E n p a rtic u la r, no 1 <HTMI->
se lla m a a m a i n . T a m b ié n , lo s a p p le ts se e je c u ta n c o n re s tric c io n e s a d ic io n a le s d e 2 <B0DY>
se g u rid a d . S in e m b a rg o , d e ja n d o a p a rte lo s te m a s d e la se g u rid a d , las d ife re n c ia s 3
e n tre la p ro g ra m a c ió n d e u n a p p lc t y u n p ro g ra m a d e a p lic a c ió n s o n relativ á m en le 4 <TITLE>
5 T ransparency M astors:
p e q u e ñ a s, lo q u e p e rm ite e s c r ib ir p ro g ra m a s q u e s irv a n c o m o a p lic a c ió n y c o m o 6 Daca S t r u c t u r e s and Proble® S o lv in g u s i n g Java
a p p lc t E l re s to d e e s ta s e c c ió n e s tu d ia e sto s te m a s
7 </TITLE>
8
9 <H1>
10 Tranaparency K asters:
D.5.1 Lenguaje de hipertexto 11 Data S t r u c t u r e s a n d Problem S o lv m g using Java
12 </Hl>
El le n g u a je J e h ip e r te x to H T M L e s e l le n g u a je q u e e n tie n d e n lo s n a v e g a d o re s 13
14 «p>
W 'eb U n fic h e ro H T M L e s tá fo rm a d o p**r u n a se c u e n c ia d e m a n d a to s d e f«*rmato
15 E verything i* in p ostscript.
y te x to , q u e c ir c u la p o r In te rn e t h a s ta e l n a v e g a d o r. H T M L e s un h íb rid o e n tr e los
16
le n g u a je s d e p ro c e s a m ie n to d e te x to s tr o ff y h iT e X . Y a d e s d e e l p rin c ip io , p e rm i­
tía e l c a m b io d e c o lo re s y fu e n te s, la im p o rtac ió n d e im á g e n e s, la c r e a c ió n d e e n ­ \l <li><A HREF = ’ T r a n s p a r e n c y s T O C . p s * > L i s t i n g o f
lace s a o tr a s p á g in a s W e b y la g e n e ra c ió n a u to m á tic a d e listas n u m e ra d a s y c o n
19 <li><A H R E F - ‘ T r a n * p a r e n c y a 01-06 . p a ’ > C h a p t « r s 0 1 - 0«</A ></li>
20 <li><A H R E F = *Transparencys07-14. p s ‘ >Chapters 1>
p u n to s R e c ie n te m e n te , s e h a h e c h o m á s c o m p le jo , in c o rp o ra n d o , e n tre o tra s c o ­
21 < lixA HREF» ’ T r a n s p a r e n c y a l S - l H . p n * » C h a p t e r s 5 -18</A></11
s a s . ta b la s y m ú ltip le s m arco s. 22 < lix A H R E F = ' T r a n a p a r e n c y * 19 * 2 3 . p a * > C h a p t e r s 19 -2 3 < / A x / U
1.a F ig u ra D .I 7 m u e s tra u n a b re v e p á g in a q u e c o n tie n e e n la c e s a las tra n s p a ­
23 </ul>
re n c ia s q u e a c o m p a ñ a n e s te lib ro . S u c ó d ig o H T M L se m u e s tra e n la F ig u ra I ) 18 24
L o s c o m a n d o s d e fo rm a to s e in c lu y e n d e n tro d e c o rc h e te s < > : típ ic a m e n te , un 25 </BODY>
m a n d a to c o m o < u l > . q u e in d ic a e l c o m ie n z o d e u n a lista n o o rd e n a d a (o c o n p u n ­ 26 < / HTML»
to s ). se te rm in a c o n la m a rc a < / u l > (o b s e rv e c ó m o se h a a ñ a d id o la b arra ). T a m ­ , ^ D II C ó c ío o H I M lp a .o o e o e .a .io p ó a n o W e C d e ia F o u ía D W .q u e c o ^
b ié n s e m u e s tra e l m a n d a to < l i > , q u e re p re s e n ta u n a e n tra d a d e la lista. L o s f i­ tiene las rran sp aíen cías do este libro.
c h e ro s H T M L d e b e ría n e m p e z a r c o n la s e tiq u e ta s < h t m l > y <BODY> y te rm in a r
c o n la s e tiq u e ta s < / h t m l > y < / b o d y > . I x > s e n la c e s se e sp e c ific a n c o n < A > y se D.5.2 Parámetros
te rm in a n c o n < /A > . < p > e s p e c ific a u n n u e v o p á rra fo . < T IT L E > e s ta b le c e e l títu lo
d e la v e n ta n a d e l n a v e g a d o r, y <H1> e sp e c ific a q u e e l te x to se m o s tra rá c o n la L o s a p p le ts p u e d e n in v o c a rs e c o n p a rá m e tro s , u tiliz a n d o la e tiq u e ta pa r a m e n tre i
fu e n te d e l p rim e r n iv el d e títu lo , u tiliz a n d o la fu en te ap ro p ia d a. < A P P L E T > y < / A P P L E T > . P o r e je m p lo , p u e d e te n e r ii
O tra s e tiq u e ta s c o m u n e s so n < b > e < I > «para n e g rita c itá lic a , re s p e c tiv a ­
<APPLET C O D E - - P r o g r a m a . c l a s s - W I D T H = * 1 5 0 - H E I G H T = ' 1 5 0 * > ,
m e n te ). y <SRC> p a ra c a rg a r im á g e n e s. < o l > s e u tiliz a p a ra c re a r u n a lista n u m e ­
< PARAM N A M E = " I n i t i a l C o l o r " V A L U E = " B l u e " > I
ra d a . L a s listas se p u e d e n a n id a r p a ra c re a r su b lista s. T o d o s lo s c o m a n d o s H T M L
< PARAM NAME= " I n i t i a l S h a p e ” VALUE= “ O v a l ">
tra ta n lo s sa lto s d e lín e a c o m o e s p a c io s e n b la n c o . E l n a v e g a d o r ro m p e e l títu lo d e
< / APPLET>
la p á g in a se g ú n c o n s id e ra a p ro p ia d o , y n o c o m o s e intr»>dujo e n e l fic h e ro H T M L .
E l c ó d ig o H T M L e s re la tiv a m e n te fác il d e u sa r. E n la red s e p u e d e e n c o n tra r El a p p le t p u e d e a c c e d e r a e s to s p a rá m e tro s p o r m e d io d e l m é to d o g e t P a r a m e t e r
in fo rm a c ió n so b re lo s d is tin to s m a n d a to s d e fo rm a to , p e r o la m a y o ría d e la g e n te (d e la c l a s e P r o g r a m ) : c
v e e l c ó d ig o d e o tr a s p á g in a s y c o p ia lib re m e n te . P ro b a b le m e n te a p re n d e rá o rd e ­ P
S t r i n g g e t P a r a m e t e r ( S t r i n g ñame I; H
n es a d ic io n a le s s ó lo c u a n d o la s n e c e site . O b se rv e , sin e m b a rg o , q u e e l n a v e g a d o r
d
n o m u e s tra m e n s a je s d e e rr o r c u a n d o e n c u e n tre u n a e tiq u e ta d e o rd e n q u e n o e n ­ A q u í, la lla m a d a g e t P a r a m e t e r ( - I n i t i a l C o l o r - ) d e v u e lv e “B l u e * . S i e n la
c a je ; se lim ita s im p le m e n te a c o n tin u a r u tiliz a n d o e l fo rm a to a b ie rto . A sí. si o lv i­ e tiq u e ta p a r a m no s e p ro p o rc io n a e l a trib u to n a m f ., se d e v u e lv e n u i l .

d a m o s un < /A > , v e re m o s q u e m u c h o te x to a p a re c e su b ra y a d o , lo q u e in d ic a ría ,


e rró n e a m e n te , q u e e l e n la c e e s to d o e l te x to resta n te .
D.5.3 Limitaciones d e los applets
U n a p p le t s e in s e rta d e n tr o d e u n a p á g in a W e b u tiliz a n d o la e tiq u e ta
< A P P L E T > " . El c ó d ig o H T M L d e la F ig u ra 1 ) 1 9 e s e l e je m p lo m á s sim p le d e p á ­
U n a p p le t re p re se n ta c ó d ig o q u e se d e sc a rg a v ía In tern et y se e je c u ta e n n u estro
g in a W e b q u e c o n tie n e u n a p p le t. D e h e c h o , e s ta p á g in a n o c o n tie n e n a d a m ás.
c o m p u ta d o r. El p ro c e so d c d esc a rg a y e je c u c ió n e m p ie z a ta n p ronto c o m o s e visita
O b se rv e m o s q u e u n a p á g in a W e b p u e d e c o n te n e r o tr a s c o s a s j u n t o a un a p p le t. a s í
la p á g in a W e b q u e c o n tie n e e l ap plet. C o m o re su lta d o , e s e se n c ia l q u e e x is ta la g a ­
c o m o v a rio s a p p le ts. D e n tro d e la e tiq u e ta <a p p l e t > s e e n c u e n tra e l n o m b re del
ra n tía d c q u e e l a p p le t n o in ten te h a c e r a lg o m a lic io so e n e l c o m p u ta d o r lo cal. A lg o
fic h e ro q u e c o n tie n e e l c ó d ig o J a v a y las d im e n sio n e s (e n p ix e ls) d e l a p p le t e n el
m a lic io so p u e d e se r in tro d u cir un v iru s o ac c e d e r a in fo rm a c ió n c o n fid en cial. Por
n a v e g ad o r.
e je m p lo , si u n ap p let tie n e la ca p a c id a d d c e sc rib ir e n fic h e ro s, se ría m u y fácil para
S i e l a p p le t n o se e n c u e n tra e n e l m is m o lu g a r q u e la p á g in a W e b . se d e b e p ro ­
u n h a ck er elab o rar un ap p let d estru ctiv o y b o rrar d is c o s d u ro s d e v isitan tes confiados.
p o rc io n a r e l a trib u to CODEBASE (p re fe re n te m e n te a n te s d e l a trib u to CODEI. E sto
C o m o re s u lta d o , lo s a p p le ts s e e je c u ta n c o n s e v e ra s re s tric c io n e s y p u e d e n ha- i
p e rm ite re fc re n c ia r d ire c ta m e n te a p p le ts e s c rito s p o r o tro s.
c e r un n ú m e ro s ig n ific a tiv o d c c o s a s m e n o s q u e u n a a p lic a c ió n . E n u m e ra m o s a Q
O b s e rv e q u e la m a y o ría d e lo s a p p le ts e s ta rá n fo rm a d o s p o r v a ria s c la s e s: só lo
c o n tin u a c ió n a lg u n a s o p e ra c io n e s q u e u n a p p le t n o p u e d e re a liz a r, e x p lic a n d o p o r "
s e e s p e c ific a la c la s e c o n la q u e c o m ie n z a e l a p p le t. S in e m b a rg o , to d a s la s c la se s
q u é e s n e c e s a ria c a d a re stricció n . T e n g a e n c u e n ta q u e é s ta n o e s u n a lista e x h a u s- ^
d e b e n e s ta r d is p o n ib le s y d e b e n p o d e r s e r le íd a s p o r c u a lq u ie r u su a rio . E n o tr o c a ­
tiv a . E s ta s re s tric c io n e s n o se c o m p ru e b a n e n tie m p o d e c o m p ila c ió n . P o r e l c o n - A
s o . s e o b te n d rá u n e rr o r d e c i a s s L o a d e r g. S i se u tiliz a n p a q u e te s, se d e b e e s ta ­
tra rio . si u n a p p le t in te n ta re a liz a r c u a lq u ie ra d e e s ta s o p e ra c io n e s , se p ro d u cirá
b le c e r u n a je r a rq u ía d e d ire c to rio s. S in e m b a rg o , a lg u n o s n a v e g a d o re s n o p e rm i­
u n a e x c e p c ió n e n tie m p o d e e je c u c ió n . A lg u n o s n a v e g a d o re s e lim in a n e s ta s re s­
te n q u e lo s a p p le ts u tilic e n p a q u e te s d e fin id o s p o r e l u su a rio . E s to q u ie re d e c ir que
tric c io n e s c u a n d o e l a p p le t s e c a rg a d e l s iste m a lo cal. E n c o n se c u e n c ia , a l p ro b a r
si tie n e u n c ó d ig o q u e u sa p a q u e te s, n e c e sita rá e x tra e r la s c la s e s u tiliz a d a s d e sus
su a p p le t. p u e d e e n c o n tra r q u e fu n c io n a c u a n d o se e je c u ta lo c a lm e n te , p e ro no
p aq u e te s.
c u a n d o s e e je c u ta e n Internet.

1. L o s a p p le ts tío p u e d e n b o r r a r fic h e r o s d e l s is te m a lo c a l. L a ra z ó n d c esta


1 <HTML> re s tric c ió n s e e x p lic ó a n te rio rm e n te e n e s ta secció n .
2 <BODY> 2. L o s a p p le ts n o p u e d e n e s c r ib ir fic h e r o s e n e l s is te m a lo c a l. E n o tr o c a so ,
3
to d o s lo s fic h e ro s p«>drían s e r re d u c id o s a ta m a ñ o 0 o so b re sc rito s p o r un
4 <APPI.F.T c o d o ■ - B a s i c G U I A p p l e t . c l a s s - w i d t h - " 6 0 0 * h e i g h t * * l S 0 - >
a p p let m aligno.
5 </ APPLET>
6 3. l o s a p p le ts n o p u e d e n le e r fi c h e r o s d e l s is te m a lo c a l. E n o tro c a s o , el
7 </BODY> a p p le t p o d ría a c c e d e r a in fo rm a c ió n p o te n c ia l m e n te c o n fid e n c ia l y tra n s­
8 </HTML> fe rirla a l serv id o r.
4. L o s a p p le ts n o p u e d e n r e n o m b r a r fi c h e r o s d e l s iste m a lo c a l. E l re n o m ­
Figura D .I9 Fichero HTML p a ra e l a p p le t B a s ic G U IA p p le t .
b ra m ie n to p e rm ite la e lim in a c ió n d e fic h e ro s im p o rta n te s d e l s iste m a y
e l o c u lta m ic n to d c fic h e ro s p o r u n a p p le t m aligno.
pan* reemplazar c*ti etiqueta por --EHBED>.
■o*, ademí» dc escribió? en Syston.out. se colocan en la consola dc Java. I-a mayoría dc lo» nuvcgadorc' 5. l o s a p p le ts n o p u e d e n c r e a r o lis ta r d ir e c to rio s, c o m p r o b a r la e x iste n c ia
mile ver e*U consola. d c un fi c h e r o , u o b te n e r e l tip o , ta m a ñ o o f e c h a d e m o d ific a c ió n d e un
fic h e ro . T o d a s e s ta s re s tric c io n e s se re q u ie re n p a ra e v ita r q u e u n a p p let
H ay o tra s c o sa s a ten er e n c u e n ta si e l ap p lei utiliza heb ras p a ra la n z a r v a rio s p ro ­
m a lig n o o b te n g a in fo rm a c ió n d e l siste m a .
cos»» o m c u rre n te s. C u a n d o u n u su ario ab an d o n a u n a p á g in a W e b que co n tien e un a p ­
6. L o s a p p le ts n o p u e d e n c r e a r u n a c o n e x ió n ¡ to r r e d c o n c u a lq u ie r c o m p u ­
p le t. se d etien e la h eb ra principal del m ism o h asta q u e e l u su ario regrese a la página
ta d o r d is tin to d e a q u é l d e l c u a l s e o b tu v o e l a p p le t. E n p a r tic u la r , e l m é ­
(en c u y o m o m e n to se reinicia e l applet). S in e m b a rg o , las heb ras ad icio n ales n»> se
to d o g e t U R L e s tá lim ita d o . E n o tro c a so , u n a p p le t c a rg a d o p o r In tern et
d etien en . p»»r lo q u e se co n su m irán c ic lo s d e C P U au n q u e e l applet y a n o sea visible.
p o d ría a c c e d e r a c o m p u ta d o re s d e u n a in tra n e t q u e e s té n p ro te g id o s , o b ­
El u su a rio d e b e sobrescribir e l m éto d o s t o p d e lo s a p p le ts d e fo rm a que llam en al
te n ie n d o p o te n c ia l m e n te in fo rm a c ió n c o n fid e n c ia l.
mélexk) s t o p d e c u a lq u ie r hebra q u e se h a y a lanzado. Se pued e u sa r e l métod»>
7. L o s a p p le ls n o p u e d e n e s c u c h a r o a c e p ta r c o n e x io n e s d e o tr o s p u e rto s
a t a r t d e los ap p lets p ara c re a r una nuev a hebra y c o m e n z a r a ejec u tarla, lla m a n d o al
e n e l s is te m a lo c a l. D e o tra fo rm a e l a p p le t p o d ría in te rp re ta r in fo rm a ­
m é to d o s t a r t d e la h e b ra . E n la S e c c ió n D .5 .5 s e h a b la d e l»»s a p p le ts a n im a d o s.
c ió n local.
L a F ig u ra D .2 0 m u e s tra u n a p p le t q u e re u tiliz a la c o m p o n e n te G U I q u e s e h a
8. C u a n d o e l a p p le t c r e a u n a v e n ta n a a l n iv e l n u is a lto , c o m o u n a c a ja de
\ i s t o a lo la rg o d e e s te c a p ítu lo . O b se rv e m o s q u e e l a p p le t es m u y sim ila r, p e ro n»>
d iá lo g o , d e b e a p a r e c e r u n m e n s a je d e q u e la v e n ta n a n o e s fia b le . E sto
id é n tic o , a la a p lic a c ió n d e la F ig u ra D I. Est»> e s a s í. p o rq u e los ta m a ñ o s d e las
p re v ie n e a lo s p ro g ra m a s lo c a le s c o n fia d o s.
c o m p o n e n te s y e l a s p e c to g e n e ra l d e c a d a u n a d e e lla s v a ría n d e u n s is te m a J a v a a
9. l o s a p p le ls n o p u e d e n in v o c a r a p r o g r a m a s lo c a le s ( lla m a n d o a
o tro . E n la F ig u ra D .2 I se m u e s tra e l c ó d ig o q u e g e n e ra e s te a p p le t. e l c u a l s e p u e ­
R u n t i m e . e x e c ) . E s to g e n e ra ría a b su rd o s a g u je ro s e n la se g u rid a d .
d e u sa r ta m b ié n p a ra g e n e ra r la a p lic a c ió n d e la F ig u ra D .l.
10. U n a p p le t n o p u e d e a v e r ig u a r la s p r o p ie d a d e s d e l u su a r io , ta le s c o m o e l
n o m b re o e l d ir e c to r io p rin c ip a l. E s to p e rm itiría la tra n s m is ió n d e in f o r­
m a c ió n p riv ad a.
.JZW
11. l o s a p p le ls n o p u e d e n lla m a r a S y s t e m . e x i t . E s to p ro v o c a ría la te rm i­
n ació n d e l n av eg ad o r.

A u n c o n e s ta s re s tric c io n e s , e s im p o sib le a se g u ra r e l s iste m a c o m p le ta m e n te .


A ta q u e s d e n e g a c ió n d e s e r v ic io so n to d a v ía p o s ib le s ; e s d e c ir, u n a p p le t J a v a q u e
s im p le m e n te m o n o p o lic e la m a y o ría d e lo s re c u rs o s d e l s is te m a , ta le s c o m o la m e ­
m o ria o lo s c ic lo s d e C P U . A d e m á s lo s in v e s tig a d o re s e n c u e n tra n casi to d o s los
m e s e s n u e v o s a g u je ro s e n la se g u rid ad .
E sta s re s tric c io n e s p u e d e n re s u lta r p ro b le m á tic a s. P o r e je m p lo , ¿ c ó m o se p u e ­
d e c o n s e g u ir e l o b je tiv o d e d is trib u ir s o ftw a re p o r In te rn e t (ta le s c o m o p ro c e s a d o ­
r e s d e te x to s ) si e s to s p ro g ra m a s n o p u e d e n a c c e d e r a lo s re c u rs o s fu n d a m e n ta le s
d e l s is te m a lo c a l? L a re s p u e sta e s q u e e llo e s c ie rta m e n te im p o sib le . E n J a v a 1.1.
a lg u n a s d e e s ta s re s tric c io n e s p u e d e n e v ita rs e e n a q u e llo s a p p le ls q u e h a n p ro b a d o
s e r p a rte d e un c ó d ig o s e g u ro . E n o tra s p a la b ra s, e l u s u a rio lo c a l p u e d e p e rm itir ------------------------------------------------------- ...i» ..» ¿
q u e la s a p p le ls d e M ic ro so ft se e je c u te n c o n lib erta d . C u a n d o M ic ro so ft d is e ñ a un
a p p le t. c o d ific a in fo rm a c ió n q u e p ru e b a q u e e l a p p le t e s d e h e c h o d e M ic ro so ft y
p o r la n to s e p u e d e c o n fia r e n él. E s to se d e n o m in a f i r m a r un a p p le t. y re q u ie re la
te c n o lo g ía d e e n c rip ta c ió n d e c la v e p ú b lic a . A lg u n a s d e la s id e a s d e la e n c rip ta -
c ió n d e c la v e p ú b lic a se e s tu d ia ro n e n la S e c c ió n 7.4.4.

D.5.4 Conversión d e una ap licación en un applet

E n g e n e ra l, e s b a sta n te s im p le c o n v e rtir u n a a p lic a c ió n e n un a p p le t. s ie m p re que


la a p lic a c ió n n o in te n le e je c u ta r n in g u n a d e las a c c io n e s p ro h ib id a s a lo s a p p le ts.
L a s m o d ific a c io n e s b á sic a s a re a liz a r so n la s sig u ie n te s;

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.

D.5.5 Applets co n anim ación


e x c e p t o por el h e c h o d e q u e est e ap plet v ue lv e a c o l o c a r el c í r c u l o e n la par te s u ­
p e r i o r d e l a d i a g o n a l c u a n d o a l c a n z a l a p a r l e i n f er i o r , c o n l o q u e e l p r o g r a m a ( t e ó ­
C o m o y a se d is c u tió c n la S e c c ió n D .5 .4 . u n a p p le t q u e la n z a h e b ra s d e b e s o b r e s ­
rica m en te) s e e je c u t a ind efinidam ent e. P o r e ll o e s i m p o rta n te q u e el applet no
c rib ir lo s m é to d o s s t a r t y s t o p c o n im p le m e n ta c io n e s q u e lla m e n a lo s m é to d o s
c o n s u m a recu rs os u n a ve z q u e el n a v e g a d o r a b a n d o n a la pagi na w e b q u e contiene
s t a r t y s t o p d e las h e b ra s q u e h a y a n p o d id o c re a rse . Ilu stra m o s e s ta té c n ic a c o n
d ich o apple t ( r e c o r d e m o s q u e los ap plets n o pu e d e n lla m ar a e x i t ) .
e l aD nlct d e la F ip u ra I ) ? ? mu* p s s im ila r a la a n im a c ió n d e la F ii’u ra I). 16.
E n e s te a p p le t, te n e m o s (a lo s u m o ) u n a h e b r a a c tiv a re f e re n c iu d a p o r
n a un e le m e n to d e u n a c o m p o n e n te M e n u ite m o L i s t . D e b e ría s e r tra ta d o por
a n im a t o r . E l m é to d o s t o p d e l a p p le t te rm in a e s ta h e b ra y a s ig n a n u i l a a n i -
m é to d o a c t io n P e r f o rm ed e n la c la s e q u e im p le m e n ta la in te rfa z A c t i o n -
m a to r d e fo rm a q u e s e p u e d a n re c o le c ta r su s re cu rso s. E l m é to d o s t a r t c re a una
L is t e n e r .
n u ev a h e b ra y la in icializa (e s to tie n e e l e fe c to d e lla m a r a r u n ) . N o h e m o s so b re s­
•ctionPerformed M é to d o u sa d o p a ra tra ta r lo s e v e n to s d e a cció n .
c rito i ni t . p o r lo q u e s e u sa e l m é to d o p o r d e fe c to (q u e n o h a c e n a d a ). E s to p arece
Applet C la se q u e d e b e m o s e x te n d e r c u a n d o q u e re m o s im p le m e n la r u n ap plet,
c o rre c to , y a q u e siem p re s e lla m a a s t a r t in m e d ia ta m e n te d e sp u é s d e i n i t .
a p p le t P e q u e ñ o p ro g ra m a d e n tro d e o tr a a p lic a c ió n . N o rm a lm e n te se c a rg a d esd e
O b s e rv e q u e . e n e s te có d ig o , c u a n d o a b a n d o n a m o s la p á g in a W e b d e l a p p let y
In te rn e t y s e e je c u ta lo c a lm e n te e n un n a v e g a d o r c o m p a tib le c o n Java,
d e sp u é s v o lv e m o s, in ic ia m o s u n a h e b ra d ife re n te d e la q u e se e s ta b a e je c u ta n d o
a t a q u e d e n e g a c ió n d e s e r v ic io M e c a n ism o d e u n a p p le t d e J a v a c o n m a la s in te n ­
a n te s . S i n o d e s e a m o s e s to , p o d e m o s re s c rib ir s t o p y s t a r t p a ra s u s p e n d e r la
c io n e s q u e h a c e fa lla r a u n c o m p u ta d o r c o n s u m ie n d o la m a y o r p a rte d e lo s re ­
h e b ra , m e d ia n te u n a lla m a d a a s u s p e n d . y d e s p u é s c o n tin u a r c o n e lla , m e d ia n te
c u rs o s d e l s is te m a , c o m o la m e m o ria o lo s c ic lo s d e C P U .
u n a lla m a d a a r e s u m e (a lg u n o s n a v e g a d o re s tie n e n e rr o re s r e la c io n a d o s c o n
AWTEvent O b je to q u e a lm a c e n a in fo rm a c ió n so b re u n e v e n to .
su sp e n d ).
Bordar Layout E s e l c o n fig u ra d o r g rá fic o p o r d e fe c to p a ra lo s o b je to s e n la je r a r ­
q u ía W indow . S e u sa p u ra c o n fig u ra r un c o n te n e d o r m e d ia n te la c o lo c a c ió n de
c o m p o n e n te s e n c in c o p o sic io n e s d is tin ta s ( " N o r t h * . " S o u t h * . " E a s t " .
Resumen "W e st* . " C e n te r* ).
Button C o m p o n e n te u s a d a p a ra c re a r u n b o tó n e tiq u e ta d o . C u a n d o se p u ls a e l b o ­
E n e s te a p é n d ic e s e h a n e x a m in a d o la s b a se s d e l A b stra c t W in d o w T o o lk it tó n . se g e n e ra un e v e n to d e acció n .
(A W T ). El A W T e s u n p a q u e te q u e p e rm ite p ro g ra m a r G U I, lo q u e h a c e q u e los Canvas A re a re c ta n g u la r d e la p a n ta lla so b re la q u e u n a a p lic a c ió n p u e d e d ib u ja r
p ro g ra m a s te n g a n u n a a p a rie n c ia m á s p ro fe sio n a l q u e si se u tiliz a ra u n a E S sim ­ y re c ib ir e n tra d a s d e l u su a rio e n fo r m a d e e v e n to s p ro d u c id o s p o r e l te c la d o y
p le p o r p an talla. e l ra tó n .
L a s a p lic a c io n e s G U I d if ie re n d e la s a p lic a c io n e s c o n E S p o r p a n ta lla e n que Component C la se a b s tra c ta q u e e s la su p e rc la se d e m u c h o s o b je to s A W T . R e p re ­
e stán d irig id a s p o r e v e n to s . P ara d is e ñ a r u n a G U I. e s c r ib im o s u n a c la s e . D e b e m o s sen ta a lg o q u e tie n e u n ta m a ñ o y u n a p o s ic ió n y q u e se p u e d e d ib u ja r e n la
d e c id ir c u á le s v a n a se r lo s e le m e n to s b á sic o s d e e n tra d a y d e s a lid a , e le g ir una p a n ta lla a l ig u al q u e p u e d e re c ib ir e v e n to s d e e n tra d a ,
c o n fig u ra c ió n d e lo s m ism o s e je c u ta n d o u n m a n d a to s e t L a y o u t . a ñ a d ir c o m p o ­ c o n f i g u n i d o r O b je to q u e c o lo c a d e fo rm a a u to m á tic a las c o m p o n e n te s e n u n c o n ­
n e n te s a la G U I u s a n d o a d d . y tra ta r lo s e v e n to s , lo q u e e n J a v a 1.1 s e h a c e p o r ten ed o r.
m e d io d e las e s c u c h a s d e e v e n to s . T o d o e llo fo rm a p a rte d e la c ita d a c la se . configurador nuil C o n fig u ra d o r u s a d o p a ra c o lo c a r la s c o m p o n e n te s d e fo rm a
l 'n a vez h e m o s e s c rito e s ta c la s e , se d e fin e u n a c la s e q u e e x tie n d e a la c la s e p rec isa . P e rm ite tra b a ja r a l m é to d o s e t B o u n d s .
F ra m e . q u e c o n tie n e u n a ru tin a m a in y u n m a n e ja d o r d e e v e n to s q u e se e n c a rg a Container S u p e rc la s e a b stra c ta q u e re p re s e n ta to d a s las c o m p o n e n te s q u e p u e ­
d e p ro c e s a r e l e v e n to d e c ie rre d e la v e n ta n a . L a fo rm a m á s s im p le d e h a c e r e sto d e n c o n te n e r a o tr a s c o m p o n e n te s . N o rm a lm e n te tie n e u n c o n fig u ra d o r a s o ­
es u s a r la c la s e C l o s e a b l c F r a m e d e la F ig u ra D L L L a ru tin a m a in c re a u n a in s­ ciad o .
ta n c ia d e e s ta c la s e F ra m e e x te n d id a , c o lo c a u n a in s ta n c ia d e la c la s e G U I (c u y o Checkbox C o m p o n e n te q u e tie n e u n e s ta d o q u e in d ic a si e s tá a c tiv a d a o no.
c o n s tru c to r c re a r á c o n se g u rid a d u n p a n e l) d e n tr o d e l o b je to d e la c la s e F ra m e . y CheckboxGroup O b je to u s a d o p a ra a g ru p a r u n a c o le c c ió n d e o b je to s c h e c k b o x
e je c u ta u n m a n d a to p a c k y o tro sh o w so b re d ic h o o b je to . q u e g a ra n tiz a q u e so la m e n te u n o e s tá a c tiv a d o a la vez.
L o s a p p lc ts so n s im ila re s a la s a p lic a c io n e s , e x c e p to p o r e l h e c h o d e q u e son cholea C o m p o n e n te u s a d a p a ra s e le c c io n a r u n a ú n ic a c a d e n a d e c a ra c te re s de
e je c u ta d o s p o r o tro s p ro g ra m a s, c o m o lo s n av e g a d o re s. E sto s ú ltim o s su e le n e je c u ­ u n a lis ta d e o p c io n es.
ta rse c o n fu e rtes re s tric c io n e s d e se g u rid ad . D ifieren lig e ra m e n te e n d e ta lle s c o m o D i a l o g V e n ta n a d e a lto n iv el u tiliz a d a p a ra fa c ilita r d iá lo g o s,
q u e n o llam an a m a in . s in o q u e usan un m é to d o i n i c e q u iv a le n te a l c o n stru c to r. e r r o r c i a s s L o a d e r E rro r g e n e ra d o si n o e s tá d is p o n ib le u n a c la s e n e c e sa ria c o ­
A q u í se h a n e s tu d ia d o so la m e n te las c a ra c te rís tic a s b á sic a s d e l A W T . p e ro hay m o fic h e ro . c l a s s .
lib ro s e n te ro s d e d ic a d o s a l tem a. e v e n to s S o n p ro d u c id o s p o r e l s is te m a o p e ra tiv o e n v a ria s situ a c io n e s , c o m o en
la s o p e ra c io n e s d e e n tra d a , y se p a s a n a Ja v a .
F i l e D i a l o g V e n ta n a a l m á s a lto n iv e l u tiliz a d a p a ra o f r e c e r u n a e le c c ió n en tre
Elem entos d el juego to d o s lo s fic h e ro s e n un d ire c to rio .
FlowLayout C o n fig u ra d o r p o r d e fe c to d e P a n e l. S e u s a p a ra c o n fig u ra r u n c o n ­
te n e d o r a ñ a d ie n d o c o m p o n e n te s e n fila d e iz q u ie rd a a d e re c h a . C u a n d o no
A b s tr a c t W in d o w T o o lk it ( A W T ) H e rra m ie n ta G U I q u e p ro p o rc io n a n to d o s los
q u e d a su fic ie n te e s p a c io e n u n a fila , s e g e n e ra u n a n u ev a,
s is te m a s Ja v a . F a c ilita las c la s e s b á s ic a s u tiliz a d a s e n la c re a c ió n d e in terfa c es
rraraa V e n ta n a d e a lto n iv e l c o n b o rd e y q u e p u e d e lle v a r a s o c ia d o u n o b je to M e-
d e u su ario .
n u B a r.
ActionEv#nt E v e n to g e n e ra d o c u a n d o un u s u a rio p re s io n a u n a c o m p o n e n te gatParaiMCar M é to d o u s a d o p ara a c c e d e r a lo s p a rá m e tro s d e u n a p p le t esp e c i-
B u t t o n . p u ls a la te c la d e re to m o e n u n a c o m p o n e n te T e x t F i e l d . o s e le c c io ­
I ic a d o s e n la e tu iu e ta <PARAM>.
Graphics C la s e a b stra c ta q u e d e fin e v a n o s m é to d o s q u e se p u e d e n u t d i / a r pura 3. E l c o n fig u ra d o r d e b e a p a re c e r a n te s d e las lla m a d a s a a d d .
d ib u ja r form as. 4. E s u n e rr o r h a b itu a l a p lic a r a d d o a s o c ia r un c o n fig u ra d o r a l c o n te n e d o r
h e b r a F lu jo d e e je c u c ió n s e p a ra d o . S e p u e d e n e je c u ta r v a ria s h e b ra s s im u ltá n e a ­ e rró n e o . P o r e je m p lo , e n u n c o n te n e d o r q u e c o n tie n e p a n e le s, a p lic a r el
m e n te . g e n e ra n d o a s í un p ro g ra m a c o n c u rre n te . L a s h e b ra s so n n e c e sa ria s p ara m é to d o a d d sin e s p e c ific a r e l p a n el, h a rá q u e se a p liq u e a l c o n te n e d o r
e je c u ta r a n im a c io n e s , p rin cip al.
init E q u iv a le n te e n lo s a p p le ts a u n c o n stru c to r. S e le lla m a c u a n d o s e c a rg a un 5. S i le fa lta un a rg u m e n to d e tip o S t r i n g a l m é to d o a d d p a ra e l c o n fig u ­
ap plet. ra d o r B o r d e r L a y o u t , s e u sa * C e n t e r " p o r d e fe c to . U n e rr o r h abitual
in t e r f a z AetionListener In te rfa z u s a d a p a ra tra ta r e v e n to s d e ac c ió n . C o n tie n e e s e s p e c ific a rlo d e fo rm a in c o rre c ta , c o m o p o r e je m p lo e s c rib ie n d o
e l m é to d o a b s tra c to a c t i o n P e r f o r m e d . ’ n o r t h " . L os c in c o a rg u m e n to s v á lid o s s o n " N o r t h * . " S o u t h * .
i n t e r f a z g r á f ic a d e u s u a r i o ( G U I ) A lte rn a tiv a m o d e rn a a la E S p o r p a n ta lla q u e ' E a s t *. " W e s t " y " C e n t e r * . E n J a v a L l . si e l S t r i n g e s e l seg u n d o
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 e l u s u a rio m e d ia n te b o to n e s , c u a d ro s p a rá m e tro , u n a e x c e p c ió n e n tie m p o d e e je c u c ió n c a p tu ra rá e l e rro r. Si
d e se le c c ió n , lín e a s d e e d ic ió n , lis ta s d e se le c c ió n , m en tís y e l ratón, u sa m o s e l e s tilo an tig u o , d o n d e e l S t r i n g a p a re c e p rim e ro , p u e d e que
i n t e r f a z windowListsnor In te rfa z u sa d a p a ra e s p e c ific a r e l tr a ta m ie n to d e los n o s e d e te c te e l e rro r.
e v e n to s d e v e n ta n a , c o m o e l c ie r re d e u n a v entan a . 6. L a a n im a c ió n re q u ie re e l u s o d e h e b ra s . S in e lla s, e s im p o rta n te q u e o b ­
Label C o m p o n e n te u tiliz a d a p a ra e tiq u e ta r o tra s c o m p o n e n te s c o m o C h o i c e . se rv e m o s q u e la lla m a d a d e r e p a i n t a u p d a t e n o e s in m e d ia ta y q u e a
L i s t . T e x t F i e ld o Panel, v eces se re tra sa h asta q u e s e p n x lu c e u n e v e n to . E l c ó d ig o a c o n tin u a c ió n
l e n g u a j e d e h i p e r t e x t u ( H T M L ) L e n g u a je q u e c o m p re n d e n lo s n a v e g ad o res d e la lla m a d a a r e p a i n t p o d ría e je c u ta rse a n te s d e la e je c u c ió n real d e la
W eb . C o n s ta d e m a n d a to s d e te x to y fo rm ato , a c c ió n d e v o lv e r a p in tar. P o r e llo , e s u n a b u e n a id e a q u e r e p a i n t s e a la
lim ita c io n e s d e lo s ap p leL s R e stric c io n e s q u e e v ita n la e je c u c ió n d e a p p le ts con ú ltim a in s tru c c ió n .
m a la s in te n c io n e s . E n tre o tra s , lo s a p p le ts n o p u e d e n a c c e d e r a lo s fic h e ro s lo ­ 7. S e n e c e sita c ó d ig o e sp e c ia l p a ra p ro c e s a r e l e v e n to d e c ie r re d e u n a v e n ­
c a le s o a o tr o s c o m p u ta d o re s d is tin to s d e a q u é l d e s d e e l q u e s e h a c a rg a d o el tana.
a p p le t. 8. S i falta u n fic h e ro . c l a s s se g e n e ra rá u n e rr o r c l a s s L o a d e r . E ste
List C o m p o n e n te q u e p e rm ite la s e le c c ió n d e u n a lista d e s p le g a d a d e c a d e n a s de e rr o r ta m b ié n se p u e d e p ro d u c ir si e l fic h e ro n o e s a c c e sib le d e b id o a un
c a ra c te re s. P u ed e p e rm itir la s e le c c ió n d e u n o o v a rio s e le m e n to s , p e ro u tiliz a m o d o d e p ro te c c ió n in co rrecto .
m á s e s p a c io e n la p a n ta lla q u e C h o i c e . 9. L os p a q u e te s n o fu n c io n a n e n a lg u n o s n av e g a d o re s.
p a c k M é to d o u s a d o p a ra c o m p a c ta r u n o b je to F ra m e h a s ta c o n s e g u ir q u e su ta ­ 10. L os a p p le ts se e je c u ta n c o n m u c h a s re s tric c io n e s . E s im p o rta n te d a rse
m a ñ o sea lo m e n o r p o sib le , e n fu n c ió n d e su s c o m p o n e n te s, c u e n ta d e q u e a lg u n a s d e e s ta s re s tric c io n e s s e e lim in a n c u a n d o s e tra ta
paint M é to d o u s a d o p a ra d ib u ja r e n u n a c o m p o n e n te . N o rm a lm e n te lo s o b re s c ri­ d e a p p le ts q u e p e rte n e c e n al s iste m a lo cal, p o r lo q u e si u n a p p le t trab aja
b e n las c la s e s q u e e x tie n d e n a C a n v a s . lo c a lm e n te , p e ro fa lla e n In tern et, p u e d e s e r p o rq u e se h a to p a d o c o n una
Panel C o n te n e d o r u sa d o para a lm a c e n a r u n a co le c c ió n d e o b je to s, p e ro sin b o rd es, re stricció n .
repaint M é to d o u sa d o p a ra v o lv e r a d ib u ja r u n a c o m p o n e n te . P o r d e fe c to llam a 11. L o s a p p le ts q u e s e e je c u ta n e n e l A p p le t V ie w e r a v e c e s fallan b a jo N e ts ­
a update. c a p e . y v ic e v e rsa , d e b id o a fallo s e n a m b o s p ro d u cto s.
setLayout M é to d o q u e a s o c ia u n c o n fig u ra d o r a u n c o n te n e d o r, 12 . N o se p u e d e c a m b ia r e l ta m a ñ o d e lo s a p p le ts : e l ta m a ñ o v ie n e d e te rm i­
show M é to d o q u e h ace v is ib le u n a c o m p o n e n te . n a d o p o r la e tiq u e ta <a p p i . e t > d e l fic h e r o H T M L . E s o b lig a to r ia la p re ­
TextArea C o m p o n e n te q u e p re s e n ta a l u su a rio v a ria s lín e a s d e tex to . s e n c ia d e la e sp e c ific a c ió n d e l ta m a ñ o .
TextField C o m p o n e n te q u e p re s e n ta a l u s u a rio u n a s o la lín e a d e tex to , 13. U n e rr o r típ ic o e n H T M L e s o lv id a r la e tiq u e ta d e c ie rre c o rre sp o n d ie n te
update M é to d o lla m a d o p o r r e p a i n t . P o r d e fe c to , b o rra la c o m p o n e n te y llam a a l a d e ap ertu ra.
d e sp u é s a p a i n t .
window V e n ta n a d e a lto n iv e l s in b o rd e.

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

D .l4. E sc rib a u n p ro g ra m a d e c o p ia d e fic h e ro s (E je rc ic io 2 .1 0 ) q u e u se d o s o b ­ p rin c ip a l d e b e r ía d is p o n e r d e un v e c to r c o n e s a s c o m p o n e n te s d e e n tra d a


je to s F i l e D i a l o g p a ra o b te n e r los n o m b re s d e lo s fich e ro s. m á s e l c o n te n e d o r.
Estructuras de datos en

Java Compatible con

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.

Acerca del Autor


Mark Alien Weiss es Catedrático de Informática en la Florida International
University. Se doctoró en Ciencias de la Computación en la Universidad de
Princeton donde estudió bajo la dirección del profesor Robert Sedgewick.
Ha recibido diversos premios de investigación y reconocimientos por su
espléndida labor docente. Tiene una amplia experiencia en el manejo de los
lenguajes estructurados más modernos, que se ha materializado en diversos
textos de amplia divulgación como Algorithm s, Data Structures and Problem
Solving with C++ y los libros de la serie Data Structures and A lgorithm
Analysis in Pascal, Ada, C y C++, publicados por Addison-Wesley.

Você também pode gostar