Академический Документы
Профессиональный Документы
Культура Документы
Búsqueda en un espacio de
estados
– Espacio de estados
Representación del problema a través
de las (posibles) acciones del agente.
– Búsqueda en el espacio de
estados:
Resolución del problema mediante la
proyección de las distintas acciones del
agente.
Espacio-estado
Es un grafo cuyos nodos representan Cuando un problema se puede
las configuraciones alcanzables (los representar mediante un espacio de
estados válidos) y cuyos arcos estados, la solución computacional
explicitan las movidas posibles (las corresponde a encontrar un camino
transiciones de estado). desde el estado inicial a un estado
objetivo.
En principio, se puede construir
cualquier espacio de estados
partiendo del estado inicial, aplicando
cada una de las reglas para generar
los sucesores inmediatos, y así
sucesivamente con cada uno de los
nuevos estados generados (en la
práctica, los espacios de estados
suelen ser demasiado grandes para
explicitarlos por completo).
Representación espacio-estado
Operadores
Elementos
Acción: indica cómo modificar el Operadores:
estado actual para generar un Representan un conjunto finito de acciones
básicas que transforman unos estados en otros.
nuevo estado.
Elementos que describen un operador
Aplicabilidad: precondición y postcondición.
Condición: impone restricciones Estado resultante de la aplicación de un operador
sobre la aplicabilidad de la regla (aplicable) a un estado.
según el estado actual, el estado
Criterio para elegir operadores
generado o la historia completa Depende de la representación de los estados.
del proceso de solución. Preferencia por representaciones con menor
número de operadores.
Elementos para la implementación de
espacio-estado
Elección de una representación (estructura de datos):
• Para los estados.
• Para los operadores.
estado(i,i,i,i)
cruza con cabra
estado(d,i,d,i)
cruza solo
estado(i,i,d,i)
cruza con puma
estado(d,d,d,i)
cruza con cabra
estado(i,d,i,i)
cruza con lechuga
estado(d,d,i,d)
cruza solo
estado(i,d,i,d)
cruza con cabra
estado(d,d,d,d)
Algoritmo búsqueda en espacio de
estados (ejemplo)
procedure Búsqueda { El conjunto open contiene a los estados
open {estado_inicial} generados que todavía no han sido
closed {} visitados (no se ha verificado si son
while (open no está vacío) {
estados objetivo y no se han generado sus
remover un estado X del conjunto open
sucesores). El conjunto closed contiene a
if (X es un estado objetivo) return éxito
los estados visitados. Al considerar sólo a
else {
generar el conjunto de sucesores del
los sucesores que no han sido
estado X previamente generados se evita entrar en
agregar el estado X al conjunto closed ciclos.
eliminar sucesores que ya están en
open o en closed
agregar el resto de los sucesores al Dependiendo del orden en que se visiten
conjunto open los estados del conjunto open se obtienen
} distintos tipos de recorrido.
}
return fracaso
}
Algoritmo búsqueda en profundidad
(ejemplo)
procedure Búsqueda_en_profundidad { El mayor problema de este algoritmo es
open [estado_inicial] que puede "perderse" en una rama sin
closed {}
encontrar la solución. Además, si se
while (open no está vacía) {
encuentra una solución no se puede
remover el primer estado X de la lista
open garantizar que sea el camino más corto.
if (X es un estado objetivo) return éxito
else {
generar el conjunto de sucesores del
estado X
agregar el estado X al conjunto closed
eliminar sucesores que ya están en
open o en closed
agregar el resto de los sucesores al
principio de open
}
}
return fracaso
}
Algoritmo búsqueda en amplitud
(ejemplo)
procedure Búsqueda_en_amplitud {
Contrariamente a la búsqueda en
open [estado_inicial]
closed {} profundidad, la búsqueda en
while (open no está vacía) { amplitud garantiza encontrar el
remover el primer estado X de la lista camino más corto.
open
if (X es un estado objetivo) return éxito
else {
generar el conjunto de sucesores del
estado X
agregar el estado X al conjunto closed
eliminar sucesores que ya están en
open o en closed
agregar el resto de los sucesores al
final de open
}
}
return fracaso
}
Algoritmo búsqueda heurística
procedure Búsqueda_heurística {
open [estado_inicial]
(ejemplo)
closed {} Además de utilizar una cola de prioridad, este algoritmo se
while (open no está vacía) { diferencia por actualizar los caminos almacenados en la
remover el primer estado X de la lista open
lista open cada vez que se encuentra un camino más corto,
if (X es un estado objetivo) return camino hasta X
else {
lo que mejora la probabilidad de encontrar el camino óptimo.
generar el conjunto de sucesores del estado X El camino se almacena en cada estado como un puntero al
foreach (Y en sucesores) { padre.
if (Y no está en open ni en closed) {
asignar a Y un valor heurístico
Cuando se llega a un estado en closed por un camino más
agregar Y en la lista open corto, habría que transmitir esta información a todos sus
} sucesores. Sin embargo, algunos de estos sucesores pueden
elsif (Y está en open) { haber sido generados o posteriormente actualizados por otro
if (el nuevo camino a Y es más corto) camino que hasta el momento parecía más corto, por lo cual
actualizar el camino almacenado en open
}
estarían desvinculados del ancestro que se está
elsif (Y está en closed) { considerando. Administrar este problema sería muy
if (el nuevo camino a Y es más corto) { engorroso, entonces se opta por repetir la búsqueda.
remover el estado Y del conjunto closed
Se puede obtener una versión simplificada de esta búsqueda
agregar el estado Y en la lista open
}
heurística eliminando toda la información histórica contenida
} en open y closed. En cada paso se generan los sucesores del
} estado actual y sólo se conserva al mejor de ellos para el
agregar el estado X al conjunto closed paso siguiente. El algoritmo se detiene cuando ninguno de
reordenar la lista open según valores heurísticos
}
los sucesores tiene una mejor evaluación que el estado
} actual (sino entraría en un ciclo infinito). Esta estrategia se
return fracaso llama algoritmo del gradiente (hill climbing, en inglés).
} Funciona adecuadamente cuando no hay óptimos locales.
Frase
“Es ridículo vivir 100 años y solo
ser capaces de recordar 30
millones de bytes. O sea, menos
que un compact disc. La
condición humana se hace más
obsoleta cada minuto”
Marvin Minsky