Vous êtes sur la page 1sur 47

SOLUCIN DE

PROBLEMAS POR
BSQUEDA

INTRODUCCIN

La resolucin de problemas es fundamental para la mayora de las


aplicaciones de Inteligencia Artificial(IA).

la capacidad de resolver problemas suele usarse como una medida de la


inteligencia tanto para el ser humano como para la computadora.

La resolucin de problemas es una capacidad que consideramos inteligente.


Somos

capaces de resolver problemas muy diferentes:

Encontrar

el camino en un laberinto

Resolver

un crucigrama

Realizar

un juego

Diagnosticar
Decidir

una enfermedad

al invertir

Clases de problemas (MTODOS)

PROCEDIMIENTO DETERMINISTA

XITO GARANTIZADO

LLAMADO DE COMPUTACIN.

PROBLEMAS CON PROCEDIMIENTOS (MATEMTICAS)

PROCEDIMIENTO NO DETERMINISTA

PROBLEMAS CON BSQUEDA DE UNA SOLUCIN

ENFOCADO A LA IA

Determinsticos

Un ambiente determinstico es aquel en el cual cualquier accin tiene un solo


efecto garantizado, no hay incertidumbre acerca del estado que resultara de
la realizacin de la accin. Un sistema determinstico si, para un estado dado,
al menos aplica una regla de el y de solo una manera.

No determinstico

Si mas de una regla a cualquier estado particular del sistema, o si una regla
aplica a un estado particular del sistema en mas de una manera, entonces el
sistema es no determinstico. Contiene un amplio numero de estados iniciales
y sigue la secuencia de estados perteneciente al estado inicial del espacio.

EJEMPLO: Plano de casa del problema de las llaves


perdidas

Imagina que has perdido las llaves de tu coche. Sabes que estn en algn
lugar de la casa.

La X indica que usted est en la puerta principal. Al empezar su bsqueda


primero comprueba la sala de estar. Luego va por el saln hacia el primer
dormitorio, despus vuelve al saln y va al segundo dormitorio, y vuele de
nuevo al saln para ir al dormitorio principal. Como an no ha encontrado las
llaves, vuelve hacia atrs pasando por la sala de estar hacia la cocina, donde
encontrar sus llaves.

Grafo del camino solucin para encontrar las llaves


perdidas

Elementos bsicos

Estado: es la representacin de un problema en un instante dado.

Espacio de estados o espacio de bsqueda: Conjunto de nodos del problema

Estado inicial: consiste en uno o varios estados en los que puede comenzar el
problema.

Estado objetivo o estado meta: consiste en uno o varios estados finales que
se consideran solucin aceptable.

Reglas: describen las acciones u operadores que posibilitan un pasaje de


estados.

La heurstica es la informacin acerca de la posibilidad de que un nodo


especfico sea mejor para intentar la prxima eleccin que cualquier otro
nodo.

Ejemplo: el problema de jugar al ajedrez

Espacio de estados: La totalidad de tableros que se pueden generar en un juego de ajedrez;

Estado Inicial: Puede ser el tablero de 8 x 8 donde cada cuadro contiene un smbolo de acuerdo
a las piezas situadas.

Objetivo o estado final: Cualquier posicin de tablero en la que el contrario no puede realizar
ningn movimiento legal y su rey est amenazado.

Reglas: Son los movimientos legales, que pueden describirse mediante una parte patrn para
ser contrastado con la posicin actual del tablero y otra parte que describe el cambio que debe
producirse en el tablero. Dado que escribir todas las posiciones del tablero, las reglas deben
escribirse de manera ms general posible.

Heurstica: Podemos elegir tableros en donde el contrincante tenga el menor nmero de piezas

desplegadas.

Camino solucin: El conjunto de movimientos para llegar al estado final.

Formulacin y resolucin de problemas.

Para construir un sistema de computacin que resuelva un problema


especfico, es necesario:
Definir

el problema formalmente con precisin.

Analizar

el problema.

