Estructuras de Datos y Algoritmos (EDA)

Un curso sobre Tipos Abstractos de Datos

Archive for the ‘cosas de clase’ Category

Llévate un binky para Pilares

without comments

Written by Javier Campos

octubre 8th, 2019 at 11:04 am

Cronograma de lenguajes de programación importantes (1954-2019)

without comments

Aquí: https://www.levenez.com/lang/

   …  

Written by Javier Campos

septiembre 19th, 2019 at 9:58 am

Enrutamiento de direcciones IP

without comments

Una de las formas de almacenar la información sobre las direcciones IP en los nodos que hacen función de enrutamiento en internet es la estructura de datos PATRICIA.

Consultando el PATRICIA en un nodo de enrutamiento, es posible rechazar un dominio como no válido (si no está almacenado en el PATRICIA) o como válido, y en este caso, bien aceptarlo (si ya se ha alcanzado el dominio buscado) o redirigir la petición HTTP al siguiente nodo.

Éste es el artículo en el que se propuso por vez primera (en 1991) el PATRICIA para este uso.

En esta página podéis encontrar un simulador y algunas explicaciones.

En este artículo, una comparativa del uso de PATRICIA frente al uso de tablas hash (las veremos más adelante).

Y en estas transparencias (desde la nº 142 a la nº 150), algunas ideas sobre la implementación de un PATRICIA.

Written by Javier Campos

noviembre 26th, 2018 at 12:17 am

Libro(s): “El arte de programar ordenadores”

without comments

knuth_7The Art of Computer Programming (TAOCP) es probablemente el libro más famoso de las Ciencias de la Computación. Tal es así, que suele conocerse como “la biblia de los informáticos” y su autor, Donald E. Knuth, es uno de los más reconocidos expertos en la Historia de la Informática.

A finales de 1999, TAOCP fue incluido por la publicación American Scientist entre las 12 monografías más importantes de las “ciencias físicas” (las “no biológicas”) en el siglo XX, junto con el libro de Dirac sobre mecánica cuántica, el de Einstein sobre relatividad, el de Mandelbrot sobre fractales, el de Pauling sobre el enlace químico, el de Russell y Whitehead sobre fundamentos de matemáticas, el de von Neumann y Morgenstern sobre teoría de juegos, el de Wiener sobre cibernética, el de Woodward y Hoffmann sobre simetría orbital, el de Feynman sobre electrodinámica cuántica, el de Smith sobre la búsqueda de estructura, y la colección de artículos de Einstein de 1902 a 1909.

En el archivo MacTutor de Historia de las Matemáticas aparece una reseña biográfica de D. Knuth, en la que se cuenta lo siguiente sobre los orígenes de su libro TAOCP:

“Knowledge of his computing expertise was so well established by 1962 that, although he was still a doctoral student at the time, Addison-Wesley approached him and asked him to write a text on compilers. He began that project in the summer of 1962. […] By 1966 his book on compilers had grown to 3000 handwritten pages and Addison-Wesley realised that here was a much more major work than they had originally envisaged. Discussions led to a decision that Knuth should produce a seven volume work covering much more than compilers. The work became The Art of Computer Programming and publication began in 1968 when Volume 1: Fundamental Algorithms appeared. Volume 2: Seminumerical algorithms came out in the following year, and Volume 3: Sorting and searching in 1973. In the Preface Knuth writes that these are:

… books that have been designed to train the reader in the various skills which go into a programmer’s craft… [They are] not meant to serve as an introduction to computer programming; the reader is supposed to have some previous experience. [I aim to provide] (a) reference books which summarize the knowledge which has been acquired in several important fields, and (b) textbooks for self-study or for college courses in the computer and information sciences.

Knuth’s aim was to:

… organize and summarize what is known about the fast subject of computer methods and to give it firm mathematical and historical foundations.

… show that the connection between computers and mathematics is far deeper and more intimate than these traditional relationships would imply.”

Written by admin

noviembre 6th, 2018 at 11:21 am

Próximamente: punteros y datos dinámicos

without comments

Written by admin

octubre 1st, 2018 at 5:58 pm

Posted in cosas de clase

Vídeos sobre algoritmos de ordenación

without comments

Written by Javier Campos

noviembre 29th, 2016 at 2:29 am

Sobre la implementación de montículos

without comments

La implementación habitual (vista en clase, transparencia 16) de un montículo es estática, es decir, basada en almacenar el árbol en un vector, por niveles, desde la raíz hacia abajo y de izquierda a derecha para cada nivel.

Lógicamente, esa implementación plantea el típico problema (en representaciones estáticas) de saturación cuando la capacidad del vector se completa.

Hay una solución para ese problema. Se basa en tener un vector de punteros a vectores de datos en el que inicialmente sólo se usa el primer puntero a vector, y apunta a un montículo almacenado como el visto en clase (en el vector, por niveles de arriba a abajo y de izquierda a derecha). Cuando ese primer vector de datos se llena, se usa el siguiente puntero a vector para apuntar a un nuevo vector en el que se guardará el siguiente nivel del montículo. Si ese nivel también se llena, se genera espacio para un nuevo nivel (puntero a un nuevo vector), etcétera.

Está explicado en esta página.

dynamic_heap

Written by Javier Campos

noviembre 28th, 2016 at 11:39 am

Posted in cosas de clase

Para pasar un rato durante las fiestas del Pilar…

without comments

binky

Haz clic en la imagen de arriba para que empiece…

Directamente desde la Universidad de Stanford. Recomendable además leer el documento sobre “punteros y memoria” de la misma Universidad.

Written by Javier Campos

octubre 4th, 2016 at 10:00 am

Entender la recursividad, en pocas palabras

without comments

Written by Javier Campos

noviembre 5th, 2015 at 10:54 am

Posted in cosas de clase

Corrección de un detalle de C++ en alguna transparencia

without comments

Atención: se ha corregido un detalle de codificación C++ en las transparencias del apéndice de la lección 8 (implementación de la operación vacía) y en la lección 9 (implementación de la operación vacía de pilas y colas). Se ha añadido además la implementación de alguna operación más (anyadirPrimero en el apéndice de la lección 8 y apilar en la lección 9), para ilustrar la creación de nuevos datos dinámicos.

Written by Javier Campos

octubre 8th, 2015 at 12:08 pm