Sunteți pe pagina 1din 291
FUNDAMENTOS DE ALGORITMIA G. Brassard / P. Bratley Départament d’informatique et de recherche opérationelle Université de Montréal ‘Traduecién: Rafael Garefa-Bermejo Facultad de Fisicas Universidad de Salamanca Revisi6n técnica: ‘Narciso Marti Facultad de Mateméticas Universidad Complutense de Madrid Ricardo Pea Escuela Superior de Informética Universidad Complutense de Madrid Luis Joyanes Aguilar Facultad de Informatica Universidad Pontificia de Salamanca en Madrid PRENTICE HALL Madild + Mésic «Santa de Bogot + Buenos Aires + Carats * Lima + Montevideo San Juan + San José »Saniago + Sto Paul © White Pins Contenido PROLOGO PROLOGO A LA EDICION EN ESPANOL, 1. PRELIMINARES.... IntooucaION... QUES UN ALGORITMO? INOTACION PARA 105 PROGRAMAS, REERE 1s 16 NOtAGION MATEMATICA. 141 a2 143 aa 145 146 147 "TcNICA DE DEMOSTRACION 1: CONTRABIOCION. "TReNICA DE DEMOSTRACION 2: INDUCCION MATEMATICA.. 161 162 163 164 CAleulo proposicional. Teoria de conjuntos. Enteros, reales e intervalos.. Funclones y relaciones . Cuantificad or een Sumas y productos Misceldnea, 18 El principio de induccion matematica Un asunto completamente distinto Induccién matematica generalizada Induccién constructiva. : BR SERS LERE srrooueroN. a 2.2 PROBUBIAS YEARS. 213. ERCENGA DE 108 ALGORTMOS at ANALISS D4 CASO MADIO® De oCAS0 OR 2 5 UNA OMERACON RUREDTALT 226 {Pox QUE AY QUE SUSCAR LA ECRNE? 27 ymmCbacesnaenarnii 27.1 CSoulo de determinants... 272 Ondenedién. nn 273 Maltiplcacién de entros muy grandes. 27: Clea del mixime comin cvior. 273 Caleulo de la sucesion de bona. 1176 ‘Tranefermada de Fourier. 228 {CUANDO QUEDA SPECIRCADO UN ALOORETO? 29 PROBA nn ee 230 Rermancays y Tees Mis AvANzADOE 3 NOTACION ASINTOTICA onsen a $32. UNA NOTACION PARA “LOREEN DE” 83 Oma noracen asarémca, 8A NotACN ABVTETCA CONDICIENA 185 NotACHN ASVTETICA CON VANOE PARSER {36 OPGBACONES SORES NOTACON ASIITOTICA nnn 37 PROELEMAS vn [38 REFEINCAS Y TTOS MAS AVANZADOS 4 ANAUSISDE ALGORITMOS.. 44 beroouccdn.. = 42, ANhims be Las eaucTURAS Os ConTROL.- $21 Secuencia enn 422 Backes “pan (desde). 423 Unmadasreeusivas 424 Bucles“mientas”y “reper 43, Usopeun earner... SRB ReesvaNRIBIAas @ m2 12 me M6 18 Contenido bx 44 EMeL0s ADICONALES. a 0 45 ANAUSS DEL CASO MEDIO. aoe 6 46 ANAUSIS AMORTZADO wns : ae 447 RESOLUGON DE RECURRENCIS : one) 47.1 Suposiionesinteligents... 132 472. Recurrencias homogéness os 4473. Recurrencins no homogeness - uo 474 Cambios de variable 148 475 Transformaciones de interval. 156 447.6. Recurencia asintticas 17 48 PROBLEMS an 160 49) Rerouncins ¥ Textos Mis AVANZAOS 166 5 ESTRUCTURAS DE DATOS. : a] 5 MATRICES (A284), PLAS YCOLAS ao 17 $52 ROCITROS Y FUNTEROS (APUNIADORES) 170 53 om 54 — — ws 55 Amous.. ms a 5 5.6 TABLAS ASOCIATAS 181 57 Mowricutos (3). : 184 S58 Mowricutos mos a ae 539) ESTRUCTURAS DE CONUNTOS DISUNTOS (PARTI) : 198 $10 PRORLEMAS nn 204 SSA RIFERENCAS Y TRIOS MAS AVANZADOS a) 6 ALGORIIMOS VORACES.. = a 61 Dania vueta (1) a ait {62 CARACTIRISICAS GENERALES DE L$ ALGORITHMS VORACES 213 63 Graros: mous De RECUHRDAETO ADO. 215, 631 Algoritmo de Kruskal nnnnnnnn 207 632 Algoritmo de Primm 2 64 Graros: Canavos anams. m3 65 EL PROMEMA DELA MOCIELA (Donon a 66 PLANICACEN omen ae) 661 Minimizacién del empo del sistema. BL X Fundamentos de Algoritmia 662 Planificacén con plazo fo. 67 PRORLMAS (68 RETERENCTAS Y THIS MAS AVANZADOS. 7 DIVIDE Y VENCERAS.... {7A TstmODUCCION: MLLTILICACION DE ENTEROS MUY GRANDES 72. BLcASO GENERAL. 73 BOSQUEDA BARA ns 74 Onpaiacion 7A Ondenacin por fasion 742. Ondenacén répida (Quicksor) 75 BOSQUEDA DELA MEDIAN worn 17 MULnPLICACON Ds ManRES 2 78 73 730 8 PROGRAMACION DINAMICA. 81. Dos sRMPLOs ENCE. 81.1. Cllealo del coecente binomial. 82 83 84 85 {86 MULTTLICACION ENCADENADA OF MATRICES. £17. roQUES QUE ARLCAN RECURSION 188 Funciones con MEMORIA 89 810 9 EXPLORACION DE GRAFCS... 9: Ganros ¥Jutcos: nRODUCCION 92 RecoRRDO DE AsHOUES.. BERS BRB NR ees 74 BBE EBS 8 0 92.1. Preacondiconamiento 93. RECORNDO BN PROFUNDIDAD: GRAFOS NO BUGIS 931 Puntos dearticlacén.. 94 RECORRDO EN PROFUNDIDAD: GRAFOS BILGDOS. 94.1 Grafoeacclicos: ondenacén topolgica 95 RECORRDO EN ANCHURA nn ee 961. El problema dela mochil 3) 9462. El problema de las ocho reinas 963 Eleaso general. 8.7 RAYAEACION YPODR 97.1 El problema de a asignacién 972 El problema de a mochil (4) 973 Consideaciones generale. 98 EL RNIMO De MAMA 99 PROWINAS 9230 REFERENCIAS YTEXTOS MAS AVANZADOS ALGORITMOS PROBABILISTAS sen 101 rnopveabN. : 102 PRORARLISTA NO BUCA NCEE... 303 Trayro ssrexaDo MENTE TIPO FROM 04 GovaRacton Da NoMin0s PSELDOALEATORNCS... 05 ALGORITMOS PROBARLISTAS NUMEIEDS nn 1051 Laaguja de Baton annem 10532. Integrin numérica nn 1053 Conteo probabilista.. 106 Arconms bE MONTE CARLO on 1061 Vesificaiin dela mulplicnn de matrices 3062 Comprobacén de primalidad.... 1063 Puede un némero ser probablemente primo? 1064 Amplicacin dela venaja estocistica. 107 ALCOR DE LAS VoCHS 10741 Bproblema de las ocho reins, segunda parte 1072. Selecién y ordenacion probabil. 1073 Tablas de depersin universes 7A Factorizackén de enteos muy grandes. 103 SQBES RISE EERE E BAS SHEE SEES SER B& S888 x” 2x Fundamentos de Algoritmia 1 ALGORITMOS PARALELOS, 2 ns us ns 0 ua 12. COMPLEJIDAD COMPUTACIONAL enn wa m2 m3 ma ms [Us MODELO PARA LA COMPLTAGEN PARAL nn “Teenacas BAStAs. 1121. Ciémputo con un drbal bina completo 1122 Duplicacén de punter nen TRAIN VERON enn ‘Dos mr.0s DE TOKIA DE GRAF. MAA Camis mini rn 142 Componentes conexcs... _BVALUAGON DE RESON BN PARALELO. _REDES DE ORDENACION EN FARALELO. 1161. Elprincpio eroun0 1162 Redes de fasin en paaiclo... 163. Redes de ordenacion mejoradas ORDENACION BN PARAL ens 1174. Pretminares M72 Laden dave nono M73 Blalgortmoswocncrmrnnn ALTA Unesboro de los detalles COMEXTARIOS ACKECA D5 LAS PRAM EREW ¥ CROW seen COMPUTO DISTRO cern Pron. REFERENCIAS Y TEXTS MAS AVANZADOS. [BamcouCerEN UN ETMFLO SEN nn ARCUVANTOS DE LA TEORIA DE LA INFORMACION. 1221 La complgidad de la ondenae6n 1222 La compleide, al rescate de la algorisnia.. ARCUMENTOS DEL ADVERSARO 1231. Basqueda del miximo en un vetor. 1232 Comprobecién de la conectvidad de un gato. 1233 La mediana, segunda patte oe onwnon REDUCCONES NEALE T2A1 Definiones formate. = 1242 Reduccones entre probiemas matriaies a 12A3_ Redluccones entre problemas de caminos minim. [brmonucciOn 4 LA NP-CoMLEnTD.. 419 419 £8 S68 rt 85 SS 8888 & 61 Contenido xiii sa 1252 1253 54 255 256 126 UN 200 DE CLASES DE COMPLETDAD onnnnn 127 PROBLEMS sn _ 128 RUreKENCIASY THCTOS MAS AVANZADOS. 13 ALGORITMOS HEURISTICOS Y APROXIMADOS..----- 384 ALconmios neunisces... iia 112 12 1321 1322 1323 133 1331 1332 a4 Bs 154 1352 NOTAS FINALES.. INDICE ANALETICO enon ALCORITOS APRONMADOS PROOLEMAS DE AFRORIMACION CON DIICUTAD NP. Lonasso, xo DETTO [ExrOQUES De AmOMTAACION.. Las clases Py NP. sn — Reducciones polinémicasa.---- Problemas NF-completos. ‘Algunas demostraciones deo complet = Problemas NP-ditiles.-. Algortmos no deterministas. Segege CColoreado de un gato. Elviajane.. El viajnte métrico.. El problema de la mochila(@) Lenado de caja Problemas de aproximacin con dificult absolut Problema de aproximacién con dificubtad relativa, nado de ats, segunda ater Et problema dela mocha (6) BO ekEE SES BREE ERR BOB a g Capitulo Preliminares 1.1 INTRODUCCION En este libro hablaremos de algoritmos y de algoritmia. Este capitulo introduc- torio define en primer lugar lo que queremos decir con estas dos palabras. Hus- traremos esta discusién formal mostrando varias formas de realizar una sencilla ‘multiplicaci6n. También las tareas de todos los dias poseen profundidades ocul- tas. Ademds aprovecharemos la oportunidad para explicar por qué pensamos ‘que el estudio de los algoritmos es a la vez itil e interesante. A continuacién explicaremos la notacién que vamos a utilizar a lo largo de to- do el libro para describir algoritmos. El resto del capftulo consta en esencia de recordatorios de cosas que esperamos que el lector ya haya visto en otros luga- res. Después de una breve revisién de la notacién matematica esténdar recorda- remos dos técnicas de demostracién stiles: la demostracién por contradiccién y Ia demostracién por induccién matemitica. A continuacién enumeramos algu- nos resultados acerca de limites, sumas de series, combinatoria elemental y pro- abilidad. Los lectores que ya estén familiarizados con estos temas deberian de leer las Secciones 1.2 y 13, y examinar brevemente el resto del capitulo, obviando aquel ‘material que ya les resulte conocido. Es preciso prestar especial atencién a la Sec- cién 1.64. ‘Aguellas personas que tengan olvidadas sus matemsticas basicas y sus cien- cias de la computacién, deberian cuando menos leer los principales resultados que presentamos para refzescar su memoria, Nuestra presentacién es sucinta e informal y no pretende ocupar el puesto de cursos de andlisis elemental, de cél- culo ni de programacién, La mayoria de los resultados que damos se necesitarén posteriormente en el libro; a la inversa, en los capitulos posteriores intentaremos no utilizar resultados que vayan més allé de las bases que se han reunido en es- te capitulo. 2 Pretiminares Capitulo 1 1.2 .QUE ES UN ALGORITMO? Un algoritmo, nombre que proviene del matemstico persa del siglo IX al Khowarizmi es sencillamente un conjunto de reglas para efectuar algtin cal- culo, bien sea a mano o, més frecuentemente, en una méquina. En este libro ‘nos preocupan fundamentalmente los algoritmos que van a ser utiizados en tuna computadora. Sin embargo, también podrian inclurse otros métodos sis- tematicos para calcular un resultado; los métodos que aprendimos en la es- ‘ucla para sumar, multiplicar y dividir nimeros, son también algoritmos, por ejemplo. Muchos monaguillos ingleses, aburridos por platicas poco intere santes, pasan el tiempo calculando la fecha de Pascua y empleando el algo- ritmo que se emplea en el Devocionsrio Anglicano. El algoritmo mas famoso della historia procede de un tiempo anterior al de los antiguos griegos: se tra ta del algoritmo de Euclides para calcular el maximo comin divisor de dos enteros. La elecucisn de un algoritmo no debe de implica, normalmente, ninguna de- ‘isin subjetiva, ni tampoco debe de hacer preciso el uso de I intuicion ni dela treatividad. Por tanto se puede considerar que una receta de cocina es un algo- ritmo si describe precisamente la forma de preparar un cierto plato, proporcio- ‘nindonos las cantidades exactas que deben ce utilizase y también instrucciones detalladas acerca del tiempo que debe de guisarse. Por otra parte, si se incluyen nociones vagas tales como «salpimentar a su gusto» o «guisese hasta que est& ‘medio hecho» entonces no se podria llamar algoritmo, ‘Una aparente excepcién a esta regla es que admitiremos como algoritmas unos procedimientos que efectéan elecciones aleatorias acerca de lo que hay que hacer en una situacién dada, El Capftulo 10 en concreto trata de estos algoritmas probabilistas. Lo importante aqui es que el término waleatorio» no quiere decir a bitrario; por el contrario, utilizamos valores selecionados de tal manera que la probabilidad de seleccionar cada uno de los valores es conociday est controla~ 4a, Una instruccidn tal como «seleccionar wn nGimero entre 1 6» sino se da nin- {gin detalle ms, no es admisible en un algoritmo. Sin embargo, seria aceptable decir seleccionar un némero entre 1 y 6 de tal manera que todos los valores ten- gan Ia misma probabilidad de ser seleccionados», En este caso, cuando se eee te el algoritmo manualmente,quiza decidamos abedecer esta instruccintirando tun dado sin cargar; en una computadora, podriamos implementarlo ulizando lun generador de numeros peeudoaleatorios. Cuando se utiliza un algoritmo para calcular la respuesta de un problema concreto lo normal es suponer que las reglas nos dardn, si se aplican correcta- ‘mente, la respuesta correcta, Un conjunto de regles que caleula que 23 veces 51 3 1.170 no suele ser es atl en una prictca general. Sin embargo en algunas cir- cunstancias, estos algoritmos aproximados pueden resulta dtiles. Si deseamos calcular la riz cuadsada de 2, por ejemplo, ningtn algoritmo nos podré dar una respuesta exacta en notacién decimal, por cuanto la representacién de es infi- ritamente larga y no se repite, En este caso, nos conformaremos con que el al- Secclén 1.2 Qué es un algoritmo? ‘oritmo nos pueda dar una respuesta que sea tan precisa como nosotros decida- ‘mos: 4 digitos de precisién, o 10 digits o los que queramos. Lo que es mas importante, como veremos en el Capitulo 12, es que hay pro- bblemas para los cuales no se conocen algoritmos practcos. Para tales problemas, 1a utilizacin de uno de los algoritmos disponibles para encontrar la respuesta ‘exacta requeriré en la mayoria de los casos un tiempo excesivo: por ejemplo, al- ‘gunos siglos. Cuando esto sucede, nos vemos obligaclos, si es que necesitamos dlisponer de alguna clase de solucién al problema, a buscar un conjunto de re- gla que creamos que nos van a dar una buena aproximacién de la respuesta co- recta, ¥ que podremos ejecutar en un tiempo razonable. Si podemos demostrar {que la respuesta computada mediante este conjunto de reglas no es excesiva- ‘mente errinea, tanto mejor. En algunas ocasiones ni siquiera esto es posible, y solamente podremos fiarnos de nuestra buena suerte. Este tipo de procedimien- to, basado fundamentalmente en el optimismo y frecuentemente con un apoyo tebrico minimo, se denomina wn algoritmo heuritico o simplemente una heuristi- ‘a, Obsérvese una diferencia crucial entre los algoritmos aproximados y la het- ristica: con los primeros podemos especificar el error que estamos dispuestos @ ‘aceptar, con la segunda no podemos controlar el error, pero quiza seamos capa- ‘es de estimar su magnitud “En los doce primeros capitulos de este bro, a no ser que el contexto indique claramente lo contrario, suponemos que un algoritmo es un conjunto de reglas para calcular la respuesta correcta a algtin problema. Por otro lado el Capitulo 13 trata en su totalidad de algoritmos aproximados y de heuristica. Ahora se puede definir la Algoritmia simplemente como el estudio de los al- _goritmos. Cuando nos disponemos a resolver un problema, es posible que haya toda una gama de algoritmos disponibles. En este caso, es importante decidir ‘cul de ellos hay que utilizar. Dependiendo de nuestras prioridades y de los I- ites del equipo que esté disponible para nosotros, qui2d necesitemos seleccio- nar el algoritmo que requiera menos tiempo, o el que utilice menos espacio, oe! ‘que sea mas fécil de programar y asf sucesivamente. La respuesta puede depen- der de muchos factores, tales como Jos ntimeros implicados, la forma en que se ‘presenta el problema, o la velocidad y capacidad de almacenamiento del equipo de computacién disponible. Quizds suceda que ninguno de los algoritmos di pponibles sea totalmente adecuado, asi que tendremos que disefar un algoritmo ‘nuevo por nuestros propios medios. La Algoritmia es la ciencia que nos permi- te evaluar el efecto de estos diferentes factores externos sobre ls algoritmos dis- ponibles, de tal modo que sea posible seleccionar e! que més se ajuste a nuestras ‘ircunstancias particulares; también es la ciencia que nos indica la forma de dl- sefiar un nuevo algoritmo para una tarea concreta ‘Consideremos la aritmética elemental como ejemplo. Supongamos que tene- ‘mos que multiplicar dos enteros positivos utilizando nada mas que papel y Ii- pz. Sinos han educado en Norteamérica, lo més probable es que se multiplique sucesivamente el multiplicando por cada una de las cifras del multiplicador,to- ‘madas de derecha a izquierda, y que se escriban estos resultados intermedios uno tras otro, desplazando cada linea un lugar a la izquierda, y que finalmente se sumen todas estas filas para obtener la respuesta. Por tanto para multiplicar 981 por 1.234 se construird una disposicion de némeros como la de la figura 111(@}-Si, por otra parte, le han educado a uno en Inglaterra, es mis probable que trabajemos de izquierda a derecha, dando lugar a la distribucién que se muestra en la figura 1.1(0). oat oe 234 me 3 981 2903 1962 198 2913 set _ 3 121055% ai0ss4 ® ) Figura 11. Mbpteacl6n (0) americana ()ingesa Estos dos algoritmos para la maltiplicacin son muy similares: son tan pare- cidos, de hecho, que nos referiremos a ellos como el algoritmo «clésico» de la ‘multiplicacién, sin preocuparnos por cudl de ellos queremos deci. En la figura 12 ellustra un tercer algoritmo distinto para hacer lo mismo. 981 141234 490 2468 245 4936 (4936 2 9872 6119744. 19.744 30 39488 1578976 78.976 7 157952 157.952 3 315904 315.904 1 631.808 631.808 210556 Figur 12. Mabipcaclin erase Se escriben el multiplicando y el multiplicador uno junto a otro. Se hacen dos columnas, una debajo de cada operando, repitiendo la regla siguiente hasta que ‘el ntimero de la columna izquierda sea un 1: se divide el némero de la columna dela izquierda por 2, ignorando los restos y se duplica el ndimero de la calum- ta de la derecha sumndolo consigo mismo. A continuaci6n se tachan todas las filas en las cuales el nimero de la columna izquierda sea pas, y fnalmente ses Secclin 1.2 1Qué es un algortmot 5 ‘man los niimeros que quedan en la columna de la derecha, La figura ilustra la forma de multiplcar 981 por 1.234, La respuesta obtenida es: 1.234 + 4.936 + 19.744 + 78.976 +. + 631.808 210.55. ste algoritmo, que algunas veces se llama multiplicacin 2 ja russe se parece aque se emplea en el hardvare de una computadora binaria, Tiene la ventaja de ‘que no es preciso memorizar ninguna tabla de multiplicacin. Lo tnico que hay {que saber es sumar, y también dividir un mimero por dos. Aunque no es el al- {goritmo que suele ensefarse en la escuela, ofrece ciertamente un método alter- ‘ativo de papel y lapiz para multiplicar dos enteros positives. En las figuras 1.3 y 1.4 se ilustra otro algoritmo distinto para multiplicar dos enteros positivos. Una vez més, ilustrazemos el método multiplicando 981 por 41234, Para este algoritmo, sin embargo, es necesario que el multiplicando y el ‘multiplicador tengan el mismo nimero de cifras y ademés se necesita que este -iimero sea una potencia de dos, tal como 1, 2,4, 8,16, etc. Esto se arregla fécil> ‘mente afadiendo ceros por la izquierda si es necesario: en nuestro eemplo, aa ddimos nada mas un cero a la izquierda del multiplicando, transformandolo en (0981, de tal manera que ambos operandos tengan cuatro cifras, Mutiplicn Desplasar Resultado a e 2 4 108: ® o 4 2 206-+ . i a 2 2 om: i) as 0 2754 Tr10554 lqura 13 Matiplcacin de O81 por L234 mediate dey vencrds ‘Ahora para multiplicar 0961 por 1.234 multiplicamos primero la mitad aquier. dda del multiplicando por la mitad izquierda del multiplicador (12), y escribimos el resultado (108) desplazado hacia la izquierda tantas veces como cifras haya en el multiplcador: cuatro, en nuestro ejemplo. A continuacién multiplicamos la mi- tad izquierda del multiplicando (09) por la mitad derecha del muliplicador (4), 'yescribimos el esultado (306) desplazado hacia la izquierda tantas veces como la ‘mitad de las cifras que haya en el muliplicador: dos, en este caso. En tercer lugar ‘multiplicamos la mitad derecha del multiplicando (61) por la mitad izquierda de smultiplicador (12), yescribimos el resultado (972) desplazado también hacia a iz- Auierda tantas veces como la mitad de las cifras que haya en el muliplicador, yen Cuarto lugar multiplicamos la mitad derecha del multiplicando (81) por la maitad derecha del multiplicador (4) y escribimes el resultado (2754), sin desplazario en absoluto. Por dltimo sumamos los cuatro resultados intermedios segin se mues- tra en la figura 1.3 para obtener la respuesta 1.210.354. 6 Pretbnares Capitulo 1 Muteipear Desplazar Resultado ) . 4 2 0 i) 0 2 1 0 i) s 1 1 9 FS) 52 ° 8 08 Figura 14 Maiplicactn de 09 por 12 mediate die» vencerés Sise ha seguido el funcionamiento del algortmo hasta el momento, se verd que heros redcko la multplicacién de dos nimeros de cuatro irs a cstro mali plicaciones de nmeros de dos cra (09 «12, 09x 34, Bx 2 81 x34) junto con ln derto némero de desplazamientcs yuna suma final. HI rico consist en obser ‘ar que cada una de esta malipicaciones de nimeros de ds cifras se puede ee twa exactamente dela misma manera salvo que cada mulilicacin de némeros de dos cfs requiere cuatro maltiplicacones de némeros de una cfa algunos desplazaienteny una suma, Por eemplo la gura 14 muestra cémo maltpicar 9 12, Caleulamos 0x1 ~ 0, desplazado hacia la inquierda dos veces 0 ~~ 0, desplazado hacia la oquierda una ver; = 9, desplarado a la iaquerda una wer, 92 8, sin desplava Finalmente sumamos estos resultados intermedios para Sbtenela respuesta 108, Ulizando estas dense podria opera deal manera que las mulipicaciones solamente implicasen a operendos de una cf, (Aunque he ‘mos dscrito la figura 13 antes que aig esto solamente era para simphifcar Jnpresenacin, Por supuest, tenemos que hacer primero ls coat maltpicadon nes de nimeros de dos cfs, puesto que utlizamos los valores caleulados ast Cuando se hace la multpicacion de los nimeros de cuatro cifras) Este algoritme tan poco habitual es un ejemplo de la téenica denominads 4. Podemos construir formulas booleanas a partir de variables boo- Teanas, constantes (verdadero y falso),conectivas (x, v,~y +, 9) ¥ paréntesis de la forma evidente. 1.4.2 Teoria de conjuntos ‘Aun cuando revisemos aqut los principales sfmbolos que se utilizan en la teoria de conjuntos, suponemos que el lector ya esta famillarizado con la nocién de Conjunto. Por tanto en Jo que sigue no se proporciona una definicion formal. A todos los efectos practicos, resulta suficiente pensar que un conjunto es una co leccion no ordenada de elementos distintos. Un conjunto se dice finio si contiene un :mimero finito de elementos; en caso contrario el conjunto es infinito. Si X es un conjunto finite, IX! la cardinalidad de X denota el miimero de elementos que hay en X. Si X es un conjunto infinito podemos escribir que la cardinaldad de X ¢ infnita. Fl conjunto vacio, que se denota como 6, es el conjunto tinico cuya cardinalidad es 0, La forma mas sencilla de denotar un conjunto es rodear la enumeracién de esos elemenios entre llaves. Por ejemplo, (2,35,7), denota el conjunto de nme 10s primos de una sola cifra. Cuando no puede srgir ninguna ambigiiedad, se permite el uso de puntos suspensivos, tal como en «N= (01,23, ..} es el conjun- to de mimeros naturales». 1 X ¢8 un conjunto, x €X significa que x pertonece a X. Escribiremos que x # X ‘cuando x no pertenrzea a X. La barra vertical «|» se lee en la forma «tal que» y se utiliza para defini un conjunto describiendo la propiedad que cumplen todos sus. miembros. Por ejemplo, fn | » « Ny mes impat] denota el conjunto de todos los -mimeros naturales impares. Hay otras notaciones alternativas mas sencillas para el mismo conjunto que son in ¢ N Ines impar) o incluso (2n +1 | me Ni. Si Xe Y son dos conjuntos, X c Y significa que todos los elemento de X perte- necen también a Y;y se lee «X es un subvonjunto de Yo. La notacién Xc Y signifi. cea que XcY y ademés que hay por lo menos un elemento de Y que no pertenece 1 X;se lee «X es un subconjunto propio de Y», Tenga en cuenta que algunos auto- 15 utiizan c para denotar lo que nosotros denotamos mediante <. Los conjuntos Xe Y son iguales, lo cual se esribe X = Y, si y sOlo si contienen exactamente los ‘ismos elementos. Esto es equivalente a decir que Xc Yy que Y= X. '5iXe Y son dos conjuntos, denotamos su unin mediante X UY=I2 12 ¢ Xoz-« V1, su intersecion como XAY =z | ze Xyze Y1,y su diferencia como X\W=le |zeXperoze Y). (Obsérvese en particular que z « X.9 Y cuando 2 pertenece tanto a X como a Y. 10 Pretiminares Capitulo 1 Representamos por (ty) el par ordenado que consta de los elementos x e yen este orden. El producto carlesiano de X e Y es el conjunto de pares ordenados cu- yo primer componente es elemento de X y cuyo segundo componente es ele- ‘mento de Y; esto es Xx ¥ = (zy) | x ¢ Xey e Y). Las n-tuplas ordenadas para n> 2y el producto eartesiano de mis de dos conjuntos se definen de forma si- ilar. Denotaremos Xx X por Xy similarmente para X23. 1.4.3 Enteros, reales e intervalos Denotaremos el conjunto de los mimerosenteros pot Z = (p21, 0,1,2, €Lconjunto de mimeros naturales como N = (0,1, 2, «-,y el conjunto de los ente 10s positios como N° = (1, 2, 3,..). A veces ponemos de manifiesto que el 0 no std incluido en N* haciendo alusion explicita al conjunto de los nsimeros ente- 108 estrictamente positives. En algunas ocasiones aludiremos a los ndimeros na- turales con el nombre de enteros no negativos. Indicamos el conjunto de raimeros reaies como R, y el conjunto de los miimeros reales positives como e xeRIx>0) En algunas ocasiones hacemos hincapié en que 0 no esti incluido en R* alu- diendo explictamente al conjunto de mimeros reales estrictamente positivos. El conjunto de mimeros reales no negatiows se denota mediante R" = {xe R |x>0}, ‘Un interalo es un conjunto de ndmeros reales que yacen entre dos limites, Sean 2 y bdos mtimeros reales tales que as. Bl intervalo abiero (a b) se representa por: [xeRlacxed) El intervalo es vacfo si = b. El intervalo cerrado [ah] se representa por (eR based} ‘También existe intervals semiabieros: G@ Bate Rlacxsh} la, ={xeRlasx Y se dice inyectioa (0 bien uno a uno) si no existen dos 2,4 X tales que f (x) =f Ce). Bs suprayectioa (o sobreyeciva) si para todos los 6 Y existe al menos una x © X tal que fx) = y. En otras palabras, es suprayecton si ‘5 rango coincide con su imagen. Se dice que es bivection ses a la vez inyectioay su- 1 prayctoa. Si fs biyectiva denotaremos por, que se pronuncia «la inversa de fo a la funcion de ¥ en X que esta definida por ff? ()) = y para todos los y ¢ Y. Dado cualquier conjunto X, una funcién P: X > iverdadero,falsa) se llama un predicado sobre X. Existe una equivalencia natural entre predicados de X y sub- Conjuntos de X: el subconjunto correspondiente a P es [x X | P (x)). Cuando P es un predicado sobre X, diremos en algunas ocasiones que P es una propiedad cde X. Por ejemplo, la imparidad es una propiedad de los enteros, que es verdade- 172 para los enteros impares y falsa para los enteros pares. Tambien existe una i texpretacién natural de las férmulas booleanas en términos de predicado. Por ejemplo, uno puede definir un predicado P: jverdadero, faso}”slverdader,falso) mediante P@aN=Grgwnann en cuyo caso P(werdadeo flo, verdadero) = verdadero 1.4.5 Cuantificadores Los simibolos Vy 3s len «para todo» y sexist respectivamente. Para ilustrar ‘sto, considéree un conjuntoarbitrario X y una propiedad P wobre X. Escrib mos (V x X) [P ()] para indicar que «todos los x de X tienen la misma propie- dad Ps, De manera similar: Gre OP significa que existe al menos un elemento de x en X que tiene a propiedad Po. Finalmente, escribiremos (3! x € XO{P (2)] para significar «existe exactamente un xen X que tiene la propiedad P+. Si X es el conjunto vacio, (vx ¢ X) (P (2) siem- pre es vaciamente verdadero, intente encontrar un contraejemplo si no esté de 12. Preliminares Capitulo 1 acuerdo, mientras que (3 x © X)[P (a) siempre es trivialmente falso. Considé- rense Ios tres ejemplos concretos siguientes: men S a (a nent} Gm, ne N) Im>1,m> Lymn = 12573} Estos ejemplos afirman que la bien conocida férmula para la suma de los 1 primeros enteros es siempre vélida (véase la Seccién 1.7.2), que esta suma es también igual a un 1 sélo para un valor entero positivo de n, y que 12.573 es un entero compuesto, respectivamente Se puede utilizar una alternancia de los cuantificadores en una sola expresién. Por ejemplo: (ne NGmeN) man] dice que para todo nimero natural existe otro nimero natural mayor todavia, Cua o se utiliza la altemancia de cuanificadores, el orden en el cual se presenian los cantifcadores es importante. Por eemplo, ln afirmacion Gm ¢ NX¥ w-@ Nt > Jes evidentemente fala: signficaria que existe un entero m que es mayor que todos los rimeros naturales (inclayendo el propio m Siempre y cuando el conjunto X sea infinito, resulta vil decir que no so- lamente existe un © X tal que la propiedad de P(x) es cert, sino que ade- is existen infinitos de ellos. El cuantificador apropiado en este caso es 3 Por ejemplo, ( 3 ne N) [nes primol. Obsérvese que 3 es més fuerte que 3 pe- 1 mds débil que V. Otro cuantificador til, mds Fuerte que 3 pero todavia més bil que Ve ¥ que se usa cuando una propiedad es vida en todos los ca- 03 salvo posiblemente para un miimero finite de excepciones. Por ejemplo, (@n © N) [sin es primo, entonces es impar] significa que los _nimeros primos siempre son impares salvo posblemente por un nismero finto de ‘exeepeiones, en este caso hay solamente una excepciin: 2 sala ver primo y par. ‘Cuando estamos interesados en las propiedades de los nimeros naturales, existe una definicion equivalente para estos cuanificadores, y suele ser mejor pensar en ellos en consecuencia. Una propiedad P de los mimeros naturales es Cierta con infnta frecuencia, si, independientemente de lo grande que sea m, fexiste un r > m tal que P (r) es vilido, De manera similar la propiedad P es vi lida para todos los nimeros naturales salvo posiblemente por un nimero finite cde excepciones si existe tun natural m tal que P (nes Vslido para todos las ni- Seccion 1.4 Notacién matemitica 13 _meros naturales 1 = m. En este dltimo caso, diremos que «la propiedad P es cier- ta para todos los enteros suficientemente grandes», Formalmente: (4 mEN) [P (a)] es equivalente a (¥ m EN) (3 = m) [P(r] mientras que (7 EN) [P (ves equivalente a (2m EN) (¥ n=) [P(W] El principio de duatidad para los cuantificadores dice que «no es certo que la ‘propiedad P sea valida para todo x €X si y sdlos existe al menos un x € Xp uel cual la propiedad P no es valida. En otras palabras: AW xEX) [P ()] es equivalente a @xEX) [+ PCL ‘De manera similar: ~@x€X) [P (2)] es equivalente a (V xX) [> P @)] Bi principio de dualidad tambin es vido para # y 4. 1.4.6 Sumas y productos Considérese una funcibnf: NR y un entero n=O. (sto incluye f:N— N co- smo caso especial) La suma de los valores tomados por fsobze los primeros ni- ‘eros positives se denota mediante J10- 10+ 70)4..0900 «que se lee cla suma de ls f () cuando i va desde 1 hasta n» Enel caso en que = 0 la suma se define como 0, Esto se generaliza en lafor- sma evidente para denolar una suma cuando f va desde m hasta » siempre y Cando m'= n+ 1 En algunas ocasiones resulta dil considerar sumat condicio- hale. 1 Pes una propiedad de los enters, Re denota la suma def () para todos los enteros tal que sea vlido P (9 Fata suma ppuede no estar bien defnida si involucra aun ntmeroinfinito de enleros,po- demos incluso utilizar una notacin mixta fal como yr. 14 Pretiminares Capitulo 1 que denota la suma de los valores tomados por f para aquellos enteos que se tnentran entre ly para los cals es valida In propiedad P Sino hay tales nteros la sma es 0. Po ejemplo, Ena Seccién 1.7.2. se puede encontrar més informacién acerca de las sumas. Fl producto de los valores tomados por f sobre los n primeros enteros positi- vos se denota mediante T= forxparxserr.cetie, lo cual se le «el producto de ls f cuando i va desde 1 hasta ms. Enel caso se define el prodicto como 1. Esta notaién se generaliza en la misma fo. tna que ena notacion del sumatorio 1.4.7 Miscelénea Sibs1y x:son miimeros reales estrictamente positives, entonces log, x, que se lee ‘el Jogaritmo en base b de x, se define como el nimero realy tal que B = x. Por ejemplo, log, 1.000 = 3. Obsérvese que aun cuando b y x deben ser positivos, no existe tal rosticcion para y. Por ejemplo, log, 0,001 = -3. Cuando la base b no esti cspecificada,interpretamos que se trata de e = 27182818... la base de los lamados logaritmos naturales (algunos autores toman la base 10 cuando no se especifica y denotan el logaritmo natural como «lnw.) En Algoritmia, la base que se utiliza més ‘a menudo para los logaritmos es 2, y merece una notaci6n propia: lg x> es la abre- viatura de slog.x.» Aun cuando supondremos que el lector esta faruliarizado con Jos logaritmos, zecordemoe las identidades logaritmicas més importantes: Jog.) = log. x +108, y, loa,” = oe, x, og, x Jog, x= 2%, n= ee 1 por timo 2 Recuérdese también que el slog log n» es el logaritmo del logaritmo de n, pe 10 «log’ n= es el cuadzado del logaritmo den. Sixes un nimero real [xl representa el mayor entero que no es mayor que, y se denomina el suelo de x. Por ejemplo, L3 Ya] = 3. Cuando x es positive, x € el entero que se obtiene descartando la parte fraccionaria de x si es que exis- ‘Técnica de demostracién | 15 te. Sin embargo, cuando x es negativo y no es un entero en si x es més pequeho «que este valor por una unidad. Por ejemplo, -3']= 4. De manera similar, de- finimos el tecko de x, que se denota como Lx], como el menor entero que no es ‘menor que x. Obsérvese que x- 1 <[xi 0-son enteros, m/nt denota como siempre el resultado de divi- dir m porn, lo cual no es necesariamente un entero. Por ejemplo,7/2 = 3's. De- rotamos el cociente entero mediante el sfmbolo « « », por tanto 7 »2=3. For malmente, m +n =Lm/al. También utilizamos mod para denotar el operador emédulo» que se define como sm mod n= m-=nx(m-+n) En otras palabras, m mod ne el resto cuando m es cvidido porn Simes un entero postiva, denotamos el producto ce ls m prieros enteros positives como mt! 10 cual se le factorial dem. Es natural defini 01 = 1, Ahora Eien nt= nx (n= 1! para todos los entros positives Una aproximacion sil del factorial esa queda a frm de String n= Ven (even donde ees base dels logartmos naturales. fe Sin raon enters tales que 0< rn, ve represen mediante fel mimero de formas de sleccionarr elementos de un confnto de cardinalidadn, sn tener en cuenta el orden ene cual agamos nuestra selceciones; wease la Secc6n 173 1.5 TECNICA DE DEMOSTRACION 1: CONTRADICCION Ya hemos visto que puede existir toda una seleccién de algoritmos disponibles ‘cuando nos preparamos para resolver un problema. Para decidir cudl es el més. adecuado para nuestra aplicacién concreta, resulta crucial establecer las propie- o congeladas, tal como en los Elementos de Euclides (que quizé sean el mayor monumento de la historia alas matematicas deductivas, an cuando no cabe duda de que gran paste de eu material fue descubierto pot razonamiento inductivo). Pero se necesita la induccién para mantener vivas las ‘matematicas, Tal como Pélya dijo una vez elas matematicas presentadas con rigor som una ciencia deductiva sistematica, pero las matemsticas que se estin hacien- do son una ciencia inductiva experimental. Por tltimo, la moraleja de esta digresién: una de las téenicas deductions mas tti- les que estan disponibles en matematicas tiene la mala fortuna de llamarse induc- cian matemtca. Esta terminologia resulta confusa, pero tenemos que vivir con ella. 1.6.1 El principio de induccién matemética Considérese el algoritmo siguiente: funeién cuadrado (n) ‘Sin =O entonces devolver 0 Sino devolver 2n + cuarado (n= 1) ~1 Si se prueba con unas cuantas entradas pequeras, se observa que: ‘cuacrado (0) = 0, cuadrado (1) =1,ewadrado (2) = 4, cuadrado (3) = 9, cuadrado (4) Por induccién, parece evidente que cuadrado (n) = para todos los n 20, 2pe- +0 o6mo podria demostrarse esto rigurosamente? Sera verdad? Diremos que el 22 Prelininaes Captiulo1 algoritmo tiene éxito sobre el entero m siempre que cuadrado(w en caso contrario, Considérese cualquier entero n 2 1 y supéngase por el momento que el algo- ritmo tiene &xito en n =I, Por definicion del algoritmo cuadrado (n) = 2n + cua- 1. ‘Ademas esti claro que tiene éxito en n = 0 El principio de induecin matematica, que se describe ms adelante, nos permite infe- rica partir de lo anterior que el algortm tiene éxito en todos los 20, Hay dos formas de comprender por que se sigue esta conclusién: de forma constructiva y por contr iccin. Conscérese cualquier entero positivo m sobre el cual se desea probar que el al- goritmo tiene ito. A efectos de nuestra discusién, supongamos quem 29 lo valores ‘menores se pueden demostarficilmente). Ya sbemas que el algortmo tiene éxito en 4A partir de la gla general consstente en que debe tener éxito en siempre que ten- ga éxito en 1 para n> I inferimos que también tend éxito ens. Aplicando una ver ‘is esta regla se muestra que el algoritmo tiene éxito en 6 también, Puesto que tiene ‘éxito en 6, también tiene que tener éxito en 7, y asf sucesivamente. Este razonamiento contin tantas veces como sea necesario para llegar a a conclusion de que el algori- ‘mo tiene éxito en m~ 1. Finalmente, dado que tiene éxito en m —1 iene que tener &x- toenm también, Esté claro que podriamos efectuar este razanamiento de forma exp Gita, sin necesidad de «y asi sucesivamente», para cualquier valor positivo fijo dem. ‘Si preferimos una tinica demostraciGn que funcione paa todos los n 20 y que zo contenga «y aei sucesivamente», debemos aceptar el axioms del mimo entero, que dice que todo conjunto no vacio de enteros positives contiene un elemento _inimo; véase el problema 1.24, Este axioma nos permite utilizar este ntimero mi- rnimo como el fundamento a partir del cual demostraremos teoremas. ‘Ahora, para demostrar la correcién (exactitud) del algoritmo por contradic. cin, supongamos que existe al menos un entero positivo en el cual falla el algo- ritmo. Sea rel menor de estos enteras, que existe por el axioma del minim ente- ro, En primer lugar tiene que ser mayor o igual a5, puesto que ya hemos vert cado que cuadrado () = # cuando i = 1, 2,3 64, En segundo lugar el algoritmo tie- ze que tener éxito on m1, porque en caso contrario 1 no seria el menor entero po- sitivoen el cual fall. Pero esto implica por regla general que el algoritmo también tiene éxito en n, lo cual contradice a nuestra suposicion acerca dela seleccion de. Por tanto esa n no puede exist lo cual significa que el algoritmo tiene éxito para todos los enteros positives. Puesto que también sabemos que el algoritmo tiene ‘&xito en 0, concluitemos que cuadrado (n) = m2 para todos los enteros de n > 0 ‘Ahora vamos a indicar una version sencilla del principio de induccion mate- ratica, que es suficiente en muchos casos. En la Seccidn 1.6.3 se da una versin mis potente de este principio. Considérece cualquier propiedad P de los ente- ros. Por ejemplo, P(n) podria ser «cuadrado (n) = Wo «la suma de los cubos de 1 qe facia “Tecnica de demostracion 2.23 Jos m primeros niimeros enteros es igual al cuadrado de la suma de esos ente- 105», 0 «1 < 2%. Las dos primeras propiedades son ciertas para todos los m2 0, ‘mientras que la tercera es valida siempre y cuando n 2 10. Considérese tambien tun entero a, que se conoce con el nombre de base. Si 1. Pla) es cierto 2. Pon) debe de ser cierto siempre que P(1~1) sea vilido para todos los enteras n> a entonces la propiedad P(t) es valida para todos los enterosn 2a. Usando este prinipio, ppodriamos afirmar que curado (7) = para todas os n> 0, einmediatamente, demos- {tar que carado (0) =0= (Fy que cuairad (n) = siempre que cuadmaio(n~1) y n>. ‘Nuestro primer ejemplo de induccién matematica mostraba cémo se puede utilizar de forma rigurota para demostrar la corzeccién de un algoritmo. Como segundo ejemplo, vamos a ver cémo las demostraciones mediante induccién _matemiética se pueden transforma a veces en algoritmos. Este ejemplo también es instructivo por cuanto pone de manifesto la forma correcta de escribir una slemostracion por induccion matemitica. La discusion que sigue hace hincapié en los puntos importantes que son comunes a este tipo de pruebas. Considérese el siguiente problema de embaldosado. Se nos da un tablero divi- dido en cuadrados iguales. Hay m euadrados por fila y m cuadrados por co- Jumna, en donde m es una potencia de 2. Un cuadrado arbitrario del tablero se distingue como especial; véase la Figura 1.5 (a). By (©) Una nidons (0) Tablero con un candied special (© Colocada la primer aldose (@) Solucén Figura 15.8 problema de embaldorado 24 Preiinares Capitulo 1 También se nos da un montén de baldosas, cada una de las cuales tiene el as- pecio de un tablero 2x2 del cual se ha eliminado un cuadrado, segdin se ilustra cen la figura 1.5 (b). El acerijo consiste en recubrir el tablero con estas baldosas, para que cada cuadrado quede cubierto exactamente una vez con excepcion del cuadrado especial, que quedara en blanco. Este recubrimiento se denomina em- baldosado. La figura 1.5 (a) da una soluci6n del caso dado en la figura 1.5 (a). = Demostracion. La demostracén se hace por induccién matemstica sobre el entero x tal que © Bas: el caso n = 0 se satistace de forma trivial. Aqui m = 1, ye ctablero> 1 1 es un Xinico cuadrado, que es necesariamente especial ;Este tablero se recubre sin hacer na at (ino le gusta este argumento, compruebe el caso siguiente por orden de sencillez sin 1,entonces m = 2 todo tablero 22 del cual se elimine un cuadrado tiene exac- tamente el aspecto de una baldosa, por definiion.) 0 Paso de induccién: considérese cualquier n >I. Sea m = 2, Astimase la hipitsi de in- ‘duccidn, consstente en que el teorema es alido para tableros 21x21. Considérese un tablero mx. que contiene un cuadrado especial colocado arbitrarlamente. Dividase 4 tablero por cuatro subtableros iguales partiéndoloen dos horizontal y verticalmen- te. El cuadrado eepecial original pertenece ahora exactamente a uno de los sublable- re, Coldquese uns baldosa en medio del tablero original de tal manera que cubra ‘@actamente un cuadrado de cada uno de ls demés subtableres; véase la figura 15 (0 CConsideremos cada tno de los tres cuadrados asi cubiertos vexpecial» para el subi blero correspondiente, Nos quedan cuatro aubtableros del tipo 2! 2"-cada uno de Tos evales contiene in cuadrado especial. Por nusstra hipstesis de indacci, cada und de estos cuateo subtableros se puede recubrit La sohicion final se obtiene combinat~ {o los recubrimientos de los subableros junto con la baldosa colocada en la posicion media del tablero original, Pesto que el teorema es verdadero cuando m = 2, y dado que su validez para m= 2° se sigue de la suposicion de su validex para m = 2! para todos los n> 1, sigue de] principio de induccién matemstica que el teorema es verdadero para todo my, siempre ¥ ‘euando m sen una potencia de 2. El lector no deberta tener dificultad para transformar esta prueba de un teore- ‘ma matemiético a un algoritmo para efectuar el embaldosamiento real (quizé no sea un algoritmo de computadora, pero es al menos un algoritmo adecuado para cel «procesamiento a mano»). Este algoritmo de teselado sigue el esquema general conocido con el nombre de divide y vencerés, que y2 habiamos encontrado en la ‘Seccign 1.2 y que estudiaremos detenidamente en el Capitulo 7. Eta stuacién no es infrecuente cuando se demuestra constructivamente a teorema por induccion ‘matematica Seccién 1.6 ‘éenica de demostracion 2 25 Examinemos ahora con detalle todos ls aspects de una demostracin for malmente corecta por induccin matemétic, fal como Ia anterior. Consicérese tina ver més una propiedad abstactaP de los enteros, un entero ay supong- se que se desea demostrar que Pir es valid para tod ls n 2a Es preciso co- menzar la demostracion mediante el caso base, que consateen demostar que Pi) es vido, Ente caso base sucle ser sencilo,y algunas veces incluso tial, pero resulta crucial efectuario correcamente;en caso contrat, toda la sdemos- traci carecelteralmente de Fandamento El caso base va seguido por el paso de inducion, que suele ser més complica do, fste debera empezar por sconsidérese cualquier n > an(o de manera equi- valent «consideremos cualquier n =a + 1») Deberfa continuar con una ind isn explicit de la hipotesis de inducién, que estblece esencialmente que Pint) es valid, Fn este momento queda por demostrar que es poibe inferit «qe Pin es valido suponiendo valida la hips de induc. Por ‘stimo, se fuede insertar una fase adicional tal como la presente al inal de la Gemoete én del teorema 1.61, pero esto no vele ser necesario. on respecte ala hipstesis de induccién, es importante comprender que su ponemos que P (n=) e vido de forma provisional; no sabemosreslmente que Sea vido mientras no se haya demostrado el tener, En otras palabras, 0D Fstivo del paso de induccion es demostar que la veracidad de P(r) se deduce lopicamente dela veracidad de P(r, independientemente de si Pr 1 es valido. De hecho si P (r~1) noes valid, el paso de induccion no nos permite llegar a ninguna conclusion acerce dela veracdad de P(n. Por ejemplo, considérese la afirmacion «<2», que representaremos me- diante Pw Para un positivo entero resulta sencllo demostrar que <2 (n= 1) precisamente fin 2 5. Considérese cualquier #2 S'y asumemos provi Sonalmente que P(t =1) es verdadero. Ahora w <2x(n-1P porque 25 < 2x2" por la suposicién consistente en que P (n - 1) es valido. > De esta manera se ve que P (n) se sigue logicamente de P (1-1) siempre que 25, Sin embargo, P (4) no es vilido (se diria que 4°< 2, lo cual seria decir que 64 < 16) y por tanto no se puede inferir nada con respecta a la veracidad de P (5). Por prueba y error averiguaremos sin embargo que P (10) st es valido (10 = 1000 < 29 = 1024). Por consiguiente es legftimo inferir que P (11) también. es vilido, y de la veracidad de P (11) se sigue que P (12) también es vilido, y asf ssucesivamente. Por el principio de induccion matematica, dado que P (10) es vi- lido y dado que P (n) se sigue de P (n ~ 1) siempre que n 2 5, concluimos que w <2" es verdadero para todo 1 > 10. Resulta instructivo observar que P (n) también es valido para 1 = Oy n = 1, pero no podemos utilizar estos puntos co- ‘mo base de la induccién matemética porque el paso de induccién no es aplica- ble para valores tan pequefios de 26 Preliminares Capitulo 1 (Quizé suceda que ia propiedad que deseamos demostrar no afecta a todos los enteros mayores 0 iguales a uno dado. Nuestro acertijo del embaldosado con- cierne solamente al conjunto de enteros que son potencias de 2. En algunas oca- siones, la propiedad no concierne en absoluto a los mimeros enteras. Por ejer- plo, no es infrecuente en Algoritmia tener la necesidad de demostrar una pro- piedad de los grafos. (Se podria decir, incluso, que nuestro problema del em- baldosado no concierne realmente a los ntimeros enteros, sino més bien 2 los ta- bleros y a las baldosas, pero esto seria partir un pelo en el aire.) En tales casos, ise ha de utilizar la induccién matemstica sencilla la propiedad que hay que demostrar deberd transtormarse primeramente en una propiedad del conjunto de todos los mimeros enteros que no sean menores que un cierto caso base (un enfoque alternative se ofrece en la Seccién 1.6.3) En nuestro ejemplo de embal- dosado, demostrébamos que P (n) es vilido para todas las potencias de 2, de- -mostrando que Q (n) es vilido para n > 0, en donde Q (n) es equivalente a P (2. Cuando esta transformacién es neceseria, se acostumbra comenzar Ia demostra- cin (tal como hicimos) con las palabras ‘la demostracién es por induecién ma- tematica sobre tal y cual pardmetro>. De esta manera se realizan demostraciones acerca del nimero de nodos de un grafo, acerca dela longitud de una cadena de caracteres, acerca de la profundidad de un Srbol, y asi sucesivamente. Existe un aspecto de las demastzaciones por induccién matematica que la smayoria de los principiantes encuentra sorprendente, si es que no les parece pa- adjico: ja veces es mds sencillodemostrar ura afirmacin mds fuerte que una ms dé- dil! ustraremos esto con un ejemplo que ya hemos encontrado, Vimos que re- sulta Sencillo conjeturar por induccién (no por induccién matemtica) que la su- sma delos cubes de los # primeros niimeros enteros siempre es un cuadrado per- fecto. Demostrar esto por induccién matematica no es sencillo. La dificultad es- triba en que una hipotesis de induccidn tal como «la suma de los cubos de los ‘1 primeros niimeros enteros es tin cuadrado perfecto» no sirve de gran ayt- da para demostrar que esto también sucede para los m primeros ntimeros ente- ros porque no dice cudl de los cundrados es perfecto: en general, no hay ningu- na raz6n para creer que se obtenga un cuadrado cuando 1° se suma con otro cuadrado. Por contraste, resulta més sencillo demostrar el teorema més fuerte consistente en que nuestra suma de cubos es precisamente el cuadrado de la su ‘ma de los n primeros enteros: la hip6tesis de induccién es ahora mucho més sig- nificativa; véase el problema 1.21 1.6.2 Un asunto completamente distinto El error mds comin en el disefio de demostraciones mediante induceién mate- smatica se merece una subseccidn propia, Consideremos el siguiente teorema ab- surdo, ‘Teorema 1.6.2 Todos los cablos som del mismo color LU Demostractén. Demestaremos que todo conju de caballo contene solamente caballos del mis color En particular eso srs certo para el corjunto de tds los caballos, Sea Han conjnto arbiter decabullesDemostemes por induceién matemis sabre el némero de ebalos que hay en H que son todos elo del mismo color (Base aso m = Os trviaimente cesta: no haycxbllos en enone son ce ‘mente odos del mito color (Sin le gusta el argument, compre el siguiente ca oem sin Ijentoness hay anole eaalo en Hyon verses eidentrente ‘Serto que ton stodone del mao col} (0 Faso de induc consdéreecuakier nmr nde caballo en H, Llimense esos ‘abalos iy lh Supongarios qu ships deinduclon conte en que tod0 cnjunto de n~1 Caballoecontone solamente caballo de un solo color (pe por peso loscabalos de un conjunt podria a priors ierntes de os eal de oo Fenjunt) Sea Hy el conjunto que se allene minandoelebullo de Hy defnanos 1g de forna sna, esse a figura 4, Soe se he Bo Room OR Pigs 4 Cae mio eto) Encada uno de tos dos nuevo conjuris hay 1 abl. Por tanto a hits dein b, et hecho consistente en que P(n) es vélido se sigue {dela suposicén consistente de que Plm) es vido para todo m tal queasm 1. Se tienen ds casos “= Si mes prima, hemos descompuesto como el producto de dos primos = dm — Sims compuesto es postive y menor que my por tanto es aplicable la hpstesis de induc m se puede exprese como un producto de neers primos igamios ‘pps; Por tanto, n= x mse pusde expresar ena forma w= dp, que es un producte de nlmeres primos En todo caso, esto completa a demostacin del paso de induccion y portato del eo- 30 Preliminares Capitulo 1 Faasta el momento Is hip6tesis de induccin siempre se ocupaba de un conjun- to fnito de casos (para la induccin matemstica sencilla, un solo case para Iai es razonable. Como fo demostraria usted? La dficulted consis teen queesta conjetura es demasiado vaga para demostrarla directamente por induccion matemdtica: ecuerde que suele ser més fail demostrar un teorema fuerte que uno més débil. Por tanto, vamos a suponer que existe un ntimero real x> 1 tal que f, 2 para todo entoro msufilentemente grande (esta afi ‘macién no puede en modo alguno ser cierta para odo entero postivo m, ples to que evidentemente flla para n 2). En simbolos: Conjure: Cer WHE NDIG2A 1 En el teorema que deseamos demostrar hay dos incégnitas: el valor de x y significado preciso de «para todo n suficientemente grande», Ignoremos esto ‘iltimo por el momento. Supongamos que P,(n) denota +f, 2 x"». Considérese cualquier entero n suficientemente grande. El enfoque de inducciGn constructi- ‘va consiste en preguintamos para qué valores de x se sigue P,(r)fomando como Secelin 1.6 ‘Técnica de demostracién 2.33 suse a hipdess de induct especficada purciinente y consatente en que Pm) 5 vSlido para todo entero mi que sea menor que n pero que tenga un valor su- ficientemente grande. Empleando la definicion de la sucesién de Fibonacci y ‘sta hipotesis, siempre y cuando n 1 y n~2 sean también «suficientemente grandes» heh pts 2 GE Para concluir que f, 2", necesitamos que sea x" + x72 1,0 equivalentemente que #~x-1 50, Por dlgebra elemental, puesto que soo estamos interesadas en el caso.x> 1, la resolucion de esta ecuacién implica que 1 Estas proposiciones, aunque sean sencilla, resultan sorprendentemente poten- tes. Por ejemplo, supongamos que se desea conocer el comportamiento de la funci6n racional mds general de n,a saber: a Hap actty SO tbh, ten donde nia, nib, son cero. Si escribimos S(n) en la forma snare dnnt (acto Y aplicando las proposiciones anteriores, resulta sencillo ver que la funcién que ‘va entre aves tiende al limite a/b, cuando m tiende a infinito, Ademés, nP4 tiende al limite 0 si p g. Por tanto: cuando p 4 dependiendo del signo de dy/by. Proposicion 1.7.6. Si lim f (n) + 1)/flw)= a, -1 1, entonces fn) tiene aint, Esta proposicin se puede utilizar para determinar el comportamiento cuando stiende a infinito de flr) = nx, donde res cualquier entero postiv. ix = 0 entonces fn) =0 par todos los Valores de n. En caso contravio tiende a x cuando n tiende a infinito. (Ubilcense las proposiiones anteriores). Por tanto si~1. 1 entonces f(r) tiende a Infinit. $1 = 1 entonces /(w) = , lo cual tiende claramente a infnit. Por vit ‘mw es cl ver que st x<~1 entonces f(n) presenta una oscilacion infinita El pro- Dlema 1.35 muestra que el comportamiento de »' es el mismo, salvo que f(r) tiende a 0 cuando z= 10%=-1 La regla de pt se puede utilizar en algunas ocasiones cuando resulta impo- sible aplica la propesicién 17-5, Una forma sencilla de esta regla es la siguiente: Proposicion 1.77. (De I Hépita) Supingase que im fod in gn) =, ovlteratiomente ue estos dos limits son infiits. Supdngase ademas qu los do- minis de fy gse pueden extender hasta alin nteroal real [my +=) dtl forma ‘ue las nueras furciones correspondents fy son diferencibles en est interoao, (a) le deriva de f(x), numa e cero para x [ty +), entonces 0 /t =tin PA ' Como eemplo sencllo,supongamos que f= og ny gn) = men donde a> 0 © una constate positiva arbitra. Aor bien, tanto fH como gO denden a infinite euando m Uendea infinite ast que no se puede utiliza I proposiion 1175. Sin embargo, si extenders fr) a} G2) = logy Ur) a § =X, entonces la repla de Hopital nos permite concur que Umulog n/n = lint /2) (ax) =m lax?) =0 sea cual fuere el valor postivo dee or Ultimo, Ia proposicin siguiente es util en algunas ocasiones aunque es uy sencilla de demostrar Proposicin 1.7.8. Silas dos funciones f(y ¢ i Hendon alos mites ay bre ptivamente cuando m tende a info, y si f(n) $ gn) para tao n suficiente- mente grande, entonces aS. Seccién 1.7 Recordatorios 39° 1.7.2 Series sencitias ‘Supongamos que u(n) es cualquier funci6n de n definida para todos ls valores de ‘Sisumamos los valores de u( para = 12... se obtiene otra funcin de na saber: Stn) =u 4 QD +... U on) ‘Suele ser conveniente cambiar un poco la notacién, y escribir esta ecuacién en la forma ‘bien simplemente ‘que leeremos como sla suma de, cuando i va desde 1 hasta n», Ahora ss, ten- dea un limite s cuando n tiende a infinito, se tiene que lo cual se suele eseribir como bien como ‘en donde los puntos suspensivos denotan que la serie continia de forma inde- finida, En este caso diremos que la serie es convergent, yllamaremos as a suma de la serie. Si por otra parte s, no tiende a un limite, sino que s, tiende a +000 ae, en- tonces diremos que la serie diverge, a + 0 quizé a. Finalmente, sis, no tien- dea un limite, nia 4 ni a-e, entonces diremos que la serie oscila (de forma fi- nita o quizd infinita). Es evidente que una serie que no tenga términos negativos debe de converger, o bien diverger, a +=: no podré oscilar. ‘Dos clases de series especialmente sencillas son las series aitmeticas y las se- ries geométrice. En una serie aritmética la diferencia entre términos sucesivos es __Capttulo 1 ‘onstante, asf que se pueden representar los » primeros términos de la serie en Ia forma 40 +d0+24,.,at(n-Dd ‘en donde a, el primer término, y dla diferencia entre términos sucesivos, son ‘constantes adecuadas. En una serie geométrica, Ja raz6n de términos sucesivos es constante, de tal forma que aqui los n primeros términos de la serie se pue- den representar en la forma 2,07 Foy PE Las proposiciones siguientes dan la suma de estas series. Proposicién 1.7.9. (Serie aritmética) Sea s, la suma de fos n primerostérminos de la serie aritmétia a, + d, a+ 2d,... Enlonces s,=an +n (1) d/2 La serie diverge a no ser que a= d = 0, en cuyo caso s, = 0 para todo 1. La pro- posicion se demuestra facilmente. En primer lugar se escribe la suma en la forma sat (at D+ naan) + (a+ On ADD {y después se escribe de nuevo en la forma G+ D+ G+ n-2++ Hd ee {Al sumar los términos correspondientes de estas dos ecuaciones, se obtiene 26, = a+ (Did) + Qa + (a Td) + + Qa + n= + Bas (1d) en donde hay 1 términos iguales en el lado derecho. EI resultado se sigue inme- diatamente, Proposicién 1.7.10. (Serie geométrica) Seas, la suma de los mn primeros térmi- nos dela serie geomtrica a, ar ar, .. Entoncess,= a (1-1) | (1 ~1), salvo nef ‘nso especial en el cual r= 1, en donde s,= an Para ver esto, se escribe Care tet) Secelgn 1.7 Recordatrioe 41 de tal manera que (Perea) Alrestar la segunda ecuacion de la primera, se obtiene inmediatamente Q-ny=ad-r Enel caso general (esto es, cuando r# 1) la sumas, de una serie geométrica tien ‘dea un limite si y sélosir* también o hace. Esto nos da la proposicién siguiente Proposicién 17:11. (Gerie geométricainfinita) La serie geoméivceinfinita a + r+ ar? + a es convergent y tiene como suma a | (1) sy s6losi-1 0 Proposici6n 1.7.13. Para cualquier entero k> 0 tenemos Suen. dew=noren .crekeD (642 [Esta proposicién se demuestra fécilmente por induccién matemética sobre 1. Obsérvese que no es necesario utiliza induecion sobre k, que no pasa de ser un ‘pardmetro en la formula, Utilizando la proposicién 1.7.13 es fécll obtener las sumas de las distintas se- ries de interés. az. Proposici nine /2 Este resultado es simplemente la proposicién 1.7.13 con k= 0. nD Qn+D /6 Para demostrar esto, tomemos “Suaww- Yiew-Yi ee 42) 3m (m4) /2 = nine On+0/6 en donde hemos utilizado la proposicin 1.7.13 dos veces para evaluar las dos ‘Seccion 1.7, Recordatorior 43 Una linea similar de ataque se podria utilizar para evaluar cualquier otra se- rie de este tipo. De hecho, tal como le mostramos a continuacién, resulta senci- lo probar la siguiente proposicion general. Proposicion 1.7.16, Sea cualquier entero positivo, Entonces x Hr D+ p00) ‘en donde p,(n) es un polinomio de grado no mayor que r El exbozo de la demostracion es como sigue: Yr -Sraen. devs Spo = m(neD (neers D4 pn) nO /eDep") cen donde p(i es un polinomio de grado no mayor que r~ 1, yp’ y p(n) son polinomios de grado no mayor que r. Dejaremos al lector rellenar los detalles, del argumento. Finalmente consideraremos de manera breve las series de la forma 1”, 2, donde r es un entero positivo. Cuando 7 = 1 obtenemos la serie 1, 1/2, 1/3, {que se conoce con el nombre de serie arménia. Es facil mostrar que esta serie di- verge. La proposicién siguiente nos proporciona una mejor idea de su compor- tamiento, Proposicién 1.7.17. (Serie arménica) Sea H, a suma de los n primerestérminos de a serie arma 1, 1/2, 1/3,..Entonces log (a+ 1) < HS 1+ log Para demostrarla consiérese la figura 1.8. El érea bajo la wescaleram nos da la ssuma de la serie arménica; el érea por encima de la curva inferior, v= 1/(x+ 1), es menor que esta suma, mientras que el drea bajo la curva superior, que es ye 1 para r< 1 ey = 1/x en lo sucesivo, es mayor 0 igual ala suma. Por tanto f Acasve ft de lo cual se sigue inmediatamente la proposicién. Una estimacién més precisa, de H, para n grande se puede obtener a partir de 44 Prelininares~ Capitulo 1 tin(tedebocet tes) 7 donde y= 0.57721... que es la constante de Euler, pero la demostracién va més allé del alcance de nuestro bro, Resulta sencillo mostrar que las series de la forma 1, 1/2%,1/3,..cuandor> 1 son todas convergentes, y que la suma de todas estas series es menor que r/ (r~ 1); ‘véase el problema 1.39. Por ejemplo: Sin embargo no resulta fécilcalcular el valor exacto de estas sumas, 1.7.3 Combinatoria basica Supongamos que se tienen n objetos que son suficientemente distintos para que podamos reconocer cada uno: diremos que estos objetos son distinguibles. Para facilitar Ia exposicién supongamos que estan rotulados con Tas letras a,b, y ast sucesivamente, teniendo cada objeto un rétulo distinto, De ahora en adelante aludiremos simplemente aa, por ejemplo, cuando queramos decir «el objeto cu- yo rétulo esa. [Nuestra primera definicién conciemne al niimero de formas en que se pueden codenar estos n abjetos. Seccién 1.7 Recordatorioe 45 Definicion 1.7.18. Una permutacion de n objetos es una disposicicn ordenada de los objets. Por ejemplo, si tenemos cuatro objetos «by d, podemos disponerlos por or- den de 24 maneras distintas: ‘bed abde acbd acdb adbe adeb acd bade bead boda bdac bdca ‘abd cadb chad chia cab cdba abe dach dbac dbca deab deba El primer objeto de la permutacién se puede seleccionar de n maneras; una vez que se ha seleccionado el objeto, el segundo se puede seleccionar de 1 ~ 1 for- ‘mas distintas; una vez que se han seleccionado el primero y el segundo, el ter- cero se puede seleccionar de n ~ 2 formas distintas,y as sucesivamente. Hay dos posibilidades cuando se ha seleccionado el pensitimo objeto, y solamente hay luna forma de seleccionar el sltimo objeto. El némero total de permutaciones de tn objetos es por tanto n(n) (n-2) 2:1 =m! A continuacién consideraremos el ntimero de formas de seleccionar un cierto inGimero de estos objetos, independientemente del orden en el cual hagemos ‘nuestras selecciones. Definicién 1.7.19. Una combinacin der objetos de entre n objeto es una selec cidm de r objets sin tener en cuenta el orden. Por ejemplo, si tenemos cinco objetos a,b c, dy e, podemos seleccionar tres de ellos de 10 maneras distintas si no se tiene en cuenta el orden: be abd abe acd ace fade bed bee bie aie Una selecci6n tal como eba no aparece en esta lista, puesto que es lo mismo que tbe cuando no se tiene en cuenta el orden de los objetos. Cuando hacemos nuestra seleccién de r objetos de entre n, hay n formas de cfectuar la primera opcién. Cuando se ha seleccionado el primer objeto, quedan 1n~ 1 formas para seleccionar el segundo, y asi sucesivamente. Cuando se selec- clona el ilkimo de los robjetos deseados, quedan n r+ 1 posibilidades. Por tan- tohay ne DO-2) nF) ‘46 retiminares” Capitulo 1 formas de seleccionar r objetos de n cuando se tiene en cuenta el orden. Sin em- Dargo cuando nose tiene en cuenta el orden, se pueden permutar los robjetos se leccionados de cualquier forma que queramos, y sigue contando come la misma combinacin. En el ejemplo anterior, las seis opciones ordenadas abc, ac, bac, bea, cab y che cuentan todas ellas como una misma combinacién, Puesto que hay 1! formas de permutar r objetos, el nimero de formas de seleccionar r objetos de entre n cuando no se tiene en cuenta el orden es (0) = MesDaaBetecre ay Hay varias notaciones alternativas que se utilizan para el niimero de combina- clones de 1 abjetos tomados r ar entre otras, se puede encontrar m la ecuacién 1.1 da 1) = 0, lo cual tiene sentido: no hay forma de se- leccionar mas de 1 objetos de entre n. Resulta conveniente tomar (8)= 1 (porque hay s6lo una forma de no seleccionar ningain objeto), y cuando r < 0, que no tie- ne significado combinatorio, definimos (j) = 0. Cuando 0-<, <>, la ecuacién LL se puede escribir de forma cémoda como 0 - maa Un argumento sencillo nos permite obtener una relacién importante. Consi- <érese cualquiera de los n objets, y digase que ese objeto es «especial». Ahora, cuando seleccionemos r objetos de entre los » disponibles, podemos distinguir quelas selecciones que inluyan al objeto especial y aquelas que no. Por efem~- plo, si tenemos que selecionar tres objetos de entre b,c, dye, y el objeto es pecial es b, entonces las selecciones que incluyen al objeto especial son abe, abd, fb, bed, be, y bed, mientras que las que no inchuyen al objeto especial son acd ace, aie y cde: Para hacer una seleccin del primer tipo, podemos seleccionar pr ‘mero el objeto especial (puesto que el orden de nuestrasselecciones no es im- pportante), y completa entonces nuestra selecin es = 1 objetos de en- fre los n~ 1 que quedan; esto se puede hacer de |=) maneras. Para hacer ‘una soleccin de la segunda clase, dobemas de seleecionar nuestros robjetos de entre los 1 ~ I que no son especiales; esto se puede hacer de ";") maneran uesto que la seleecién de r objetos de entre los m disponibles es de una clase © de otra es preciso que se cumpla (tC ve Seeeién ecordatorin AT sta érmula también se puede demostrarutlizando la ecuaci6n 11 La formala nos da una forma sencilla de tabula los valores de (), sein se ‘usta ena figura 13. "Aqul cada figura de las ablas se puede calculrfaiimente a pati de los ees _mentos de a fila precedente. Una tabla de est ipo que muestra los valores () fucle denominarse Trigngul de Pascal ‘Los valores (+) tambien se conacen con el nombre de coficientes binomials co- smo consecueneld del papel que desempenanen el eorema siguiente El torem, {que no intentaremos demostrar, se sue atbuir a Newton, aungue parece ha ber sido conocido ya por Omar Khayyam unos 600 afr antes. iro 5 0 1 1 a4 ia 3 1 3 3 2 401 4 6 44 5 1 5 0 W 5 4 ‘Figura 19 Combincones de objet tomatoe 2 ‘Teorema 17.20 (Newton). Sex nun entero positioa. Entonces erent tte Goal ate(fee(ennd, Utlizando este teorema es sencillo obtener resultados inteesantes concernentes 2 Jos coeficientes binomiales. Por ejemplo, al hacer x = 1 se obtiene inmediatamente En términos combinatorios la suma de Ia izquierda es el nero de formas de seleccionar un nimero arbitrario de objets (incluyendo 0 objetos) de entre, en. donde no se tiene en cuenta el orden. Puesto que hay dos posbilidades para ca- ‘da uno de los objtos, se puede seleccionar o bien se puede descartar,entonces hay 2° maneras de hacer esto. De forma similar, al hacer x = -1 en el teorema 1B eamnts oe fare 1.7.4 Probabilidad elemental La teoria de la probabilidad conciere al estudio de fendmenos aeatorios; esto 15, de aquellos fendmenos cuyo futuro no es predecible con certeza. Para aplicar Ta teoria de la probabilida, consideraremos el fendmeno de interés como tn ex perimentoaleatoro cuyo resultado no se conoce can certeza por anticipado, Tal ex: [perimento podria consist, por ejemplo, entrar un dado e ir apuntando la cara «que queda hacia arriba, o bien podtia consstr en contar cuintos coches van pa Sando por un certo punto en un periode determinada de tiempo, o bien en me- dir el tempo de respuesta de un sistema de compiitadoras El dato anotado para ‘ada experimento se denomina su resultado. El conjnto de todas los posibes resultados de un experimento aleatorio se de- rnomina espacio muestra del experimento. En los pérrafos siguientes notaremos este espacio muestral mediante 5. Los resultados individuales se denomnan pun- tas muestrals 0 sucesas elementals, Por ejemplo, cuando tramos wn dado ordina "io, hay seis resultados posible, a saber, los valores del I al 6 Para este exper mente, entonces el espacio mucstral es $= (1,2, 3, 4,5, 6. Para el experimento aleatorio que consiste en contar los coches que pasan por un cierto punto, eles pacio muestral es $ = {0, 1,2.) Para el experimento aleatorio que consiste en ‘eltiempo de respuesta de un sistema de computadoras, el espacio muestral esSa(t|t>0) Un espacio muestal puede ser finitoo infinity puede ser discretoo cont uo, Se dice que un espacio muestral es dsereo sel ndmero de puntos mues- trales es finito, 0 bien st se pueden rotularenlaforma I, 2,3, as sucesivamente tutlizando los ndmeros enteros; en caso contraro, el espacio muestral es conti ‘uo. En Ios ejemplos anteriores, S es finito y por tanto discreto para el experi- ‘mento aleatorio consistent entrar un dado; § es infnito pero discreto para el experimento consstente en contar coches, porque los resultados posible se pue- den hacer corresponder con los enteros posiivos; y $ es continuo para el expe ‘mento consistente en medir un tiempo de respuesta, En este ibro not ocupa- ‘emos casi por entero de experimentosaleatorios cuyo espacio muestal es fini- to,y por tanto discrete. Se define ahora un suze como tuna coleccién de puntos muestrales, eto es, ‘como un subconjunto de espacio muesteal. Se dice que un suces0 A sucede sel texperimento aleatori se lleva a cabo y el resultado observado es un elemento del conjunto A. Por ejemplo, cuando tiramos un dado, el suceso deseito por la frase «el némero mostrado ¢n el dad es impar> se coresponde con el subcon- junto A = (1,3, 5} del espacio muestal, Cuando contamos coches el suceso des trite por vel ndmero observado de coches es menor que 20» se correspond con cl subcorjunto A = 0, 1,2.» 18, 19) y asi sucesivamente.Informalmente, util zaremos la palabra «euceso> para aludir bien ala frase que lo describe, o al sub- Conjunto correspondiente del espacio muestral. En particular, todo el espacio ‘muesteal 5 es un suceso conocido con el nombre de sceso universal, y el conjun- to vac @ es un suceso denominado el suceso imposible Seectin 1.7 Recordstorios 49 Puesto que un espacio muestral S es un conjunto y un suceso A es un sub- conjunto de 5, demos formar nuevos sucesos mediante las operaciones habi- tales de teoria de coajuntos. Por tanto, para cualquier suceso A correspond un suceso A que consste en todos los puntos mucsrales de § que no estan en A. Glaramente A ese sues . De manera sinlar el suceso Aw B30 corresponde con Is frase wsucede 0 bien A o bien B>, mientras que el suces0 ‘An Bese corresponde con «siceden tanto A como Bs Se dice que dos sucesos ‘om muduamenteexlujents st A.m B Por timo una medida de probablded es una funcion que asigna un valor nu- smérico Pr{A] 2 todo suceso A del espacio muestral Fuidentemente, se supone {gue la proboblidad de un suceso mice en alg sentido la posbilidad relaiva ‘de que ese suceso se produzca 5 se leva a cabo el experimentoaleatoro sub cente. Las bates llossfieas de la nocién de probabilidad son controvertidas {gut significa preciamente decir que la probabilidad de via manana es de 0350, pero enlate un acuerdo en lo tocante a que toda medida senaata de pro- Dabilidad debe de satisacer los tres axiomas siguientes 1. Para todo suceso A, Pr 1A }20 2Prisi=t 53 Silos sucess A y Bson mutuamente excuyentes, esto esi AB = 0, en- tonces PrIAUB]=Prla]+Pri8] Se sigue por induccién materitica del axioma 3 que PRLAUASU UAL = BELA + PRIA ¢ 0 PRIA] pra toda colecin frit A, Ay, Ay de scesos mutuamente excluyentes (Se hecesta una forma modificada del atioma 35 el espacio muestral es infinito, ero no es preciso que nos preacupemos aqui de eso) Los axiomas dan lugar @ ln certo nimero de consecuencias, entre las cuales se cuentan: 4-Pr{A]=1~PriA ] para todo suceso Ay S.PrIAUB]=PriAl Pr[B]~ PriA cB] para todo suceso Ay B El procedimiento hisico para resolver problemas en probabildad se puede e- ‘ozs continuacion: en primer ugar, se identifica el expacio mucsral ; en Se- undo lugar, se asigran probabildades a los elementos de S: en tere Inga, se lentfican los sucesos de interés finalmente, se calcula ls probabildades de- Seadas Por ejemplo, supongamos que se dese conocer la probablidad de que un sgenerador de nimerosaleatorios produzca un valor que sea primo. Primero tene- fos que identifiar el espacio musstral.Suponganioe jue w sabe que el generador pede prodcir cualquier valor enter entre Oy 9.99, ambos inclusive. H espacio ‘muestral (esto es, el conjunto de consecuencias posibies) es por tanto (0, 1,2, 8995. A continuacin, es preciso asignar prebablidados alos elementos de S.Si el sgenerador preduce cada sueeso elemental posible con gual probablidad, se sigue retinas Capttulo 1 que Pr [0] = Pet] = = Pr [9999] =1/ 10.000 tere gay, suces ntere- Sine 3 wel generadorprodice un nmero primo lo cial se corresponde con el Subeonjunto A= (23,5, 9967, 997) Por ttigo, a probebilidad interesante {S PFIAL ques puede eacular en la forma como J Pr [een donde la suma es Sobre ls sucesos clementaes que componen A Pucsto que Ia probabldad de o- dostossucesos elementals es 1/1000, y hay 1.29 elementos en ,ereantramos gue ra) = 0.1228, Hasta el momento hemos supuesto que todo lo que sabemos acerca del res wo de agin experiment slestoro esque se debe coresponder conan pun- to mucsral del espacio mucstl Sin embargo suele eular ical apo Tubildad de que un suceso Ase produsca cuando se sabe que el resltado del x Perimento est contenido en algen subconjunto B de espacio muestra, Por jem lo, qizddeseemen aku a probbiidad de que el generador de nimerosale- ores del prafo anterior haya produido un ndmer primo cuando sabemos gue producido un nmeroimpar Elsimbolo de eta probabidad es P(A |B), aque slo que se denominalapratbildadcondicoal dé A dado B Evidentemente sta probablidad condiconal solamente es interesante cuando Pr [B] «0 Tn esencia la Informacion aiconal nos dice que el resultado del experi- mento pertenece aun uevo espacio muestra a saber, B.Puesto qu la sua de las probabidades de Tos sucess clemertales en el espacio miestral debe de ser 1, incrementomos la escala de ls valores originales para curplit esta condicién. Ademds, solamente estamos ineresados ahora en aquella parte de ‘A'queesté contenida en 8 a saber 0 8 Por tanto la probublidad eondico- rales dada por: PHAnal Pri) En nuestro ejemplo, Aes el suceso «el generador produce un nimero primos y Bees el suceso «el generador produce un nmero impar>. Saberos que'B contie- ‘ne 5.000 sucesos elementales, asi que Pr[B | = 0.5. Hay 1228 primos impares me- ores que 10.000 (so el ndmero primo par 2 se elimina), ast que Pr [A.B] = 0,1228. Por tanto la probabilidad de que el generador haya producido un primo, supuesto que haya producide un ndamero impat, Pr[A | B) = 0,1228/ 05 = 0.2486 Se dice que dos sucesos A y Bson independents si PriA | B]= Pr[AnB] =Pr [A] Pre] ‘En este caso, suponiendo que Pr [B } +0, tenemos que PHAN A} | ATP) Pig)” Pai] PrAle {por tanto saber que wel suceso B se ha producido» no modifica la probabilidad ‘de que vaya a producirse el suceso A. De hecho, se puede utilizar esta condicion ‘come definicién alternativa de independencia En el Capitulo 10 examinaremos algoritmos probabilstas para determinar si tun entero dado es o no primo. En este contexto resulta sities las aproximacio- nes siguientes, Supongamos que el espacio muestra § contiene un gran néme- 10 n de enteros consectives, y que la probabilidad de cada uno de estos reste {adoses la misma, a saber 1/n-Por ejemplo, § podria ser el conjunto (1, 2,» ml Sea D, el suceso «el resultado es divisible por i». Puesto que el nero de con secuencias que hay en Sy que son divisibles por ies aproximedamente/1, e- nnemos que Pr[D]= (r /3¥(1/n) = 1/4 Ademds, sip y q son dos primos distin- tos, entonces los sucesos D, y D, son aproximadamente independientes, asi que Pr[D,D,)=PrID,) Pe (Dj1~1/eq Por supuesto esto pusde no ser ciertosiobien po bien q no son primo: laramente los sucesos D, y D, no son independientes; también cuando $ contenga solamente un pequefio nimero de elementos, las aproximaciones no funcionardn muy bien, soglin lusta el problema 14. Ahora bien el Teorema de los Nimeros Prima (cs. ya demostracién queda mucho mis allé del alcance de este Mbro) nos dice que el snimero de primos menores que es aproximadamente / log ask que st S es realmente [2,1 }, con igual probabilidad para todos los resultados y A es el suceso vel resultado es primo», entonces tenemos que Pr [4] = 1/log ‘Considérese por ejemplo el problema siguiente: Un generador de némeros aleatorios produce el valor 12262.408. Deseariamos saber s este nimero es pri- 'mo, pero nodisponemos dela potencia de cAleulo necesaria para calcular la es- puesta de forma determinista. (Por supuesto esto noes real para un ejemplo tan [equeno,) Entonces, qué podemos decir con ayuda den poco de la teora de la probabilidad?” ‘Lo primero que hay que observar es que una pregunta como «cul es la pro- Dabilidad de que 12.262.409 sea primo?» carece de significado. Aqui no esti plicado ningiin experimento aleatorio, asi que no tenemos un espacio muestral ‘el que hablar, yn siquiera podemos empezar a asignar probablidades a los re ‘sultados. Por otto lado, una pregunta como «cul es Ia probabilidad de que nuestro generador de mimeros aleatorios haya produciclo un mimero primo?» es signifeativa y se puede responder con bastante facilidad. ‘Como antes, el primer paso es identifica nuestro espacio muestra, y el se: ‘undo es asignar probablldades a los elementos de 5. Supongamos que sabe- ‘mos que el generador produce todos los valores desde O hasta 99:999.999 con igual probabilidad: entonces 5 = (0, 1... 9.999.999] y la probabllidad de todos as sucesos elementales de 5 es 1/108 El Teorema de los Nameros Primos nos dice que aproximadamente 10° / log 108 =5,43 + 10* elementos de § son primos (Gl valor exacto es en realidad 5.761.455, pero la aproximacicn es suficiente- mente buena para nuestros propésitos) Por tanto si A es el suceso «nuestro ge- ‘perador produce un nimero primo» tenemos que Pr [A ]= 0.0543, 52. Preiminares Captulo 1 bora consideremas el suceso Dp consistente en que «nuestro generador pro- ‘ce un niimero que es divisible por el primo ps. Puesto que Pr [Dp] = 1/p, la probabilidad del suceso complementario «nuestro generador produce un ne {mero que no es divisible por el primo p» es Pr pl =~ 1/p. Supongamos que ‘probamos el 12.262 409 intentando divdielo por 2. El intent fall, pero ahora te- ‘hemos algo de informacion adicional,y podemos preguntarnos: «cules la pro- babilidad de que nuestro generador produzca un nimero primo, dado que pro- duce un nimero que no es divisible por 27». En forma simbdlica: P(A | BU =PrtA0 BymDal =2Fr{A]=0108 Aut Pr A‘ B,J es esencialmente lo miemo que Pr [A | porque todos los pri- ‘mos menos uno son no divisibles por 2. Sia contindacion intentamos dividir 12.262.409 por 3, el intent falla una vex mas, asf que ahora podemos preguntar- ros ecu es la probabilidad de que nuestro generador produzea un primo, dado que produce un niimero que no es divisible ni por 2 nl por 37». Esta proba. bilidad es! PAB. ODs} PriDs Bo Pela / Pr{Dy], (D5 3 PrfAT $0163 Prt | BaD, ‘Continuando de esta forma, cade fallosucesivo al intentar dividi 12.262.409 por un nuevo niimero primo, nos permite hacer una pregunta mds precisa yte- her algo mds de confianza en que nuestro generador haya producido realmente lun ndmero primo, Supongamos, sin embargo, que en alguna fase intentamos di- ‘vie 12260409 por 3.121. Ahora la dvisin de prueba tiene éxito, asi que nues- tra préxima pregunta seta: «cuales la probabilidad de que nuestro generador haya producido un némero primo, dado que ha producido un némero que no es divisible por 2,3. pero si es divisible por 3.1217. La respuesta desde luego es ‘una ver que hemos encontrado un divisor del nimero producido por el gene- dor, estamos segures de que no es primo. Simbdlicamente, esta respuesta se ‘obtiene porgue Pr[AN By ADyzgl=0 ‘Obsérvese que no podemos comenzar este proceso de céleulo de una nueva pro Dabilidad después de cada divisién de prueba sino somos capaces de estima Pr], Seccién 1.7 Recordstorioe 53 la probabilidad incondicional de que nuestro generador haya producido un na- ‘mero primo. En el ejemplo lo hacfamos utilizando el Teorema de los Numeros Primos, més nuestro conocimiento de que el generador produce todos los valo- rs desde 0 hasta 99,999,999 con igual probabilidad. Supongamos por otra par- te que se nos presenta el nimero 12.262.409 y se nos dice simplemente que ha sido seleccionado a efectos de este ejemplo. Entonces la pregunta es: «cual es la probabilidad de que un némero seleccionado de forma no especificada a efectos de un ejemplo sea primo?». Claramente, es imposible responder a esto. Elespa- cio muestral del experimento aleatorio consistente en seleccionar un némero ra servir como ejemplo es desconocido, asi como también lo son las probabil dades asociadas a los sucesos elementales de este espacio muestral, Por tanto no podemos hacer ninguna afirmacion significativa acerca de las probabilidades Aasociadas con un niimero seleccionado de este manera. En muchos experimentos aleatorios nos interesa menos el resultado en sf que algiin niimero que esté asociado con este resultado. En una carrera de caballos, por ejemplo, puede interesarnos menos saber el nombre del caballo vencedor que la cantidad que ganamos o perdemos en la carrera. Esta idea la captura la noci6n de variable aleatori. Formalmente, una variable aleatoria es una funcién (y no una variable a pesar de su nombre) que asigna un ntimero real cada pun- to muestral de algtin espacio muestral S. Si X es una variable aleatoria definida sobre un espacio muestral S,y res un ‘nimero real, definimos el suceso A, como el subconjunto de $ que consta de to- dos los puntos muestrales a los cuales se les asigna el valor x mediante la varia- ble aleatoria X. De esta manera: La notacién X = x es una forma may cémoda de denotar el suceso A, De esta manera, se puede escribir PriX=a]=PriAd= DPX) Si definimos p(x) como woe pla) = Pr X= ad centonces p(x) es una nueva funcién asociada a la variable aleatoria X, que se la- ‘ma la funcién de probabilidad de masa de X. Definimos la esperanza EIXI de X (que también se lama media o promedio) mediante soa= Exo ert =X 9@ Laesperanza E[X] se denota también frecuentemente como ji. 54 Preliminares Capitulo 1. Para reunir todas estas ideas, considérese el ejemplo siguiente. El experi- _mento aleatorio que nos concierne es una carrera de caballos con cinco corredo- res. La consecuencia del experimento es el nombre del ganador. El espacio. :muestral Ses el conjunto de todos los resultados posibles, asf que podriamos te- ner, por ejemplo: s= (Ariel, Bombén, Café, Demonio, Ernesto} ‘Tenemos que asignar una medida de probabilidad a cada consecuencia post- ble. Aun cuando la precisin con la cual hacemos esto puede dar lugar a grandes diferencias a nuestra situacién financiera la teoria de la probabilidad no ofrece ayuda acerca de la forma de hacerlo. Supongamos que a la luz de la experiencia asignamos los valores que se muestran en la figura I. 10, Resultado Probabilidad Ganancias (Recuérdese que las probabilidades deben de sumar 1). Hemos hecho un néme- ro de apuestas en la carrera, asi que, dependiendo del resultado, ganaremos © perderemos algiin dinero. La cantidad que ganemos 0 perdamos también se ‘muestra en la figura 1.10. Esta cantidad es una funcin del resultado, esto es, ‘una variable aleatoria. Llamemos W a esta variable aleatoria; entonces la tabla ‘muestra que W (Ariel) = 50, W (Bombsn) = 100, y asf sucesivamente. La varia- ble aleatoria W puede tomar los valores -30, 15, 30.6 100, y por ejemplo PrtW=-30) = Pris Pr [Café] + Pr [Demonio] = 0,25 + 050 = 0,75. De manera similar p15) = Pr [W = 15] = 010, (50) = Pr [W= 50] = 0,10 y p(100) Pr[W-= 100] = 0,05. Nuestras ganancias esperadas se pueden calcular en la forma Seccién 1.7, Recordatoros 55 EW) = Dx) ~30p (-30) + 15p (15) + 50p (50) + 100p (100) a Una vez que hemos obtenido ELX] podemos calcular una segunda medida util aque se denomina la varianza de X, y que se denota como varlX1 oo}. Lo cual se define como VarlX1 (x ELx D4 Lee) ee ix Dicho en palabras, es el valor esperado del cuadrado de la diferencia entre Xy su valor esperado ELXI. La desviacion estindar de X, que se denota como 0, € In raiz cuadrada de la varianza. Para el ejemplo de la carrera de caballos aite- ror, tenemos: var = Dente A000" p(-30) x 192+ p15) x 267+ p50) 612+ p100) > 11? =1.3265 ¥ 64= VOTSIBB) = 36,42. {Por qué son ities el valor esperadoy la varianza de X? Supongamos que el experimentoaleatorio subyacente se pudierarepetir muchas veces. La ixima repeticin del experiment tend algin resultado particular oy ala calla fun Gion de X le asigna un valor x, Supongamos que repetimos el experimenton ve- ces en total Si es grande, csi siempre es razonable esperar que las medias ob- servadas para x, a saber Ey x,/n, estén proximas al valor esperado para X, a Saber F[X) Slo'enraras crcnstancias es probable que exto no sea verdadero. Por tanto E[X] nos permite predecr el valor medio observado par La varianza nos sirve pera cuanifca Io buena que probablemente sea esta predicidn Exist una famosa dintrocon de probablidad denominada distri- bucin normal En condiciones muy generals, el Teorema Contra del Limite ugiere que cuan- do mes grande, el valor medio observado para s,tendré una distibucion que es aproximadamente normal con na media FIX y una varianza var UXI/n, Para aprovechar estos resultados lo nico que necestamos es una tabla de la distri- brucién normal Estin disponibles en todas parte. Tales tabla nos dicen, entre otrascosts, que una desviaion normal esta situada entre més menos 960 des- ‘iacionesestandar de su media el 95% de tiempo; 99% del tiempo se encuentra dentro de mas menos 2376 desviaionesestandar de su media Por ejemplo, supongamos que par agin medio mégico la carrera de caballos descritaanteriormente se pudieraefectuar 50 veces en idéntcas condiciones, Capitulo 1 Supongamos que ganamos w7 en la sima repeticén, y sea nuestra ganancia redia w= 32/50. Entonces podemos esperar que F{W]=~I1. La varianza de vers Vari}/S0 = 132635/50 = 265, y ou deaviacién estindar seré Ia ralz Cuadrada de esta cantidad,o sea 5,15 mientras que el Teorema Central del rnite nos dice que le distribucin dew sera aproximadamente normal. Por tan- to en el 95% de las ccasiones podemos esperar que nuestra genanca media ¥ se encuentre en =I ~ 1960 x'5,15 y ~Il + 1960 x 515, es0 es enlze ~21,1 y “09, Un cielo similar muestra que el 99% del tempo # se encontraré entre “243 y +23; véase el problema 17. Suele ser correcto utilizar el Teorema Cent valor mayor que aproximadamente 25. 3 del Limite cuadrado 1 tiene un, Problema Lt. La palabra «algebra» esté también coneciada con el matematico ale Khowirizmi, que dio su nombre alos algo- ritmos. Cul es la relacin? Problema 1.2 Hl domingo de Pascua et en principio el primer domingo después de Ia primera hina llena desputs del equinoc- cio de primavera. Zs esta rega suficiente rmente precisa para lamazia an algortmo? Justifique su respuesta, Problema 1.3 Mientras se est jecutando tun algoritmo « mano hay que efectuar una lcci sletoria. Para servtse de ella como ayuda, dispone uno de una moneda impar- dal, que proporciona los valores ae y enc ‘on igual prbebiidad, y un dado imparcal (que suministra cada uno de los valores de! 1 6 con igual probabilidad, Se pide selecco- nar cada uno de los valores 70, amarilo y ‘zu con igual probabilidad. Dé al menos tes formas de conseguitlo. Repita el problema ‘on cinco colores en lugar de hacero con tres. Problema 1.4. {Es posible que exista un lgoritmo para jugar un juego perfecto de billar?Justique su respuesta. Problema 15. Utica maliplicacin 2 4s russe para maltiplicar (2) 63 por 123, y (®) 64 por 123, Problema 1.6, Busque una calculadora de bolsilo que tenga una precisn minima de ‘ocho digs, esto es, que pueda multipar ‘una cifra de csato dgion por otra de cuatro ‘gies y obtener a respuesta correcta de ocho digiton Se pide multiplcar 31415975 por ‘8182818. Mostrar que el algoritmo divide y ‘vencerés de la Secciin 1.2 se puede utilizar para soluconar el problema con un pequeio _nmero de etlculos que se pueden hacer en a ‘aleuladors, seguido de una pequeta sua ‘on papel yIspiz. Hct el cleo, Super cae ;No lo haga deforma recursva! Problema 17. Se pide multipicar dos rémeros dades en némeros romanos. Por ‘femplo, XIX veces XXXIV es DCXLVI. Nose Plede utilizar un método que implique tra- ‘ci los miimeros a notacin arabiga, mul plicasloe y volver a traducrlos después. Di sefe un algoritmo para este problema, ‘Pista: Basque maneras de traducir hacia adelante y hacia atrés entre Ia notacibn romana verdadera y algo parecido que 90 Implique restas. Por elemplo, XIX podria fescribiree como XVIIII en esta notacién trots 57 50 Pretninrs Capitulo t a 5i- emiaen eae cne inducivamente? Vueiva imentarioconc(6)-_pngateadems que me eo ue P() Demostrarporinduccién matemdtica ge- __Sentemente grande, Demos {Qué past sie pemite que los puntos se es: wid para odo n> a Uizar el xia del seralizada que Por poner pacien iregulanent? (opcional y mucho mimo ent para derivar ura contadicn. foc rene: Po is dled deterer Lr diene crests jerte consstenteen que existen tres cons- ata cn) y demestrar gue es core) Froblema 125.81 problema 124 psa do- tntes reales positivas u, » y w tales que snogtar le wlies del prio de iss srt =n) < nie un para cada entero n5u- Problema 1.28, {Por qué cree que Ia» materticaa partir dl anioma del mini ficientemente grande. duecion matematce ha redo este nom. enero, De hecho el pring y el xioma son ‘Not: Este problema muestra que el tem ‘breaun cuando es realmente una tcnica de- equivalents demneste el axioma del sn ‘po requerdo pare uilizacén directa de Ta daca? smo entero por aduccen material «que es lari ren (Esto se conoce con el definii6n recursiva para clculre determi Sugeens: Como primer pas, demucstre ‘ombre de f6rmula de Moivre) ante de una marian xn es proporconal a Problema 121, Demostrar por induccién que todo conjunto no vacio de enteros osi- slo cuales mucho peor que te Hempe satemitica que in suma de os cubos de os tvos contiene un elemento. minimo. por Problema 1.28 Siguiendo el problema fuera meramente exponencll Por supuest, ‘peimers enterosponitvos es igual alu induceién matemitica sobre el nero de 127, demostrar por induccién matemiica Arado dea suma de estos enteom. slementon del conju, verve que #8 de- que f, > (2) para todo entero m suiciente- rostral sera gualmente vida para cal- rente grande, {Cémo de grande tiene que dan. Véase a Seccién 27% para mds detalles. Problema 1.22 Siguiendo el problema quer conjrtafrto de némeros reales, lo fern? No uilice la f6rmula de Moivre. 1.21, demuestre que a sumade es cubos de cual muestra aramente que no es aplicable Problems 1.32, Velo a hacer el problerna tos primerosenteros positives gual sl diectamentea Tos conto infinite. Para Problema 1.29, Siguiendo el problema 131, persdefinn ahora () = nlle~1) pee ciadrado de a soma de coos enfeos, pero generalrarcl reuedo an conn ini sath dearer que fore aca da bes on eoeeraee Uitlice ahora I proposiién 1713 on agate nomaoe enero considers cualquier de eee dela induccién matemstica (desde luego, la__etonconuntosX. Seam cunlguler elemento Eline proposicién 1713 también se demosto por de X (oo Se necesita un axioms pare eso: roi Ho Problema 1.33. Considere una constan- {nduecion matemstia!) todo conjunto info contiene al menos un era pratense @ rere eg slemento por defnicir). Sea Yelconjutode ENR wl que Problema 123. Determinar por induc: elementos de tales que no son mayores que Problema 1.30, Siguiendo el problema o clin ode los valores eteospositvos dem Mostar que Y es un conjunto de entero 1.27, demostrar por induecién matemica soy 2°. Demueste su aft- positives na vaio y inito,y consiguente- seneralizada que fi = + £2 para todos ne ‘racin po induccion matematis ‘ente ls demostraclén por induca6n mate- fos enterosn 20. - smite sed apie para concur qu ¥con- Shgrence: Demosrar también el tore. Reread entero posto Utizando lain bls 12 aon finned de ps, mor sma ms fuerte conitenteen que dustin comarca des itm ie que toc conjr no vacedeenlrespo-_‘ialice I prueba argumentando Que me /una constant tal que Shivor eontene tenon minima. tambignelmenoreemento de fa= Bibs ft Sorrog po cada entero sufcentemente ‘ropledad no expen para conunios de ne grande -ros ress postivos considése por em Problema 1.26.Dar una demostracins- Problema 131. Consdérense las cons- lo el cojuno de todos ls ete quest en-__gurosa de que el principio generalize de. tantesarbitaras reales postvasay® De- Problema 1.34: Dar dos funciones fn) y ‘uenanetctamente ene Oy 1) Uilizndo duccién matemia es vélida. finase por recurrencia E1N'=+ a(n tales que ni ft) nl (0 tendan aun Ie mite cuando = lende 2 iii, pro tales qu, ambos, fi) + sy fn) /3() tendon tealmente aun linute, Problema 1.3 Determinar el compor- tamiento cuando m tiende ® infnito de fin) =n “2, donde res cualquier entero positive, Problema 136. Utiizar la regs de 'HO- pital para hallar el init cuando n Hende a Inne de Jog log" log en dandea > 0 ‘sua constante postive arbitrada Problema 157. Demostrar la propose 18. Problems 1.38. Dar une demostracién sencil, sin wilizar integrals, de que Ia se- ie arménics diverge. Problema 1.39, Utlizar una tenia sic lav ala dustrada en la Sgura 18 para m0s- ‘uae que para > 1la suma ex converge un Hite menor quer/(7~1) Problema 140, ese abet) Sen fo) ua fen pola y eatin decree fede que tend a0 csandon Sende ain to Mastarquelaserief)=f2)$8)-A0 {Sconvergeie quest suma st ecuentae tf) 7) For epi Jog 2 = 060a1e Mostra, ms ain, que el eror que $e 2 ‘mete st se aproxima a Suma de toda la serie Problemas 61 por Ia suma de los» primeros teminos eo menor que f( +1). Problema 142, Probar que (Pr) =e rene (i) =e rare. altima ss sean $0) Sugeroncia: Derivar los dos lndos del teo- ema 1720 lige lotto -As 5c pre-e oF -_ Sugereca:Utlizar la proposci 17.12 Problema 14, Mostar que dot suesos _mutuamente excuyentes no son independien- tessalvoenel cago val consistent en que al ‘menos uno de ellos tenga Ia probable cero. Problema 146. Considérese un exped- ‘mento aleatoriocuyo espacio muestra 5 es 4,2, 3, 4,3). Seam Ay B los sucess el e- sullado es divisible por 2» y el resultado es Aivisble por 3s, respectivamente. ,Casnto valen Pr (AL, PB ]y Pr [4 718 7? (Son los sucesos A y Bindependientes? Problema 1.47. Mostar que pars la ct sera de cabllos de le Seen 174, el 99% el iempo moesrasgenancis experadas romedindas a lo lang de 50 carreras en- ‘hentran entre 243 y 923. 62 reliinares Capitulo 1 1.9 REFERENCIAS Y TEXTOS MAS AVANZADOS Distinguiremos tres clases de libros que se acupan del disefio y andlisis de algoritmos. Los libros especfcas abarcanalgoritmos que son tiles en un érea de aplicacién particu- lar, ordenacin y basqueda, teoria de grafos, geometriacomputacional, et, etc. Los li bros generalesabarcan varias reas de aplicacion: proporcionan algoritmos stiles para ‘ada drea. Por éltimo, los terceros, de agortmia se concentran en las tenicas de diseBo Yyaniliss de algoritmos:iustran cada ténica mediante ejemplos de algoritmas tomados ‘Ge ditintasdzeas ce aplicacin. La diferencia entre estos dos ipos de ibros es necesaria mente diusa en algunas ocasiones Hare (1987) adopta un punto de vista mas amplio de Ia Algoritala,y la considera nada menos que «el esprit de a compulacéne, ‘a cueccin de algortmos més ambicosa que se haya intentado unease debe sin du- da a Keuth (1968, 1989, 1973), que orginalmente tenia i inten de constr de sete vo imenes. Hay varios eapttulos del Handbook of Thesetial Computer Scien, editado por van ‘Leeuwen (1990), que son de gran interés para el estudio dealgortmos. Hay muchos otros bros generales que merece [a pena menciona: por orden cronoligio Aho, Hopcroty Ul- ‘man (1974), Baase (1978), Dromey (1982), Sedgevsck (19%), Gonnet y Baeza-Yates (194), Melhor (19842, 1984b, 19844), Manber (1989), Cormen Leserson y Rivest (150), Kingston (090, Lewis y Danenberg (1991), Kozen (1992) y Nievergelte Hinrichs (193) ‘Haremos alusisn a bros concretos en los capitulos siguientes siempre que sean rele- ‘antes para nuestra discus; podrfamos mencionay, sin embargo, a Nilson (1971), Brig- ham (1974), Borodin y Munro (1975), Christofides (1973), Lawler (1976) Reingold, Niever- ‘elt y Deo (1977), Gondran y Minoux (1979), Even (1980), Papadimitriou y tight (1982), “Tarjan (1983), AKI (1988), Lakshmivarahen y Dhal (1990), a Ja‘(1982) y Leighton (1992). “Ademés de nuestros propios bros —éste y Brassard y Bratley (1988) —y los de Ha- zl, conocemos tres trabajos més acerca de la Algoritmia: Horowitz y Sab (1978), Stin- on (1985) y Moret y Shapiro (1991). Para una dscripcin més popular de losalgoritmos, ‘véase Knuth (1977) y Lewis y Papadimitriou (1978) ‘a multiplicacon 2 la russe se describe en Warusfel (1961), un notable bio francés ‘de matemsticas populares, pero la idea bésica era conocia alos antiguos egipcos, qui- 24 ya en elafio 3500 . C; véase Ahmes (1700 a) y Kline (1972) La multiplicacién uti Hzando «divide y vencerds» ha sido atrbuida a Keratsubs y Ofman (1962), mientras que Is multipicacion arébiga ha sido descrita en Eves (1983), Para sa discusin de las e- rmottraciones matemétieasconstructivasy no constructvas tales come las que dimos pa vel teorema 1.52, consiltese Bishop (1972). El principio del descubrimlento matemsti- ‘coha sido desrito por Palya (1945, 1954). El primer contragjemplo dela canjetura de Ex- Ter acerca de que no es posible que Ia suma de tres potencia de nmeros eneros posit- vos sea una cuaria potencia ha sido dado por Elkies (1988). ‘Aun cuando no utilizamos ningin lenguaje especifico de programacién en el presen- te texto, sugerimos que los letores que no estén familarizados con Pascal harian bien ‘enexaminar algunos de os numeroso bros existentes acerca de este lenge, tl como el de Jensen y Wirth (1985) 0 el de Lecarme y Nebut (1988) ‘Rosen (1991) es una intreduccion extensa y simple a temas tales como el céculo pro- ‘posicional,conjuntos, la probabilidad, el razonamiento matematicoy los grafos. Seccién 1.9 Referencias y textos més vanzados 63 Leonardo Pisano (c170-¢ 1240) 0 Leonardo Fbonacl fue el gran matematico occ! ental de la Edad Media. Hay una breve descrip de su via y un segmento del Lib- ‘baci en Calinger (1982), La demostracié de que ted ze se debe a Bur, véase Eves (1983) o Scharlau y Opolka (1985). Estas referencias conie- ren también la historia de teorema binomial Capitulo Algoritmia* elemental 2.1 INTRODUCCION En este capitulo comenzaremos nuestro estudio detallado de los algoritmos. Pri- ‘mero definiremos algunos términos: veremos que un problema, tal como multiplicar dos enteros positives, vaa tener normalmente muchos, normalmente infnitos, eem- plares, tales como multiplicar los enteros concretos 981 y 1.234. Los algoritmos deben funcionar correctamente en todas los casos del problema que afirman resolver. ‘A continuacién explicaremos lo que queremos decir con la efciencia de un al- goritmo, ¥ discutiremos distintas formas de seleccionar el algoritmo més eficiente ppara resolver un problema cuando estén disponibles varias teenicas que compiten entre si, Veremos que resulta crucial cémo cambia la eficiencia del algoritmo a me- ida que los casos del problema se vuelven mayores y por tanto (normalmente) iis difciles de resolver. También distinguiremos entre la eficiencia media de un algoritmo cuando se utiliza en muchos casos de un problema y su eficiencia en el peor caso posible. La estimacién pesimista, del peor caso posible, suele ser ade- cuada cuando tenemos que estar Seguros de resolver un problema en una canti- dad limitada de tiempo, por ejemplo. ‘Una ver se ha definido lo que queremos decir por eficiencia, podemos empe- zara investigar los métodos utilizados para analizar algoritmos. Nuestra linea de ‘ataque consistira en contar el mimero de operaciones elementales, tales como su- mas y multiplicaciones, que efectta el algoritmo. Sin embargo, veremos que in- cluso estas operaciones tan corrientes no son tatalmente sencillas: tanto la adicién. como la multiplicacién se vuelven mas lentas a medida que aumenta el tamafio de sus operandos. También intentaremos dar alguna nocidn de la diferencia pric- tica de un algoritmo bueno y uno malo en términos de tiempo de computacion. * Las nots ape de pigia se ha prferidoagrupara todas l fil dlr, en un apatade Haado Notas ies, 66 Algortmia clemental Capito 2 Un tema que no vamos a abarcar, en este capitulo ni en ningsin otro lugar, es la forma de demostrarrigurosamente que los programas que utiizamos para repre- sentar los algoritmos son correctos. Esta aproximacién requiere una definicin for- ‘mal dela semantica de los lenguajes de programacin que va mucho més allé de To que consideramos necesario: un tratamiento adecuado de este tema mereceria tun libro en si, Para nuestros propésitos nos conformaremos con fiarnos de de- ‘mostraciones informales que utilizan argumentos de sentido comin, El capitulo coneluye con un cierto numero de ejemplos de algoritmos proce- dentes de diferentes dreas, algunos buenos y otros malos, para demostrar la forma ‘en que las principios expresadios se aplican en la prictica 2.2 PROBLEMAS Y EJEMPLARES En la Seccin 1:1 hemos presentado varias formas distintas ce multiplicar dos centeros positives, tomando como ejemplo la multiplicacién de 981 por 1234. Sin ‘embargo los algoritmos esbozados aqui no se limitan a proporcionar una forma de ‘multplicar estas dos niimeros en concreto. De hecho, ofrecen una solucign gene- ral al problema consistente en multiplicar dos enteros positivos. Diremos que (981, 1234) es un ejemplaro un caso de este problema, La multiplicacién de 789 por 9742 «que se puede expresar como (789, 9742), es otro ejemplar del mismo problema. Sin ‘embargo, la multiplicacién de -12 por 83.7 no loes, por das razones: -12:no es po- sitivo, y 837 no es entero. Por supuesto (-12, 837) es un ejemplar de otro proble ‘ma de multiplicacion mis general. La mayoria de los problemas interesantes tie nen una coleccin infinita de ejemplares. Sin embargo, hay excepciones. Hablan- do propiamente, el problema de jugar un juego perfecto de ajedrez solamente tic- ne tn ejemplar, puesto que se da una tnica posicininicial. Ademés solamente existe un riimero finito de subcasos (las posiciones vélidas intermedias). Sin em- Dargo esto no significa que el problema carezce de interés algoritmico. Un algoritmo debe funcionar correctamente en todos los ejemplares 0 casos del problema que manifesta resolver. Para mostrar que un algoritmo es incorrecto so- Tamente es necesario encontrar un ejemplar del problema para el cual no sea capaz de encontrar una respuesta correcta. Del mismo modo que e3 posible demostrar que un teorema no es vélido encontrando un snico contragjemplo, un algoritmo puede rechazarse tomando come base un tnico resultado incortecto. Por otra pat= le, del mismo modo que puede resultar dificil demostrar un teorema, tambien es dificil normalmente demostrar la correccién de un algoritmo, (Sin embargo, véase la Secci6n 1.63 para un caso sencillo.) Para hacer que esto sea posible, cuando e3- Pecificamos un problema, es importante definir su dominio de defnicin, esto es, el Conjunto de casos que deben considerarse. Los algoritmos de multiplicacidn que se ‘dan en el Capitulo 1 no funcionarin para algonitmos negatives o fraccionarios, 0 por lo menos no sin ciertas modificaciones, Sin embargo, esto no significa que los Alzoritmos no sean validas: en los casos de mulkiplicacin que implican nimeros negativus 0 fracciones no se encuentran en el dominio de definicion que nosotros Seleccionamas al definirel problema, Seceion 2.3, 23 Eficlencia de los algortmor ‘Tade dispositive de célculo rea tiene tun limite que afecta al tamafo de los ca- 08 que puede manejar, bien como consecuencia de que los aameros implicados sean demasiado grandes, o porque nos quedemos sin espacio Sin embargo, esta, limitacién no debe ser achacada a algoritmo que decidamos utilizar Distintas ma- _quinas tienen distntos limites, incluso distintos programas que implementen un ‘mismo algoritmo en la misma maquina pueden imponer diferentes limitaciones. En este libro casi siempre nos contentaremos con demostrar que nuestros algorit- -mos son correctos en abstracto, jgnorando las limtaciones précticas de cualquier programa concreto para implementarios LA EFICIENCIA DE LOS ALGORITMOS Cuando tenemos que resolver un problema, ¢s posible que estén disponibles varios algoritmos adecuadas. Evidentemente, deseariamos seleccionar el mejor Esto plantea la pregunta de cémo decidir entre varios algoritmos cual es preferi- ble. Si solamente tenemos que resolver uno o dos casos pequefios de un problema mas bien sencillo,quizé no nos importe demasiado qué algoritmo utilizaremos: en este caso podriamos decidimnos a seleccionar sencillamente el que sea mas facil de programar, 0 uno para el cual ya exista un programa, sin preocuparnos por sus ‘propiedades tedricas. Sin embargo, si tenemos que resolver muchos casos, 0 si el problema es dificil, quiza tengamos que seleccionar de forma ms cuidadosa. El enfoque empirico (0 a posteriori) para seleccionar un algoritmo consiste en ‘programa las téenicas competidorase i probindolas en distintos casos con ay da de una computadora, El enfoque terico (0 « prior’) que es el que nosotros pro- ugnamos en este libro, consiste en ceterminar mateméticamente la cantidad de recursos necesarios para cada uno de los algoritmos como funcién del temo de los ‘casos considerades. Los recursos que mas nos interesan son el tiempo de computa cién y el espacio de almacenamiento, siendo el primero normalmente el mis importante. A lo largo del libro, por Io tanto, compararemos normalmente Jos al- _goritmos tomando como bese sus tiempos de eecucin, y cuando hablemos de la 2ficiencia de un algoritmo, querremos decir simplemente lo rapido que se ejecuta, Sélo en algunas ocasiones nos interesarén también los requisitos de almacena- miento de un algoritmo, o su necesidad de otros recursos. (Ejemplos de otros re- ‘cursos son el nimero de procesadores que se necesitan por parte de un algoritmo paralelo, y tambien algunas combinaciones artficiosas pero significaivas: quizé ros interese minimizar el producto del espacio de almacenamiento utilizado por cl tiempo durante el cual esti siendo ocupado, si es que es asf la forma en que se ‘alculan nuestras facturas.) El famo de un ejemplar se corresponde formalmente con el nmero de bits _que se necesitan para representar el eemplar en una computador, utilizando al- ‘gin esquema de codificacién precisamente definido y razonablemente compacto. Sin embargo, para hacer més claros nuestros andlsis, lo normal seré que seamos ‘menos formales,y uilizaremos la palabra «tamatio» para indicar cualquier entero {que mida de alguna forma el nimero de componentes de un ejemplar. Por ejem- 68. Algoritmia clement “Capitulo 2 plo, cuando estamos hablando acerca de ordenaciones, mediremos normalmente el tamatio de un ejemplar por el nimero de items que hay que ordenar ignorando fel hecho consistente en que cada uno de estos items ocuparia mas de an bit para representarlo en tna computadora. De manera similar, cuando hablemos acerca de grafos, mediremos normalmente el tamafo de un ejemplar por el ntimero de nodes o de aristas (0 de ambos) implicados, Apartindonos un poco de esta regla ‘general, sin embargo, cuando hablemos acerca de problemas que impliquen ente- 40s, daremas algunas veces la efciencia de nuestros algoritmos en términos deli lor del ejemplar que estemos considerandlo, en lugar de considerar su tamafo (que seria el nlimero de bits necesarios para representar en binario este valor) La ventaja de la aproximacién teérica es que no depende ni de la computa- dora que se esté uilizando, ai del lenguaje de programacién, ni siquiera de las hhabllidades del programador. Se ahorra tanto el tiempo que se habria inverti- do innecesariamente para programar tn algoritmo ineficiente, como el tiempo dde maquina que se habria desperdiciado comprobandolo. Lo que es mAs signi- ficativo, se nos permite estudiar la eficiencia del algoritmo cuando se utiliza en «casos de todos los tamatios. Esto no suele suceder con la aproximacién empisi «2, en la cual las consideraciones pricticas podrian obligamnos a comprobar los algoritmos s6lo en un pequefio mimero de ejemplares arbitrariamente seleccio- rnados y de tamano moderado. Dado que suele suceder que los algoritmos re cign descubiertos empiezan a comportarse mejor que sus predecesores s6lo cuando ambos se utilizan en ejemplares grandes, este ultimo punto resulta es- pecialmente importante. También resulta posible enalizar les algoritmos utiizando un enfoque hirito, cen el cual la forma de la funcién que describe Ia eficiencia del algoritmo se deter- ‘mina teGricamente, y entonces se determinan empiricamente aquellos paréme- {ros numéricos que sean especifios para un cierto programa y para una cierta ‘méquina lo cual suele hacerse mediante algin tipo de regresién. Empleando es- te enfoque se puede predecir el tiempo que necesitaré una cierta implementacion ppara resolver un ejemplar mucho mayor que los que se hayan empleado en las pruebas. Sin embargo, hay que tener cuidado cuando se hacen estas extrapola clones basindose solamente en tn pequeno nimero de comprobaciones empiri ‘as y anulando toda consideracion tedrica. Las predicciones hechas sin apoyo te- {rico tienen grandes probabilidades de ser imprecisas, si es que no resultan com- pletamente incorrectas. ‘Si deseamos medir la cantidad de espacio que utiliza un algoritmo en funcién dl tamafo de fos efemplares, esté a nuestra disposicion una unidad natural, @ saber, e il. Independientemente de la maquina que se esté uilizando, a nocion de un bit de almacenamiento esti bien definida Si, po otra parte, tal como sue- le suceder, deseamos medir la eficiencia de un algoritme, en términos del tien po que se necesita para legar a una respuesta, entonces no existe una opcion tan ‘evidente. Esta claro que no se puede pensar en expresar esta eficiencia,digamos, en segundos, puesto que no se dispone de una computadora estandar ala cual se pudieran referir todas las medidas, Secelén 2.3 ciencia de los algoritmos Una respuesta a este problema es la que viene dada por el principio de inoa- riancia?, que afirma que dos implementaciones distintas de un mismo algoritmo zo diferirin en sit eficencia en més de alguna constante multiplicativa. i esta Constante fuera, por ejemplo, cinco, entonees sabemos que si la primera imple- ‘mentacién requiere un segundo para resolver casos de un cierto tamafo, enton- ces la segunda implementacién (quiza en una maquina distinta, 0 escrita en tin lenguaje de programacion distinto) no requeriré mas de 5 segundos para resol- ver los mismos casos, Para ser més exactos,si dos implementaciones del mismo algoritmo necesitan £0) y 1{0) segundos, respectivamente, para resolver un c2- ‘so de tamano n,entonces siempre existen constantes positivas cy d tales que f,(") < cfm) y 140) S dl, (n) siempre que n sea suficientemente grande. Fn otras pala- bras el tiempo de ejecucion de cualquiera de las implementaciones esta acotado por un maltiplo constante del tiempo de ejecucicn de la otrarla decision de a qué jmplementacién llamaremos primera, y a cudl llamaremos segunda, es irele vante, La condicién de que 1 sea suficientemente grande no es realmente nece- saria: véase la wregla del umbral> en la Secci6n 3.2. Sin embargo, a incluirle sue- Jeser posible halla constantes més pequefias cy d que las que se hallarian en ca- so contrario. Esto resulta iil si estamos intentando calcular buenas cotas acerca Hay cieros Grdenes que se producen con tanta frecuencia que merece la pena darles un nombre. Por ejemplo, supongamos que el tiempo necesaro para que un algortmo resuelva un caso del tamato n nunca es mds que cn segundos, en don- {de ces alguna constant adecuada, Dizemos entonces que el algortmo requere un tiempo en el orden de no mas simplemente que requlete un tiempo lied. En es te caso también hablamos de un algoriio lineal. Stun algoritmo nunca necesita ims de c segundos para resolver un caso de tamati entonces demos que r= Oy x < TI] hacer Tit 11 TU joj T+ tes procedimiento seecvionar (TH... }) para i hasta nl hacer in is mine & TH para j «i+ 1 hasta hacer 1] < minx entonces minj & j mine 0), entonces el tiempo requerido para caleular xe min {Th [eid rece con n, puesto que esto es una abreviatura de x 1 divide (n -1)! + 1 si y sOlo si m es pri- ‘mo, nos permitirfa comprobar la primalidad de un entero con sorprendente eficlenci funcién Wilson (n) ‘Proporciona verdadero si y solo si es primo, n > I} sin divide (n~ I+ 1 entonces devolver verdadero sino devolver falso El ejemplo del comienzo de esta seccién sugerta que podemos considerar que Jaadici6n (suma) y la multipliacién son operaciones de coste unitario, puesto que suponia que el tiempo requerido para estas operaciones podia acotarse mediante luna constante. En teoria, sin embargo, estas operaciones no son clementales por cuanto el tiempo necesario para ejecutarlas aumenta con la longitud de los ope: zandos. En la prictica, por otra parte, puede resullar sensato considerazlas como ‘operaciones elementales con tal de que los operands implicados sean del tamafo rzanable en los eemplares que esperemos encontrar, Hay dos ejemplos que ius traran lo que queremos decir Seccién 2.5 Qué es ura operacion elemental? fancién Sum (2) {Caleule la suma de los enteros de 1 a 7) sum «0 ppara j= 1 hasta hacer sun & sum +i devolver sum fancién Fibonacci (n) {Calcula el -ésimo término de la sucesién de Fibonacci: vvéase la Seccién 1.6.4} jetjed para ke U hasta w hacer j i+) fej-t devolver Enel algoritmo llamado Sum el valor de sum sigue siendo razonable para todos ls casos que uno puede de forma razonable esperar encontrarse en la préctica. Si estamos utilizando una maquina con palabras de 32 bis, todas las sumas se po- drian ejecutar directamente siempre y cuando 1 no sea mayor que 65.535. En te ria, sin embargo, el algoritmo deberia funcionar para fads los posibles valores de ti. Ninguna maquina real puede de hecho ejecutar estas sumas con un coste anita: flo si seleccionamos un 1 suficientemente grande. El andlisis del algoritmo debe por tanto dependier del dominio de aplicacin para el cual esta destinado, En el caso de Fitonacci la situacion es distinta, Aqui basta con tomar = 47 pa- ra hacer que la dtima adicion «j i+ j»dé lugar a tn desbordamiento aritmético en maquinas de 32 hits. Para almacenar el resultado correspondiente a = 63.535, se necesitarian 45496 bits, lo cual es mas de 1420 palabras de computadora, Des de un punto de vista prictico, por tanta, no resulta realista considerar que estas ‘sumas 8 pueden efectuar con un coste unitario. Mas bien, debemosatribuirles un coste proporcional a la longitud de los operandos implicados. En la Seccidn 42.2 se muestra que este algoritmo requiere un tiempo euadritico, aunque a primera vista su tlempo de ejecucién parezea ser lineal Enel easodela multiplicnion quizé sea razonable considerar que es uma operaciin clemental para operandos suficentemente pequefios. Sin embargo, resulta mis senci- lio produce grandes operandos por multiplienciin epetida que por adicion, asi que es todavia mis importante asegurar que las operaciones aitméticas no se desborden. ‘Ademas, cuando los operancios empiezan a volverse grandes cl tiempo requerido pa ‘mi efectuar una suma crece linealmente con el tamano de los operands, pero se ree uel tiempo requerido para efectuar una multiplcackin crece mas deprisa. Puede surgir un problema similar cuando se analizan algoritmos que impli quen numeros reales, sles que la precisién requerida aumenta con el tamano de Jos casos que haya que resolver Un ejemplo tipico de este fendmeno es el uso de la formula de De Moivre (véa- se el problema 1.27) para caleular valores de la sucesién de Fibonacci. Esta for- mula nos dice que fel 1-ésimo término dela sucesion, es aproximadamente igual 8 76 Algorumia elemental Capitulo 2 2.0/1, en donde ¢= (1 +¥5)/2 es la rit dua. La aproximacién es sufconte- ‘mente buena para que en principio se pueda oblaner el valor exacto def, sin mas due tomar el entero mas proximo; véase el problema 22, Sin embargo, vimos mas arriba que se requieren 43.46 his para representa con pres fn Est significa «que seria precisa calculr la aproxtmaign conc mismo grado de precision para ob tener la respuesta exact. La aitmetica odinarn de coma flotante de simple odo ble precision, que emplea tna 0 dos palabras de computadora, no sera, cietamen- te suficientemente precisa. En la mayoria de las slwaciones practice, sin embargo, 1h uiizacion de atmética de coma flotante de simple 0 doble presi resulta ser satisfctoria, a pesar de la inevitable pérdida de precision. Cuando eto sucede, ‘azonable tomar estas operaciones atmdticas como s foeran de cost uniaro. ara esti, incluso la decision de si una instuccin tan aparentementeino- cua como sje iso se pode considerar ono elemental requiere el uso de nest juicio. En lo que sigue, consideraremos que las sumas estas, mliplicaciones, dt Visiones, operaciones de meédulo, operaciones booleanas, comparaciones ¥ asi naciones son operaciones elementales que se pueden ejecuta con un coste unita- Hoa no ser que indiquemos expliitamente lo contrario, 2.6 POR QUE HAY QUE BUSCAR LA EFICIENCIA? A modida que las computadoras se van volviendo mas y mas répidas puede parecer que apenas merece la pena invertir nuestro tiempo intentando diseRar ‘unos algoritmos més eficentes. zNo seria mas sencillo esperar simplemente ala siguiente generacion de computadoras? Los principios establecdas en las seccio- nes anteriores muestran gue esto no es verdad. Supongamos, para iustrar el ar- {gumento, que para resolver un problema concreto disponemos de wn algoritmo ‘exponencial y de una computadora que puede ejecutar este algoritmo para casos dle tamafo 1 en 10-' x2*segundos. Fl programa puede resolver un ejemplar de ta- ‘maflo 10 en 10" x 2” segundos, o aproximadamente un décimo de segundo, Re solver un ejemplar de tamatio 20 requeriré aproximadamente un tiempo mil veces ‘mayor, o aproximadamente dos minutos, Para resolver un ejemplar de tamafo 30 se necesitaria de nuevo mil veces mas tiempo, asi que no bastaria ni siquiera todo tun dia de tiempo de cilculo. Suponiendo que fuera posible hacer funcionar la computadora sin interrupcién y sin errores durante un ano, solamente se podria llegar a resolver un ejemplar de tamano 38; véase el problema 215, Supongamos que es necesario resolver ejemplares todavia mis grandes que éste, ¥y que con el dinero disponible puede uno permitirse comprar una computadora "nueva cien veces mas rapida que la primera. Ahora con ef mismo algoritmo se puc- de resolver un ejemplar de tamano en solo 10-2: segundos. Quiza tenga la sen- sacion de haber desperdiciado el dinero, sin embargo, cuando determine que ahora, ‘cuando tenga en marcha la nueva maquina durante todo un ato, no se podra ni sc jquaiera resolver un ejemplar de tamano 45. En general, si antes se podia resolver un ‘jemplar de tamaio m en un tiempo dado, la nueva maquina resolverd ejemplares fo tamano coma mucho + Ig 10, ¢ aproximadamente n-+7, en el mismo tiempo. Secclin 2.6 {sPor qué hay que buscar la eficenciat 77 ‘Supongamos que en lugar de hacer esto decide invertiren algoritmia, y que, habiendo invertido la misma cantidad de dinero, se las arregla para encontrar un algoritmo cibico para resolver el problema. Imagine, por ejemplo, que utilizando Ja méquina origina y el algoritmo nuevo puede resolver un caso de tamafio en 107 x7? segundos. Entonces para resolver un ejemplar de tamafo 10 novesitaré 10 segundos, y un ejemplar de tamafo 20 seguira requiriendo entre uno y dos mi- nitos, Pero ahora tun ejemplar de tamafio 30 se puede resolver en cuatro minutos. y medio, y en un dia se pueden resolver casos cuyo tamao sea mayor que 200; con un afo de céleulo se podria alcanzar casi el tamafo 1.500, Tustramos esta ta sa de crecimiento en la figura 21. “Tempode gecucin Tama dl ejemplar Figura 21. Algorimia rete hariare {nuevo algoritmo no solamente ofrece una mejora mucho mayor que la ad- quisicion del nuevo hardware, sino que ademés, suponiendo que pueda uno permitirse ambas cosas, haré que esta adquisicién sea mucho més rentable. Sies, posible utilizar tanto el algoritmo nuevo como una maquina clen veces mas ré- pda que la anterior, entonces ser posible resolver en el mismo tiempo ejem- plares cuatro 0 cinco veces més grandes que slo con el nuevo algoritmo nada, ‘mds, y en la misma longitud de tiempo (el factor exacto es */i00). Comparese con la situacion del algoritmo anterior, en la cual s6lo se afiadia 7 al tamafio del ejemplar, aqui se puede multplica el tamafo del ejemplar por cuatro o cinco. Sin embargo, el nuevo algoritmo no deberia utilizarse alocadamente en todos Jos ejemplares del problema, en particular en los més pequefios. Hemos visto que en la méquina original él nuevo algoritmo requiere 10 segundos para re- 7B Algorumia elemental _Capitula 2 solver un ejemplar de tama 10, lo cual es cien veces mus lento que el algorit- ‘mo viejo. EI nuevo algoritmo solamente es mas rapido para ejemplares de ta- ‘mafo 20 0 superior. Naturalmente, es posible combinar los dos algoritmos pa- za formar un tercero que examinaré el tamaao del ejemplar que hay que resol- ver antes de decidir qué método va a utilizar, 2.7 EJEMPLOS Quizé se esté preguntando si es realmente posible en la préctica acelerar un al- goritmo en la medida sugerida en la seccion anterior. De hecho, se han dado casos enlos cuales se han efectuado mejoras todavia mas espectaculares, incluso para al- goritmos ya muy establecids. 2.7.1 CAleulo de determinantes Los determinantes son importantes en algebra lineal, y necesitamos saber Ia forma de calcularlos efcientemente. En nuestro contexto, proporcionan el mejor ejemplo de la diferencia que puede implicar un buen algoritmo, cuando se com= ppara con otro algoritme cisico, (Para disirutar de esta seccién no es preciso saber Toque es un determinante.) Existen dos métodos bien conocidos para calcular determinantes. Uno esté basado en la definicin recursiva del determinant; el otro se denomina elimi nacién de Gauss Jordan. El algoritmo recursivo requiere un tiempo proporcional an! para calcular el determinante de una matriz = 1; véase el problema 131 Este crecimiento es incluso peor que el exponencial, En fuerte contrast la el ‘minacin de Gauss-Jordan requiere un tiempo proporcional a para la misma tarea. Hemos programado ambos algoritmos en nuestra méquina local. algorit- ‘mo de Gauss-Jordan halla el determinante de una matriz de 10x 10 en una cen- tésima de segundo; y necesita aproximadamente cinco segundos y medio en und rmatriz 100 x 100. Por otra parte, el algoritmo recursive necesita mas de 20 se- gundos para una sencilla matriz cinco por cinco, y 10 minutos para una matriz 1x 10, Estimames que el algoritmo recursivo necesitaria més de 10 millones de ajos para calcular el determinante de una matriz.20 x 2, juna tarea que es efec- tuada por el algoritmo de Gauss-Jordan en aproximadamente un veinteavo de segundo! No se debe de conchuir a parti de este ejemplo que los algoritmos recursivos son necesariamente malos. Al contrari, el Capitulo 7 describe una técnica en la cual la recursividad desemperia un papel fundamental en el disefo de algoritmos. eficientes. En particular, un algoritmo recursive que puede calvlar el determi nnante de una matrix » 11 en un tiempo proporcional a 1, o aproximadamente ‘se sigue del trabajo de Strassen, demostrando de esta manera que la elimina- cio de Gauss Jordan no es 6ptima. -_Biemplos| 2.7.2 Ordenacién Los problemas de ordenacién son de capital importancia en las cencias de a computacién,y en particular en la lgoritmia. Se nos pide dsponer por orden una Coleccion de bjetos sobre los cuales esta defini una dena oa. Con est cjueemos decir que cuando comparamos dos obetoscuslesquiers dela oleccin, ‘Sbemos cull de lls debe ir en primer lgar Tara muchas clases de objetos ext requisites trivia: evidentemente 123 viene antes que 456 en el orden numérico, Y eli de Agosto de 1991 va antes del 25 de Dicembre de 1995 por orden del cae lendario, ai que tanto los enters como las fechas etn totalmente ordenados.Pa- ‘otros objets igualmentecomunes, sn embargo, la dfinicon de un onden total puede no ser tan sencla Por eemplo, como se ordenan dos mimeros compos? EVienengeneral antes o despues de vGenerals por orden afabstico, oe tata Ge iamisma palabra? (véase el problema 2,1), Ninguna de esas preguntas ene una respuesta evident, pero mientras no se encuenre la respuesta los bjtoscores- pondientes no se podrin orden. Los problemas de ordenacién eulen encontrar dentro de algortmeos més com- pleos. Ya hemos visto dos algritmosestandar de ordenacion en la Secon 24 a trdenacign por insectn y ia ordenacon por clon Estos de algoritmo tl co mmo vimog salen un dempo cuadrdica tanto en el cave peor corn por trio tnedio, Aun cuando ambos son excelentes cuando nes peat, existe otros algo. fitmos de ondenacin que son mis eficentes cuando nes grande. Ente ottos pod amos uilizarel algortnoordenacién por monica “hep” de Willans (wee Seccién 57), ordenar por fusion "merges" (véase Ia Secon 741), o el algo ordenacdn pid “ictort” de Hoare (véase la Sccin 742). Todo estos algort- mos require un tiempo que est en el orden de og por trmino medi: os dos Primerosreqieren un empo del mismo orden incluso ene caso peor Para tener una idea mas clara dels diferencias prcticasente un tempo gue estéen el orden de fy un tempo que estéen el orden de log, nosotros pro- gramamas el algoritmo de ordenaion por insecion yquicksor en nuestra mga na lca. La iferenciadeeicencia ene los dos algoritmos ex marginal cuando Pesueho ol ndmero de clementos que hay que ordenar Quicsrt yas casi dos ve fests ripido que lainserion cuando ge ordenan SO elementos tres veces mds ‘pido cuando se ordenan 100 elementos, Para ordenar 1.000 elementos, in rae. Cidn requiere mas de tres segundos, mieniras que quiksrtreqiere menos de un gquint de segundo. Cuando tenemos que ordenar 500 elementos la neficenca dela ordenaciGn por insercin se vuelve todavia mas pronunciada: por témino medio se neces un minuto y medio, en comparacion con poco mas de un se- gzundo para quicksor. Fn 30 segundos, uickor puede rane 10.090 elementos tstimamnos que se necestaran nieve norssy media para realizar el mismo tra jo uilzando Ia ordenacién pornsercion En el Capitulo 12 veremos que ning algoritmo de ordenacin que funcione por comparacin de los elementos qus hay que ordenar puede sex'més r4pido {ue el onde de log mast queen este sentido hempsor, mergesoty quiksrt son 9 ‘80 Algoritmia elemental Capitulo 2 lo més répido que puede ser un algoritmo (aun cuando guicksort tiene un caso peor muy malo). Por supuesto los tiempos reales de ejecucin dependen de las Constantes multiplicativas oculas en la definicion de sel orden de>. No abstan- te se pueden encontrar otros algoritmos de clasificacion mas rapids, en casos especiales. Supongamos que los elementos que hay que ordenar son enteros de Jos cuales se saben que estén entre 1 y 10,000. Entonces se puede utilizar el al goritmo siguiente. procedimiento casilla(T11." {ordena enteros entre ¥ y 10.000) smatriz Ut. 10.000] ppara k-~ 1 hasta 10,000 hacer L(k} «0 para j= hasta n hacer kT pk] = Up] +t ino ppara k =1 hasta 10.000 hacer ‘mientras Uff] «0 hacer intel Ty ui) uk) ‘Aqui Les una mateiz de «caills» para los elementos que hay que ordenar. Debe de haber una casilladistinta para todo posible elemento que se pudiera encontrar en T El primer bucle vaca todas las casillas,y el segundo pone eada elemento ce Ten el Tugar adecuado, y el tecero los vuelve a sacar otra vez por orden ascenidente. Es fé- cil mostrar (véaseel problema 2.17) que este algoritmo y sus variantes requieren un ‘tempo del orden de i. (La constante multiplicativa oculta depende de la cota sope- rior al valor de los elementos que hay que ordenar, y que aqut es 10.000} Por tanto cuando son aplicables estos algoritmos, son mejores. que cualquier algoritmo que funcione comparando elementos; por otra part, el requisito que debemes ser ca- paces de utilizar una casilla para toda posible clave significa que son aplicables con :mycha menos frecuencia que los métodos generales de ordenacién, Las métodos paralelos de ordenacién, que utilizan muchos procesadores pa- ra efectuar varias comparaciones simultaneamente, nos permiten ir todavia ‘mas deprisa. En el Capitulo 11 se esboza un ejemplo de algoritmo paralelo de ordenacién, 2.7.3 Multiplicacion de enteros muy grandes Cuando un céiculo requiere manipular enteros muy grandes, puede suceder que Jos operandos se vuelvan demasiado largos para almacenarlos en una sola pala- bra de a computadora que seestéutilizanda. Por tanto tales operaciones dejan de ser elementales, Cuando sucede esto, se puede utilizar una representacion tal co mo la de edoble precisiins de Fortran, o mis generalmente, la aritmetica de pre- ‘Seccion 2.7 jemplos cision maltiple. La mayoria de los lenguajes de programaciin orientados a obje- tos, tal como C ++ 0 Smalltalk, tienen clases predefinidas que hacen sencilla esta tarea. Ahora, sin embargo, debemos preguntamos cémo aumenta el tiempo nece- sao para sumar, restar, muliplcar 0 dividir dos enteros muy grandes con el ta mario de os operandos. Podemos medir este tamatio bien por el ntimero de pal. bras de computadora necesaras para representar los operandos en una maquina bien pore longitud de su epresentacion en decimal oen binario. Puesto que es tas medidas difieren slo por una constante multplicativa, esta opciGn no altera suestro anilisis del orden de eficiencia de los algoritmos en cuestién (pero véase el problema 2.18) En esta seccidn consideraremos solamente la operacién de multiplicacin Bl andlisis de la suma y de la resta es mucho més sencllo, y se deja como el problema 2.19. Supongase entonces que hemos de multiplicar dos enteros ‘grandes de tamaiio m y n respectivamente (jno confunda el tamafio de los ene teros con su valor!) Elalgoritmo clasico de Ta Seccién 1.1 se puede adaptar fé- cilmente a este contexto, Veros que multiplica cada cifra de uno de los ope- randos por la cifra del otto, y que ejecuta aproximadamente una adicion ele ‘mental para cada una de estas multiplicaciones. (De hecho hay unas cuantas :mas, como consecuencia de los acarreos que se generan.) En una maquina mul- tiplicamos cada palabra de uno de los operandos por cada palabra de la otra, y después hacemos aproximadamente una adicién de longitud doble para ca da una de estas multiplicaciones, pero el principio es exactamente el mismo. El tiempo requerido es por tanto del orden de mn. La multiplicacién a la russe también requiere un tiempo del orden de mn, siempre y cuando pongamos el operando més pequeno en la columna de la izquierda y el mayor en la dere- cha; véase el problema 2.20. Por tanto no hay raz6n para prefertlo con respec- to al algoritmo clésico, sobre todo porque es probable que la constante oculta sea mayor. Existenalgoritmos més eficentes para resolver el problema de la multiplicacén de dos enteos muy grandes. Fl algoritmo divide y vencerés, que encontrdbarmos enla Secci6n 1.2, y que estudiaremos aan mis en ia Seccién 7.1, requere un ten po del orden de vni***, o aproximadamente son”, '-en donde es el tamano del operando mis grande y mel del mis pequef. Si amibos operandos son de tamaho 1 el algoritmo requiere entonces un tempo del onden de n!* que es preteribe al tiempo euadrético que requieren tant el algoritmo clsico como la multiplicacién ala ruse La diferencia entre el orden de 1” y el orden de 1” es menos espectacular que la existente entre el orden 1 y el orden de 1 log n, que veiamos en el cas0 de los algoritmos de ordenacin. Para verficarlo hemos programado el algorit- ro clisico y el algoritmo de divide y vencerds,y los hemos probado con ope- randos de diferentes tamafios. Bl algoritmo divide y vencerds, teéricamente me. jor ofrece una mejora real poco significativa en nimeros de 600 digitos:requie- re unos 300 milisegundos, mientras que el algeritmo clasico requiere unos 400 oritmia elemental Capitulo 2 rilisegundlos. Sin embargo, para operandos de longitud diez veces mayor, elal- goritmo répido es unas tres veces mas eficiente que el algoritmo clisico: re- quieren aproximadamente 15 y 40 segundos, respectivamente. La ganancia de cficiencia sigue aumentando a medida que va ascendiendo el tamaio de los operandos. Existen algoritmos més sofisticados, y el més répido en la actualidad requie- re un tiempo del orden de 1 log 1 log log » para multiplicar dos enteros de ta- ‘mafo rt. Sin embargo estos algoritmos ms sofisticados son en su mayor parte de interés tedrico; las constantes ocultas son tales que solamente llegan a ser com petitives para operandos mucho més grandes. Para casos »pequerios» que mult- Pliquen operandos de unos pocos de miles de digits, resultan considerable- mente mis Ientos que los algoritmos mencionados mas arriba, 2.7.4 Céleulo del maximo comin divisor Sean m y n dos enteros positivos. El méximo comin divisor de my 1, que se ddenota como med (my), es el mayor entero que divide exactamente tanto a m co- mo an, Cuando med (Mi) = I, decimos que m y n son primos entre si Por ejem plo, med (10, 21) = 1 y med (6, 15) = 3, asi que 10 y 21 son primos entre si, pero 6y 15 no lo son, Elalgoritmo evidente para calcular med (mn) se obtiene dizec- tamente de la definicién: funcién med (m0) femin (mn) 41 repetir =~ I hasta que i divide exactamente tanto a m como a devolver | El tiempo requerido por este algoritmo es del orden de la diferencia entre el me- nor de sus dos argumentos y su maximo comin divisor. Cuando m y 2 son de tamafo similar y primos entre si, requiere por tanto tn tiempo del orden de 1 (Obsérvese que éste es el valor del operando, no su tama) Un algoritmo clasico para calcular med(m, n) consiste en factorizar primero ‘myn, y tomar entonces el producto de los factores primos comunes a m y 1, clevando cada factor primo a la menor de sus potencias en los dos argumen- tos, Por ejemplo, para calcular mcd(120, 700) primero factorizamos 120 = 2°x 5 700 = 2! «5's 7, Los factores comunes de 120 y 700 son por tanto 2y 5, y sus ppotencias minimas son 2y 1 respectivamente. El maximo comiin divisor de 120 ¥ 700 es por tanto 2x 5 = 20. ‘Aun cuando este algoritmo es mejor que el dado anteriormente, nos exigefac- torizar m y n, una operaciOn que nadie sabe realizar eficientemente cuando m y 1 son grandes; véase la Seccién 107.4. De hecho, existe un algoritmo mucho més cficiente para calcular el maximo comiin divisor, conocido con el nombre de Al- goritmo de Euclides, aun cuando su origen se puede retrotraer a bastante més tras de los tiempos de los antiguos griegos: Seccion 2.7, jemplos 83 funcién Eucides (m,n) ‘mientras m > 0 hacer tem men mod m net devolver Si consideramos que las operaciones aritméticas involueradas tienen coste unite rio, este algoritmo requiere un tiempo del orden del logaritmo de sus argumentos —esto es, del orden de su tamavio— incluso en el caso peor: véase la Seccion 4.4 Para ser exactos histéricamente, ol algoritmo original de Euclides funciona utli- zando sustracciones sucesivas en lugar de calcular el médulo. En esta forma tie- ne mis de 3.500 aftos de antigiedad, 2.7.5 Caleulo de la sucesién de Fibonacci a sucesién de Fibonacci se presents en la Seccidn 1.6.4, Recordames al lector que los términos de esta secuencia se definen mediante la recurrencia siguiente: f= 0 f, y f= fat S, para n>2 Tal como vimos, la secuencia comienza en la forma 0,1, 1,2,3,5,8, 13,21, 34 ‘Tambign vimos ia formula de De Moivre f= 410"-Co) cen donde = (1 + \5)/2.es la razén dea, e indicdbamos que el término (-)"'se ‘puede despreciar cuando m es grande. Por tanto el valor def, es del orden dev, ppor tanto, el tamaio de f,esté en el orden de 1. Sin embargo, la {Grmula de De Moivre offece poca ayuda inmediata para calcular exactamente f, puesto ye cuanto mayor se vuelve n, mayor es el grado de precisibn que se requiere en los valores de V5 y de @; véase la Secciin 25, En nuestra méquina local, un calcul con simple precision produce un error por primera vez cuando estamos calslando fu: El algoritmo recursive que se obtiene directamente de la detinicion de la ‘cuencia de Fibonacci se daba en la Seccién 1.64 com el nombre Filo funci6n Fibre (n) siir <2 entonces devolver 1 sino devolver Fibvec (1 ~ 1) + Fibrec (n~2) Este algoritmo es muy ineficiente porque recalcula muchas veces los mismos. valores. Por ejemplo, para calcular los valores de Fibre (5) necesitamos los valo- res de Fibrec() y de Fitre (3); pero Fibrec (4) también requiere el esleulo Fibre Q). 84 Algorimia elemental Capitulo 2 Es cil comprobar que Fibec (3) se calcularé dos veces, Fibres (2) tres veces, Fibrec (cinco veces y Fire () tres veces, (EI nimero de llamada a Fibrec (5), Fibrec (4), Fibre (1), es por tanto 1,1, 2,3 y 5, respectivamente. No es coincidendia que és te sea el principio de la sucesién de Fibonacci; véase el problema 2.24.) De hecho, el tiempo requerido para calcular f, ulilizando este algoritino es del orden del propio valor de f,, esto es, del orden de ©. Para comprobaslo ab- sérvese que las llamadas recursivas solamente se detienen cuando Fibre pro- porciona un valor 0 6 1. La adicion de estos resultados intermedios para obtener cl resultado final f, debe requerir al menos f, operaciones, y por tanto cierta- mente el algoritmo’ completo requiere un ndsmero de operaciones elementales ‘quees por lo menos del orden de J. Esto se demosteé formalmente mediante in- duccién constructiva en la Seccion'1.6.4, junto con una demostracisn consisten- teen que ol nimero de operaciones requerido no es mayor que el arden def, siempre y cuando se cuenten las adiciones considerando que tienen un caste tnitario. El caso en que las adiciones no se euentan con un coste unitario lega a la misma conclusidn, tal como se muestra mediante el andlisis ms precisa que se da en la Seecion 4.2.3 Para evitar calcular innecesariamente una y otra ver los mismes valores, es na- tural proceder como en la Seecién 25, en la cual se presentaba un algoritmo File- ueci distinto, algoritmo cayo nombre cambiaremos por Fifer en comparacién con Fibre: funcién Fibiter (a) ictjeo para kc 1 hasta w hacer je i+ jejei devolve j Este segundo algoritmo requiere un tiempo en el orden de 1, Supongams que se cuente cada adicién como una operacién elemental. La figura 22, que muestra ak .gunos tiempos de computacidn que hemos observado en la prictic,ilusta la di- ferencia, Para evitar los problemas causades por operandos cada vez ms largo, los eéleutos mencionados en esta figura se efectuaron en médulo 10” lo cual quie~ re decir que solamente se calcularon las siete dltimas cifras significativas dela 703- puesta, Los tiempos para Filrec cuando m2 50 se estimaron wtlizando el enfoque hibrido, " 10 » 30 5 100 Fibree 8mseg Vseg 2min 21 dias_—_10" anos 1 ‘ 1 5 Fiiter msg Lmseg — L mseg — E meeg Figura 2.2. Comparacin de aporitmor de Fibonacci mia 10° Seccién 2.8 {sCuindo queda especificado un algortmat ‘Sino hacemos la suposicién de que la suma es una operacién elemental, Fiiter re {quiere un tiempo que es del orden de n, que sigue sienco mucho més r4pido que el tiempo exponencial Fibre. Sorprendentemente, existe un tercer algoritmo que proporciona una ventaja con respecto a Fiber tan grande como Fibiter con res- pectoa Fibrec. Este tercer algoritmo requiere un tiempo del orden de logaritmo de hr siempre y cuando se consideren las operaciones aritméticas como de coste ni tario. En caso contrario, el nuevo algortmo sigue siendo més répido que Fite, pero menos espectacularmente; véase el problema 73. 2.7.6 Transformada de Fourier Elalgoritmo Teansformada Rapida dle Fourier es posiblemente el descubrimiento algoritmico que ha tenido un mayor impacto préctico en la historia, Las transfor ‘muadas de Fourier son de importancia fundamental en aplicaciones fan dispares ‘como la Sptica, acistica, fisica cusntica,telecomunicaciones,teoria de sistemas y [procesamiento de sefiales,incluyendo el recanocimiento de! habla, Durante aos, el avance en estas éreas de conocimiento ha estado limitado por el hecho de que los algoritmos conocidos para calcular las transformadas de Fourier requerian to dos ellos demasiado tiempo. El edescubrimiento» por parte de Cooley y Tukey en 1965 de un algoritmo ri- pido revolucioné la situacion: los problemas que antes se consideraban inataca- bles podian ahora, por fin, ser abordados. En una de las primeras pruebas del scquevo» algoritmo, se utili2é la transformade de Fourier para analizar los datos procedentes de un terremoto que se habia producido en Alaska en 1964 Elalgoritmo clasico requirid mas de 26 minutos de computacion; sin embargo, el algoritmo «nuevo» fue capaz de realizar la misma tarea en menos de dos se- sgundos y medio, Tr6nicamente, result6 que ya habia siclo publicado un algoritmo eficiente en 1942 por Danielson y Lanczos, y que toda la base teérica del algoritmo de Da- nielson y Lanczos habia sido publicada por Runge y Kénig en 1924, ;Por si esto fuera suficiente, Gauss describe un algoritmo similar en un articulo escrito alne- dedor de 1805 y publicado pistumamente en 1856! 2.8 LCUANDO QUEDA ESPECIFICADO UN ALGORITMO7 Al prinaipio del libro deciamos que la ejecucion de un algoritmo no debe nor- rmalmente implicar ninguna decisién subjetiva ni tampoco debe hacer necesario el uso de la intuicidn o de la creatividad; posteriormente, deciamos que uno casi siempre debe estar contento si consigue demostrar que los algoritmos son corre- tos en abstracto, ignorando las limitaciones pricticas, y, todavia mas tarde, pro- poniamos considerar que la mayoria de las operaciones aritméticas son elemen- tales, ano ser que se indique explicitamente lo contrari. ‘Todo esto est muy bien, gper0 qué deberiamos hacer si las consideraciones| pricticas nos obligan a abandonar esta postura tan cémoda, ya tener en cuenta las Timitaciones de la maquinaria disponible? Por ejemplo, todo algoritme que deb 86. Algortmia elemental Capitulo 2 Seccién 2.9 caleular el valor exacto de fy Se ver obligado a considerar que ciertas operacio- lzadas del eédigo. Sin embargo, se tiene ‘Problema 2.10. uponga que desea wor nes aritméticas —ciertamente la suma y posiblemente la multiplicacion también tmen euidado de no modifica el algeritmo — denars una matri2 W = (1,11 1,1, 1,€on (véase el problema 7.33)— no son elementales (recuérdese que fy & un niimerD subyacene, 2Eapera usted obtener (a) una todos sus elementos iguaes,ullizando (a) con 21 digitos decimales). Con toda probabilidad esto se tendré en cuenta emple snancia de eficenca por un factoeconstan- _ordenaciin por insercion y (b) clasficacion ando un paquete de programas que permita realizar operaciones aritméticas con te, sea cual fee el problema reset, 0 (6) por secon. Esablecer una comparacion enteros muy grandes, Sino especiicamos exactamente cémo debe implementa el una ganancia de efclencia que se vaya vole con ls ondenacin de las matrices Uy V del paquete la operacién de precisién mitiple,entonces la eleccén det método que viendo proporcionalmente mayor a medida problems anerc. hay que utilizar Se puede considerar una cecisin suljetiva y el algoritmo pro- jue aumente el tamatt del problema? Justi- puesto estaré especticado de forma incompleta. Es esi importante? fique respuesta Problema 2.1 Sele pde asta un ar Ta respuesta es que si, en ciertos casos es importante. En partes posteriores del chivo que contine enteres entre Uy 98959 libro nos encontraremos con algoritmos cuyo rendimiento dependeré del método Problema 2.6. Un algoritmo de ordena- No puede utilizar un millén de casilas, asi aque se uilice para multplicarenteros grandes. Pare tals algoritmos (y hablando «ion equiere un segundo para ordena L000 queens higar decide uiza measles formalmente, para tado algoritmo) no basta simplemente con escribir una instruc elementos en su maquina local. ;Cuénto _ meradas desde 3 999. Comienza la dasiica- a eee eee a ee ee tempo esperaia usted que require para on eolcando cada enero en la cla co Cea > ue tenga hacer 100 elementos a) 8 cee qe el empondinte = sm tres primera ciasA 4, mano para implementa esta multiplicacin. Para implementar completamente Sigorme requiee un tempo aponimada- coinage la ordenaiGn Ab eee tn ei see fcr et saben Bet plete ite propoionlae'y)steequelal pian pa deal cone Sec Para hacer mas sencillas las cosas, sin embargo, seguiremos utilizando la pala- seetimo ecqere Dn tempo aprovimade a Casilla For seperado. Y por Sitimo se vact a ele iS cine sn beng cetera elisa Pa rente proporcionan log? amas alas por orden para obtener ua se xa algrito para certas deseipeionesincompleas de esta case os detales se eee rillenern posteriormente, ses que nuestros alii os requeren. Pe ae ee ee en ae ec cleea eens 1 dias y segundos respectvamente para rpida, mis Teta © equivalene 4 uz 2.9 PROBLEMAS Problem 23. A wees salma ue en a reslveruncisodetamafor. Demestrarque simplemente Ia clsficain por inserign Actua el hore es tan barat a slo n agus casos ge reuieran mis de apikada toda la secuenia(@) por trmine Problema 21. Hallar un algoritmo mis de obra estan cara que nunca merece Ia pena veinte millones de afios para su resolucién, el medio, y (b) en el caso peor. jusifique sus pectic para cakulara fecha de Pascua que despeniael emo de un progamador ps Ugoritmocuadrstio tends un mejor rene respuesta, {lque sea dado en el problema 12. {Cuil aque unos pocs segundos la cecuctn lento qu el algoritmo eb. ferila fecha de PscunenelaRo 200 ,Cudl Geum programa, Siguen est uel algorit Problema 212 (Es rzorable, desde un el dominio de denon desu algorimo? nia et dei aero esoteric de Problems 28. Dos algoritmos reqicren punto de vista pric, considera la div Interés sokument forma, in aplicaciones 1 das yw segundos respectvamente para Sin come operacn elemental” (a siempre, Problema 22. Enel juego de jeez ls prtcaJastgue su eps resolver iss de tamafo (Cuil eseltama- (algunas veces o(€ nunca Justiigue so pleza y ls movimletos del aversario son fodelciso mis pequefo enclculel primer resputta, Si le parece necesario puede ata {edosellos vies Decimosqueelojedrezes Problema 24 Uilirandolaécric ma Algor en mis Tapiso que el segundo? a dviiin de entero yl vision de sme un juego con infrmacn compet. En juegos da wmemoria vital, ex posble Uber al “Apronimadament, cusate tiempo tarda en ros eaes deforma separada tales como el bridge ol poker, sin embargo, _programador dela mayors de sus preo feolvere ete caso? tose sabe cba se han repartio ls carts.” patones eno tcane a tama real del e= Problema 213. Supengamos que # es iHlace eto imposible dfins un algort- acto dispnie en su migulna Sgaica Problema 28, Simular los algetmos dey variable eres enn programa que ‘mo para jugar bien al bridge oal poker? ySe- esto que la cantidad de almacenamiento uti- clasificacién por insercién y de ordenacién amos escribiendo. Considérese la instruc- "i uno de estos algoiinesnecearamernte zada por un algo munca ine inert por sce dadov en a Seen 24 aplicin- idm a= sign) done se puede sopomer que probabia? en a prin? jsiique sa respuests, Aoos as dos mates siguientes: rrestéen races Dende on panto de vss {Que pasa con el lukgumor? Agu se 5.4.5 61y V~- (65,4 3,2 1} gFonciona ln pritic, gorsiderarie uted a ejcucn de sven vrlaspezasylos movimients del Problema 25 Supongamos que s¢ mide 1? segundos para resolver un caso de famaio 2Qué tamato de caso podria resolver en un ao? Qué tama de caso se podria resolver fen un ano en una maquina cen veces mis ripida? ‘Mostrar que sin embargo, el segundo al zortma ex ms lento qu el primera por ca ‘os de tamafo mener que 20 Problema 216, Supengamos por el mo- oven que ina palabra se define emo una "nde etn sn espacos ai signos de pun om umermedios, de tal forma que scan'= iode concierge ,y (6) con anchorages y «Anchorage? Todo algoritmo re debera poner «Mackay y Anchorage» ar tes de vaarvark+ ni despues de «ZymUrE Como problema mucho mas dificil dise- far un algositmo para comparar las entradas de a guia de elifonos. Este algoritma debers enfrentarse a todo tipo de cadenas estas, inclayendo signos de puntwacin (Elim plezase),ndmeros (oA-] Farmacas:),acentos ¥ okros signos discos (-Adéle Néfiez») y Beevaturas (St Cathevine St. Taverns). CO ‘mo lo hace la compat tlenica? Problema 2.17. Mostrar que la elasifiae én por cals require un tempo que && ‘delorden den par clasieat elementos que estén entre dos limites Problema 2.18. En la Sscciin 27:3 de mos que el andlisis de algortmos para ente ros grandes no seve afetad por a eleccién de una medida para el tamafo de los ope zandos el nimero de palabras de computor dora que necesita, ol longitud des repre sentacin en decimal 0 en binarlo Funciona- in igualmente bien. Mostrar que este co tmentario seria realmente falso si estuvira ros considerando algoitmoe de tempo ex ponencial Problema 219, ,Cuinto tiempo se requle- re para sumat o restar dos enteas grandes de tamafos my nrespectivamente? Esboce el al- goritme adecuado, Problema 220. ;Cusinto tiempo se equie- re para multiplcar dos enteros grandes de a ratios my »,respectivamente,empleando la Seccién 2.10 Referencias y textos més avanzadas 89 multiplicacion ¢ ta 158 (a) si ef operand Problema 223, Utlizar la férmula de ras pequeno esté en la columna de la 2- Moivre para J, para demostrar que, e3 el aquierday () sie operando mas grande ests entero mas préximo ag V5 para toda = 1 tenia coluinna dela zquienda? Por sspuect, ro se deben de tomar a ain la mualiph Problema 224. Mostrar que cuando see «acion por dos y la division por dos como 14 galeulando J, wilzand Fire dea Secisn operaciones elementals en este problema. ——275existe un total de, Iamadas de Fl (pale 12 ny Problema 22. Cunt tempo s equi lamadasa Fle re para multiplicar das enters grandes de t- mates m y 1 respectvamente,utlizando la Problema 225, Sea gel nimero de for- suliplicacin en torno aun rectingulo?(vé-_asenquese puede escribir una cadena de de el problema 1.) cerosytnos deal forma que nunca haya dos c4rosconsectivos, Por eemplo, cuando = 1 Problema 2:22, Caleilese med(606, 979) lascadenas posible son 0 1, asi ques) 2, (@) por factoriacion de 606 y 978, y selec. cuando n =2 las eadenas posbles son OL y ‘ionande los factores comunes de potencia 10, ai que x2) =3; cuando =3 ls cadenas adecuada, y ) utiizando el algoritmo de posibes son O10, O11, 10, 110 1H, asi que uclies, 0) = 5, Demostrar que tt) 2.10, REFERENCIAS Y TEXTOS MAS AVANZADOS Para reforzar nuestros comentarios acerca dela importanca de diseharalgoritnas eficentes, animamos al lector aque examine Bentley (198), jqueofvee demostraciones experimentales de ‘que la utilizaciéninteligente de la algoetmica puede peemiti a un Ts-80 funcionar mas depr- aque un Cray! De los trabajos de Stassen (1959) y Bunch y Hopcroft (1974) se sigue un algorito capac de calelar un determinante #1 en un tiempo que es del onden de "En este bro se discaten varios algoritmos de clasficacién: Knuth (1973) es mucho mais exhaustivo acerca de este tema Elalgortmo adivide y venceris» que puede maltiplicar nimeros de w-cias en un tiempo del corden den es atibuido « Karatsiba y Ofman (196); se describe con detalle en el Capital 7 ‘Un algosttmo mis pido para la multiplicacin de enteros muy grandes debido a Sehonhage ¥ Strassen (1971) se ejecuta en un tempo que es del orden de «log log log i: vase Brassard, ‘Monet y Zotellat (1986) pars mas detalles. Fl algritma de Fucides se puede encontrar en el [ibro VII de los Elenentos de Euclies: véase Heath (1924). El algoritmo répido para caleular la syeesion de Flbonaci al que se hace mencin en la Seccin 275 es explicado en Gries y Levin (1980) y Urbanek (1980); véanse también Brassard Bratley (1988) para una competicidn entre ‘ste algoritmo répido y los que se dan en la Secciin 275. Capitulo 2 EI primer algoritmo publicado para calcular eficientemente transformadas diseretas de Fourier es el de Danielson y Lanczos (1942). Estos autores mencionan que la fuente de su mé- todo se retrotrae hasta Runge y Konig (1924). Ala vista de la gran importancia de las transfor- ‘madas de Fourier es sorprendente que la existencia de un algoritmo répido permaneciera casi ‘en el anonimato hasta su redescubrimiento practicamente un cuarto de siglo después por par- tede Cooley y Tukey (1965). Para una descripcién més completa de la historia de la transfor mada ripida de Fourier, se puede leer Cooley, Lewis y Welch (1967). Se offecen més detalles y aplicaciones a la multiplicacin répida de enteros y a la aritmética simbélica de polinomios en. Brassard y Bratley 1988). Se puede encontrar una solucién del problema 2.1 atribuida a Gauss bien en Larousse (1968) ‘oen Kirkerud (1989); véase también el Devocionario anglicna, disponible en cualquier iglesia an- glicana. La solucién del problema 214 ha sido dada por Shamir (1979) Capitulo Notaci6n asintdtica 3.1 INTRODUCCION Un aspecto importante de este libro es el que concierne a la determinacién de la eficiencia de algoritmos. En la Seccidn 23, veiamos que este conocimiento puede ayudarnos, por ejemplo, aelegir uno de entre varios algoritmos en pugna. Recuér- dese que deseamos determinar matematicamente la cantidad de recursos que ne- cesita el algoritmo como funcién del tamao (0 a veces del valor) de los casos con- siderados. Dado que no existe una computadora estandar con la cual se puedan comparar todas las medidas de tiempo de ejecucién, vimos también en la Seccién 2.3 {que nos contentaremos con expresar el tiempo requerido por el algoritmo salvo par ‘una constante multiplicativa. Con este objetivo, presentamos ahora formalmente la notacién asintétion que se utiliza a lo largo de todo el libro, Ademés, esta notacion permite realizar simplificaciones sustanciales aun cuando estemos interesados en ‘medir algo més tangible que el tiempo de ejecucién, tal como el ntimero de veces que se ejecuta una instruccién dada dentro de un programa, sta notacion se denomina «asintotica» porque trata acerca del comportamien- to de funciones en el limit, esto es, para valores suficientemente grandes de su po- metro. En consecuencia, Jos angumentos basados en la notacién asintotica pue- den no legar a tener un valor practico cuando el pardmetro adopta valores » ny Resulta fie cil ver que también podrfamos haber seleccionado ¢ = 28 y n, = 6. Esta compen- ‘sacion entre el valor més pequenio posible para 1, y el dec es bastante fecuente, De esta manera, si la implementacién de un algoritmo requiere en el caso peor 272° jn + 12 microsegundos para resolver un caso de tamafio 1, por ddriames simplificar diciendo que el tiempo esté en el orden de. Naturalmente, no tiene sentido afiemar que estamos hablando del orden de? micasegundos, por ‘cuanto esta cantidad solamente se diferencia por un factor constante, digamos, de ‘aos. Hay algo mas importante: sel orden de r» caracteriza no solamente el re- querido por una implementacion particular del algoritmo, sine también (por el Principio de invariancia) el tiempo requerido por cualgier implementacién. Por tanto, tenemos derecho a afirmar que el algoritmo en sfrequiere un tiempo que es- ten el orden de no mas sencillamente, que requiere tun tiempo cuntratico. Secciin 3.2 ‘Una notacién para “el orden de” Es conveniente disponer de un sfmbolo matemético para representar el orden de. Una ver més sca 23° una funcién axbitraria de los ntimeros naturales en los reales no negativos, Le indicars mediante O ({(r)) —que se lee «O de flab el conjunto de todas las funciones t: 119 tales que #7) < fn) para to do 1 > n, para una constante positiva real ¢y para un umbral entero rt, En otras palabras: Offin) = He SED | Gee 2909 6 LOUD s ofl ‘Aun cuando es natural utilizar el simbolo «=» de teoria de conjuntos para deno- tar que nes del orden de rtal como en wt’ € O(n"), le advertimos que la nota- cin tradicional es n=O (0). Por tanto, no se sorprenda si encuentra una de es- tas sigualdades» de un solo sentido, porque uno nunca escribiria O (w) = 7, en ‘otras libros o aticulos cienifcos, Aquellos que utilizan las igualdades de un s0- lo sentido dicen que 1? es del orden de (o algunas veces sabre el exden de) n',0 bien que mes O (7), Otza diferencia signficativa que se puede encontrar en la de- finicidn de la notacién O es que algunos escrtores permiten que O (ft) incluya las funciones de los nlimeros naturales en el conjunto de todos los enteros reales —incluyendo los reales negativos— y definen que una funcion esta en O (fn) si su ttlor absolut esta en lo que nosotros llamamos © Por comodidad, nos permitiremos utilizar incorrectamente la notacién de vee «en cuando (asi como otra notacion que se presenta mis adelante en este capitulo) Por ejemplo, podemos decir que 1) esta en el orden de f(s) incluso sii) es ne- {gativo 0 no esta definiclo para un nimero finito de valores de n, De manera sitn- Ja, podemos hablar acerca del orden de fn) incluso en el caso de que fr) sea ne- {ativa o no este definida para tin niimer finito de valores de n, Diremos enton- ces que Hn) € O (fi) si existe una constante real y positiva cy un umbral entero nny tales que tanto fu) como fin) estén bien definidos y 0: tu) < cn) siempre que nn, independientemente delo que suceda en estas funciones cuando n <1, Por jemplo, esta permitide hablar del orden de n/log.n, aun cuando esta funcion no esté definida cuando n = 0.6 2 = 1, yes correcto escribir 1-3-8 © Oty") aun ‘cuando n'= 3n?=n= 8 < Ocuando n $3. El umbral de m, suele resultar util para simplifcar argumentos, pero nunca es necesario cuando consideramos funcionesestrictanente positivas. Sean ft: dos funciones de los nimeros naturales en los reals estrictamente positives La 1e- la del umbralafirma que 1(1) € O (fa) si y so si existe una constante real posi tiva tal que (n) € © (a) para cua numero natural. La parte side la repla es ev lente, puesto que toda propiedad que sea verdadera para cada niimero natural se- +4 tambien verdadera para cada entero suficientemente grande (basta con tomar 1, = 0 como umbral) Supongamos para la parte solo si que #0) © O (i). Sean c y 1, las constantes relevantes, de tal modo que fn) < eR) siempre que i 21, Su- pongamos 1), > 0, puesto que en caso contrario no hay nada que demostrar Sea smax|t(n/fn) |< <, ) el mayor valor tomado por la razn de ly f sobre Jos nimeros naturales menores que esta definicién tiene sentido precisamente 3 94 Notacin Asinética Capitulo 3 porque f(r) no puede ser cero y 1,> 0. Por definicién del maximo, b> n)/fOD, y por tanto 1(n) 5 bin), siempre que 0< n ni, para algun n,- entonces se puede utilizar este n, como umbral para la notacin Orexiste una constante real positiva c fal que fn) cf) para todo 112 n, Una regla il para demostrar que una fncin es del orten de otra es la regla del ‘maximo, Sean f “5 dos furciones arbitrarias de los rtimeros naturales en los reales no negativos. La repla del maximo dice que Off) + g(1)) = Ofmax( fogs) Mas especificamente, sean p, 9: S97 definidas para todo mimero natural me- liane pin = fo + gn) y qin) = max (ng), y consideremos una funci6n arbitra- ia 2-95 La ygla del maximo dice que 01) © (pO) sty s6losi i) © Olu. Esta regla se puede generalizar a cualquier mimero constante finito de funciones. Antes de demostral,ilustramos una interpretacion natural de esta regla. Considé- rese un algoritmo ajc se raliza en tres pasos nicalizacin, procesamiento y fina- lizacién. Supongamos para este argumento que estos pasos requieren un tiempo de O61), O61) y Ob log m),respectivamente. Queda por tanto claro (véase la Sec- «ign 4.2) que el algoritmo completo requiere un tiempo de O(w+"s » og n). Aun ‘cuando no seria dificil demostrar directamente que este orden es el mismo que (O(n, resulta inmediato de la regla de maximo: OG + 4 log m ‘Otamaxtey, 1og ni) On? En otras palabras, aun cuando el tiempo requerido por el algoritmo es ligica- mente la suma de los tiempos requeridos por sus partes separadas, dicho tiempo es del orden del tiempo requerido por la parte que consuma mas tempo, siempre y cuando el nimero de partes sea una constante, independientemente del tama- fio de la entrada. ‘Ahora demostraremos la regla del maximo para el caso de dos funciones. lca so general de cualquier mimero predeterminado de funciones se deja como ejer- ilo. Obsérvese que Fi) + gon) = ming, gton) + marifed gn) 0 < min (fon,g() < maf), gto)? e sigue entonces que maxi fe gn) fr) + go) 5 2 max (00) ep Considérese ahora cualquier 101) € OY) + gn). Sea cuna constante adecuada tal «que 1) c (n= gin) para todo m suficientemente grande. Por la ecuaci6n 3.1 se Seceion 3.2 Una notacin para “el orden de” 95. sigue que fin) $ 2c max (tn), 0). Por tanto, 1) esté acotado superiormente por Lun miitiplo realy positivo (a saber, 20) de max (fn, s(0)) para todo m suficionte- mente grande, lo cual demuestra que Hn) © O tmax (in), g(r), Para el sentido in- verso, considérese cualquier n)<.O (méx(fn), gn). Sea ¢ una nueva eonstante adecuada tal que (3) $ # méx( fn, s(0) para n suficentemente grande. Una vez mas por la ecuncién 3.1 se sigue que tn) $ ¢ (fx) + g0) Por definicién de la no- tacién O esto implica directamente que H) © O(n) +g0n), lo cual completa la de- smostracion de la regla del maximo, De acuerdo con nuestra utilizacion incorrecta eto permitida de la notacidn en algunas ocasiones, tenemos derecho a invocat la regla del maximo aun cuando las funciones implicadas sean negativas o bien no estén definidas en um conjunto finito de valores. Tenga cuidado de no utilizar la re- ala, sin embargo, si algunas de las funciones som negativas con infinita frecuencia; fen caso contrario corre el riesgo de razonar en la forma siguiente: (Ob) = O60 + nn) = O (end, 1-18) = O12) cen donde la igualdad intermedia se obtiene por el uso incorrecto de la regla del La rogla del maximo nos dice que si (1) es una funcién complicada tal como 61) = 12a? log. -Sn+ log? + 36 y i fn) es el término mas significative de Hn) dloscartando el coeficiente, aqut (x) = » log n, entonces OXH(n)) = Oxf), Jo cual permite una simplificacign dramatica pero automsitica en la notacién asintética. En otras palabras, se pueden despreciar los términos de orden inferior porque son dlespreciables en comparaciGn con el témino de orden superior para i suficiente- mente grande. Obsérvese en este caso que uno no deberia demostrar OCH) (Offi) razonando del modo siguiente: OG) = 0 (mat 12H log n, Bn, log? n+ 36)) 0.(129 og n) = 0.0" log m) donde la segunda linea se obtiene a partir cle la rogla del maximo. Este no utiliza adecuadamente la regla del maximo por cuanto la funcién -5ir es negativa, Sin ‘embargo, el razonamiento siguiente es correct: OCOD) = CCW log n + log n, Sn + log? n +36) = Ofendx( TP log 1 Log n, Bn + log, 36)) «itn? log m = O60 log ‘Aun cuando nlog » -51 sea negativo y 36.ea mayor que LI log 1 para valores equefos de m, todo va bien, puesto que esto no sucede para valores de 1 suf- cientemente grandes, (tra observacin itl es que resulta normalmente innecesario especifcar la ba- se del logaritmo dentro e la notaciin asinttica. Esto se debe a que el log, n= lo- {3,0 log, » para todos los reales positives o, by tales que ni ni bees igual a 1. Lo 96 Notacién Asinéticn Capitulo 3 que importa es que el log, bes una constante positiva, cuando y bson constantes Tayores que 1. Por tanto el log, 1 el log, 1 solamente difieren en una constante multiplicative. A partir de esto, resulta elemental demostrar que O(log, 1) = (Otiog, 1), lo cual normalmente simplificaremos en la forma O(log). Esta obser- vacion también se aplica a funciones mas complicadas, tales como los polinomios positivos que impliquen a. y a log 1, y a los cocientes de tales polinomios. Por. ejemplo, Otr Ig n) es lo mismo que el mas habitual Ot log 1), ¥ O67 /(og, Vig 2) es lo mismo que O((z/log 1). Sin embargo, la base de logaritmo 10 se puede ignorar cuando es mis pequefa que 1, cuando no es una constante, tal como en Otlog . 1) # O(log mo cuando el logaritmo se encuentra en el expo- nente, tal como en O*") # 02". Es iil demostrar que la notacén we Ov esreflexva ytransitva, En otras palabras, fie O (Ki) para toda funeidn FL 1-¥-™y para cualesquiera funcionesf gle) >=" se cumple que si ir}e OG) y gmc O (in) entonces fi) © OHO) véanse los pro- ‘blemas'39'y 310, Comaresultado, esta notacién proporciona tna forma de definir una cordenacisn parcial en el conjunto de las funciones ¥ consiguientemente en econ to efciencas eativas de los diferentes algoritmos para resolver un problema dado; véase el problema 321. Sin embargo, cl orden inducido no es total por cuanto existen funciones fg: tales que ni fie Ogi) ni gtad_ Offa); véaseel problema 3.1, -Hemos visto varios ejemplos de funciones Jon y A) para las cuales es sencillo demostrar que fr) = Offi), Para étas, basta encontrar las constants cy, ade ccuadas y mostrar que es valida la relacién deseada, {Como podriamos demostrar que una funcién dada Kn) no pertenece al or- dea de otra funcién fin)? La forma mas sencilla es utilizar una demostracién por contradiccién. El ejemplo siguiente ilustra esta circunstancia. Sea f00)=jpq) PY f(a) =1000r Si se prueban varios valores de 1 menores que un mill6n, se obser va que 101) < fin), lo cual puede levarnos a pensar por indvecién que i) & {Kin}, tomandbo tino como constante multiplcativa. Si se intenta demostrar es- to, sin embargo, es probable que acabe una con la siguiente demostracién por contradicein que es falsa. Para demostrar que tv) € Oxf), supéngase para demostrar la contradiccign que #() € O(n). Lilizando la regia del umbral ge- neralizada, esto implica la existencia de una constante real y postivac tal que (a) cf) para todos los n= 1. Pero Hu) stn) significa que ji, 2° 1000 cr, lo cual implica que 1 < ClO. En otras palabras, al suponer que #0") € Off) esta mos demostrando que todo entero positivo 1 es menor que alguna constante predeterminada, Io cual es evidentemente falso, La herramienta més potente y versitil para demostrar que algunas funciones estén en el orden de otras y para demostrar lo contrario es la regla del Iimite, 1a cual manifiesta que dadas las funciones arbitrarias fy g: P12" 1.54 ty, « enone fine Ol yst.« 0 Yon 2.51 tn 2 = entonces fn O(gn per gn) € Of. y Seccién 3.2 Una notacién para “el orden de” jn, 3.5% tin AE = see entonces fi) € Olen) pero i) € O(n) lustraremos la utilizacion de esta regla antes de demostrarla. Considérense las «dos funciones f(r) = log n y g0) = ym. Descamos determinar el orden relativo de estas funciones. Puesto que tanto fla) como g\n) tienden a infinito cuando 1 tien- dea infinito utlizaremos la regla de I'Hopital para caleular ty i 1 tegen Ee 7m) im? /vn=0 Ahora bien, la regla del limite demuestra inmediatamente que log 1! € 0.1") mientras que D, Hemos contradichd la su 6n consistente en que gn) € O (fi) y por tanto hemos establecida, segtin se queria demostrar, que s(n) € O (). ” 9B Notaciin Asinttica Capitulo 3 3. Supeingase que lim in) / (an =4=. Esto implica que lion god / find =0 Y por tanto el caso anterior es aplicable mutatis mutandis después de intercambiar fo y gr. La inversa de la regla det limite no es necesariamente vélida: no siempre suce- dde que elim fir) / gine 5" cuando on) © O(n) gle) © O Yl). Aun cuando ciertamente se sigue gue el limite es estrictamente postvo, si existe el problema es que puede no exist. Considérese por ejemplo fi) = ny gin)= 2°". Es facil ver {ques $ fin) 2g para todo 21 y por tanto fo) y gl) son ambos del orden del otro. Sin embargo es igualmente sencilo ver que in / gn) oscila ene 1 y 2, Y por tanto no exist el limite de esta ean OTRA NOTACION ASINTOTICA La notacion Omega. Considérese el problema de clasificacién que se dis- cutia en ly Seccién 27.2 Vimos que los algoritmos de ondenacion mas evidentes, tal como la ordenacin por insercin y la ordenacién por selecciOn requieren un tiempo en Ot), mientras que los algoritmos mas sofisticados como ordenar-mar- HHeulo son mas eficientes porque la efectian en un tiempo del orden de O01 log m. Pero resulta sencillo mostrar que 1 log 1» € OU). Coma resultado, es correcio de- dr que ordernz-monticulo tiene un tiempo de Or, 0 incluso de OO") si vamos a ello! Esto resulta confuso en principio, pero es la consecuencia inevitable del he- cho consistente en que la notacin O solamente se ha disehado para proporcionar cotas superiors sobre la cantidad de recursos requeridos. Claramente, necesitamos ‘una notacién dual para cotas inferior. Esto es ia notacion @. ‘Considérense una vez més dos funcionesf,f; >. °° de los ndimeros naturales en los miimeros reales no negatives. Diremos que fn) esta en Omega de fr), lo cual se denota como fc 2 Yon), sin) ests acotada infertonene por un miltipo reat positive de fin) para todo n suficientemente grande. Matematicamente, esto signif «a que existe una constante real positivad y un umbral entero, tal que en 2 afin Siempre que 21 24) = ENEMA 7G ne 19 [Hon DAfonl Es facil ver a regla de dualidad: 0») ¢ OY) si y sélo si flr) © OU) porque 100) = dfn) siy s6lo si fo <1). Por tanto, puede uno cuestionarse la utilidad dde presentar una notacién para ®2 cuando parece que la notacin O tenga la mis- ‘ma potencia expresiva. La razon es que resulta mas natural decir que un algorit ‘mo Fequiere un tiempo en © de 1? que utilizar el equivalente matematico mas os- ‘iro i esté en O del tiempo tardacto por el algoritmar. Seccién 3.3 (tra notacién asnttica Gracias a la regla de dvalidad, sabemos a partir de la seccién anterior que un € Q (log n) mientras que log 1 € Cy), entre otros muchos ejemplos. Flay algo mas importante, y es que la regla de dualidad se puede utilizar de la forma evidente para transformar la regla del limite, la regla del maximo y la regla del umbral en reglas acerca de la notaci6n 0. ‘A pesar dela fuerte similitud entre las notaciones O y ©, existe un aspecto en el cual falla st dualidad. Recuérdese que lo que mas frecuentemente nos intere- sa de los algoritmos es la eficiencia en el caso peor. Por tanto, cuando decimos. que una implementacin del algoritmo requiere (1) microsegundos, quereros decir que Mn) es el tiempo maximo que requiere esa implementacién para todos Tos casos de tamafo . Sea un fi) tal que (in) € 0 (fn). Esto significa que exis te una constante real positiva c tal que I(r) < (a) para todo » suficientemente grande. Dado que ningun ejemplar de tamafio n puede tomar més tiempo que el tiempo méximo requerido por los ejemplares de ese tamano, se sigue que la implementacion requiere un tiempo acotado por tiva dtal que #0 > df) para un mimeroinfnit de valores de n, mientras que no- solros requerimos que esa rlacisn sea valida para todos los valores den salvo.un, 100 Notacion Asinttica Capftuto 3 nimero finito. Con esta definicién, un algoritmo que requiera un tiempo en ‘Q{fi) en el caso peor es tal que existen infnitos casos en los cuales requiere al ‘menos dfn) microsegundos para la constante real positiva adecuada d. Esto se co rresponde de forma mds proxima a nuestra idea intuitiva de lo que deberia ser tuna cota inferior para el rendimiento de un algoritmo, Resulta més natural que lo que nosotros queremos decir con «requerir un tiempo en & de fii)». Sin embargo, ppreferimos nuestra definicién porque es més facil trabajar con ella. En particular, Ta definicién modificada de 9 no es transitiva y la regla de duelidad fala En este libro, uilizamas la notacién © sobre todo para proporcionar cotas in- feriores acerca del tiempo de ejecucién (wy otros recursos) de los algoritmos. Sin embargo, esta notacin suele utilizarse para proporcionar cotas inferiores acerca de la dificult intrinseca de resolver ciertos problemas. Por ejemplo, veremos en la Seccién 12.2.1 que cualquier algoritmo que ordene con éxito 1 elementos debe requerir un tiempo en (log 1) siempre y euando la tinica operacién efectuada sobre ls elementos que hay que ordenar consista en comparatios por parejas pa- ‘a determinar si som iguales, ¥en caso contrario, cual de ellos es el mayor: como resultado, diremos que el problema consistente en ordenar mediante comparacio- nes tiene una compleidad de tiempo de ejecucion que esta en (2r log En gene- ral, resulta mucho més dificil determinar la complejidad de un problema que de- terminar una cota inferior sobre el tiempo de ejecuciém de un cierto algoritmo que Jo restelva, Hablaremas mis sobre este tema en el Capitulo 12. La notacién Theta. Cuando analizamos el comportamiento de un algoritmo, nos sentimos especialmente felices si su tiempo de ejecucion esté acotada tanto por encima como por debajo mediante multipls reales positives posiblemente distintos de una misma funciOn. Por esta razén, presentamos la natacidn @, Diremos que (n) esd en Theta de (n),o o que es lo mismo que (i) est en el orden exacto de fr, y lo denotamos fine (fin), sir) pertenece tanto a OYA) como a 0 (fin). La defini ‘in formal de © es eqn Offre agin, Esto es equivalente a decir que @(fom) es MeN Ged KY me 1 led < Hon 1, e algoritmo se eeuta recursiva- mente multiplicando cuatro pares de enteros de tamato 1/2" Co tes pares ene Algoritmo mejorado que estudiaremos en el Capitulo 7). Ademis, es predsa una can fidad lineal de uempo para electuar tare adiionales. Por senile, digamos que el trabajo adicionalrequere de n micronegunclos para una constante adecvada b (para ser exacos, seria necesario un tiempo entre py yr microsegunds para Is cons- tantes adecuadas hy , (hablaremos ms acerca de eto en la Seccidn 47.) 102 Notacién Asinttica Capttulo 3 Eltiempo que requiere este algoritmo esta dado consiguientemente por la fan- ign 1211-52 que se define recursivamente en la forma fo sins 4 angns2) stn 62 ‘en caso contrario En Ia Secon 47 estudiaemos tcnicas para resolver recurrencis, pero dess- foriunadamente a ecuncion 32-0 se puede manejrdrectamente mediante esas téenicas porque la func n/2 |e dct, Sin embargo, stra recurrenla ¢s cl de resolver siempre y cuando consderemos solamente el caso enelcal una potencia ce 2 en este casoln/21= 1/2 y el edondeo por exceso desapare- = Las nica dela Secién 47 producen ton = eae’ — siempre y cuando wt» sea una potencia de 2. Dado que el término de orden inferior ‘tn se puede despreciar, se sigue que fu) es del onden exacto de m, siempre y cuando, insistimos, » sea una potencia de 2 Esto se denota mediante (ne (i? = una potencia de 2). Més generalmente, sean f 51°" dos funciones de los nimeros naturales en los muimeros reales no negativos, y sea P =: '—jverdaieo,flso) una propiedad de Jos enteros. Decimas que #1) esta en Oxf)! P(n) si 1) esta acotado superior- ‘mente por un miltiplo eal positivo de ft) para todo n suficientemente grande tal «que Pr) sea vilido. Formalmente, O(fn)| PCa) se define en la forma MeBTa3e Gee 39 (Wi € 1:) [PU = tn < feo) Los conjuntos Af) Pan) y Oxf) Pom) se definen de forma similar. Abusando de la notacidn en una forma familiar escribiremos que Mu) © Offi) | Plu) inclu- 0 i Hn) y (n) son negativas o no estin definidas en un cierto ndmero de puntos arbitrario — quiz’ infinito— de en los cuales P(n) no es wala, La notacion asintotice condicional es algo mas que una mera comodicad de notacin: su interés principal es que se puede eliminar, en general, una vez que ha sido utilzada para facltar el anlisis de un algoritmo, Para verlo, necesitamos unas cuantas definiciones. Una fancion f."-98 es asintoticamente no decreciente si existe un umbral entero tal que fn) 2. Seccién 3.4 Notaciénasintética condicional La mayoria de las funciones que se suele uno encontrar en el anilisis de algo- sitmos son wniformes (de ajste, suaves),tal como log 1 1 log, n? o cualquier po- linomio cuyo primer coeficiente sea positivo, Sin embargo, las Ainciones que cre- cen demasiado deprisa tal como ni", 2" 0 nl, no son staves porque la razon (2m /fla) no ests acotada, Por ejemplo: ny anne Jo cual muestra que (2% € Otr*") porque 2r? no se puede acolar superior mente mediante una constante. Por otra pate, las funcfones que estan acotadas superiormente mediante algiin polinomio, suelen ser suaves siempre que sean Asintbticamente no decrcientes; incluso si no son asinticamente no decrecien- tes existen buenas posibilidades de que estén en el orden exacto de alguna otra funcién que sea suave. Por ejemplo, supongamos que f(r) denota el namero de hits qualesa tno en la expansion binaria den tal como M13) = 3 porque 13 Se es cxibe 1101 en binaro)y consideremos for) = Bon + Ig. Es fil ver que fo) m0 es eventualmente no decreconte —y por tanto, que no es uniforme-— porque 2!—1) = k mientras que K2) = 1 para todo k. Sin embargo, fn) €© (log n), que es una funcin uniforme. (Este ejemplo noes tan artificial como puctiera parecer; vease la Seccion 78) En raras ocasones se encontraran funciones de crecimiento lento que no estén en el orden exacto de una funcién suave. {Una propiedad stil de la uniformidad (ajusteo suavizacién) es ques fes haan forme para algin entero concreto b2 2, entonces, de hecho, es unitorme. Para de- mostrar esto, consid rense dos enteroscualesquicra ay b mayoreso uals que 2 Supongamos que fes buniforme. Debemos demostrar que fe también esuniforme Sean cy ngconstantes tales que fh) f(y /(2) Sf 61+ 1) pata todo n> ny Sea i =Tog, a1 Por definiion del logaritmo,a = BW <1"! =. Considérse cual- ‘quier 1 > D Es fil mostrar por induccién matematica sobre la uniformidad de f que fm Sef, Pero fa () (ponquef es asintomiamente no decreciente YB 1 2am 2 mp. Se sigue que er) <é f(r) para é= Cy portant f es uniforme Las funciones uniformes son inferesantes como consecuencia dela regla de la suniformidad (ajuste o suavidad). Sea f1"—!.* una funcién suave y sea > ‘una funcin asint6ticamente no decreciente. Considérese cualquier entero La regla de uniformidad afirma que f(r) €© (lo) siempre que Kine XR) 10 e tuna potencia deb) La rela es aplicableigualmente a la notacin O ¥ a la nota cin 0. Antes de demostrr Ia rela, la ilustrtemas con el ejemplo wtilizado al principio de eta seccién ‘Ya Wimos que es fcil obtener la SSrmula condicional asinttica He © Ur Ln es una potencia de 2) ea) a partir de la ecuacidn 3.2, mientras que resulta més dificil efecuar el anilisis de 4H evando 1 noes una potencia de 2. La regla dela uniformidad nos permite in- 103 104 Notacin Asinttica Capitulo 3 ferir direclamente de la ecuacién 3.3 que fn) = © (7°) siempre y cuando especifi queras que es una funcion suave y que (1) es asinttcamente no decreviente La primera condicisn es inmesdiata, por cuanto nes obviamente no decreciente y Qn? = 4n2. La segunda se demuestra fécilmente por inclucckin matematica sobre la ecuacién 32; véase el problema 328, Por tanto, el uso de la notacion condo nal asinttica como paso intermedio da lugar al resultado final consistente en que 10) € © (*) incondicionalments Demostraremos ahora la regia de uniformidad. Sea f(v) una funcién unifor: sme y sea #(n) una funcidn eventualmente no decreciente tal que Hn) © (fa) |i ces una potencia de b) para algtin entero 6 > 2. Sea re el mayor de los umbrales implicado por las condiciones anteriores: i) © mel), Hm < Kost) y fl < fit) siempre que m 2 a, y djl) s tin) s af) siempre que m 2 11, sea una po- tencia de b, para constantes adecuadas 2. y d, Para todo entero positivo i, sen Ja mayor potencia de 6 que no es mayor que 1! ormalmente, # = #8") y sea T= bu. Por definicion, nf 1 2) (0 es del orden cle fim) cuando nes una. potencia de b (y 1s una potencia de b mayor o igual que 1, 1,71 = by, fes feuni- forme (y 2 > n/b2 n,),y Fes asintoticamente no decreciente (2 11> 1). Esto de- muestra que f() acfi) para fads los valores de n 2 max (1, bn) ¥ por tanto Hone OU. La demostracién de que Kn) © (fi) es parecida NOTACION ASINTOTICA CON VARIOS PARAMETROS Puede suceder, cuando se analiza un algoritmo, que su tiempo de ejecucion de- penda simultaneamente de mas de un parametro del ejemplar en cuestion. Esta si- tuacisn es tipica de ciertos algoritmos para problemas de grafos, por ejemplo, en los cuales el tiempo depende tanto del nimero de nodos como del némero de ais: tas. En tales casos la noci6n stamafo del ejemplar» que se ha utilizado hasta el mo- mento, puede perder gran parte de su significado, Por esta razén, se generaliza lo notacién asinttica de forma natural para funciones de varias variables, Sea fit" x 14: una funcion de parejas de miimeros naturales en los reales no negatives, tal como fim) = log n. Sea J: 17 x.."-¥2* otra funcion dle étas. Di remos que fm, 1) es del orden de fir, 1), lo cual se denota tm, 1”) ¢ Offim, 19) si tn, 2) esté acotada superiormente por un miiltiplo positive de f(m, m) siempre {que tanto m como sean suficientemente grandes. Formalmente, O(n) se de- fine en la forma WoT 9F A ee I OY mm ED IK, n) < eflon, DI Secelin 3.6 ‘Operaciones sobre notacin asinttica (No hay necesidad de utilizar dos umbrales distintos para wy wen W m6 =") La generalizacién a mas de clos parimetros, de la notacién asintotiea concliional y de las notaciones © y @. se hace de forma similar. La notacién asintética con varios pardmetres es parecida a lo que hemos visto hasta el momento, salvo por una diferencia esencia: la regla del umbral ya no es vélida. De hecho, el umbral es indispensable en algunas ocasiones, La razén es que aun cuanclo nunca hay mas de un ruimerofinito de nimeros no negativos que sean menores que cualquier umbral dado, existe en general un nimero infinito de parejas (i, 1) de nuimeros no negativos tales que o bien m bien 1 esta por de- bajo de! umbral; véase el problema 3.32, Por esta razén, O (fi, m)) puede tener sentido aunque fi, n) sea negativa 0 no esté definida para un conjunto infinito de puntos, siempre y cuando todos estos puntos se puedan descartar mediante tuna seleccion adecuada del umbral 3.6 OPERACIONES SOBRE NOTACION ASINTOTICA Para simplifcar algunos caleulos, podemos manipular la notacién asintstica empleande operadores aritméticas. Por ejemplo, O(fin)) + Olin) representa el conjunto de operaciones obtenidas sumando punto a punto toda funciin de (0 (a cualquier funcion de Ogi. Inuitivamente este conjunto representa el orden del tiempo requerido por un algoritme compuesto por una primera fase {que requiete un tiempo del orden de /0) seguido por una segunda fase que re- {quiera tn tiempo del orden de g(). Hablando con propiedad, las constantes ocul- tas que multiplican a fin) y gin) pueden muy bien Ser distintas, pero esto no tiene JImportancia porque es sencillo demostrar que Olfin) + O(gin) es idéntico a O40") + s(0). Por la regla del maximo, sabemos que esto tambign es Jo mismo que kemdsifn, gn) ¥, 8 se prefiere, max(OGUn), OCG) ‘Mas formalmente si op es un operaclor binario y si Xe Y son conjuntos de fun- cones de’ en "*, en particular conjuntos descrios mediante la notacin asint’- tica,entonces «X op Y> denotael conjunto de funciones que se pueden cbtener se Jeccionando una fusncién de X y una funcion de Y, y wop-erando» uno con otro punto a punto. Siguiendo el espirtu ve la notacién asintstica, solamente e\iximos ue la funcién resultante sea el valor operado correcto mas alla de un cierto um bral, Formalmente, X op Y denota IAS LP1Gfe XY Gy € ¥) ne 27 He =f op svn Sig.es una funcion de?” en © extenderemas la notacion escribiendo ¢ op X pa- xa denotar (g} op X, el conjunto de funciones que se pueden obtener operando la funcion g con una funcion de X. Ademas, sia ¢ .“ utlizamos a op X para deno- tarcst, op X, donde est, denota la funcién constante cs, () = para toda entero. En otras palabras, op X denota el conjunto de funciones que se pueden obtener ‘perando 2 con el valor de una funcin de X. También denotaremos la notacién 105 Capitulo 3 simétrica X op ¢ y X op a, y toda esta teoria de operaciones sobre canjuntos se ex- tiende de forma evidente a los operadores que no sean binarios y alas funciones. Como ejemplo, consideremos el significado de n*™". Aqui, «nm y «1» denotan la funcion identidad ld(y)=n y a funcin cst (n)=1, respectivamente. Por tanto, una funcion f(r) pertencce a ni" si existe una funcidn fon) acotada superiormente por ‘una constante¢ tal que (1) = 1? para todo m 2 1), para algéin m, En particular es to implica que “= + para todo m > 0, siempre y cuando F> ¢ y F2 fn) para todo 1 Af para an nner infinite de valores den Formalimente Problemas Olen) = e242 = df) Demostrar que esta notacin ne transi tiva, Especficamente, dar un efemploexplt cto de tes funciones fg, "> tales que fi © A@OD y gine QUOD, y sn embar goftm€ a tnd. Problema 5.14, Sen f(s) = 16, Hallar el ‘error en Ia siguiente sdemostraidns por in 1, Supdngase por hipotess de inducein Ia exstencia de una constant positiva ¢ fl que hrs etn: furia = Or WE + 2n—1= flo 104 20-1 Seln=1)420=1 9 (642M =e-1< (e420 Entonces hemes mostrado seg se pr tenia In existenca de una comstante @ = c+ 2 tal que fn) ¢ Fn. Se sigue, por el principio de induceion matematics, que fn est acst- dda superiormente por una coastante que rmultiplica au para todo 2 1y por tanto que fon € Ou por defniion dela notaion O. Problema 3.15. Hallar el error en La s guiente edemostrcidne de que On) = Os Ses fo) = sn) = my Mn) = n= Rl sts aro que in) gn) = fu para todo 2 0 Por tanto, fir) = mvt), iin. Empleando 1a regla del maximo, concuiriamos que Of) = Otho + en Geena, = OM. Problema 5:16. Demstrar por induecén rmatematica que a regla de msximo se pucde aplicar a mas de dos funciones. Para ser mis ‘@acts, sea kun entero y sean fff fare 107 VOB. Notacin Asinttica res de N en 32°. Detnimes gO) = mix fn), Boon f OD VHOD= fd + fin). fO0 pa 1a todo 7 2 0, Demostrar que Ofgn) = OG. Problema 3.17. Halla el error en la sc iglente demostracifn de que O(n)=0(". (40) = Oia O48)" en donde In igualdad en la parte cents vie- ne de la rgla del maximo generaizads que se demostr en el problema 316. Problema 3.18, Demostrar que la nota- i6n © ereflxiva,simetrica y transitva: pa- rr cualesquier funciones fi 1-21 Ifo £9 Gnd) 2.5if()s Gx) entonces 00 « @.fO») 3.5% flme © (360 by s(n) € © (HA) en tonces fnde © (ie. Problema 3.19. Para cusesquierafuncio nes fg: 1-93" demostrar que Off) = GOA) sky sélo slr ERK? sy slo si fn) = @tg0n). Problema 320. Para cualesquicra funcio- nes fg: E98, demostrar que Offa) = OGIO sy solo si fre OL pero fin eX gtn)) Recnérdese que sc» denota It incusién estrion de conuntos. Problema 3.21, Para iustar la forma en aque se puede utilizar una notacion asinstica para ordenar la eficiencia de los algortmos, ltlicense in relaciones w=» y «=» para po ner los érdenes de Iss siguientes funciones ‘oy ana secuencla,en donde # es una cons "ome el postive arbiteara, 0<& < oP Leer w/Tag OP a4 DY Capitulo 3 No tiie el simbolo 2», Demuesne ss respuestas Problema 3.22. Repita ot problema 3:21 pro esta vez con las funciones nb (meB 20 Det ee Te Problema 323. Vino a final de Ia Sec- ign 33 que E,# CA") para cualquier en- tero pretijado k2 0 porque 2, # 2 1/2" para todo i. Uslice Ia ion que subyace ala Figura 18 de la Seccin 1.72 para derivar una constants més ajustada parn esta desigual- dad: busque una constanted(dependiente de ‘mucho mas grande que 1/2 'y tl que 2d" ea vido para todo n. No utilice proposicién 1.7.16, Problema 324. Demucstre que log!) £0 (log), No utile la formula de Sésling Sugeroncia Ime Ia demostracin de qe EL," que se daba a inal dela See- ‘ion 33. Resista Ia tentaciin de mejorer su razonamiento siguiendo las lineas del pro- blema 323, Problema 3.25. Recuerde que una funclin 527-92 esasintticamente no decrecient si fexiste un mbral entero ntl que fH) © {fin¥1) para todo 2 n, Demuestre por in- ducci6n matemstica que esto implica que {a5 Fn) siempre que m 2 021 Problema 326, Proporcionar na funcién brs Fs tal que tr) €6 fn siempre que fi) sea una func asinisicaments 10: deere lente, Dé un ejemplo natura! de algortmo cuyo tiempo de ejecucdn estéen el onden de 20). Quizk pudiora considera algoritmos ‘muméricos en los cuales sea valor del co s0 en lugar de sr el valor del tama, Problema 327. Consdere cuslquir fun cin Buniforme F798", Sean ¢ y cons ‘Secclin 3.7, tantes tales que (bn fn para todo nm CConsidere cualquier entero postiva i, De- _muestre por induccin matemstica que) ‘Se 0) para todo n> ns Problema 328. Considere Ia funcién f *definida rocarsivamente mediante 20)= {Sa¢ns2peon Sees conrasio ‘ex donde ay 6 son constantes positivas abi travas (sta era la eouscin 3.2 de la Secién 34), Demuestre por inducciim matematica «que tn) es eventualmente no decreciente Problema 329. Complete la demestaciin dla regla de uniform (Fal de a Seen 34) proporonando detalles aoerea de la de- ‘mostrackin de que tn}e(f() siempre que fr) sea una funeion uniform y #1) sa na fuancidn eventualmeate no decreiente tal ue +20 (FO) |e una potencia de P ‘Obsérvese que le regla de niformidad se ‘aplcaigualmente ben si susttuimos @ por O (0 por (en est afinnacion. Esto se debe's que Ia demostracion de que de (no ut ‘za que! (nie Ones una potencia de, tal como la demostraciin que se daba ea la Seceidn 34 de que (mde (f(n))no ulizaba que (m0 (f (9) | 6s una potencia de ‘Sugerence Esto es muy parecido a la de- mostra de que #0 (2) bajo as as ‘mas condiciones, Utlice el hecho consistente fen que si fhm) = fm entonces fim 2 fbn. Problema 3.30. Mostrar mediante ejem- plos explicitos que todas las condiciones previas para aplica a regla de I uniform dad son necesarias. Especificamente nos in- teresan las Funcionesf, N—3" tales que a) 8 (F(») | mes.una potenca de ) para algsin entero b2 2, y sin embargo, 1 (ne (00). Hay que dar tes pares de funciones ‘como éstas, sometidas adems a las restric cones siguientes: 1.f 2 es uniforme, pero fu) no es ast ‘oticamente no docrsiente 2.) y #0 son ambas asintoicamente no deerecientes, pero f (ht) @ Oxf 3.flbn) © OY) ye) es asinucamen- teno decreciente, pero f(r) noes asnto- ficamente no decreciente Problema 3.31. Mostrar mediante un cjemplo explicito que ser eventualmente 10 decreente y estar acotada superiormente por un polinomio no es garenta de unifor ‘midad. En otras palabra, dar dos funciones f.ps > 2 tales que fa) sea eventualmen te no decrecente, Ain) sea un polinomio y fi) Spl) para todo, y in embargo fn) no Problema 332. Mostrar que la segla del ‘umbral no es aplicable a funciones de varios pardmetrs. Especificamente, dar un ejem- plo expicito de dos funciones fg: is x1 —» 2 takes que fm, n) © Clg (m, my in em Dargo no existe una constant ctl que fm 1) 09,2) para todo © N Problema 333. Considérense dos fans rs cualesquiera fg IS 93, Demsrar que Of) + OG tnd = OFF + gC = Cte n,n) = a CO, CX 0 Nola: Ya sabemos que O1" i) = ¢ 0) (mini ug 09) por a eg del mixin, Problema 334. Demostrar que ®t 1) + 201) =20n,:Sesigueque Bln) = An) -1? Justiique su respuesta. Problema 3.35, Hallar una funcién 211 2 que estéacotada superiormente ‘poralgin polinomio,y sin embargo tal que fore Capitulo 3.8 REFERENCIAS Y TEXTOS MAS AVANZADOS Anilisis de algoritmos La notacién asintética O ya existe desde hace algin tiempo en matematicas: véase Bachmann (1894) y de Bruijn (1961). Sin embargo, la notacién ® y O es mas reciente: fue inventada para analiza algoritmos y para la teoria de complejidad computacional. Knuth (1976) ofrece una descripcién de la historia de la notacion asintstice,y propone un estén dar para ella. La notacin condicional asintoticay la nocign de uniformidad,ajuste o sua vizacién han sido introducidas por Brassard (1985), ue tambien sugirio que las wigualda- des de una sola direccién» debian abandonarse, pasando a una notacién basada en con juntos. 4.1 INTRODUCCION El objetivo principal de este libro es ensenarle a disehar sus propios algoritmos efi- cientes. Sin embargo, cuando uno se enfrenta con varios algoritmos distintos para resolver el mismo problema, es preciso decidir cudl de ellos es el mas adecuado para la aplicacién considerada. Una herramienta esencial para este propésito es el anilisis de algoritmos. S6lo después de haber determinado la eficiencia de los dis- tintos algoritmos sera posible tomar una decisin bien informada, Pero no hay una {6rmula magica para analizar la eficiencia de los algoritmos, En su mayor parte, es una cuestion de juicio, intuicion y experiencia. Sin embargo, existen algunas téc- nicas bésicas que suelen resultar titles, tales como saber la forma de enfrentarse a estructuras de control y a ecuaciones de recurrencia. Este capitulo abarca las té- nnicas de uso mas frecuente, y as ilustra con ejemplos. Se hallaran mas ejemplos a Io largo de todo el libro. 4.2 ANALISIS DE LAS ESTRUCTURAS DE CONTROL El anilisis de los algoritmos suele efectuarse desde dentro hacia afuera. En primer lugar, se determina el tiempo requerido por las instrucciones individua Jes (este tiempo suele estar acotado por una constante); después se combinan estos tiempos de acuerdo con las estructuras de control que enlazan Tas ins- trucciones del programa. Algunas estructuras de control, como la composicién secuencial—poner una instrucciGn tras otxa—son faciles de analizar, mientras que los bucles mientras’ son mas suliles. En esta seccién, ofreceremos unos principios generales que resutan ities en aquellos andlsis relacionados con las estructuras de control de uso més frecuente, asi como ejemplos de la aplicacién de estos principios. 112 Anil de Algoritmo Capitulo 4 4.2.1 Secuencias Sean P,y P, dos fragmentos de un algoritmo, Pueden ser instrucciones indivi duales o bien Subalgoritmas complicados. Sean ty! 10s tiempos requeridos por Py P, respectivamente. Estos tiempos pueden depender de distintos parémetros, tales como el tamaio del caso. La regla de la composicin secuencial dice que vl tiempo necesario para calcular “P; ®.", esto es, primero P, y despuss Pes sim- plemente f, +f, Por la regla del maximo este tiempo esta en Okmax (t, () ‘A pesar de su sencilez, la aplicacin de esta repla puede set menos facil de lo que parece en principio. Por ejemplo, puede ser que uno de los pardmetros {que controlan /, dependa del resultado de! cilculo efectuado por P). Por tanto, el analisis de “P,; P” no siempre se puede efectuar considerando P, y P, inde- pendientemente, 4.2.2 Bucles “para” (desde) Los bucles lazos) para (desde son los bucles mas fciles de analiza. Const dérese el bucle siguiente, para it hasta m hacer PQ) ‘Tanto agui como en el resto del libro adoptamos el convenio de que m= 0 n0 €5 un error significa simplemente que la instraccgn controlada PO) no se ects ni ‘una sola ver. Supengemos que ete bce es parte de un algertmo mas extenso, que teahaja en un ejemplar de tamano n. (Tenga Cuidado para no confurdien con.) HL ‘iso mis sencillo es aquel en el cual el empa requerido por PU no depende real mente de aun cuando puciera depender del amano del ejemplar 0, ms general- mente, del eemplar en sf. Supongamas que # denata el tiempo requerido para 1. El problema de este argumento es que si estamos realmen- te analizando todo un algoritmo y no simplemente el bucle para, entonces el ‘umbral implicito en la notacién @ concierne a1, el tamafio del caso, y no a mi, el mlimero de veces que pasamos por el bucle, yt = 0 podria suceder para va- lores arbitrariamente grandes de 1. Por otra parte, siempre y cuando { esté aco- {ado inferiormente por alguna constante (Jo cual siempre es cierto en la prictica), y-siempre y cuando exista un umbral tal que m1 siempre que 1’? ry el pro- blema 4.3 pide demostrar que ‘esta certamente en O{m!) cuando /,m yi secon sideran como funciones de Elandisis de bucles para es mas interesante cuando el tiempo 1) requerido por PQ) varia como funcién de i (En general, el tiempo requerido por P() podria de- pender no s6lo de /sino también del tamao del caso, 0 incluso del caso en si) Si despreciamos el tiempo requerido por el bucle de control, fo cual suele ser co- recto siempre que m > 1, entonces ese mismo bucle para requiere un tiempo que ro esté dado por una multiplicacién, sino por una suma: se trata de 2. tir Las teécnicas de la Seccin 1.7.2 suelen resultar tiles para traductr estas sumas ala no- tacion asintética, mas sencilla ustraremos el andisis de bucles para con un sencillo algoritmo para calcular la sucesion de Fibonacci que evaluabamos empiricamente en la Seccién 27.5. Re- petimos a continuacisn el algoritmo: funcién Fbiter(») ie bjeo para ke 1 hasta n hacer j i+) ej devolver} Si contamos todas las operaciones aritméticas como de coste unitario, la ins- trucciones que estén dentro del bucle para requieren un tiempo constante. So- 114 Andis de Algortmos Capitulo 4 pongamos que el tiempo requerido por estas instrucciones esté acotado supe- Fiormente por alguna constante c. Sin tener en cuenta el control del bucle, el tempo requerido por el bucle para esté acotado superiormente por n veces esta constante ic. Dado que las instrucciones anteriores y posteriores al bucle re- ‘quieren un tiempo despreciable, concluimos que el algoritmo requiere un tiem= Po que esta en O(n). Un razonamiento similar indica que este tiempo tambin ests en Mn), puesto que esta en O(n. Sin embargo, vim en la Seccin 25 que no es razonable tomar como de coste Lunitario las suimas implicadas en el cGmputo de la sucesin de Fibonacci a no ser {que 1 sea muy pequefa. Por tanto, deberiamos tener en cuenta el hecho consisten- teen que una instruccion tan sencilla como “j ¢ i+ j” se vuelve mas costosaa cada ppasada por el bucie. Es ficil programar adiciones y sustracciones de enteros muy ‘grandes de tal modo que el tempo requerido para sumar orstar das enteros sea del fren exacto del numer de cifras que tenga el mayor de los operandos, Para deter _minar el tiempo requcrco por la Isima pasada por el buce, necesitamos conocer Ja longitud de los enteros implicacos. El problema 44 pide demostrar por induecion _materatica que los valores de iy de jal inal de la k-sima iteracin son f, Vf, re ppectivamente. Fsta es precsamente la raz6n por la cual funciona el algoritmo: de- ‘vuelve el valor de jal final de Ia -ésima iteracion, que es precisamente f, seguin de- seibamos. Addemas, se vio en la Seccién 27.5 que la formula de Moivre nos dice que cl tamafode fest en @(1), Por tanto, la eésima necesita un tiempo en O1k-1)+0(8) ‘véase el problema 3.4. Sea c una constant tal que este tiempo esta acotado supe- rlormente por ck para todo k> 1. Si despreciamos el tiempo requeride por el con‘rol del bucley por las instrucciones que preceien al bucle (y por las que lo siguen), con- uiremos que el tiempo requerido por el algoritmo esti acotado superiormente por Sangeet Un razonamiento similar indica que este tiempo se encuentra en 2, y que por tanto esta en (1, Por tanto, contar 6 no camo de coste unitaro las opers- ciones aritmeticas supone una diferencia crucial en el andlisis de Fbiter. Et anilisis de bucles para que empiezan en un valor que no sea 1,0 que avan- zan con pasos mayores, deberia resutar evidente a partir de lo dicho. Considére- se el sigiiente ejemplo de bucle: para i +5 hasta in paso 2 hacer Pi) Aqui, PA se ejecuta((m—5) = 2) + 1 veces siempre que m2 3. (Para que un bu- cle para tenga sentido, el punto final siempre deberia ser tan grande como el pun- to inical ntios el paso) 4.2.3 Llamadas recursivas, El andlisls de algoritmos recursives suele ser sencillo,al menos hasta certo punto, Una inspeccin sencilla del algoritmo suele dar lugar a una ecacién de Secelin 4.2 [Aniline de las estructuras de contr recurrencia que “remeda” (imita el flujo de control dentro del algoritmo. Una vez {que se ha obtenido la ecvacién de recurrencia, se pueden aplicar las técnicas ge nerales descrtas en la Seccién 47 para transformar la eeuacin en la ecwacivin asintética no recursiva, que es mis sencilla ‘Como ejemplo, consiérese de nuevo el problema consistente en calcula la st cesion de Fibonacci, pero esta vez con el algoritmo recursivo Fibrec, que comps ribamos con Fibiter en la Secciin 2.75. fanci6n Filnec) siti <2entonces devolver sino devolver Fibrectt - 1) + Fibres -2) ‘Sea TW) el tiempo requerido por una Hamada a Fibre). Sit <2, el algoritmo tlevuelve simplemente lo cual requiere algtin tiempo constante a. En caso com ttario, a mayor parte del trabajo se invierte en las dos llamadas recursivas, que requieren un tiempo T(-1) y Tui-2) respectivamente, Ademis, hay que efeetuar tuna suma def, yf. (que son los valores proporcionados por ls Iamadas recur sivas), y también hay que efectuar el control de la recursividad y la comprobaciin “sin <2". Sea h(n) el trabajo implicado en esta suma y en este control, esto es, el tiempo requerido por una llamada a Fibye(s) jgnorando los Hempos invertides sdeatro de las dos lamadas recursivas. Por definicién de T() y de i) obtenemos la siguiente recurrencia i a Ton Te-1)+T)-2)+1Kn)_ en caso contrario a Si contamos las sumas con coste unitaro, hn) esté acotade por una constante, y la ecuacién de recurrencia para Tin) vs mluy similar a la que ya hemos encon- luado para gin) en la Seccisn 1.64. La induccién constructiva se aplica igualmen te bien para alcanzar la misma conclusién: Tun © Off). Sin embargo, es mis sen cilloen este caso aplcar la técnica dela Seccién 4.7 para resolver larecurrencia 41 Un razonamiento similar muestra que Tn) € Qf.) y por tanto Ti = Off). Eaw pleando la formula de Moivre, concluimos que Plbreci) raquiere un Hempo es ponencial en. decir doblenente exponencial en el tamaino del caso, puesto que valor de 1 es exponencial en el tanto de Si no se cuentan las adiciones con un coste unitario, Ii) ya no queda acotad por una constante. En lugar de ocurrir esto, in) esté domninado por el tiempo re {querido para la adicion de yf,» para r suficientomente grande. Ya hemos vis to que esta adicidn requiere tn tiempo que es del orden exacto de n. Por tant ii) «© (7). Las téenieas de la Seceién 4.7 son aplicables una vez mis para resolver la recurrencia 4.1. Sorprendentemente, el resultado es el mismo insependientemen te de sin) es constante o lineal: sigue sucediendo que Tin) € OU). En conch sin, Fifre(u) requiere un tiempo exponencial en 1 (jtanto si se cuentan las adie ciones con coste unitario como si no!). La tnica diferencia es la constante multi- plicativa oculta en la notacisn ©. ns 116 Andlis de Algoritmos Capitulo 4 4.2.4 Bucles “mientras” {while} y “repetir” (repeat) Los bucles mientras (while) y repetir (repeat) suelen ser mas dificiles de ana- Tizar que los bucles para (for), porque no existe una forma evidente a priori de sa ber csintas veces tendremos que pasar por el bucle, La téenica esténdar para ana- lizar estos bucles es hallar una funcidn de las variables implicadas cuyo valor se decremente en cada pasada. Para concluir que el bucle terminaré por acabar,bas- ta con saber que este valor debe ser un entero positivo. (No se puede seguir de- crementando indefinidamente un rinimo natural.) Paza determinar el nimero de veces que se repite el buce, sin embargo, necesitamos conocer mejor la forma en que disminuye el valor de esta funcion. Una aproximacién alternativa al ané- lisis del bucle mientras consiste en tratarlo como un algoritmo recursive. lustra- remos ambas técnicas con el mismo ejemplo. E] andisis de bucles repetir se efec- ‘tia de manera similar; no daremos ejemplos de ellos en esta soccién Estudiaremos con detalle la bisqueds binaria en la Seccién 7.3, Sin embargo, la utilizamos ahora porque ilustza perfectamente el andliss de los bucles mientras. Elobjetivo de la bisqueda binaria es hallar un elemento x de un vector TI] que esté ordenado de modo no decreciente. Supongamos por sencillez que esté garan- tizado que x aparece al menos una vez en T(E caso general se trata en la Seecién 73, Se nos pide buscar un entero ital que 1 +i =1y Tl] = x. La idea basica que subyace a la bxisqueda binaria es comparar x con el elemento y que estéen la po sicign media de T. La busqueda concluye six = y; se puede limita ala mitad su- perior de la matrz six> y; en caso contrario resulta suficiente examinar la mitad Inferior. Obtenemos el siguiente algoritmo (en la Seccién 7:3 se da un algoritmo un poco mejor; véase el problema 7.1) funcién Buisqueda binaria( Tn, x) {Este algoritmo supone que x se encuentra en ) imkjnm mientras i Ti entonces se ejecata la instrucciin “i k-+ 1" y tanto Por (i+ e2+1y}=j Por tanto, j-+p+25j-W4j-D/2=(-i+ D/2=d/2 Finalmente, si x = TIAL entonces iy j reciben el mismo valor y por tanto d = 1; pero d era al menos 2 puesto que en caso contrario no habriamos vuelto a entrar en el bucle. Concluimos entonces que d <1/2 suceda lo que suceda, Jo cual sig rifica que el valor de dse divide cuando menos por des en cada pasada por el bu- dle, Dado que nos detenemos cuando d & 1, el proceso tiene que detenerse even- tualmente, pero jcuanto tiempo tarda? Para determinar una cota superior del tiempo de ejecucién de la bisqueda bi- naria, supongamos que d, denota el valor de j- i+ 1 al final de la - Oy x< TYj)hacer TY}+ 11-71 jej-d Tes 1 Capitulo 4 de Algoritmes AA diferencia de Ia ordenacién por seleccién, se vio en la Seccién 2.4 que el tiempo necesario para ordenar 1 objetos por insercion depende signficativamen- tedel orden original de los elementos. Aqui analizamos este algoritmo en el caso peor; el andlisis del caso mesdio se da en la Seccién 4.5, Para analizar el tiempo de tjecucién de este algoritmo, seleccionamos como barémetro el mimero de veces que se comprueba la condicion (| > Oy x < Tif) del bucle mientras. Consideremos un valor fijo de i. Sea x = Tl, como en el algoritmo. El caso peor surge cuando x es menor que TI/] para toro j entre 1 i=1, puesto que en este caso tenemos que comparar x con Tli~ 1), Tli~2I,..TT1] antes de poder salir de] bucle mientras, porque j = 0. Por tanto el bucle mientras se efectia # veces en el caso peor, Este caso peor succcle para todos los valores de i entre 2y # cuando el vector esta ordenado inicialmente por orden decreciente. En- tonces la comprobacién del barémetro se efectia Ps = m(n + 10/2-1 veces en total, lo cual esta en (02). Esto muestra que la ordenacién por insercién require también un tiempo que esta en (i?) para ordenar 11 objetos en el ca so peor, Algoritmo de Euctides Se recordaré de la Seccién 2.7.4 que el algoritmo de Euclides se utiizaba para caleular el maximo comiin divisor de dos enteros faneién Euclidim, 1) ‘mientras ni > 0 hacer tem me mod m net devolver n Elanalisis de este bucle es ligeramente mas sutl que los que hemos visto hasts 1 momento, porque est claro que no hay un progreso medible en can pasada por 1 buce, sino mis bien en ocasiones alternativas, Para ver esto, mostraremos pri mero que para dos enteros cualesquiera m yi tales que n >, siempre es cierto que mod m 1/2, entonces 1< mlm <2, y por tanto n + m= 1,10 cual implica que mod m = 1" mx (r= Mm) == men n/2= n/2 © Simsn/2,entonces n mod m my pot tan to vuelve a ser aplicable el mismo razonamiento: si el algoritmo no se ha deteni- do antes, otras dos pasauas por el bucle hardin que el valor de n sea al menos dos veces més pequefio. Con cieta experiencia, la conclusién es ahora inmediata: en el bucle se vaa entrar como maximo, aproximadamente, 2g n veces. Formalmente, lo mejor es completa el analisis dol algoritmo de Euclides tr tando al bucle mientras como si uese un algoritmo recursivo. Sea (7) el maximo :nimero de veces que el algoritmo pasa por el bucle con unas entradas iy 1 cuan- do es m1 Su $1, SiS 2, pasamos por el bucie@ bien cera veces (sim = 0) o bien tuna vez. Fn caso contrario,o bien pasamos por el bucle menos de dos veces (si ‘6m divide a » exactamente), al menos dos veces, En este timo caso, el v- lor de se divide al menos por dos (y por tanto pasa a ser como mucho ! = 2) y el de m pasa a no ser mayor que el nuevo valor de n, Por tanto, se necesitan como. ‘nvixime f(/ +2) pasadas adicionales por el bucle para completar el cdlculo, Esto produce la recurrencia siguiente inal sits? H9=)9 44742) en caso conteatio Esto es un caso especial de la Fcuacion 42 y las técnicas de la Seecién 47 se aplican igualmente bien, para concluir que Hi) € Oflog 1), lo cual demuestra que el algoritmo de Buclides se ejecuta en un tiempo lineal con respecto al tamavio de Ia entrada proporcionada, siempre y cuando sea razonable considerar como ele- ‘mentales todas las operaciones aritméticas. Es interesante saber que este algorit- ‘mo tiene ss peor zendimiento con entradas de cualquier tamafio dado cuando m {yi son dos nimeros consecutivos de la sucesign de Fibonacci, (Quiza se pregunte el lector por qué hemes usado t!) para acotar el mimero de ve- ‘es que pastel algoritmo por el bucle con unas entradas my n cuando m Sn en lugar de defini directamente como una funcién de »,e! mayor de los dos operan: dos, Parseria mis natural defini 1) como el maximo niimero de veces que pass el algoritmo por el bucle con unas entradas my n cuando 1 <1. El problema es que es {a definicin no nos permitira conclu que f1) <2 + (n = 2) partiendo del hecho de ‘que tse divide cuanclo menos por das después de hacer dos pasadas por el cle. Por ‘ejemplo, #13) = 5 con Eucll(, 13) como caso peor, mientras que (13 +2) = 46) [sto sucede porque dos pasadas por el cle después de una llamada a ict 123 124 Anslisis de Algortnos Capitulo 4 no nos deja con 1 = 6 sino con» =5 (y m=3),y en efecto K13) <2-+ 45) porque 15) = 3 (precisamente con Evclid3,5) como caso peor) El origen del problema es que la de- finicin “mas natural” para i no proporciona una funcion no decreciente puesto que 16) > 46)-y por tanto la existencia de algun sn +2 tal quer) 2+ tr) no implt aque tn) $2+ tr +2). En lugar de ello, lo tinico que podemos decir es que ti) <2 st mdxltor) | + 2}, quees una rocurrencia con la que resulta incémodo trabajar Para resumir, hemos definido la func #precisamente en Ia forma en que lo hicimos para que sea evidentomente no decrecente y sin embargo de tal modo que propor done una cota superior del Hempo requerido para cualquier caso cancreo, Las Torres de Hanoi Las Torres de Hanoi nos ofrecen otro ejemplo del andlisis de algoritmos recur- sivas. Se dice que después de crear el mundo, Dios puso en la tierra tres barras he- chas de diamantes y 64 anillos de oro. Estos anillos son todos ellos de distintos tamafos. En la creacion, se dispusieron en la primera barra por orden de tama, con el mayor en la parte inferior y el menor en la parte superior. También cred Dios un monasterio junto a ls barras, La tarea de los monjes durante su vida es trasladar todos los anillos a la segunda barra, La tnica operacién permitida es trasladar un solo anillo de tna barra a otra de tal manera que nunca se coloque tun anillo encima de otro que sea menor. Cuando los monjes hayan finalizado su taren, dice la leyenda, se acabaré el mundo, Probablemente sea la profecia que lrece mis consuelo con respecte al fin del mundo, porque silos monjes se Ins arreglasen para mover un anillo por segundo, trabajando dia y noche sin descar sar ni cometer errores, su trabajo no habria terminado 500.000 millones de afios después de que empezaran! Son més de 25 veces Ia edad estimada del Universo! Es evidente que el problema se puede generalizar para un aimero arbitrario de anillos, 1. Por ejemplo, con 1 = 3 obtenemos I solicién dada en la figara 4.1 Para resalver el problema general, s6lo tenemos que darnos cuenta de que para trasladar los m anullos mas pequenos de la barra ia la barra jen donde 1 Oentonces Hanoidn~ 1,1,6~i-P escribir” >“) Hanoiim 1, 6~i- je) Para analizar el tiempo de ejecucin de est algoritmo, utlizamos la instrucciin escribir como bardmetro. Supongamos que fn) denota el mimero de veoes que se Seecion 44 ecuta en una Hamada a Hanoi, ). Poe inspeccion del algoxitmo, obtenemos la recurrencia siguiente: 0 sim=0 t= Loem-) +1 eeewocmen a partir de la cual la técnica de la Seccién 4.7 produce t(m) Ejemplo 47.6. Dado que el nimero de ejecuciones de la instruccion escribir es tuna buena medida del tiempo requerido por el algoritmo, concluimos que se ne- ‘esita un tiempo que estd en 6(2) para resolver el problema con 1 anillos. De he- cho, se puede demostrar que el problema con 1 anillos no se puede resolver en menos de 2-1 movimientos y por tanto el algoritmo es éptimo si uno insist en Imprimir toda la secuencia de movimiento. 41 PLl le Li le Lidetiirlile l£letal Fig 6. axes Han Céteulo de determinantes (Otro ejemplo mas de aniisis de la recursividad es el que concieme al algoritmo recursivo para calcalar un determinante. Recuérdese que el determinante de una ma- triz x se puede calcular a partir de los determinantes de matrices mas peque- fas, (n—1) x (n—1) que se obtienen borrando la primera fay alguna columina dela matriz original. Una vez que se han calculado los» subdeterminantes, el determi- nante de la matrz original se calcula con mucha rapide. Ademas de ls lamadas re- ‘cursivas la operacién dominante que se necesita consisteen crear las submatrices ‘uyos determinantes es preciso cacular Esto requlere un tiempo que esté en O() si se implementa diectamente, pero basta un tiempo 6() ise utlizan punteros en 1u- gar de copiar elementos. Po tanto, el tempo total (que se necesita para caleular el determinante de una mateiz nx n mediante el algortmo recursivo esté dado por Ia recurrenca (1) = f(t-1) + h(a) para x = 2, donde h(n) n). Esta recurrencia no se puede tratar mediante las éenias dela Seccin 47, Sin embargo, vimos en el pro- blema 1.31 que la induccign constructva es aplicable para conclu que f(n) € n!), To cual muestra que este algoritmo es muy inefciente, La misma concluslén es Vili da si somos menos intligentes y necrstamos h(n) € 8(). Recuérdese de a Secién 2.71 que el determinante se puede ealcular en un tempo que esta en @(7) por eli rminacin de Gaussjondan,e incluso més deprisa mediante ofr algoritmo recusivo de la familia “divide y venceris". Se precisa més es{uerzo para analizar estos algo- ritmos ise tiene en cuenta el tempo requerido para la operaciones aritméticas. Hemp adil 125 126 Andlisis de Algortmos Capitulo 4 4.5. ANALISIS DEL CASO MEDIO \Vimos que la ordenacién por insercién requiere un tempo cuadtatico en el ca so peor. Por otra parte, es facil mostrar que concluye en un tiempo lineal en el ca 0 higjor. Es natural preguntarse por st efiiencia er el caso meio. Para que esta pregunta tenga sentido, debemos ser precisos acerca del significado de “en el a s0 medio". Esto requiete suponer 2 priavi una distribucién de probabilidad para los casos en que se pedira que resuelva nuestro algoritmo, La conclusion del ana- lisis en el caso medlio puede depender crucialmente de esta suposicién,y este ans liss puede inducir a error si de hocho nuestras suposiciones no se corresponden com Is realidad de la aplicacién que utiliza el algoritmo. Este tema tan importan te se discutia con mas extensidn en la Seecién 24, y volveremos a él en la Seccién 10,7, En la mayoria de las ocasiones, los analisis en el caso medio se efectian ha- ciendo la suposicién (mas 0 menos realista) consistente en que todos los ejempla res de un tamano dado son jgualmente probables. Para los problemas de ordena ‘in, resulta mis sencillo suponer también que todos los elementos que hay que cordenar son distintos, ‘Supongamos que se tienen que oxdenar 1 elementos dstintos por insercién, y {que las 1! permutaciones de estos elementos son igualmente probables, Para de terminar el tiempo requerido en el caso medio por el algoritmo, podriamas sumar los tiempos requeridos para ordenar todas y cada una de las permutaciones pos bles y dividir entonces por ni! la respuesta obtenida, Una aproximacion alternat va, mas sencilla en este caso, consiste en analizar directamente el tiempo requer do por el algoritmo, razonando probabilisticamente a medida que vayamos avan- zando. Para todo i, con ? Oy x < Ti) del bucle mientras, Por definicion del rango parcial, y dado que TI... ~ I esta ordenado, esta comproba cig se efectia exactamente ik + 1 veces. Dado que todo valor de k entre Te bene una probabilidad de ocurrir igual a 1/i, el ntimero medio de veces que se ‘efectia Ia comprobacion barémetro para cualquier valor dado de i es seccién 4.6 46 1X in gat Sa-ken =i a b> Estos sucesos son independientes para distntos valores de /. EI ndmero total medio de veces que se efectda la comprobacién bardmetro cuando se ordenan 1 ‘elementos es por tanto wg itl, (nbn PI. ‘que esté en ©(1), Coneluimos entonces que la ordenacion por insercién hace en el ‘caso medio aproximadamente la mitad de comparaciones que en el caso peo! Pe +o este nimero sigue siendo cuadriticn. ANALISIS AMORTIZADO. En algunas ocasiones, el andlisis del caso peor es excesivamente pesimista ‘Considérese par ejemplo un proceso P que tlene efectos secundarios, o cual sig- nifca que P modifica el valor de variables globales. Como resultado de los efectos secundarios, dos llamadas sucesivas e idénticas a P podrian requerir cantidades de tiempo radicalmente diferentes. Cuando se esté analizando un algoritmo que tenga a P como subalgoritmo, lo fcil seria analiza P en el caso peor, y suponer {que sucede lo peor cada vez. que se llama a P. Este enfoque produce una respucs- ta comecta suponiendo que estemos satisfechos con un analisis en notacin O, por ‘oposicion a la notacién @, pero la respuesta seria pesimista. Considérese por ejem- plo el bucle siguiente: para i= I hasta hacer P Si requiere un tiempo en O(log n) en el caso peor, es correcto concluir gue el bucle requiere un tiempo en O(n log 1), pero puede suceder que sea mucho max pido incluso enel caso peor. Esto podria suceder si Pno puede tarda mvicho tien [Po (02(log m) a no ser que haya sido invocado muchas veces anteriormente, con un coste pequetio en todas las llamadas. Por ejemplo, podela suceder que P requirie- ‘un tiempo constante en el caso medio, en cuyo caso el bucle completo se eecu- ‘aria en un tiempo lineal En este caso, el significado de “en el caso medio" es completamente distin- to del que se encontraba en la Seccin 4.5. En lugar de tomar la media sobre to- ds las posibles entradas, lo cual requiere una suposicin acerca de la distri- bucién de probabilidad de los casos, tomamos la media sobre llamadas sucesi- ‘as. Agui los tiempos requeridos por las diferentes llamadas tienen una fuerte relaci6n entre s{, mientras que en la Seccién 4.5 suponfamos implicitamente 17 128 Andis de Algoritmos Capitulo 4 que cada llamada era independiente de las demés. Para evitar confusiones, di- remos en este contexto que toda llamada a P requiere un tiempo constante lamiortizado en lugar de decir que requlere un tiempo constante en el caso me- dio, Decir que un proceso requiere un tiempo constante amortizado significa que existe una constante c (que s6lo dependers de la implementacin) tal que para tado » positive y para cualquier secuencia de n llamadas al proceso, el tiempo total para esas liamadas esta acotado superiormente por cn. Por tanto se permi- ten tiempo excesivo para una llamada slo si se han registrado tiempos muy breves anteriormente, yno si fan solo las llamadas posteriores fueran més r4pi- das, De hecho, si permitiéeamos que una llamada fuera costosa basindonos en que nos prepara para llamadas posteriores mucho més répidas, entonces el gas- to se desperdiciaria si esa llamada fuera la altima. CConsidérese por ejemplo el tiempo necesario para conseguir una taza de ca- fen la sala de profesores. La mayor parte de las veces basta entrar, coger Ia cafetera y poner el café en nuestra taza, De vez en cuando, sin embargo, tiene tuno la mala suerte de encontrar vacta la catetera: hay que hacer otra lo cual re- quiere bastante més tiempo. Y ya de paso, puede uno hacer un poco de lim- pieza. Por tanto, el algoritme para tomar café requiere una cantidad notable de tiempo en el caso peor, y sin embargo es répido en el sentido amortizado, por- que sélo se tarda mucho tiempo después de haber obtenido répidamente bas- tantes tazas, Para que esta analogia funcione correctamente, es preciso asumir con muy poco realismo que la cafetera esta llena cuando entra la primera per- sona; en caso contrario precisamente la primera taza requeriria demasiado tiempo) ‘Un ejemplo clésico de este comportamiento en programacin concieme ala reserva de espacio con una necesidad ocasional de “recogida de basura’. Un ejemplo mas sencillo es el que concierne a la actualizacién dle un contador bina- Ho. Supongamos que se desea manejar el contador como si fuera un vector de bits que representan el valor del contador en notacidn binaria: el vector C[1.2n] representa 3, 27°C Uj]. Por ejemplo, el vector [0, 1,1, 0,1, 1] representa el 27. Dado que uno de estos contadores sdlo puede llegar Rasta 2" 1, supondzemos «gue nos basta con contar el médulo 2" (alternativamente, padrfamos generar un ‘mensaje de error en caso de desbordamiento)..Lo que sigue es el algoritmo para afadir 1 al contador procedimientocontar (C{L) ‘Este procedimientosupone que = 1 ¥y que Cli] © (0, 1} para todo 1 j= m Jomel reper wj-1 cul 1-ciy hasta_que Ci] =10 j=1 Seccién 4.6 Anilisis amortizado Si se invoca con el ejemplo anterior 10,1, 1,0, 1,1], € vector pasa a ser (0,1, 1, 0,1, 0] en la primera pasada por el buce; [0 1, 1,0, 0,0] en la segunda pasada, ¥ [0, 1,1, 1,0,0) ema tercera (lo cual representa ciertamente el valor 28 en binario}; 1 bucle termina con j= 4, puesto que ahora Cid es igual a 1. Claramente, el caso peor del bucle se produce cuando Cli] = 1 para todo j, en cuya caso pase por el bu: cle m veces. Por tanto,» llamadas a contar partiendo de un vector que contenga sélo ceros va a requerir un tiempo total O(n). Pero se necesita un tiempo en ‘©(um)? La respuesta es negativa, por cuanto vamos a mostrar que comtarrequiere tun tiempo amortizado constante. Esto implica que nuestras» lamadas a contar en Conjunto requieren un tiempo en (1), con una constante oculta que no depende dem. En particular, se puede conseguir contar desde 0 hasta = 2°-1 en wn tiem po lineal en 1, mientras que un analisis descuidado de coniny en el caso peor pro- uciria la conclusion correcta pero pesimista de que se necesita un tiempo que’ ten On log, Para aleanzar los resultados de un anélisis amortizado, hay dos téenicas prin- cipales:el enfogue de la funcidn potencial y el truco de contabilidad. La mejor aplicacion de estas dos teenieas corresponde al andlisis del numero de veves que Se eecuta une instruccion barémetro, Funciones potenciales Sapongamos que el rosso gu hay que aralizar modifica una base de datos 4 ques chclencis deal proceso cad Vax que se invoca depende del estado oc- tual dela have de datos, Asocames con la fase de datos uno nocin de“egan- Zacion,conoida con el nome de fncn penal de la base de datos Se per tite qu’ las lamadas al proceso reuleran nds empo que el valor medi lem prey cuando mopren a organiza dela base de datos. Ala inverse per fe que las llamado rapids le desorganicen. sto es preceament lo que cour tn i sala de profesor! La analog dene todavia mae valid: cuano ms rap damenelenemos ln taza, ns probable esque se saa el café lo cual a su ez sigifica que se necesita nis lempo cuando legue el momento de lmplat De fora similar, cuarto ms rpido veel proceso clnndo Va deprs, ms se des gina la base de datos local au vez requlere ra tempo cuando se hace Me- Forralmente nodes una func potnclenera @ del eta a bse de datos Los valores mis clevados de © se corresponien con etades mds devorganizade: Sen valor de © en el ead fnicialy representa nso te tinder de onganizacion. Sn valor de® para Fos de dato espary dea ‘sia lama al proceso, y sae tempo necsario para esa Hamada (oe mere de vows que secfecta ls instruccon baometro) Deimos el supe anor Fado requerid por esa llamada ena forma f= + 4 ~ Dees manera, ese] tempo realmente necesirio pars fetuarla sim l- sada al proces, nds el incresnento de potencal erusedo por esa ama, A Ve- {ever meer pensar en eso comm temp real menes el iecemento de pote Gil, por cuatio esta expreion rusia que te permits que los opera Sons e 129 Capitulo 4 ‘organizan la base de datos se ejecuten dufante ms tiempo sin incurrir en una pe- nalizacion en términos de tiempo amortizado. Supongamos que T, denota el tiempo total requerido por las m primeras Ua- ‘madas al proceso, y denotemos mediante T, el tiempo total amortizado, RaDiaDe to. Th 49, + 0 pct tnt Oy O10 Por tanto, Lo significative de esto es que T,< Fes vélido para todo m siempre y cuando 4, nunca legue a ser menor que En otras palabras, el tempo total amortzado siempre una cota superior del Hempo total real necesario para efectuar una se- tuencia de operaciones, con tl de que nunca se permita que la base de datos gue- dle més “organizada” que en sa estado iniial (esto demuestra que una excesva conganizacién puede ser perjudical) Este enfoque resulta interesante cuando los Siempos reales varian de forma signiicaiva entre una llamada y la siguiente, mientras que el tempo amortizado x csi invariante. Por ejemplo, una secuencia de operaciones requiere un tempo lineal cuando el tiempo amortizado por ope- ‘acidn es constant, independientemente de! iempo real eqerido para cada Ope racén. lreto, cuando uno intent aplica eta ténica, consiseen determinar la fun- cién potencial adecuada.Ihustraremas esto con maestro cjemplo del contador bi- nario, Una llamada a conta resulta cada vez ms costosa a medida que el cero del extremo derecho del contador se va encontrando més hacia la izquierda. Por tanto, la funcion potencal que se nos viene ala mente inmediatamente seria smenos el mayor / tal que Cj} = 0. Result, sin embargo, que esta selecsin fun ign potencal noes adecuada, porque una dnica operacion puede desordenar arbitrariamente el contador (al ahadir 1a contador que representa 2-2 se da lu- fara que esta funcin potencal salte de 0a). Afortunadamente, hay una fu én potencial mas sencila que funciona bien: se define O(C) como el nimero de bits iguales a 1 que hay en C. Claramente, nuestra condicion de que nunca se permita al potencal disminuir mds alls cle potencial inci es valida, puesto {ue el potencialincial es cer. Secelin 4.6 Andis amortizado Cuil es el coste amortizado de afadir 1 al contador, en términos del miimero de veces que pasemos por el bucle? Hay que considerar tres casos: © Sil contador representa un entero par, entonces se pasa una sola vez por el bucle, porque se hace cambiar de Oa | el bif del extremo derecho. Como re- ssultado, hay un bit puesto a T mis que antes, Por tanto, el coste rel es una pasada por el bucle, y el incremento de potencial también es 1. Por defini- ‘ion, el coste amortizado de la operacién es 1 + © i todos los bits del contador son iguales a1, pasamos por el bucle m veces, ‘ambiando a 0 todos os bits. Como resultado, el potencial pasa dem a0. Por tanto, el coste amortizado es m- m= 0. © En los casos restantes, cada vex que pasemos por el bucle decrementaremos «el potencial por valor de 1, puesto que se pasa un bt de {a 0, salvo en la il- tima pasada por el bucle, en la cual se inerementa el potencial en 1 porque se pasa un bil de a 1. De esta manera, si pasamos k veces por el buce, se ecrementa kI veces el potencial, y se inevementa tna vez, con un decre- ‘mento noto de k-~ 2. Por tanto, el coste amortizado es k~ (k~2) =2. En conclusiGn, el coste amortizado de aftadir 1 un contador binario es preci samente equivalente a pasar dos veces por el bucle, salvo que no hay ningtin cos- te cuando el contador vuelve a cero, Daclo que el coste real de tuna secuencia de ‘operaciones nunca es mayor que el coste amortizado, esto demuestra que el ni rmiero total de veces que hay que pasar por el bucle cuando se incrementa 1 veces sucesivas un contador es como mucho 2n siempre que el contador estuviera pues- to ceroiniialmente. (Este andliss seria incorrecto si se tuviera en cuenta el tiem- ‘po necesario para poner a cero el contador, como si hublésemos tenido en cuenta tiempo necesario para preparer la primera catetera por la mafians.) EI truco de contabilidad Esta tgenica se puede considerar como una remodelacién del enfoque de ia funcién potencial, pero resulta mas fil de aplicar en algunos contextos, La ap ‘acién clésica del truco de contabilidad sirve para analizar Ia eficiencia de la tructura de particién que se describe en la Section 59. El andlisis rel de est3= c= ‘tructuras, sin embargo, se omitiré por cuanto va mas alla del aleance de este libs ‘Supongamos que se ha conjeturado una cota superior edel tempo invertilown 1 sentido amortizado siempre que se llama al proceso P, y que se desea demos ‘rar que nuestra intuicin es correcta (t podria depencler de varios parimettos, t- les como el tamafo del caso). Para utilizar el truco de contabilidad, es preciso es- tablocer una cuenta bancatia virtual, que contiene cero fichas inkcalmente. Cada ‘vez que se invoca a P, se deposita en la cuenta un crite de ¢ fichas. Cada vez que se ejecuta la instruccién barémetz, es preciso pagarla, gastando una ficha de Ta cuenta La regla es que la cuenta nunca esté en mimeros rojos. Eso asegura que s6lo se permitan operaciones lentas si se ha producido ya un niimero suficiente de operaciones ripidas, Por tanto, basta mostrar que se cumple Ia regla para con: 131 132 Andlisis de Algortmos Capitulo 4 cluir que el tiempo real invertide por cualquier secuencia de operaciones nunca vaa sobrepasar el tiempo amortizado, y en particular que cualquier secuencia de s operaciones requiere tin tiempo que es como mucho £3, Para analizar nuestro ejemplo de un contador binario, colocaremos dos fichas ‘en Ia cuenta por cada llamada a contar(ésta es nuestra suposiciOn nical), y gas- taremos una ficha eada vez que cottar pase por el bucle. Fl punto clave, una vez ins, conciorne al nero de bite que estén puestos a 1 en el contador. Dejaremos ‘que el lector verfique que toda llamada a contar incrementa (0 decrementa) la ‘antidad disponible en el banco por valor precisamente del incremento (0 decre- ‘mento) de bits puestos a 1en el contador al que de lugar (a no ser que el canta- dor se ponga a cero, en cuyo caso se gastan menos fichas). En otras palabras, st habia / bits puestos a 1 en el contador antes de la Hamada y j > 0 bits posterior- mente, entonces el nimero de fichas disponibles en la cuenta después de la la- mada te habré incrementado en ji (contando los incrementos negativos como decrementos). Consiguientemente, ef nimero de fichas que hay en la cuenta siempre exactamente igual al mimero de bits puestos @ 1 en el contador en ese momento (salvo que cl contador se haya puesto a cero, en cuye caso habe mis fichas en la cuenta). Esto demuestra que la cuenta nunca queda en descubierto, puesto que el mimero de bits puestos a 1 no puede ser negativo, y por tanto to- da llamada a contar costara como maximo dos fichas en el sentido amortizado Utitizaremos esta técnica en la Seccién 5.8 para analizar la eficiencia amortizads de los monticulos binomiales. 4.7 RESOLUCION DE RECURRENCIAS El iltimo paso indispensable cuando se esté analizando un algoritmo es fre cuentemente ia resolucidn de una ecuacion de recurrencia. Con un poco de expe- rlencia y de intuicién, la mayoria de las recurrencias se puede resolver mediante suposiciones inteligentes. Sin embargo, existe una potente téenica que se puede utilizar para resolver de forma casi automatica ciertas clases de recurrencis. Fe sel tema principal de esta seecién: la técnica de la ecuncién cnracteisticn. 4.7.1 Suposiciones inteligentes Este enfoque suele desarrollarse en custro etapas:calcular los primeros valores de la recurrencia, buscar una regularidad, inventar una forma general adecuada y demostra finalmente por induccién matematica (quiz por inducciin construc tiva) que esta forma es correcta. Considérese la recurrencia siguiente: cece metodo peer reed Seccién 4.7, Resolucion de recurencias 133 , consdérense los polinomios de grado 4) = ar +a acta ty WC) = ane +a (n— Dx acta Be Observe que v, (2)= x u, G, en donde w’(2) denota la derivada de u,(2) con respecto a x. Ahofa bien, 142) se puede reescribir en la forma Seccién 4.7 Resolucin de recurrencias 139 4,00) = 2° pa) aren glad == xfe"400)] Utilizando la xegla para calcular la derivada de un producto de funciones, ob- tenemos que la derivada de u,(3) con respecto ax es stare dtanertacarsce=n [each Por tanto, (1) =O, lo cual implica que 0, otras palabras, que > (7) =0 para todo n 2k. En ayn tain DPM actin RYE =O. Concuimos que f, = nr es también una solucién dela recurrenci. Se trata de una solucin verdaderamente nueva, en el sentido de que nose puede obtener se leecionando unas constantes adeciadas en la Ecuacion 48. Con mas generalidad, sla ravzr ene mulipiidad mn, entonces = t,t, 1, = 187 wut, Ir son todas ellassoluciones diferentes de la recurencia. La so iiién general es una combinacin lineal de estos términos,y de los tminos con que contribuyan las demés races del polinomiocaractristico, Para ret iy Tyr t, solas raices dstntas del polinomio caracteristico,y sus multipliidades son my, espectivament,entonces nL Done 5 la solucién general de la Feuacién 47. Una vez més, las constantes ¢, con Isis 'y0sjSm,~I tienen que determinarsea partir de lask condiciones inci les. Hay F de estas constantes ponque ©. m, =I (la suma de las multiplcidades de las diferentes races es igual al nimero total de raices). Por sencillez,rotulareros normalmente las constantes en Ia forma ¢¢y Cy en lugar de utilizar des indices. [Bjemplo 4.7.3. Considérese la recurrencia 1162 + en caso contrario El polinomio caracterisico es 22+ Sat + 8x t= ee -2F 140 Anslisin de Algortmos Capitulo 4 as rafes, por tanto, son r, = 1 (de multiplicidad m, dad m,=2), y la soluciGn general es haat HeQet ee Las condiciones iniciales'nos dan 2 (de mmltipli- q+ wy + q+ fy + Be Resolviendo estas ecuaciones, obtenemos : Some -2 4.7.3 Recurrencias no homogéneas a solucin de una recurrencia lineal con coeficientesconstantes se vuelve més dliffeil cuando la recurtencia no es homogénea, esto es, cuando la combinacion I real no es igual a cero. En particular, ya no es certo que toda combinacién lineal de las soluciones sea una solucién. Comenzamos por un caso sencillo. Considére- sea siguiente recurrencia: Ot Ri Ho Aig = ipl) 420) EI lado izquierdo es el mismo que antes, pero en el lado derecho tenemos spin), en donde ‘Obes una constante, y 9 pin) es un polinomio en n de grado d, Ejemplo 47.4. Considérese la recurrencia a En esto caso, b= 3 pl) = 1, un polinomio de grado 0. Un poco de astucia nos ‘permitirsreducir este ejemplo al caso homogéneo con el que ya estamos familia Hizados. Para ver esto, multiplicamos primero la recurrencia por 3, para obtener 3h = a Por tltimo, se resta la ecuacién 4.12 de la 4.11, para obtener a9) te Staa + Olay seccién 4.7 Resolucion de recurrencias que se puede resolver mediante el método de la Seecién 4.72. El polinomio carac- teristica es Bo Sr +6 = (e2Ile-3) {yor tanto todas las soluciones son de a forma, cQteege ay Sin embargo, ya noes cierto que una eleccién arbitraria de las constantes cy ¢, ena ecuacion 414 produzca una solucin de la recurrencta aun cuando no se ten- gan en cuenta las condiciones inicales.Y hay algo peor: incluso las soluciones bs. sleasf, = 2'y f, = 3, que desde luego son soluciones de la ecuacién 4.13, no son soluciénes de la recurrencia original dada por la ecuacign 4.11. 2Que esta pasan- 0 y por tanto que f(m) € @(2"). Para es- to, obsérvese que fm), el ntimero de movimientos de un anillo que se necesi- tan, no puede ciertamente ser negativo ni una constante, puesto que clara~ ‘mente t(n) = m. a Bjemplo 4.7.7. Considérese la recurrencla ten to se puede reescrbir en la forma t-Tasn ‘Secciin 4.7 Resolucién de recurrencias aque es de la forma de la Ecuacién 4.10 con b do 1. El polinomio caracteristico es entonces y piv) =, un polinomio de gra- (2 1F con rafes 2 (de multiplicdad 1) y 1 (de multiplicidad 2). Todas las soluciones son tentonces de la forma Got tel teal? 420) Siempre y cuando f, =O, y por tanto !, = 0 para todo 1, coneluimos inmediata- ‘mente que /, € 02. Se necesita un anilsis posterior para airmar que f, € ®(2. Si sustituimos la ecuacién 4.20 en la recurrencia original, obtenemos nat, HGP te, Fem HEM 4es +eN=D) = Q2ey-e)-emn e lo cual se obtiene directamente que 2c, ~¢, = Oy -c, = 1, independientemente de Ja condicion inicial. Esto implica que , = “1 yc, =-2A primera vista, nos sentimos decepcionades porque es ¢, quien resulta ser relevante para determinar el orden ‘eaacto def, segiin se ve en la ecuacién 4.2, y lo que hemos obtenido son precisa- mente las otras dos constantes, Sin embargo, estas constantes transforman la ecua- idn 4.20 en aan Siempre y cuando f, » Oy por tanto f, » 0 para todo n, la ecuacién 4.21 implica ‘que c, debe ser estrictamente postivo. Por tant, tenemos derecho a coneluir que {,€ @(2 sin necesidad de resolver expicitamente para c, Por supuesto,c, se pue de obtener ahora con facilidad a partir de la condicién inca, si se desea. Alterativamente, se pueden doterminar las tres constantes como funciones det, ‘preparando y resolviendo el oportuno sistema de ecuacioneslineales que seobtiene de Ia ecuacion 420 y del valor de, f,caloulados a partir de la recurrencia orginal. Llegads aqut, quiza plense que a efectos précticos no tiene sentido preocupar- se por las constantes: el orden exacto de f, siempre se puede leer directamente a ‘partir de la solucin general [No es asf! O quiza plense que las constantes obteni- ‘das por la técnica més sencilla de sustituirlasolucién general en larecurrencia ori ginal van a ser siempre suficientes para determinar su orden exacto. ;Tampoco e ‘sil Considere el ejemplo siguiente 4s 46 Analisis de Algorimos Capitulo 4 Bjemplo 47.8, Considérese la recurrencia Ae, [En primer lugar, se reescribe la recurrencia en la forma 2, {que es la forma de la ecuacion 4:10 con b = 2 p(n) = -1, un polinornio de grado 0, Por tanto el polinomio caractristico es (-x-2) con raices 4 y 2, ambas de multiplicidad 1. Todas las soluciones, por tanto son de la forma (At eee a2) (Quizé se sienta tentado de afirmar sin més que f, € Ot"), puesto que éste es claramente el término dominate de la ecuacién 4.22 Sitiene menos pris, quizé desee sustituir la ecuaciGn 4.22 en larecurrencia or ginal, para ver lo que sale 4, oF 20,2 Hea 40,2" 2 Por tanto, , = 1 independientemente dela condicién inicial. El conocimiento de «noes relevante directamente para determinar el orden exacto det, dado por la ecuacién 422. A diferencia del eemplo anterior, sin embargo, no se puede afirmar ‘nada coneluyente a partir del simple hecho de que c, sea positiva, Aun cuando hu: biéramos averiguado que c, era negativa, seguirlamos sin poder concluir nada acerca de ¢; de forma inmediata, porque esta vez no hay raz6n evidente que nos haga suponer que f, debe ser positive. Dado que ha fallado todo lo dems, nos vemos obligados a determina las cons- tantes. Podriamos preparar el sistema habitual de dos ecuaciones lineales con dos incOgnitas que se obtione a partir de la ecuaci6n 422 y de los valores de fy pe- ro {por qué vamos a despreciar el conocimiento que ya tenemos acerca de ¢,? Sa- Demos que f, = 4" + 2" Sustituyendo la condici6n inicalt, = 1 se tiene 1 = ¢, + 1 ¥¥ por tanto ¢, = 0. La conclusién es que la solucin exacta para esta recurrencia es simplemente f, = 2" y que ja afrmacin anterior, t, € O(n), es incorrectal Obsér _vese sin embargo que f, estaria en 0($)s se especificaré como condicién inicial al- ‘Secciin 4.7 Resolucién de recurrencias {gin valor mds grande de fy puesto que en general c, = fy I. Por otra parte, con tuna condicion inicial f, < 1,1, toma valores negativos que crecen con rapide2 ex- ‘ponencial. Este ejemplo ilusta la importancia dela condicién inical para algunas recurrencias, mientras que los ejemplos anteriores habian mostrado que el com- portamiento asintstico de muchas recurrencias no se ve afectado por la condicién Iniial, al menos cuando f, = 0 a Una generalizacin adicional del mismo tipo de argumento nos permite reso!- ver finalmente las recurrencias de la forma Af, iy Het a = DPM * BEPALM)+ (423) donde los b, son constantes distintas y los p(n) son polinomios en 1 de grado 2, Estas recurrencias se resuelven empleando el siguiente polinomio caracte- lag +0 acta AY bY an que contiene un factor correspondiente al lado izquierdo y un factor correspon- ddiente a cada termine del lado derecho, Una vez que se ha obtenido el polinomio caracteristico, la recurrencia se resuelve igual que antes. Bjemplo 4.7: Considérese la recurrencia 0 anno fsonsa? mene comare En primer lugar, se rescribe la recurrencia en la forma fy Btg =m 42s «que es la forma de la ecuacién 423 con b, = 1, (0) =m), = 2y psn) = 1 El grado dde pin) es d, = Ly el grado de p(n) esd, = 0, El polinomio caracteristico es (20-172), {que tiene las raices 1 y 2, ambas con multiplicidad 2. Todas las soluciones de la re- ccurrencia, por tanto, tienen Ia forma faq team 46,2" en" (424) A partir de esta ecuaci6n, concluimos que #, O(a) sin calcular 12s cons- tantes, pero necesitamos saber si ¢, > 0.0:no para determinar el orden exacto de 147 148. Andlisis de Algoritmos Capitulo 4 f,,Para hacer esto, se sustituye la ecuacién 4.24 en la recurrencia original, lo cual fos da N42 m (2c, -G)- ante Igualando los coeficientes de, se obtiene inmediatamente quec, = 1 y por tan- to, © O12. Las constantes ¢, yc se pueden leer con igual facilidad si se desea, a constante c, se puede obtener a partir de Ia Ecuacién 424, del valor de las de- ‘mas constantes y de la condlicién inicial Alternativamente, se pueden determina las cuatro constantes resalviendo cuatro ecuaciones lineales en cuatro incégnitas. Dado que se necesitan cuatro ‘ecuaciones y que sélo se tiene una ecuacion iicial, utilizamos la recurrencia pa- racalcular ios valores de los otros tees puntos: ‘gar al siguiente sistema: Gt at Bt ey Gt ays at By gt dy + By + Uae, Alresolver este sistema se obtiene tenemes finalmente an 2 nad 4.7.4 Cambios de variable ‘A veces es posible resolver recurrenctas mas complicadasefectuando un cambio Para traducila a una forma que sepamos resolver, susituimos 1 por 2. Esto se consigue introduciendo una nueva recurrencia f, definida como {=T(2), Esta Secelén 4.7 transformacién resulta itil porque /2 pasa a ser (2/1 nuestra recurrencia original en la que Tin) se define como una funcion de T(u/2) da lugar a una en la cual ¢esté definide como una funcién de f, que es precisa- mente el tipo de recurrencia que hemos aprendido a resolver: t= TQ) = ITO +2 Coane ‘Una vez reescritaen la forma cesta recurrencia tiene la forma de la Ecuacin 410, El polinomio caracterstco es (Ke-2) 'y por tanto todas las soluciones para ti son de la forma 1243! 46,2 Utilizamos ahora el hecho de que T(2)=f, y por tanto Tin)=",. cuando para obtener Ten =c3" +62" ‘cuando n es una potencia de 2, lo cual basta para concluir que T(n) €O(nin es una potencia de 2) Sin embargo, necesitamos mostrar que ¢, e estrctamente positivo antes de que podamos airmar algo acerca del orden exato de Tn) “Ahora estamos familiarizados con dos téenias para determinar las constantes, Para ejercitaras, vamos a aplicar las dos aesastuacion La aproximacion mas di- recta, que no siempre proporciona la informacion deseada,consite en susituic la solicin proporconada por la ecuaciGn 4.25 en la recurrenca original. Si tenemos en cuenta que (1/2)" =1/3 ,esto da lugara n= T(n)~37n/2) = (6n® +e) Hen)" +e,(0/2)) =-eyn/2 150 Anilisis de Algorimos Capitulo 4 {y por tanto ¢, = -2. Aun cuando no hemos abtenido el valor de c, que es la cons- fante mis relevante, estamos sin embargo en condiciones de afirmar que debe de ser estrctamente positiva, porque en caso contrario la ecuacién 4.25 implicaria erréneamente que T(x) es negativo. El hecho consistente en que Ten) €O(n'*'In es una potencia de 2) (426) queda por tanto demostrado, Por supuesto, ahora seria ficil obtener el valor de ¢, 8 partir de la Ecuacién 4.25, del hecho consistente en que c, = ~2,y de la condicién inicial 71) = 1, pero esto no es necesario si nos conformantos con resolver la recu- rmencia en notacin asintstica. Ademés, hemos aprendido que la ecuacién 426 es valida independientemente de la condicién inicial, siempre y cuando T(n) sea po- sitive. ‘El enfoque alternative consiste en preparar dos ecuaciones linales en las dos incdgnitas¢, y ¢, Se garantiza que products el valor de ambas constantes. Para esto necesitanos el valor de Ti) en dos puntos. Ya sabemos que T(1) = 1. Para ob- tener otro punto, utilizamos la propia recurrencia: T(2) = 3T(1) + 2 = 5. Sustitu- yendo n =1 y n= Zen la ecuacion 4.25, se tiene el sistema siguiente cuando 1s una potencia de 2, 1o cual desde luego es exactamente lo que se obte- nia en la Seccin 47.1 mediante suposiciones inteligentes. a jemplo 4.7.11. Considérese a recurrencia Tea) = AP 12) +02 len donde i es una potencia de dos, y =2. Procederemos igual que en e! ejemplo anterior: TR) maT) 42" 4448! Reescribimos esto en la forma de la ecuacion 4.10: 4124! Seceiin 4.7 Resolucién de recurencias 151 EI polinomio earacersico es (%-4)y por tanto todas ls souciones son de la forma fae d eet! En términos de Tn), esta ecuacién es equivalente Tin)= en? sea gn. (a2 ‘Al sustituir la Beuain 427 en la ecurencia original, tenemos WT) ~4T 0/2) =e" ¥ por tanto c= 1. Es decir, TON EOC? logrines una potenca de 2) independientomente de las condiciones iniciales (incluso si T(1) es negative). Bjemplo 4.7.12, Considérese la recurrencia Tn) = 24(0/2)+nIgn donde 1 es una potencia de 2, 1 22. Tal como antes, obtenemos, ha TQ=2TO) 427 #24, )4:2! Reeseribimos esto en la forma de la ecuaci6n 410: 2,2) El polinomio caracterisico es (3-2)(3-2)' = (3-2) por tanto todas las soluciones| som de la forma 1 G2! +ei2! ee2) fn términos de Tin), esta ecuacién equivale Tomes eqnignecynlg?n (428) 152. andn de grins Coptulo 4 A sustitur a ecucin 4.28 en recurrent orginal, se obtiene nlgn= Te) 27a /2)=(e,~6)n +26 ple, local implica que «gy ue 2, Iluego = 4, Porta T(1) COC log" nln es una potencia de 2), independientemente de as condiciones niciaes a Comentario: En los capitulos anteriores, la recurrencia dada para T(n) solo es aplicable cuando nes una potencia de 2, Por tanto, es inevitable que la solu- cin obtenida deba estar en notacién asintética condicional. En todos los ca Sos, sin embargo, es suficiente anadir la condicidn de que T(r) sea asintética ‘mente no decreciente para poder concluir que los resultados asintticos obte- ridos son aplicables incondicionalmente a todos los valores de 1 Esta cond- cid se sigue de la regla de uniformidad (Seecién 3.4) puesto que las funcio nes nie, nlogn y nlogen son saves. Bjemplo47.13, Ahora estamos preparados para resolver una de las recurrencias mas importantes a efectos algoritmicos. Esta recurrencia es especialmente stil pa- 1 el andlisis de algoritmos de divide y vencerds, como se vera en el Capitulo 7. Las constantes n,= 1, = 1, b= 2 k= Oson enteros, mientras que ces un nimero real estrctamente positive, Sea T: N-> R* una funcién asintéticamente no decre ciente tal que Tin=‘Tuniba en’ n>my (429) ‘cuando n/n, es una potencia exacta deb, esto es, cuando "Elbr4.b'A, DM Esta ver, el cambio de variable adecuado es n= by, Teng) = TW Ing) 8 mg) ath nb! Reescribimos esto en la forma de a Ecuacién 4.10. 1, = C0 'Y EI lado derecho es de la forma deseada, 2p() en donde p() = ces un polinomio constante (de grado 0) y a,=H. Por tanto, el polinomio caracteristico es (x—/(r—B). ‘cuyas raices son fy #. A partir de esto, resulta tentador (pero es falso en general! ‘condluit que todas las soluciones son de a forma Secclén 4.7, Resolucién de recurencias i rey 430 aa esrb eto en emlnot de Tn), bsdevese que i= oin/n) umd nde Infor adecndy por tana «(3 /n)% pan valves pontvoearitarioe de a Portas Tony nt fn a nt eg bent @3n para unas nuevas constantes adecuadas cy ¢, Para conocer estas constants, sus- fituimos la ecuacidn 4.31 en a reeurrenca original: ot Tn) = Tinto) enter 6,1, fm" +6, Vb) (4A Portanto,¢,=¢ / (1-1/2). Para expresar T(x) en notacin asinttica, necesitamos mantener solamente el término dominante de la ecuacién 431. Hay que conside- rar tres casos, dependiendo de si es menor, igual o mayor que 9 Si Oy &> log. (Por tant el término 1? domina la ecuacién 431. Coneluimos que Tin) € © (| (u)n) es una potencia de B). Pero mes una funcidn suave, y Tin) es asintticamente no decreciente por hipotess. Por tanto, Tin) € 8). 0) St > H entonces ¢,<0,y log, ! >: El hecho de que c, sea negativo implica que 8 positivo, porque en caso contraria la ecuacién 431 implicaria que T(1) es negativo, lo cual va a en contra de la especificacién Ti". Por tanto el té- sino cy" domina la ecuacién 4.31. Mas atin "es una funcin suave y Tu) cs eventualmente no decreciente. Por tanto T() & © (n"). (0 Si <8, sin embargo, tenemos problemas, porque fa férmula de c,implica sna division por cero! Lo que ha ido mal en este caso es que el polinomio caracte ristico tiene ana sola raiz de multiplicidad 2, en lugar de tener dos raices dis tintas, Por tanto, la ecuacién 4.30 no proporciona la solucién general de la recu- ‘rencia, En este caso, lasolucién general es mis bien (09) +O) En términos de T(r), esto equivale a Ten) = cn + et’ logy M5) 432) 153 154 Andlisis de Algoritmos Capitulo 4 para unas constantesc,¥¢, adecuadas. Al sustituir esto en la recurrenca orginal, ‘nuestra manipulacin habitual produce une, » csorprendentemente sencillo. Por tanto, cn log, m es el término daminante de Ia ecuacién 4.32 porque al principio de este ejeeicio se suponia que c era estrictamente postiva. Como nes suave Y Ti) es asintéticamenteno decreciente,coneluimos que Tin) & (a log) Resumiendo, nt) sitet Ten)= etn togn) sith! acre’) sit rey El Problema 4.44 da una generalizacion de este ejemplo. a ‘Comentario: En el andlisis de algoritmos, suele ocurrr que las recurrencias se de- ivan en forma de desigualdades. Por ejemplo, se puede obtener Tos Tn [ bret > Mm ‘en donde n/n es tna potencia exacta deb, en lugar de la ecuacién 4.29. :Qué se puede decir acerca del comportamiento asintotica de esta recurrencia? Obsérvese fen primer lugar que no se dispone de informacion suficiente para determinar el ‘orden exacto de Tin), porque solamente se nos da una cota superior de su valor (Por lo que nosotros sabemos, podria ser Tn) = 1 para todo m) En este caso, lo me- jor que podemos hacer es analizar la recurrencia en términos de la notacién O. Pa: ‘a eto, introduciremos una recurrencia auxiliar modelada a partir del original, pe 10 definida en términos de una ecuacién (no de una inecuacién). En este cas: = {Tim sin fw-{ %) Cini bysentsin/ nex ptencia de, n> n Esta nueva recurrencia se encuentra en el dmbito del ejemplo 47.13, salvo que no tenemos evidencia de que Fim sea asintéticamente no decreciente, Por tanto. laecuacidn 4.33 es valida para #in, siempre y cuando tilicemos la notacién asin ttica condicional para restringle n/n de tal modo que sea una potencia de b. Aho ra bien, es facil probar por induccién matematica que T(n) = F(a) para todo 2 tal que n/n, sea una potencia de b. Ahora bien, esté claro que si fo) € 4H) | PoD) ¥y stv) fe) para todo 1 tal que P(n) sea valido, entonces s(n) € Ott) | PO). Por tanto, nuestra conclusién acerca del comportamiento asintético condicional dk Seccién 4.7 Resolucién de recurrencias (a es valida también para Tn), siempre y cuando susttuyamos la © por una O Finalmente, siempre que sepamos que T(x) es asintéticamente no decreiente,po- dlemosinvocar la suavidad dels funciones implicadas para concluir que la ecs- cin 433 es vida incondicionalmente para T(n), siempre y cuando una vez mis sustituyamos © por O. La solucin de la recurrencia es, po tanto: Om) sire! Tin) ={00n'logn) siv=¥* lon") straw Estudliaremos otras recurrencias que implican desigualdades en la Seccidn 47.6, Hasta e] momento, los cambios de variable que hemos efectuado han sido to- ddos ellos de naturaleza logaritmica. En algunas ocasiones resultan titiles otros cambios de variable muy distintos. llustraremas esto con un ejemplo que provie- ne del algoritmo de divide y vencerés aplicado a la multiplicacién de enteros muy grandes (véase la Seccién 7.1). [Bjemplo 47.14. Considérese una funcién asntéticamente no decreciente T(t) al que Ton) s Thn/2b + 70/20 + TO +0n/20 + on a9) ca todo mn suficientemente grande, donde ¢ es alguna constante real y positiva ‘Tal como se explicaba en el comentario que sigue al ejemplo anterior, tenemos que conformarnos con analizar la recurrencia en términos de la notacién O, y no de la notacion 0. Sea n, ® 1 suficientemente grande para que Tim) 2 T(n) para todo m 2 11> 1o/2, y para que la ecuacin 4:34 sea vilida para todo » > ny. Considérese cual uier m > np Obsérvese primero que Ly/2| stu/2l<1+[ns/21 lo cual implica que Tin/2bs Tn/2d8 TA +Tn/2d Por tanto, la ecuaci6n 434 da lugar a Too < 37 +1n/2D-+en ‘Aory hacenos un cambio de vatible intodciendo una nueva funcin Fe ue Tim TOr + para todo n Constirese una vee mde caller > ty 156 Anilice de Algortmat Capitulo 4 Fon) =T(n+2)<3TU + (n+2)/2)) Hel 42) <37Q+{n/2+2en (porque n-+2«2n) = 3f([n/2)+2en En particular, Tn) s37(n/2)+ de n> cuando n/n, es una potencia de 2, en donde d = 2c. Este es un caso especial de Ia zecurrencia que se analizaba en el comentario que sigue al jempio 47.13, con £=3,b=2y k= 1, Dado que / <4, obtenemos que P(n) © O(n). Finalmente, ttilizaremos por diltima vez el hecho consistente en que T(x) es eventualmente ro decreciente:T(v) « T(x +2) = T(n) para todo n suficientemente grande. Por tanto, toda cota superior asntotica de T(x) es aplicableigualmente a T(n), lo cual coneluye la demostracin de que T(x) € O(#*?) a 4.7.5 Transformaciones de intervalo Cuando se hace un cambio de variable, se transforma el dominio de la recu- rrencia. En lugar de hacer esto, puede resultar til transformar el intervalo para ‘obtener una recurrencia que tenga una forma que sepamos resolver. Ambas trans- formaciones pueden utilizarse ala vez en algunas ocasiones. Daremos un ejemplo de este enfoque. Ejemplo 4.7.15. Considérese la siguiente recurrencia, que define T(n) cuando ‘es una potencia de 2 3 sine Tu)= (0 in n/2) exes ona El primer paso es un cambio de variable. Supongamos que t, denota T(2): aT) =2772") 78, A primera vista, ninguna de las técnicas vistas hasta el momento parece ser apli- cable a esta recurrencia, puesto que no es lineal, y ademds el coeficiente 2’ no es constante. Para transforma el intervalo (rango), cfeamos otra recurrencia més em- pleando u, para denotar gt; ales, =1+2ler,, 1425 Seccién 4.7 Resolucién de recurrencias 157 ‘Ahora, una vez reescrita en la forma 4-24, Ja recurrencia se ajusta a la EcuaciGn 4.10. El polinomio caracteristco es (eye ¥ por tanto todas las soluciones son de la forma wag? tel sail Sustituyendo esta solucién en la recurrencia para 1, se obtiene fu -2u,5 262 40, 40/-262" +6, +e-) = 026-6) 61 y por tanto ¢, =-Ly ¢ = 2c, =-2. En consecuencia, la solucién general para ut, si na se tiene en cuenta la condicidn inicial, es u, = ¢,2' ~i—2. Esto nos da la soku- cién general para fy para Ti). pate a n TO) = fyy = 2" ilizamos la condicin inicial T(1) = 1/3 para determinar cj: T(I) = 2" /4=1/3 implica que ¢, = Ig(4/3) = 2—Ig 3. La solucion finales, por tanto: 2 na" a Ta) 4.7.6 Recurrencias asintéticas ‘Cuando surgen recurrencias en el andlisis de algoritmos, es freeuente que no sean tan “elegantes" como a sine 0 -Lesens2y stn sine 35 para unas constantes reales y positivas a y bespecificas, En su lugar, lo normal es tener que enfrentarse con algo menos preciso, tal como Tin) = 4T(n+2)+ fl) 436) 158 _Andlisis de Algoritmos Capitulo 4 cuando m es suficientemente grande, y en donde lo Gnico que sabemos de (1) then el orden exacto de 1, y no sabemos nada acerca de la condicign inical que define T() salvo que es positiva para todo 1. Este tipo de ecuacién se denomina recurrencia asinttice. Afortunadamente, la solucién asinttica de una recurrencia tal como la ecuacin 4.36 es practicamente siempre idéntica a la forma de la ecua- cin 4.35, més sencilla. La técnica general para resolver una recurrencia asinttica consiste en “emparedar” Ia funcidn que define entze dos recurrencias del tipo més sencillo. Cuando las dos recurrencias mas sencilla tienen la misma solucién asin- {6tica, la recurrenca asintotica debe de tener tambien la misma soluci6n. Iustra- remos esto con nuestro ejemplo, Para las constantes reales y positivas ay b se define la recurrencia sinel TO" Var. cne2)+bn sin>] Las técnicas que ya nos resultan familiares se aplican para dar T, (0) = (a+ 5)n? bn siempre y cuando m sea una potencia de 2, Dado que mes una funcién suave y gus T,s(0)- es no decreciente (fil de probar por induceién matematica),se sigue que T0204") independientemente de los valores (positives) de a y b. ie hecho, n. hay necesidad de resolver explictamente la recurrencia porque el resultado del Ejemplo 4713 se aplica directamente una vez. que se ha establecido que T.5() cesno decreciente, Para alcanzar nuestra meta, basta demostrar Ta existencla de cuatro constante= reales y positivas r,s, wy tales que Tt) sT(n)sT,,(0) “ar para todo n » 1. Dado que tanto T(x) como T, (1s) estén en el orden exacto de se seguir que también T(x) € @(r'). Un benelico interesante de este enfoque ¢= ue T,(n) es no decreciente para cualesquiera valores positives Sjados para ay Jo cual hace posible aplicar la regia de suavidad. Por otra parte, esta regla no s. podria haber invocado para simplificar directamente el andlisis de T() resin endo nuestra atenci6n a caso en el cual n es una potencia de 2, porque la ecua cidn 4.36 no ofrece informacion suficiente para asegurar que Tin) sea no decre ciente. Todavia queda por probar la existencia de r,s, uy v. Para esto, obsérvese que T, (1) = dT,,(2) para todo, y que T,,(n) n, Seleccionamos r= min(T(n)/T, (mil sn- n, arbitrario y supongamos por la hipdtesis de induccién que T.,(m)-s Tm) = .,,(m) para todo mr para todo {ie0 (Eso es relevante part el anlisis del tiempo requerido para una bassueds bina ia; Wéase la Secciin 12.4) Problema 4.11 Considées Ia siguiente recumencia pata = ‘Tees ion encanocounee sie I nice de a cus corcteritica par resolver esta recurtenca condo 1 sot tina poten de 2. Demostar por nduccon 162 _ Andis de Algoritmos smatenstia gue (1) es una farsa aint Camente no decent. Uslice la ep de Suaviad para mostrar que ni COXlogn Por imo conuyaque KnCOKlog®) en conde et dado po a ecuacn 42. (Se ‘puede conc apart de lnecuain 42, que in) 8 log)? Por qué x6 porque no? Problema 4.12, Demostrar que lt ase de Inicializacion en Ia ondenacion por cats (Geceldn 272) require un tiempo en O(n +) Problems 4.13. Vimos en la Seccién 424 que la bsqueds binaria puede haar in ob eto dentro de un vector ordenado de tamaso ren un tempo que est en Oflog »). Demos trar queen el cago peor se requere un tem po que esta en Q(log 1). Por otra pate, us eel tempo en el cso mejor? Problema 414. {Cuinto tiempo necesita tuna ordenacin por inserion para ordenar elementos distintos en el caso mejor? Indique su respuesta en notacién antic. Problema 415. Se vio en ln Sscrén 4.4 que pra el anilsis del caso peor en la ordenacin porinserciin exist un ben barémeto, que es al ndmero de veces ue se comprieb la con dicion en of bucke mientras. Mostrar que ete ‘barémetro también resulta adecuado silo que roe condemn es el comportaiento del algo ritmo ene aso peor (ves el problems 14). Problema 4.16. Demostrar que el algort- smo de Fucldes tiene su peo reniiento po "a enfradas de cualquier tamato dado al al- cular el maxima comin divisor de dos nic ‘merosconsccutivos dela serie de Fibonacc Problema 417. Dar un algoritmo no r= cursivo para resolver ol problema de las To- tres de Hani (vise la Secciin 44) (Se con- sera hacer trampa limitarse a reesribir el, _ Capitulo 4 algoriteme recursive empleando tna pil ex plicta para simular las lamadas recursvas! Problema 4.18. Demostrar que el probe rma dels Torres de Hanol con aillos nose puede resolver con menos de 21 movi Imlentos de los anos Problema 419, Dar un procedimiento 3: _milaral algoritma contr de a Seccim 4p ‘a incementar un contador binario de mits ota vez, sin embango, el contador debe que dar leno de unos en lgae de volver a ceo cuando se produzca un desbordamiento, En otras palabra, sel valor actual representado pore! contador e ,enfonces ef nuevo valor después de una llamada a su algoritmo debe de sermin(o +1, 2-1), Dar el anlisis amor 2ado de s algoritmo, Debe requeri un te po amortzado constant pars cada lama, Problema 420. Demostar la ecuacon 46 de laSeccién 471 por induccion matemstica cuando w es una potencia de 2. Demostst también por indwceidn matemstica que Is funcidn Ton que se define en la ecuacin 4 sno decreiente (para todo, no solamente cuando » es una potencia de 2), Problema 421. Considérense dos cont tants reales y positivas@y b. Utilize supo- sicones inteligentee para resolver la ree srencia siguiente cuando n> 1. ate mrcoronnc Se admite un término de la forma Zs 1! en Ja soliciin. Demuestre sa respuesta por i ducckin matemitica. Expres Hr) en nol cién @ en a forma mis sencilla posible, Cua esol valor de lim, 1) / en fare cin de ay 8 (Nota: Zn il =~ I, en don ee = 27IRDSI... In base de los logar seccion 4.8 ‘mos naturales) Aunque hemos determinado comportamienta asintético de esta recur rreneia en el problema 131, empleando una ‘nducelén constrict, obsérvese que esta vez hemos obtenido una formula mds prec- sa para 4) En partculs, hemos obtenido el limite de (n\n! euanda n tende a infnito Recuerde que ete problema es relevante pa- re] andlisis del algoritmo recursivo para calcula doterminantes, Problema 4.22, Resolver la recurrencn del sjemplo 472 por suposicones intligentes ‘Resist a tentacin de “hacer tampa” miran- {ola solucién antes de resolver el problema! Problema 423, Demostrar que la ecus- sd6n 47 (Seccin 472) soo tiene solucones ela forma siempre y cuando las races fy «vf del pO linomio caractristica sean distin Problema 4.24. Completa ia solucion del semplo 4727 determinanda el valor de , en fancton det Problema 425. Compleat la solucién del sjemplo 47.11 determinando el valor dec, m ta que n/n, sea na potencia deb. Problema 429, Resolver exactamente la siguiente reeurrencia exéctamente sa-Donel Exprese su respuesta del modo més sencilla posible empleando la notaciin @. Problema 430. Resolver exacamente la siguiente recurrenca, alr ttle sineat02 eee! Expese su respuesta del modo mds senillo posible empleanda Ia notacién €. Problema 4.31. Considere la siguiente re fo... tewwcomte Demestrar que es f= 2" Sinn /4), 99 por inducion matemdtica sino utizando la ffenica de la ecuain crac Problema 4.32. Resolver exactament la siguiente recurrencia. sine0.203 Exprese su respuesta del modo més sencilla posible empleando la notacin 8. Problema 433, Resolver exactamente la sigulenterecurrenci, 164 Anite de Algoritmos ° sinsOonet Exprese su respuesta del modo mis sncilo posible empleando la nlacion@. Problems 434, Resolver exactamente Ia siguiente recomend ¢ sin-Oon=1 tof LTm-DsTin-2)+e encase contin Exprese su respuesta del modo mis sencillo posible empleande lanotacién @ ya az6n du rea =(I+-V5)/2. Obsérvese que esta es Ta recurencia 41 def Secon 423M) =, To cal representa el tempo inverdo por una Namada a Fir) sino se cuentan las sumas Problema 435, Resolver exactamente la siguiente recurrenciz: a finsOon=t Tone [ [Tin-1)4Tie=2i4cr encase conte Expres su respuesta del modo mas sencilla posible empleando la notacién @ y la razén aurea @ = (1+ V5)/2. Obsérvese que esto fs la Recurrencia 4.1 de la Seccién 423 si 1a) = cr, lo cual representa el iempo inves tid por’ una Hamada a Fibetn) si no se ‘uentan las suas con coste unitaio. Com pare su respuesta con la del Problema 4.34, fn el cual ge contaban las sumas eon coste Problema 436, Resolver exacamente as sient recurrenci, iendo una potencia de, Tn=firr2e ecocourlo Capitulo 4 Exprese su respuesta del modo més sencillo posible empleanda Is notacién 6. Problema 437. Resolver eactamente las. alent recurenca,sendo muna potenca de? A anal [27on/2+1en encasn contaio [Exprese su respuesta del modo mas sencilo posible empleando la notacin 8. Problema 438. Resolver exactamente la slguente ecurrenci,siendo 1 una potencis ae2 TH fore ticle Problema 439. Resolver exadamente Ia siguiente recurenca,siendo m de la forma tw ined "Ter encas cotati Exprese su respuesta del modo ms sencillo posible empleando la notacin @. Problema 440, Resolver exactamente Ia sigente recurrncia ioe FucpetPectiee ema xprecesu respuesta del modo mis senilo posible empleando la notacién @. Problema 4.41, Resolver exactamente la si suleterecurrenda, slendon una potenia de 2. Problema 442. Resolver exactamente la sigulenterecurrencia, fore smeancoso Problema 443. Resolver exactamente I siguiente ecurrencia en funcion de las con ticionesinciales ay b fe ino (eTon-n/Tin=2) ence eee Problema 444. Vimos en el ejemplo 447.13 a solucion de una recurrencia impor- fante, que es especialmente tl para el ané- lisis de algortmos tipo divide y vencerss En algunos caso, sin embargo, se precisa un resultado mis general, y la téenica de la ‘cuacién caraterisica no siempre es apica Ble. Sean m) 2 Ty b> 2 dos enters, sean @ yb constanes reales y psitivas, Deinimos: X={neX]GleN) bra nb Sea FX — E° una func abit. Se define ln fancion T: X— 2 mediante la re To larinsayesion HEXEN, Sea p= log, a. Resulta que la forma més sonal de expresar Tn) en notacionasintt- Problemas cx depend deren eve) tee spe nemo sto ie ‘ict coiaoalen ope sac extbenowar ae 1 Sischac i ca ne impor tee cc ela deen eer elated etc ra Sl Sorc rove Sasn109 2. Set caer cone mal ea inet pie noes jour sift <00" Hoga") rene} OMMlogeog en fre eget jornigin shade gu Laterceraaltemativaincuyes fn) £640") al seleccomare= 1. 3. Como caso especial de la primera alterna iva, Te) =e) siempre que fo) E OUT) pa ra alguna constate real postvar< p. 4 La primera alternativa se puede general ar para admit casos tales como fo) © OC (og nagog 9"; también se obtene Tin) © @U¥) a fod © Gtr nem donde gin) es no eet Ercan converge 5a lima altematva se puede generar amin cso tales como ‘Sumy CO{0" ton) oie (nye Powe) tambien eobione Tene 04f() si ftr1cOh sila) > ofin/P para alguna constantek> 1 para todos lor X suticentemente grandes, 165 Capitulo 4 4.9 REFERENCIAS Y TEXTOS MAS AVANZADOS El nombre Torres de Hanoi corresponde a un jugucte inventado por el matemétieo francés ‘Edouard Lucas en 1883: véase Gardner (1958), Buneman y Levy (1980) y Deweiney (1984) dan soluciones para el problema 4.17. El andisis amortizado ha sido popularizado por Tarjan (1985) Los principales aspectos matemticos del anilisis de algoritmos se pueden hallar en Greene y Knuth (1981). En Purdom y Brown (1985) y Rawlins (1992) se hallaré una buena cantidad de téc- ricas para el andlisis de aigositmos. Se explican varias técnicas para resolver recurrencias,incluyendo la ecuacién caracteristica y el cambio de variable, en Lueker (1980) Para un tratamiento matemético més rigurosos, véase Knuth (1968) 0 bien Purdom y Brown (1985). El aticulo de Bentley, Haken y Saxe (1980) es es pecialmente relevante para las recurrencias que surgen del anslisis de algoritmos de divide y ‘venceris (véase el Capitulo 7). El problema 4.44 procede parcialmente de Verma (1994), que pre- senta otros resultados generales. Capitulo Estructuras de datos El uso de unas estructuras de datos bien escogidas suele ser un factor crucial en el disco de algoritmos eficientes. Sin embargo, este libro no pretende ser un manual de estructuras de datos. Suponemos que el lector ya posee buenos conocimientos pricticos de nociones tales como las matrices, los registros y los distintos tipos de datos estructurados que se obtienen empleando punteros. También ssponemos que los conceptos matematicos de gratos dirigidos y no dirigidos le resultan razo- nablemente familiares, y que el lector conoce la forma de representar eficiente- mente estos objetos en una computadora, El capitulo comienza con tna breve revisidn de los aspectos mas importantes de estas estructuras clementales de datos. La revision incluye un resumen de sus propiedades esenciales desde el punto de visla de la algoritmia. Por esta raz6n, fambien los lectores que conozcan bien el material basico harian bien en estudiar brevemente las primeras secciones. Las tres iltimas secciones del capitulo presen- tan las nociones menos elementales de manticlos (heaps) y particones (cnjuntas dlisjuntos). Estas estructuras, que se han elegido porque se emplearén en capitulos subsiguientes,ofrecen también ejemplos interesantes en el andisis de algoritmos. Es probable que casi todos los lectoresnecesiten leer con bastante dotalle las sec- ciones que conciernen a estas estructuras de datos menos familiares. 5.1 MATRICES (ARRAYS)', PILAS Y COLAS ‘Una matriz es una estructura de datos que consta de un ntimero fijo de items del mismo tipo. (Hablaremos de dems o de elementos indistintamente.) Ea una maquic na, estos elementos suclen almacenarse en posiciones contiguas de almacena- miento. En una matriz monodimensional, el aceso a todo item particular se efec- tii especificando un solo subindice o indice. Por ejemplo, podriamos declarar una rmatriz monodimensional de enteros en la forma siguiente: tab: matrial1.50] de enteros 168. Estructuras de datos Capitulo 5 ‘Aqui, ah es una matriz de 50 enteros indexados (indiantas) desde 1 hasta 50; tabi} se retiere al primer elemento de la matciz,y la50] alude a ultimo. Fs ne tural pensar que los elementos estén diepusstos de izquierda a derecha, asi que podemos también refererimos a bil] como el elemento dela izquierda, y asi su- cesivamente. Con frecuencia, dejaremos sin especificar el tipo de os elementos de Ja matriz cuando el contexto lo haga evidente. Desde el punto de vista que nos interesa en este libro, la propiedad esencial de ‘una matriz es que podemos caleular la direccién de cualquier elemento dado en un tiempo constante. Por ejemplo, si sabemos que la matriz anterior ‘ah comicnza en Ia dieccin 5000, y que ls variables enteras ocupan 4 yes de almacenamiento ca- dla una, entonces la direccién del elemento cuyo indice es k esta dada claramente por 4996 + 4k: Aun cuando pensemas que meroce la pena comprobar gue k'se en- ‘cuentra realmente entre I y 30, el tiempo necesario para calcular la direccin sigue festando acotado por una constante, Se sigue que el tiempo necesario para leer el valor de un solo elemento, o para cambiar ese valor, se encuentra en O(1); en otras palabras, podlemos tratar estas operaciones como si fuesen elementales. Por otra pare, toda operacion que implique a todos los elementos de una matriz tenders a requerir més tiempo a medida que crezca el tamafio de la matriz. Sepor- .gamos que nos estamos enfrentando a una matriz de tamado variable esto es, la rmatriz consta de 1 elementos. Entonces una operacin tal como dar valor inical a todos los elementos, 0 buscar el mayor elemento, va a requerir normalmente un 'empo que sera proporcional al ndmero de elementos que haya que examina. En ‘otras palabras, esas operaciones requieren un tiempo que esté en Ot. Las matrices monodimensionales permiten implementar eficientemente la estructura de datos mada pila. Aqui los elementos se afiaden a la estructura y después se sacan de ella, de tal forma que el ultimo en llegar es el primero en salir 2 La situaciOn se puede representar utilizando una matriz llamada pila, di- amos, cuyo indice vaya desde uno hasta el tamaio maximo que requierala pila, Yy cuyas elementos sean del tipo correct, junto con un contador. Para dejar vacia Ia pila se da al contador el valor cero; para afadie un elemento la pila, se incre- rmenta el contador, y entonces se escribe en pilalcontador ese elemento; para cli rminar un elemento, se lee el valor de pilacontadorl y se decrementa el contador. Se pueden aftadir comprobaciones para asegurar que no se pongan en la pila més elementos que los reservados, y que no se eliminen elementos de una pila vacta la adicion de elementos a una pila suele denominarse operacién apilar pus, mientras que la liminacidn de elementos se denomina desapilar op. La estructura de datos denominada cola también se puede implementar de for ‘ma bastante eficiente en una matriz monodimensional. Aqui los elementos se aia- den y se eliminan de tal manera que el primero en entrar es el primero en salir, vvéase el problema 5.2. La adicién de un elemento se denomina una operacién de poner “enqueue”, mientras que la eliminacign de un elemento se llama quitar “ ‘quewe”®. Tanto para plas como para colas, una desventaja del uso de matrices pa 1 la implementacign es que normalmente hay que reservar espacio al prineipio ppara ef maximo niimero de elementos que se preves; sien alguna ocasién el es Seccin 5.1 Matrices (Array) ils colas pacio no resultara suficiente, es dificil reservar ms, mientras que si se reserva de ‘masiado espacio, es un desperdicio. Los elementos de una matriz pueden ser de cualquier tipo de longitud fj: to.es para que la direccién de cualquier elemento se pueda calcular con faclidad. El indice es cas siempre un entero. Sin embargo, ots tipos de los denominados sescalares» se pueden emplear tambien, Por ejemplo: Ietiab: mateia\‘./2'| de valor 5 una posible forma cle declarar 26 valores, indexados mediante las letras de la “a” hasta Ia 7’. No se permite indexar una matriz empleando nimeros reales, ni tampoco se permite indexar una matriz empleendo estructuras tales como las ca- cdenaso los conjuntos, Si se permite esta posibilidad, entonces ya no se puede con- Siderar como operacién elemental el acceso a un elemento de la matriz. Sin em- Dargo, existe una estructura de datos mas genera, lnmada faba aociatie, que se describe en ls Seccién 56, si permit tales indices. Los ejemplos dads hasta cl momento implican todos ellos estucturas unidimen- sionales esto es, matrices a cuyos elementos se accede empleando un solo fndice. Se pucden declaar matrices con cos o mas indices de forma similar Por ejemplo: matri: mate 1.20, 1.20] de comple es una posibie forma de declarar una matriz que contiene 400 elementos del tipo complejo. Una referencia a cualquier elemento concrete, tal como mnatv:{5, 7 requiere ahora dos indices. Lo esencial sigue siendo, sin embargo, que es posible caleular la direcciSn de cualquier elemento dado en un tiempo constante, asi que Se puede tomar la lectura o modificacion de su valor como operacién elemental Evidentemente, si las dos dimensiones de una matrz bidimensional dependen de algain parémetro n, tal como en el caso de wna matriz 111, entonees las opera- ‘dones tales como dar valor inicial a todos los elementos de la matrz, o buscar el clemento mayor, rajuieren ahora un tiempo que ests en OC) Dijimos anteriormente que el tiempo necesario para dar wt oor incl a totes Jos elementos de una lista de tamafo 1 esta en O(n). Supongamos, sin embargo, que no es preciso dar valor inicial a todos los valores, sino que lo unico que se pre. isa saber es si see ha dado o no valor inicial,y en tal caso obtener st valor ies tamos dispuestos a emplear bastante mas espacio, la tecnica denominada inicia- isi virtual nos permite evitar el tempo que se invierte en dar valor a todas las en- tradas de alist. Supongamas que In matriz que hay que inicinr virtualmente os Til.u. Necesitamos también dos listas auliares de enteros del mismo amano que Ty un contador entero. Sean i. y 1.7] estas dos listas auxiliares, y sea ‘rel contador. Al comenzar, damos simplemente a cir el valor 0, y dejamos as lis tasa, by T con aquellos valores que pudieran contener En lo sucesivo, ctr nos dice cuantos elementos de T han recibido valor inicial mientras que los valores desde a[1] hasta alctr nos dicen cudles son esos elemen- 169 170. Estructoras de datos Capitulo 5 Ce ‘TT TT + Figura. Una se Inia vrsualmense tos: all] sefiaa el elemento que se inicialice en primer lugar, a2} indica el se- ‘gundo en ser inicializado, y asi sucesivamente; véase la figura 5.1, en la cual se han inicializado tres elementos de la matriz T. Ademés, si Ti} ha sido el ele- ‘mento iniclalizado en k-ésimo lugar, entonces bj] = k. De esta manera, los valo- res dea apuntana T y os valores de b apuntan a, tal como se muestra en la fi- gure, Para determinar si se ha asignado un valor a Ti], comprobamos primero si = Did «ctr. Si no se cumple, podemos asegurar que Tlf no ha sido iniciado. Si se ‘cumple, no estamos seguros de si TI] ha sido iniclalizado o no: quiza sea un acct dente que Df] tenga un valor plausible. Sin embargo, si realmente se ha asignado un valor a.T[i,entonces ha sido el bf-ésimo elemento en ser iniciado. Podemos. ‘comprobar esto estudiando si ai] = i. Dado que los ctr primeros valores de la lista a han sido iniciados con certeza, y que 1 = bf] z ctr no puede ser un acciden- te que ail] = i, ast que esta comprobacion es concluyente!si resulta afirmativa, tentonces Ti] ha sido iniiado, y sino, no. Para asignar un valor a TIi] por primera vez, se incrementa el contador ctr, se dda aajetr el valor se daa Bf] el valor ct, y se carga el valor necesario en Thi. Ea. las sucesivas asignaciones a T[i, por supuesto, no es necesario nada de esto. EL problema 53 le invita a rellenar Ios detalles E espacio adicional requerido por es ta técnica es un maltiplo constante del tamano de T. 5.2 REGISTROS Y PUNTEROS (APUNTADORES)* Del mismo modo que una matri tiene un nsimero fijo de elementos del mismo tipo, un registro es una estructura de datos que consta de un nimero fijo de elementos, que suelen llamarse campos en este contexto, y que son de tipos post blemente distintos. Por ejemplo, si la informacion acerca de una persona que nos interesa consta de nombre, edad, peso y sexo, quiz necesitemos utilizar una es- tructura de datos de la forma siguiente: Secclén 5.3 5.3 Listas 17 tipo persona = registro nombre: cadena cad :entero peso: real ‘ron : booleano Entonces, si Juan es una variable de est tipo, utlizaremos la notacgn de punto ppara hacer alusion a los campos; por ejemplo, Juan.nombre es una cadena y Juar.edad es un entero. Las matrices pueden aparecer como elementos de un registro, y los registros se pueden almacenar en matrices. Por ejemplo, si declaramos, clase: matsiz[.50] de persona tentonces la matriz clase contiene 50 registros. Los atributos del séptimo ele- ‘mento de la clase se denotan en la forma clase(7| nombre, clase{7|.edad y asi su- cesivamente. Tal como sucede con las listas, dado que los registros contienen tan solo elementos de Iongitud fija, la direccién de todo elemento particular se puede calcular en un tiempo constante, ast que las consultas @ modifiea- ciones del valor de un campo se pueden considerar como operaciones cle- mentales. Hay muchos lenguajes de programacién que permiten crear y destrulr registros ddindmicamente. (Algunos lenguajes permiten hacer esto con las matrices, peo son ‘menos frecuentes.) sta es una de las razones por las cuales se suelen utilizar los rTegistros en conjuncion con los punteros. Una declaracion como tipo jefe = tpersona dice que jefe es un puntero de un registro cuyo tipo es persona, Es posible crear di ‘ndmicamente uno de estos registros mediante una sentencia tal como Jefe crea persona Ahora jt (obstavese que aqut la fecha sigue al nombre) significa «el registro al que apunta jes. Para hacer alusia alos campos de este registro, ulizatemos jefe nomire, jf dad y ast sucesivamente. Si un puntero tiene el valor especial ‘ul “nil” entonces no apunta a ningun registro Listas {Una lista es una coleccin de elementos de informacién dispuestos en un cierto or- den. A diferencia de as matrices y registros, el nimero de elementos de la lista no ‘suele estar ijado ni suele estar limitado por antiipado, La estructura de datos co- rrespondiente deberla de permitirnos determina, por ejemplo, cui es el primer 172. tstructuras de datos Capitulo § elemento de la estructura, cules el slkimo, cudl es el predecesor y el sucesor (si ‘existen) de cualquier elemento dado. En una méquin, el espacio correspondiente ‘cualquier elemento de informacion dado suele denominarse un nodo. Ademés de lainformacion en cuestién, un nodo puede contener uno o més punteros. Estas es- tructuras suelen representarse graficamente mediante cuadros y lechas, tal como en la figura 5.2 La informacién asociada a cada nodo se muestra dentro del cua- dro correspondiente, y las flechas muestran los enlaces que van desde el nado ast Figure 2, Une tia Las listas admiten un cierto ndmero de operaciones: quiré sea necesario inser- tar un nodo adicional, borrar un nodo, coplar una lista, contar el niimero de ele rmentos que contienen, y asf sucesivamente. Las distintas implementaciones de computadora que se suelen utilizar difieren en la cantidad de espacio requerido, y en la faclidad para efectuar ciertas operaciones. Aqui nos contentaremos con ‘mencionar las téenicas mas conocidas. Implementada en forma de matriz mediante la declaracion po lista = registro contador 0longmax valor: matriz[tlongmax] de informacién los items de una lista ocupan las posiciones que van desde vlor(1} hasta valoricon tador,y el orden de los elementos es el mismo que el orden de sus indices dentro de Ia matriz. Empleando esta implementacién, se puede haar rapidamente los elementos primero y ultimo de la lista, asi como también el predecesor y el suce- sor de cualquier elemento dado. Por otra parte, como se vio en la Seccin 5.1, in- sertar un nuevo elemento 0 borar uno de los elementos existentes equiere un ni- mero de operaciones que, en el caso peor, esté en el orden del tama actual de la lista, Se indicaba alli, sin embargo, que esta implementacién es especialmente ef ciente para una importante estructura denominada «pila»; y una pila se puede considerar como una clase de lista en la cual laadicién y borrado de elementos se permiten solamente en un extremo indicado de la lista A pesar de ello, esta im- plementacién de una pila puede presentar la grave desventaja de que todo el al ‘acenamiento precisado potencialmente esté eservado a lo largo de toda la vida del programa, Por otra parte, si se emplean punteros para implementar una estructura de lista, entonces los nodos suelen ser registros de una forma similar a la si- sgulente: Seccién 5.4 Grates tipo lista= todo tipo nado = registro bilo: informacion siguiente: todo ten donde todos los nodos salvo el ditimo incluyen un puntero explicito a su suce- sot El puntero del éltimo nodo tiene el valor especial nulo, para indicar que no punta a ningiin nodo. En este caso, siempre que se utiice un lenguaje de progra- ‘macién adecuado, el espacio que se necesita para representar la lista se puede asignar y recuperar dinamicamente a medida que avanza el programa, Por tanto, dos o mis listas podtian compartir el mismo espacio; ademés, no es necesario sa ‘era prior la longitu que va a tener ninguna isa en particular ‘Aun cuando se utilicen punteros adicionales para asegurar un acceso rapido al primer elemento de la lista, y también al timo, cuando se utiliza esta represen: tacin resulta dificil exarsinar el k-ésimo elemento, para un k arbitrario, sin tener gue seguir k punteros e incurrir por tanto en un tiempo que esta en Ci), Sin em Dargo, una vez. que se ha encontrado un elemento, la insercion de un nuevo nod © el borrado de un nodo ya existente se puede hacer répidamente, copiando 0 ‘ambiando Gnicamente unos pocos campos. En nuestro ejemplo, se utiliza un so- Jo puntero en cada nodo para indicar su Sucesor. Por tanto resulta sencillorecorrer Ja lista en una direccin, pero no en la otra. Si se puede aceptar un mayor coste de almacenamiento, basta con afadir a cada nodo un nuevo puntero para permitir ue Ia lista se recorra répidamente en ambas direcciones Los libros elementales de programaciin estan plagados de variaciones Sobre es te tema, Las listas pueden ser circulares, con el «imo elemento apuntando al primero, 0 pueden tener una primera celda especial, distints, que contenga por fjemplo el nimero de nados que hay en la lista. Sin embargo, en este bro no lilizaremos esas estructura, 5.4 GRAFOS Hablando intuitivamente, un grafo es un conjunto de nodos unidos por un con- junto de linea o fechas, Considérese, por ejemplo, Ia figura 5.3. Distinguiremos entre grafos dirigidos y grafos no dirigidos, En los grafos dirigidos, ls todos es. tén unidos mediante flechas lamadas aristas. En el ejemplo de la figura 53, exis teuna arista que va desde ae hasta gamma, y otra desde gamma hasta alia. Los no- dos beta y delte, sin embargo, solo estén unidos en Ia direccin indicada. En el ca- 50 de un graio no dirigido, los nodos estan unidos mediante lines sin indicacion de direccién, que también se llaman aristes. Tanto en los grafos dirigidos como en Jos no ditigidos, las secuencias de aristas pueden formar caminas yciclas. Se dice {gue un grafo es conexo si se puede llegar desde cualquier nodo hasta cualquier otro siguiendo una secuencia de aristas; en el caso de un grafo dirigido, se per rite circular en sentido inverso a lo largo de una flecka. Diremos que un grafo ditigido es fuertemente conexo si se puede pasar desde cualquier nodo hasta cal 3 174. kstructuras de datos Capitulo 5 quier otro siguiendo una secuencia de arista, pero respetando esta vez el senti- do de la fechas, ‘Figura 53, Un graf digo ‘Nunca hay mas de dos flechas que unan dos nodos dados de un grafo dirigido, yy si hay dos flechas, entonces tienen que ir en sentidos opuestos; en un grafo no di- "igido nunca hay mas de una linea que una dos nodos dados. Formalmente, un ‘grafo es por tanto una pareja G = (N.A) en donde N es un conjunto de nodos y A ‘es un conjunto de aristas. Una arsta que vaya desde el nado a hasta el noda b de tun grafo dizigido se denotara mediante el par ordenado (a,b), mientras que una arista que una los nodes ay b en un grafo no dirigido se denota mediante el con- junto (a,b) (Recuerde que un conjunto es una coleccién desardenada de elementos; vvéase la Seccién 142) Por ejemplo, la figura 53 es una representacién informal del grafo G = (W.A), en donde N= {ale beta, gomma, delta ‘A= alfa, bea), (alfa, gamma), (ete, dela, (gamma, lf), (gamma, bea), (gamma, deta) Hay por lo menos dos maneras evidentes de representar un grafo en una com- putadora. La primera utiliza una matriz de adyacencia tipo grafondya = registro talor matriz{T-nummodos] de informacion adyacent: mattiz{1numnados, 1.mumnodos} de Boolean Sil grafo incluye una arista desde el nodo i hasta el nodo j,entonces adyacen te, = terdader; en caso contrario adyacente( j= fuso. En el caso de un grafo no dlitigido, la matriz sera necesariamente simétrica. Con esta representacion, es fil ver si existe o no una arsta entre dos nodos ds dos: buscar un valor en la matriz requiere un tiempo constante. Por otra partes cdeseamos examinar todos los nodos que estén conectados con algsin nodo dado, tenemos que recorrer toda tna fla completa de la matrz, en el caso de un grafo zo dirigido, o bien tanto una fila completa como una columna completa en el ci Seccion 5.5 Arboles so de un grafo dirigido. Fsto requiere un tiempo que esta en Q(numnadas), el ni- ‘mero de nodos que hay en el grafo, independientemente del nimero de aristas aque entren o salgan de ese nodo particular. El espacio requerido para representar tun grafo de esta manera es cuadtatico con respecto al numero de nodos. To que sigue es una segunda representacién posible: tipo grafolista = 1 srumnodos) de registro ‘lor informacidin vecines: lista ‘Aqui se asocia a cada nodo ina lista formada por sus vecinos, esto es, una lis- ta formada por aquellos nodos j tales que existe una arista de Fa j (en el caso de tun grafo dirigido) o entre yj (en el caso de un grafo no dirigide). Si el atmero de aristas del grafo es pequefo, esta representacion utliza menos espacio que Ia ddada anteriormente. También puede que sea posible en este caso examinar todos las vecinos de un nodo dado en menos de umnodas operaciones de andlisis en el ‘aso medio. Por otza parte, determinar si existe o no una conexién directa entre dos nodos dados i y nos abliga a recorrer la lista de vecinos del nodo i {y post- bblemente tambien ios del nodo j, en el caso de un grafo dirigido), lo cual es me- ros eficiente que buscar un valor booleano en una matriz. 5.5 ARBOLES Un arto! (hablando con propiedad, un drol libre) es un grafo aciclico,conexo y no dirigido. De manera equivalente, un érbol se puede definir como un grafe no di- igido en el cual existe exactamente un camino entre todo par de nodos dado. Puesto que un arbol es una clase de grafo, las mismas representaciones que se em pean para implementar los grafos se pueden utilizar para representar arboles. La figura 54(a) muestra dos érboles, cada uno de les cuales posee cuatro nodos; véa- se el problema 5.7. Los rboles tienen un cierto nimero de propiedades sencillas, de las cuales las més importantes son probablemente las siguientes: © Un drbol can 1 nodos posee exactamente i aristas. 9 Siseatade una Gnica aris a un drbol, entonces el grafo resultante contiene tun Gnico cielo, © Sise elimina una Gnicaarista de un érbol, entonces el grafo resultante ya no En este libro nos interesaremos principalmente por los dros com raf. Se tata deaguellos arboles en los cuales hay un nodo, llamado rai, que es especial. Cuan- dose dibuja un érbol con rar, se acostumbraa dibujar la raizen la parte superior, tal como en un érbol genealdgico, con todas las aristas bajando de él. La figura 5.4(b) ilustra cuatro érboles con raz diferente, cada uno de los cuales posee cua 175 176 Estructuras de datos Capitulo 5 tro nodos. Una ver mis se puede verificer ficilmente que éstos son los dinicos dr boles con rate de cuntro nodos que existen. Cando ne hay peligro de confusion, tutilizaremas el término sencillo «érbol»en Inger de warbol con raiz», mas corec- to, puesto que casi todas nuestros ejemplos son de este tipo. BERR ‘Figara 54 (0 drole, 5b ble com ra care nodes Extendiendo la analogia con un érbol genealdgico, se acostumbra a wtilizar ter ‘minos tales como «padre» e «hijo» para describir la relacion entre nodos adya centes, Por tanto en la figura 55, lf, la ratz del rbo,es el padre de beta y de gam Ina; beta es el padre de delta, dpsion y ze, y el hijo de alfa; mientras que épsilon y fa son los hermatios de deta. Un anieprsad de un nodo os 0 bien el nodo en si (0 cual no coincide con la acepcidn cotidiana) o bien su padre, el padre de su padre, ¥ ast sucesivamente. Por tanto, tanto alfa como zela son antepasados de zea. Un nte de un nodo se define de forma andloga, incluyendo una vez mis al propio nodo, desc Figara $5. tl eon rte Una finia de un Arbol con raiz es un novo que no tiene hips: los dems nodos se denominan nas jsterias. Aun cuando no hay nada en la definicign que lo in- clique, las ramas de los érboles con raices suelen considerarse ordenadas de iz~ ‘cance el final de la lista. En el primer caso, lainformacién asociada se encuentra ‘en el campo vulor del mismo nodo; en el segundo, sabemos que “Juan” no se en ‘cuentra en la ista. Se van ereando entradas nuevas a medida que se necesitan; vé- ase el problema 5.12. Esta implementacin es muy poco eficiente. En el caso peor, todas las solicitudes corresponden a elementos que faltan, lo cual nos obliga @ ex ;plorar la lista completa en todos los accesos. Una secuencia de m accesos requiere, [por tanto, un tlempo que se encuentra en (12) en el caso peor. Si se utiizan has. tam indices diferentes en estos n accesos, con m s 1, y si todas las solicitudes tie- ‘nen igual probabilidad de acceder a cualquiera de estos indices, el rendimiento de esta implementacién en el caso medio es tan malo como en el caso por: O(n) Siempre y cuando los campos indice se puedan comparar unos con otros y con el ‘indice solicitado en un tiempo unitario, se pueden utilizar drboles equilbrades para reducir este tiempo a O (1 log m) en el caso peor, véase la seccién 55, Esto es 182 Estructuas de datos Capitulo § _mejor, pero sigue sin ser suficientemente bueno para una de las aplicaciones prin- sipales de las tablasasociativas, a saber, los compiladores. Pricticamente todos los compiladores utlizan una tabla asociativa para im- plementar la tabla de sfinbolos. Esta tabla contiene todos los identificadores que se utilizan en el programa que hay que compiler. Si Juan es un identificador, el compilador debe ser capaz de acceder a informacién relevante tal como su tipo, y el nivel en el que esta definido. Empleando tablas, esta informacin se alma- ena sencillamente en T["Juan"]. El uso de cualquiera de las implementaciones ‘esbozadas anteriormente ralentizaria al compilador de forma inadmisible cuan- do se enfrentase a programas que contuvieran un elevado niimero de identifi ‘adores, En lugar de hacer esto, la mayoria de los compiladores utiliza una t6- nica conocida con el nombre de codifcacién dispersioa (hash coding) 0 simplemen- te disperscin (hashing). A pesar de que tiene un caso peor desastroso, la disper- sign tiene on Ia préctica un rendimiento razonablemente bueno en casi todas las Sea U el universo de indices potenciales que hay que implementar para la ta- bla asociativa, y sea N << ILI un parimetro seleccionado sega se describe a continuacién. Una funcin de dispersion es una funcion hi: U > 10, 1,2, N-U)- Es ta funcidn deberta dispersar eficientemente todos los indices probables: hx) de- beria ser diferente de h() para la mayoria de los pares x # y que tengan probabi- lidattes de uilizase simultineamente. Por jemplo, h(x) = ¥ mod N es razonable- _mente bueno a efectos de un compilador siempre y cuando N sea primo y x 8e ob- tenga a partir del nombre del identificador empleando cualquier representacion centera estndar de las cadenas de caracteres, tal como ASCIl Cuando # y pero (2) = hy), decimos que se ha producido una coisin entre x ey. Silas colisiones son muy poco probables, podriamos implementar la tabla aso- ‘Gafiva T con una matriz ordinara A[0..V 1], empleando Alh(2)] cada vez que se ne- ‘esitae TI. El problema es que TIx] y TIy] se confunden cada vez que colisionan x € y. Desafortunaclamente, esto es intolerable, porque la probabilidad de colisién no se puede despreciar a no ser que N>> m?, en donde m es el mimero de indicas dis tintos que se estan empleando realmente; véase el problema 5.14. Para esta dificul tad se han propuesto muchas soluciones, La més sencilla es la lala dedispersin aber {2 o.com encaenamiente. Cada entrada de la matriz A{O.N 1} es un elemento del ipo liste: Ali contiene la lista de todos los indices que al dispersarsellegan al valor, ju to con la informacién relevante, La figura 5.1Iilustea Ia situacion después de hacer las cuatro solicitudes siguientes en la tabla asociativa T: TULaurel”| <3 T "Chaplin" —1 TY’Hardy"]<—4 TU*Keaton’] — 1 en este ejemplo, N = 6, Keaton”) = 1, h("Laurel”) lin") = 4 Hardy") = 2 W°Cha- Seccion 5.6 Tablas actives 183 N Figura 5.11, lasracin de ene dspersin hesing) El factor de carga de la tabla es m/N, en donde m es el mimero de indices dis- tintos que se han almacenado en la tabla y Nes el tamafio de a matriz que se em- plea para implementarla. Si suponemos que todos los indices, todos los valores al- ‘macenados en la tabla y todos los punteros ocupan una cantidad de espacio cons- tante, entonces la tabla ocupa un espacio que est en OXN + me) y la longitud me- dia de la lista es igual al factor de carga, Por tanto, un incremento de N reduce la longitud media dela lista pero incrementa el espacio ocupao por la tabla. Si se mantiene el factor de carga entre un medio y 1, la tabla ocupa un espacio que es- ten @(m), 10 cual es Optimo salvo un pequeho factor constant, y la longitud me- dia de la lista es menor que uno, lo cual tiene probabilidades de implicar un ac eso eficiente ala tabla. Resulta tentador mejorar este esquema sustituyendo las, Nilistas de colisiGn por arboles equilbrados, pero esto no merece la pena si el fac- tor de carga se mantiene en valores pequefios, a no ser que resulte esencial mejo- rar el rendimiento en el caso peor. factor de carga se puede mantener en valores pequefios mediante una valisper- sign, Teniendo en mente la aplicacion del compilador, por ejemplo, el valor inicial de LN se toma de tal modo que esperamos que los programas pequefis utilicen menos de N identificadores distintos. Se permite que el factor de carga sea menor que un ‘medio cuando el miimero de identiicadores sea pequeno. Cuando se encuentran ams de N identificadores diferentes, lo eval da lugar a que el factor de carga supere clvalor uno, ha liegado el momento de doblar el tamarto de la matriz empleada pa- zaimplementar la tabla de dispersiGn, En ese momento, la funcién de dispersin de- be cambiar para doblar su alcance, y todas las entradas que estén ya en la tabla de- ben ser redistribuidas a sus nuevas posiciones en alguna lista dela matriz mayor. La redistribucién es costosa, pero es tan infrecuente que no da lugar a un increment dramitico del tiempo amortizado que se necesita por cada acceso ala tabla. Se repite la redistibucion cada vez que el factor de carga sobrepasael valor no; después de la reorganizacién, el factor de carga vuelve a caer hasta el valor un medio, Desafortunadamente, una lista con una longitud media baja no garantiza un tiempo medio de acceso reducido. El problema es que cuanto més larga sea la 184 Estructurae de datos Capitulo 5 lista, mas probable es que se acceda a uno de sus elementos, Por tanto, os casos malos tienen mas probabilidades de aparecer que los casos buenos, En Un caso extremo, podria haber una lista de longitud N y N-1 listas delongitud cero. Aun cuando Ia longitud media de la lista sea 1, Ia situacién no es mejor que si em plessemos el enfogue sencilo de una liste tabla, Sila tabla se esta utilizando en tun compilador, sucederia si todas los identificadores de un programa se distri- buyeran a un mismo indice. Aunque esto es improbable, no podemos descar- tarlo, Sin embargo, se puede demostrar que todo acceso requiere un tiempo es perado constante en el sentido amortizado, siempre y cuando se efectile una re distribucién cada ver que el factor de carga sobrepase el valor 1, y siempre ¥ ‘cuando hagamos la suposicin (poco natural) consistente en que tedos los iden- tificadores posibles tienen igual probabilidad de ser utiizados. En la préctica, la dispersién funciona bien en casi todas las ocasiones, aun cuando los identiica- dores no se seleccionen al azar. Ademis, veremos en la Seccién 10.73 la forma de eliminar esta suposiciin acerca de la distribucién de probabilidades de los casos que hay que resolver, manteniendo un rendimiento experado demostra blemente bueno, 5.7 MONTICULOS (HEAPS) Un monticulo (henp) es un tipo especial de drbol con raiz que se puede imple- ‘mentar eficentemente en una matriz sin ningtin puntero explicit. Hsta estructu- +2 tan interesante se presta a numerosas aplicaciones, incluyendo una notable tée- nica de crdenacién denominada ordencidn por ef metodo ie! monticnlo heapsert), que se presentari més adelante en esta seccién, Tambicn se puede utilizar para re presentar eficientemente ciertas listas dinémicas de prioridad, tales como la lista de sucesos en wna simulacion de una lista de tareas que haya de ser planificada por un sistema operativo. Se dice que un 4rbol binario es esencialmente campleto si todo node interno, con 1a posible excepcién de un nodo especial, tiene exactamente dos hijos. El nodo es pesial, si existe uno, est stad en el nivel 1, y posee un hijo izquierdo pero no tiene hijo derecho. Ademas, o bien todas las hojas se encuentran en el nivel 0, 6 bien estan en los niveles cero y uno, y ninguna hoja del nivel 7 esta ala izquierda de un nodo interno del mismo nivel, Intuitivamente, un érbol esencialmente com- pleto es uno en el que los nodes internos se han subido en el 4rbol lo mas posible. con los nods internos del siltima nivel empujedos hacia la i2quierda; las hojas le ‘an el timo nivel que contiene nodes intemas, si es que queda algan espacio » después se desbordan hacia la izquierda en el nivel cero. Por ejemplo, la figura 5.12 ilustra un arbol binario esencialmente completo que contiene 10 nados. Los cinco nodos intemos ocupan el nivel 3 (a raz), el nivel 2 y el lado izquierdo del nivel I; las cinco hojas lenan el lado derecho del nivel uno y continvian después por la izquienda del nivel cer, Siun drbol binaro esencialmente completo tiene une altura f entonees hay un ne- do (la rai) en el nivel k, dos nodos en ol nivel k— 1, y as sucesivamente; hay 2'— 1 Secciin 5.7 Monticulos 185 ‘nodos en el nivel 1,y al menos uno pero no més de en el nivel 0. $i el bol con- tiene 1 nados en total, contando tanto los nodos internos coma las hojas, se sigue que 2! <1 = 2", Andlogamente, la altura de un arbol que contiene n nodos es = [Ign], resultado éste que utilizaremos posteriormente Figera 5.12. Un rl Suri exencalmente complete Esta clase de érbol se puede representar en una matrz T poniendo los nodos de profundidad f, de izquierda a derecha, en las posiciones 72"), TI2+1}...T12*"—1}, com la posible excepcisn del nivel cero, que puede estar incompleto. La figura 5.12 indica los elementos de la matriz que corresponclen a cada nodo del érbol. Util: zando esta representacién, el padre del nodo representado en TI] se encuentra en ‘T[i+2] para i> 1 (la raiz TI carece de padre), y los hijos del nodo representado en Tlie encuentran en T[2] y T[2i+1] siempre que existan. El sub-Arbol cuya raiz es: é en T[i] tambien es facil de identifica. ‘Un monticulo es un ézbol binario esencialmente completo, cada uno de cuyos nodos incluye un elemento de informacién denominado valor del nad, y que tiene la propiedad consistente en que el valor de cada nado interno es mayor o igual gue los valores de sus hijos. Esto se llama propiedad de! montculo. La figura 5.13 ‘muestra un ejemplo de monticulo con 10 nados. Fl arbel subyacente es, por su- puesto, el que se muestra en la figura 512, pero ahora hemos marcado cada nodo con su valor. La propiedad del monticulo se puede comprobar facilmente, Por ejemplo, el nodo cuyo valor es 9 tiene dos hijos cayos valores son $y 2: los dos hi jos tienen un valor menor que el valor de st padre, Este mismo monticulo se pue- de representar mediante la matrz siguiente: Dado que el valor de cada nodo interno es mayor 0 igual que los valores de sus hijo, que a su vez tienen valores mayores 0 iguales que los valores de sus hijos, y 186 tstracturas de datos Capitulo 5 ‘asi sucesivamente, la propiedad del monticulo asegura que el valor de todo nodo intemo es mayor o igual que los valores de todos los nodos que yacen en los sub- Arboles situados por debajo de él En particular el valor de a raiz es mayor o igual que los valores de todos los demas nodos del monticulo. ©, OY Q QO OO © © OO igere 5.15 Un monteal (heap) La caracteristica crucial de esta estructura de datos es que la propiedad del _monticulo se puede restaurar de forma eficiente si se modifica el valor de un no- do. Sil valor de un nodo crece hasta llegar a ser mayor que el valor de su padee, ‘basta con intercambiar estos dos valores, y continuar entonces el mismo proceso hacia arriba si es necesario hasta que se haya restaurado la propiedad de! monti- ‘culo, Diremos gue el valor modificado ha fotado hasta su nueva posicién dentro ‘del monticulo, (Esta operacién suele denominarse flea.) Por ejemplo, si se modi fica el valor 1 de la figura 5.13 para pasar a ser 8, entonces podemos restaurar la propiedad del monticulointercambiando el 8 con su padre, que es 4, y volviendo Pigare 5.14 Et mont, deste de lar 8 aso taper Seccién 5.7 a intercambiarlo con su nuevo padre, que es 7, obteniendo asi el resultado que se muestra en la figura 5.14. 5 por el contrario el valor del nodo decrece de tal modo que pasa a ser menor que el valor de alguno de sus hijos, entonces basta intercamblar el valor modifica- do con el mayor de los valores de los hijos,y continuar este proceso hacia abajo si es necesario hasta que se restaure la propiedad del monticulo. Diremos que el valor modifcado se ha hundido hasta su nueva posicion. Por ejemplo, si el 10 de la ratz de la figura 5.14 pasa a ser un 3, podemos restaurar la propiedad del monticulo intercambiando el 3 con su hijo mayor, el 9, eintercam- bidndolo una ver mais con el mayor de sus hijos nuevos, el 5. El resultado que se obtiene aparece en la figura 5.15. Figura 18. BL monte, desputs de hand e3 hasta sugar Los procedimientos siguientes describen de manera mas formal los procesos bisicos para manipular un monticulo. Por claridad, se han escrito de tal modo ue reflejen en lo posible la discusién anterior. Si tiene usted intencin de utili- zar monticulos para una aplicacién «real, le animamos a que determine la for- ‘ma de evitar la ineficiencia causada por nuestra utiizacién de la instruccién «in- tercambiars procedimiento mouifiar-monticulo(TI1.n, i ) {T[L.n] es un monticulo. Tf recibe el valor v, yse vuelve a establecer la propiedad del monticulo. Suponemos que 1 << 11) x= Th] Teo si < xentonces hundir7, i) sino fotar(T, 188 fstructuras de datos Capitulo 5 procedimiento hudin U1. [Este procedimiento hunde el nodo i para restablecer |a propiedad del monticulo en TI1.]- Suponemos que T seria ‘un monticulo si TU] fuera suficientemente grande, También suponemos que 1 Sis) kei repetir ek Touscar el hijo mayor del node jl si2j THK] entonces k 2) si2} TiAl entonces k 2) +1 intercambiar TH] y THR] entonces el nodo ha Ilegado a su posici6n final) hasta que procedimiento floter 11-3 TEste procedimient fila el nodo i para rstablecer la propiedad del montculo en Tl. Suponemos que T seria {in monticulo si 7) fuera sufcientemente pequeno. También Ssuponemos que 1S" El pardmetro no se utilizar aqui] kei repetir ek Sij>1y TH) =21< TIKI entonces ke j +2 intercombiar Thy TH Isij =, entonces el nodo ha legado a su posicin fnalh hasta que j= El monticul es tna estructura ideal para halla el mayor de los elementos de ‘un conjunto, para eliminarlo, para afadit un nodo nuevo o para modifica un no- do. Estas son exactamente las operaciones que se necesitan para implementa ef “Gentemente las lists cle proridad dinamice valor del noo da a prioridad del Ssuceso correspondiente el suceso de prioridad mis alta se encuentra siempre en In raz del manticlo,y Ia priridad de un sticeso se puede modificar din rente en cualquier momento. Esto resulta especialmente wil en las simulaciones por computadora y en el diseRo de planticadores para sistemas operativos. Se llustran mis abajo algunos procedimlentos pias. funcién buscar-ma-n) {Proporciona el mayor elemento del montculo T.2]} devolver Tt] procediniento forrr-max(T.2) {Elimina el mayor elemento del monttulo TLL] ¥ restaura la propiedad del monticuloen T-210) Tule Thal hand UAL) Seccién 5.7 Monticulos procedimiento anai-nodo(T1-2], ») {Afade un elemento cuyo valor es» al nodo TUL») ‘yrestaura la propiedad del montculo en TUL-1-1I} Thistle 2 floter TU], 61) ‘Queda por ver la forma de crear un monticulo partiendo de wna matsiz TH. de elementos que estén en un orden indefinido, La solucién evidente cansiste en partir de un monticulo vacio y anadir elementos uno por uno, rocedimiento crenr-monticulo-ento(T11-2)) (Este procedimiento transforma la matriz 711.1} en un monticulo, aunque de forma mis bien ineficientel paral 2 hasta n hacer flay (T11-i,) Sin embargo, esta aproximacién no es particularmente eficiente; véase el pro- blema 5.19. Fxiste un algoritmo més intligente para hacer un monticulo, Supon- sgamos, por ejemplo, que nuestro punto de partida es la matriz siguiente: {que representa al érbol de a figura 5.16a, Primero convertimos en monticulos aquellos sub-arboles cuyas races se encuentren en el nivel 1; esto Se hace sumer- giendo estas raices, sein se ilustraen la figura 5.166. Los sub-irboles de nivel Inmediatamente superior se transforman entonces en monticulos, sumergiendo ‘una ver més sus rales. La figura 5.16¢ muestra el proceso para el sub-irbol iz- quierdo. Esto da lugar a un érbol binario esencialmente completo que correspon- ea la matriz Sélo queda sumergir su ratz para obtener el monticulo deseado. El proceso fi nal, entonces, queda en la forma siguiente: La representacin en érbol de la forma final de la matriz es la que se mostr6 pre- viamente como figura 5.13. He aqui una descripein formal del algoritmo, 190 Estructurae de datos Capitulo 5 procedimiento crear-monticulo(T(1.eD TBste procedimiento transforma la matriz Tite en un montco} para [0/2] bajando hasta 1 hacer huni, Teorema 57.1 El agoritme construye un monticuioen tempo Hine! Demostraci Daremos dos demostraciones de esta afirmacin: 1. Como barémetro,ublizamos las instruciones del hcl repetir del algortmo hur Para hundir un nodo hasta el nivel esti claro que se haten como mucho r+ 1 pa sadas por el bude. Ahora bien, ln altura de un monticulo que contiener nodos es, digambos, [ign] =k Fel monteule hay 2" nodos ene! nivel 1 (de os cuales no toe dos son necesariamente nodos interno), 2*-? nodos en el nivel 2 (odos fos cuales ‘eben ser nodos interno y ai sucesivamente, hasta un nodo en el nivel, que es be ‘air, Cuando se aplca ctr monica hurndimes el valor de todos los nodos interns. Por tanto, ie el niamero total de pasadas por el buce epetir, tenemos 15224322 +E DEO HIDE) a2 2h ean onde se ha tilizado la Proposcién 1.7.12 para sumar a sere infinita, El trabajo re ‘quero ests, por tanto, en OVE) 2.Sea el tempo requerido en el caso peor para construr un monticulo de altura ke ‘mo mixino. Supongamos que k® 2 Para constrair el montcul, el algortno tras forma primero lon dos sub-Arbole azociados a Ja ale en Arboles de altura k-1 coms rmeima. (El suarbol derecho pari ser de stura I-2) Entonces el algortmo hnde Ta rate por una rata caya longitudes Fcomo maximo, lo cual require un Kempo st © OG) en el caso peor. As se obtione la recurrenciaasintticn 09 < 24-1450) Fata recurrenca es parecda al eemplo 477, que proparciona tk) € 0(2, Pero vr smonticulo que contengam elementos tiene com altura gH as que se puede cons tir en # (lg mb pasos, lo cl ests en Ot») porque 20. Williams invent6 el monticulo para que sirviera como estructura de datos sub- yacente al siguiente algoritmo de ordenacién: Seccién 5.7 Monticulos 191 procedimiento ordenacitn por monticulo TI.) (Tres la matriz que hay que ordenar| crear-monticule(T) para i — 1 bajando hasta 2 hacer intercambiar 711] y TI] Iondin(T40.-11, Toren, 57.2 El lgortn reque wn Hpo gue sd O01 og. partor- | 8) La situa niin Bo & ° & (©) Loe sub rboles de nivel 1 se convierten en monticulos LP LPL? (©) Se convierte un sub-drbol de nivel 2 en un monticulo (lotro yaes un monticulo) Figura 5.16, Creecén de wn monteale 192 Estructuras de datos Capitulo 5 Demostractén. Ses (i) el tiempo necesari para ordensr una matriz de elementos ene c- ‘so peor La operaciin carnonulorequiere un tiempo lineal en, y a altura del mor fico que se produce es [lpr]. El bucle para se ejecta 1-1 ves. En cada pasada por el bce In instruccinsintercambiar require un Hempy constante, ¥ la operacién ui Ihunde le raza lo largo de un exmino que iene como maxima wna longi lg 10 cual requiere un tempo qu es del orden de Ign el caso peor. Consiguienement: Hu) ON) +(u— HOM + r= NO(ogn) = Ontos) Se puede demostrar que 11m € @(nlogn): el arden exacto de tn) es también 1 og n, tanto en el caso peor como en el caso medio, suponiendo que todas las permutaciones iniciales de los objetos que hay que ordenar sean igualmente pro- Dables. Sin embargo, esto es mis dificil de demostrar. Et concepto bisico de un monticulo se puede mejorar de diferentes maneras. Para aquellas aplicaciones que necesiten flor con mas frecuencia que hunuir (ease, por eemplo, el problema 6.16), es ventajoso tener mas de dos hijos por no- do interno. Esto acelera fotar (porque el monticulo es menos profundo) a costa de hacer més lentas las operaciones tales como hindi, que tienen que considerar to- dos los hijos de cada nivel. Sigue siendo posible representar esos monticulos en ‘una matriz sin punteros explicitos, pero hay que tener un poquito de cuidado pa ra hacerlo bien; véase el problema 523 Para las aplicaciones que tienden a hundir un nodo rate actualizado hasta casi el nivel inferior, es ventajoso ignorar temporalmente el nuevo valor alma cenado en la raiz, optando més bien por tratar a este nodo como si estuviese vacio, esto es, como si contuviese un valor més pequeno que cualquier otro va lor del érbol. EI nodo vacio, por tanto, se sumergiré hasta Hegar finalmente tuna hoja. En este momento, se vuelve a poner el valor relevante en la hoja cia, flota hasta su posicién correcta, La ventaja de este procedimiento es que solamente necesita una comparacin en cada nivel mientras se esté sumer: giendo el nado vacio, en lugar de ser necesarias dos, como en el procedimien- to habitual. (Esto se debe a que tenemos que comparar los hijos entre si, pero ro es necesario comparar el hijo mayor con su padre.) La experiencia muestra que este enfoque produce una mejora con respecto al algoritmo ovdenar per ronticuleclasico En algunas ocasiones, seré preciso utilizar un montculoineertifo. Con esto de: ‘notamos un arbol binario esencialmente completo en el cual el valor de todo no- o interno es menor o igual que los valores de sus hijos, y no mayor o igual como en el monticulo ordinario, En un monticulo invertido, el item mas pequeno se en- ‘uentra en la raiz. Todas las propiedades de un monticulo ordinario son aplicables ‘mutatis mutandis ‘Aun cuando los monticulos pueden utilizarse para implementar de forma eficiente Ia mayoria de las operaciones necesarias para manejar listas dind- micas de prioridad, hay algunas operaciones para las que no resultan ade- Seccidn 5.8 5.8 ‘Monticulos binominales cuados. Por ejemplo, no hay una buena manera de buscar un cierto elemento dentro de un monticulo. En procedimientos tales como hundir y fata, vistos iis arriba, proporcionabamos la direceién del nodo implicado como uno de los parémetros del procedimiento. Ademés, no hay una forma eficiente de fu- sionar dos monticulos de la clase que se ha descrito. Lo mejor que podemos hacer es poner los contenidos de ambos monticulos uno junto a otxo dentro de la matriz, y lamar entonces al procedimiento crear-monticuls aplicindolo a la matriz ‘Como se vers en la seccidn siguiente, no es dificil producir monte fusiona bles costa de una cierta complicacin en las estracturas de datos utilizadas, Con todo, la busqueda de un cierto elemento es ineficente en cualquier tipo de mon- Wiculo que se considere MONTICULOS BINOMIALES En un monticulo crdinario que contenga elementos, buscar el mayor de ellos requiere un tiempo que esta en O(1). Borrar el mayor elemento, 0 insert un raovo elemento, equiere un Hempo que est en Otlog i. Sin embargo, Eusionar dos manticulos que contengan entre los dos elementos requlere un tempo que est en Ol). En esta seccion deseribiremos un tipo distinto de monticulo, en el cual la bisqueda del mayor elemento sigue requiriendo un tiempo en OC), ¥ el ‘borrado del mayor elemento sigue requiriendo un tiempo en Otlog i). Sin em\- ‘bargo la fusion de dos de estos nuevos monticulos slo requicre tn tiempo en Oilog my la insercion de un nuevo elemento —siempre y cuando se considere el tiempo amortizado,y o e costeen side cada operacion— solamente requie yeun tempo en O). Definiremos primero los drbols binowiales. El i-ésimo Arbol binomial B, con 12 0, se define ecursivamente como aquel que consta de un nodo ratz on fh en donde el j-simo hijo, 1

S-ar putea să vă placă și