我的OI心得 三 之圖論 二

2022-01-04 02:15:22 字數 877 閱讀 7971

樹與bfs

上一章我們了解了搜尋樹,並想辦法把他給深度優先遍歷了。今天就來講bfs,即寬度優先搜尋。

如下圖:

其編號就是bfs遍歷的順序——就是按層遍歷。bfs將依次遍歷每一層,層層推進。這有什麼好處呢?

如果題目要求輸出乙個解,就意味著找到解就退出。如果我們估計這個解的節點的層次不很深,但是各節點的子節點都很多,那麼bfs在時間上顯然可以佔優——dfs會一直深入下去,導致大量的浪費。此外,對於求一系列狀態的最優解(要求不斷更新)的問題(比如單源最短路徑或動態規劃),bfs可以盡可能大地將子問題重疊處理,效率較dfs高相當多:

dfs先解決新問題再解決老問題,但是有相當多的問題是這樣的:新問題由若干老問題決定。寬搜將老問題解決後再解決新問題,可以做到一錘定音(想想拓撲排序),而深搜則需要反覆迭代。

bfs的致命弱點是空間問題。我們對於每個狀態都要儲存,如此根本無法解決狀態過複雜的問題。究其原因,其遍歷順序是不連續的,比如我做完節點5就去做節點6,而沒有什麼直接的措施可以將節點5的狀態轉換為節點6的狀態——dfs則不然,他會從5到2再到6,沿著邊用全域性變數走得很爽。

因此,bfs的價值在於充分利用空間而節省時間。在時間金貴的noip中,bfs還是很吃香的。

bfs的具體實現:用佇列。就是說,隊首碰到新狀態要做了,扔隊尾去,到時候再說。

實現如下:

t1,t2:integer;

queue:array[1..1000]of node

t1=1;

t2=1;

queue:=

repeat

u=queue[t1];

inc(t1);

until t1=t2;

注意:多結合雜湊表!bfs入門請尋找八數碼問題或某年ioi的「魔版」,其中八數碼去了解下康托展開。

2019高炮師預備役培訓之我的心得

2012年5月7日我受大慶高炮師預備役兵團邀請到高炮師進行為期2個月的培訓,今天已經走過21天的培訓我有感寫下內心的所想所感。軍訓不但培養人有吃苦耐勞的精神,而且能磨練人的堅強意志。蘇軾有句話 古之立大事者,不惟有超世之才,亦必有堅忍不拔之志。這句話意思是成功的大門從來都是向意志堅強的人敞開的,甚至...

我的考研心得三點注意事項

回顧這一年的考研經歷,心中感觸頗多。大家考研的目的各不相同,但目標卻是一致的 考研勝利。若想取得考研成功,有什麼法寶嗎?有 就是堅持到底。但是,你一定要注意一些細節的東西。首先是選專業,一定要多下功,不管是考本專業或是跨專業都應充分了解這個專業,看是否是自己喜歡的。興趣是最好的老師,喜歡它,才能做好...

我對課改之美術課的心得體會

教師 俞小梅 大家都知道課程改革提出了更高的要求。對我們美術教育也不另外,它不僅僅停留在過去的以老師教,學生學為主的教學模式,而是加入了很多的讓學生在快樂中學到新知。我一直在思考 什麼樣的美術課稱得上好?在思考的同時,我又在一次次實踐的檢驗中尋找答案。為此,通過平時教學工作以及課外的學習探索 實踐與...