Hola Taringueros, en este post les mostrare curiosidades de la I.A.
Una de las cosas que me gusto mas durante mi carrera fue la materia de Inteligencia Artificial, lo que se obtenia con ella era asombroso. Algo que me parecio fascinante fue el Algoritmo resuelvelo todo, este es el Back Tracking.
BACK TRACKING (Si el problema tiene Solucion....La encuentra).
Este Algoritmo te resuelve cualquier problema si lo sabes implementar correctamente. El encuentra una o todas las soluciones posibles a un problema.
¿Por qué se llaman algoritmos de vuelta atrás?. Porque en el caso de no encontrar una solución en una subtarea se retrocede a la subtarea original y se prueba otra cosa distinta (una nueva subtarea distinta a las probadas anteriormente).
Los algoritmos de vuelta atrás se utilizan para encontrar soluciones a un problema. No siguen unas reglas para la búsqueda de la solución, simplemente una búsqueda sistemática, que más o menos viene a significar que hay que probar todo lo posible hasta encontrar la solución o encontrar que no existe solución al problema. Para conseguir este propósito, se separa la búsqueda en varias búsquedas parciales o subtareas. Asimismo, estas subtareas suelen incluir más subtareas, por lo que el tratamiento general de estos algoritmos es de naturaleza recursiva.
Los algoritmos de vuelta atrás tienen un esquema genérico, según se busque una o todas las soluciones, y puede adaptarse fácilmente según las necesidades de cada problema. A continuación se exponen estos esquemas, extraídos de Wirth (ver Bibliografía). Los bloques se agrupan con begin y end, equivalentes a los corchetes de C, además están tabulados.
- esquema para una solución:
procedimiento ensayar (paso : TipoPaso)
repetir
| seleccionar_candidato
| if aceptable then
| begin
| anotar_candidato
| if solucion_incompleta then
| begin
| ensayar(paso_siguiente)
| if no acertado then borrar_candidato
| end
| else begin
| anotar_solucion
| acertado <- cierto;
| end
hasta que (acertado = cierto) o (candidatos_agotados)
fin procedimiento
- esquema para todas las soluciones:
procedimiento ensayar (paso : TipoPaso)
para cada candidato hacer
| seleccionar candidato
| if aceptable then
| begin
| anotar_candidato
| if solucion_incompleta then
| ensayar(paso_siguiente)
| else
| almacenar_solucion
| borrar_candidato
| end
hasta que candidatos_agotados
fin procedimiento
EJEMPLO DE BACK TRACKING La vuelta del caballo
Se dispone de un tablero rectangular, por ejemplo el tablero de ajedrez, y de un caballo, que se mueve según las reglas de este juego. El objetivo es encontrar una manera de recorrer todo el tablero partiendo de una casilla determinada, de tal forma que el caballo pase una sola vez por cada casilla. Una variante es obligar al caballo a volver a la posición de partida en el último movimiento.
Por último se estudiará como encontrar todas las soluciones posibles partiendo de una misma casilla.
Para resolver el problema hay que realizar todos los movimientos posibles hasta que ya no se pueda avanzar, en cuyo caso hay que dar marcha atrás, o bien hasta que se cubra el tablero. Además, es necesario determinar la organización de los datos para implementar el algoritmo.
- ¿Cómo se mueve un caballo?. Para aquellos que no sepan jugar al ajedrez se muestra un gráfico con los ocho movimientos que puede realizar. Estos movimientos serán los ocho candidatos.
Con las coordenadas en las que se encuentre el caballo y las ocho coordenadas relativas se determina el siguiente movimiento. Las coordenas relativas se guardan en dos arrays:
ejex = [2, 1, -1, -2, -2, -1, 1, 2]
ejey = [1, 2, 2, 1, -1, -2, -2, -1]
El tablero, del tamaño que sea, se representará mediante un array bidimensional de números enteros. A continuación se muestra un gráfico con un tablero de tamaño 5x5 con todo el recorrido partiendo de la esquina superior izquierda.
Cuando se encuentra una solución, una variable que se pasa por referencia es puesta a 1 (cierto). Puede hacerse una variable de alcance global y simplificar un poco el código, pero esto no siempre es recomendable.
Para codificar el programa, es necesario considerar algunos aspectos más, entre otras cosas no salirse de los límites del tablero y no pisar una casilla ya cubierta (selección del candidato). Se determina que hay solución cuando ya no hay más casillas que recorrer.
Para aprender el algoritmo de BackTracking o ver el codigo fuente de caballo este es el
http://www.algoritmia.net/articles.php?id=33
___________________________________________________________________________________________
Inteligencia Artificial desarrolla su propio videojuego
Software que inventa otro Software?
Esto no me parecia imposible, pero en cierto modo asusta un poco la idea de que las maquinas piensen por si mismas y tomen sus propias decisiones excluyendo nuestros deseos.
Angelina, una entidad artificialmente inteligente, desarrolla un videojuego casi en su totalidad, con un conocimiento sumamente sorprendente de las necesidades de entretenimiento humanas.
De la inteligencia artificial se espera que sea capaz de actuar por sí sola en contextos prácticos, pero la verdad es que sus fundamentos pueden aplicarse en cualquier actividad humana, incluso el entretenimiento. Tal es el caso de Angelina, una entidad artificialmente inteligente que desarrolló por sí misma y de la nada un videojuego casi entero.
Utilizando un técnica conocida como “co-evolución cooperativa”, Angelina diseñó por separado los diferentes aspectos de “InSpace Station Invaders”, juego en el que un científico debe defenderse de robots y aliens que le impiden escapar a una estación espacial. Características como el diseño de cada nivel, el comportamiento de los enemigos y los potenciadores que dan al jugador habilidades extras corrieron por cuenta de Angelina.
Pero por si esto no fuera suficientemente sorprendente, el sistema también combinó todo esto para simular el modo de juego de un ser humano e identificar los elementos más divertidos o interesantes para el juego. Los niveles imposibles de completar, por ejemplo, fueron descartados de inmediato, y aquellos difíciles pero desafiantes y que requerían de cierta inteligencia para superarse quedaron catalogados como divertidos.
Sin embargo Angelina tuvo problemas con los efectos gráficos y de sonido, finalmente añadidos por Michael Cook, investigador de la computación en el Imperial College de Londres y creador de Angelina, quien piensa además que su invención, más que representar una amenaza para los desarrolladores de juegos, puede ser una herramienta sumamente útil que refuerce su labor.
En un dato curioso, Angelina creó un juego especialmente para el sitio New Scientist, que tiene la singular característica de que el personaje principal no puede morir porque “de introudcir la muerte”, explica Cook, “habría sido muy fácil para Angelina crear juegos imposibles de cumplir”.
Aqui el Juego creado por la I.A, para que lo jueguen:
(Es mejor que mis burdos intentos por crear uno propio xD
___________________________________________________________________________________________
Conversaciones con una máquina.
(La mayoria alguna vez interactuamos con algun bot).
Todos alguna vez hemos hablado con una bot, por ejemplo los contactos sexuales que se agregan al msn messenger, o aqui mismo en taringa los supuestos usuarios que dejan publicidad en tus mensajes privados.
pero de eso a confiarle tus secretos a una maquina......
El hecho de poder conversar con una máquina de manera coherente no es algo nuevo, existen asistentes virtuales en algunas webs en las que podemos realizar preguntas en lenguaje natural y obtener respuestas coherentes; de hecho, fue en 1964 cuando Joseph Weizenbaum desarrolló Eliza, un programa que era capaz de conversar con una persona.
Y aunque Eliza era capaz de conversar de manera coherente, realmente, no era tan inteligente como aparentaba puesto que su rutina estaba sustentada en los principios de la psicología rogeriana de Carl Rogers, es decir, empatizar con el individuo para que se sienta escuchado, algo que se trasladó a Eliza en forma de frases hechas que se utilizaban para que el individuo siguiese conversando.
Dicho de otra forma, Eliza era capaz de procesar las palabras y responder con la frase programada más adecuada o, en caso contrario, responder con una frase que simbolizase un asentimiento de lo que se decía para que el individuo siguiese hablando. Concretamente, la conversación de Eliza giraba sobre tres grupos de frases (que se pueden probar en alguno de los simuladores existentes en la red) que se encontraban programadas en su rutina:
La conjugación de estos tres juegos de frases programadas ante un interlocutor que siguiera la conversación hacía que Eliza ofreciese respuestas tan convincentes que hacían que mucha gente creyese que estaban hablando con alguien de verdad o bien que, realmente, la máquina les comprendía.
Weizenbaum se sorprendió mucho al ver cómo su secretaria se sentaba delante de Eliza y le contaba aspectos íntimos de su vida porque pensaba que, realmente, la máquina la estaba escuchando. De hecho, algunos psiquiatras de la época veían en Eliza una posible forma de conectar con pacientes graves que no hablaban con su terapeuta. En 1976, y tras todo lo acontecido y observado, Weizenbaum publicó Computer Power and Human Reason, un libro en el que contó su experiencia con Eliza y en el que dejó clara su crítica visión sobre la incorporación de la inteligencia en las máquinas. Wiezenbaum admitía la viabilidad de la Inteligencia Artificial pero, por razones morales, se oponía a su utilización.
Sin duda es interesante, pero no sustituyen una amena charla con los amigos de T!
Si quieren aprender mas sobre I.A y Redes Neuronales, aqui les dejo el link de un manual paso a paso:
Espero les guste el Post, dejen su opinión o comentario que es lo mas apreciado .
___________________________________________________________________
Una de las cosas que me gusto mas durante mi carrera fue la materia de Inteligencia Artificial, lo que se obtenia con ella era asombroso. Algo que me parecio fascinante fue el Algoritmo resuelvelo todo, este es el Back Tracking.
BACK TRACKING (Si el problema tiene Solucion....La encuentra).
Este Algoritmo te resuelve cualquier problema si lo sabes implementar correctamente. El encuentra una o todas las soluciones posibles a un problema.
¿Por qué se llaman algoritmos de vuelta atrás?. Porque en el caso de no encontrar una solución en una subtarea se retrocede a la subtarea original y se prueba otra cosa distinta (una nueva subtarea distinta a las probadas anteriormente).
Los algoritmos de vuelta atrás se utilizan para encontrar soluciones a un problema. No siguen unas reglas para la búsqueda de la solución, simplemente una búsqueda sistemática, que más o menos viene a significar que hay que probar todo lo posible hasta encontrar la solución o encontrar que no existe solución al problema. Para conseguir este propósito, se separa la búsqueda en varias búsquedas parciales o subtareas. Asimismo, estas subtareas suelen incluir más subtareas, por lo que el tratamiento general de estos algoritmos es de naturaleza recursiva.
Los algoritmos de vuelta atrás tienen un esquema genérico, según se busque una o todas las soluciones, y puede adaptarse fácilmente según las necesidades de cada problema. A continuación se exponen estos esquemas, extraídos de Wirth (ver Bibliografía). Los bloques se agrupan con begin y end, equivalentes a los corchetes de C, además están tabulados.
- esquema para una solución:
procedimiento ensayar (paso : TipoPaso)
repetir
| seleccionar_candidato
| if aceptable then
| begin
| anotar_candidato
| if solucion_incompleta then
| begin
| ensayar(paso_siguiente)
| if no acertado then borrar_candidato
| end
| else begin
| anotar_solucion
| acertado <- cierto;
| end
hasta que (acertado = cierto) o (candidatos_agotados)
fin procedimiento
- esquema para todas las soluciones:
procedimiento ensayar (paso : TipoPaso)
para cada candidato hacer
| seleccionar candidato
| if aceptable then
| begin
| anotar_candidato
| if solucion_incompleta then
| ensayar(paso_siguiente)
| else
| almacenar_solucion
| borrar_candidato
| end
hasta que candidatos_agotados
fin procedimiento
EJEMPLO DE BACK TRACKING La vuelta del caballo
Se dispone de un tablero rectangular, por ejemplo el tablero de ajedrez, y de un caballo, que se mueve según las reglas de este juego. El objetivo es encontrar una manera de recorrer todo el tablero partiendo de una casilla determinada, de tal forma que el caballo pase una sola vez por cada casilla. Una variante es obligar al caballo a volver a la posición de partida en el último movimiento.
Por último se estudiará como encontrar todas las soluciones posibles partiendo de una misma casilla.
Para resolver el problema hay que realizar todos los movimientos posibles hasta que ya no se pueda avanzar, en cuyo caso hay que dar marcha atrás, o bien hasta que se cubra el tablero. Además, es necesario determinar la organización de los datos para implementar el algoritmo.
- ¿Cómo se mueve un caballo?. Para aquellos que no sepan jugar al ajedrez se muestra un gráfico con los ocho movimientos que puede realizar. Estos movimientos serán los ocho candidatos.
Con las coordenadas en las que se encuentre el caballo y las ocho coordenadas relativas se determina el siguiente movimiento. Las coordenas relativas se guardan en dos arrays:
ejex = [2, 1, -1, -2, -2, -1, 1, 2]
ejey = [1, 2, 2, 1, -1, -2, -2, -1]
El tablero, del tamaño que sea, se representará mediante un array bidimensional de números enteros. A continuación se muestra un gráfico con un tablero de tamaño 5x5 con todo el recorrido partiendo de la esquina superior izquierda.
Cuando se encuentra una solución, una variable que se pasa por referencia es puesta a 1 (cierto). Puede hacerse una variable de alcance global y simplificar un poco el código, pero esto no siempre es recomendable.
Para codificar el programa, es necesario considerar algunos aspectos más, entre otras cosas no salirse de los límites del tablero y no pisar una casilla ya cubierta (selección del candidato). Se determina que hay solución cuando ya no hay más casillas que recorrer.
Para aprender el algoritmo de BackTracking o ver el codigo fuente de caballo este es el
http://www.algoritmia.net/articles.php?id=33
___________________________________________________________________________________________
Inteligencia Artificial desarrolla su propio videojuego
Software que inventa otro Software?
Esto no me parecia imposible, pero en cierto modo asusta un poco la idea de que las maquinas piensen por si mismas y tomen sus propias decisiones excluyendo nuestros deseos.
Angelina, una entidad artificialmente inteligente, desarrolla un videojuego casi en su totalidad, con un conocimiento sumamente sorprendente de las necesidades de entretenimiento humanas.
De la inteligencia artificial se espera que sea capaz de actuar por sí sola en contextos prácticos, pero la verdad es que sus fundamentos pueden aplicarse en cualquier actividad humana, incluso el entretenimiento. Tal es el caso de Angelina, una entidad artificialmente inteligente que desarrolló por sí misma y de la nada un videojuego casi entero.
Utilizando un técnica conocida como “co-evolución cooperativa”, Angelina diseñó por separado los diferentes aspectos de “InSpace Station Invaders”, juego en el que un científico debe defenderse de robots y aliens que le impiden escapar a una estación espacial. Características como el diseño de cada nivel, el comportamiento de los enemigos y los potenciadores que dan al jugador habilidades extras corrieron por cuenta de Angelina.
Pero por si esto no fuera suficientemente sorprendente, el sistema también combinó todo esto para simular el modo de juego de un ser humano e identificar los elementos más divertidos o interesantes para el juego. Los niveles imposibles de completar, por ejemplo, fueron descartados de inmediato, y aquellos difíciles pero desafiantes y que requerían de cierta inteligencia para superarse quedaron catalogados como divertidos.
Sin embargo Angelina tuvo problemas con los efectos gráficos y de sonido, finalmente añadidos por Michael Cook, investigador de la computación en el Imperial College de Londres y creador de Angelina, quien piensa además que su invención, más que representar una amenaza para los desarrolladores de juegos, puede ser una herramienta sumamente útil que refuerce su labor.
En un dato curioso, Angelina creó un juego especialmente para el sitio New Scientist, que tiene la singular característica de que el personaje principal no puede morir porque “de introudcir la muerte”, explica Cook, “habría sido muy fácil para Angelina crear juegos imposibles de cumplir”.
Aqui el Juego creado por la I.A, para que lo jueguen:
(Es mejor que mis burdos intentos por crear uno propio xD
___________________________________________________________________________________________
Conversaciones con una máquina.
(La mayoria alguna vez interactuamos con algun bot).
Todos alguna vez hemos hablado con una bot, por ejemplo los contactos sexuales que se agregan al msn messenger, o aqui mismo en taringa los supuestos usuarios que dejan publicidad en tus mensajes privados.
pero de eso a confiarle tus secretos a una maquina......
El hecho de poder conversar con una máquina de manera coherente no es algo nuevo, existen asistentes virtuales en algunas webs en las que podemos realizar preguntas en lenguaje natural y obtener respuestas coherentes; de hecho, fue en 1964 cuando Joseph Weizenbaum desarrolló Eliza, un programa que era capaz de conversar con una persona.
Y aunque Eliza era capaz de conversar de manera coherente, realmente, no era tan inteligente como aparentaba puesto que su rutina estaba sustentada en los principios de la psicología rogeriana de Carl Rogers, es decir, empatizar con el individuo para que se sienta escuchado, algo que se trasladó a Eliza en forma de frases hechas que se utilizaban para que el individuo siguiese conversando.
Dicho de otra forma, Eliza era capaz de procesar las palabras y responder con la frase programada más adecuada o, en caso contrario, responder con una frase que simbolizase un asentimiento de lo que se decía para que el individuo siguiese hablando. Concretamente, la conversación de Eliza giraba sobre tres grupos de frases (que se pueden probar en alguno de los simuladores existentes en la red) que se encontraban programadas en su rutina:
La conjugación de estos tres juegos de frases programadas ante un interlocutor que siguiera la conversación hacía que Eliza ofreciese respuestas tan convincentes que hacían que mucha gente creyese que estaban hablando con alguien de verdad o bien que, realmente, la máquina les comprendía.
Weizenbaum se sorprendió mucho al ver cómo su secretaria se sentaba delante de Eliza y le contaba aspectos íntimos de su vida porque pensaba que, realmente, la máquina la estaba escuchando. De hecho, algunos psiquiatras de la época veían en Eliza una posible forma de conectar con pacientes graves que no hablaban con su terapeuta. En 1976, y tras todo lo acontecido y observado, Weizenbaum publicó Computer Power and Human Reason, un libro en el que contó su experiencia con Eliza y en el que dejó clara su crítica visión sobre la incorporación de la inteligencia en las máquinas. Wiezenbaum admitía la viabilidad de la Inteligencia Artificial pero, por razones morales, se oponía a su utilización.
Sin duda es interesante, pero no sustituyen una amena charla con los amigos de T!
Si quieren aprender mas sobre I.A y Redes Neuronales, aqui les dejo el link de un manual paso a paso:
Espero les guste el Post, dejen su opinión o comentario que es lo mas apreciado .
___________________________________________________________________

