
Algoritmos: análisis, diseño e implementación
By Luis Humberto González Guerra, Víctor Manuel De La Cueva, Pedro Óscar Pérez MuruetaLength7h 38m
About this audiobook
Este libro acompaña a la unidad de formación Análisis y diseño de algoritmos avanzados (TC2038) del modelo educativo TEC21 del Tecnológico de Monterrey. Aunque fue realizado desde y para la comunidad Tec, cuenta con los contenidos necesarios para que cualquier universidad que imparta materias relacionadas con análisis y diseño de algoritmos lo pueda utilizar como libro de texto.
Audiobook details
GenreTechnology
Length7 hrs 38 mins
Narrated byListen with 1,000+ voices
FormateBook with Audio
Publish dateNov 1, 2022
LanguageSpanish
Table of contents
1Acerca de este eBook
574.1 Notación especial para strings
2Capítulo 1. Herramientas matemáticas y análisis de algoritmos
584.2 Función Z (Z-function): 4.2.1 Cálculo de la función Z
31.1 Herramientas matemáticas básicas
594.3 Problema de la coincidencia de un patrón
41.1.1 Conjuntos
604.4 Algoritmo Knuth-Morris-Pratt (KMP)
51.1.2 Relaciones
614.4.1 Preprocesamiento del patrón: 4.4.2 Algoritmo KMP completo
Show all chaptersShow less
61.1.3 Funciones
624.5 El problema del palíndromo más largo
71.1.4 Series y sucesiones
634.5.1 Algoritmo naive para el palíndromo más largo: 4.5.2 Algoritmo de Manacher
81.2 Análisis de algoritmos
644.6 Hash Strings
91.2.1 Notación asintótica
654.7 Arreglo de sufijos (Suffix Array)
101.2.1.1 Notación Θ grande (Big-Θ)
664.8 Trie
111.2.1.2 Notación O grande (Big-O)
674.9 Ejercicios del capítulo 4
121.2.1.3 Notación Ω grande (Big-Ω): 1.2.2 Análisis de algoritmos iterativos
685.1 Problema del substring común más largo
131.2.2.1 La secuencia
695.2 Problema de la subsecuencia común más larga
141.2.2.2 La condicional
705.3 Problema del camino más corto
151.2.2.3 Los ciclos: 1.2.3 Análisis de algoritmos recursivos
715.3.1 Algoritmo de Dijkstra: 5.3.2 Algoritmo de Floyd
161.2.3.1 Planteamiento de fórmulas de recurrencia
725.4 Problema de la mochila
171.2.3.2 Solución de fórmulas de recurrencia
735.4.1 Algoritmo con programación dinámica
181.2.3.3 Teorema maestro
745.4.2 Algoritmo de divide y vencerás
191.2.4 Clasificación de problemas
755.4.3 Algoritmo de backtracking
201.3 Ejercicios del capítulo 1
765.4.4 Algoritmo de ramificación y poda (Branch & Bound)
21Capítulo 2. Estructuras de datos
775.5 Problema del viajero: 5.5.1 Algoritmo con ramificación y poda (Branch & Bound)
222.1 Introducción
785.6 Árbol de mínima expansión
232.1.1 Vectores
795.6.1 Algoritmo de Prim: 5.6.2 Algoritmo de Kruskal
242.1.2 Filas (queue)
805.7 Problema de la multiplicación encadenada de matrices: 5.7.1 Algoritmo de Godbole
252.1.3 Pilas (stack)
815.8 Problema del BST óptimo: 5.8.1 Algoritmo de Gilbert and Moore
262.1.4 Filas priorizadas (priority_queue)
825.9 Problema de coloreo de grafos: 5.9.1 Algoritmo de Welsh Powell
272.1.5 Conjuntos (unordered_set)
835.10 Problema de flujo máximo: 5.10.1 Algoritmo de Dinic
282.1.6 Mapas (unordered_map)
845.11 Algoritmos aleatorios
292.2 Grafos
855.11.1 Algoritmos aleatorizados y “Divide y vencerás”
302.2.1 Terminología de grafos
865.11.1.1 Encontrar la mediana
312.2.2 Representación de un grafo
875.11.1.2 Quicksort
322.2.2.1 Matriz de adyacencia: 2.2.2.2 Lista de adyacencias
885.12 Ejercicios del capítulo 5
332.2.2.3 Lista de arcos: 2.2.3 Recorridos de un grafo
89Capítulo 6. Geometría computacional
342.2.3.1 BFS – Breadth First Search (primero en anchura)
906.1 Proximidad e intersección
352.2.3.2 DFS – Depth First Search (primero en profundidad)
916.1.1 Punto
362.3 Conjunto disjunto (Disjoint-set)
926.1.2 Línea
37Capítulo 3. Técnicas de diseño de algoritmos
936.1.3 Segmento de línea
383.1 Divide y vencerás
946.1.4 Polígonos
393.1.1 Ejemplo de funcionamiento
956.2 Cascos convexos: 6.2.1 Algoritmo de exploración de Graham
403.1.2 Análisis de su complejidad
966.3 Diagramas de Voronoi y triangulación de Delaunay
413.1.3 El método maestro
976.3.1 Diagramas de Voronoi: 6.3.2 Triangulación de Delaunay
423.1.4 Ejemplo de implementación
986.4 Búsqueda geométrica
433.2 Algoritmos avaros
996.4.1 Árboles de rango (Range Trees): 6.4.2 Árboles Kd (Kd-Trees)
443.2.1 Ejemplo de funcionamiento
1006.5 Ejercicios del capítulo 6
453.2.2 Analizando la complejidad: 3.2.3 Ejemplo de implementación
101Capítulo 7. Técnicas de búsqueda avanzada
463.3 Programación dinámica
1027.1 Backtracking con Bitmask
473.3.1 Ejemplo de funcionamiento: la serie de Fibonacci
1037.2 Encontrarse en el medio
483.3.2 Análisis de complejidad: 3.3.3 Ejemplo de aplicación de la programación dinámica
1047.3 Búsqueda A*
493.4 Backtracking
1057.3.1 Una aplicación de A*
503.4.1 Ejemplo de funcionamiento
1067.3.2 Implementación de A*: 7.3.3 El algoritmo IDA*
513.4.2 Análisis de complejidad: 3.4.3 Ejemplo de implementación
1077.4 Búsqueda de escalada
523.5 Ramificación y poda
1087.4.1 Aplicación de búsqueda de escalada: 7.4.2 Implementación de búsqueda de escalada
533.5.1 Ejemplo de funcionamiento
1097.5 Recocido simulado
543.5.2 Análisis de complejidad: 3.5.3 Ejemplo de implementación
1107.5.1 Aplicación de recocido simulado: 7.5.2 Implementación de recocido simulado
553.6 Ejercicios del capítulo 3
1117.6 Ejercicios del capítulo 7
56Capítulo 4. Manejo de strings