You are on page 1of 7
v {[NDICE GENERAL Introduccién 1 11. ¢De qué trata este libro? 1 1.2. Repaso de matemiticas 3 1.2.1, 1.2.2. 123. 1.24, 125. Exponentes 3 Logaritmos 3 Series 4 Aritmética modular 6 La palabra conD 6 13. Breve introduccién ala recursion 9 - , Resumen 13 Ejercicios 13 - Referencias 15 Anilisis de algoritmos 17 2.1. Soporte matemético 17 2.2. Modelo 20 23. Qué analizar 20 24. — Célculo del tiempo de ejecucién 22 24.1. 2.4.2. 24.3. 2.4.4, 245, 246. Un ejemplo sencillo 23 Reglas generales 24 Soluciones al problema de la suma de la subsecuencia méxima 26 Logaritmos en el tiempo de ejecucién 32 Verificacion del andlisis 37 Un grano de sal 38 xi ii {NDICE GENERAL 3.1. 3.2. 3.3. 41. 42. 43, Resumen 39 Ejercicios 39 Referencias 44 Listas, pilas y colas 45 Tipos de datos abstractos (TDA) 45 EI TDA lista 46 3.2.1. —Implaritacién de listas a base de arreglos sencillos 47 3.2.2. Listas enlazadas 47 3.2.3. Detalles de programacién 48 3.24, Errorescomunes 54 3.2.5. Listas doblemente enlazadas 56 3.2.6. Listas enlazadas circularmente 56 3.2.7. Ejemplos 57 3.2.8. Implantacién de listas enlazadas a base de cursores 62 ELTDA pila 66 3.3.1, Elmodelo pila 66 3.3.2. Implantacién de pilas 68 33.3, Aplicaciones 74 ELTDA cola 83 El modelo cola 83 Implantacién de colas a base de arreglos 83 Aplicaciones de colas 87 Resumen 88 Fjercicios 88 Arboles 93 Preliminares 93 4.1.1. Implantacion de arboles 95 4.1.2. Recorridos de 4rboles con una aplicacién 95 Arboles binarios 100 42.1. Implantacién 100 4.2.2, Arboles de expresién 101 Eltda arbol de busqueda: Arboles binarios de biisqueda 105 43.4, Crear_vacio 106 43.2. Buscar 106 433, Buscar_min y buscar_méx 107 43.4, Insertar 108 44, 45. 46. 47. INDICE GENERAL xiii 43.5. Hliminar 109 43.6. Anélisis del caso promedio 111 Arboles AVL 114 44.1. Rotacién sencilla 116 4.4.2. Rotaciéndoble 119 Arboles desplegados 126 4.5.1. Una idea sencilla (que no funciona) 127 45.2. Despliege 129 Recorridos de arboles (de nuevo) 137 Arboles-B 139 Resumen 144 Fjercicios 145 Referencias 152 Dispersién 155 51. 5.2, 5.3. 5.4. 5.5. 5.6. Idea general 155 Funcién de dispersion 156 Dispersion abierta (encadenamiento separado) 159 Dispersién cerrada (direccionamiento abierto) 162 54.1 Exploracién lineal 162 5.4.2 Exploracién cuadratica 165 54.3 Dispersién doble 168 Redispersién 170 Dispersidn extensible 172 Resumen 175 Ejercicios 176 Referencias 179 Colas de prioridad (monticulos) 181 6.1. 6.2. 6.3. 6.4, Modelo 182 Implantaciones simples 182 Monticulo binario 183 63.1. Propiedad de la estructura 183 63.2. Propiedad de orden de monticulo 184 6.3.3, Operaciones basicas sobre monticulos 185 6.3.4. Otras operaciones sobre monticulos 189 Aplidaciones de las colas de prioridad 194 xiv INDICE GENERAL 6.5. 6.6. 67. 6.8. 7A 7.2. 73. 7A. 75. 7.6. 77. 78. 7.9. 7.40. 7AL 64.1. * Elproblema de la seleecién 194 64.2. Simulaci6n de eventos 196 Monticulos-d_ 197 Monticulos a izquierda 198 66.1. Propiedad de monticulo a izquierda 198 6.6.2. Operaciones sobre monticulos a izquierda 200 Monticulos oblicuos 205 Colas binomiales 207 68.1. Estructura de cola binomial 208 682. Operaciones sobre colas binomiales 209 683. Implantacién de colas binomiales. 213 Resumen 216 Ejercicios 216 Referencias 221 Ordenaci6n 221 Preliminares 224 Ordenacién por insercién 224 21. Elalgoritmo 224 Anilisis de la ordenacién por insercién 225 Una cota inferior para algoritmos de ordenacién simples 225 Ordenacién de Shell 227 74.1. Analisis del peor caso de la ordenacion dle Shell 228 Ordenacién por monticulo 231 Ordenacién por intercalacién 233 7.6.1. Andlisis de la ordenacién por intercalacién 236 Ordenacién répida 240 771. Seleccién del pivo' 77.2. Estrategia de parti 773. Archivos pequefios 245 7.74. Rutinas reales de ordenaci6n répida_245 77.5. Anilisis de la ordenacién répida 247 7.7.6. Unalgoritmo de seleccién con un tiempo esperado Enea 251 Ordenacién de registros grandes 252 Una cota inferior general para la ordenacién 253 79.1. Arboles de decision 253 Ordenacién por cubetas 255 Ordenacién externa 256 7ALI. zPor qué necesitamos algoritmos nuevos? 256 INDICE GENERAL. 7.11.2, Modelo para ordenacién externa 257 7.113. Elalgoritmo sencillo 257 7.11.4. Intercalacién de vias miltiples 258 7.11.5. Intercalacién polifasica 260 7.11.6. Seleccién de sustitucién 261 Resumen 262 Fjercicios 263 Referencias 267 EI TDA conjunto ajeno 271 8.1. Relaciones de equivalencia 271 82. El problema de la equivalencia dinamica 272 8.3. Estructura de datos bésica 274 8.4, Algoritmos de unién refinados 277 « 8.5. Compresién de caminos 280 86. Peor caso de Ja uni6n por rangos y compresion de caminos 281 86.1, Anélisis del algoritmo union/bisqueda 282 8.7. Unaaplicacion 288 Resumen 289 Fjercicios 289 Referencias 291 Algoritmos de grafos 293 9.1. Definiciones 293 9.1.1. Representacién de grafos 294 9.2. _- Ordenacién topolégica 296 9.3. Algoritmos del camino més corto 300 9.3.1, Caminos més cortos no ponderados 302 Algoritmo de Grafos con aristas de costo negativo 315 Grafos aciclicos 316 Camino més corto entre todos los pares 320 9.4. ‘Problemas de flujo en redes 320 94.1. Unalgoritmo simple de flujo maximo 321 95. Arbol de extension minimo 325 9.5.1. Algoritmo de Prim 326 xvi INDICE GENERAL 10 9.6 97 95.2. Algoritmo de Kruskal 330 Aplicaciones de la biisqueda en profundidad 332 1. Grafos no dirigidos 333 2. Biconectividad 334 3. Cireuitos de Euler 338 964, Grafos dirigidos 342 9.65. Localizacién de componentes fuertes 344 Introduccién ala complecién NP 346 971. Facil vs. dificil 346 972. LaclaseNP 347 9.73. Problemas NP completos 348 Resumen 351 Ejercicios 351 Referencias 357 ou ou 9. Técnicas de disefio de algoritmos 361 10.1. 10.3. 10.4, 10.5. Algoritmos 4vidos 361 Un problema simple de planificacién 362 Cédigos de Huffman 366 Empaquetamiento aproximado en recipientes 372 "Divide y vencerds” 381 10.2.1. Tiempo de ejecucién de algoritmos de "divide y vencerés" 382 10.2.2. El problema de los puntos mas cercanos 385 10.23. El problema de la seleccién 389 10.24. Mejoras te6ricas para problemas de aritmética 393 Programacién dinémica 397 10.3.1, Uso de una tabla en vez de la recursién 397 10.3.2. Ordenacién de multiplicaciones de matrices 400 103.3. Arbol binario de busqueda éptimo 402 103.4. Camino més corto entre todos los pares 407 Algoritmos aleatorizados 409 104.1. Generadores de niimeros aleatorios 410 10.4.2. Listas con saltos 414 10.43. Comprobacion de primalidad 417 Algoritmos con retroceso 418 105.1, El problema de la reconstrucci6n del camino de cuota 420 105.2. Juegos 425 Resumen 432 Fjercicios 432 Referencias 440 1 INDICE GENERAL xvii Anilisis amortizado 445 1.1. 11.2. 11.3, 11.4. 11.5. Un acertijo no relacionado 446 Colas binomiales 446 Monticulos oblicuos 452 Monticulos de Fibonacci 454 11.4.1, Corte de nodos en montfculo a izquierda 455 11.4.2. Fusion perezosa de colas binomiales 458 i. Las operaciones del monticulo de Fibonacci 461 11.4.4. Demostracién de la cota del tiempo 463 Arboles desplegados 465 Resumen 469 Ejercicios 470 Referencias 471 Vocabulario técnico bilingiie 473 Indice de materias 479

You might also like