版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
搜索
DFS+BFS
剪枝預(yù)備知識——樹的遍歷樹的遍歷主要有如下四種方法:1.先根/序遍歷2.中根/序遍歷3.后根/序遍歷4.層次遍歷分別有什么特點(diǎn)呢?工大ACM團(tuán)隊(1)先根遍歷對樹的訪問次序是:1.先訪問根結(jié)點(diǎn)2.再訪問左子樹3.最后訪問右子樹4.對于左右子樹的訪問也要滿足以上規(guī)則示例如下:工大ACM團(tuán)隊以上二叉樹的先根遍歷序列是:??21357461、2、4、5、3、6、7工大ACM團(tuán)隊(2)中根遍歷對樹的訪問次序是:1.先訪問左子樹2.再訪問根結(jié)點(diǎn)3.最后訪問右子樹4.對于左右子樹的訪問也要滿足以上規(guī)則示例如下:工大ACM團(tuán)隊以上二叉樹的中根遍歷序列是:??21357464、2、5、1、6、3、7工大ACM團(tuán)隊(3)后根遍歷對樹的訪問次序是:1.先訪問左子樹2.再訪問右子樹3.最后訪問根結(jié)點(diǎn)4.對于左右子樹的訪問也要滿足以上規(guī)則示例如下:工大ACM團(tuán)隊以上二叉樹的后根遍歷序列是:??21357464、5、2、6、7、3、1工大ACM團(tuán)隊(4)層次遍歷對樹的訪問次序是:1.先訪問根結(jié)點(diǎn)2.再訪問根結(jié)點(diǎn)的子節(jié)點(diǎn)(即第二層節(jié)點(diǎn))3.再訪問第三層節(jié)點(diǎn)4.……示例如下:工大ACM團(tuán)隊以上二叉樹的層次遍歷序列是:??21357461、2、3、4、5、6、7工大ACM團(tuán)隊幾個基本概念:初始狀態(tài):略目標(biāo)狀態(tài):略狀態(tài)空間:由于求解問題的過程中分枝有很多(主要是求解過程中求解條件的不確定性、不完備性造成的),使得求解的路徑很多,這就構(gòu)成了一個圖,我們說這個圖就是狀態(tài)空間。狀態(tài)空間搜索:就是將問題求解過程表現(xiàn)為從初始狀態(tài)到目標(biāo)狀態(tài)尋找這個路徑的過程。通俗點(diǎn)說,就是在解一個問題時,找到一條解題的過程,可以從求解的開始到問題的結(jié)果。工大ACM團(tuán)隊DFS+BFS深度優(yōu)先搜索深度優(yōu)先搜索(DepthFirstSearch)類似于樹的先根遍歷深搜例子:走迷宮,你沒有辦法用分身術(shù)來站在每個走過的位置。不撞南山不回頭。廣度優(yōu)先搜索(BreadthFirstSearch)類似于樹的按層次遍歷的過程廣搜例子:你的眼鏡掉在地上以后,你趴在地板上找。你總是先摸最接近你的地方,如果沒有,再摸遠(yuǎn)一點(diǎn)的地方……工大ACM團(tuán)隊深度優(yōu)先搜索基本思想從初始狀態(tài)S開始,利用規(guī)則生成搜索樹下一層任一個結(jié)點(diǎn),檢查是否出現(xiàn)目標(biāo)狀態(tài)G,若未出現(xiàn),以此狀態(tài)利用規(guī)則生成再下一層任一個結(jié)點(diǎn),再檢查是否為目標(biāo)節(jié)點(diǎn)G,若未出現(xiàn),繼續(xù)以上操作過程,一直進(jìn)行到葉節(jié)點(diǎn)(即不能再生成新狀態(tài)節(jié)點(diǎn)),當(dāng)它仍不是目標(biāo)狀態(tài)G時,回溯到上一層結(jié)果,取另一可能擴(kuò)展搜索的分支。生成新狀態(tài)節(jié)點(diǎn)。若仍不是目標(biāo)狀態(tài),就按該分支一直擴(kuò)展到葉節(jié)點(diǎn),若仍不是目標(biāo),采用相同的回溯辦法回退到上層節(jié)點(diǎn),擴(kuò)展可能的分支生成新狀態(tài),…,一直進(jìn)行下去,直到找到目標(biāo)狀態(tài)G為止。工大ACM團(tuán)隊搜索過程如下:HALIFBCDEJGKS深度優(yōu)先搜索示意圖工大ACM團(tuán)隊廣度優(yōu)先搜索基本思想從初始狀態(tài)S開始,利用規(guī)則,生成所有可能的狀態(tài)。構(gòu)成樹的下一層節(jié)點(diǎn),檢查是否出現(xiàn)目標(biāo)狀態(tài)G,若未出現(xiàn),就對該層所有狀態(tài)節(jié)點(diǎn),分別順序利用規(guī)則。生成再下一層的所有狀態(tài)節(jié)點(diǎn),對這一層的所有狀態(tài)節(jié)點(diǎn)檢查是否出現(xiàn)G,若未出現(xiàn),繼續(xù)按上面思想生成再下一層的所有狀態(tài)節(jié)點(diǎn),這樣一層一層往下展開。直到出現(xiàn)目標(biāo)狀態(tài)為止。工大ACM團(tuán)隊搜索過程如下:OPLWVUTRQABCDGEFS廣度優(yōu)先搜索示意圖工大ACM團(tuán)隊
BFS、DFS算法比較DFS:使用棧保存未被檢測的結(jié)點(diǎn),結(jié)點(diǎn)按照深度優(yōu)先的次序被訪問并依次被壓入棧中,并以相反的次序出棧進(jìn)行新的檢測。
BFS:使用隊列保存未被檢測的結(jié)點(diǎn)。結(jié)點(diǎn)按照寬度優(yōu)先的次序被訪問和進(jìn)、出隊列。工大ACM團(tuán)隊8123456781234567入口出口迷宮問題-DFS尋找一條從入口到出口的通路工大ACM團(tuán)隊東南迷宮問題(續(xù))北(上)西(左)前進(jìn)方向:上(北)、下(南)、左(西)、右(東)首先從下方開始,按照逆時針方向搜索下一步可能前進(jìn)的位置工大ACM團(tuán)隊迷宮問題(續(xù))入口出口在迷宮周圍加墻,避免判斷是否出界81234567812345679090工大ACM團(tuán)隊8123456781234567迷宮問題(續(xù))9090在尋找出口的過程中,每前進(jìn)一步,當(dāng)前位置入棧;每回退一步,棧頂元素出棧棧(1,1)工大ACM團(tuán)隊i8123456781234567迷宮問題(續(xù))9090棧(1,1)(2,1)向下方前進(jìn)一步工大ACM團(tuán)隊i迷宮問題(續(xù))81234567812345679090棧(1,1)(2,1)i(3,1)向下方前進(jìn)一步工大ACM團(tuán)隊ii迷宮問題(續(xù))81234567812345679090棧(1,1)(2,1)(4,1)(3,1)i向下方前進(jìn)一步break工大ACM團(tuán)隊iiii迷宮問題(續(xù))81234567812345679090棧(1,1)(2,1)(5,1)(3,1)(4,1)向下方前進(jìn)一步break工大ACM團(tuán)隊iiiii迷宮問題(續(xù))81234567812345679090棧(1,1)(2,1)(6,1)(3,1)(4,1)(5,1)向下方前進(jìn)一步break工大ACM團(tuán)隊iiiiii迷宮問題(續(xù))81234567812345679090棧(1,1)(2,1)(7,1)(3,1)(4,1)(5,1)(6,1)向下方前進(jìn)一步break工大ACM團(tuán)隊iiiiii@迷宮問題(續(xù))81234567812345679090向下方、右方、左方均不能前進(jìn),上方是來路,則后退棧(1,1)(2,1)(7,1)(3,1)(4,1)(5,1)(6,1)break工大ACM團(tuán)隊iiiii@@迷宮問題(續(xù))81234567812345679090棧(1,1)(2,1)(3,1)(4,1)(5,1)(6,1)向右方、左方均不能前進(jìn),下方路不通,上方是來路,則后退break工大ACM團(tuán)隊iiiii@@81234567迷宮問題(續(xù))0981234567812345679090棧(1,1)(2,1)(3,1)(4,1)(5,1)(5,2)向右方前進(jìn)一步break工大ACM團(tuán)隊iiiiii@@迷宮問題(續(xù))81234567812345679090下方路不通,向右方前進(jìn)一步棧(1,1)(2,1)(3,1)(4,1)(5,1)(5,3)(5,2)break工大ACM團(tuán)隊iiiiiii@@81234567迷宮問題(續(xù))0981234567812345679090向下方前進(jìn)一步棧(1,1)(2,1)(3,1)(4,1)(5,1)(6,1)(5,2)(5,3)break工大ACM團(tuán)隊iiiiiii@@迷宮問題(續(xù))81234567812345679090下方路不通,向右方前進(jìn)一步棧(1,1)(2,1)(3,1)(4,1)(5,1)(6,4)(5,2)(5,3)(6,3)ibreak工大ACM團(tuán)隊iiiiiii@ii@迷宮問題(續(xù))81234567812345679090下方路不通,向右方前進(jìn)一步棧(1,1)(2,1)(3,1)(4,1)(5,1)(6,5)(5,2)(5,3)(6,3)(6,4)break工大ACM團(tuán)隊iiiiiii@iii@81234567迷宮問題(續(xù))0981234567812345679090向下方前進(jìn)一步棧(1,1)(2,1)(3,1)(4,1)(5,1)(7,5)(5,2)(5,3)(6,3)(6,4)(6,5)break工大ACM團(tuán)隊iiiiiii@iii@i迷宮問題(續(xù))81234567812345679090向下方前進(jìn)一步棧(1,1)(2,1)(3,1)(4,1)(5,1)(8,5)(5,2)(5,3)(6,3)(6,4)(6,5)(7,5)break工大ACM團(tuán)隊iiiiiii@iii@ii迷宮問題(續(xù))81234567812345679090下方路不通,向右方前進(jìn)一步棧(1,1)(2,1)(3,1)(4,1)(5,1)(8,6)(5,2)(5,3)(6,3)(6,4)(6,5)(7,5)(8,5)break工大ACM團(tuán)隊iiiiiii@iii@iii迷宮問題(續(xù))81234567812345679090下方路不通,向右方前進(jìn)一步棧(1,1)(2,1)(3,1)(4,1)(5,1)(8,7)(5,2)(5,3)(6,3)(6,4)(6,5)(7,5)(8,5)(8,6)break工大ACM團(tuán)隊iiiiiii@iii@ii迷宮問題(續(xù))81234567812345679090下方路不通,向右方前進(jìn)一步,到達(dá)出口棧(1,1)(2,1)(3,1)(4,1)(5,1)(8,8)(5,2)(5,3)(6,3)(6,4)(6,5)(7,5)(8,5)(8,6)ii(8,7)break工大ACM團(tuán)隊iiiiiii@iii@iiii81234567迷宮問題(續(xù))981234567090用棧保存了路徑棧(1,1)(2,1)(3,1)(4,1)(5,1)(8,8)(5,2)(5,3)(6,3)(6,4)(6,5)(7,5)(8,5)(8,6)(8,7)工大ACM團(tuán)隊迷宮問題(最短路徑)-BFS入口出口借助于隊列可求得入口到出口的最短路徑(若存在)81234567812345679090工大ACM團(tuán)隊11迷宮問題(最短路徑)入口出口借助于隊列可求得入口到出口的最短路徑(若存在)81234567812345679090工大ACM團(tuán)隊1122迷宮問題(最短路徑)入口出口借助于隊列可求得入口到出口的最短路徑(若存在)81234567812345679090工大ACM團(tuán)隊112233迷宮問題(最短路徑)入口出口借助于隊列可求得入口到出口的最短路徑(若存在)81234567812345679090工大ACM團(tuán)隊11223434迷宮問題(最短路徑)入口出口借助于隊列可求得入口到出口的最短路徑(若存在)81234567812345679090工大ACM團(tuán)隊11223453455迷宮問題(最短路徑)入口出口借助于隊列可求得入口到出口的最短路徑(若存在)81234567812345679090工大ACM團(tuán)隊11262345345656迷宮問題(最短路徑)入口出口借助于隊列可求得入口到出口的最短路徑(若存在)81234567812345679090工大ACM團(tuán)隊17126723453456576迷宮問題(最短路徑)入口出口借助于隊列可求得入口到出口的最短路徑(若存在)81234567812345679090工大ACM團(tuán)隊17812678234534565786迷宮問題(最短路徑)入口出口借助于隊列可求得入口到出口的最短路徑(若存在)81234567812345679090工大ACM團(tuán)隊1789126782345345657896迷宮問題(最短路徑)入口出口借助于隊列可求得入口到出口的最短路徑(若存在)812345678123456790909工大ACM團(tuán)隊178912678234510310456105789610迷宮問題(最短路徑)入口出口借助于隊列可求得入口到出口的最短路徑(若存在)812345678123456790909工大ACM團(tuán)隊1789126782345101131110114561011578961011迷宮問題(最短路徑)入口出口借助于隊列可求得入口到出口的最短路徑(若存在)812345678123456790909工大ACM團(tuán)隊17891267812234510113111011124561011125789610121112迷宮問題(最短路徑)入口出口借助于隊列可求得入口到出口的最短路徑(若存在)812345678123456790909工大ACM團(tuán)隊1789131267812234510113111011124561011121357896101312111213迷宮問題(最短路徑)入口出口借助于隊列可求得入口到出口的最短路徑(若存在)812345678123456790909工大ACM團(tuán)隊1789131267812234510113111011124561011121357896101312111213迷宮問題(最短路徑)入口出口借助于隊列可求得入口到出口的最短路徑(若存在)812345678123456790909工大ACM團(tuán)隊小結(jié) 廣度和深度優(yōu)先搜索有一個很大的缺陷,就是他們都是在一個給定的狀態(tài)空間中窮舉。這在狀態(tài)空間不大的情況下是很合適的算法,可是當(dāng)狀態(tài)空間十分大,且不預(yù)測的情況下就不可取了。他的效率實(shí)在太低,甚至不可完成。
所以,在這里再次強(qiáng)調(diào)“剪枝”!剪枝:通過某種判斷,避免一些不必要的遍歷過程,形象的說剪去了搜索樹中的某些“枝條”。工大ACM團(tuán)隊HDOJ_1010TempteroftheBone
ProblemDescriptionThedoggiefoundaboneinanancientmaze,whichfascinatedhimalot.However,whenhepickeditup,themazebegantoshake,andthedoggiecouldfeelthegroundsinking.Herealizedthatthebonewasatrap,andhetrieddesperatelytogetoutofthismaze.
ThemazewasarectanglewithsizesNbyM.Therewasadoorinthemaze.Atthebeginning,thedoorwasclosedanditwouldopenattheT-thsecondforashortperiodoftime(lessthan1second).ThereforethedoggiehadtoarriveatthedooronexactlytheT-thsecond.Ineverysecond,hecouldmoveoneblocktooneoftheupper,lower,leftandrightneighboringblocks.Onceheenteredablock,thegroundofthisblockwouldstarttosinkanddisappearinthenextsecond.Hecouldnotstayatoneblockformorethanonesecond,norcouldhemoveintoavisitedblock.Canthepoordoggiesurvive?Pleasehelphim工大ACM團(tuán)隊HDOJ_1010TempteroftheBone
InputTheinputconsistsofmultipletestcases.ThefirstlineofeachtestcasecontainsthreeintegersN,M,andT(1<N,M<7;0<T<50),whichdenotethesizesofthemazeandthetimeatwhichthedoorwillopen,respectively.ThenextNlinesgivethemazelayout,witheachlinecontainingMcharacters.Acharacterisoneofthefollowing:
'X':ablockofwall,whichthedoggiecannotenter;
'S':thestartpointofthedoggie;
'D':theDoor;or
'.':anemptyblock.
Theinputisterminatedwiththree0's.Thistestcaseisnottobeprocessed工大ACM團(tuán)隊HDOJ_1010TempteroftheBone
OutputForeachtestcase,printinoneline"YES"ifthedoggiecansurvive,or"NO"otherwise.工大ACM團(tuán)隊HDOJ_1010TempteroftheBone
SampleInput445S.X...X...XD....345S.X...X....D000工大ACM團(tuán)隊HDOJ_1010TempteroftheBone
SampleOutputNOYES工大ACM團(tuán)隊要點(diǎn)分析:典型的迷宮搜索,做出該題將具有里程碑式的意義!能不能枚舉出所有抵達(dá)方案,再在通過檢查時間時間是否吻合,得到結(jié)果,用DFS進(jìn)行搜索。DFS搜索完成后,發(fā)現(xiàn)超時,得剪枝才行。工大ACM團(tuán)隊想到了什么剪枝條件?每個block只能走一次要求恰好某個給定的時間到達(dá)出口如果可走的block的總數(shù)小于時間,將會產(chǎn)生什么情況?還想到什么剪枝?工大ACM團(tuán)隊奇偶性剪枝可以把map看成這樣:010101101010010101101010010101從為0的格子走一步,必然走向?yàn)?的格子從為1的格子走一步,必然走向?yàn)?的格子即:
0->1或1->0必然是奇數(shù)步
0->0走1->1必然是偶數(shù)步所以當(dāng)遇到從0走向0但是要求時間是奇數(shù)的,或者,從1走向0但是要求時間是偶數(shù)的都可以直接判斷不可達(dá)!結(jié)論:工大ACM團(tuán)隊奇偶性剪枝那么設(shè)所在位置(x,y)與目標(biāo)位置(dx,dy)如果abs(dx-x)+abs(dy-y)為偶數(shù),則說明abs(dx-x)+和abs(dy-y)的奇偶性相同,需要走偶數(shù)步如果abs(dx-x)+abs(dy-y)為奇數(shù),那么說明abs(dx-x)和abs(dy-y)的奇偶性不同,需要走奇數(shù)步解為abs(dx-sx)+abs(dy-sy)的奇偶性就確定了所需要的步數(shù)的奇偶性??!而(ti-setp)表示剩下還需要走的步數(shù),由于題目要求要在ti時恰好到達(dá),那么(ti-step)與abs(x-y)+abs(dx-dy)的奇偶性必須相同因此temp=ti-step-abs(dx-x)-abs(dy-y)必然為偶數(shù)!工大ACM團(tuán)隊核心代碼voidDfsSerch(int
x,int
y,intstep){
inttemp;temp=ti-step-
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 國慶升旗講話稿范文(5篇)
- 信息素在性別識別中的作用-洞察分析
- 藥物支架在肝癌治療中的作用-洞察分析
- 疫苗接種倫理與法規(guī)探討-洞察分析
- 油氣行業(yè)智能化升級-洞察分析
- 云平臺互操作性研究-洞察分析
- 污染土壤生物修復(fù)技術(shù)-洞察分析
- 鄉(xiāng)村文化景觀旅游開發(fā)-洞察分析
- 宇宙射線多信使天文學(xué)-洞察分析
- 網(wǎng)絡(luò)謠言傳播機(jī)制研究-洞察分析
- 2024網(wǎng)絡(luò)課程錄制合同
- 24秋二年級上冊語文期末復(fù)習(xí)21天沖刺計劃(每日5道題)
- 人教版(2024)七年級上冊數(shù)學(xué)第5章單元測試卷(含答案)
- 巨量-營銷科學(xué)(初級)認(rèn)證培訓(xùn)考試題庫(含答案)
- MOOC 攝影藝術(shù)創(chuàng)作-中國傳媒大學(xué) 中國大學(xué)慕課答案
- 干部履歷表(中共中央組織部2015年制)
- 企業(yè)年終總結(jié)大會PPT模板
- 《鋼結(jié)構(gòu)工人三級安全教育記錄卡》
- 先張法預(yù)應(yīng)力混凝土管樁基礎(chǔ)技術(shù)規(guī)程
- 高爾夫文化與禮儀慕課測驗(yàn)作業(yè)答案
- 中藥治療高血壓的臨床論文(共3篇)
評論
0/150
提交評論