Representar
Elegir

el conocimiento necesario para resolver el problema.

una tcnica de resolucin del problema y aplicarla.

Definicin formal del problema

El primer paso para disear un programa que resuelva un problema es crear


una descripcin formal y manejable del propio problema.

Para producir una especificacin formal de un problema se deben definir:


Espacio

de estados vlidos.

Estado

inicial del problema.

Estado

objetivo o final.

Reglas

que se pueden aplicar para pasar de un estado a otro.

Anlisis del problema

A fin de poder elegir el mtodo ms apropiado para resolver un problema


particular, es necesario analizar distintas cuestiones que afectan a la
definicin del mismo y a las caractersticas de la solucin deseada. Existen
varias preguntas a responder acerca del problema:
Puede

descomponerse el problema en subproblemas ms pequeos?

Pueden
Es

predecible el universo del problema?

Una
La

deshacerse pasos inadecuados hacia la solucin?

solucin es buena de manera absoluta o relativa?

solucin deseada es un estado o la ruta hacia un estado?

El

conocimiento se necesita para resolver el problema o para restringir


la bsqueda de la solucin?

El

programa que soluciona el problema busca la solucin solo o


necesita interactuar con una persona?

Pueden deshacerse pasos inadecuados hacia la solucin?

Algunos problemas permiten deshacer uno o varios pasos hacia una solucin
una vez realizados:

Recuperables: en un punto dado es posible deshacer todos los pasos


inadecuados hacia la solucin. Ej. en el juego 8-puzzle.

No recuperables: en un punto dado no es posible deshacer ningn paso


realizado. Ej. una partida de ajedrez

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


momento y comenzar de nuevo con una nueva solucin. Estos problemas se
resuelven con estrategias de control sencillas que nunca vuelven hacia atrs.

Es predecible el universo del problema?

Consecuencia cierta: es posible planificar una secuencia de movimientos


estando seguros del resultado a obtener. Se puede realizar una planificacin
para generar operadores que garanticen llegar a la solucin.

Consecuencia incierta: no es posible planificar con certeza pues no se sabe


que ocurrir luego del siguiente movimiento. Sin embargo, se puede realizar
una planificacin para generar operadores que tengan una buena probabilidad
de llegar a la solucin.

Una solucin es buena de manera absoluta o relativa?

Algn camino: slo importa encontrar una solucin sin importar si existen
otros caminos que conducen a la solucin. Generalmente se resuelven con
heursticas. Por ej. programa de respuestas a preguntas.

El mejor camino: importa encontrar la ruta ms corta hacia la solucin. Son


problemas ms complicados de computar. Algunos requieren una bsqueda
ms exhaustiva que usando heursticas. Por ej. en el problema del viajero
importa encontrar la ruta ms corta entre las ciudades a visitar.

La solucin deseada es un estado o la ruta hacia un


estado?

La solucin de un problema puede consistir en encontrar:

Un estado final: no es necesario el registro del proceso seguido, slo


importa arribar a la solucin 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.

El conocimiento se necesita para resolver el


problema o para restringir la bsqueda de la solucin?

El conocimiento puede emplearse para:

Reconocer la solucin: se necesita gran cantidad de conocimiento acerca del


problema para poder encontrar una solucin. Por ej. comprensin de texto.

Acotar la bsqueda: la solucin bsica puede encontrarse con poco


conocimiento, pero para restringir el rbol de bsqueda y encontrar la
solucin de manera ms eficiente es necesario contar ms conocimiento. Por
ej. en el ajedrez

El programa que soluciona el problema busca la


solucin solo o necesita interactuar con una persona?

Con respecto a la relacin programa-usuario, existen dos tipos de programas


que solucionan el problema:

Solitarios: reciben como entrada el problema y dan como salida la solucin.


No importa el razonamiento que haya seguido la mquina para encontrar la
solucin. Por ej. problema de las jarras de agua.

Conversacionales: existe una comunicacin hombre-mquina de manera que


