Archive for the 'matemáticas' Category

Algoritmo para encontrar un camino de Euler en un grafo no muy complicado

En una entrada anterior prometí publicar la solución al problema 291 - The House of Santa Claus. Aquí está:

El problema

Teniendo el siguiente grafo, el problema consiste en encontrar todos los caminos posibles en que se pueden recorrer todas las aristas del grafo una única vez, partiendo de la esquina inferior izquierda. Esto en matemática de grafos es conocido cómo un camino de Euler.

 El grafo

Cada nodo está numerado como se muestra en la figura y cada arista es bidireccional, es decir, se puede ir del nodo 1 al 5 si y sólo si se puede ir del nodo 5 al 1.

The House of Santa Claus - Graph

 La solución

El algoritmo que se me ocurrió para solucionar el problema fue crear una función recursiva que se llamara cada vez que se visite un nodo, y que a su vez vuelva a llamarse con los próximos nodos a visitar, usando cómo parámetro la lista de los nodos ya visitados en el orden de visita. Me explico: la primera vez la función se llamará con los nodos visitados, es decir, [1], y se llamará a ella misma para cada nodo que sea posible visitar a partir del nodo actual. En nuestro caso, la llamada anterior llamará a la misma función 3 veces: una para cada posible siguiente nodo, a saber, se llamará nuevamente con los parámetros [12], [13], [15]. Puede verse que si se tiene la lista de nodos visitados en el orden de visita, se sabrá que aristas ya han sido visitadadas. Por ejemplo, para saber si ya se visitó la arista que conecta los nodos 4 y 5, bastará con fijarse si en la lista están dichos números en posiciones adyacentes. De esta manera, la llamada recursiva de la función sólo se generará sobre los nodos destino a los que sea posible visitar (o sea que no se repita arista). La recursividad se detendrá o bien cuando no es posible moverse a otro nodo sin repetir arista o bien cuando se han recorrido 8 aristas.

La implementación

Mi solución está escrita en C++.

Read more »

Torre de Hanoi e inducción matemática

La torre de HanoiLa semana pasada tuve la oportunidad de ir a la Fiesta del libro que se realizó en Medellín del 7 al 16 de septiembre de 2007 y me topé con un stand de juegos matemáticos de una empresa colombiana llamada “Mathema”. Estaban exhibiendo diversos acertijos matemáticos y en particular hubo un juego que ya conocía que me llamó la atención: la torre de Hanoi, así que lo compré y le dediqué un buen rato a tratar de resolverlo. Luego de haber encontrado una manera de solucionarlo, descubrí que en el empaque decía que se necesitaban 2^n-1 | LaTeX movimientos para solucionar el rompecabezas donde n es el número de discos del juego. Me dieron ganas de probarlo, así que puse en práctica lo que estoy aprendiendo en la universidad y aquí está la prueba por inducción matemática:

    Sea P(n) la proposición que afirma que se necesitan 2^n-1 | LaTeX movimientos para mover n discos de un bastón a otro.

  1. Paso base: Si se tiene un único disco, se necesita un único movimiento para moverlo de un bastón a otro, es decir, 2^n-1 | LaTeX movimientos. Por lo tanto se tiene P(1).
  2. Paso de inducción: Supongamos P(k). Bajo este supuesto debe probarse que P(k+1) es válido. Si tenemos k+1 discos en un bastón, aplicando la hipótesis inductiva podemos mover los primeros k a otro bastón en 2^k-1 | LaTeX movimientos. Después movemos el disco más grande al bastón de destino y volvemos a mover los ya mencionados k discos sobre el disco más grande de todos. Aplicando la hipótesis inductiva nuevamente, se tiene que la cantidad total de movimientos necesarios para mover k+1 discos de un bastón a otro está dada por 2^n-1 | LaTeX. Aplicando propiedades de álgebra esta expresión puede expresarse cómo 2^n-1 | LaTeX. Es decir, P(k+1).
  3. Por lo tanto, por inducción matemática queda probado que 2^n-1 | LaTeX .

    :)

Por otro lado, estoy estrenado feeds en FeedBurner, pueden suscribirse haciendo click aquí.

Programa en C para resolver sudokus

Sudoku Solver es un programa escrito en el lenguaje de programación C que es capaz de resolver cualquiera de estos famosos rompecabezas japoneses y además informa si el reto tiene una única solución. Es asombrosamente rápido, según el autor:

On a 333 MHz Pentium II Linux box it solves typical medium force puzzles in approximately 620 microseconds or about 1,600 puzzles per second, give or take. On an Athlon XP 3000 it solves about 10,800 puzzles per sec.

El algoritmo se ve muy interesante. Definitivamente vale la pena ensayarlo, pues sobra escribir que el código fuente esta disponible. Acá hay una captura sacada de la página oficial que muestra el programa en funcionamiento:

Sudoku Solver en funcionamiento




Cómo mostrar LaTeX en WordPress

Cómo muchos de ustedes ya sabrán, LaTeX es un sistema particularmente útil a la hora de expresar ecuaciones matemáticas. Hoy voy a mostrarles cómo integrar este sistema a un blog que corra WordPress. El método que voy a mostrar no necesita tener instalado LaTeX en el servidor donde se correrá, sino utiliza mimeTeX, un programa que renderiza código LaTeX directamente a un archivo de imagen que puede ser .gif o .png. Esto tiene varias ventajas; la más destacada es que es mucho más fácil de instalar que otras maneras de integrar LaTeX a WordPress.

La instalación es realmente sencilla, empecemos:

  1. Bajar y descomprimir mimeTeX. Yo lo hice directamente desde el servidor, pero antes cree una carpeta, así:
    1. mkdir mimetex cd mimetex  
    2.  wget http://www.forkosh.com/mimetex.zip  
    3.  unzip mimetex.zip
  2. Compilar el programa. Yo lo hice con los parámetros por defecto:
    1. cc -DAA mimetex.c gifsave.c -lm -o mimetex.cgi  
  3. Una vez compilado, será necesario mover el programa al directiorio cgi-bin y asignarle los permisos necesarios. En mi caso el directorio no estaba creado así que escribí:
    1. cd .. mkdir cgi-bin  
    2.  mv mimetex/mimetex.cgi cgi-bin   chmod 755 cgi-bin/mimetex.cgi  
  4. Ahora a probarlo. Para ello escribimos:
    1. cgi-bin/mimetex.cgi "x=4"

    Y deberíamos ver la ecuación renderizada en ASCII.

  5. A continuación podemos borrar la carpeta de extracción:
    1. rm -r mimetex

Una vez tengamos el mimeTeX instalado, podemos proceder a mostrar imágenes de nuestras ecuaciones. Para ello utilizamos el código:

  1. <img src="../cgi-bin/mimetex.cgi?x^2=frac{3^y}{2}">

Obviamente se hacen los reemplazos necesarios, como la ruta del archivo .cgi y la ecuación. Éste es el resultado del ejemplo:

Ejemplo de LaTeX renderizado con mimeTeX

Y eso es todo. Si se quiere expandir aún más la usabilidad de esta herramienta, se puede instalar un plugin que permite insertar las imágenes renderizadas sin tener que escribir las etiquetas HTML correspondientes. Por otro lado, en el manual completo de mimeTeX se encuentran cantidad de ejemplos con sus respectivos códigos, que muestran la potencia de esta herramienta:

Ejemplo 1 Ejemplo 2 Ejemplo 3

Actualización: En Gaussianos.com encontré otra manera de mostrar LaTeX en Wordpress, usando un plugin llamado WP-LaTeX.

« Entradas anteriores