天天看點

6.3.2深度搜尋

6.3.2深度搜尋
6.3.2深度搜尋

(ง●皿●)ง大點聲!勞資聽不見!沒吃飯嗎哈哈哈哈哈哈哈哈哈哈

大家好,本集我們來學習,深度優先搜尋,首先我們先來複習一下,上節課所學習到廣州,先搜尋類似于樹的層次周遊,假設我們現在有一個初始頂點一那麼我們從該頂點出發一次的圖當中的每一個頂點。當中的一個頂點,那麼我們知道廣州見搜尋是優先通路離你較近的那些頂點的,這就是廣州先搜尋好廣東人員搜尋與術的層次,周遊小類似那深度元,搜尋到其實深度人員搜尋有樹的先序周遊通路比較相似,我們先來複習一下樹的先序周遊,首先這是一棵樹,然後我們從中間截點一出發來通路的節點,然後通路根結點的一個子樹的根節點也就是0.2,然後依舊通路0.2的一顆子數的根結點,也就是0.4,然後按照這樣的規則通路0.7,那麼頂點4的所有的節點已經反問d了,是以我們要反問頂點2的另一顆子數的根基點也就是0.5我們店看上一個圖的話這樣的車其實。點5,然後按照這樣的規則,我們通路了a數當中的所有頂點,依舊如果把數看成一個圖的話,那麼這樣的順序其實就是這樣一個圖,它的深度優先搜尋的順序,我們在這樣一個類似豎的圖的例子當中發現,是不是廣東一些搜尋和深度優先搜尋與他們的名字非常的符合阿廣播電視,按照圖的寬度的範圍這樣進行擴充,零點的深度優先搜尋,這是按照這樣一條路徑的深度的走向去通路頂點的好,接下來我們要學習一下深度雲搜尋在書中是怎樣描述的,那麼這裡是能源搜尋中的縮寫為dfsd代表的是深度的意思首先第一然後我們要出發任意一個大家注意下這一個符合條件的。深度的意思首先第1步我們要通路起始的這個頂點v,然後呢,然後我們要從v出發通路v到任意一個迎接且未被通路過的迎接0.5I,大家要注意一下,這裡是任意任意一個符合條件的明确定點都可以沒有次序的要求好,接着我們要從wI出發,再通路滿足條件的一些景點,這裡也是任意的一個臨街前未被通路的一些頂點蜿蜒,那麼如果咱們還沒有符合這樣的條件的一些景點呢,我們要退回到它的上一層頂點,也就是v,我們是從v到wi的,然後我們隻要重複這樣的過程,直到所有頂點被通路為止,這樣我們就實作了深度有限搜尋df明天。 Fx那麼大家要注意一下,這個也與bfs我們的搜尋一樣,我們也強調了一定是未被通路過的這些一些景點,那麼也是同樣的要求,我們要為了避免某一個頂點通路了多次,這樣就不符合圖的便利的定義了,我們一起來看一下這一個的例子,我們從0.1出發,首先呢,我們要通路起始點點位也就是通路這個,其實頂點頂點e,然後我們要通路v的某一個零件,且微微通路過的靈活定點,這裡有0.2和0.3,我們通路哪一個都可以,他幫我們掃了0.2。0.1出發,首先呢,我們要通路,其實點點位也就是通路這個70 0.0.1,然後我們要通路v的某一個臨界點位被通路過的靈活頂點,這裡有0.2和0.3,我們通路哪一個都可以,那麼我們少問0.2,然後我們從0.2出發來通路點點2的,未被通路過的,任意的一個。來通路0.2的,未被通路過的任意的一個臨界點,這裡我們選取了0.4那麼介紹,我們按照相同步驟通路了5.5,大家可能會有疑問,這裡為什麼我們要通路了0.5呢?0.5明明是0.2的連接配接頂點啊,我們發現其實0.5是不是也是0.4的,0.4的以及頂點啊,這裡我們是通過0.4通路到5.5了,其實我們發現0.5是不是沒有符合條件的了解頂點了,是以我們傳回到了它的上一層頂點,也就是0.4,然後我們就從0.4開始進行通路通路頂點4的一個任意一個連接配接的且未被通路過的一些經典這裡,我們隻剩下了0.7,是以我們要通路點點選,然後點點71就沒有符合條件的退役到0.40.4也沒有符合條件的頂點了,我們要退回到點點21就退回到0.1有一個符合條件的。條件零點我們退回到0.40.4也沒有符合條件的零點了,我們要退回到0.21就退回到0.1,那麼0.1,有一個符合條件的零點就是0.3這裡0.3沒有被通路且與一連接配接,然後0.3我們依舊要通路它的一個符合條件的了解,零點就是0.6,好,這樣我們就通路過了所有的頂點,實作了深度與線搜尋好,這就是dfs深度優先搜尋的一個過程,那麼接下來我們就來讨論一下如何實作它呢,上一節課實作廣度性搜尋時,我們利用了一個對列,還有一個标記數組來實作了廣推薦搜尋,因為對列可以實作數的層次便利,那麼這裡呢,這裡的深度優先搜尋,他與樹的先序周遊比較像,那麼大家聯想一下,其實深度研所他是不是可以用遞歸的形式。等一下其實深度研究所它是不是可以用遞歸的形式來實作啊,那麼這裡因為定規也可以轉化為這樣的形式,我們可以将先去便利轉化為這樣的形式,是以深度研究所一定也可以利用利用站來實作,那麼除了地位或者是這樣我們還缺了一個輔助的标記數組,這個與廣播員搜尋是一樣的,那麼我們有這兩種資料結構就可以實作df的一個算法了,接下來我們學習一下深度雲搜尋是如何用代碼來實作它的,那麼這就是一個深度,原先搜尋dfs代碼,這給我們采用的是遞歸的形式,我們來看一下這個代碼,首先還是與廣東那些搜尋一樣,需要申請一個輔助的這個标簽數組vc推導,然後你就有兩個函數還說作用于變色一樣的還是來看下第一個三。一樣的,那麼我們首先還是來看一下第2個函數dfs這個函數依舊它的參數表有兩個參數,第1個參數為通路的這個圖,第2個參數是我們其實頂點的這一個編号,我們用一個整形變量來表示,接下來首先我們要通路這個頂點,然後将它的标記數組的值值為x表示他已經反問過了,然後依舊是這樣一個循環,大家看着是不是非常的眼熟啊,這與bfs的循環是一樣的,我們也将一個變量複制為第1個靈活的頂點,然後循環的過程也就是循環每一個臨界的頂點,依舊用next number這樣一個函數來求下一個連接配接定點,然後循環體的内容則是如果概念界定點未被反駁的話,滿足這樣的條件,我們則要對它調用一遍diss,也就是這樣一個遞歸的過程是因為他。那是以要對它調用一遍,dfs也就是這樣一個遞歸的過程,那麼為什麼我們可以采用遞歸形式的代碼來實作它呢?那麼這裡是因為dfs它的搜尋過程是不是語數的先驅便利比較像,是以數的像距變低,我們可以采用遞歸形成代碼,那麼dfs也是可以采用遞歸形式代碼的,它的實作原理其實是一樣的好,接下來我們隻需要遞歸的調用這樣一個dnf,然後這個因為涉及到了遞歸,我們還是來看一個小例子,可能遞歸的形式代碼大家還是不太熟悉好,我們來看一下,這裡頭有相同的例子,那麼我們依舊從頂點a出發,是以我們就要用這個函數時傳遞的參數是這一個有象圖以及頂點a的編号v,然後我們通路頂點a,并把頂點a對應到直輔助下标的直至尾處表示,他已經被通路過了通過這樣。通路首先我們找到第一。的一個路徑可以到達頂點b啊,是以頂點b沒有被通路到,那麼這時候我們就需要第1個函數了,這個與變法s是相同的,我們來看一下這樣一個函數當中有什麼樣的内容,首先第1個循環與afs一樣,還是為這個數組初始化,也就是将每一個神初始化為false,然後是第二循環,依舊是循環的,對每一個頂點,每一個未被防破的頂點,最後一遍dfs函數我們來看一下,在這個偶像圖當中,這樣一個函數它是怎麼樣調用的,怎樣循環的,首先我們一定是從第1個定點假設,第1個定點是定點a,我們按照abcd的順序這樣來排号,那麼我們首先調用了頂點a的dfs實行了我們剛剛叙述的那一個過程,随着頂點a的dfs結束之後,我們是不是循環到下一個頂點啊,也就是頂點b,那麼因為頂點b,我們通過這樣的條件判斷,發現他也沒有被通路過對他進行調研。轉化到下一個頂點啊,也就是頂點b,那麼因為頂點b,我們通過這樣的條件判斷,發現它也沒有被通路過,是以我們對它進行調用df s的操作這裡傳入到參數編号是零點d的編号,這時候我們就對點點b實行深度有限搜尋也就是df,然後依舊是這樣一個循環,在循環的時候發現頂點b有a和c兩個點寫頂點,但是這兩個連接配接頂點在調用a的點face時,是不是都已經被通路過了,是以正因為我們不對它進行重通路,因為有這樣一個條件判斷語句好,這樣我們就結束了零點b的點,fx接着我們依舊來看第1個函數的,這樣一個循環循環到了頂點,b之後我們來循環到了下一個頂點,也就是頂點c是不是已經沒有。呀,反思到序列這裡,我們需要注意的一點是dfs或者是變反四在連接配接矩陣法下的序列是唯一的,而那些療法下的修煉是不為一道為什麼呢?其實與他們的過錯方法是有很大關系的臨界區,這樣我們是按照頂點編号第1次的通路,下一個臨界點點到,而Excel表法則是便利套道邊表,那麼在臨界表法當中,根據我們生成邊表就是輸入邊的次序不同,它的邊表也會産生不同,是以這臨時表法是不為一道而根據這些法則是唯一的好,這就是一個小知識點,接下來我們來分析一下df的算法性能,首先還是來看它的空間複雜度,它的空間複雜度與bfs相同第9位大OA這裡v的絕對值代表的是節點的數量,它是以節點數量一個數量級還是采用我們都需要。算法實作,無論采用遞歸的形式還是采用這樣的形式,我們都需要這樣一個工作站的維護,那麼在最壞的情況下,也就是該圖類似于一個線性結構跟的節點,排上了一個類似于線性結構的這樣一個圖,我們從某一個景點出發,通路每一個零點時則需要一個節點數量大小的工作站,是以這裡的空間複雜度與節點的數量是一個數量級的好,接下來我們來看時間複雜度,那麼時間複雜度,我們依舊分為零件标法和了解矩陣法,首先我們來看總結矩陣法,一些确認反彈的時間複雜度依舊為達5為方,那麼它與變反色原理其實是類似的,在電反應詞當中,我們要通路每一個定點并且通路每個定點時我們要有一個for循環我們要找到他所有的方法就是是以都需要這樣方法。那就好啊,是以到所有的頂點都需要這樣的方法去找到明星經典時,那麼它的時間複雜度則為達到濰坊,這就是導入濰坊的本來方法,那麼離線标法也是與bfs是一樣的,它是刀v加e就是零點的數量級加上e的數量級,那麼它的方法和原理也與bfs是一樣的,1就是我們要通路所有的定點,也要通過邊通路所有的連接配接頂點,是以是w5b加e好,這就是dfs的算法性能,接下來我們學習深度優先生成數,那麼它與廣播線上上述其實是類似的,也就是說在深度奠定的過程當中,我們可以得到這樣一顆生長的樹或者是生成的森林,稱為深度有限生成樹,或者是生成森林,我們來看一個剛剛我們舉的那一個例子,這是一個有相同的例子,我們依舊對它從0點a開始,深度優先便利。大家看,因為我們是從頂點a出發的,然後我們通路了頂點c,那麼我們就從頂點c出發,通路了他的一個臨界點點的點d點點d沒有任何的一些經典,是以我們通路了點點c的下一個的一些經典的免疫,這樣我們就生成了第1個這樣一個有效圖,接着我們用循環的從頂點b開始進行通路,然後通路了定點b,這樣我們就得到了第2個有效圖,那麼這兩個圖組合在一起就是該有向圖的生成,森林那麼深度就先生成數與廣東線上的數是一樣的,也是當我們采用一些軍事法師,它是唯一的采用一些表法是它是不唯一的原理,與國外搜尋也是一樣的,因為那些表法我們在生成它的邊表時,根據輸入順序的不同,他身上編表也會不同。那邊表示根據輸入順序的不同,它生成的編表也會不同,和最後面讨論一個問題,就是便利與聯通性的問題,如何通過便利來判斷該圖的關聯性,我們來看這樣一個五象圖的例子,我們依舊從0.1出發,無論是略帶t型變反4還是d反c,我們都可以通路到該圖當中的所有的頂點,因為每個頂點時間都是聯通的,這是一個聯通圖,是以我們有這樣的結論,在無項目當中在任意節點出發進行一次病例,也就是說我們調用了一次bfs函數或者是dfs函數姐姐是一個四十每個頂點我們都需要一個頂點。對每一個定點進行調用一次bfs或者是dfF4,那麼通過這樣的方法我們就有下一個結論,就是在五象圖當中調用變電函數,也就是bfs或者是df函數函數的次數,則為聯通分量的個數,我們來看這一個5象圖,我們對頂點一調用了一遍dnf或者是bfs函數,那麼點點e可以通路它下面到1~7這些景點,接着我們通過放射管那麼1~7這些頂點,因為它已經被标記為已被否定過了,是以它們不再調用b反c或者是d反c了,我們直到0.8,那麼0.8和0.9此時還是沒有被标記為已被通路的,是以我們循環到0.8時,隻會對它調用bfs或者是電反4,那麼它是不是把0.8和0.9然後一到七。然後1~7是不是為一組啊,這樣我們就得到了兩條點的分量,是以我們說調用的次數被連通分量的個數好,這就是第2個結論,好可能同學們會發現,剛剛的那兩個結論都是在5象圖當中,它的前提條件一定都是5象圖,那麼在有項目當中會有類似的結論嗎?我們來看一下,這是一個比上圖的例子,我們從初始零點b出發開始進行,深度有限搜尋,是不是可以仿照它所有的頂點啊,得到這樣一個生成數,但是可以通路到所有的零件代表着它是一個牆面通道圖嗎,但是不是的,這個例子是不是不是一個财通的圖啊?也就是說可以通路到所有零點,隻是代表該頂點到剩下的其他的頂點有這樣一條有效的路徑,而并不能代表它的源頭是一個牆面上的毒是以這是第一個結論。來看第2個結論,那麼這裡我們從頂點a為初始零點開始進行深度優先搜尋,那麼在第1個函數的負号循環當中,是不是也調用了兩次dfs啊?第1次是針對于頂點a來講的,第2次調用是輸的是0點d的編号,那麼這兩次可以代表着該有象圖的強硬方向的個數吧,答案是不是?不是的,是不是與該有相同的前面的分項個數完全的沒有關系啊,是以第2個結論其實也是不成立的,是以在有效的當中無論是bfs還是dfs都沒有上述在5項圖當中的這兩個結論,其實非常好了解,在無效當中我從某一個頂點出發到達另一個頂點,是不是反過來也可以從另一個頂點到達該初始頂點啊?但是在有項目當中是不是就沒有這樣的特點了吓到出發是以也就是沒有。路徑,是以也就是沒有類似結論的原因好到本級,特别是我們學完了所有有關圖的基礎知識,接下來我們就來總結一下我學習了哪些重要的幾個概念,首先我們來看圖的邏輯節課,我們學習了圖的定義,在途的電影當中,我們強調圖的頂點集已經是一個非空到有限集這裡的飛控則表示圖當中一定是有頂點的,而邊境是可以飛空的,也就是說圖當中是可以沒有邊的好,這就是圖的定義,接下來我們講解了圖的相關性的概念,這又列舉了幾個比較重要的,首先我們講解了5相同和有相同,那麼在接下來學習當中大家發現每一個點其實我們都有分5項圖和有效圖來進行讨論好,然後我們學習了完全圖,大家要記着完全圖n個節點的邊的數量是多少,這個小考點然後學習了什麼事比較特殊的就是或者是尿。這裡強調的分量是針對于有鄉土來講的,而聯通分量是針對于五象圖來講的,這一塊的基本概念大家都特别清楚,然後我們學習了一種特殊的圖叫做網,也就是每條邊都帶有一定的權重的好學習,完了邏輯結構,我們學習了圖的層數結構以及它的相關操作,首先我們學習了兩種最基本的存儲結構就是連接配接矩陣,它是采用了順序存儲,然後水準接表,它采用的則是資料存儲,加上面是存儲,這個是運作數,存放的是頂點級,而液态存儲存放的是編輯好,接下來我們學習了識字念表和筆記,讀書表隻有兩種特殊的也是存儲結構造識字清單針對的是有效圖而連接配接多種表,針對的是存放五象圖有深度類似啊但是他名字一樣是從出發,然後最後我們相信了圖的便利,有深度一些便利,第二反應是它類似啊樹的心緒便利它與它的名字一樣,是從初始點點出發按深的方向。電力有深度一些便利dfs它類似啊數的心緒便利,它與它的名字一樣,是從初始點點出發,按深的方向進行一次的通路節點的,而第2個病例是廣東立便返色,他也說的層次周遊比較相似,那麼他的病曆方向則是按照圖的寬度的這個方向進行周遊的進行通路,所有定點的在廣度性病例當中我們利用了廣度性的病例bI反思到算法思想,實作了單元最短路徑這一問題的解決方法,好無論是廣東一些病例還是深度性病例,他們提供的都是我們一個解決問題的一個思想,我們可以運用它來解決實際問題,然後這就是本節課的全部内容。

6.3.2深度搜尋
408

繼續閱讀