domingo, 30 de diciembre de 2012

La Web 3.0


¿Conoces las versiones de la web? Si bien esto no surgió de forma oficial más bien parece algo de marketing, ni es un término acuñado por programadores, aunque pienso que si es buena idea llamar o distinguir los periodos o “eras” en la web donde ha evolucionado y tomado drásticos giros, tenemos la “web 1.0” donde todo era estático y solo se presentaban las paginas como contenido de un libro o revista tal vez con algo de animaciones pero nada más. Luego llego la “web 2.0” donde hubo un punto de inflexión se empezó a brindar dinamismo a las paginas, con lo que ahora puedes interactuar con ellas, ejemplos de ello son los webs como facebook, blogger, google plus, google docs, youtube y un largo etc.


Pues bien estos términos cada vez se empiezan a reconocer y a aceptar más, la web 3.0 es el paso a la web semántica como también se le conoce y es más aceptada que el primero por la comunidad profesional, es una web con significado es decir ahora las web podrán interactuar entre ellas y ofrecer contenidos mas inteligentes.

Hasta ahora las web tenían un código (HTML) que es leído por el navegador y este dibuja la pagina en pantalla, pues ahora se trata de agregar un segundo código que sea legible por los motores de búsqueda y cualquier servicio o pagina web que integre un “agente inteligente” para esto se harán uso básicamente de tres lenguajes HTML5, SPARQL,RDF y OWL que son los que promueve la W3C el consorcio internacional que vela por el orden en el internet. ¿Qué se consigue con esto? Pues con esto en un futuro los usuarios podrían realizar búsquedas verdaderamente inteligentes, literalmente le podrás preguntar a google como si fuera otra persona y te responderá con contenido correcto y exacto, o podrás usar algún servicio web que por ejemplo te brinde información de las agencias de viajes y que en cierta ocasión necesites saber sobre “vuelos para mañana” hacia “Londres” que partan a mas tardar “mañana” con ello se te desplegara un listado de agencias de vuelo que están dando vuelos con esas características, si eso lo intentas justo ahora, no obtendrás el resultado deseado, ya que la web semántica aun está en fase de desarrollo. Debemos estar preparados para recibirla ya que como lo hizo la 2.0 esta también revolucionara la web, no vaya a ser como con la web 2.0 donde a muchos se nos fue el tren de las oportunidades.

mas detalles aqui y aqui

Saludos y hasta la próxima.

jueves, 27 de diciembre de 2012

Algoritmos Geneticos



Pocos saben que la controvertida teoría de la evolución tiene aplicaciones reales en las actividades humanas, si así es ni mas ni menos. En la ciencia de la Informática, se han estado aplicando las bases teóricas de la evolución para resolver problemas tan complejos que dejan sencillamente pasmados a sus diseñadores, aproximadamente desde los 70's.


Esta antena (imagen a la derecha) de aspecto extraño es producto de un AG y funciona a la perfección en el ambiente al que fue destinado, fue "creada" por Altshuler y Linden en 1997 y supero los diseños de los ingenieros.

 El objetivo de este post no es discutir si es o no valida la teoría de la evolución, lo que es un echo contundente es que se le aplica a la vida real, con resultados que dejan sin palabras a cualquier persona, sin mas vamos al grano.

 Un algoritmo genético se trata de una serie de pasos para resolver un problema, pero usando los postulados de la evolución que a groso modo, se trata de lo siguiente:

 Primero obtener una forma de codificar (material genético) las características de la solución (individuo) con el objetivo al mismo tiempo de que este pueda heredar sus características (genes) a las próximas generaciones, echo esto se inicia el algoritmo:

 Primero obtener una población inicial ya sea de soluciones que se sabe funcionan y/o una generada aleatoriamente, por lo regular se usa la segunda opción.

 Segundo se fija una condición de termino, en donde se evalúan las soluciones para ello una función llamada de aptitud se encarga de ver que tan buenas son las soluciones. El algoritmo genético se deberá detener cuando se alcance la solución óptima, pero ésta generalmente se desconoce, por lo que se deben utilizar otros criterios de detención. Normalmente se usan dos criterios: correr el AG un número máximo de iteraciones (generaciones) o detenerlo cuando no haya cambios en la población.

 Tercero mientras tanto selecciona aquellos que resultaron las soluciones mas "buenas" después de ser evaluadas.

 Cuarto se hace un cruzamiento de los individuos seleccionados.

 Quinto se induce una mutación aleatoria en el momento de su cruzamiento.

 Sexto se reemplaza la generación anterior y se vuelve al segundo paso.

 Los algoritmos genéticos básicamente son buscadores de soluciones, solo que son capaces de generar las mismas y de forma múltiple (con muchas posibles soluciones).

 Y para muestra un botón, citare textualmente incluso con faltas ortográficas XD de la siguiente fuente http://the-geek.org/docs/algen/


"Keane y Brown 1996[43] utilizadon un AG para producir un nuevo diseño para un brazo o jirafa para transportar carga que pudiese montarse en órbita y utilizarse con satélites, estaciones espaciales y otros proyectos de construcción aeroespacial. El resultado, una estructura retorcida con aspecto orgánico que se ha comparado con un fémur humano, no utiliza más material que el diseño de brazo estándar, pero es ligera, fuerte y muy superior a la hora de amortiguar las vibraciones perjudiciales, como confirmaron las pruebas reales del producto final. Y sin embargo ``Ninguna inteligencia produjo los diseños. Simplemente evolucionaron'' (Petit 1998[43]). Los autores del artículo comentan además que su AG sólo se ejecutó durante 10 generaciones, debido a la naturaleza computacionalmente costosa de la simulación, y la población no se había estancado todavía. Haber proseguido la ejecución durante más generaciones habría producido indudablemente mayores mejoras de rendimiento."

 Y las aplicaciones son innumerables, en el mismo sitio que mencione se pueden ver una gran cantidad de ellas, creo que cualquier programador debería acercarse a esta técnica salida de las investigaciones en el campo de la inteligencia artificial, y podría sacarle mucho jugo. Yo todavía no encuentro donde podría ser aplicado en mi trabajo XD

 Saludos y hasta la próxima.