You are on page 1of 21

Introducción a la Inteligencia Artificial

1.1. Definición de Inteligencia Artificial (IA) y evolución histórica 


1.2. Técnicas de resolución de problemas de IA 
1.3. Criterios de éxito de la IA 
1.4. Resolución de problemas de IA:
1.4.1. Definición formal del problema 
1.4.2. Estrategia de control: Métodos de búsqueda 
1.4.3. Análisis del problema

1.1. Definición de Inteligencia Artificial  


En la bibliografía del área encontramos diferentes definiciones que pueden
darnos una idea de lo que se llama inteligencia artificial: 
 

 Una de las áreas de las ciencias computacionales encargadas de la creación


de hardware y software con comportamiento inteligentes.
 El estudio de las computaciones que permiten percibir, razonar y actuar
 Estudia como lograr que las máquinas realicen tareas que, por el momento,
son realizadas mejor por los seres humanos.

Desde el punto de vista de los objetivos, la IA puede considerarse como parte de


la ingeniería o de la ciencia:

 El objetivo ingenieril de la IA es resolver problemas reales, actuando


como un armamento de ideas acerca de cómo representar y utilizar el
conocimiento, y de como ensamblar sistemas
 El objetivo científico de la IA es explicar varios tipos de inteligencia.
Determinar qué ideas acerca de la representación del conocimiento, del
uso que se le da a éste, y del ensamble de sistemas explican distintas clases
de inteligencia.

Algunas aplicaciones de la inteligencia artificial:

 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

Desarrollo histórico de la Inteligencia Artificial según Jackson: 


 

 1950-1965. Periodo "clásico''

- Gestación [McColluck y Pitts, Shannon, Turing] 


- 1956, la I.A. tuvo su boom a partir de la conferencia efectuada en
Darmouth College. Estaban presentes importantes científicos como
McCarty (le dio el nomre a esta nueva area del conocimiento), Minsky
(fundador del laboratorio de IA del MIT), Shannon (laboratorios Bell),
Rodhester (IBM), Newell (presidente de la A.A.A.I. Asociación
Americana de IA), Simmon (premio nobel de Carnegie Mellon
University) 
- Redes neuronales, robótica (Shakey) 
- Búsqueda en un espacio de estados, Heurísticas, LISP 
- Resolutor general de problemas (GPS) [Newell, Simon]. Resolución de
problemas de sentido común, los cuales incluyen razonamiento de objetos
físicos y sus relaciones, como también razonamiento de acciones y sus
consecuencias. Solo se resolvieron tareas muy simples, pues no se pudo
crear un programa con la cantidad suficiente de conocimiento de un
dominio específico 
- Se pone principal énfasis en la implementación de juegos (ajedrez,
damas, etc.) así como en la demostración de teoremas matemáticos. 
- Limitaciones de pura búsqueda, explosión combinatoria. 
 

 1965-1975. Periodo "romántico''


- Representación "general'' del conocimiento. 
- Redes semánticas [Quillian] 
- Prototipos (frames) [Minsky] 
- Perceptrón [Minsky y Papert] 
- Lógica [Kowalski] 
- Mundo de bloques (SHDRLU) [Winograd] 
- Percepción (visión y habla), compresión de lenguaje natural, robótica. 
- Dificultades de representación "general'', problemas de "juguete''.
 

 1975-actualidad. Periodo "moderno'', Inteligencia "especifica'' vs.


"general''.

- Se identifica la necesidad de trabajar en sociedad con profesionales de


otras áreas de conocimiento 
- Representación explícita del conocimiento específico del dominio. 
- Sistema experto médico MYCIN (experto en enfermedades infecciosas
de la sangre) iniciado en la Universidad de Stanford 
- Sistemas expertos o basados en conocimiento. 
- Regreso de redes neuronales [Hopfield, Rumelhart, Hinton], algoritmos
genéticos [Holland, Goldberg] 
- Reconocimiento de voz (HMM), incertidumbre (RB, Lógica difusa),
planeación, aprendizaje 
- Aplicaciones "reales'' (medicina, finanzas, ingeniería, exploración, etc.). 
- Comercialización de la IA 
 
