Category: ciencia


Cómo instalar Cantor en Ubuntu Karmic

Cantor és una aplicación científica/educativa creada para el escritorio KDE (aunque puede funcionar fuera de éste). Su objetivo es aglutinar y simplificar el uso de otro software matemático, como Sage, Maxima o KAlgebra. El principal problema para usar Cantor ahora mismo es que casi ninguna distribución de Linux actual lo ha incorporado en sus repositorios oficiales ya que es muy nuevo (será lanzado dentro de la versión 4.4 del escritorio KDE).

Por suerte han creado un repositorio PPA en Launchpad, así que “solo” tendremos que añadir el repositorio a la lista de repositorios e instalar cantor. Ahí van los comandos:

sudo add-apt-repository ppa:kubuntu-ppa/beta
sudo aptitude update
#Este paso no es estrictamente necerario, pero lo recomiendo: aptitude safe-upgrade
sudo aptitude install cantor

Cuando he dicho “solo” ha sido porque aparecerán algunos problemas. Resulta que cantor depende de muchos paquetes de KDE4.4, del que solo hemos visto sus versiones RC hasta el momento, y que tampoco ha sido incorporado en ningún repositorio oficial de ninguna distribución. Ésto conlleva que al instalar Cantor, deberemos actualizar multitud de paquetes y en algun momento aparecerán conflictos por resolver (bueno, solo si tenéis alguna aplicación de KDE instalada previamente claro). No puedo dar una explicación estandar para resolver esos problemas, pues cada uno se encontrará con problemas de dependencias diferentes en función al software que tenga o no tenga instalado en su sistema, en todo caso creo que el problema no es demasiado grave (al menos para los experimentados):

Saludos!

Algunos tips para SAGE

Como es con la práctica con la que se aprende, a lo largo del tiempo usando SAGE+Maxima (para evitar el uso de Maple) he ido aprendiendo algunos truquillos que (os?) pueden resultar interesantes (bien, me lo parecen a mi, y eso es suficiente :) ).

  • Visualización de resultados: SAGE puede funcionar de dos formas distintas, dentro de la línea de comandos y como aplicación web (invocando el comando notebook() dentro de la línea de comandos se inicia un servidor al que se puede acceder desde cualquier navegador convencional). No es difícil imaginar que dentro del modo línea de comandos sería prácticamente imposible visualizar ciertos resultados de forma cómoda, precisamente por eso implementaron el modo web… pero aun así nos podemos encontrar con sorpresas desagradables. Por defecto los resultados se mostrarán solo con carácteres ascii y consecuentemente pueden ser de difícil legibilidad. Hay un comando llamado latex() que transforma la entrada en una salida escrita en formato LaTeX, el problema es que para visualizar eso necesitamos pasarlo a un compilador de LaTeX y transformarlo, el proceso en sí es demasiado pesado y lento.

    La solución viene de la mano de jsMath, que son unas librerías que sirven para visualizar textos matemáticos en páginas web. En Debian y Ubuntu se pueden instalar desde aptitude o apt, yo recomiendo instalar dos paquetes: jsmath y ttf-jsmath. Una vez instaladas sólo habrá que marcar el checkbox Typeset que podemos encontrar en la parte superior de la página web que genera SAGE para trabajar, con ésto obtendremos salidas bien formateadas y con un aspecto agradable :)   .

  • Trabajar con polinomios sobre diferentes cuerpos: Dependiendo del cuerpo sobre el que trabajemos los polinomios se pueden descomponer de diferentes maneras y cuando se evaluan sobre un elemento del cuerpo pueden dar resultados diferentes. Por lo general la gente trabaja sobre el cuerpo de los números reales, otros trabajan sobre los complejos, y otros sobre los racionales, esos casos son los más usuales para los no matemáticos, pero muchos otros nos encontramos con la necesidad de trabajar con otros cuerpos que nos pueden resultar mucho menos intuitivos a la hora de realizar los cálculos. ¿Y como indicamos a SAGE que estamos trabajando con un cuerpo u otro? Ejecutando el siguiente comando, a partir de ese momento estaremos trabajando con el cuerpo indicado:
    R.<x>=cuerpo[]
    donde cuerpo es el cuerpo que queramos (y sea construible dentro de SAGE), para los racionales usamos QQ, para los reales RR, y para los complejos CC, y x es la variable que usaremos para el polinomio. Nosotros podemos construir otros cuerpos, de momento yo sólo he aprendido a construir cuerpos finitos (hay teoremas de isomorfismo que me aseguran que los que construyo son los únicos finitos). Para construir cuerpos finitos utilizaremos el comando:
    NombreQueLeQueramosDarAlCuerpo=FG(número)
    donde número és la cantidad de elementos que tendrá el cuerpo. Podemos probar las diferencias usando, por ejemplo, el comando factor sobre una expresión polinómica, de esta forma:
    factor(x^8-1)
  • Información extra que os pueda interesar: Dado que SAGE es muy extenso y yo he explicado muy pocas cosas, para los que no tengan mucha experiencia o por el contrario, quieran profundizar aun más, os enlazo algunos documentos:

