999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

啟發式算法在計算機程序搜索中的簡單應用

2018-05-14 02:36:36李曉宇秦文杰
科學與財富 2018年9期

李曉宇 秦文杰

摘 要:對于不能直接計算求解的問題,往往需要搜索算法在解空間中尋找最優解或更優解。為了高效地搜索,加入了啟發式算法,讓機器程序像人一樣作出更優的決策。闡述了啟發式算法中的作用原理,介紹了啟發式算法與搜索的聯系,講解了啟發式算法在計算機程序搜索中的簡單應用的案例,對比分析了啟發式算法與普通寬度優先搜索或深度優先搜索算法的優勢與不足。

關鍵詞:啟發式算法,解空間,搜索,更優解,估價函數

0、引言 搜索是用計算機解決問題時常用的算法策略。但往往相對于要求的最優解或次優解而言,解空間很大。直接簡單地運用搜索解決問題,往往會花費大量的時間,因為無用的搜索方向或問題狀態相對目標解來說太多。在已知目標狀態或如何衡量待求解的優劣時,利用減枝技巧可以避免搜索部分無用解空間,但是計算機搜索仍然會試探一些無用的解空間。啟發式算法可以估計當前狀態到目標狀態的代價,從而作出好的策略,幫助機器像人一樣聰明地向更優解目標方向搜索。

1、啟發式算法的作用原理

啟發式算法是根據機器計算當前狀態到目標狀態的所有可能性或所需花費,從中選出到達目標狀態可能性最高的或者花費最少的下一步。就這樣不斷地計算概率花費,不斷迭代優化更優解,進而得到更優解或者最優解。計算機程序可能并不會準確地計算出到達目標解的代價,但是可以利用數學計算進行估計。若要得估價接近實際花費,就得設計好評價函數。這也是啟發性的關鍵。

2、啟發式算法應用在搜索中

機械的搜索算法會浪費大量時間等計算機資源在無用狀態轉換上。若要讓計算機程式像人擁有感覺作出合理的判斷,就是給程序使用啟發式算法了。讓機器智能地搜索下一個狀態。本科期間常見或用到的啟發式算法有A*算法,遺傳算法,蟻群算法,BP神經網絡等。BP神經網絡可用于仿真機器人學習上,在大學上機器人競賽中常用。讓機器人不斷地學習,修改參數,作出更優的策略。A*算法可用于ACM大學生程序設計競賽中,比較容易實現,常用于搜索。

3、啟發式算法應用于搜索中的案例

3.1 計算機軟件能力認證-游戲[3]

題目轉述:在N行M列的棋盤上,計算玩家從左上角移動到右下角所需的最少時間,期間某些位置在一段連續時間不能移動到(危險)。詳細描述請參照原題[3]。

分析:這是一道棋盤搜索題,求解最短時間。很容易想到寬度優先搜索,可以利用三維數組來表示棋盤狀態(根據數組在內存中是線性存儲的,所以也可以將三維數組轉化為一維。但是內存消耗是一樣的,所以沒有必要轉化。三維數組的維度分別表示位置橫坐標,縱坐標,時間戳)。直接寬度優先搜索可以解決改問題,只是搜索了大量的無用的棋盤狀態,效率不高。

雖然可以在該題時間限制內解決問題,但是若用了A*算法,加入啟發式思想。從當前搜索過的狀態中選擇到目標狀態的曼哈頓距離最小的位置狀態開始搜索,因為玩家每秒都要移動,所以曼哈頓距離越小的狀態到達目標的用時最少。在保證結果正確的前提下,提高了解決問題的效率。

給出估價函數:

從當前狀態(x, y)到目標狀態(m, n)的估價函數 h = abs(x - m) + abs(y - n),即當前位置到目標位置的曼哈頓距離。

初始狀態到當前狀態的實際代價:每移動一次,該代價g 加1。

初始狀態經當前狀態到達目標狀態的估價:f = h + g。

實際測試用時比較:普通BFS[4]用時109ms, 啟發式算法A*算法[5]用時62ms。可見啟發式算法有方向地搜索比較省時。

具體算法實現見附解(參考文獻)。北大測評系統1077也可用A*算法解答。

3.2 啟發式算法在機器人中的應用

在大學生機器人競賽中,在對機器人進行策略安排時,有的同學是把機器人場地進行劃分,對每個機器人都設計一套策略。根據不同的局面狀態,調整機器人的策略。總的來說就是判斷判斷再判斷,根據判斷作出反應。這樣直接的判斷狀態的策略,機器人下一步該怎樣做,設計者可以預測個大概。這并不能說是人工智能。機器人缺少隨機應變的啟發性決策。

西北工業大學的機器人配合得很好,很好地根據對手機器人的動作作出適當的改變。若不加入啟發性算法、機器學習,很難得到好的策略。

