lunes, 22 de marzo de 2010

Publicación de comentarios

Desde la creación de este blog os he animado a que contribuyáis a mejorarlo con vuestros comentarios. Sin embargo, no vale todo. ¿Qué quiero decir con esto? Pues que no voy a permitir que se publiquen comentarios que sean ofensivos ni tampoco los que estando relacionados con la asignatura contengan errores de bulto. Así que, los que hayáis enviado algún comentario y no lo veáis publicado ya sabéis por qué ha sido. Afortunadamente, he tenido que rechazar muy pocos y básicamente han sido por contener errores. El problema es que al no identificaros cuando hacéis los comentarios no os puedo escribir un correo personal para indicaros lo que está mal y así podáis corregirlo antes de publicarlo. Por tanto, si éste es vuestro caso, ponéos en contacto conmigo para revisar los posibles errores.

miércoles, 17 de marzo de 2010

Haciendo historia

Redes de abastecimiento, redes de comunicación, redes de información, redes sociales, internet, la tela de araña, redes telefónicas... Hoy en día nos resulta impensable que alguien desconozca el concepto de red como una colección de equipos conectados entre sí por los que fluye cierta información. Pero ¿qué hay detrás de todo este lío tan formidable (que diría Iñaki Gabilondo?) Los que hemos tenido la suerte de estudiar algo de matemáticas, sabemos que los grafos precisamente consisten en un conjunto de elementos conectados entre sí mediante enlaces que permiten representar relaciones entre ellos. Así que, claro, enseguida identificamos el concepto de red con el de grafo. Vale, de acuerdo. ¿Y no tenéis curiosidad por sumergiros un poco más allá en la historia para saber cómo surge el concepto de grafo?.
Pues bien, hay que remontarse hasta principios del siglo XVIII, cuando no había ni televisión, ni iPods, ni cine ni tantas otras cosas que hoy en día nos hacen disfrutar. Entonces los entretenimientos eran distintos y, fijáos qué cosas, a la gente le daba por plantear problemas. Precisamente la resolución de uno de ellos, el de los puentes de Könisberg, se considera como el origen de la Teoría de Grafos. El problema en cuestión consistía en encontrar un recorrido para cruzar a pie toda la ciudad (hoy se llama Kaliningrado), pasando sólo una vez por cada uno de los siete puentes que unían las dos islas en las que el río Progolya dividía la ciudad, y regresando al mismo punto de inicio. Este problema lo resolvió un jovencísimo (tenía tan sólo 29 años) matemático suizo al que seguro que todos conocéis (de oídas, al menos), Leonhard Euler demostrando que no tenía solución. En fin, os animo a que investiguéis un poco sobre la vida de este gran matemático porque es impresionante la cantidad de aportaciones que hizo no solo a las matemáticas sino a la física, la astronomía, la lógica, la arquitectura e, incluso, a la humanidad: tuvo la friolera de 13 hijos, aunque sólo cinco llegaron a adultos. Sencillamente, ¡fascinante!

domingo, 14 de marzo de 2010

Árboles, que se acaban...

Ya estamos acabando el tema de árboles y espero que hayáis sido capaces de valorar la importancia de este tipo de estructuras jerárquicas como herramienta indispensable a la hora de resolver mediante el ordenador numerosos problemas reales. A lo largo del tema hemos visto distintos tipos de aplicaciones de los árboles:

- Para realizar búsquedas eficientes
- Para clasificar datos a partir de sus características
- Para procesar imágenes
- Para definir estrategias de resolución de problemas
- Para evaluar, derivar, etc. expresiones...
- Para representar los sistemas de archivos y directorios de algunos sistemas operativos
- Para representar un árbol genealógico

De hecho, aún no hemos acabado del todo con ellos pues cuando lleguemos los temas relacionados con la representación de la información (tablas y ficheros), veremos que vuelven a aparecer como herramienta para las bases de datos (Árboles B y B+).
Así que desde aquí os animo a que os perdáis por la red y/o por la biblioteca y busquéis para qué otras aplicaciones son adecuadas los árboles en cualquiera de las versiones que hemos estudiado en el tema. Y por supuesto, que nos lo contéis y así colaboréis en el enriquecimiento del blog aportando toda la información que consideréis de interés a través de vuestros comentarios.

De todas formas, teniendo en cuenta la importancia de la estructura, seguramente os preguntaréis como es que un lenguaje como Java no ha previsto una implementación para ella y tenemos que perder tiempo nosotros en hacerla. Qué raro ¿no?
Pues sí, porque efectivamente, Java proporciona la clase TreeSet para representar conjuntos de elementos ordenados con el objetivo de que las búsquedas se realicen en tiempo logarítmico, es decir, equivaldrían a los árboles balanceados que hemos visto.
Además, Java proporciona la clase JTree para la visualización de árboles en aplicaciones que incluyan Interfaces Gráficas de Usuario basadas en componentes Swing. Pero es muy curioso porque esta clase no constituye una forma de representación de la información en memoria sino simplemente una forma de visualizarla.

Interesante ¿verdad?