Espero que a alguien le pueda servir ésto :) . Saludos!

Ayer actualizé a la versión 9.10 de Ubuntu en parte para poder usar las “nuevas” versiones de algunos programas de cálculo simbólico, entre ellos Maxima (me daba palo tener que andar compilando por mi cuenta y resolviendo dependencias). El caso es la versión de Maxima que se distribuía con Ubuntu Jaunty (9.04) era la 5.13, del año 2007… no hace falta decir que andaban un poco desfasados. Actualmente la última versión disponible es la 5.19, liberada hace poco más de dos meses, y la versión disponible en Ubuntu 9.10 es la 5.17, que también ha sido liberada durante el 2009 el 26 de diciembre de 2008, no nos podemos quejar en cuanto a novedad se lo toman con calma.

Pero, aquí está el problema, no funciona. Simplemente no se puede realizar casi ningún cálculo que supere en complejidad al 1+1 que se enseña en las guarderías, nuestros ordenadores se han vuelto idiotas de repente con la actualización. El problema no tiene nada que ver con un desarrollo defectuoso por parte del equipo de Maxima, en Debian funciona perfectamente, y si se descarga el código fuente y se compila a mano, tres cuartos de lo mismo. De hecho en las sucesivas versiones de Maxima que han sido liberadas se corrigieron un montón de errores, se hicieron algunos perfeccionamientos en los cálculos (entre ellos aumentar el conjunto de ecuaciones diferenciables resolubles, de ahí mi interés por la novedad) y se añadieron un montón de funciones nuevas así como también se aumentó el rendimiento de algunos cálculos.

Parece ser que en Ubuntu los detalles relacionados con el software científico les importan un comino, y no solo hablo por Maxima. La misma desactualización que había con Maxima en la 9.04, la había con SAGE… pero es que sigue habiéndola en la 9.10, utilizan la versión 3.un_numero_muy_bajo cuando la versión actual estable es la 4.2.1. El software libre es increíblemente importante (y cada vez más) para el desarrollo científico actual, pero los chicos de Ubuntu no parecen preocuparse de ello y lo están dejando demasiado de lado, hay que darles un toque! Al final tendré que enviar los datos del software que instalo para decantar (aunque sea un poco solo) las estadísticas a favor del software científico…

[Actualización interesante (con solución incluída)]

Os enlazo la página dedicada al bug que comento https://bugs.launchpad.net/ubuntu/+source/maxima/+bug/303587 . El bug se empezó a describir en la versión 8.10 de Ubuntu, y se medio solventó a base de parchecitos y arreglos (pues en la 9.04 me funcionaba medio bién). El caso es que si vamos leyendo el registro de ese bug apreciaremos como se va comentando su aparición en las sucesivas versiones de Ubuntu. Lo interesante del caso es que en cada una de las versiones, la causa es totalmente diferente, y la causa subyacente del problema en la versión 9.10 es la más pintoresca que se pueda imaginar.

Por lo visto el problema se produce debido a una característica de los nuevos núcleos de Linux que está activada por defecto. Esta característica es la aleatorización del espacio de direcciones virtuales [1], que básicamente sirve como medida de seguridad (sobretodo cuando se utiliza virtualización). Por lo visto eso afecta de alguna extraña forma al intérprete de Lisp que utiliza Maxima internamente. La solución para el problema de Maxima es sencilla aunque reduce ligeramente la seguridad del sistema, por eso mismo se debería buscar una solución más elaborada que la que propondré (sacada del bugtracker):

