Enviar búsqueda
Cargar
estructuras de datos
•
0 recomendaciones
•
1,551 vistas
universidad pedagogica nacional francisco morazan
Seguir
estructura de datos es una materia muy importante en la vida de un programador.
Leer menos
Leer más
Denunciar
Compartir
Denunciar
Compartir
1 de 22
Descargar ahora
Descargar para leer sin conexión
Recomendados
Geologia aplicada a la ingenieria civil
Geologia aplicada a la ingenieria civil
Saul Caro
MANUAL DE DISEÑO, CONSTRUCCIÓN, MANTENCIÓN Y MONITOREO DE TABLEROS DE MADERA ...
MANUAL DE DISEÑO, CONSTRUCCIÓN, MANTENCIÓN Y MONITOREO DE TABLEROS DE MADERA ...
Carlos Vial
Avanzado excel
Avanzado excel
rfms07
Apuntes Bases de Datos
Apuntes Bases de Datos
David Fernandez
Apuntes prac
Apuntes prac
Justo Lux
Unidad3 fds
Unidad3 fds
Denisse Jlbt
Excel, Tecnicas Avanzadas.pdf
Excel, Tecnicas Avanzadas.pdf
home
Matlab adv esp
Matlab adv esp
Luis Maury
Recomendados
Geologia aplicada a la ingenieria civil
Geologia aplicada a la ingenieria civil
Saul Caro
MANUAL DE DISEÑO, CONSTRUCCIÓN, MANTENCIÓN Y MONITOREO DE TABLEROS DE MADERA ...
MANUAL DE DISEÑO, CONSTRUCCIÓN, MANTENCIÓN Y MONITOREO DE TABLEROS DE MADERA ...
Carlos Vial
Avanzado excel
Avanzado excel
rfms07
Apuntes Bases de Datos
Apuntes Bases de Datos
David Fernandez
Apuntes prac
Apuntes prac
Justo Lux
Unidad3 fds
Unidad3 fds
Denisse Jlbt
Excel, Tecnicas Avanzadas.pdf
Excel, Tecnicas Avanzadas.pdf
home
Matlab adv esp
Matlab adv esp
Luis Maury
Pautas de Presentación del Proyecto de Investigación
Pautas de Presentación del Proyecto de Investigación
Patricia Ferrer
8522107351 pre calculo_2ed
8522107351 pre calculo_2ed
guest7d1c8e9
Manual de uti-2010.final
Manual de uti-2010.final
Javier Camacho
Sql server
Sql server
Jhon Enciso
Algoritmos programacion-python
Algoritmos programacion-python
Maria Jóse Vidal Morant
Algoritmos programacion-python
Algoritmos programacion-python
LUIS COAQUIRA
Introducción a la programación en c
Introducción a la programación en c
victdiazm
Bricolage manual de aligeramiento de estructuras con poliestireno
Bricolage manual de aligeramiento de estructuras con poliestireno
Wldr Colquehuanca
Manual microsoft office excel 2010
Manual microsoft office excel 2010
proneulsa
Tecnologia 7º grado
Tecnologia 7º grado
Sabri Lucania
Datos con r
Datos con r
Javier Arciniegas
Proyectos de inversion
Proyectos de inversion
Enrique Rosario Sotelo
Macros excel
Macros excel
Franeles
Whatsnew
Whatsnew
jose manuel
Estructura de Datos
Estructura de Datos
Gustavo Alejandro Galindo Rosales
Estructura de Datos
Estructura de Datos
MaJo2308
Tipos de listas en estructura de datos
Tipos de listas en estructura de datos
Carlos Alberto Cuervo Cardenas
concepto de estructuras de datos
concepto de estructuras de datos
Eduardo Robayo Castro
Pilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datos
Waldi Misael Saturno Encarnacion
Clase I Estructura de Datos
Clase I Estructura de Datos
guestc906c2
Estructura datos pilas y colas
Estructura datos pilas y colas
Eder Efrain Nieves Coronado
Clase 01
Clase 01
Juan Navia
Más contenido relacionado
La actualidad más candente
Pautas de Presentación del Proyecto de Investigación
Pautas de Presentación del Proyecto de Investigación
Patricia Ferrer
8522107351 pre calculo_2ed
8522107351 pre calculo_2ed
guest7d1c8e9
Manual de uti-2010.final
Manual de uti-2010.final
Javier Camacho
Sql server
Sql server
Jhon Enciso
Algoritmos programacion-python
Algoritmos programacion-python
Maria Jóse Vidal Morant
Algoritmos programacion-python
Algoritmos programacion-python
LUIS COAQUIRA
Introducción a la programación en c
Introducción a la programación en c
victdiazm
Bricolage manual de aligeramiento de estructuras con poliestireno
Bricolage manual de aligeramiento de estructuras con poliestireno
Wldr Colquehuanca
Manual microsoft office excel 2010
Manual microsoft office excel 2010
proneulsa
Tecnologia 7º grado
Tecnologia 7º grado
Sabri Lucania
Datos con r
Datos con r
Javier Arciniegas
Proyectos de inversion
Proyectos de inversion
Enrique Rosario Sotelo
Macros excel
Macros excel
Franeles
Whatsnew
Whatsnew
jose manuel
La actualidad más candente
(14)
Pautas de Presentación del Proyecto de Investigación
Pautas de Presentación del Proyecto de Investigación
8522107351 pre calculo_2ed
8522107351 pre calculo_2ed
Manual de uti-2010.final
Manual de uti-2010.final
Sql server
Sql server
Algoritmos programacion-python
Algoritmos programacion-python
Algoritmos programacion-python
Algoritmos programacion-python
Introducción a la programación en c
Introducción a la programación en c
Bricolage manual de aligeramiento de estructuras con poliestireno
Bricolage manual de aligeramiento de estructuras con poliestireno
Manual microsoft office excel 2010
Manual microsoft office excel 2010
Tecnologia 7º grado
Tecnologia 7º grado
Datos con r
Datos con r
Proyectos de inversion
Proyectos de inversion
Macros excel
Macros excel
Whatsnew
Whatsnew
Destacado
Estructura de Datos
Estructura de Datos
Gustavo Alejandro Galindo Rosales
Estructura de Datos
Estructura de Datos
MaJo2308
Tipos de listas en estructura de datos
Tipos de listas en estructura de datos
Carlos Alberto Cuervo Cardenas
concepto de estructuras de datos
concepto de estructuras de datos
Eduardo Robayo Castro
Pilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datos
Waldi Misael Saturno Encarnacion
Clase I Estructura de Datos
Clase I Estructura de Datos
guestc906c2
Estructura datos pilas y colas
Estructura datos pilas y colas
Eder Efrain Nieves Coronado
Clase 01
Clase 01
Juan Navia
Estructura de datos
Estructura de datos
Carlos Patiño
Estructura de datos
Estructura de datos
Marcos Rosales
Tipos de Redes
Tipos de Redes
princobudget
Rebeldía en los adolecentes
Rebeldía en los adolecentes
Charlie1208
Importancia de las listas Estructura de datos.
Importancia de las listas Estructura de datos.
xaviercamposm
Estructuras de Datos y Algoritmos - Introducción
Estructuras de Datos y Algoritmos - Introducción
rcad
La rebeldía de los adolescentes.
La rebeldía de los adolescentes.
Betsa Ahee
Unidad 1 introducción a las estructuras de datos
Unidad 1 introducción a las estructuras de datos
Urban Skate House
Entendiendo estructura de datos
Entendiendo estructura de datos
yacomas
Rebeldes
Rebeldes
Victor Hugo Cueva Sanchez
Diapositiva de l estructura de datos
Diapositiva de l estructura de datos
mariajuly
Introducción a Turbo Pascal
Introducción a Turbo Pascal
Zamantha Gonzalez Universidad Nacional Abierta
Destacado
(20)
Estructura de Datos
Estructura de Datos
Estructura de Datos
Estructura de Datos
Tipos de listas en estructura de datos
Tipos de listas en estructura de datos
concepto de estructuras de datos
concepto de estructuras de datos
Pilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datos
Clase I Estructura de Datos
Clase I Estructura de Datos
Estructura datos pilas y colas
Estructura datos pilas y colas
Clase 01
Clase 01
Estructura de datos
Estructura de datos
Estructura de datos
Estructura de datos
Tipos de Redes
Tipos de Redes
Rebeldía en los adolecentes
Rebeldía en los adolecentes
Importancia de las listas Estructura de datos.
Importancia de las listas Estructura de datos.
Estructuras de Datos y Algoritmos - Introducción
Estructuras de Datos y Algoritmos - Introducción
La rebeldía de los adolescentes.
La rebeldía de los adolescentes.
Unidad 1 introducción a las estructuras de datos
Unidad 1 introducción a las estructuras de datos
Entendiendo estructura de datos
Entendiendo estructura de datos
Rebeldes
Rebeldes
Diapositiva de l estructura de datos
Diapositiva de l estructura de datos
Introducción a Turbo Pascal
Introducción a Turbo Pascal
Similar a estructuras de datos
Manual de C
Manual de C
Andy Juan Sarango Veliz
Manual de c# 2
Manual de c# 2
Camila Liliana Perez Perez
Introducción a la programación en C
Introducción a la programación en C
Andy Juan Sarango Veliz
Introduccion poo con_java
Introduccion poo con_java
Robert Wolf
Algoritmos y programacion_i_-_con_lengua
Algoritmos y programacion_i_-_con_lengua
Darío Herrera
Hibernate reference
Hibernate reference
Elvbis Humareda Romero
manual de Usuario Calener.pdf
manual de Usuario Calener.pdf
Santiago Montero Rojas
manual de Usuario Calener.pdf
manual de Usuario Calener.pdf
Santiago Montero Rojas
Manual de programacion_con_robots_para_la_escuela
Manual de programacion_con_robots_para_la_escuela
Angel De las Heras
Manual de programacion_con_robots_para_la_escuela
Manual de programacion_con_robots_para_la_escuela
Secretaria de Educacion Publica
Postgres programmer josue
Postgres programmer josue
Josué Ruiz
Hefesto v2.1
Hefesto v2.1
Byron Hermel Cayo Tipan
Una guía comprensiva de la Arquitectura de Componentes de Zope
Una guía comprensiva de la Arquitectura de Componentes de Zope
Covantec R.L.
15225891 Manual De Integracion V10
15225891 Manual De Integracion V10
guest1b9f18d3
Cómo Diseño puestos de trabajo.pdf
Cómo Diseño puestos de trabajo.pdf
HenryMeja4
Fwpa doc-desarrollo
Fwpa doc-desarrollo
ciriako
Pensar en cpp
Pensar en cpp
JuliocMendieta
Computacion tic integracion
Computacion tic integracion
Jhonatan C-l
teoria_Simulacion.pdf
teoria_Simulacion.pdf
UGMA
Bases de-datos
Bases de-datos
sabu47
Similar a estructuras de datos
(20)
Manual de C
Manual de C
Manual de c# 2
Manual de c# 2
Introducción a la programación en C
Introducción a la programación en C
Introduccion poo con_java
Introduccion poo con_java
Algoritmos y programacion_i_-_con_lengua
Algoritmos y programacion_i_-_con_lengua
Hibernate reference
Hibernate reference
manual de Usuario Calener.pdf
manual de Usuario Calener.pdf
manual de Usuario Calener.pdf
manual de Usuario Calener.pdf
Manual de programacion_con_robots_para_la_escuela
Manual de programacion_con_robots_para_la_escuela
Manual de programacion_con_robots_para_la_escuela
Manual de programacion_con_robots_para_la_escuela
Postgres programmer josue
Postgres programmer josue
Hefesto v2.1
Hefesto v2.1
Una guía comprensiva de la Arquitectura de Componentes de Zope
Una guía comprensiva de la Arquitectura de Componentes de Zope
15225891 Manual De Integracion V10
15225891 Manual De Integracion V10
Cómo Diseño puestos de trabajo.pdf
Cómo Diseño puestos de trabajo.pdf
Fwpa doc-desarrollo
Fwpa doc-desarrollo
Pensar en cpp
Pensar en cpp
Computacion tic integracion
Computacion tic integracion
teoria_Simulacion.pdf
teoria_Simulacion.pdf
Bases de-datos
Bases de-datos
estructuras de datos
1.
POLITEXT Xavier Franch Gutiérrez Estructuras
de datos Especificación, diseño e implementación EDICIONS UPC
2.
A mis padres,
por todo lo que me han dado A Cristina, por lo que nos espera juntos A Miguel Angel, presente en mis recuerdos
3.
Índice
7 __________________________________________________________________________________ Índice Presentación ...........................................................................................................11 Prólogo ....................................................................................................................13 Capítulo 1 Especificación de tipos abstractos de datos Presentación...............................................................................................................19 1.1 Introducción a los tipos abstractos de datos .........................................................19 1.2 Modelo de un tipo abstracto de datos..................................................................25 1.2.1 Signaturas y términos...............................................................................26 1.2.2 Modelos asociados a una signatura...........................................................29 1.2.3 Evaluación de un término dentro de un álgebra .........................................32 1.2.4 Ecuaciones y especificaciones algebraicas................................................34 1.2.5 Modelo inicial de una especificación..........................................................37 1.2.6 Otros modelos posibles ...........................................................................43 1.3 Construcción sistemática de especificaciones......................................................45 1.3.1 Introducción al uso de especificaciones ....................................................45 1.3.2 Clasificación de las operaciones de una especificación...............................46 1.3.3 Método general de construcción de especificaciones................................47 1.4 Ecuaciones condicionales, símbolos auxiliares y errores.......................................48 1.4.1 Ecuaciones condicionales........................................................................48 1.4.2 Tipos y operaciones auxiliares ..................................................................50 1.4.3 Tratamiento de errores.............................................................................51 1.5 Estudio de casos ...............................................................................................53 1.5.1 Especificación de algunos tipos de datos clásicos......................................54 1.5.2 Especificación de una tabla de símbolos ...................................................60 1.5.3 Especificación de un sistema de reservas de vuelos ..................................63 1.6 Estructuración de especificaciones.....................................................................66 1.6.1 Uso de especificaciones ..........................................................................66 1.6.2 Ocultación de símbolos............................................................................67 1.6.3 Renombramiento de símbolos..................................................................68 1.6.4 Parametrización e instanciación ................................................................69 1.6.5 Combinación de los mecanismos..............................................................75 1.7 Ejecución de especificaciones............................................................................76 1.7.1 La deducción ecuacional..........................................................................77 1.7.2 La reescritura...........................................................................................78 Ejercicios ....................................................................................................................80 © Los autores, 2002; © Edicions UPC, 2002.
4.
8
Estructuras de datos. Especificación, diseño e implementación __________________________________________________________________________________ Capítulo 2 Implementación de tipos abstractos de datos Presentación...............................................................................................................89 2.1 El lenguaje de implementación ...........................................................................89 2.1.1 Representación de tipos..........................................................................91 2.1.2 Sentencias..............................................................................................93 2.1.3 Funciones y acciones ..............................................................................95 2.1.4 Ejemplo: una implementación para los conjuntos.......................................97 2.2 Corrección de una implementación .....................................................................98 2.3 Estudio de la eficiencia de las implementaciones................................................108 2.3.1 Notaciones asintóticas ...........................................................................111 2.3.2 Órdenes de magnitud más habituales .....................................................116 2.3.3 Análisis asintótico de la eficiencia temporal ..............................................118 2.3.4 Análisis asintótico de la eficiencia espacial ...............................................121 2.4 Conflicto entre eficiencia y modularidad.............................................................124 2.4.1 Falta de funcionalidad en la signatura ......................................................125 2.4.2 Tipos abstractos de datos recorribles ......................................................128 2.4.3 Tipos abstractos de datos abiertos..........................................................136 Ejercicios ..................................................................................................................148 Capítulo 3 Secuencias Presentación.............................................................................................................151 3.1 Pilas................................................................................................................151 3.1.1 Especificación.......................................................................................153 3.1.2 Implementación.....................................................................................154 3.2 Colas...............................................................................................................158 3.2.1 Especificación.......................................................................................158 3.2.2 Implementación.....................................................................................159 3.3 Listas ..............................................................................................................162 3.3.1 Especificación de las listas con punto de interés......................................162 3.3.2 Implementación de las listas con punto de interés....................................166 3.3.3 Implementación de estructuras de datos con punteros.............................173 3.3.4 Transparencia de la representación usando punteros ..............................178 3.3.5 Implementaciones encadenadas y TAD abiertos ......................................186 Ejercicios ..................................................................................................................189 Capítulo 4 Árboles Presentación.............................................................................................................195 4.1 Modelo y especificación ...................................................................................196 4.1.1 Modelo de árbol general.........................................................................196 4.1.2 Modelo de árbol binario..........................................................................201 4.1.3 Modelo de árbol con punto de interés.....................................................202 © Los autores, 2002; © Edicions UPC, 2002.
5.
Índice
9 __________________________________________________________________________________ 4.2 Implementación ...............................................................................................204 4.2.1 Implementación de los árboles binarios ...................................................204 4.2.2 Implementación de los árboles generales................................................213 4.2.3 Variaciones en los otros modelos de árboles............................................218 4.2.4 Estudio de eficiencia espacial.................................................................218 4.3 Recorridos.......................................................................................................219 4.3.1 Recorridos en profundidad de los árboles binarios...................................220 4.3.2 Árboles binarios enhebrados..................................................................224 4.3.3 Recorrido por niveles de los árboles binarios ...........................................228 4.4 Colas prioritarias...............................................................................................231 4.4.1 Implementación por árboles parcialmente ordenados y casi completos......233 4.4.2 Aplicación: un algoritmo de ordenación...................................................238 Ejercicios ..................................................................................................................243 Capítulo 5 Tablas Presentación.............................................................................................................249 5.1 Especificación .................................................................................................250 5.1.1 Funciones totales..................................................................................250 5.1.2 Conjuntos.............................................................................................252 5.1.3 Tablas y conjuntos recorribles.................................................................252 5.2 Implementación ...............................................................................................254 5.2.1 Implementación por listas desordenadas.................................................254 5.2.2 Implementación por listas ordenadas.......................................................255 5.2.3 Implementación por vectores de acceso directo.......................................257 5.2.4 Implementación por tablas de dispersión.................................................258 5.3 Funciones de dispersión..................................................................................259 5.3.1 Funciones de traducción de cadenas a enteros.......................................260 5.3.2 Funciones de restricción de un entero en un intervalo .............................263 5.3.3 Funciones de traducción de cadenas a enteros en un intervalo ................265 5.3.4 Caracterización e implementación de las funciones de dispersión.............266 5.4 Organizaciones de las tablas de dispersión........................................................270 5.4.1 Tablas de dispersión encadenadas .........................................................270 5.4.2 Tablas de dispersión de direccionamiento abierto ....................................278 5.4.3 Caracterización e implementación de los métodos de redispersión ...........285 5.4.4 Variantes de las tablas de dispersión de direccionamiento abierto .............288 5.4.5 Tablas dedispersión coalescentes ..........................................................289 5.4.6 Evaluación de las diferentes organizaciones............................................291 5.4.7 Elección de una organización de dispersión............................................292 5.4.8 Las organizaciones de dispersión en tablas recorribles y tablas abiertas.....295 5.4.9 Inconvenientes de la dispersión .............................................................296 5.5 Árboles binarios de búsqueda ..........................................................................297 5.6 Árboles AVL ....................................................................................................303 Ejercicios ..................................................................................................................315 © Los autores, 2002; © Edicions UPC, 2002.
6.
10
Estructuras de datos. Especificación, diseño e implementación __________________________________________________________________________________ Capítulo 6 Relaciones binarias y grafos Presentación.............................................................................................................319 6.1 Relaciones binarias ..........................................................................................320 6.1.1 Especificación.......................................................................................320 6.1.2 Implementación.....................................................................................324 6.2 Relaciones de equivalencia ..............................................................................332 6.2.1 Implementaciones lineales .....................................................................335 6.2.2 Implementación arborescente ................................................................340 6.2.3 Compresión de caminos.........................................................................342 6.3 Grafos .............................................................................................................346 6.3.1 Modelo y especificación.........................................................................348 6.3.2 Implementación.....................................................................................352 6.4 Recorridos de grafos........................................................................................360 6.4.1 Recorrido en profundidad ......................................................................361 6.4.2 Recorrido en anchura.............................................................................364 6.4.3 Recorrido en ordenación topológica .......................................................365 6.5 Búsqueda de caminos mínimos ........................................................................369 6.5.1 Camino más corto de un nodo al resto.....................................................370 6.5.2 Camino más corto entre todo par de nodos..............................................376 6.6 Árboles de expansión minimales.......................................................................379 6.6.1 Algoritmo de Prim ..................................................................................381 6.6.2 Algoritmo de Kruskal..............................................................................384 Ejercicios ..................................................................................................................387 Capítulo 7 Uso y diseño de tipos abstractos de datos Presentación.............................................................................................................397 7.1 Uso de tipos abstractos de datos existentes ......................................................398 7.1.1 Un evaluador de expresiones.................................................................399 7.1.2 Un gestor de memoria dinámica ..............................................................405 7.1.3 Un planificador de soluciones.................................................................412 7.2 Diseño de nuevos tipos abstractos de datos......................................................420 7.2.1 Una tabla de símbolos............................................................................420 7.2.2 Una cola compartida...............................................................................423 7.2.3 Una emisora de televisión.......................................................................430 Ejercicios ..................................................................................................................439 Bibliografía ............................................................................................................453 Índice temático .....................................................................................................455 Índice de universos ..............................................................................................461 © Los autores, 2002; © Edicions UPC, 2002.
7.
Presentación
11 __________________________________________________________________________________ Presentación Cuando me piden que escriba el prólogo de un libro, me da un poco de vergüenza, ya que se trata de una de mis asignaturas pendientes: he tenido hijos y he plantado árboles, y también he escrito muchas líneas, pero nunca un libro. Así que hacer de prologuista sin haber sido autor me provoca un cierto sentimiento de jubilación anticipada. En este caso, no obstante, este sentimiento se confunde con una fuerte sensación de orgullo y satisfacción, provocada por el excelente trabajo de alguien que, en parte, me permito considerar discípulo mío en el sentido ancestral de la palabra. Xavier Franch, autor de este libro, ha sido alumno mío durante sus estudios en la Facultat d'Informàtica de Barcelona, colaborador becario mientras era estudiante, después alumno de doctorado y compañero de departamento y, para terminar, siempre hemos trabajado juntos en proyectos de investigación y he dirigido su tesis doctoral. Tengo motivos, pues, para sentir esta satisfacción. El texto en cuestión, además de actualizar el contenido de las materias ya clásicas de estructuras de datos, se adapta perfectamente al temario de una asignatura de los planes de estudio vigentes en la Facultat d'Informàtica de Barcelona, lo cual justificaría de por sí su existencia. Pero, además, por su actualización del tema puede servir, total o parcialmente, para otros estudios de informática o para cualquier asignatura sobre estructuras de datos de otros planes de estudios en la Universitat Politècnica de Catalunya o en otras universidades. Y, como valor añadido, es destacable la experiencia del autor en la docencia de la asignatura “Estructuras de Datos y Algoritmos”, de los nuevos planes estudio vigentes en la Facultat d'Informàtica de Barcelona. La notación empleada tanto en las especificaciones como en las implementaciones de las estructuras de datos es Merlí, lenguaje emblemático del proyecto Excalibur y notación que, desde hace ya muchos años, ha caracterizado las diversas enseñanzas algorítmicas en nuestra facultad. Por todo lo dicho es obvio que no soy nada imparcial a la hora de juzgar el trabajo del profesor Xavier Franch, pero también tengo claro que la parcialidad es una pequeña licencia que, en una presentación, nos podemos permitir. © Los autores, 2002; © Edicions UPC, 2002.
8.
12
Estructuras de datos. Especificación, diseño e implementación __________________________________________________________________________________ Como ya he dicho, un excelente texto, que pone al día un tema clásico en informática. Mi enhorabuena al autor. Y también al lector, que encontrará una muestra de aquello que el profesor Turski decía hace muchos años: “no hay nada más práctico que una buena teoría”. Sobre todo si se explica desde un conocimiento sólido de la práctica. Pere Botella i López Catedrático del Departamento de Lenguajes y Sistemas Informáticos (U.P.C.) Decano de la Facultat d'Informàtica de Barcelona (U.P.C.) © Los autores, 2002; © Edicions UPC, 2002.
9.
Prólogo
13 __________________________________________________________________________________ Prólogo El estudio de las estructuras de datos es casi tan antiguo como el nacimiento de la programación, y se convirtió en un tema capital en este ámbito desde finales de la década de los 60. Como es lógico, una de las consecuencias de este estudio es la aparición de una serie de libros de gran interés sobre el tema, algunos de ellos ciertamente excelentes y que se han convertido en piedras angulares dentro de la ciencia de la programación (citemos, por ejemplo, los textos de D.E. Knuth; de A.V. Aho, J. Hopcroft y J.D. Ullman; de E. Horowitz y D. Sahni; de N. Wirth; y, recientemente, de T.H. Cormen, C.E. Leiserson i R.L. Rivest). Ahora bien, el progreso en el campo de la programación ha dado como resultado la aparición de nuevos conceptos, algunos de los cuales no se han consolidado hasta la segunda mitad de la década de los 80. Muchos de estos conceptos están íntimamente interrelacionados con el ámbito de las estructuras de datos, y ésta es la razón por la cual los libros antes citados han quedado actualmente un poco desfasados en lo que respecta al método de desarrollo de programas que siguen, incluso en sus reediciones más recientes. En este contexto, he confeccionado el libro "Estructuras de datos. Especificación, diseño e implementación", que trata el estudio de las estructuras de datos dentro del marco de los tipos abstractos de datos. La adopción de este enfoque se inscribe en una metodología de desarrollo modular de programas, que abunda en diferentes propiedades interesantes en la producción industrial de aplicaciones (corrección, mantenimiento, etc.), y permite enfatizar diversos aspectos importantes hoy en día: la necesidad de especificar el software, la separación entre la especificación y la implementación, la construcción de bibliotecas de componentes, la reusabilidad del software, etc. Diversos autores han explorado esta metodología (sobre todo, desde las aportaciones de B. Liskov y J.V. Guttag), pero sin aplicarla en el contexto de las estructuras de datos. Destinatario El libro ha sido concebido sobre todo como un texto de ayuda para alumnos de una asignatura típica de estructura de datos en un primer ciclo de ingeniería en informática; también se puede considerar adecuado para cualquier otra titulación técnica superior o media con contenido informático. A tal efecto, cubre el temario habitual de esta asignatura en tono autoexplicativo, y se ilustra con numerosas figuras, especificaciones y programas. © Los autores, 2002; © Edicions UPC, 2002.
10.
14
Estructuras de datos. Especificación, diseño e implementación __________________________________________________________________________________ Dependiendo de los objetivos de la asignatura, el formalismo asociado al estudio de estos temas puede ser más o menos acusado; sea como sea, el libro puede usarse como texto básico de consulta. Ahora bien, los temas que aparecen en el libro se han desarrollado con más profundidad que la estrictamente requerida por el alumno y, por ello, hay más posibles destinatarios. Por un lado, el mismo profesor de la asignatura, porque puede encontrar en un único volumen los aspectos de especificación y de diseño que no acostumbran a aparecer en los libros de estructuras de datos; además, la inclusión de especificaciones y de programas libera al docente de la necesidad de detallarlos en sus clases. Por otro lado, cualquier informático que quiera profundizar en el estudio de las estructuras de datos más allá de su aspecto puramente de programación, puede encontrar aquí una primera referencia. Contenido En el primer capítulo se introduce el concepto de tipo abstracto de datos. Después de analizar su repercusión en el diseño de programas, nos centramos en el estudio de su especificación formal, que es la descripción exacta de su comportamiento. De entre las diferentes opciones existentes de especificación formal, se sigue la llamada especificación ecuacional interpretada con semántica inicial. El capítulo muestra un método general para construir especificaciones para los tipos, les otorga un significado matemático (como álgebras heterogéneas) y también estudia su estructuración, y aquí destaca la posibilidad de definir tipos genéricos, profusamente utilizados a lo largo del libro. En el segundo capítulo se estudian diversos aspectos sobre la implementación de los tipos de datos. El proceso de implementación se lleva a cabo cuando existe una especificación para el tipo; la segunda sección insiste precisamente en la relación formal entre los dos conceptos, especificación e implementación. También se introduce un punto clave en el análisis de los algoritmos y las estructuras de datos que se desarrollarán posteriormente: el estudio de su eficiencia a través de las denominadas notaciones asintóticas. Por último, se muestran algunas situaciones de la programación con tipos abstractos de datos que pueden causar problemas de eficiencia, y se formulan algunos patrones de comportamiento para solucionar estos problemas. Las diversas familias de estructuras de datos se introducen en los cuatro capítulos siguientes: se estudian las secuencias; los árboles; las tablas y los conjuntos; y las relaciones binarias y los grafos. Para todas ellas se sigue el mismo método: descripción informal, formulación de un modelo, especificación algebraica del tipo e implementaciones más habituales. Por lo que se refiere a estas últimas, se detalla la representación del tipo y la codificación de las operaciones (hasta el último detalle y buscando la máxima legibilidad posible mediante el uso de funciones auxiliares, diseño descendente, comentarios, etc.), siempre en el caso de implementación en memoria interna; a continuación, se estudia su eficiencia tanto temporal como espacial y se proponen varios ejercicios. © Los autores, 2002; © Edicions UPC, 2002.
11.
Prólogo
15 __________________________________________________________________________________ Por último, el capítulo final muestra la integración del concepto de tipo abstracto de datos dentro del desarrollo modular de programas, y lo hace bajo dos vertientes: el uso de los tipos abstractos previamente introducidos y el diseño de nuevos tipos de datos. El estudio se hace a partir de seis ejemplos escogidos cuidadosamente, que muestran la confrontación de los criterios de modularidad y eficiencia en el diseño de programas. Para leer el texto, son necesarios unos conocimientos fundamentales en los campos de las matemáticas, de la lógica y de la programación. De las matemáticas, los conceptos básicos de conjunto, producto cartesiano, relación, función y otros similares. De la lógica, el concepto de predicado, los operadores booleanos y las cuantificaciones universal y existencial. De la programación, la habilidad de codificar usando un lenguaje imperativo cualquiera (Pascal, C, Ada o similares) que conlleva el conocimiento de los constructores de tipos de datos (tuplas y vectores), de las estructuras de control de flujo (asignaciones, secuencias, alternativas y bucles) y de los mecanismos de encapsulamiento de código (acciones y funciones). Es importante destacar algunos puntos que el libro no trata, si bien por su temática se podría haber considerado la posibilidad de incluirlos. Primero, no aparecen algunas estructuras de datos especialmente eficientes que, por su complejidad, superan el nivel de una asignatura de primer ciclo de ingeniería; por ejemplo, diversas variantes de montículos y de árboles de búsqueda (Fibonnaci Heaps, Red-Black Trees, Splay Trees, etc.) y de dispersión (Perfect Hashing, principalmente). También se excluyen algunas otras estructuras que se aplican principalmente a la memoria secundaria, como pueden ser las diversas variantes de árboles B y también los esquemas de dispersión incremental (Extendible Hashing, Linear Hashing, etc.). Tampoco se tratan en el libro algunos temas característicos de la programación, como pueden ser el estudio de diversas familias de algoritmos (Greedy Algorithms, Dynamic Programming, etc.) de los cuales constan algunos casos particulares en el capítulo de grafos; o como las técnicas de derivación y de verificación formal de programas, si bien se usan algunos elementos (invariantes de bucles, precondiciones y postcondiciones de funciones, etc.). Hay diversos libros de gran interés que sí tratan en profundidad estos temas, cuyas referencias aparecen convenientemente en este texto. Por último, no se utilizan los conceptos propios de la programación orientada a objetos (básicamente, herencia y vinculación dinámica) para estructurar los tipos de datos formando jerarquías; se ha preferido el enfoque tradicional para simplificar el volúmen de la obra y no vernos obligados a introducir la problemática inherente a este paradigma de la programación. Bibliografía Las referencias bibliográficas del libro se pueden dividir en dos grandes apartados. Por un lado se citan todos aquellos artículos que son de utilidad para temas muy concretos, cuya referencia aparece integrada en el texto en el mismo lugar en que se aplican. Por el otro, hay diversos textos de interés general que cubren uno o más capítulos del libro y que aparecen dentro del apartado de bibliografía; estos libros han de considerarse como los más destacables en la confección de esta obra y no excluye que haya otros, igualmente buenos, © Los autores, 2002; © Edicions UPC, 2002.
12.
16
Estructuras de datos. Especificación, diseño e implementación __________________________________________________________________________________ que no se citan, bien porque su temática es muy similar a alguno de los que sí aparecen, bien porque el desarrollo de los temas es diferente al que se sigue aquí. Lenguaje En cualquier texto sobre programación, es fundamental la elección del lenguaje utilizado como vehículo para codificar (y, en este libro, también para especificar) los esquemas que se introducen. En vez de especificar y programar usando algun lenguaje existente, he preferido emplear la notación Merlí, diseñada por diversos miembros del Departament de Llenguatges i Sistemes Informàtics (antiguamente, Departament de Programació) de la Universitat Politècnica de Catalunya. Esta notación ha sido utilizada desde principios de los años 80 por los profesores del departamento en la impartición de las asignaturas de programación de los primeros niveles de las titulaciones en informática y ha demostrado su validez como herramienta para el aprendizaje de la programación. Las razones de esta elección son básicamente dos: por un lado, disponer de una notación abstracta que permita expresar fácilmente los diferentes esquemas que se introducen sin ningún tipo de restricción impuesta por el lenguaje; por otro, usar una sintaxis muy parecida tanto para especificar como para implementar los tipos de datos (el hecho de que el mismo lenguaje se pueda usar desde estos dos niveles diferentes refuerza la relación entre la especificación y la implementación de los tipos de datos, que es uno de los objetivos del texto). El inconveniente principal es la necesidad de traducir las especificaciones y los programas que aparecen en este texto a los lenguajes que el lector tenga a su disposición; ahora bien, este inconveniente no parece muy importante, dado que Merlí es fácilmente traducible a cualquier lenguaje comercial (a algunos mejor que a otros, eso sí), y que podría haber aparecido el mismo problema fuera cual fuera el lenguaje de trabajo elegido. Terminología Dado que, hoy en día, el idioma dominante en el ámbito de la informática es el inglés, he hecho constar las acepciones inglesas junto a aquellos vocablos que denotan conceptos básicos y universalmente aceptados; de esta manera, el lector puede relacionar rápidamente estos conceptos dentro de su conocimiento de la materia o, en el caso de que sea el primer libro que lee sobre estructuras de datos, adquirir el vocabulario básico para la lectura posterior de textos ingleses. Los términos ingleses se escriben siempre en singular independientemente del género con el que se usen en castellano. Por el mismo motivo, se utilizan de manera consciente varios anglicismos usuales en el ámbito de la programación para traducir algunos términos ingleses. Dichos anglicismos se limitan a lo estrictamente imprescindible, pero he creído conveniente seguir la terminología técnica habitual en vez de introducir vocablos más correctos desde el punto de vista linguístico pero no tan profusamente usados. © Los autores, 2002; © Edicions UPC, 2002.
13.
Prólogo
17 __________________________________________________________________________________ Agradecimientos Este libro es el resultado de una experiencia personal de varios años de docencia en las asignaturas de estructuras de datos en los planes de licenciatura e ingeniería de la Facultat d'Informàtica de Barcelona de la Universitat Politècnica de Catalunya, por lo que refleja un gran número de comentarios y aportaciones de todos los profesores que, a lo largo de este período, han sido compañeros de asignatura. Quizás el ejemplo más paradigmático sea la colección de ejercicios propuestos en el texto, muchos de ellos provinentes de las listas de ejercicios y exámenes de las asignaturas citadas. Para ellos mi más sincero agradecimiento. En particular, quiero citar al profesor Ricardo Peña por su ayuda durante el primer año que impartí la asignatura "Estructuras de la Información"; a los profesores y profesoras M.T. Abad, J.L. Balcázar, J. Larrosa, J. Marco, C. Martínez, P. Meseguer, T. Moreno, P. Nivela, R. Nieuwenhuis y F. Orejas por la revisión de secciones, versiones preliminares y capítulos enteros del texto y por la detección de errores; y, sobre todo, al profesor Xavier Burgués por todos los años de continuos intercambios de opinión, sugerencias y críticas. A todos ellos, gracias. Contacto El lector interesado puede contactar con el autor en la dirección electrónica franch@lsi.upc.es, o bien dirigiéndose al departamento de Llenguatges i Sistemes Informàtics de la Universitat Politècnica de Catalunya. En especial, el autor agradecerá la notificación de cualquier errata detectada en el texto, así como toda sugerencia o crítica a la obra. También existe una página web con información sobre el libro, que se intenta mantener actualizada, cuya dirección es http://www-lsi.upc.es/~franch/publis/libro-eds.html. Barcelona, 10 de Junio de 1996 (primera edición) 12 de Noviembre de 2001 (última edición) © Los autores, 2002; © Edicions UPC, 2002.
14.
Bibliografía
453 __________________________________________________________________________________ Bibliografía [ADJ78] J.A. Goguen, J.W. Thatcher, E.G. Wagner. "An Initial Algebra Approach to the Specification, Correctness and Implementation of Abstract Data Types". En Current Trends in Programming Methodology, Vol. IV, Prentice Hall, 1978. [AHU83] A.V. Aho, J.E. Hopcroft, J.D. Ullman. Data Structures and Algorithms. Addison- Wesley, 1983. [Bal93] J.L. Balcázar. Programación Metódica. McGraw-Hill, 1993. [BrB97] G. Brassard, P. Bratley. Fundamentos de Algoritmia. Ed. Prentice Hall, 1997. [CLR90] T.H. Cormen, C.E. Leiserson, R.L. Rivest. Introduction to Algorithms. The MIT Press, 1990. [EhM85] H. Ehrig, B. Mahr. Fundamentals of Algebraic Specification, Vol. 1. EATCS Monographs on Theoretical Computer Science, Springer-Verlag, 1985. [EhM90] H. Ehrig, B. Mahr. Fundamentals of Algebraic Specification, Vol. 2. EATCS Monographs on Theoretical Computer Science, Springer-Verlag, 1990. [GoB91] G.H. Gonnet, R. Baeza-Yates. Handbook of Algorithms and Data Structures. Addison-Wesley, 2ª edición,1991. [HoS94] E. Horowitz, S. Sahni. Fundamentals of Data Structures in Pascal. Computer Science Press, 4ª edición,1994. [Knu68] D.E. Knuth. The Art of Computer Programming, Vol. 1. Addison-Wesley, 1968. [Knu73] D.E. Knuth. The Art of Computer Programming, Vol. 3. Addison-Wesley, 1973. [LiG86] B.H. Liskov, J.V. Guttag. Abstraction and Specification in Program Development. The MIT Press, 1986. [Mar86] J.J. Martin. Data Types and Data Structures. Prentice-Hall, 1986. [Meh84] K. Mehlhorn. Data Structures and Algorithms, vols. 1 y 2. Springer-Verlag, 1984. [Peñ98] R. Peña. Diseño de Programas (2ª edición). Prentice Hall, 1998. [Tar83] R.E. Tarjan. Data Structures and Network Algorithms. Regional Conference Series in Applied Mathematics (SIAM), Philadelphia, Pennsylvania, 1983. [TeA86] A.M. Tenenbaum, M.J. Augenstein. Data Structures using PASCAL. Prentice-Hall, 2ª edición, 1986. [vAP89] J.J. van Amstel, J.A.A.M. Poirters. The Design of Data Structures and Algorithms. Prentice Hall and Academic Service, 1989. [Wir86] N. Wirth. Algorithms and Data Structures. Prentice-Hall, 1986. © Los autores, 2002; © Edicions UPC, 2002.
15.
Índice temático
455 __________________________________________________________________________________ 2-3, B, B*, B+...........................303 AVL.........................................303 binario..............................196, 201 de búsqueda....................221, 297 casi-completo...................213, 233 cerrado por prefijo ....................196 compacto.................................196 completo .................................213 enhebrado...............................224 Índice temático de Fibonacci ............................303 equilibrado...............................303 etiquetado...............................196 A de expansión ...................379, 380 de expansión de coste mínimo..380 Abstracción ....................................20,23 general....................................196 Acción (en Merlí)..................................95 libre.........................................380 Acoplamiento de estructuras de datos.138 n-ario.......................................196 Adyacencia........................................350 parcialmente ordenado.............233 Álgebra con punto de interés.........196, 202 cociente de términos..................40 quadtree..................................246 de términos................................31 con raíz....................................380 inicial .........................................40 Arco..................................................346 objeto matemático ................25, 30 Aridad respecto una signatura ...............30 de un árbol...............................199 Algoritmo de un símbolo............................28 Brent.......................................288 Arista ..........................................v. arco compleción (Knuth-Bendix) ........79 Ascendente (en un árbol)...................199 Dijkstra.....................................370 Atajo .................................................138 Floyd.......................................376 Axioma (especificación ecuacional) .......34 Kruskal.............................333, 384 ordenación por inserción ..........122 ordenación por montículo.........238 B Prim.........................................381 voraz .......................................381 Basura...............................................178 Altura (de un árbol).............................198 Biblioteca de módulos reusables...24, 125 Antecesor (en un grafo)......................361 Bosque.............................................200 Apiñamiento ..............................282, 290 Búsqueda primario....................................283 auto-organizativa......................255 Apuntador...........................................98 de caminos mínimos.................369 de sitio libre................................98 dicotómica (binaria)...................256 externo....................................139 por interpolación ......................256 Árbol ...............................................195 lineal........................................256 © Los autores, 2002; © Edicions UPC, 2002.
16.
456
Estructuras de datos. Especificación, diseño e implementación __________________________________________________________________________________ con movimiento al inicio ............255 Coste ...................................v. eficiencia por transposición......................255 Cuadrado (método)............................263 Cubeta..............................................258 Cursor.................................................98 C Cadena ...............................v. secuencia D predicado cadena.....................171 de reubicación .........................282 Deducción ecuacional..........................77 Camino Desbordamiento en un árbol...............................198 en el cálculo.............................262 de un clave (de dispersión) .......278 en una tabla .............................274 en un grafo ..............................350 Descendiente mínimo ....................................369 en un árbol...............................199 Campo (de tupla)..................................91 en un grafo ..............................361 Categoría ............................................74 Desequilibrio .....................................305 Ciclo ...............................................351 DD...................................305, 308 Clave ...............................................249 DI.....................................307, 310 indefinida.................................249 Digrafo ............................v. grafo dirigido invasora...................................278 Diseño Colisión.............................................258 descendente.............................22 Cola de estructuras de datos ............397 circular.....................................159 modular (con TAD) ......................22 compartida...............................423 Dispersión prioritaria ..........................231, 237 concepto.................................258 TAD.........................................158 función ............................258, 259 Complejidad..........................v. eficiencia incremental..............................274 Componente (fuertemente) conexo....350 organizaciones.........................270 Compresión de caminos.....................342 perfecta...................................260 Conexión (en un grafo).......................350 valor de dispersión ...................258 Congruencia induida por las ecuaciones39 División (método)...............................263 Conjunto de base .....................................30 TAD.........................................252 E Constante orden de magnitud ...................116 Ecuación.............................................34 valor ..........................................30 condicional ................................49 Constructor de tipo impurificadora.............................46 por enumeración........................91 parte derecha/izquierda..............35 puntero ...................................173 de recurrencia ..........................119 tupla..........................................91 Eficiencia.....................................23, 108 vector........................................91 amortizada ...............................345 © Los autores, 2002; © Edicions UPC, 2002.
17.
Índice temático
457 __________________________________________________________________________________ en el caso peor..................110, 113 en Merlí .....................................95 Elemento parcial ..............................249, 250 definido...................................249 de redispersión........................278 distinguido...............................162 de representación....................100 fantasma (centinela)..................170 TAD.........................................249 Encadenamiento ...............................168 total .................................249, 250 Enlace.......................v. encadenamiento universal..................................263 Ensayo..............................................278 Funtor.................................................75 Enriquecimiento ..................................67 Especificación .....................................20 algebraica (ecuacional)..........25, 34 G método de construcción.............47 parametrizada (genérica).............69 Género .........................................v. tipo pre-post.....................................97 Grado v. aridad Esquemas de programación ...............131 Grafo.................................................320 de búsqueda....................131, 163 acíclico ....................................351 de recorrido......................131, 163 bipartito ...................................346 Estructura de datos..............................25 completo .................................348 funcional..................................249 denso......................................348 lineal........................................151 dirigido ....................................346 de partición..............................332 disperso ..................................348 Etiqueta.....................................196, 346 etiquetado...............................346 de coste nulo...........................369 no dirigido................................346 Evaluador de expresiones..................399 no etiquetado ..........................346 Extremidad (de un camino) .................350 TAD.........................................346 F H Factor Hermano (en un árbol)........................199 de carga (árbol).........................219 Hijo (en un árbol)................................199 de carga (tabla).........................292 derecho, izquierdo...................202 de equilibrio.............................304 izquierdo, hermano derecho.....214 Forma Hoja ...............................................198 de un árbol...............................196 normal .......................................78 Función I de abstracción..........................100 de Ackerman............................345 Identificador.......................................249 de asignación de variables ..........33 Implementación ...................................20 de evaluación de términos ..........33 corrección..................................98 de dispersión ...................258, 259 eficiencia .................................108 © Los autores, 2002; © Edicions UPC, 2002.
18.
458
Estructuras de datos. Especificación, diseño e implementación __________________________________________________________________________________ lenguaje de implementación .......98 Morfismo .............................................32 universo de implementación..89, 90 Multilista (de grado dos)......................324 Índice Multilista de adyacencia ......................358 a tabla......................................249 a vector......................................91 Instancia..............................................69 N parcial........................................73 Invariante Nivel (en un árbol) ..............................198 de un bucle................................93 Nodo .................................195, 197, 346 de una representación..............100 Notación asintótica Invasor ...........................v. clave invasora O .............................................112 Isomorfismo.........................................32 Ω .............................................112 Iterador..............................................128 Θ .............................................113 Notación infix.....................................400 Notació postfix (polaca).......................399 L NULO................................................174 liberar_espacio ..................................174 Lista O de adyacencia..........................355 auto-organizativa......................255 Obsolescencia (de atajos)...................142 circular.....................................186 obtener_espacio ...............................174 doblemente encadenada..........187 Ocultación de símbolos........................67 encadenada.............................143 Operación ...........................................30 ordenada.................................161 auxiliar (oculta, privada) ...............50 con punto de interés ................162 consultora..................................46 constructora...............................46 constructora generadora.............46 M modificadora ..............................46 Orden de magnitud ............................113 Marca ................................................143 Matriz de adyacencia..........................352 P dispersa...................................324 Memoria dinámica.......................174, 405 Padre (en un árbol).............................199 MFSet...............................................332 Parámetro Modelo de entrada y/o de salida ..............95 de un TAD............................25, 43 formal ........................................69 inicial .........................................37 real............................................70 Módulo................................................23 Parametrización ...................................69 Montículo ..................................212, 235 Paso de parámetros .............................70 de Fibonacci ............................370 Pila © Los autores, 2002; © Edicions UPC, 2002.
19.
Índice temático
459 __________________________________________________________________________________ de sitios libres...................146, 169 canónico..............................41, 46 TAD.........................................151 de clase (de equivalencia).........340 Plegamiento-desplegamiento.............263 Representación de tipo ..................90, 91 Posición encadenada.....................166, 168 de elemento ............................138 circular.....................................186 de vector ...................................91 doblemente.............................187 Postcondición .....................................97 secuencial........................154, 166 Precondición.......................................97 Reubicación...............................143, 145 Prioridad............................................231 Reusabilidad..................................41, 46 Programación dinámica.......................376 Robin Hood (método).........................289 Profundidad (en un árbol) .............v. nivel Rotación............................................306 Puntero.............................................173 Punto de acceso (en iterador).............128 S R S-aplicación.........................................32 S-conjunto ..........................................27 Raíz...........................................195, 198 Secuencia.........................................151 Rama.................................................199 Semántica de un TAD...........................43 Recolección de basura.......................178 de comportamiento ....................44 Recorrido final ...........................................43 en anchura........219, 228, 361, 364 inicial .........................................43 inorden....................................220 laxa............................................44 por niveles .......................219, 228 SIG-álgebra..........................................30 en ordenación topológica..360, 365 Signatura.............................................26 postorden................................220 Símbolo preorden .................................220 de constante..............................28 en profundidad ........................360 de operación..............................28 en profundidad hacia atrás ........362 Sinónimo...........................................258 Redispersión.....................................278 Sistema de reescritura..........................78 Reescritura ..................................78, 247 Canónico...................................79 Referencia colgada ............................177 Confluente ................................79 Regla de escritura ................................78 Noetheriano...............................79 Relación Subárbol....................................195, 199 binaria (TAD).............................319 Subcamino........................................350 binaria etiquetada.....................319 Subciclo............................................351 de equivalencia (TAD) .......320, 332 Subgrafo...........................................350 etiquetada ...............................320 Suma ponderada ...............................261 de igualdad..............................100 m:n .................................v. binaria Renombramiento de símbolos..............68 Representante © Los autores, 2002; © Edicions UPC, 2002.
20.
460
Estructuras de datos. Especificación, diseño e implementación __________________________________________________________________________________ T local...........................................95 Vector .................................................91 Tabla Vértice ..............................................346 de dispersión...........................258 intermedio (en un camino).........350 de símbolos .......................60, 420 TAD.........................................249 TAD ................v. Tipo Abstracto de Datos Z Teorema ecuacional .............................77 Teoría ecuacional.................................77 Zona de excedentes..........................274 Término...............................................28 Zona principal ....................................274 sobre SIG...................................28 Tipo auxiliar (oculto, privado)...............50 de datos...............................19, 25 de interés ..................................66 Tipo Abstracto de Datos (TAD) ..............19 abierto.....................................146 parcialmente abierto .................139 recorrible .................................128 recorrible ordenadamente.........128 totalmente abierto ...........v. abierto Tupla...................................................91 variante......................................91 U Union-find set....................................332 Universo..............................................26 de caracterización.......................69 de definición (de especificación) .35 genérico (parametrizado) ............70 de implementación ...............89, 90 Uso ...............................................45, 66 V Valor de dispersión.............................258 Variable ...............................................29 de control (bucle) .......................93 global ........................................95 © Los autores, 2002; © Edicions UPC, 2002.
21.
Índice de universos
461 __________________________________________________________________________________ COORDENADAS .................................69 DIGRAFO_ETIQ .................................349 DIGRAFO_ETIQ_LISTAS....................355 DIGRAFO_ETIQ_MATRIZ....................353 DIGRAFO_ETIQ_MULTILISTAS...........359 Índice de universos DIVISION............................................268 DOS_ENTEROS ............................69, 72 ALFABETO..........................................57 ELEM ..................................................70 ARBOL_BINARIO...............................203 ELEM_= ..............................................71 ARBOL_BINARIO_DE_BUSQUEDA.....30 ELEM_< ..............................................76 ARBOL_BINARIO_ENC_1_VECTOR..210 ELEM_<_= ........................................130 ARBOL_BINARIO_ENC_PUNTEROS.205 ELEM_DISP_CONV...........................266 ARBOL_GENERAL............................201 ELEM_2_ESP_= ...............................280 ARBOL_GENERAL_POR_BINARIO ...216 ELEM_ESP .......................................251 BOOL ............................................26, 35 ELEM_ESP_<_=_+ ...........................369 CADENA........................................57, 76 ELEM_ORDENADO...........................332 CJT......................................................70 ENTERO..............................................42 CJT_∈ .................................................71 FUNCIONES_F ..................................266 CJT_∈_ACOTADO.............................127 FUNCIONES_G..................................267 CJT_∈_ACOTADO_IND......................137 FUNCION_TOTAL ..............................251 CJT_∈_ACOT._IND_PARC_ABIERTO 141 FUNCION_TOTAL_RECO._ORD ........253 CJT_∈_ACOTADO_POR_VECT...99, 127 LISTA_INTERES ................................165 CJT_∈_ACOTADO_RECORRIBLE .....129 LISTA_INTERES_ENC................172, 182 CJT_∈_ACOT._REC._POR_VECT.....133 LISTA_INTERES_ENC_PUNT.....176, 184 CJT_∈_ACOTADO_REC._ORD..........131 LISTA_INTERES_SEC .......................166 CJT_∈_ACOT._REC._ORD_VECT_1.134 MULTILISTA_TODO_CIRCULAR.........328 CJT_∈_ACOT._REC._ORD_VECT_2.135 NAT..........................................27, 45, 52 CJT_RECORRIBLE............................253 PAR.....................................................72 CLAVE_DISPERSION ........................268 PILA ..................................................153 CLAVE_DISPERSION_LINEAL...........286 PILA_SEC .........................................155 CLAVE_REDISPERSIÓN....................280 RACIONALES ................................69, 75 COLA ................................................159 REDISPERSION_DOBLE...................287 COLA_CIRCULAR..............................161 REDISPERSION_LINEAL...................286 COLA_PRIORITARIA..........................232 REDISP_LIN._SUMA_POND_Y_DIV...286 COLA_PRIOR._POR_MONTICULO....236 REDISP_DOB._SUMA_POND_Y_DIV 287 COMPOSICION_F_Y_G......................268 RELACION.........................................322 CONJUNTO .......................................252 © Los autores, 2002; © Edicions UPC, 2002.
22.
462
Estructuras de datos. Especificación, diseño e implementación __________________________________________________________________________________ RELACION_DE_EQUIVALENCIA........335 RELACION_DE_EQUIV._ARB............343 RELACION_DE_EQUIV._LINEAL .......338 RELACION_ETIQUETADA..................323 SUMA_POND ....................................267 SUMA_POND_Y_DIV.........................269 TABLA_DIRECTA ...............................276 TABLA_IND_PUNTEROS...................272 TABLA_ABIERTA ...............................280 VAL_NAT.............................................73 VECTOR............................................157 © Los autores, 2002; © Edicions UPC, 2002.
Descargar ahora