[escepticos] No pienses en un elefante (Era: La Clave)
Tei
oscar.vives en gmail.com
Mar Ago 21 11:48:18 WEST 2012
2012/8/21 Paco Gaspar <fjgaspar at gmail.com>:
> El 21 de agosto de 2012 10:46, Tei <oscar.vives at gmail.com> escribió:
>
>>
>> Muy divertida esa paradoja, y no la conocia.
>>
>>
> Yo sí la conocía, aunque no sabía cómo se llamaba, y, en efecto, a pesar de
> todo lo que dices, es el gran hándicap de la IA. La IA es capaz de resolver
> complejísimos escenarios. Basta ver algunos videojuegos para comprobarlo.
Hablando de esto, de videojuegos y de IA.
En videojuegos hay varios problemas que se tienen que resolver con
algoritmos de estos de ia:
- Pathfinding: que los personajes encuentren el camino entre 2
puntos sin quedarse atascados.
- Decidir objetivos.
El 99% de los juegos tienen ambos algoritmos en extremo sencillos. Si
es un juego con un solo jugador, el objetivo es fijo, disparar al
jugador, o andar hacia el en linea recta, y cuando se esta a distancia
suficiente, darle golpes/morder. Sin son varios, lo mismo, pero hacia
el jugador mas cercano en linea recta, o el jugador que le ha hecho a
la criatura mas daño recientemente. Osea que de IA, poquita*.
Igual un poco mas refinados son los juegos que tratan de simular un
jugador. Tienes por ejemplo juegos en primera persona de combate, en
los que hay creaturas que simulan personas, e incluso aprenden el mapa
y navegan por el cogiendo armas y municion y pillando desprevenidos a
los humanos. Lo que hace el algoritmo es unir los puntos interesantes
del mapa por "rutas". Solo se crean rutas si son validas (el bot
puede ir de un punto a otro). El bot crea puntos intersantes obvios,
como armas y municion, y luego crea unos cuantos practicos, como en el
hueco de una puerta (aunque no seria necesario). Luego el bot
simplemente sigue prioridades, ....si hay un humano, o hay cerca un
arma poderosa, hacia donde ir, que hacer. Mientras no tenga un humano
a quien disparar, seguira estos puntos de interes armandose hasta los
dientes. Bots creados asi juegan razonablemente bien, comparable a
un humano normal. Ademas hay que simular punteria defectuosa, sino
"encestarian todos los triples" y no estarias simulando un humano. Un
bot puede calcular la velocidad y trayectoria, y hacer siempre
disparos perfectos, pero de eso no va la simulacion.
El pathfinding generalmente utiliza informacion precomputada, el no
sabe ir del punto A al B, el bot solo sabe que quiere ir al B, de que
significa avanzar hacia B se encarga el pathfinding (en la practica es
solo otra funcion, sin muchas diferencias con lo demas, pero es
practico hacer la diferencia porque son diferentes niveles de
abstracción). Si usa un algoritmo A-estrella, cada punto del mapa (o
nodo) tiene un coste de movimiento en cada dirección, tomando las
direcciones de menor coste se alcanza el punto B, entonces el
algoritmo solo tiene que escoger de 4 direcciones,la de coste menor (4
comparaciones numericas, buscar el número mas bajo).
Complejo y dificil no es lo mismo. Un problema complejo que se puede
dividir en muchos problemas pequeños es facil aunque pesado, para los
humanos un trabajo pesado es dificil porque es dificil para ellos
completarlo sin cansarse y equivocarse muchas veces. Pero un ordenador
no tiene este problema de hardware. Si un problema es complejo o
paralelizable, es una propiedad del problema. Si es paralelizable se
puede resolver rapidamente, si es divisible en subproblemas, se puede
convertir en facil.
* En ocasiones si parece que los personajes hacen acciones muy
complejas, es porque un programador le ha escrito una serie de guiones
(como si fueran actores de teatro), y el personaje sigue uno de esos
guiones. Es un truco barato de insuflar vida y apariencia de
inteligencia a lo que en realidad no lo tiene. El problema es que si
haces un guion en el que el robot le da una patada a la mesa,
funcionara bien casi siempre, pero cuando el jugador tenga la
ocurrencia de mover previamente la mesa, el robot dara una patada al
aire.
--
--
ℱin del ℳensaje.
Más información sobre la lista de distribución Escepticos