el usuario puede ayudar a la mquina o la mquina puede informar al usuario
durante la bsqueda de la solucin. Para que esta comunicacin sea posible
debe existir una correspondencia entre el razonamiento seguido por la
mquina y la forma de razonamiento humano. Por ej. en un sistema experto
de diagnstico mdico, el usuario no aceptara el veredicto de una mquina si
no puede comprender el razonamiento que la llev a l .

TIPOS DE PROBLEMAS DE LA IA

Problemas de juego y problemas


reales.

Existen dos tipos de problemas que se han estado investigando en el rea de


Inteligencia Artificial:

Los denominados problemas de juguete y problemas del mundo real.

Problemas de juguete

Un problema de juguete se utiliza para ilustrar o ejercitar los mtodos de


resolucin de problemas.

stos se pueden describir de forma exacta y concisa.

Esto significa que diferentes investigadores pueden utilizarlos fcilmente para


comparar el funcionamiento de los algoritmos.

Un problema del mundo real es aquel en el que la gente se preocupa por sus
soluciones. Ellos tienden a no tener una sola descripcin, sin embargo se
podra dar la forma general de sus formulaciones.

Ejemplo: problema de juguete

El mundo de la aspiradora es un problema de juguete, este problema puede


formularse como sigue:

Espacio de estados: La aspiradora est en una de dos habitaciones, cada una


de las cuales puede o no contener suciedad;

Estado Inicial: Cualquier estado puede designarse como un estado inicial.

Objetivo o estado final: Cuando todos las habitaciones estn limpias;

Reglas: La aspiradora puede: moverse a la habitacin izquierda, moverse a la


habitacin derecha o aspirar la habitacin.

Porque problema de juguete

Comparado con el mundo real, este problema de juguete tiene localizaciones


discretas(esta o no en una habitacin), suciedad discreta(esta limpio o no lo
esta, no existe el termino medio), nunca se ensucia una vez que se ha
limpiado (suponemos que mientras esta limpiando la habitacin no se esta
volviendo a ensuciar).

El problema de las 8 reinas

Consiste en colocar las ocho reinas en un tablero de ajedrez de manera que


cada reina no ataque a ninguna otra (Una reina ataca alguna pieza si est en
la misma fila, columna o diagonal).

Una formulacin completa de estados comienza con las ocho reinas en el


tablero y las mueve.

Espacio de estados: La totalidad de tableros que se pueden generar con


8 reinas en el tablero;

Estado Inicial: Un tablero donde esta una reina por columna.

Objetivo o estado final: Un tablero de manera que cada reina no ataque


a ninguna otra;

Reglas: Mover una reina a otro cuadro en la misma columna.

Problemas del mundo real

Los problemas de bsqueda de una ruta estn definidos en trminos de


posiciones y transiciones a lo largo de ellas. Los algoritmos de bsqueda de
rutas se han utilizando en una variedad de aplicaciones, tales como rutas en
redes de computadores, planificacin de operaciones militares, y en sistemas
de planificacin de viajes de lneas areas. Estos problemas son complejos de
especificar.

Por ejemplo, los sistemas comerciales de viajes utilizan formulaciones con


muchas complicaciones como son el precio que imponen las lneas areas.
Adems deben incluir planes de contingencia(tales como reserva de vuelos
alternativos) hasta el punto de que stos estn justificados por el coste y la
probabilidad de la falla en el plan original.

Ejemplos.

Los problemas tursticos estn estrechamente relacionados con los problemas de


bsqueda de una ruta, pero con una importante diferencia, el espacio de estados,
en este cada estado debe incluir las ciudades que ha visitado (para conocer si ha
visitado ya las dems ciudades).

El problema del viajante de comercio es un problema de ruta en la que cada


ciudad es visitada exactamente una vez. La tarea principal es encontrar el viaje
ms corto.

La navegacin de un robot es una generalizacin del problema de encontrar una


