人工智能(5)深度包雀,廣度搜索

Search一類的問題通常是人工智能方面最先接觸到的話題,在小的時候大家想必都遇到過這樣的一類益智題目:

一個農(nóng)夫亲铡,一只羊才写,一頭狼,和一棵白菜〗甭現(xiàn)在有一條船赞草,這條船每次只能盛這四個中的兩個,當(dāng)然只有農(nóng)夫會開船锭硼。問:

農(nóng)夫怎樣才能把狼房资,樣,和白菜運(yùn)到河對岸檀头,有兩個限制條件:

狼和羊不能單獨在一起轰异,羊和白菜這兩樣也不能落單岖沛。

遇到這樣的問題,相信大家一定在腦補(bǔ):農(nóng)夫先帶過去一只搭独,看看后面那兩個有沒有后果發(fā)生婴削,沒的話繼續(xù),有的話退回一步重新考慮牙肝。嗯唉俗,羊不能與狼和白菜共存,所以先帶過去配椭,然后第二次隨便帶狼或者白菜虫溜,帶過去,然后把羊帶回來股缸,然后把第二次剩下的帶過去衡楞,把羊留下,這樣狼和白菜到了對岸敦姻,最后把羊帶過去瘾境。當(dāng)然這樣的問題很簡單,想一下就能找到方案镰惦。當(dāng)遇到比較復(fù)雜的問題迷守,比如:

路徑規(guī)劃問題,從一個城市到另一座城市旺入,根據(jù)你的目標(biāo)不同兑凿,可以搜尋最短的,最快的或者風(fēng)景最好的眨业,這是一個問題的目標(biāo)(objective)急膀,然后根據(jù)設(shè)計選擇不同的方向沮协,這是行動(action)龄捡,又或者:機(jī)器人機(jī)械臂的運(yùn)動,速度快慢慷暂,旋轉(zhuǎn)和移動聘殖,字謎游戲,機(jī)器翻譯等等行瑞。

對于一個classifier(分類器)奸腺,如果給定一個輸入,經(jīng)過一個轉(zhuǎn)換之后得出的是一個單一的操作血久,而對于search(搜索)問題突照,輸出是一系列的操作,重點是要根據(jù)現(xiàn)狀考慮未來的動作氧吐,并且是基于狀態(tài)的一種操作讹蘑。

再回到剛剛提到的那個過河的問題末盔,其實從初始狀態(tài)可以畫一棵樹,初始狀態(tài)分別有三種選擇座慰,這樣每做出一個選擇可以畫出子分支陨舱,最后會發(fā)現(xiàn)能到達(dá)最終結(jié)果的就是剛剛跟大家分享的那兩種方案。歸結(jié)起來版仔,對于一個搜索問題游盲,包含:

初始狀態(tài),動作蛮粮,對應(yīng)的動作的代價益缎,下一個狀態(tài),和最終的狀態(tài)然想。

通常我們會用到數(shù)據(jù)結(jié)構(gòu)中常用的tree的概念链峭,構(gòu)建一個search tree:

根節(jié)點是初始狀態(tài),葉節(jié)點是最終的狀態(tài)又沾,連接節(jié)點之間的邊就是一個action弊仪,并伴隨著一定的代價。從根節(jié)點到葉節(jié)點的所有路徑的和就是這個方案的代價杖刷,通常會找出一條代價最小的方案励饵。但是注意的是:

在編程中,我們通常不會用到樹這樣的數(shù)據(jù)結(jié)構(gòu)滑燃,樹在這里只是一種形象的表達(dá)役听,后面示例代碼中可以看到更多解釋。

在分析一棵樹的過程中表窘,通常會有這樣幾個參數(shù):最大的深度D,也即每一條路徑包含D條邊典予,然后每個狀態(tài)可以有b 種動作,經(jīng)常把這個叫做branching factor乐严。想找到一個最少代價的路徑瘤袖,存儲的成本是O(D),每次從葉節(jié)點回溯即可昂验,時間成本就比較大捂敌,O(b的D次方),(1 + b + b*b ,,,, + b的D次方 既琴,等比數(shù)列求和占婉,最后結(jié)果是 O(b的D次方))。面對這樣一個指數(shù)級別的時間成本甫恩,通常會有兩種做法逆济,一是限定最大的搜索深度,而是對于之前到達(dá)過的狀態(tài),不重復(fù)訪問奖慌。

最基本的:

回溯搜索:

先判斷是不是最終結(jié)束的狀態(tài)霎终,是的話,更新最小的代價路徑

對于當(dāng)前狀態(tài)的每一個action:

?????? 尋找這個狀態(tài)所有的子節(jié)點和到達(dá)子節(jié)點對應(yīng)的代價升薯。

?????? 對于當(dāng)前的狀態(tài)重新調(diào)用回溯搜索莱褒。

返回最小代價的路徑

