VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
Búsquedas en Inteligencia Artificial
1. Republica Bolivariana de Venezuela
Ministerio del Poder Popular para la Defensa
Universidad Nacional Experimental Politécnica
De la Fuerza Armada
Participante:
Carrillo Damelys
C.I: 24.157.565
Facilitador: Edecio F
Asignatura: Inteligencia Artificial
Sección: 9N01IS
2. Búsqueda en
Amplitud o
Anchura
Búsqueda en
Profundidad
Búsqueda
General en
Grafos
Búsqu
edas
Sin
Inform
ación
del
Domini
o (A
Ciegas
)
Los procedimientos de búsquedas
a ciegas operan aplicando los
operadores disponibles a los
nodos, pero no utilizan ningún
conocimiento sobre el dominio del
problema (solo saben cuando es
posible aplicar una determinada
acción).
- Procedimientos de búsqueda nivel a
nivel.
- Para cada uno de los nodos de un nivel
se aplican todos los posibles operadores.
- No se expande ningún nodo de un nivel
antes de haber expandido todos los del
nivel anterior.
- Se implementa con una estructura
FIFO.
Usado en cualquier tipo de grafos en
donde se requiera buscar elementos.
Sin embargo, es ideal para
problemas pequeños en donde el
coste de las acciones sean realmente
pequeñas.
Es un algoritmo que permite
recorrer todos los nodos de un
grafo o árbol (teoría de grafos) de
manera ordenada, pero no
uniforme.
Es aquel procedimiento de control
en el que se centra en expandir un
único camino desde la raíz.
En el caso de llegar a un callejón
sin salida se retrocede hasta el
nodo mas cercano desde donde se
puede tomar una ruta alternativa
para poder seguir avanzando.
La búsqueda se realiza por una sola
rama del árbol hasta
encontrar una solución o hasta que se
tome la decisión de terminar la
búsqueda por esa dirección.
- Terminar la búsqueda por una
dirección se debe a no haber
posibles operadores que aplicar sobre el
nodo hoja o por haber
alcanzado un nivel de profundidad muy
grande.
Es usado en espacios de estados en
donde las acciones están limitadas. Y
también, es aplicado en problemas
en donde en el rango de acciones
este limitado.
Cualquier proceso de búsqueda
debe tener la posibilidad de
terminar si un nuevo esta ha sido
generado y expandido
previamente. Puede determinar si
un nuevo estado ha sido generado
y expandido previamente.
En general maneja dos listas: Abierta y
cerrada.
EL grafo se va generando durante la
ejecución de la primera.
Si en algun momento necesita
retroceder a un nodo abandonado solo
se consulta la lista abierta.
Usado para la resolución de
problemas en general. En casi todos
los algoritmos de búsquedas,
3. Búsqueda en
Amplitud o
Anchura
Búsqueda en
Profundidad
Búsqueda
General en
Grafos
Búsqu
edas
Sin
Inform
ación
del
Domini
o (A
Ciegas
)
Si existe la solución, la encuentra en la
menor profundidad posible.
Si el problema tiene una solución este
procedimiento garantiza el encontrarla. Si
hubiera varias soluciones so obtiene la de
menor coste( la optima), es decir, la que
requiere un menor numero de pasos ( si
consideramos un coste uniforme de
aplicación de los operadores).
Explosión combinatoria aparece
frecuentemente debido a la alta complejidad
espacial y temporal de esta técnica.
- Si el nivel de profundidad asociado a la
solución es significativamente menor que el
factor de ramificación se expandirían
demasiados nodos inútilmente. Por otro lado
la principal desventaja de este método es el
espacio de almacenamiento requerido. Esto
lo hace prácticamente inviable para
problemas complejos, como suelen ser los del
mundo real.
1. Crear una lista de nodos llamada abierta
e «inicializarla» con un único nodo raíz
al que se le asigna el estado inicial del
problema.
2. Hasta que abierta este vacía o se
encuentre una meta.
3. La lista abierta va a funcionar como una
cola FiFO.
4. Los nodos que haya en Abierta serán
aquellos que hayan sido generados, pero
que todavía no han sido expandidos. etc.
Tiene menor complejidad espacial que
búsqueda en amplitud.
Radica en el reducido valor de su
complejidad espacial. Cuando existen
múltiples soluciones posibles la eficiencia del
algoritmo aumenta.
- Se pueden encontrar soluciones que están
mas alejadas de la raíz que otras.
- Existe el riesgo de presencia de bucles
infinitos.
- El algoritmo puede dedicarse a recorrer
un camino demasiado largo que no
conduzca a ninguna solución. Es mas, si
no se guarda constancia de los nodos que
forman el camino recorrido se podría
caer en ciclos y el proceso no acabaría.
1.Crear una lista de nodos llamado abierta.
2. Hasta que ABIERTA este vacía o se
encuentre meta:
2.1 Extraer el primer nodo de ABIERTA y
llamarlo m.
2.2 Expandir m y para cada operador:
2.2.1 Aplicar operador a m y obtener un
nuevo estado.
2.2.2 Si el estado es meta salir del proceso y
devolver el estado
2.2.3 Incluir un nueva estado al final de
ABIERTA.
Evita repetir la exploración de caminos.
Permite reanudar caminos abandonados.
Expande muchos nodos inútiles. 1. Crear un grafo general y una lista ABIERTA y asignarle el nodo raíz.
2. Crear una lista CERRADA vacía.
3. Hasta que se encuentre una meta o se devuelva fallo:
3.1 Si abierta esta vacía, devolver fallo.
3.2 Eliminar el primer nodo de abierta, llamarlo m e introducirlo en
cerrada.
3.3 Expandir m:
3.3.1 Generar el conjunto m de todos sus sucesores que no sean antecesores
e introducirlos como sucesores de m.
3.3.2 Si algún miembro de m es meta, abandonar el proceso y devolver la
solución.
3.3.3 Poner un puntero a m desde los nuevos nodos generado e incluirlos en
abierta.
3.3.4 Para cada nodo de m que este en abierta o en cerrada, decide si
redirige o no su puntero a m.
3.3.5 Para cada nodo de m que estuviese en cerrada, decidir si sus
descendientes se redirigen o no sus punteros.
3.4 Reordenar abierta aplicando algún criterio.
4. Consiste en expandir primero aquel nodo con
mejor evaluación. Dicha evolución es el
resultado de aplicar la función de evaluación al
nodo, la cual devuelve un numero que sirve
para representar lo deseable que seria la
expansión de una nodo.
- Elegir como siguiente nodo aquel con
mayor función de evaluación.
- Trata de expandir el nodo más
cercano al objetivo, alegando que
probablemente conduzca rápidamente
a una solución.
Aplicado a problemas en donde el coste para
llegar a la solución esta en un único camino.
Por lo tanto se aplica mas que todo a:
Minería de datos.
Medicina humana.
Aviones y Transporte.
Elegir un conjunto de nodos como los
siguientes a expandir, y hacerlo de forma
irrevocable.
Elegir un conjunto de nodos como los
siguientes a expandir, y hacerlo de forma
irrevocable.
Usado en algoritmos genéticos en donde
cada nodo se comporta como un padre
teniendo dos hijos o mas siendo estos
mismos los nodos sucesores. Y se aplica a:
Video Juegos de estrategias.
Procesamiento de imágenes.
En esta búsqueda se evalúa el nodo sumando al
costo de alcanzar el nodo, el costo estimado de
ir nodo objetivo, esta estrategia deberá
cumplir con el requisito de nunca sobreestimar
el costo de alcanzar el objetivo.
Ponderar a la vez lo cerca que estamos del
nodo meta y lo lejos que estamos del nodo
inicial.
La cantidad de memoria necesaria crece
exponencialmente con respecto a la
profundidad.
Es optima completa
Es usado en donde la heurística es admisible,
donde el coste de ir al nodo objetivo no
sobreestime el coste de alcanzar el nodo objetivo.
Se empieza con un nodo inicial que
corresponde al nodo superior del grafo, y
luego se subdivide el problemas mas
pequeños denominado Y/O.
Los nodos de un grafo Y/O representan
subproblemas a resolver originados a partir de
un problema inicial.
Descompone en subproblemas, y así
sucesivamente, hasta conseguir problemas
lo suficientemente trivial.
- Usado en problemas que puedan ser divido en
problemas
- Aplicado en problemas que pueden
convertirse en subproblemas y a su vez estos
garanticen llegar a la solución.
Búsqueda en
Haz
Algoritmo A*
Exploración
de Grafos
Y/O
Búsqueda
“Primero el
Mejor”
Búsqu
edas
Inform
adas
(Heurí
sticas)
5. No depende en exceso de la función de
evaluación.
• Excesiva complejidad espacial, pues se
deben guardar todos los nodos abiertos.
• Sufre los mismos defectos que la
búsqueda primero
función BÚSQUEDA-RECURSIVA-PRIMERO-MEJOR(problema) devuelve una solución, o
fallo
BRPM(problema, HACER-NODO(ESTADO-INICIAL[problema]),∞)
función BRPM(problema,nodo,f_límite) devuelve una solución, o fallo y un nuevo límite
f-costo
si TEST-OBJETIVO[problema](estado) entonces devolver nodo
sucesores ← EXPANDIR(nodo,problema)
si sucesores está vacío entonces devolver fallo, ∞
para cada s en sucesores hacer
f [s] ← max(g(s) h(s), f [nodo])
repetir
mejor ← nodo con f-valor más pequeño de sucesores
si f [mejor] f_límite entonces devolver fallo, f [mejor]
alternativa ← nodo con el segundo f-valor más pequeño entre los sucesores
resultado,f [mejor] ← BRPM(problema,mejor,min( f_límite,alternativa))
si resultado fallo entonces devolver resultado
• Más permisible.
• Reduce la cantidad nodos a generar.
• En caso de que el sistema sea irrevocable,
este método no actúa con eficacia.
• No consigue la solución mas optima.
funciónBUSQUEDA-HAZ-LOCAL(problema, k) returnsuna lista de estados
entrada: problema, un problema
k, tamaño del haz
static:siguiente, sucesores, población, listas de nodos
begin
población HACER-LISTA-NODOS(ESTADOS-INICIALES-ALEATORIOS(problema,k))
while (notCondicionTerminación)do
siguiente ∅
foreachnodo∈poblacióndo
sucesores HACER-LISTA-NODOS(EXPANDIR(nodo))
siguiente siguiente∪sucesores
end
población kmejores elementos de siguiente
endwhile
return(población)
end
Soluciones más cercanas a la raíz. • La función de evaluación se complica.
• En el espacio de búsqueda es todavía
exponencial
función BÚSQUEDA-A*(problema) devuelve solución o fallo
nodo-raíz ← CREAR-NODO-RAÍZ(problema)
frontera ← CREAR-PRIORIDAD()
frontera.AGREGAR(nodo-raíz)
explorada ← CREAR-CONJUNTO()
repetir
si frontera.ESTÁ-VACÍA() entonces devolver fallo
nodo ← frontera.POP()
si problema.ES-OBJETIVO(nodo.ESTADO) entonces devolver nodo
explorada.AGREGAR(nodo)
por cada acción en problema.ACCIONES(nodo.ESTADO) hacer
hijo ← CREAR-NODO-HIJO(problema, nodo, acción)
si hijo.ESTADO no está en explorada y
hijo.ESTADO no está en frontera.ESTADOS() entonces
frontera.AGREGAR(hijo)
sino
nodo-frontera ← frontera.BUSCAR(hijo.ESTADO)
si hijo.VALOR < nodo-frontera.VALOR entonces
nodo-frontera ← hijo
• Puede resolver problemas mucho mas
complejos.
• Reduce la complejidad y si encuentra una
solución.
• Dos problemas diferentes pueden generar
un subproblema común.
• Es de complejidad exponencial.
Búsqueda en
Haz
Algoritmo A*
Exploración
de Grafos
Y/O
Búsqueda
“Primero el
Mejor”
Búsqu
edas
Inform
adas
(Heurí
sticas)
6. El algoritmo explorará los nodos del árbol
asignándoles un valor numérico mediante
una función de evaluación, empezando por
los nodos terminales y subiendo hacia la
raíz.
-Minimax es un método de decisión para
minimizar la pérdida máxima esperada en
juegos con adversario y con información
perfecta.
- Minimax es un algoritmo recursivo.
- El funcionamiento de Minimax puede
resumirse como elegir mejor movimiento
para ti mismo suponiendo que tu
contrincante escogerá el peor para ti.
• Usado en juegos o en situaciones en
donde hay mas de dos agentes
compitiendo.
• Ampliamente en juegos en donde se
necesita saber cuáles son las posibles
opciones a elegir en una partida.
Es una técnica de búsqueda que reduce el
número de nodos evaluados en un árbol de
juego por el algoritmo Minimax. Se trata
de una técnica muy utilizada en
programas de juegos entre adversarios.
Como ha podido verse, la poda alfa-beta
es aplicar minimax, solo que decidimos
que algunas ramas no serán exploradas,
consiguiendo con esto ahorrar algo de
espacio y de tiempo computacional.
• Utilizada en problemas donde el factor
de ramificación ya sea muy elevado y
sus costes sean muy prohibitivos.
• Al igual que minimax pero solo en
donde ya se considere que el factor de
ramificación va a ser muy elevado.
Método
Minimax
Método de
Poda
Búsqu
eda
con
Adver
sario
7. • Eficacia en cuanto al uso de memoria.
• Tiene la capacidad de aprender de lo que
hace el oponente.
• No realiza un control estricto de la
memoria.
• Cada posible estado debe ser visitado
dos veces.
1.Generación del árbol de juego. Se
generarán todos los nodos hasta llegar a un
estado terminal.
2.Cálculo de los valores de la función de
evaluación para cada nodo terminal.
3.Calcular el valor de los nodos superiores a
partir del valor de los inferiores.
4.Desde los nodos de nivel n, buscar la
mejor situación para mi y la peor para mi
rival. Elegir la jugada valorando los valores
que han llegado al nivel superior, es decir,
obtengo la mejor rama.
• Ahorra algo de espacio y de tiempo
computacional.
• Es muchas eficiente debido a que este
mismo usa mucho menos variables
• Es dependiente de la memoria de la que
disponga nuestro ordenador.
• Es muy probable de que el algoritmo no
consiga la solución aun exista una.
A. Por debajo de cualquier nodo min que
tenga valores
beta menores o iguales a los valores de
cualquier nodo max ascendiente suyo.
B. Por debajo de un nodo max que tenga un
valor alfa mayor o igual al valor
beta de cualquier nodo min
ascendiente.
Método
Minimax
Método de
Poda
Búsqu
eda
con
Adver
sario