domingo, 31 de mayo de 2009

Siga derecho

No vaya a la izquierda, no vaya a la derecha.

La curiosa señalización está muy cercana a mi casa. Esto sólo podría ocurrir en la maravillosa Ciudad de México

sábado, 30 de mayo de 2009

Anéctodas del pasado (Internet)

Era Agosto de 1999, tenía la edad de 12 años, recuerdo. Tenía unos cuantos días de mudarme de casa, me cambiaron a una escuela cercana. Nuevos compañeros, era 3ro. de secundaria. Llegué al salón y todos me veían raro, me senté en la única banca que había, el salón callado, mirándome.
Cuando me senté en la banca, un par de segundos después sentí un empujón, alguien pateó mi banca :S ¡qué miedo! Voltee y un tipo mal encarado me veía con cara de pocos amigos, él había sido. Creí que no pasaba de ese día.
Afortunadamente o desafortunadamente, me pude integrar bien y pude conseguir "amigos" rápidamente. ¿Malas influencias? Me descarrié, reprobé materias, me salía de la escuela, algo que en mi vida había hecho.
En esos tiempos no estaba interesado por la tecnología, ni en la computación, no me interesaba nada, solo jugar fútbol, jugar maquinitas, cosas que ya no hago =(.
Tengo vagos recuerdos, recuerdo que en la televisión pasaban comerciales que hablaban de correo electrónico y páginas Web. No les ponía mucha atención. En esos tiempos había pocos compañeros que hablaban de esas cosas.
Recuerdo que una amiga un día me preguntó sí tenía correo electrónico, yo, en la vida me había conectado a Internet y mucho menos tenía correo electrónico. Indignado, le dije, "por supuesto que tengo" y me dijo "¿cuál es?", nervioso le dije "No lo recuerdo". Le prometí dárselo el siguiente lunes (el día que me lo pidió era viernes).
Era un niño, tenía una computadora donde sólo jugaba solitario o buscaminas. No sabía ni como conectarme a Internet, mucho menos tenía dinero para pagar una conexión a Internet. Preocupado el domingo por no poder conseguir un correo electrónico (fuera lo que fuera esa cosa), me encontré una revista, donde hasta abajo venía una dirección Web y dije "le daré ésta".
El día siguiente al final de las clases, mi amiga, me preguntó por mi dirección de correo nuevamente. Yo muy listo, había anotado esa URI en una hojita de papel, se la di y me fui.
No fue casualidad que el día siguiente mi amiga me dijera, "oye eso que me diste es una página, no es un correo electrónico". Sin titubear le dije, "¿qué tal te pareció?".

Actualización 31 mayo 2009

Me tardé un poco más de medio año en saber qué es lo que hacía especial a una dirección de correo electrónico.

viernes, 29 de mayo de 2009

Cositas interesantes sobre complejidad

Haciendo tarea de Complejidad Computacional, en un problema nos preguntaban sobre relaciones entre clases de complejidad. Hay clases que no sabía que existían, y fue mi sorpresa ver algunas relaciones padrísimas entre ellas.
Tenemos a viejos conocidos como P y NP. Pero existen otros que suenan un poco raros que, son los que me parecieron interesantísimos.
ZPP: En pocas palabras, esta clase de complejidad, representa a problemas que son resueltos con algoritmos que usan aleatoriedad, y además los resuelven con un 0% de probabilidad de error, terminando en tiempo polinomial.
BPP: Clase de complejidad que representa a problemas que son resueltos con algoritmos que usan aleatoriedad, y además los resuelven con un 1/3 de probabilidad de error, terminando en tiempo polinomial.
RP: Clase de complejidad que representa a problemas que son resueltos con algoritmos que usan aleatoriedad, y además los resuelven con un 1/2 de probabilidad de error, terminando en tiempo polinomial.
Pero ¿qué tiene de interesante esto? ¿Les suenan conocidos los algoritmos evolutivos/genéticos? ¿Heurísticas? Pues sí, ahora lo sabemos, estos algoritmos tienen sus propias clases de complejidad. Leyendo por allí me encontré que existe otro mundo de complejidad que se llama Complejidad Probabilística donde se estudian los algoritmos que involucran al azar y otros aspectos aleatorios.
¿Qué otra cosa importante hay que destacar? Observemos que NP no está contenido completamente en estas clases BPP, ZPP, RP. ¿qué nos dice esto? Esto quiere decir que, existen problemas NP que ni con un algoritmo que use azar (llámese genético, heurístico, evolutivo) se pueden resolver con una probabilidad alta de éxito.
Encontré un wiki en la Universidad de Standford donde está todo el zoológico de clases de complejidad que hay. Una clase al menos para cada letra del alfabeto. =)