Editar el fichero /etc/sysctl.conf y añadir la línea

kernel.randomize_va_space = 1

Después de eso se tiene que ejecutar sysctl -p.

Referencias:

  1. http://es.wikipedia.org/wiki/Exec_Shield

En realidad el título debería ser “Resolver sistemas de EDOs de primer orden con coeficientes constantes con Maxima“, pero obviamente era demasiado largo. Lo que escribiré aquí se puede encontrar en la ayuda de Maxima (no sé donde está exactamente si se quiere acceder a pelo a los archivos, pero es accesible fácilmente desde la interfaz wxMaxima), pero creo que puede ser interesante explicar como se ejecutan cálculos como éstos para aquellos que no conozcan demasiado este programa.

Como ya he indicado en el título, hago referencia a EDOs con coeficientes constantes porque Maxima (almenos con al versión instalada en Ubuntu Jaunty 9.04) tiene algunas dificultades para trabajar con ecuaciones más complejas, en todo caso puede ser muy útil tener una herramienta como ésta a mano si no se dispone de otras como Maple (mi caso, por ejemplo).

Entonces, para resolver las siguientes ecuaciones relacionadas con el típico problema de los tanques interconectados entre los que fluyen líquidos (aquí luciré el nuevo plugin para mostrar latex en WordPress :D ):

 \begin{cases} \dot{QA_{T}}(t) = 3 + \frac{4}{100}QB_{T}(t) - \frac{5+8}{100}QA_{T}(t) \\ \\ \dot{QB_{T}}(t) = 3 + \frac{5}{100}QA_{T}(t) - \frac{4+9}{100}QB_{T}(t) \\ \\  QA_{T}(0) = 0 \\ \\ QB_{T}(0) = 0 \end{cases}

Lo haremos con los siguientes comandos:

 eq1: 'diff(x(t), t) = (-13/100)*x(t) + (4/100)*y(t) + 3;
 eq2: 'diff(y(t), t) = (5/100)*x(t) + (-13/100)*y(t) + 3;
 atvalue(x(t), t=0, 0);
 atvalue(y(t), t=0, 0);
 desolve([eq1, eq2], [x(t), y(t)]);

En las primeras dos líneas definimos las dos ecuaciones diferenciales (les damos nombre poniendo el nombre seguido de dos puntos y seguidamente la ecuación). En las siguientes dos líneas se escriben las restricciones que tienen que satisfacer las soluciones (que, no lo olvidemos, son funciones). Y por último se le passa un array con las ecuaciones a la función dsolve, así como un array con el nombre de las funciones que queremos encontrar. Ésto es todo amigos, espero que os sirva ;) .

A muchos nos duele a veces tener que resolver según que cálculos a mano por lo tediosa que se vuelve al tarea. Es por eso que acudimos a herramientas como Maple, Matlab o el realmente admirable Mathematica (todas ellas privativas) para que nos simplifiquen los cálculos y poder dedicar ese tiempo a ver alguna serie friki por internet. El problema es que tenemos que pagar por ellas, hacer el piratilla o racanear licencias a nuestra universidad, lo que no siempre resulta algo grato.

Otro problema añadido (si queremos hacer demostraciones matemáticas con ellos y realmente nos importa que tengan cierta validez científica) es que dado que el código de dichos programas es cerrado, una parte de la demostración no es accesible a nadie, es decir, nadie puede verificar realmente que todas las operaciones que ha hecho internamente el programa en cuestión sean realmente correctas (porque no se puede ver su código), en todo caso se tiene que volver a hacer a mano y comparar, con lo que no se gana absolutamente nada. A esto tenemos que añadir que las demostraciones tampoco son accesibles a casi nadie que no tenga una capacidad adquisitiva concreta pues para comprobar que el programa da esos resultados concretos necesita tenerlo, y para ello debe pagar una licencia. Es decir, no es una buena idea usar software privativo para crear conocimiento científico.