利用BP神經網絡,讓機器人自主學習,不斷地修改參數,做到更優。蟻群算法,模擬自然界中螞蟻尋找食物,在路上留下信息素。信息素在一段時間內逐漸消散。其他螞蟻可以根據信息素的分布情況作出相應的動作。可以運用到11V11機器人輪式足球比賽上面。

其他啟發式算法,例如遺傳算法等也常用到機器人策略編寫上。

4、啟發式搜索與普通寬度優先搜索的比較

啟發式搜索每次有向著更接近目標解的狀態搜索,避免了大量無效解空間的試探。如案例1測試結構,啟發式搜索提高了解決問題的效率。

普通寬度優先搜索相對來說比較容易實現,若對時間要求不是很嚴格,BFS編寫簡單,搜索策略更易理解。而應用啟發式搜索時需要使用數據結構優先隊列,需要重載運算符。

應用啟發式搜索時,需要注意評價函數的選擇,這個直接關系著搜索的效率。估價函數不是一成不變的,不同的問題需要設計不同的估價函數。

5、總結

啟發式算法應用到搜索策略中,可以避免不必要的搜索,大大減小了解空間。程序一直向著有希望的方向搜索,在一定程度上可以解決狀態空間爆炸式增加的現象。解決不同的問題,往往需要不同的估價函數。在機器人策略實現方便,利用啟發式算法不斷地嘗試學習,不斷地修改參數,可以使得機器人做出更好的策略。

注解:

[1] 李曉宇 鄭州大學信息工程學院老師

[2] 秦文杰 鄭州大學信息工程學院軟件工程系2015級2班的一個學生,學號20152480225

[3] 計算機軟件能機認證試題CCF CSP 201604-4 游戲,原題鏈接(需要登錄)

http://118.190.20.162/view.page?gpid=T39

[4] 普通BFS解法

https://github.com/zzuwenjie/coding18/blob/master/OJ/CCFCSP201604_4_BFS.cpp

[5] 啟發式算法A*算法解法

https://github.com/zzuwenjie/coding18/blob/master/OJ/CCFCSP201604_4_Astar.cpp

主站蜘蛛池模板: 久久福利片| 亚洲第一视频网| 国产高清不卡| 免费中文字幕在在线不卡 | 综合五月天网| 毛片免费在线视频| 日本免费新一区视频| 伊人狠狠丁香婷婷综合色| 亚洲第一中文字幕| 国产免费网址| 亚洲男人的天堂久久香蕉网| 日本三区视频| 国产剧情国内精品原创| 色窝窝免费一区二区三区| 一级爆乳无码av| 亚洲成在人线av品善网好看| 国产高清精品在线91| 精品人妻一区无码视频| 久久这里只有精品国产99| 国产aⅴ无码专区亚洲av综合网| 国产无人区一区二区三区| 成人在线观看一区| 亚洲六月丁香六月婷婷蜜芽| 999福利激情视频 | 强乱中文字幕在线播放不卡| 无码人中文字幕| 色老头综合网| 国产丝袜无码精品| 国产在线视频欧美亚综合| 亚洲一区网站| 久久精品午夜视频| 久久久受www免费人成| 国产av剧情无码精品色午夜| a级毛片在线免费| 乱系列中文字幕在线视频| 精品人妻一区二区三区蜜桃AⅤ| 夜夜高潮夜夜爽国产伦精品| 国产精品久久久久久久伊一| 高清视频一区| 91久久国产综合精品女同我| 青青草a国产免费观看| 无码精品福利一区二区三区 | 美女毛片在线| 亚洲天堂久久| 久久久精品国产SM调教网站| 亚洲中文字幕av无码区| 九色视频线上播放| 在线a网站| 精品夜恋影院亚洲欧洲| 2020国产精品视频| aa级毛片毛片免费观看久| 亚洲天堂网2014| 免费国产福利| 久久青草免费91线频观看不卡| 日韩高清中文字幕| 一区二区三区精品视频在线观看| 爱色欧美亚洲综合图区| 一级爱做片免费观看久久| 欧美不卡二区| 日韩成人午夜| 亚洲中文字幕在线精品一区| 3p叠罗汉国产精品久久| 一本大道在线一本久道| 国产色婷婷视频在线观看| 国产欧美在线观看一区| 亚洲久悠悠色悠在线播放| 欧美在线中文字幕| 亚洲精品欧美日本中文字幕| 97超碰精品成人国产| 日韩av高清无码一区二区三区| 久久www视频| 99re视频在线| 手机在线免费毛片| 91破解版在线亚洲| 在线欧美a| 黄色国产在线| 国产福利小视频在线播放观看| 日韩在线2020专区| 国模粉嫩小泬视频在线观看| 99热这里只有精品在线播放| 99视频在线免费| 国产免费观看av大片的网站|