ida*練習題
1、ida*=iddfs+a*
1.1、iddfs用於單層「無限」情況但是解層數很少,這時可以限制dfs層數,id為每次的層數限制
1.2、a*具有估價函式,用於bfs快速求解
ida*就是將估價函式用於層數限制的dfs中,如果具有層數的dfs仍然無法滿足時間限制,那麼可以考慮題目性質進行估價函式的剪枝,其實估價函式基本隨緣,就是已經幹了的和最小還需要幹的加起來,進行貪心考慮,如果最小還不行,那這個方案就直接滾蛋,否則繼續dfs
所以這道題的估價函式就是:已經走的步數+至少還需要走的步數(當前整個圖的狀態與目標圖的差距,不同則加1)
層數很清楚了,最多15層
ac
洛谷P2324 SCOI2005 騎士精神
輸入格式 第一行有乙個正整數t t 10 表示一共有n組資料。接下來有t個5 5的矩陣,0表示白色騎士,1表示黑色騎士,表示空位。兩組資料之間沒有空行。輸出格式 對於每組資料都輸出一行。如果能在15步以內 包括15步 到達目標狀態,則輸出步數,否則輸出 1。輸入樣例 1 2 10110 01 11 ...
P2324 SCOI2005 騎士精神
ida 演算法 12個白騎士和12個黑騎士在乙個5 5的棋盤上走來走去,求最後走成目標局面的最小步數。看不懂請走傳送門 ida 就是帶有迭代加深和估價函式優化的搜尋。估價函式 對未來搜尋深度的最優估計 通常是達不到的 對於估價函式g,要求g 現實步數 越接近越好,因為越接近能剪的枝就越多 當當前步數...
P2324 SCOI2005 騎士精神
輸入格式 第一行有乙個正整數t t 10 表示一共有n組資料。接下來有t個5 5的矩陣,0表示白色騎士,1表示黑色騎士,表示空位。兩組資料之間沒有空行。輸出格式 對於每組資料都輸出一行。如果能在15步以內 包括15步 到達目標狀態,則輸出步數,否則輸出 1。輸入樣例 1 複製 2 10110 01 ...