人工智能-典型搜索算法

學(xué)號:17101223364

姓名:張海潮

轉(zhuǎn)載自:http://m.manew.com/forum.php?mod=viewthread&tid=102750&mobile=2沫浆,有刪節(jié)

【嵌牛導(dǎo)讀】:

搜索是AI解決問題的通用技術(shù)游岳。有一些單人游戲,如瓷磚游戲,數(shù)獨苟径,填字游戲等。搜索算法幫助您在這樣的游戲搜索特定的位置注益。

【嵌牛鼻子】:人工智能 搜索 算法

【嵌牛提問】:典型的人工智能搜索算法有哪些轿塔?它們的特點是什么?

【嵌牛正文】:?

? ? 單Agent尋路問題

譬如3X3蛾坯, 4X4光酣,5X5的瓷磚游戲都是單一Agent的尋路挑戰(zhàn)。這些路徑都是由一塊塊空白的瓷磚組成脉课。玩家必須水平或者是垂直的移動這些瓷磚到空白的空間救军,來完成游戲目標(biāo)财异。

其他的single agent尋路問題還有例如,旅行推銷員問題唱遭,魔方以及定理證明類問題

搜索術(shù)語

Problem Space ?這是搜索發(fā)生的環(huán)境(一組狀態(tài)以及運算符來改變這些狀態(tài))Problem Instance ?是初始狀態(tài)+目標(biāo)狀態(tài)戳寸。

Problem Space Graph ?代表問題狀態(tài)。狀態(tài)由結(jié)點表示拷泽,而運算符由邊緣表示Depth of a problem —操作數(shù)從初始狀態(tài)到目標(biāo)狀態(tài)長度最短的路徑或者是最短的序列

·

·

Space Complexity? ?存儲在內(nèi)存中的最大節(jié)點數(shù)疫鹊。

Time Complexity ?創(chuàng)建的節(jié)點的最大數(shù)目

Admissibility ?能解決問題的的最佳解決方案算法

Branching Factor ? 在問題空間圖表中子節(jié)點的平均數(shù)

Depth ?從初始狀態(tài)到目標(biāo)狀態(tài)的最短路徑長度

Brute-強(qiáng)制搜索策略

他們是最簡單的,因為他們不需要任何特定領(lǐng)域的知識司致。在可能狀態(tài)很少的情亂他們可以最好的發(fā)揮性能

· 要求?

· ·狀態(tài)描述

· ·一套有效的操作數(shù)

· ·初始狀態(tài)

· ·目標(biāo)狀態(tài)描述

Breadth-優(yōu)先搜索

它從根節(jié)點開始拆吆,起初探索相鄰節(jié)點然后向下一級的相鄰節(jié)點探索。它一次生成一棵樹直到解決方案被發(fā)現(xiàn)脂矫。使用FIFO隊列數(shù)據(jù)結(jié)構(gòu)可以實現(xiàn)枣耀,這個方法提供了解決方案的最短路徑

如果分支因子(對于一個給定的節(jié)點的子節(jié)點的平均數(shù))=b,深度=d庭再,那么d級別的節(jié)點數(shù)量= bd.

也就是說捞奕,在最壞的情況下,在這一級要創(chuàng)建的節(jié)點總數(shù)為 b + b2 + b3 + … + bd

缺點-因為每一級的節(jié)點將會被保留來創(chuàng)造下一級拄轻。它將消耗大量的內(nèi)存空間颅围。存儲節(jié)點的空間需求是呈指數(shù)級增長的。

它的復(fù)雜性取決于節(jié)點的數(shù)量哺眯。它可以檢查重復(fù)節(jié)點谷浅。

Depth-優(yōu)先搜索

它實現(xiàn)了遞歸后進(jìn)先出棧的數(shù)據(jù)結(jié)構(gòu)。和Breadth-First方法相同奶卓,它創(chuàng)建了相同的一套節(jié)點一疯,只不過有不同的順序

由于單路徑上的節(jié)點被存儲在每次迭代從根到葉節(jié)點,存儲節(jié)點的空間要求是線性的夺姑。分支因子帶寬深度為 m墩邀,存儲空間為 BM。

缺點-這個算法可能不會終止并且會在一個路徑上無限2延伸盏浙。這個問題的解決方案是選擇一個截止深度眉睹。如果給定一個截止深度cut-off isd,如果給定的截止深度小于d,那么這個算法有可能會失敗废膘。如果選擇的截止深度超過d,那么執(zhí)行的時間將會增加