¿Y qué soluciones hay? Pues de todo un poco, tenemos Octave, Maxima y… nuestra gran estrella: SAGE. SAGE és una pieza de software genial que nos permite hacer casi de todo, funciona en la línea de comandos, pero también tiene una interfaz web que va a las mil maravillas. Podemos encontrarlo en su página oficial http://www.sagemath.org en su versión más reciente (En los repos de Ubuntu y Debian está algo anticuado). Yo particularmente utilizo una mezcla entre Maxima y SAGE, dentro de poco podremos usar un nuevo programa llamado Cantor (de KDE) que viene a ser una interfaz que aglutinará el uso de Maxima, R, SAGE y KAlgebra, la estoy esperando con ilusión.

Me adhiero a la campaña creada por La aldea Irreductible para pedir que no se reduzcan los presupuestos de I+D en España, ya comenté en una entrada anterior mi repulsa a esta medida (aunque han pasado de un 37% de reducción a un 17% ésto sigue siendo demasiado teniendo en cuenta la inversión existente hasta ahora).

Hundiendo la ciencia española a Zapatazos

Leo en el País.com un artículo [1] que me ha dejado de piedra (del día 10 de Septiembre). Por lo visto el gobierno español quiere reducir hasta un 37% el presupuesto dedicado a I+D debido al plan de austeridad que está trazando para los presupuestos del año 2010. Podemos estar seguros de que hay muchos sitios de donde se podría recortar y no lo hará, por ejemplo: vehículos de lujo [2] [3] [4],  muebles de diseño carísimos, software privativo con alternativas libres y gratuítas [5], alumbrado público ineficiente [6], dinero dedicado al rescate de entidades financieras mafiosas (privadas), la monarquía constitucional, etc.

Casi nadie duda del valor de la investigación científica para el progreso de la economía de los estados (los pocos que lo hacen suelen haber reflexionado poco). Está claro que los motores que hasta ahora impulsaban la economía en nuestro país han fallado, y lo han hecho porque no daban más de sí y todo su potencial económico se basaba en un fraude de proporciones magníficas (léase la megaburbuja inmobiliaria que ha creado una de las tasas de paro más altas de la Unión Europea y de toda la historia de la España moderna y el negocio del turismo que ha sobreexplotado los recursos naturales destrozando costas y otros parajes naturales para sacar 4 perras… ahora claro, nadie quiere visitar un paisaje maltrecho).

Nos quedan pues otras vías para impulsar la reducción del paro y la recuperación de nuestra capacidad adquisitiva. ¿Comercio? España es un país poco productivo en cuanto a ciencia y tecnología, poco podemos exportar de eso. Podemos exportar frutas y otros productos agrícolas o derivados de la ramadería pero eso lo hemos hecho casi siempre y no van a crecer de golpe las exportaciones, la gente come lo que come y no más. En cuanto a productos manufacturados lo tenemos crudo, pues cada vez se cierran más fábricas, se promueven EREs y la fabricación se lleva a países en proceso de desarrollo para abaratar los costes de producción.

La solución pasa por aumentar la productividad o reducir los costes y eso no se puede hacer a costa del bienestar de los trabajadores. Por lo tanto lo que nos toca es investigar para mejorar los procesos de producción, para reducir los costes energéticos, para reducir los costes sanitarios, para encontrar nuevos nichos en los mercados internacionales con nuevas tecnologías y para un sinfín de actividades más que sin duda beneficiarían al conjunto de la población, impulsando el crecimiento de la economía sin la necesidad de una sobre-explotación de los recursos finitos del planeta (o en nuestro caso de nuestro territorio, que es más pequeño aun).

Pero a quienes están en el gobierno todo esto les da igual. Seguramente lo saben pero les da igual, porque la legislatura dura solo 4 años (¡por suerte!) y no van a empezar proyectos interesantes para que se lleven la gloria los siguientes que pasen a beneficiarse de las arcas públicas.

Para postres leo en La Aldea Irreductible que la Ministra de Ciencia va lanzando twitteos en los que afirma que España está en la novena posición del mundo en cuento a creación científica, copando hasta un 3% de toda la ciencia publicada durante el último año. En el artículo que he leído [7] se explica detalladamente porqué se puede considerar esto una falsedad (en parte porque la mayoría de los científicos españoles huyen de España y no vuelven, por lo que la investigación no se realiza aquí, sinó en el extranjero).

