這是一個典型的產(chǎn)生式系統(tǒng)的算法題.用的是有界深度優(yōu)先的遞歸算法,是用C++Builder4.0寫的.這也是人工智能或者程序設(shè)計競賽題中最基本最常用的算法.如果自己動手編程實現(xiàn)了一個這樣的題目,那么很多相關(guān)的題目也就都一樣可以做了,比如"四皇后問題","推箱子問題","傳教士和野人問題"等等。
利用深度優(yōu)先的算法都是不一定能找到最優(yōu)路徑的,而且如果解路徑過長的話還可能會搜索失敗.如果保證要找到最優(yōu)路徑需要用另一些算法,比如寬度優(yōu)先算法.無論是哪一種算法,如果問題稍微復(fù)雜一點的話,都要解決"組合爆炸"問題,即有幾乎無窮種組合走法的問題,這種空間的復(fù)雜度往往是難以想象的,要求計算機的速度往往也就是體現(xiàn)在這方面.
所以我們每一次搜索都要以某種控制策略來決定下一步的走法,以最快的速度達到目標(biāo),減少搜索的范圍.這也是人工智能的核心問題.可以說,人工智能的精髓就是窮舉,人工智能的關(guān)鍵就是控制策略.
標(biāo)簽:
Builder
算法
4.0
典型
上傳時間:
2017-04-10
上傳用戶:franktu