中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

門戶網(wǎng)站開發(fā)報價單企業(yè)的網(wǎng)絡(luò)推廣

門戶網(wǎng)站開發(fā)報價單,企業(yè)的網(wǎng)絡(luò)推廣,網(wǎng)頁設(shè)計品牌,網(wǎng)絡(luò)規(guī)劃設(shè)計師通常幾月考DFS算法查找所有路徑詳解 算法介紹 深度優(yōu)先搜索(Depth-First Search,DFS)是一種圖遍歷算法,它從起始節(jié)點開始,沿著一條路徑盡可能深入,直到達(dá)到最深的節(jié)點,然后回溯到前一節(jié)點,繼…

DFS算法查找所有路徑詳解

算法介紹

深度優(yōu)先搜索(Depth-First Search,DFS)是一種圖遍歷算法,它從起始節(jié)點開始,沿著一條路徑盡可能深入,直到達(dá)到最深的節(jié)點,然后回溯到前一節(jié)點,繼續(xù)探索下一條路徑。DFS通常使用遞歸或棧(非遞歸)來實現(xiàn)。

以下是DFS算法的基本步驟:

  • 選擇起始節(jié)點: 從圖中選擇一個起始節(jié)點作為當(dāng)前節(jié)點;
  • 標(biāo)記節(jié)點: 標(biāo)記當(dāng)前節(jié)點為已訪問,以防止重復(fù)訪問;
  • 探索鄰居節(jié)點: 對于當(dāng)前節(jié)點的未訪問鄰居節(jié)點,選擇一個鄰居節(jié)點作為新的當(dāng)前節(jié)點,然后重復(fù)步驟2和步驟3;
  • 回溯: 如果當(dāng)前節(jié)點沒有未訪問的鄰居節(jié)點,回溯到上一節(jié)點,重復(fù)步驟3;
  • 重復(fù)過程: 重復(fù)步驟3和步驟4,直到所有節(jié)點都被訪問。

遞歸實現(xiàn)的偽代碼

function DFS(node):if node is not visited:mark node as visitedfor each neighbor of node:DFS(neighbor)

非遞歸實現(xiàn)的偽代碼

DFS的非遞歸實現(xiàn)通常使用棧來模擬遞歸調(diào)用的過程,具體步驟如下:

  • 創(chuàng)建一個空棧,并將起始節(jié)點壓入棧中;
  • 進(jìn)入循環(huán),直到棧為空;
  • 彈出棧頂節(jié)點作為當(dāng)前節(jié)點;
  • 如果當(dāng)前節(jié)點未訪問,標(biāo)記為已訪問;
  • 遍歷當(dāng)前節(jié)點的鄰居節(jié)點,將未訪問的鄰居節(jié)點壓入棧中;
  • 重復(fù)步驟3到步驟5,直到棧為空為止。

注意:在處理連通圖時可能導(dǎo)致棧溢出,因此在實際應(yīng)用中可能需要注意棧深度的問題。
偽代碼如下:

function DFS_non_recursive(start):stack = empty stackpush start onto stackwhile stack is not empty:current = pop from stackif current is not visited:mark current as visitedfor each neighbor of current:push neighbor onto stack

具體算法實現(xiàn)

由于可能存在非常多的路徑,我們設(shè)置一個maxLength,表示限制經(jīng)過的節(jié)點個數(shù)。

void Graph::DFS(int current, int end, std::unordered_set<int>& visited, std::vector<int>& path, int maxLength)
{static int currentLength = 0;static int i = 1;visited.insert(current);path.push_back(current);if (path.size() <= maxLength) {if (current == end){// 生成路徑for (int node : path) {std::cout<<node<<' ';}std::cout<<"路徑總長度為:"<<currentLength<<std::endl;}else{for (int neighbor = 0; neighbor < V; ++neighbor){if (adjMatrix[current][neighbor] != INF && visited.find(neighbor) == visited.end()) {int edgeWeight = adjMatrixLength[current][neighbor];currentLength += edgeWeight;DFS(neighbor, end, visited, path, maxLength);currentLength -= edgeWeight; // 回溯時減去當(dāng)前邊的長度}}}}visited.erase(current);path.pop_back();
}
http://www.risenshineclean.com/news/1691.html

相關(guān)文章:

  • 文山州住房建設(shè)網(wǎng)站企業(yè)網(wǎng)絡(luò)推廣計劃
  • 微信小程序模版廣州seo網(wǎng)站推廣公司
  • 南通高端網(wǎng)站建設(shè)公司培訓(xùn)網(wǎng)頁
  • 承德做網(wǎng)站優(yōu)化搜狗網(wǎng)址大全
  • 國內(nèi)產(chǎn)品推廣網(wǎng)站廣州市疫情最新情況
  • 編程和做網(wǎng)站有關(guān)系嗎招商外包
  • 微信api文檔徐州seo代理計費(fèi)
  • 泉州市住房與城鄉(xiāng)建設(shè)局網(wǎng)站seo外鏈?zhǔn)鞘裁匆馑?/a>
  • 手機(jī)網(wǎng)站 pc網(wǎng)站模板百度近日收錄查詢
  • 深圳疫情防控最新通知seo網(wǎng)站關(guān)鍵詞優(yōu)化
  • 怎么判斷網(wǎng)站建設(shè)年齡新媒體運(yùn)營主要做什么
  • 網(wǎng)站寶 西部數(shù)碼網(wǎng)站管理助手廣告最多的網(wǎng)站
  • 淘寶客優(yōu)惠券網(wǎng)站建設(shè)加盟官網(wǎng)怎么做百度推廣運(yùn)營
  • 網(wǎng)站模板可視化編輯百度霸屏培訓(xùn)
  • php企業(yè)網(wǎng)站源代碼如何自己搭建網(wǎng)站
  • 懷化三中網(wǎng)站營銷活動
  • 類似于wordpress搜索引擎seo推廣
  • 3合1網(wǎng)站建設(shè)公司網(wǎng)絡(luò)營銷策劃的具體流程是
  • 網(wǎng)站建設(shè)qianhaiyouseo是什么職位的簡稱
  • web網(wǎng)站開發(fā)歷史河南網(wǎng)站關(guān)鍵詞優(yōu)化代理
  • 工程施工合同協(xié)議書范本什么是seo營銷
  • 網(wǎng)站建設(shè)一意見搜索引擎入口google
  • 阿里云oss做網(wǎng)站白度
  • 百度做公司網(wǎng)站有用嗎淘寶seo搜索引擎原理
  • 有規(guī)范seo 關(guān)鍵詞優(yōu)化
  • 重慶渝中區(qū)企業(yè)網(wǎng)站建設(shè)哪家好百度高級搜索首頁
  • 怎么做淘客手機(jī)網(wǎng)站網(wǎng)站關(guān)鍵詞優(yōu)化方法
  • 可以做任務(wù)的網(wǎng)站有哪些營銷網(wǎng)站都有哪些
  • 湖南建筑公司網(wǎng)站百度廣告客服電話
  • 任何人任意做網(wǎng)站銷售產(chǎn)品違法嗎網(wǎng)站的seo