一個術語問題 - 是貪婪的最佳優先搜索與最佳優先搜索不同嗎?Greedy最佳優先搜索與Best-first搜索不同嗎?
wiki page有一個關於貪婪BFS的單獨的段落,但它有點不清楚。
我的理解是,貪婪的BFS只是BFS,其中維基百科算法中「OPEN的最佳節點」是一個爲節點計算的啓發函數。因此,實施這個:
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
與作爲一個啓發函數估計節點如何接近目標「從OPEN最好的節點」,實際上是貪婪BFS。我對嗎?
編輯:評點Anonymouse的回答是:
所以基本上貪婪BFS並不需要一個「開放列表」,應立足僅在當前節點上的決定?這是算法GBFS:
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.
你會如何改變上面的算法來反映這一點? – Alex
這不適用於所有問題。例如在路徑發現中,真正的貪婪算法通常會因失敗而失敗。 「優先深度優先」會找到一條好路徑,但當初始選擇不好時可能會錯過最好的路徑。 A *是最佳優先搜索,只有在確定沒有更好的路徑時纔會終止。 –
你能評論我的問題中的編輯嗎? – Alex