深度優(yōu)先搜索(depth-first search, DFS):

基于回溯搜索,當(dāng)遇到終止?fàn)顟B(tài)的時候即停止涎劈。

存儲的成本是O(D)广凸, 每次從葉節(jié)點回溯即可,時間成本就比較大蛛枚,O(b的D次方)谅海。

需要注意的是,這個時候并沒有考慮每一個action的代價蹦浦,比如從初始狀態(tài)到下一個狀態(tài)扭吁,默認(rèn)代價是0。這跟之前接觸的每一條邊都有賦值不同盲镶,后面會再提到考慮代價的問題侥袜。

深度優(yōu)先搜索適用于整個搜索樹中有很多方案的搜索辦法,這樣溉贿,能比較快的返回搜索結(jié)果枫吧。不然,如果整棵樹都沒有方案宇色,需要把整個樹搜索一遍九杂。

廣度優(yōu)先搜索(breadth-first search, BFS):

假設(shè)每一個action有固定的一個代價值,c宣蠕,整個搜索過程是按照由樹的每一層進(jìn)行的例隆。

假設(shè)每個狀態(tài)有b種可能的操作,最后的方案深度是d,樹的深度是D, 那么:

存儲的成本是O(b的d次方)抢蚀,時間成本也是O(b的d次方)镀层,與D 沒有關(guān)系。

由于讀取搜索的方式的不同思币,一般鹿响,DFS使用堆棧存儲節(jié)點的信息羡微,這樣保證最后入棧的節(jié)點得以出棧谷饿,然后再入棧該節(jié)點的所有子節(jié)點。BFS用隊列存儲妈倔,這樣第一次存入的所有節(jié)點可以依次從頭部出隊列博投,然后再把所有的子節(jié)點壓入隊列。并且不難想象的是盯蝴,這樣的存儲方式毅哗,存儲的都是葉節(jié)點听怕,中間的節(jié)點在產(chǎn)生子節(jié)點之前都已經(jīng)出棧或者隊列了虑绵。

來看一下一個用python寫的簡單的例子:

好尿瞭,搜索是人工智能很基礎(chǔ)的一個分支,下次接著來看其他搜索的方式翅睛。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末声搁,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子捕发,更是在濱河造成了極大的恐慌疏旨,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扎酷,死亡現(xiàn)場離奇詭異檐涝,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)法挨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進(jìn)店門谁榜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人凡纳,你說我怎么就攤上這事惰爬。” “怎么了惫企?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵撕瞧,是天一觀的道長。 經(jīng)常有香客問我狞尔,道長丛版,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任偏序,我火速辦了婚禮页畦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘研儒。我一直安慰自己豫缨,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布端朵。 她就那樣靜靜地躺著好芭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪冲呢。 梳的紋絲不亂的頭發(fā)上舍败,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼邻薯。 笑死裙戏,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的厕诡。 我是一名探鬼主播累榜,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼灵嫌!你這毒婦竟也來了信柿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤醒第,失蹤者是張志新(化名)和其女友劉穎渔嚷,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體稠曼,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡形病,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了霞幅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片漠吻。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖司恳,靈堂內(nèi)的尸體忽然破棺而出途乃,到底是詐尸還是另有隱情,我是刑警寧澤扔傅,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布耍共,位于F島的核電站,受9級特大地震影響猎塞,放射性物質(zhì)發(fā)生泄漏试读。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一荠耽、第九天 我趴在偏房一處隱蔽的房頂上張望钩骇。 院中可真熱鬧,春花似錦铝量、人聲如沸倘屹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纽匙。三九已至,卻和暖如春插爹,著一層夾襖步出監(jiān)牢的瞬間哄辣,已是汗流浹背请梢。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工赠尾, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留力穗,地道東北人。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓气嫁,卻偏偏與公主長得像当窗,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子寸宵,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,828評論 2 345

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

  • 專業(yè)考題類型管理運(yùn)行工作負(fù)責(zé)人一般作業(yè)考題內(nèi)容選項A選項B選項C選項D選項E選項F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚閱讀 8,977評論 0 13
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,898評論 2 89
  • 2018年2月18日 星期日 晴天 今天爸爸帶我去海洋館崖面。我非常高興,這個可是我好不容易才...
    陳泉妡閱讀 261評論 0 0
  • 勸君珍惜眼前時,一寸光陰一寸金 甲棍,寸金難買寸光陰简识! 曾經(jīng)年少輕狂不懂光陰似箭,總覺得今天過去還有明天感猛,明天過去還有...
    小鯉魚之簡書游弋閱讀 565評論 9 8
  • 我們每天忙碌著七扰,不停的生活,不斷的讓自己變的更好陪白,不斷的追求著美好的生活品質(zhì)颈走,我們累,也無奈咱士,人生立由!來世間走一圈,...
    宿命里的我們閱讀 171評論 0 0