Referencias:

  1. http://www.elpais.com/articulo/sociedad/Alarma/comunidad/cientifica/recortes/investigacion/elpepusoc/20090910elpepisoc_2/Tes
  2. http://www.libertaddigital.com/nacional/tourino-se-gasta-480000-euros-en-la-compra-de-su-cuarto-coche-oficial-1276341498/
  3. http://susanamozo.wordpress.com/2009/04/29/un-alcalde-y-dos-coches-de-lujo/
  4. http://comunidad.terra.es/blogs/extreme/archive/2009/03/17/cochesoficialeslujoacostadelosciudadanos.aspx
  5. http://www.publico.es/ciencias/225104/portatiles/escolares/llevaran/windows/linux
  6. http://iya2009.fis.ucm.es/?q=derroche_alumbrado
  7. http://aldea-irreductible.blogspot.com/2009/09/el-espejismo-de-la-ciencia-en-espana.html

Otras opiniones parecidas:

  1. http://www.elpais.com/articulo/sociedad/Hundir/ciencia/precio/ronaldos/elpepusoc/20090917elpepisoc_14/Tes

Contando sudokus

El otro día me estaba aburriendo (como casi siempre) y se me ocurrió una pregunta que a la mayoría de los mortales les parecerá carente de importancia… la verdad es que yo todavía no he conseguido encontrar ningún motivo para considerarla importante, pero la curiosidad (y sobretodo la dificultad de hallar la respuesta) puede más conmigo que la “importancia” de la cuestión.

La pregunta es:
¿Como se puede calcular la cantidad de n-sudokus que existen?

Para intentar responder a ésto lo primero que deberíamos hacer es definir el término n-sudoku. Daré una definición informal que nos servirá para nuestros propósitos.

Definición:
Un n-sudoku es una matriz de números naturales cuadrada con n² filas y columnas que cumple las siguientes restricciones:

  1. Los únicos números válidos van del 1 al n².
  2. En una fila no se puede repetir ningún número
  3. En una columna no se puede repetir ningún número
  4. Si dividimos la matriz en n² submatrices cuadradas disjuntas (sólo hay una forma de hacerlo), en ninguna de ellas se puede repetir ningún número.

Es claro que el 3-sudoku es el sudoku que todo el mundo conoce.

Antes de continuar tengo que aclarar una cosa: No he conseguido ninguna respuesta satisfactoria, parece que para cada número natural n mayor o igual que 2 tenemos que aplicar cálculos especializados en ese caso concreto. Yo por mi parte he hecho el cálculo para el caso más sencillo, el 2-sudoku, que en breve os presento :) .

Lo que haré para calcular la cantidad de 2-sudokus que existen es ir rellenando cada casilla de un 2-sudoku con la cantidad de números que podría poner si ya hubiera puesto los anteriores números, la primera secuencia os resultará familiar, que es la cantidad de formas en que podemos ordenas 4 números sin repetición en 4 posiciones distintas (Aviso, iré rellenando una matriz, pero no lo confundamos con el hecho de ir resolviendo un sudoku, porque no lo estoy haciendo).

4 3 2 1
? ? ? ?
? ? ? ?
? ? ? ?

Para rellenar la siguiente fila tendremos que hacer algunas observaciones pero sigue siendo muy sencillo:

4 3 2 1
2 1 2 1
? ? ? ?
? ? ? ?

El primer 2 viene dado porque ya se han eliminado dos posibilidades en la primera submatriz, el siguiente 1 viene dado porque sólo se puede rellenar de una sola forma la última casilla de la primera submatriz. En los siguientes números también tenemos 2 y 1 pero tenemos que analizarlo con un poco más de cuidado. Podríamos pensar que ese 2 en realidad es un 1 porque tenemos más restricciones que antes (la fila superior, la submatriz y los elementos de la misma fila que hay en la izquierda). El caso es que tenemos suerte, y los elementos que podemos poner en las casillas (2,3) y (2,4) son los mismos que hay en las casillas (1, 1) y (1, 2) aunque podrían tener otro orden, por lo que sólo tenemos 2 y 1 opciones respectivamente.