ruta. Ms que un conjunto discreto de rutas, un robot puede moverse en un
espacio continuo con un conjunto infinito de acciones y estados posibles. Para un
robot circular que se mueve en una superficie plana, el espacio es esencialmente
de dos dimensiones. Cuando el robot tiene manos y piernas o ruedas que se deben
controlar tambin, el espacio de bsqueda llega a ser de muchas dimensiones.

BSQUEDA NO INFORMADA
Bsqueda a ciegas

bsqueda

Las tcnicas que se presentan a continuacin son conocidas de forma genrica


como Bsqueda, ya que pretenden encontrar una solucin valida dentro del
espacio de estados.

En concreto, las que analizaremos se denominan tcnicas de bsqueda no


informada debido a que el problema que queremos resolver no nos ofrece
ninguna informacin adicional que nos ayude a encontrar una solucin de
forma mas rpida, mas all de lo que proporciona el propio enunciando.

Puzle lineal.

Es un puzle para nios con grandes piezas. Sus piezas solo pueden unirse en
lnea .

Suponemos que todas las piezas encajan unas con otras sin importar el orden
en el que se distribuyan.

Pero antes

Vamos a hacernos algunas preguntas que nos ayuden a definir el problema.

Cul es el espacio de estados del problema ?

**puede ser cualquier ordenacin posible de las cuatro piezas


4!=24 estados posibles.

Cul es el estado inicial y el estado final?

**el estado inicial puede ser cualquier ordenacin de las cuatro piezas
Mientras que el estado final seria:

Qu operacin nos permite pasar de un estado a otro?

**Intercambiando dos piezas continuas a la vez

Operaciones (reglas)

Para el caso del puzle de 4 piezas, tendramos 3 opciones posibles:

Intercambiar las dos piezas de la derecha: la llamaremos operacin D.

Intercambiar las dos piezas centrales: la llamaremos operacin C.

Intercambiar las dos piezas de la izquierda: la llamaremos operacin I.

Funcin de evaluacin

La mas lgica seria una funcin que evaluara


colocadas, pero como queremos mostrar las
informada, vamos a obviar ese dato y nuestra
comprobar si hemos llegado al estado objetivo o

cuantas piezas estn bien


tcnicas de bsqueda no
funcin de evaluacin solo
no.

Para poder programar parece buena idea representar las piezas del puzle
como un arreglo de nmeros enteros con dimensin 4. usando esta
representacin algunos estados podran ser:

[2,1,4,3]

[1,2,4,3]

[2,3,1,4]

si aplicamos uno de los operadores ( I, C, D)

rbol de estados

Podemos ver un rbol que muestra como evolucionan los estados al ir


aplicando los operadores que hemos definido.
D

I
C

D
C

Recorrido de un rbol

Encontrar una solucin a un problema consistir en hacer una bsqueda en el


rbol de estados o en un grafo para encontrar un nodo que contenga un
estado objetivo. En general, el recorrido de un rbol o grafo se compone de
los siguientes pasos:

1. Seleccionamos el nodo raz y lo almacenamos en una lista que contendr


aquellos nodos que estn pendientes de visitar. A esta lista la llamaremos
frontera.

2. tomamos un nodo de la lista de nodos frontera y comprobamos si es un


nodo objetivo. Si lo es, hemos terminado.

3. generamos todos los hijos del nodo seleccionado en el paso 2 aplicando los
operadores que hemos definido. Esto es lo que se llama expandir un nodo.
Aadimos los nuevos nodos hijo a la lista de nodos frontera.

4. Volvemos al paso 2 hasta que la lista de nodos frontera este vaca.

Recorrido de un grafo

1. Seleccionamos el nodo raz y lo almacenamos en la lista de nodos frontera.

2. tomamos un nodo de la lista de nodos frontera y comprobamos si es un


nodo objetivo. Si lo es, hemos terminado. Adems, almacenamos el nodo en
una lista llamada visitados., que contiene todos los nodos visitados hasta el
momento.

