Professional Documents
Culture Documents
Tareas de la vida diaria (más dificil para una máquina que las tareas de un
experto)
o Percepción (visión y habla)
o Lenguaje natural (comprensión, generación, traducción)
o Sentido común
o Control de un robot
Tareas formales
o Juegos (ajedrez, backgammon, damas)
o Matemáticas (geometría, lógica, cálculo, demostración de
propiedades)
Tareas de los expertos (necesitan un conocimiento menor que el
conocimiento necesario en las tareas más comunes)
o Ingeniería (diseño, detección de fallos, planificación de
manufacturación)
o Análisis científico
o Diagnosis médica
o Análisis financiero
Es voluminoso
Es difícil caracterizarlo
Cambia
Se organiza de manera que se corresponde con la forma en que va a se
usado
Para solucionar problemas complicados, los programas que utilizan las técnicas
de IA presentan numerosas ventajas con respecto a los que no lo hacen:
Solución 2:
Solución 3:
Una estructura contiene el tablero actual, así como una lista de posiciones
del tablero que podrían ser el próximo movimiento, y una estimación de la
probabilidad de que esa jugada lleve a la victoria. Para decidir la siguiente
jugada se tienen en cuenta las posiciones de tablero que resultan de cada
movimiento posible. Se decide la posición que corresponde a la mejor
jugada, considerando si la jugada produce la victoria, y en caso contrario
considerando todos los movimientos que el oponente puede realizar
asumiendo que éste elegirá el peor para nosotros. El algoritmo inspecciona
varias secuencias de movimientos intentando maximizar la probabilidad de
victoria. Necesita mucho más tiempo que los demás, ya que debe realizar
una búsqueda en un árbol de posibilidades antes de realizar cada
movimiento. Sin embargo, es superior a las demás soluciones pues podría
ser ampliado para manipular juegos más complicados. Además, puede
aumentarse su potencia usando conocimiento sobre el juego, por ejemplo,
en lugar de considerar todos los posibles movimientos considerar solo un
subconjunto siguiendo algún criterio razonable. Este programa es un
ejemplo del uso de una técnica de IA.
Ejemplo 2: respuestas a preguntas
Solución 1:
Solución 2:
Solución 3:
Test de Turing
En 1950, Alan Turing propuso el siguiente método para determinar si una
máquina es capaz de pensar. Una persona es un entrevistador y se halla en una
habitación separado de otra persona y un ordenador a evaluar. El entrevistador
hace preguntas a ambos de forma escrita. Si luego de un cierto número de
preguntas y respuestas, el interrogador no puede identificar quién es el
computador y quién es la persona, entonces podemos decir que el computador
piensa.
Hay problemas que por ser artificiales y estructurados son fáciles de especificar
(por ej. el ajedrez, el problema de las jarras de agua, etc. ). Otros problemas
naturales, como por ej. la comprensión del lenguaje, no son tan sencillos de
especificar.
El estado inicial consiste en uno o varios estados en los que puede comenzar el
problema. El estado objetivo consiste en uno o varios estados finales que se
consideran solución aceptable.
{ (X,Y)/ X son los litros en la jarra de 4l con 0<=X<=4 AND Y son los litros de
la jarra de 3l con 0<=Y<=3 }
El estado final es (2,0). El estado final podría ser (2,N) en caso de que no
importen los litros de la segunda jarra.
7. Pasar toda el agua de la jarra de 4l a la jarra de 3l: Si (X,Y) AND X>0 AND
X+Y<3 => (0,X+Y)
8. Pasar toda el agua de la jarra de 3l a la jarra de 4l: Si (X,Y) AND Y>0 AND
X+Y<4 => (X+Y,0)
(0,0) => (0,3) => (3,0) => (3,3) => (4,2) => (0,2) => (2,0)
(0,0) => (4,0) => (1,3) => (1,0) => (0,1) => (4,1) => (2,3) => (2,0)
en la cual se aplicaron las reglas 1, 5, 4, 7, 1, 5 y 4
Las reglas no sólo deben describir el problema sino también algún tipo de
conocimiento sobre su solución. Si en el ejemplo anterior se considera la
siguiente nueva regla:
Vaciar "un poco" la jarra de 4l: Si (X,Y) AND X>0 => (X-Q, Y)
es decir, tirar agua sin cuantificar, intuitivamente se concluye que la
aplicación de esta regla nunca nos acercará a la solución del problema.
Causar cambios:
Ser sistemática:
Este algoritmo de búsqueda visita cada nodo del árbol por niveles, es decir, visita
todos los nodos de un nivel antes de visitar los del siguiente. A continuación se
detalla un pseudo-código de este algoritmo:
Lista_nodos = [estado_inicial];
Mientras Not Vacia(lista_nodos)
estado_actual = lista_nodos.primero;
Si EstadoFinal(estado_actual) entonces
Terminar;
Sino
lista_reglas = ReglasAplicables (estado_actual);
Mientras NOT Vacia(lista_reglas)
estado_sucesor = AplicarRegla (lista_reglas);
lista_nodos = lista_nodos + [estado_sucesor];
Fin Mientras;
Fin Sino;
Fin Mientras;
Este algoritmo básico debería modificarse para detectar el caso en que se vuelva
a alcanzar un estado que ya ha sido visitado con anterioridad. En este caso,
debería realizarse una "poda" de la rama del árbol, ya que en caso contrario se
volvería a generar un subárbol ya generado.
Con la búsqueda a lo ancho se asegura que una vez alcanzada una solución no
existe otra ruta hacia la solución que tenga menor cantidad de pasos. Una
desventaja de este algoritmo es que para alcanzar una solución de n pasos, debe
haber explorado todo el espacio de estados hasta ese nivel.
Ejercicio:
Realizar el árbol de búsqueda a lo ancho para encontrar la solución del problema
de las jarras de agua.
Este algoritmo de búsqueda continúa por una rama del árbol hasta encontrar la
solución o decidir terminar la búsqueda por esa dirección (por llegar al estado
final, por tener un largo de ruta que supera una cota máxima determina, por haber
llega a un estado ya visitado, etc.). Al fracasar una ruta, se realiza un
backtracking o vuelta atrás, continuando la exploración en el paso
inmediatamente anterior. A continuación se detalla un pseudo-código de este
algoritmo recursivo que incialmente es llamado con el estado_inicial:
Función Buscar (estado_actual) devuelve Boolean
Comienzo
Si EstadoFinal(estado_actual) entonces
Devolver TRUE;
Sino
exito = FALSE;
lista_reglas = ReglasAplicables (estado_actual);
Mientras NOT exito AND NOT Vacia(lista_reglas)
estado_sucesor = AplicarRegla (lista_reglas);
exito = Buscar (estado_sucesor);
Fin Mientras;
Devolver exito;
Fin Sino;
Fin Buscar;
Este algoritmo básico debería modificarse para terminar la búsqueda en una rama
que se alcanza un estado que ya visitado.
Búsqueda Heurística
Existen algunos problemas en los que resulta imposible explorar el árbol del
espacio de estados pues resulta en una explosión combinatoria. Por ej. en el
problema del viajante, se debe encontrar la ruta mínima entre N ciudades a
visitar. Si se aplica cualquiera de los dos algoritmos de búsqueda anteriores, nos
encontramos ante un costo computacional no polinomial O(N!).
Las heurísticas pueden sacrificar la completitud, es decir, pueden pasar por alto
una buena solución. Sin embargo, existen varios argumentos a favor de usarlas:
Dentro de las mismas reglas. Por ej. en el ajedrez, las reglas pueden
describir, además de los movimientos legales, también las buenas jugadas.
Algunos problemas permiten deshacer uno o varios pasos hacia una solución una
vez realizados. En este aspecto, existen tres categorías en las que puede dividirse
un problema:
Recuperables:
No recuperables:
Ignorables:
Consecuencia cierta:
Consecuencia incierta:
no es posible planificar con certeza pues no se sabe que ocurrirá luego del
siguiente movimiento. Sin embargo, se puede realizar una planificación
para generar operadores que tengan una buena probabilidad de llegar a la
solución.
Los problemas más difíciles de resolver son los no recuperables de consecuencia
incierta. Por ej. el control del brazo de un robot: es de consecuencia incierta pues
alguien puede interponer un objeto en la ruta del brazo, se puede atascar, etc.
Algún camino:
sólo importa encontrar una solución sin importar si existen otros caminos
que conducen a la solución. Generalmente se resuelven con heurísticas.
Por ej. programa de respuestas a preguntas.
El mejor camino:
importa encontrar la ruta más corta hacia la solución. Son problemas más
complicados de computar. Algunos requieren una búsqueda más
exhaustiva que usando heurísticas. Por ej. en el problema del viajante
importa encontrar la ruta más corta entre las ciudades a visitar.
5. ¿La solución deseada es un estado o la ruta hacia un estado?
un estado final:
Reconocer la solución:
Acotar la búsqueda:
Solitarios:
Conversacionales:
Se hallan N discos de distinto tamaño apilados sobre una base A de manera que
cada disco se encuentra sobre uno de mayor radio. Existen otras dos bases vacías
B y C. El objetivo es llevar todos los discos de la base A hasta la base C, para lo
cual puede usarse la base B. Considerar que se puede mover sólo un disco a la
vez, y cada disco puede descansar solamente en las bases y no en el suelo.
Recordar que los discos deben situarse siempre sobre uno de mayor radio.