4 3 2 1
2 1 2 1
2 2 ? ?
1 1 ? ?

La casilla (3, 1) la rellenamos con un 2 porque solo tiene las restricciones de la columna a la que pertenece (a la que de momento sólo hemos asignado 2 números), automáticamente vemos que a la casilla (4, 1) sólo le queda 1 opción. La casilla (3,2) también tiene dos opciones disponibles, otra vez podría parecer que tiene más restricciones que las de la columna a la que pertenece, pero si observamos bien, veremos que los elemenos que pertenecen a su misma submatriz son los mismos que la estan restringiendo en su columna, por lo que de 4 opciones seguirá pudiendo escoger 2. Obviamente a la casilla (4,2) sólo le queda una opción (o por las restricciones de la columna, o por las de la submatriz).

Ahora es cuando nos encontramos con el problema que por lo visto aparece más veces en el caso de los 3-sudokus. En el caso de la casilla (3,3) no tenemos una cantidad fija de números que podamos poner habiendo fijado los anteriores… a priori parece que esa cantidad depende de la configuración de los números que hayamos escrito anteriormente (mientras construíamos el sudoku, no lo confundamos con los números que hemos anotado nosotros para contar). Pondré dos ejemplos de 2-sudokus para mostrar lo que estoy diciendo.

1 2 3 4
3 4 1 2
2 1 4 ?
4 3 ? ?
2
4 3 1
1 3 2 4
3 2 ? ?
4 1 ? ?

En el caso del primer 2-sudoku resuelto vemos que en la casilla (3, 3) solo podemos poner un número, el 4. En el segundo caso tenemos dos posibilidades para la posición (3, 3), podríamos poner o bien un 1 o bien un 4, pero ojo, lo que a priori parecía un sudoku resoluble ahora se muestra como algo sin solución. Como bien podemos ver, si en la casilla (3, 3) ponemos un 1 o un 4, el que no hayamos puesto se tendrá que poner en una de las 3 casillas vacías que nos quedan… ¡pero en ninguna se puede poner porque las restricciones no lo permiten!

No voy a demostrarlo formalmente, pero es facil ver que no se puede dar el caso en que la casilla (3, 3) pueda tener dos opciones, porque siempre nos encotraremos con el mismo problema, que habrá un número imposible de escribir si se quieren seguir las restricciones.

Por lo que la matriz que usabamos para contar nos quedará así (las casillas restantes a parte de las (3, 3) obviamente solo tendran una opción posible dadas las restricciones).

4 3 2 1
2 1 2 1
2 2 1 1
1 1 1 1

Ahora solo tenemos que multiplicar los números que hemos obtenido y obtendremos la cantidad de 2-sudokus existentes una cota superior de los sudokus existentes (tendríamos que eliminar las configuraciones que no nos permitían encontrar solución, como la que he mostrado para ejemplificar).
4·3·2·1 · 2·1·2·1 · 2·2·1·1 · 1·1·1·1 = 384

Así pues deberíamos calcular cuantas veces puede ocurrir esta situación y restarle ese número a 384. Las submatrices azul y verde determinan los valores de la submatriz naranja, por lo que sólo hace falta contar cuantas configuraciones pueden tener las matrices azules y verdes manteniendo esa configuración que transformaba el sudoku en irresoluble. Para la casilla (1, 3) (submatriz verde, esquina superior izquierda) podemos poner 4 números, para la casilla (2, 3) (esquina inferior izquierda de la submatriz verde) podemos poner 3 números, para lo que queda de verde sólo nos quedan dos opciones. Para la fila superior de la submatriz azul tenemos dos posibles órdenaciones, podría parecer que lo mismo pasa para la fila inferior, pero resulta que no es así, pues una de las dos posibles ordenaciones sería incompatible también con una ordenación correcta para la submatriz naranja.

Lo que nos da una cantidad de 4·3·2·2 = 48 , con lo que tenemos (ahora sí) que el número de 2-sudokus existentes es 384-48 = 336 .