3. generamos todos los hijos del nodo seleccionado en el paso 2 aplicando los
operadores que hemos definido. Para cada hijo comprobamos que no este en
la lista de nodos visitados y si no esta, la aadimos a la lista de nodos
frontera.

4 volvemos al paso 2 hasta que la lista de nodos frontera este vaca.

BSQUEDA CON AMPLITUD

El proceso de bsqueda que se presento es un procedimiento genrico que


puede dar lugar a variaciones. La primera que se presenta es la llamada
bsqueda en amplitud o Breadth First Search (BFS). Esta bsqueda recorre el
rbol por niveles:

Primero visita al nodo raz

Seguidamente todos sus hijos

Para cada hijo en el paso anterior se visitan todos sus hijos y as


sucesivamente

Bsqueda en amplitud
1

Este recorrido se implementa en la practica usando una cola FIFO (First In


First Out) para la lista de nodos frontera. Una cola FIFO es una estructura de
datos en la que podemos hacer dos operaciones principales: almacenar un
dato y sacar un dato.

nodo_inicial = estado inicial

Nodos_frontera = cola FIFO

Nodos_visitados = Lista

Almacenar nodo_inicial en nodos frontera

Mientras nodos frontera no vacio:

nodo_actual = extraer un nodo de nodos_frontera

si nodo_actual == solucin:

salir con solucin


introducir nodo_actual en nodos visitados
por cada operador:

nodo_hijo = operador (nodo actual)

si nodo_hijo no en nodos_visitados ni nodos frontera:

introducir nodo_hijo en nodos frontera

Resolver el problema del puzle lineal


(C++ O PYTHON)

Por medio de estructura de datos, utilizando los operadores que sean


definido anteriormente I, C, D:

La ejecucin del programa seria:


Aplicando los
[4, 2, 3,1]
operadores I, C, D

I: [2,4,3,1]

C: [2,3,4,1]

D: [2,3,1,4]

C: [2,1,3,4]

Es la secuencia que debe realizar el programa (debe imprimirla)

I: [1,2,3,4]

BUSQUEDA EN PROFUNDIDAD

Bsqueda en profundidad

La bsqueda en profundidad o Depth First Search (DFS) recorre el rbol/grafo


de forma diferente a la bsqueda en amplitud. En lugar de ir visitando todos
los nodos de un mismo nivel, va descendiendo hasta la profundidad mxima
de la rama y cuando llega al nodo mas profundo continua con la siguiente.

Desde el punto de vista de la implementacin, la bsqueda en profundidad se


diferencia de la bsqueda en amplitud en que utiliza una pila LIFO (last In
Firts Out) en vez de una cola FIFO. A diferencia de la cola, el dato que se
extrae de la pila es el ultimo que se introdujo.

Al algoritmo en pseudocodigo

Nodo_inicial = estado inicial

Nodos_frontera = pila LIFO

Nodos_visitados = Lista

Almacenar nodo_inicial en nodos frontera

Mientras nodos_frontera no vacio:

Nodo_actual = extraer un nodo_frontera

Si nodo_actual == solucin:
Salir

con solucin

Introducir nodo_actual en nodos_visitados


Por cada operador:
nodo_hijo = operador (nodo_actual)
si nodo_hijo no en nodos_visitados ni nodos frontera
introducir nodo_hijo en nodos_frontera

Resolver el problema del puzle lineal


(C++ O PYTHON)

Por medio de estructura de datos, utilizando los operadores que sean


definido anteriormente I, C, D:

La ejecucin del programa seria:


Aplicando los
[4,2,3,1]
operadores D, C, I

D: [4,2,1,3]

C: [4,1,2,3]

D: [4,1,3,2]

C: [4,3,1,2]

I: [3,4,1,2]

I: [1,3,2,4]

C: [3,1,2,4]

D: [3,2,1,4]

C: [3,2,4,1]

D: [3,4,2,1]

C: [1,2,3,4]
Es la secuencia que debe realizar el programa (debe imprimirla)

Vous aimerez peut-être aussi