1.2. Técnicas de resolución de problemas de
IA  
Uno de los resultados que surgieron de las primeras investigaciones en IA fue
que la inteligencia necesita conocimiento. El conocimiento posee algunas
propiedades poco deseables como: 
 

 Es voluminoso
 Es difícil caracterizarlo
 Cambia
 Se organiza de manera que se corresponde con la forma en que va a se
usado

Una técnica de IA es un método que explota el conocimiento representado de


manera que se cumpla que: 
 

 Representa generalizaciones, es decir, no es necesario representar cada


situación individual, sino que las situaciones que comparten propiedades
importantes se agrupan.
 Debe ser entendido por las personas que lo provean.
 Puede ser modificado para corregir errores y reflejar cambios en el mundo
 Puede usarse en muchas situaciones aun sin ser totalmente exacto o
completo
 Puede usarse para superar su propio volumen, y disminuir el rango de
posibilidades que normalmente deben considerarse

Se pueden caracterizar las técnicas de IA con independencia del problema a


tratar.

Para solucionar problemas complicados, los programas que utilizan las técnicas
de IA presentan numerosas ventajas con respecto a los que no lo hacen:

 son menos frágiles, es decir, que no se despistan frente a una perturbación


pequeña de la entrada
 el conocimiento del programa es comprendido fácilmente por la gente
 usa generalizaciones
 tiene facilidad de extensión

Como contraposición, generalmente tienen más complejidad que otras


soluciones.

Se analizan brevemente a continuación dos tipos de problemas bien


diferenciados, y dentro de cada uno se ejemplifica lo que se entiende por una
técnica de IA.

Ejemplo 1: tres en raya

A continuación se plantean tres soluciones diferentes del problema de tres en


raya analizando la conveniencia de cada una. Para mejor detalle de las mismas
consultar [Rich98]. 
 
 Solución 1:

Una primera solución directa a este juego podría ser la de almacenar en un


vector las 19.693 (39) posibilidades de un tablero de 3 x 3 con tres valores
posibles en cada casilla (vacío-X-O), así como las correspondientes
jugadas sucesoras. Para realizar una jugada, bastaría con acceder a la
posición del tablero actual y la jugada sucesora correspondiente. Las
desventajas de este eficiente programa son bastante obvias: necesita gran
cantidad de memoria; alguien debe realizar el pesado trabajo de introducir
todas las jugadas y sus sucesoras; y el juego no se puede ampliar, por
ejemplo a tres dimensiones.

 Solución 2:

El programa posee una estrategia para cada turno de jugador. Analiza el


posible triunfo a partir de un estado del tablero dado. Aunque es menos
eficiente que la solución anterior en términos de tiempo, tiene la ventaja
que es más eficiente en términos de espacio. Su estrategia es más facil de
comprender y realizar cambios, aunque el programador debe comprender
la totalidad de la estrategia de antemano. Además, no es posible
generalizar parte del conocimiento del programa hacia un dominio
distinto, como tres en raya 3D.

 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

Se quiere realizar un programa que a partir de un texto escrito en español pueda


responder a preguntas en español sobre este texto. En este caso, es más difícil que
en el ejemplo anterior determinar formalmente y con precisión en qué consiste el
problema y en qué consiste una solución correcta para él. Un ejemplo de
programa de preguntas y respuestas en inglés es el programa POLITICS
(Carbonell,  1980).

A continuación se plantean tres soluciones diferentes analizando la conveniencia


de cada una. Para mejor detalle de las mismas consultar [Rich98]. 
 

 Solución 1:

Se tienen conjunto de plantillas (templates) preguntas, por ejemplo "Que x