其復(fù)雜性取決于路徑數(shù)竹海。它不能檢查重復(fù)節(jié)點。

雙向搜索

它從初始狀態(tài)和目標(biāo)狀態(tài)向后搜索丐黄,直到兩者達(dá)到共同狀態(tài)斋配。

從初始狀態(tài)開始的路徑被連接從目標(biāo)狀態(tài)出發(fā)的逆路徑。每個搜索只完成了一半的總路徑。

成本一致搜索

排序是以節(jié)點路徑的成本增加為代價的艰争。它總會引起最小成本節(jié)點的擴(kuò)大坏瞄。如果每個過度都有相同的成本,那么他和雙向優(yōu)先搜索是一致的

以增加開銷為代價的情況下甩卓,成本一致搜索得以探索路徑

缺點—可能存在很多長的路徑開銷≤ C*鸠匀。而Uniform Cost search必須探索所有的路徑。

迭代加深深度優(yōu)先搜索

它執(zhí)行深度優(yōu)先搜索到1級逾柿,然后從頭開始缀棍,以第2級執(zhí)行一個完整的深度優(yōu)先搜索,并繼續(xù)以這種方式机错,直到找到解決方案睦柴。

它不會創(chuàng)建一個節(jié)點,直到所有較低的節(jié)點生成毡熏。它只保存一組節(jié)點。當(dāng)它在深度 D發(fā)現(xiàn)一個解決方案時侣诵,算法結(jié)束.在深度 D 創(chuàng)建節(jié)點的數(shù)目是bd痢法,深度 D-1 創(chuàng)建的節(jié)點為 bd-1

Informed(啟發(fā)式)搜索策略

為了解決大的問題,大量的可能狀態(tài)杜顺,需要添加特定問題的知識财搁,以提高搜索算法的效率。

啟發(fā)式評估功能

他們計算兩個狀態(tài)之間的最佳路徑的成本躬络。一個推箱子的啟發(fā)函數(shù)通過計算每一個瓷磚從目標(biāo)狀態(tài)移動到現(xiàn)在的狀態(tài)需要移動的數(shù)量尖奔,然后添加這些數(shù)量給所有的瓷磚。

純粹的啟發(fā)式搜索

它根據(jù)啟發(fā)式值的順序擴(kuò)展節(jié)點穷当。它創(chuàng)造了兩個列表提茁,一個未開放的列表給已經(jīng)被擴(kuò)展的節(jié)點和一個開放的列表對于已經(jīng)創(chuàng)建但是還沒有被擴(kuò)展的節(jié)點

在每次迭代中,一個具有最小啟發(fā)式值的節(jié)點被擴(kuò)展馁菜,所有子節(jié)點都被創(chuàng)建并放置在封閉列表中茴扁。然后,啟發(fā)式函數(shù)被施加到子節(jié)點汪疮,它們被放置在開放列表中峭火,根據(jù)它們的啟發(fā)式值。較短的路徑被保存智嚷,較長的路徑被處理卖丸。

A* 搜索

他是著名的最佳優(yōu)先搜索策略。他避免了開銷已經(jīng)很昂貴的擴(kuò)展路徑盏道,而是首先擴(kuò)展最有可能的路徑稍浆。

f(n) = g(n) + h(n), 其中

g(n)為到達(dá)節(jié)點的成本(到目前為止)

h(n)為從節(jié)點到目標(biāo)的估計成本

f(n)為通過N到目標(biāo)的估計總成本。它采用優(yōu)先級隊列來增加F(n)。

Greedy Best First Search

它擴(kuò)展預(yù)估是最接近的目標(biāo)的節(jié)點粹湃。它在f(n)= H(n)的基礎(chǔ)上擴(kuò)展節(jié)點恐仑。使用優(yōu)先級隊列實現(xiàn)。

缺點—他有可能陷在死循環(huán)为鳄,不是最優(yōu)的方案

局部搜索算法

他們從一個前瞻性的解決方案開始裳仆,然后移動到鄰近的解決方案。他們可以返回一個有效的解決方案孤钦,即使它在結(jié)束前的任何時候都可以被中斷歧斟。

爬山搜尋法

