多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > 019-dfs.bfs-圖的遍歷-《算法設計技巧與分析》M.H.A學習筆記

019-dfs.bfs-圖的遍歷-《算法設計技巧與分析》M.H.A學習筆記

來源:程序員人生   發布時間:2016-07-14 14:44:59 閱讀次數:2651次

深度優先搜索DFS

深搜框架:

bool dfs(int loc) { 標記狀態loc已訪問; if (loc為目標狀態) return true; for (每一個可能的操作) { 對loc利用操作產生新狀態nstat; if (nstat合法且未被訪問) { if (dfs(nstat)) return true; } } 撤消loc已訪問標記; // 這步要具體問題具體分析了 return false; }


廣度優先搜索BFS

實現方法

1. 首先將根節點放入隊列中。

2. 從隊列中取出第1個節點,并檢驗它是不是為目標。

· 如果找到目標,則結束搜索并回傳結果。

· 否則將它所有還沒有檢驗過的直接子節點加入隊列中。

3. 若隊列為空,表示整張圖都檢查過了——亦即圖中沒有欲搜索的目標。結束搜索并回傳找不到目標

4. 重復步驟2

廣搜框架:

<pre name="code" class="cpp">bool bfs(int init) { que.enque(init); while (隊列que不是空的) { int loc = que.front(); que.deque(); if (loc是目標狀態) return true; for (每一個可能的操作) { 對loc利用操作產生新狀態nstat; if (nstat合法且未入隊) { 標記nstat已入隊; que.enque(nstat); } } } return false; }



補充:

簡化代碼:

在1類搜棋盤、搜地圖、搜矩陣位置的問題中我們會頻繁遇到“從當前點獲得相鄰點”的操作,為了縮短代碼,我們可以開個方向數組dir[][2]表示方向,以4方向為例,則dir[4][2] = {{0, 1}, {1, 0}, {0, 1}, {⑴, 0}};

用的時候有:

for (int i = 0; i < 4; ++i) { int newX = oldX + dir[i][0]; int newY = oldY + dir[i][1]; if (newX,newY均合法且未訪問) // bfs或dfs的相干操作 }

記錄路徑:

廣搜:

如果題目需要我們記錄解路徑,則對廣搜有:

struct TStat{ int value; int pre; // 記錄其父狀態在隊列中的位置,初始化為⑴; };

每次擴大新狀態的時候令新狀態的pre為當前狀態在隊列中的下標,待到達目標狀態以后倒著查回第1個狀態便可獲得解路徑。

深搜:

對深搜,則可另外開1個棧用來記錄當前的合法狀態,每次訪問新狀態前都壓入當前狀態到棧中,回溯時也相應地彈出棧頂,終究這個棧里將逆序記錄解路徑上的節點。大致做法以下:

stack<int> stk; bool dfs(int loc) { 標記狀態loc已訪問; stk.push(loc); for (每一個可能的操作) { 對loc利用操作產生新狀態nstat; if (nstat合法且未訪問) { if (dfs(nstat)) return true; } } stk.pop(); 撤消loc已訪問標記; return false; }

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 成人亚洲综合 | 亚洲三级大片 | 欧美亚洲国产色综合 | 日韩精品一区二区三区中文字幕 | 欧美18性 | 在线观看亚洲专区 | 亚洲精品国产福利在线观看 | 可以看的黄色网址 | 性新婚a大黄毛片 | 动漫美女口工h福利动画网站 | 久久国产一区二区三区 | 综合激情区视频一区视频二区 | 欧美激情在线视频播放 | 九九黄色 | 亚洲国产欧美目韩成人综合 | 亚洲免费人成在线视频观看 | 日韩专区亚洲精品欧美专区 | 2022偷拍午夜视频在线播放 | 亚洲精品成人中文网 | 国产做出在线 | 传媒麻豆 | 欧美日韩亚 | 国产区一区二 | japanese日本护士 | 成人a在线观看 | 亚洲图片欧美 | 国产一二三区视频 | 免费在线观看一级毛片 | 久爱精品视频在线视频 | 美女精品永久福利在线 | 午夜在线播放 | 欧美jizz8性欧美 | 欧美日韩一区二区在线视频播放 | 国产成人高清视频 | japanese高清广州国产 | 91国内精品久久久久免费影院 | 亚洲欧美综合乱码精品成人网 | 欧美人一级淫片a免费播放 欧美人与z0z0xxxx | 亚洲欧洲毛片 | 波多野结衣视频在线 | 性888xxxx入欧美 | 中国精品18videosex性中国 |