演算法與資料結構(26) dfs的基本應用

2021-08-20 19:16:21 字數 516 閱讀 5580

深度優先遍歷:其實就是往乙個往死裡走,直到這個點不再指向其他或已經遍歷過了,就退出來,接著往下乙個點,直到所有的就訪問過了。

應用:求乙個圖的連通分量,求兩個點之前的路徑

dfs核心**:

public void dfs(int v) 

}

求連通分量:

開闢乙個陣列來記錄屬於哪個連通分量,遍歷所有的節點,如果走得通就屬於這個集合裡,否則就是另乙個連通集合裡。

// 遍歷所有的節點   count為連通分量個數

for(int i = 0; i < g.v(); i ++)}

// 能遍歷到的這個節點都屬於這個連通分量裡的

private void dfs(int v)}

求路徑的話一樣:

開闢乙個新的陣列,每次訪問的時候記錄下來從哪個節點過來的。

private void dfs(int v)

}}

資料結構與演算法(bfs與dfs)

引言 經過上一次的學習,我們明白了圖的基本操作。這一次,我們學習圖的兩種基本演算法 bfs與dfs。2.bfs演算法 後記介紹 dfs演算法也叫深度優先搜尋,核心思想是從某一位置或者狀態出發,進行搜尋,直到找到為止。形象的可以認為是所有的可能都走一邊,既暴力。深度優先遍歷圖的方法是,從圖中某頂點v出...

資料結構與演算法基本

棧的演算法 計算機內部空間是連續儲存的,但是可以通過邏輯上改變記憶體的物理結構,資料在記憶體上呈現出的是連續分布狀態 主要的典型資料結構 在實現棧這種資料結構時,首先要定義乙個陣列和乙個變數。陣列中所包含的元素個數就是棧的大小 棧中最多能存放多少個資料 變數中則儲存著乙個索引,指向儲存在棧中最頂端的...

資料結構與演算法 26 弗洛伊德演算法

設定頂點vi到頂點vk的最短路徑已知lik,頂點vk到vj的最短路徑已知為lkj,頂點vi到vj的路徑為lij,則vi到vj的最短路徑為 min lik lkj lij vk的取值為圖中所有頂點,則可獲得vi到vj的最短路徑 至於vi到vk的最短路徑lik或者vk的最短路徑lkj,是以同樣的方式獲得...