它是一個迭代算法,從一個任意的問題的解決方案偏形,并試圖找到一個更好的解決方案静袖,通過改變一個單一的元素增量的解決方案。如果變化產(chǎn)生更好的解決方案俊扭,增量變化作為一個新的解決方案队橙。重復(fù)這個過程,直到?jīng)]有進(jìn)一步的改進(jìn)萨惑。

function Hill-Climbing會返回一個局部最大值的狀態(tài)

inputs: problem, a problem

local variables: current, a node

? ? ? ? ? ? ? ? neighbor, a node

current <-Make_Node(Initial-State[problem])

loop

? do neighbor <- a highest_valued successor of current

? ? ? if Value[neighbor] ≤ Value[current] then

? ? ? return State[current]

? ? ? current <- neighbor? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

end

缺點 ?這種算法既不完整捐康,也不是最優(yōu)的。

局部剪枝搜索

在該算法中庸蔼,它持有k個數(shù)在任何給定的時間解总。在開始時,這些狀態(tài)是隨機(jī)生成的姐仅。這些K狀態(tài)的繼承人的計算與幫助的目標(biāo)函數(shù)花枫。如果這些后繼的任何一個是目標(biāo)函數(shù)的最大值,則該算法停止掏膏。

否則(初始狀態(tài)k和k的狀態(tài)的繼任者= 2K)狀態(tài)被放置在一個池劳翰。然后對池進(jìn)行數(shù)值排序。最高k狀態(tài)被選擇為新的初始狀態(tài)壤追。這個過程一直持續(xù)直到達(dá)到最大值磕道。

搜索功能( 問題,K)行冰,返回一個解決狀態(tài)溺蕉。

start with k randomly generated states

loop

? generate all successors of all k states

? if any of the states = solution, then return the state

? else select the k best successors

end

模擬退火法

退火是加熱和冷卻金屬以改變其內(nèi)部結(jié)構(gòu)以改變其物理性質(zhì)的過程。當(dāng)金屬冷卻時悼做,它的新結(jié)構(gòu)被固定疯特,金屬保留其新獲得的特性。在模擬退火過程中肛走,溫度保持不變漓雅。

· 開始

· Initialize k = 0; L = integer number of variables;

· From i → j, search the performance difference ?.

· If ? <= 0 then accept else if exp(-D/T(k)) > random(0,1) then accept;

· Repeat steps 1 and 2 for L(k) steps.

· k = k + 1;

End

Travelling Salesman Problem

在該算法中,目標(biāo)是找到一個低成本的路線,從一個城市開始邻吞,訪問所有城市的路線完全一次组题,并在同一個起點城市結(jié)束行程。

Start

? Find out all (n -1)! Possible solutions, where n is the total number of cities.

? Determine the minimum cost by finding out the cost of each of these (n -1)! solutions.

? Finally, keep the one with the minimum cost.

end

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末抱冷,一起剝皮案震驚了整個濱河市崔列,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌旺遮,老刑警劉巖赵讯,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異耿眉,居然都是意外死亡边翼,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門鸣剪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來组底,“玉大人,你說我怎么就攤上這事筐骇〗锟埽” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵拥褂,是天一觀的道長。 經(jīng)常有香客問我牙寞,道長饺鹃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任间雀,我火速辦了婚禮悔详,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘惹挟。我一直安慰自己茄螃,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布连锯。 她就那樣靜靜地躺著归苍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪运怖。 梳的紋絲不亂的頭發(fā)上拼弃,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天,我揣著相機(jī)與錄音摇展,去河邊找鬼吻氧。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的盯孙。 我是一名探鬼主播鲁森,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼振惰!你這毒婦竟也來了歌溉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤报账,失蹤者是張志新(化名)和其女友劉穎研底,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體透罢,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡榜晦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了羽圃。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乾胶。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖朽寞,靈堂內(nèi)的尸體忽然破棺而出识窿,到底是詐尸還是另有隱情,我是刑警寧澤脑融,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布喻频,位于F島的核電站,受9級特大地震影響肘迎,放射性物質(zhì)發(fā)生泄漏甥温。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一妓布、第九天 我趴在偏房一處隱蔽的房頂上張望姻蚓。 院中可真熱鬧,春花似錦匣沼、人聲如沸狰挡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽加叁。三九已至,卻和暖如春唇撬,著一層夾襖步出監(jiān)牢的瞬間殉农,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工局荚, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留超凳,地道東北人愈污。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像轮傍,于是被迫代替她去往敵國和親暂雹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容