-
Notifications
You must be signed in to change notification settings - Fork 0
/
BusquedaEnEscalada.hs
29 lines (25 loc) · 1.26 KB
/
BusquedaEnEscalada.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
-- BusquedaEnEscalada.hs
-- Búsqueda en escalada.
-- José A. Alonso Jiménez https://jaalonso.github.com
-- =====================================================================
module Tema_23.BusquedaEnEscalada where
-- ---------------------------------------------------------------------
-- Importaciones --
-- ---------------------------------------------------------------------
-- Nota: Hay que elegir una implementación de las colas de prioridad
-- import Tema_16.ColaDePrioridadConListas
import Tema_20.ColaDePrioridadConMonticulos
-- import I1M.ColaDePrioridad
-- (buscaEscalada s o e) es la lista de soluciones del problema de espacio de
-- estado definido por la función sucesores (s), el objetivo (o) y el
-- estado inicial (e), obtenidas buscando por escalada.
buscaEscalada :: Ord nodo =>
(nodo -> [nodo]) -- sucesores
-> (nodo -> Bool) -- es final
-> nodo -- nodo actual
-> [nodo] -- soluciones
buscaEscalada sucesores esFinal x = busca' (inserta x vacia) where
busca' c
| esVacia c = []
| esFinal (primero c) = [primero c]
| otherwise = busca' (foldr inserta vacia (sucesores (primero c)))