y" asociada con patrones (patterns) respuesta, por ejemplo "y x z".
Responde a las preguntas usando el texto de entrada de forma literal. Se
hace coincidir fragmentos de texto de entrada con el patrón respuesta, y se
obtiene la respuesta, por ejemplo "z". Este algoritmo no puede contestar el
tipo de preguntas que la gente puede responder después de una simple
lectura del texto. La habilidad para responder depende de la forma exacta
de la pregunta, y de las variaciones contempladas en el diseño de
plantillas  y patrones. El proceso de sustitución de patrones usado es
llamado pattern matching. Pese a que lo que se entiende por IA no incluye
programas como éste, ésta técnica es la usada en uno de los programas
más célebres de IA, ELIZA.

 Solución 2:

Transforma el texto de entrada dándole una estructura interna que intenta


capturar el significado de las frases, y también transforma las preguntas de
igual manera. Las respuestas se encuentran emparejando unas con otras
formas estructuradas. Este enfoque está más basado en conocimiento que
el primero, y también es más efectivo. Puede responder a la mayoría de las
preguntas cuyas respuestas se encuentran en el texto, y es menos
quebradizo con respecto a las formulaciones exactas de preguntas y
respuestas. Algunas preguntas necesitan conocimiento adicional sobre el
mundo con el que trate el texto, que esta solución no posee.

 Solución 3:

Al igual que la solución anterior se transforma el texto en forma


estructurada, pero a diferencia del anterior, se combina esta forma con
otras formas estructuradas que describen conocimiento previo sobre los
objetos y situaciones que aparecen en el texto. Este programa es más
potente que los otros dos, debido a que responde a preguntas usando esta
estructura de conocimiento aumentada. Se utiliza lo que se denomina
técnica de IA, pues está basado en el conocimiento y en uso
computacional eficaz de ese conocimiento.
Estos ejemplos ponen de manifiesto tres importantes técnicas de IA:

 Búsqueda: proporciona una forma de resolver problemas en los que no se


dispone de un método directo
 Uso del conocimiento: proporciona una forma de resolver problemas
complejos explotando las estructuras existentes entre los objetos
involucrados
 Abstracción: proporciona una forma de separar aspectos y variaciones
importantes de aquellos otros sin importancia, y que en caso contrario
podrían colapsar el proceso.

1.3. Criterios de éxito de la IA  


Para determinar el éxito de un programa de IA, se deben realizar las siguientes
preguntas:

 ¿Está definida con claridad la tarea?


 ¿Existe un proceso instrumentado que efectúa la tarea?
 ¿Existe un conjunto de restricciones identificables a partir de las cuales el
procedimiento implantado tiene poder?
 ¿Resuelve un problema real?
 ¿Crea una nueva oportunidad?

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.

¿Se puede calibrar el éxito de la IA en dominios más restringidos? Por ejemplo,

- el éxito de un programa que juega al ajedrez se puede evaluar según los


jugadores que pueda derrotar; 
- el éxito de otros programas puede medirse comparando el tiempo que
tarda un ordenador en llevar a cabo una tarea con el que tarda una persona
en hacer lo mismo. Por ej. programas usados en empresas informáticas
para configurar sistemas particulares a las necesidades del cliente; 
- en tareas de cada día es más difícil, por ej. parafrasear un artículo del
periódico, la mejor forma de evaluarlo es ver si el programa responde de la
misma forma que haría una persona.
Cuando se quiere diseñar un programa de IA, se debe intentar especificar
tan bien como sea posible el criterio de éxito para el funcionamiento del
programa en su dominio particular. 
 

1.4. Resolución de problemas de IA    


ara construir un sistema que resuelva un sistema específico, es necesario:

1- Definir el problema formalmente con precisión. 


2- Analizar el problema. 
3- Representar el conocimiento necesario para resolver el problema. 
4- Elegir la mejor técnica que resuelva el problema y aplicarla. 
 

1.4.1. Definición formal del problema


