BFS DFS複雜度分析(時間 空間)

2021-10-08 03:46:10 字數 590 閱讀 1118

bfs是一種借用佇列來儲存的過程,分層查詢,優先考慮距離出發點近的點。無論是在鄰接表還是鄰接矩陣中儲存,都需要借助乙個輔助佇列,v個頂點均需入隊,最壞的情況下,空間複雜度為o(v)。

鄰接表形式儲存時,每個頂點均需搜尋一次,時間複雜度t1=o(v),從乙個頂點開始搜尋時,開始搜尋,訪問未被訪問過的節點。最壞的情況下,每個頂點至少訪問一次,每條邊至少訪問1次,這是因為在搜尋的過程中,若某結點向下搜尋時,其子結點都訪問過了,這時候就會回退,故時間復 雜度為o(e),演算法總的時間復 度為o(|v|+|e|)。

鄰接矩陣儲存方式時,查詢每個頂點的鄰接點所需時間為o(v),即該節點所在的該行該列。又有n個頂點,故算總的時間複雜度為o(|v|^2)。

dfs演算法是一乙個遞迴演算法,需要借助乙個遞迴工作棧,故它的空問複雜度為o(v)。

遍歷圖的過程實質上是對每個頂點查詢其鄰接點的過程,其耗費的時間取決於所採用結構。

鄰接表表示時,查詢所有頂點的鄰接點所需時間為o(e),訪問頂點的鄰接點所花時間為o(v),此時,總的時間複雜度為o(v+e)。

鄰接矩陣表示時,查詢每個頂點的鄰接點所需時間為o(v),要查詢整個矩陣,故總的時間度為o(v^2)。

v為圖的頂點數,e為邊數。

複雜度分析 時間複雜度 空間複雜度

執行效率是演算法的乙個重要的考量指標,演算法的執行效率用時間 空間複雜度來衡量。今天我們來學習一下複雜度的分析。通常我們可以通過執行程式來獲得演算法的真正的執行時間,這種方法我們可以稱為事後統計法,但這種方法得到的是具體的資料,測試結果很依賴測試環境,而且受資料規模影像最大。因此,我們需要乙個不需要...

複雜度分析 時間複雜度分析和空間複雜度分析

其實,只要講到資料結構與演算法,就一定離不開時間 空間複雜度分析。而且我個人認為,複雜度分析是整個演算法學習的精髓,只要掌握了它,資料結構和演算法的內容基本上就掌握了一半。1.時間複雜度分析 對於剛才羅列的複雜度量級,我們可以粗略地分為兩類,多項式量級和非多項式量級。其中,非多項式量級只有兩個 o ...

複雜度分析(上)時間複雜度 空間複雜度

為了肉眼 實時 快速地來分析出 的複雜度,我們需要乙個不用具體的測試資料來測試,就可以粗略地估計演算法的執行效率的方法。時間複雜度 空間複雜度 表示演算法的執行時間與資料規模之間的增長關係。每行 對應的 cpu 執行的個數 執行的時間都不一樣,但是,我們這裡只是粗略估計,所以可以假設每行 執行的時間...