jueves, 21 de mayo de 2009

Los amigos invisibles

Hola, sólo quería compartir algunos de los mejores éxitos de la banda Pop/Funk/Rock Venezolana "Los amigos invisibles". Esta bandita está de gira presentando nuevo disco en vivo. Ellos como muchas otras bandas en sus conciertos, nunca dejan de tocar. Si tienen algunos minutos libres, no dejen de ver el video

Saludos

domingo, 17 de mayo de 2009

¿P=NP? La encuesta

Una de las preguntas más famosas relacionadas con la Teoría de la Computación que aún no tienen respuesta es el famoso ¿P=NP? P es una clase de complejidad que representa a los problemas para los cuales se conocen algoritmos que pueden resolverlos en tiempo polinomial determinista. NP es una clase de complejidad que representa a los problemas para los cuales se conocen algoritmos que pueden resolverlos en tiempo polinomial no-determinista, pero no se conocen algoritmos que puedan resolverlos en tiempo polinomial determinista (p.e. Agente Viajero, Satisfacibilidad, The Hamiltonian Path Problem).
Es un problema muy importante para el mundo de la computación. Imagínense, pasándolo a términos prácticos, si descubrimos que P=NP habría una manera de poder resolver cualquier problema computable en tiempo polinomial determinista, i.e. en tiempos humanamente tratables.
Encontré una encuesta que se realizó en el 2002 donde se le preguntaron a varios expertos del área de distintas universidades sobre el problema ¿P=NP? He aquí unos resultados:

¿Cuándo crees que se resuelva P=NP?
  1. Entre 2002-2009: 5
  2. Entre 2010-2019: 12
  3. Entre 2020-2029: 13
  4. Entre 2030-2039: 10
  5. Entre 2040-2049: 5
  6. Entre 2050-2059: 12
  7. Entre 2060-2069: 4
  8. Entre 2200-3000: 5
  9. Nunca se resolverá: 5
¿Cuál será la respuesta?
  1. P = NP : 9
  2. P != NP : 61
¿Qué técnicas se usarán en la demostración?
  1. Técnicas combinatorias y de complejidad: 11
  2. Lógica: 9
  3. Matemáticas: 10
  4. Nuevas técnicas: 16
Hay muchos datos más en la encuesta, por ejemplo algunos investigadores comentan sobre que la solución la dará su universidad, en tal año y usará tal cosa para demostrarla.
El área de complejidad computacional es un mundo lleno de temas divertidos e interesantes. Considero yo que es una de las áreas más importantes en las Ciencias de la Computación.
Yo en particular creo que P != NP, y tú ¿qué piensas? ¿P = NP?

Actualización: No sabía pero me dijo un amigo que en un capítulo de los simpsons está puesta la igualdad, P=NP en el capítulo donde Homero viaja a la tercera dimensión



lunes, 4 de mayo de 2009

Around the World

