日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DFS与BFS的总结

發布時間:2025/6/15 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DFS与BFS的总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一般來說是BFS比較快的吧。因為沒有遞歸,runtime_error一般就是內存溢出,就是越界了! BFS一般用來搜索最短路徑最好,DFS用來搜索能不能到達目的地之類的

BFS與DFS的討論:BFS:這是一種基于隊列這種數據結構的搜索方式,它的特點是由每一個狀態可以擴展出許多狀態,然后再以此擴展,直到找到目標狀態或者隊列中頭尾指針相遇,即隊列中所有狀態都已處理完畢。

DFS:基于遞歸的搜索方式,它的特點是由一個狀態拓展一個狀態,然后不停拓展,直到找到目標或者無法繼續拓展結束一個狀態的遞歸。

?????????

優缺點:BFS:對于解決最短或最少問題特別有效,而且尋找深度小,但缺點是內存耗費量大(需要開大量的數組單元用來存儲狀態)。

????????DFS:對于解決遍歷和求所有問題有效,對于問題搜索深度小的時候處理速度迅速,然而在深度很大的情況下效率不高

?

總結:不管是BFS還是DFS,它們雖然好用,但由于時間和空間的局限性,以至于它們只能解決數據量小的問題。

?

各種搜索題目歸類:

?

坐標類型搜索 :這種類型的搜索題目通常來說簡單的比較簡單,復雜的通常在邊界的處理和情況的討論方面會比較復雜,分析這類問題,我們首先要抓住題目的意思,看具體是怎么建立坐標系(特別重要),然后仔細分析到搜索的每一個階段是如何通過條件轉移到下一個階段的。確定每一次遞歸(對于DFS)的回溯和深入條件,對于BFS,要注意每一次入隊的條件同時注意判重。要牢牢把握目標狀態是一個什么狀態,在什么時候結束搜索。還有,DFS過程的參數如何設定,是帶參數還是不帶參數,帶的話各個參數一定要保證能完全的表示一個狀態,不會出現一個狀態對應多個參數,而這一點對于BFS來說就稍簡單些,只需要多設置些變量就可以了。

??????????????經典題目:細胞(NDK1435)、Tyvj:乳草的入侵、武士風度的牛

?

數值類型搜索:(雖然我也不知道該怎么叫,就起這個名字吧),這種類型的搜索就需要仔細分析分析了,一般來說采用DFS,而且它的終止條件一般都是很明顯的,難就難在對于過程的把握,過程的把握類似于坐標類型的搜索(判重、深入、枚舉),注意這種類型的搜索通常還要用到剪枝優化,對于那些明顯不符合要求的特殊狀態我們一定要在之前就去掉它,否則它會像滾雪球一樣越滾越大,浪費我們的時間。

??????????????經典題目:Tyvj:派對;售貨員的難題,以及各種有關題目

總結

以上是生活随笔為你收集整理的DFS与BFS的总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。