動態規劃

優先掃描(prioritized sweeping)

並不是每個狀態都同樣值得更新。如果某個價值上次幾乎沒變,再回溯它一次幾乎沒意義;如果剛有個大驚喜湧進來,它的鄰居就急需刷新。優先掃描把力氣花在最划算的地方,永遠先更新當前價值最不準的那個狀態,再輪到其他。

你維護一個優先佇列,鍵值是每個狀態待處理的貝爾曼誤差——也就是一次回溯會把它改變多少。取出佇列頂端的狀態、回溯它,接著看它的前驅狀態(會通向它的那些狀態),並依這個變動對它們的影響大小,把它們推進佇列。力氣集中在最近的變動附近,所以優先掃描往往能用遠少於均勻掃描的回溯次數,得到不錯的價值函數,在大型或連結稀疏的問題裡尤其明顯。