Siempre he tenido las ganas y los sueños de viajar. Creo que conocer nuevos países y por lo tanto nuevas culturas, debe ser algo muy interesante y gratificante. Mi amigo Saúl y yo platicábamos de los lugares a los que nos gustaría conocer, platicábamos de lo chido que estaría conocer nuevos lugares.
Leyendo por ahí me encontré que existe un proyecto llamado CouchSurfing, está muy interesante. Se trata de una especie de red social con propósito específico real que es, el viajar por el mundo.
¿Cómo es esto posible? La idea es simple, sabemos todos que para viajar el hospedaje resulta un costo importante en el presupuesto. Entonces tu, como usuario de CouchSurfing, puedes encontrar gente de otros países que te pueden hospedar en su casa de manera gratuita y ya te ahorrarías ese gasto. Obviamente la idea es que le regreses el favor en algún momento a la comunidad.
Tal vez a mucha gente genere desconfianza este tipo de cosas y más en México, pero aquí hay algunos puntos que pude observar en este proyecto:
  • No es una red social para encontrar pareja (lo especifican en los términos de uso)
  • Estás en una comunidad que tiene muchas ideas en común contigo, no hay razón de tener desconfianza. La idea es viajar
  • La idea es que contribuyas a la comunidad así como recibir los beneficios de esta
  • Si realizas un viaje, este quedará registrado obviamente (dónde, con quién, cuándo)
  • El intercambio cultural es un objetivo de esta red

Existe también gente que tiene como fama, es decir, gente de confianza. Así como en mercado libre donde la gente que tiene muchas calificaciones positivas y a estas les compras, igual aquí, pero aquí la gente viaja con las personas que tienen más "puntos positivos".
También existen miles de testimoniales de gente que simplemente se aventó a viajar así, y cuentan como es que el proyecto de CouchSurfing ayudó y cómo fue la experiencia.
He aquí una opción para gente como yo que, ganas no les faltan de viajar pero que, el presupuesto no es del todo favorable.
Dejo aquí un videito que me mandó Saúl que está padrísimo, increíble, así dan más ganas aún de viajar.



A surfear en sofás se ha dicho.

viernes, 1 de mayo de 2009

Códigos

Estoy llevando una materia que está padrísima, se llama teoría de la información, pero el profesor nos está dando códigos detectores y correctores de errores, está super chido eso; esperamos ver algo de criptografía. Es de las materias que más me están gustando ya que aparte de la teoría que vemos, implementamos cosas.
Un código nos sirve, en pocas palabras, para meter redundancia a la información. ¿Por qué querríamos hacer eso? La información pasa por canales de comunicación todo el tiempo, entonces está sujeta a errores del canal, errores que no podemos controlar, ya que son ocasionados por el medio ambiente u otros factores fuera de nuestro alcance. Con esa redundancia se pretende rescatar a la información que fue alterada en el canal, para que quede igual a como ésta partió del transmisor (en el mejor de los casos).
Usamos un código llamado "código extendido de Hamming de longitud ocho" y simulamos un canal de comunicación que metía errores. Aquí algunas pruebas:


Imagen de 'osita' pasando por un canal que por cada 200 bits que pasan por él pone en error a 1

Imagen de 'osita' pasando por un canal que por cada 300 bits que pasan por él pone en error a 1
Imagen de 'osita' pasando por un canal que por cada 500 bits que pasan por él pone en error a 1
Imagen de 'osita' pasando por un canal que por cada 800 bits que pasan por él pone en error a 1
Imagen de 'osita' pasando por un canal que por cada 1000 bits que pasan por él pone en error a 1
'Osita' sin errores

Ahora una imagen con más información

Imagen de pasando por un canal que por cada 100 bits que pasan por él pone en error a 1
Imagen de pasando por un canal que por cada 300 bits que pasan por él pone en error a 1
Imagen de pasando por un canal que por cada 400 bits que pasan por él pone en error a 1
Imagen de pasando por un canal que por cada 800 bits que pasan por él pone en error a 1
Imagen sin errores.

Existen muchas variables involucradas en esto, una conclusión no podemos dar. La primera imagen de 'osita' tiene muy pocos bits, observamos que prácticamente en un canal que, mete de 1 error por cada 300 bits podemos ver bien la imagen, sin embargo, no ocurre eso con la segunda imagen, hay muchos errores, es claro debido a que la imagen es más grande. En la segunda podemos ver la imagen casi exacta hasta que tenemos un canal que mete un error por cada 800 bits. Inclusive un factor podría ser el formato del archivo.
Las especificaciones de la tasa de error en un canal deben venir en su manual. En las redes, los diversos protocolos de comunicación se encargan de realizar estos procesos cuando es necesario.
Los códigos es otro mundo bastante interesante donde hay muchas cosas qué aprender.


Gracias a Miri y a Erick por las imágenes que me regalaron. :D