El primer paso para diseñar un programa que resuelva un problema es crear una
descripción formal y manejable del propio problema. Sería adecuado contar con
programas que produzcan descripciones formales a partir de descripciones
informales, proceso denominado operacionalización. Dado que por ahora no se
conoce la forma de construir estos programas este proceso debe hacerse
manualmente.

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.

Para producir una especificación formal de un problema se deben definir: 


 

 espacio de estados válidos;


 estado inicial del problema;
 estado objetivo o final;
 reglas que se pueden aplicar para pasar de un estado a otro.

Un estado es la representación de un problema en un instante dado. Para definir


el espacio de estados no es necesario hacer una enumeración exhaustiva de todos
los estado válidos, sino que es posible definirlo de manera más general.

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.

Las reglas describen las acciones u operadores que posibilitan un pasaje de


estados. Una regla tiene una parte izquierda y una parte derecha. La parte
izquierda determina la aplicabilidad de la regla, es decir, describe los estados a
los que puede aplicarse la regla. La parte derecha describe la operación que se
lleva a cabo si se aplica la regla, es decir, como obtener el estado sucesor.

Por ejemplo, en el problema de jugar al ajedrez:

- el espacio de estados son la totalidad de tableros que se puede generar en


un juego de ajedrez; 
- el estado inicial es el tablero de 8 x 8 donde cada celda contiene un
símbolo de acuerdo a las piezas situadas; 
- el objetivo o estado final se define como cualquier posición de tablero en
la que el contrario no puede realizar ningún movimiento legal y su rey esté
amenzado; 
- las reglas son los movimientos legales, que pueden describirse mediante
una parte patrón para ser contrastado con la posición actual de tablero y
otra parte que describe el cambio que debe producirse en el tablero.
Dado que escribir exhaustivamente todas las reglas es imposible prácticamente,
(en el ejemplo, escribir todas las posiciones de tablero), las reglas deben
escribirse de la manera más general posible.

La representación como espacio de estados forma parte de la mayoría de los


métodos de IA. Su estructura se corresponde con la resolución de problemas
porque:

 permite definir formalmente el problema, mediante la necesidad de


convertir una situación dada en una situación deseada mediante un
conjunto de operaciones permitidas;
 permite definir el proceso de resolución de un problema como una
combinación de técnicas conocidas y búsqueda (la técnica general de
exploración del espacio intenta encontrar alguna ruta desde el estado
actual hasta un estado objetivo).

Ejercicio 1: Problema de las jarras de agua

Se tienen dos jarras de agua, una de 4l y otra de 3l sin escala de medición. 


Se desea tener 2l de agua en la jarra de 4l. Las siguientes operaciones son
válidas: llenar las jarras, tirar agua de las jarras, pasar agua de una jarra a otra. 
  
Solución: 
 

 El espacio de estados se define como

