ebook img

Algoritmos y Estructuras de Datos PDF

304 Pages·2017·1.69 MB·Spanish
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Algoritmos y Estructuras de Datos

Algoritmos y Estructuras de Datos Bottazzi, Cristian. [email protected], Costarelli, Santiago. [email protected], D’El´ıa, Jorge. [email protected], Dalcin, Lisandro. [email protected], Galizzi, Diego. [email protected], Gime´nez, Juan Marcelo. [email protected], Olivera, Jose´. [email protected], Novara, Pablo. zaskar [email protected], Paz, Rodrigo. [email protected], Prigioni, Juan. [email protected], Pucheta, Mart´ın. [email protected], Rojas Fredini, Pablo Sebastia´n. [email protected], Romeo, Lautaro. [email protected] , Storti, Mario. [email protected], http://www.cimec.org.ar/aed www: Facultad de Ingenier´ıa y Ciencias H´ıdricas http://fich.unl.edu.ar Universidad Nacional del Litoral Centro de Investigacio´n de Me´todos Computacionales http://www.cimec.org.ar Indice 1. Disen˜oyana´lisisdealgoritmos 13 1.1. Conceptosba´sicosdealgoritmos . . . . . . . . . . . . . . . . 13 1.1.1. Ejemplo:Sincronizacio´ndeaccesoaobjetosenca´lculo distribuido . . . . . . . . . . . . . . . . . . . . . . . . 14 1.1.2. Introduccio´nba´sicaagrafos . . . . . . . . . . . . . . . 16 1.1.3. Planteodelproblemamediantegrafos . . . . . . . . . 17 1.1.4. Algoritmodebu´squedaexhaustiva . . . . . . . . . . . 18 1.1.5. Generacio´ndelascoloraciones . . . . . . . . . . . . . 19 1.1.6. Crecimientodeltiempodeejecucio´n . . . . . . . . . . 22 1.1.7. Bu´squedaexhaustivamejorada . . . . . . . . . . . . . 23 1.1.8. Algoritmoheur´ısticoa´vido . . . . . . . . . . . . . . . . 26 1.1.9. Descripcio´ndelalgoritmoheur´ısticoenseudo-co´digo . 29 1.1.10.Crecimiento del tiempo de ejecucio´n para el algoritmo a´vido . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 1.1.11.Conclusio´ndelejemplo . . . . . . . . . . . . . . . . . 36 1.2. Tiposabstractosdedatos . . . . . . . . . . . . . . . . . . . . 37 1.2.1. Operaciones abstractas y caracter´ısticas del TAD CONJUNTO . . . . . . . . . . . . . . . . . . . . . . . 38 1.2.2. InterfazdelTADCONJUNTO . . . . . . . . . . . . . . 38 1.2.3. Implementacio´ndelTADCONJUNTO . . . . . . . . . . 40 1.3. Tiempodeejecucio´ndeunprograma . . . . . . . . . . . . . . 41 1.3.1. Notacio´nasinto´tica . . . . . . . . . . . . . . . . . . . . 43 1.3.2. Invarianciaanteconstantesmultiplicativas . . . . . . . 45 1.3.3. Invariancia de la tasa de crecimiento ante valores en unconjuntofinitodepuntos . . . . . . . . . . . . . . . 45 1.3.4. Transitividad . . . . . . . . . . . . . . . . . . . . . . . 45 1.3.5. Regladelasuma. . . . . . . . . . . . . . . . . . . . . 46 1.3.6. Regladelproducto . . . . . . . . . . . . . . . . . . . . 46 3 1.3.7. Funcionest´ıpicasutilizadasenlanotacio´nasinto´tica . . 46 1.3.8. Equivalencia . . . . . . . . . . . . . . . . . . . . . . . 48 1.3.9. Lafuncio´nfactorial . . . . . . . . . . . . . . . . . . . . 48 1.3.10.Determinacio´nexperimentaldelatasadecrecimiento . 50 1.3.11.Otrosrecursoscomputacionales. . . . . . . . . . . . . 51 1.3.12.Tiemposdeejecucio´nno-polinomiales . . . . . . . . . 52 1.3.13.ProblemasPyNP . . . . . . . . . . . . . . . . . . . . 52 1.3.14.Variospara´metrosenelproblema . . . . . . . . . . . . 53 1.4. Conteodeoperacionesparaelca´lculodeltiempodeejecucio´n 54 1.4.1. Bloquesif . . . . . . . . . . . . . . . . . . . . . . . . . 54 1.4.2. Lazos . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 1.4.3. Sumadepotencias . . . . . . . . . . . . . . . . . . . . 60 1.4.4. Llamadasarutinas . . . . . . . . . . . . . . . . . . . . 60 1.4.5. Llamadasrecursivas . . . . . . . . . . . . . . . . . . . 60 2. Tiposdedatosabstractosfundamentales 65 2.1. ElTADLista . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 2.1.1. Descripcio´nmatema´ticadelaslistas . . . . . . . . . . 66 2.1.2. Operacionesabstractassobrelistas . . . . . . . . . . . 67 2.1.3. Unainterfazsimpleparalistas . . . . . . . . . . . . . . 68 2.1.4. Funcionesqueretornanreferencias . . . . . . . . . . . 71 2.1.5. Ejemplosdeusodelainterfazba´sica . . . . . . . . . . 73 2.1.6. Implementacio´ndelistasporarreglos . . . . . . . . . . 78 2.1.6.1. Eficienciadelaimplementacio´nporarreglos . 84 2.1.7. Implementacio´nmedianteceldasenlazadasporpunteros 85 2.1.7.1. Eltipoposicio´n . . . . . . . . . . . . . . . . . 87 2.1.7.2. Celdadeencabezamiento . . . . . . . . . . . 88 begin() end() 2.1.7.3. Lasposiciones y . . . . . . . 91 2.1.7.4. Detallesdeimplementacio´n . . . . . . . . . . 91 2.1.8. Implementacio´nmedianteceldasenlazadasporcursores 93 2.1.8.1. Co´mo conviven varias celdas en un mismo espacio . . . . . . . . . . . . . . . . . . . . . 95 2.1.8.2. Gestio´ndeceldas . . . . . . . . . . . . . . . 96 2.1.8.3. Analog´ıaentrepunterosycursores . . . . . . 97 2.1.9. Tiemposdeejecucio´ndelosme´todosenlasdiferentes implementaciones. . . . . . . . . . . . . . . . . . . . . 100 2.1.10.InterfazSTL . . . . . . . . . . . . . . . . . . . . . . . 102 2.1.10.1.VentajasdelainterfazSTL. . . . . . . . . . . 102 2.1.10.2.Ejemplodeuso . . . . . . . . . . . . . . . . . 103 2.1.10.2.1.Usodetemplatesyclasesanidadas . 104 2.1.10.2.2.Operadores de incremento prefijo y postfijo: . . . . . . . . . . . . . . . . 104 2.1.10.3.Detallesdeimplementacio´n . . . . . . . . . . 105 2.1.10.4.Listasdoblementeenlazadas . . . . . . . . . 108 2.2. ElTADpila . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 2.2.1. UnacalculadoraRPNconunapila . . . . . . . . . . . 110 2.2.2. Operacionesabstractassobrepilas . . . . . . . . . . . 111 2.2.3. Interfazparapila . . . . . . . . . . . . . . . . . . . . . 111 2.2.4. Implementacio´ndeunacalculadoraRPN . . . . . . . . 112 2.2.5. Implementacio´ndepilasmediantelistas . . . . . . . . 116 2.2.6. Lapilacomounadaptador . . . . . . . . . . . . . . . . 118 2.2.7. InterfazSTL . . . . . . . . . . . . . . . . . . . . . . . 118 2.3. ElTADcola . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 2.3.1. Intercalacio´ndevectoresordenados . . . . . . . . . . 120 2.3.1.1. Ordenamientoporinsercio´n . . . . . . . . . . 120 2.3.1.2. Tiempodeejecucio´n . . . . . . . . . . . . . . 123 2.3.1.3. Particularidadesalestarlassecuenciaspares eimparesordenadas . . . . . . . . . . . . . . 123 2.3.1.4. Algoritmodeintercalacio´nconunacolaauxiliar124 2.3.2. Operacionesabstractassobrecolas . . . . . . . . . . . 126 2.3.3. Interfazparacola . . . . . . . . . . . . . . . . . . . . . 126 2.3.4. Implementacio´n del algoritmo de intercalacio´n de vec- tores . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 2.3.4.1. Tiempodeejecucio´n . . . . . . . . . . . . . . 128 2.4. ElTADcorrespondencia . . . . . . . . . . . . . . . . . . . . . 129 2.4.1. Interfazsimpleparacorrespondencias . . . . . . . . . 131 2.4.2. Implementacio´n de correspondencias mediante conte- nedoreslineales . . . . . . . . . . . . . . . . . . . . . 134 2.4.3. Implementacio´n mediante contenedores lineales orde- nados . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 2.4.3.1. Implementacio´nmediantelistasordenadas . . 138 2.4.3.2. InterfazcompatibleconSTL . . . . . . . . . . 140 2.4.3.3. Tiemposdeejecucio´nparalistasordenadas . 144 2.4.3.4. Implementacio´nmediantevectoresordenados 144 2.4.3.5. Tiemposdeejecucio´nparavectoresordenados148 2.4.4. Definicio´ndeunarelacio´ndeorden . . . . . . . . . . . 148 3. Arboles 151 3.1. Nomenclaturaba´sicadea´rboles . . . . . . . . . . . . . . . . 151 3.1.0.0.1. Alturadeunnodo. . . . . . . . . . . 154 3.1.0.0.2. Profundidaddeunnodo.Nivel. . . . . 154 3.1.0.0.3. Nodoshermanos . . . . . . . . . . . 154 3.2. Ordendelosnodos . . . . . . . . . . . . . . . . . . . . . . . 154 3.2.1. Particionamientodelconjuntodenodos . . . . . . . . . 156 3.2.2. Listadodelosnodosdeuna´rbol . . . . . . . . . . . . 157 3.2.2.1. Ordenprevio . . . . . . . . . . . . . . . . . . 157 3.2.2.2. Ordenposterior. . . . . . . . . . . . . . . . . 158 3.2.2.3. Ordenposteriorylanotacio´npolacainvertida 159 3.2.3. Notacio´nLispparaa´rboles. . . . . . . . . . . . . . . . 160 3.2.4. Reconstruccio´ndela´rbolapartirdesuso´rdenes . . . . 161 3.3. Operacionescona´rboles . . . . . . . . . . . . . . . . . . . . 164 3.3.1. Algoritmosparalistarnodos . . . . . . . . . . . . . . . 164 3.3.2. Insercio´nena´rboles . . . . . . . . . . . . . . . . . . . 165 3.3.2.1. Algoritmoparacopiara´rboles . . . . . . . . . 166 3.3.3. Supresio´nena´rboles . . . . . . . . . . . . . . . . . . 169 3.3.4. Operacionesba´sicassobreeltipoa´rbol . . . . . . . . . 170 3.4. Interfazba´sicaparaa´rboles . . . . . . . . . . . . . . . . . . . 170 3.4.1. Listadosenordenprevioyposteriorynotacio´nLisp . . 174 3.4.2. Funciones auxiliares para recursio´n y sobrecarga de funciones . . . . . . . . . . . . . . . . . . . . . . . . . 175 3.4.3. Algoritmosdecopia . . . . . . . . . . . . . . . . . . . 176 3.4.4. Algoritmodepoda . . . . . . . . . . . . . . . . . . . . 176 3.5. Implementacio´ndelainterfazba´sicaporpunteros . . . . . . . 176 3.5.1. Eltipoiterator . . . . . . . . . . . . . . . . . . . . . . 177 3.5.2. Lasclasescelleiterator t . . . . . . . . . . . . . . . . 179 3.5.3. Laclasetree . . . . . . . . . . . . . . . . . . . . . . . 183 3.6. Interfazavanzada . . . . . . . . . . . . . . . . . . . . . . . . 186 3.6.1. Ejemplodeusodelainterfazavanzada . . . . . . . . . 191 3.7. Tiemposdeejecucio´n . . . . . . . . . . . . . . . . . . . . . . 194 3.8. Arbolesbinarios . . . . . . . . . . . . . . . . . . . . . . . . . 194 3.8.1. Listadosenordensime´trico . . . . . . . . . . . . . . . 195 3.8.2. Notacio´nLisp . . . . . . . . . . . . . . . . . . . . . . . 195 3.8.3. A´rbolbinariolleno . . . . . . . . . . . . . . . . . . . . 196 3.8.4. Operacionesba´sicassobrea´rbolesbinarios . . . . . . 197 3.8.5. Interfaceseimplementaciones. . . . . . . . . . . . . . 198 3.8.5.1. Interfazba´sica . . . . . . . . . . . . . . . . . 198 3.8.5.2. Ejemplodeuso.Predicadosdeigualdadyes- pejo . . . . . . . . . . . . . . . . . . . . . . . 199 3.8.5.3. Ejemplodeuso.Hacerespejo“inplace” . . . 201 3.8.5.4. Implementacio´n con celdas enlazadas por punteros . . . . . . . . . . . . . . . . . . . . 202 3.8.5.5. Interfazavanzada . . . . . . . . . . . . . . . 208 3.8.5.6. Ejemplo de uso. El algoritmo apply y princi- piosdeprogramacio´nfuncional. . . . . . . . 210 3.8.5.7. Implementacio´ndelainterfazavanzada . . . . 211 3.8.6. ArbolesdeHuffman . . . . . . . . . . . . . . . . . . . 215 3.8.6.1. Condicio´ndeprefijos . . . . . . . . . . . . . . 217 3.8.6.2. Representacio´n de co´digos como a´rboles de Huffman . . . . . . . . . . . . . . . . . . . . 217 3.8.6.3. Co´digosredundantes . . . . . . . . . . . . . 219 3.8.6.4. Tabla de co´digos o´ptima. Algoritmo de bu´squedaexhaustiva . . . . . . . . . . . . . . 220 3.8.6.4.1. Generacio´ndelosa´rboles . . . . . . 222 3.8.6.4.2. Agregando un condimento de pro- gramacio´nfuncional . . . . . . . . . 223 3.8.6.4.3. Elalgoritmodecombinacio´n . . . . . 226 3.8.6.4.4. Funcio´nauxiliarquecalculalalongi- tudmedia . . . . . . . . . . . . . . . 227 3.8.6.4.5. Usodecombycodelen. . . . . . . . 228 3.8.6.5. ElalgoritmodeHuffman . . . . . . . . . . . . 230 3.8.6.6. Implementacio´ndelalgoritmo . . . . . . . . . 233 3.8.6.7. Unprogramadecompresio´ndearchivos . . . 236 4. Conjuntos 249 4.1. Introduccio´nalosconjuntos . . . . . . . . . . . . . . . . . . . 249 4.1.1. Notacio´ndeconjuntos . . . . . . . . . . . . . . . . . . 249 4.1.2. Interfazba´sicaparaconjuntos . . . . . . . . . . . . . . 250 4.1.3. Ana´lisisdeflujodedatos. . . . . . . . . . . . . . . . . 252 4.2. Implementacio´nporvectoresdebits . . . . . . . . . . . . . . 259 4.2.1. Conjuntosuniversalesquenosonrangoscontiguosde enteros . . . . . . . . . . . . . . . . . . . . . . . . . . 260 4.2.2. Descripcio´ndelco´digo . . . . . . . . . . . . . . . . . . 261 4.3. Implementacio´nconlistas . . . . . . . . . . . . . . . . . . . . 263 4.3.0.1. Similaridad entre los TAD conjunto y corres- pondencia . . . . . . . . . . . . . . . . . . . 263 4.3.0.2. Algoritmolinealparalasoperacionesbinarias 265 4.3.0.3. Descripcio´ndelaimplementacio´n . . . . . . . 267 4.3.0.4. Tiemposdeejecucio´n . . . . . . . . . . . . . 270 4.4. Interfazavanzadaparaconjuntos . . . . . . . . . . . . . . . . 270 4.5. Eldiccionario . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 4.5.1. Laestructuratabladedispersio´n . . . . . . . . . . . . 274 4.5.2. Tablasdedispersio´nabiertas . . . . . . . . . . . . . . 276 4.5.2.1. Detallesdeimplementacio´n . . . . . . . . . . 276 4.5.2.2. Tiemposdeejecucio´n . . . . . . . . . . . . . 280 4.5.3. Funcionesdedispersio´n . . . . . . . . . . . . . . . . . 281 4.5.4. Tablasdedispersio´ncerradas . . . . . . . . . . . . . . 282 4.5.4.1. Costodelainsercio´nexitosa . . . . . . . . . 284 4.5.4.2. Costodelainsercio´nnoexitosa . . . . . . . . 286 4.5.4.3. Costodelabu´squeda . . . . . . . . . . . . . 288 4.5.4.4. Supresio´ndeelementos . . . . . . . . . . . . 288 4.5.4.5. Costodelasfuncionescuandohaysupresio´n 288 4.5.4.6. Reinsercio´ndelatabla . . . . . . . . . . . . . 289 4.5.4.7. Costodelasoperacionesconsupresio´n . . . 291 4.5.4.8. Estrategiasderedispersio´n . . . . . . . . . . 291 4.5.4.9. Detallesdeimplementacio´n . . . . . . . . . . 293 4.6. Conjuntoscona´rbolesbinariosdebu´squeda . . . . . . . . . . 297 4.6.1. Representacio´ncomolistaordenadadelosvalores . . 297 4.6.2. Verificarlacondicio´ndeABB . . . . . . . . . . . . . . 298 4.6.3. M´ınimoyma´ximo . . . . . . . . . . . . . . . . . . . . 299 4.6.4. Buscarunelemento . . . . . . . . . . . . . . . . . . . 300 4.6.5. Costodem´ınimoyma´ximo . . . . . . . . . . . . . . . 300 4.6.6. Operacio´ndeinsercio´n . . . . . . . . . . . . . . . . . 303 4.6.7. Operacio´ndeborrado . . . . . . . . . . . . . . . . . . 303 4.6.8. Recorridoenela´rbol . . . . . . . . . . . . . . . . . . . 305 4.6.9. Operacionesbinarias . . . . . . . . . . . . . . . . . . 306 4.6.10.Detallesdeimplementacio´n . . . . . . . . . . . . . . . 307 4.6.11.Tiemposdeejecucio´n . . . . . . . . . . . . . . . . . . 312 4.6.12.Balanceodela´rbol . . . . . . . . . . . . . . . . . . . . 312 5. Ordenamiento 315 5.1. Introduccio´n . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 5.1.1. Relacionesdeordende´biles . . . . . . . . . . . . . . . 315 5.1.2. Signaturadelasrelacionesdeorden.Predicadosbina- rios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317 5.1.3. Relacionesdeordeninducidasporcomposicio´n . . . . 321 5.1.4. Estabilidad . . . . . . . . . . . . . . . . . . . . . . . . 321 5.1.5. Primerasestimacionesdeeficiencia . . . . . . . . . . . 322 5.1.6. AlgoritmosdeordenamientoenlasSTL . . . . . . . . . 322 5.2. Me´todosdeordenamientolentos . . . . . . . . . . . . . . . . 323 5.2.1. Elme´tododelaburbuja . . . . . . . . . . . . . . . . . 323 5.2.2. Elme´tododeinsercio´n . . . . . . . . . . . . . . . . . . 325 5.2.3. Elme´tododeseleccio´n . . . . . . . . . . . . . . . . . 326 5.2.4. Comparacio´ndelosme´todoslentos . . . . . . . . . . . 326 5.2.5. Estabilidad . . . . . . . . . . . . . . . . . . . . . . . . 328 5.3. Ordenamientoindirecto . . . . . . . . . . . . . . . . . . . . . 328 5.3.1. Minimizarlallamadaafunciones . . . . . . . . . . . . 330 5.4. Elme´tododeordenamientora´pido,quick-sort . . . . . . . . . 331 5.4.1. Tiempodeejecucio´n.Casosextremos . . . . . . . . . 333 5.4.2. Eleccio´ndelpivote . . . . . . . . . . . . . . . . . . . . 335 5.4.3. Tiempodeejecucio´n.Casopromedio.. . . . . . . . . . 338 5.4.4. Dispersio´ndelostiemposdeejecucio´n . . . . . . . . . 339 5.4.5. Eleccio´naleatoriadelpivote . . . . . . . . . . . . . . . 341 5.4.6. Elalgoritmodeparticio´n . . . . . . . . . . . . . . . . . 342 5.4.7. Tiempodeejecucio´ndelalgoritmodeparticionamiento 343 5.4.8. Bu´squedadelpivoteporlamediana . . . . . . . . . . . 344 5.4.9. Implementacio´ndequick-sort . . . . . . . . . . . . . . 345 5.4.10.Estabilidad . . . . . . . . . . . . . . . . . . . . . . . . 346 5.4.11.Elalgoritmodeintercambio(swap) . . . . . . . . . . . 348 5.4.12.Tiempodeejecucio´ndelquick-sortestable . . . . . . . 351 5.5. Ordenamientopormont´ıculos . . . . . . . . . . . . . . . . . . 353 5.5.1. Elmont´ıculo . . . . . . . . . . . . . . . . . . . . . . . 354 5.5.2. Propiedades . . . . . . . . . . . . . . . . . . . . . . . 355 5.5.3. Insercio´n . . . . . . . . . . . . . . . . . . . . . . . . . 356 5.5.4. Costodelainsercio´n . . . . . . . . . . . . . . . . . . . 358 5.5.5. Eliminarelm´ınimo.Re-heap. . . . . . . . . . . . . . . 358 5.5.6. Costodere-heap . . . . . . . . . . . . . . . . . . . . . 360 5.5.7. Implementacio´nin-place . . . . . . . . . . . . . . . . . 360 5.5.8. Elprocedimientomake-heap. . . . . . . . . . . . . . . 361 5.5.9. Implementacio´n . . . . . . . . . . . . . . . . . . . . . 364 5.5.10.Propiedadesdelordenamientopormont´ıculo . . . . . . 366 5.6. Ordenamientoporfusio´n . . . . . . . . . . . . . . . . . . . . 366 5.6.1. Implementacio´n . . . . . . . . . . . . . . . . . . . . . 368 5.6.2. Estabilidad . . . . . . . . . . . . . . . . . . . . . . . . 369 5.6.3. Versio´nestabledesplit. . . . . . . . . . . . . . . . . . 370 5.6.4. Merge-sortparavectores . . . . . . . . . . . . . . . . 371 5.6.5. Ordenamientoexterno . . . . . . . . . . . . . . . . . . 373 5.7. Comparacio´n de algunas implementaciones de algoritmos de ordenamiento . . . . . . . . . . . . . . . . . . . . . . . . . . 374

Description:
Las tareas pueden realizarse en cualquier orden, pero dos tareas no pueden ejecutarse al mismo tiempo si acceden al mismo objeto, ya que los cambios hechos por una de ellas puede interferir con los cambios he- chos por la otra. Debe entonces desarrollarse un sistema que sincronice entre sı la
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.