Para acabar, algunos apuntes. El problema que hemos tenido con la casilla (3, 3) ha sido relativamente sencillo de resolver, pero  se puede dar el caso en el que realmente no se pueda contar la cantidad de números que se pueden poner en una casilla sabiendo que se han escrito los anteriores, puede que la configuración de los números haga variar dicho número. Y parece que realmente es lo que pasa en los casos en los que n es superior o igual a 3.

Por lo visto la cosa es mas complicada de lo que a primera vista parecía, pues la primera solución encontrada para contar el número de 3-sudokus posibles se halló en 2005 por Bertram Felgenhauer y Frazer Jarvis. Para ello contaron con razonamientos lógicos parecidos a los que yo he hecho para este caso más sencillo (obviamente los suyos debieron ser mucho más sofisticados) pero tambien necesitaron que un ordendor estuviera haciendo cálculos por fuerza bruta unas cuantas horas. La cosa no parece fácil. Así pues la pregunta que me hice sigue sin resolver.

Para los que sientan curiosidad por este tipo de juegos, hay que decir que se pueden llegar a complicar mucho, y de muchas formas distintas. Una es aumentar el tamaño del n-sudoku, es decir, aumentar la n. Otra es hacer que las submatrices no sean cuadradas, sino rectangulares.. para eso podríamos definir el concepto (m,n)-sudoku, habría n·m números diferentes, y n·m submatrices no cuadradas de tamaño n·m. Es claro que los n-sudokus son un caso particular de los (m,n)-sudokus, y si ya es complicada la pregunta para el caso particular… no quiero imaginar como sería en éste.

Pero todavía nos estamos quedando cortos, la cosa se podría complicar más aun si las regiones que hemos usado para las restricciones no fueran submatrices sino conjuntos conexos pero no necesariamente con una distribución tan uniforme y regular como la de los rectángulos o cuadrados. En el artículo de Sudoku de la wikipedia podemos ver un ejemplo, se llaman sudokus nonominos y son la rehostia de complicados.

Ale, si os aburrís tenéis algo más en qué pensar, ahora parece que este juego ya no se reduce solo a intentar rellenar huecos :p .

Enlaces adicionales:

Stellarium

viendo los cielos con stellarium

viendo los cielos con stellarium

Navegando por internet me he encontrado con Stellarium ( http://stellarium.sourceforge.net/ ) , un programa libre (GPL) hecho con las librerías Qt y OpenGL que nos permite ver los cielos desde casi cualquier parte del globo terrestre a cualquier hora del día y a cualquier día del año especificando si queremos que haya atmósfera o no, si queremos que se vea el suelo o incluso si queremos que nos marque las constelaciones. Actualmente está la versión 0.10.2 para GNU/Linux , Windows y Mac (para Linux está disponible en forma de código fuente, y para los otros dos hay instaladores que nos hacen la vida más fácil) , aunque si queremos instalarlo desde Ubuntu 8.10  (no hablo de otras distros porque ahora es la única que tengo instalada) la versión que hay disponible es la 0.9.1, con lo que nos perderemos bastantes mejoras en la interfaz gráfica y algunos nuevos modos de visualización (aun así es espectacular ;) ), así como ciertas mejoras de rendimiento ligadas al uso de las Qt 4.5, que han hecho incapié en reducir notablemente los tiempos de rendering y el uso de memoria.

La versión castellana de la web del proyecto es : http://www.stellarium.org/es/ (aunque no la recomiendo porque está bastante desactualizada y casi todos sabemos lo suficiente de inglés como para entender todo lo que nos dicen en la página oficial).

Espero que lo disfrutéis :) .

Videoteca: Geometría en 4 dimensiones

Gracias a mi compi Mohamed me entero de que en clase de geometría la profesora escribió en la pizarra la url de una página con vídeos sobre geometría en 2, 3 y 4 dimensiones… son bastante interesantes, aunque no tengan un gran nivel técnico y la voz del narrador le de a uno ganas de dormir.. pero ya lo sabéis, yo siempre me duermo cuando alguien me intenta enseñar algo, xD.

http://www.dimensions-math.org/Dim_reg_ES.htm

Disfrutadlo :)

Powered by WordPress | Theme: Motion by 85ideas.