{ (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 inicial es (0,0)

 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.

 Las reglas que se pueden aplicar son:

1. Llenar la jarra de 4l: Si (X,Y) AND  X<4  => (4,Y)

2. Llenar la jarra de 3l: Si (X,Y) AND Y<3  => (X,3)

3. Vaciar la jarra de 4l: Si (X,Y) AND X>0  => (0, Y)


4. Vaciar la jarra de 3l: Si (X,Y) AND Y>0  => (X, 0)

5. Pasar agua de la jarra de 4l a la jarra de 3l hasta llenarla: Si (X,Y) AND X>0


AND  X+Y>=3  => (X-(3-Y),3)

6. Pasar agua de la jarra de 3l a la jarra de 4l hasta llenarla: Si (X,Y) AND Y>0


AND  X+Y>=4  => (4, Y-(4-X))

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) 
 

El programa debería encontrar un pasaje de estados para ir del estado (0,0) al


estado (2,0). Puede existir más de un pasaje de estados hacia la solución, por
ejemplo:

(0,0) => (0,3) => (3,0) => (3,3) => (4,2) => (0,2) => (2,0)

en la cual, a partir del estado inicial, se aplicaron las reglas 2, 8, 2, 6, 3 y 8, hasta


conseguir el estado objetivo.

Otro pasaje de estados hacia la solución es la siguiente

(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 
 

Con respecto a las reglas se puede concluir que: 


 

 Las condiciones que se establecen en la parte izquierda a veces no son


altamente necesarias pero restringen la aplicación de la regla a estados más
adecuados. Esto incrementa la eficiencia del programa que utiliza las
reglas. En el ejemplo anterior, la regla

1. Llenar la jarra de 4l: Si (X,Y) AND X<4  => (4,Y) 


contiene la condición (X<4), especificando que la jarra no se encuentra
llena. Si esta condición no se incluye, se puede aplicar la regla aún cuando
la jarra está llena. Dado que en este caso el estado del problema no cambia
la aplicación de la regla se considera inútil 
 

 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. 
 

 A veces, cuando se alcanzan algunos estados resulta obvio cómo se debe


continuar hacia la solución. Es posible agregar reglas de propósito especial
que capturen el conocimiento sobre casos especiales que conducen a la
resolución del problema. En el ejemplo anterior, se pueden agregar las
siguientes reglas de propósito especial:

Si (X,2) => (2,0) 


Si (2,Y) AND Y>0 => (2,0) 
Estas reglas no añaden más potencia al sistema ya que las operaciones que
describen las proporcionan otras reglas más generales. En el ejemplo, la
primera regla agregada es equivalente a la aplicación de las reglas
generales 3 y 8; y la segunda regla agregada es equivalente a la aplicación
de la regla general 4. Dependiendo de la estrategia de control que se utilice
para seleccionar reglas durante la resolución del problema se puede
mejorar el rendimiento si se les da preferencia a las reglas de casos
especiales.
  
Ejercicio 2: Problema de los Caníbales y Monjes 
 

1.4.2. Estrategia de control: Métodos de búsqueda


El problema puede resolverse con el uso de reglas en combinación con una
estrategia de control para trasladarse a través del espacio de estados hasta
encontrar un camino desde el estado inicial hasta el estado final. Se elige una
regla entre aquellas cuya parte izquierda concuerda con el estado actual. Se aplica
la regla elegida realizando el cambio de estado tal como se describe en la parte
derecha de la regla. Si el nuevo estado es estado objetivo o final se ha encontrado
la solución. En caso contrario se continúa con la aplicación de reglas al nuevo
estado.

Una estrategia de control especifica el orden en el que se deben aplicar las


reglas, así como también la forma de resolver conflictos cuando es posible aplicar
más de una regla. Para que una estrategia de control sea válida debe cumplir con
dos requisitos:

 Causar cambios:

las estrategias de control que no causan cambios de estado nunca alcanzan


la solución. Un ejemplo de estrategia de control que no causa cambios es
seleccionar siempre la primera regla aplicable de la lista de reglas
definidas. En el ejemplo de las jarras de agua, se continuaría
indefinidamente aplicando las reglas 1 y 3 sin posibilidad de arribar a la
solución.

 Ser sistemática:

las estrategias de control que no son sistemáticas pueden utilizar


secuencias de operaciones no apropiadas varias veces hasta alcanzar la
solución. Un ejemplo de estrategia de control no sistemática es seleccionar
la regla  a aplicar al azar. Esta estrategia puede encontrar la solución
eventualmente, pero luego de haber realizado varios pasos innecesarios e
incluso haber vuelto varias veces al mismo estado.
En caso de no contar con una aproximación directa al problema, el proceso de
búsqueda resulta fundamental en la resolución del mismo. Los algoritmos de
búsqueda detallados a continuación son ejemplos de estrategias de control
sistemáticas. Todos se basan en considerar un árbol de estados cuya raíz es el
estado inicial, y en cada nivel se hallan los estados sucesores correspondientes. 
 

 Búsqueda Breadth-First Search (primero en ancho)

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. 
  
 

 Búsqueda Depth-First Search (primero en profundidad)

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.

Con la búsqueda en profundidad no es necesario tener almacenado todo el


espacio de estados, sino sólo el camino que se está explorando. Puede encontrar
la solución sin tener que explorar gran parte del espacio de estados. Como
desventajas de este algoritmo se señala que puede seguir una ruta infructuosa
durante muchos pasos, y además la primera solución que encuentra puede distar
mucho de ser la solución de mínima cantidad de pasos. 
 

 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!).

Una heurística es una técnica que aumenta la eficiencia de un proceso de


búsqueda. El objetivo es guiar al proceso de búsqueda en la dirección más
provechosa sugiriendo el camino a seguir cuando hay más de una opción.

Las heurísticas pueden ser:


 generales: son adecuadas para una amplia variedad de dominios. Por ej. la
heurística del vecino más próximo (nearest neighbor) se aplica a muchos
problemas combinatorios. En el ejemplo del problema del viajante, se
comienza por una ciudad arbitraria continuando en cada paso por la ciudad
más cercana no visitada. Esto resulta en una reducción del costo
computacional a O(N2).

 de propósito especial: explotan el conocimiento específico de un dominio


para resolver problemas particulares.

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:

 Sin el uso de heurísticas se puede tener una explosión combinatoria.


 En muchos casos no se necesita la solución óptima sino una buena
aproximación. Según Simon (1981), las personas resuelven problemas
"satisfaciendo" y no "optimizando".
 Las aproximaciones que se logran con heurísticas pueden ser malas para
los peores casos de un problema, pero éstos raramente sedan en el mundo
real.
 El esfuerzo de intentar comprender por qué funciona o no una heurística
sirve para profundizar en la comprensión del problema.

Las heurísticas se pueden incorporar a un proceso de búsqueda basado en reglas


de dos maneras:

 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.

 Como una función que evalúa estados determinando su grado de


"deseable". Esta función evalúa aspectos del problema dando pesos a
aspectos individuales, de manera que el valor que devuelve es una
estimación de que el nodo pertenece a la ruta que conduce a la mejor
solución. Por ej. en el ajedrez se puede tener una función a maximizar la
cual devuelve el número de piezas de ventaja; en el problema del viajante
se puede tener una función a minimizar la cual devuelve la suma de
distancias recorridas; en el tres en raya se puede tener una función que
compute un punto por cada ficha en cada fila, columna o diagonal que se
pueda ganar.
En conclusión, las heurísticas representan el conocimiento general y específico
del mundo, que hace que sea abordable solucionar problemas complejos. 
 

1.4.3. Análisis del problema


Luego de definir el problema formalmente, el segundo paso en la resolución del
problema es el análisis del mismo. A fin de poder elegir el método más
apropiado  para resolver un problema particular, es necesario analizar distintas
cuestiones que afectan a al definición del mismo y a las características de la
solución deseada. Existen varias preguntas a responder acerca del problema:

1. ¿Puede descomponerse el problema en subproblemas más pequeños? 


2. ¿Pueden deshacerse pasos inadecuados hacia la solución? 
3. ¿Es predecible el universo del problema? 
4. ¿Una solución es buena de manera absoluta o relativa? 
5. ¿La solución deseada es un estado o la ruta hacia un estado? 
6. ¿El conocimiento se necesita para resolver el problema o para restringir la
búsqueda de la solución? 
7. El programa que soluciona el problema ¿busca la solución solo o necesita
interactuar con una persona? 
 

1. ¿Puede descomponerse el problema en subproblemas más pequeños?

Algunos problemas pueden descomponerse en subproblemas independientes, de


manera que encontrar una solución global es la composición de soluciones
particulares. Por ej. en la resolución de integrales, una integral puede
descomponerse por partes, y resolver las partes simples directamente o
descomponerlas recursivamente.

Por otra partes, existen otros problemas que no pueden descomponerse y


componer la solución a partir de las soluciones parciales de sus partes. Por el
contrario, una solución necesita considerar globalmente el problema. Por ej. el
problema del mundo de los bloques.

2. ¿Pueden deshacerse pasos inadecuados hacia la solución?

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:

en un punto dado es posible deshacer todos los pasos inadecuados hacia la


solución. Por ej. en el juego 8-puzzle. La estructura de control se
implementa con una pila push-down en la que se almacenan las decisiones
para poder volver atrás.

 No recuperables:

en un punto dado no es posible deshacer ningún paso realizado. Por ej. en


una partida de ajedrez no se puede volver atrás una vez movidas las piezas.
En estos problemas el sistema debe esforzarse en la toma de decisiones
pues éstas son irrevocables. Algunos usan una planificación en la que se
analiza por adelantado una secuencia de pasos antes de realizar el primer
paso para descubrir a donde conduce.

 Ignorables:

en un punto dado es posible ignorar los pasos realizados hasta el momento


y comenzar de nuevo con una nueva solución. Por ej. un demostrador de
teoremas puede abandonar una demostración basada en un lema dado y
comenzar nuevamente. Estos problemas se resuelven con estrategias de
control sencillas que nunca vuelven hacia atrás.
  
3. ¿Es predecible el universo del problema?

Los problemas pueden se de:

 Consecuencia cierta:

es posible planificar una secuencia de movimientos estando seguros del


resultado a obtener. Se puede realizar una planificación para generar
operadores que garanticen llegar a la solución.

 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.

4. ¿Una solución es buena de manera absoluta o relativa?

La solución de un problema puede consistir en encontrar:

 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?

La solución de un problema puede consistir en encontrar:

 un estado final:

no es necesario el registro del proceso seguido, sólo importa arribar a la


solución final. Por ej. interpretar texto.

 una ruta hacia un estado final:

se necesita dar el camino seguido desde el estado inicial al estado final.


Por ej. problema de las jarras de agua.
6. ¿El conocimiento se necesita para resolver el problema o para restringir
la búsqueda de la solución?
El conocimiento puede emplearse para:

 Reconocer la solución:

se necesita gran cantidad de conocimiento acerca del problema para poder


encontrar una solución. Por ej. comprensión de texto.

 Acotar la búsqueda:

la solución básica puede encontrarse con poco conocimiento, pero para


restringir el árbol de búsqueda y encontrar la solución de manera más
eficiente es necesario contar más conocimiento. Por ej. en el ajedrez se
necesita básicamente poco conocimiento para conocer los movimientos
legales y un mecanismo sencillo de búsqueda. Pero dado que para
aumentar la eficiencia de la búsqueda ésta debe restringirse, se necesita
conocimiento de heurísticas de buenas estrategias y tácticas para jugar.
7. El programa que soluciona el problema ¿busca la solución solo o necesita
interactuar con una persona?

Con respecto a la relación programa-usuario, existen dos tipos de programas que


solucionan el problema:

 Solitarios:

reciben como entrada el problema y dan como salida la solución. No


importa el razonamiento que haya seguido la máquina para encontrar la
solución. Por ej. problema de las jarras de agua.

 Conversacionales:

existe una comunicación hombre-máquina de manera que el usuario puede


ayudar a la máquina o la máquina puede informar al usuario durante la
búsqueda de la solución. Para que esta comunicación sea posible debe
existir una correspondencia entre el razonamiento seguido por la máquina
y la forma de razonamiento humano. Por ej. en un sistema experto de
diagnóstico médico, el usuario no aceptaría el veredicto de una máquina si
no puede comprender el razonamiento que la llevó a él.
Ejercicio: Torres de Hanoi
Definir formalmente y analizar los 7 puntos anteriores en el siguiente problema:

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. 

You might also like