Una pregunta terminológica: ¿es Greedy best-first search diferente de Best-first search?¿La primera búsqueda de Greedy es diferente de la búsqueda de la mejor primera?
El wiki page tiene un párrafo aparte sobre Greedy BFS pero no está nada claro.
Mi comprensión es que Greedy BFS es solo BFS, donde el "mejor nodo de OPEN" en el algoritmo de la wikipedia es una función heurística que se calcula para un nodo. Por lo tanto la aplicación de esta:
OPEN = [initial state]
CLOSED = []
while OPEN is not empty
do
1. Remove the best node from OPEN, call it n, add it to CLOSED.
2. If n is the goal state, backtrace path to n (through recorded parents) and return path.
3. Create n's successors.
4. For each successor do:
a. If it is not in CLOSED: evaluate it, add it to OPEN, and record its parent.
b. Otherwise: change recorded parent if this new path is better than previous one.
done
con "mejor nodo de ABIERTO" es una función heurística estimar qué tan cerca el nodo es el objetivo, es en realidad Greedy BFS. ¿Estoy en lo cierto?
EDIT: comentario sobre la respuesta de Anonymouse:
Así que, esencialmente un codicioso BFS no necesita una "lista abierta" y deben basar sus decisiones únicamente en el nodo actual? Es esta EAHG algoritmo:
1. Set START as CURRENT node
2. Add CURRENT to Path [and optinally, to CLOSED?]
3. If CURRENT is GOAL, exit
4. Evaluate CURRENT's successors
5. Set BEST successor as CURRENT and go to 2.
¿Cómo cambiarías el algoritmo anterior para reflejar eso? – Alex
No es aplicable a todos los problemas. Por ejemplo, en la búsqueda de ruta, un verdadero algoritmo codicioso a menudo fallará al toparse con callejones sin salida. Una "prioridad prioritaria primero" encontrará un buen camino, pero podría perderse el mejor cuando las elecciones iniciales fueron malas. A * es la mejor primera búsqueda que terminará solo cuando esté seguro de que no hay una mejor ruta. –
¿Podría comentar sobre la edición en mi pregunta? – Alex