|
NecerBac 5級 2010-10-30 深度優(yōu)先搜索我也是深有其感啊,當年也是就結(jié)了很久
以下是我的看法和我的框架,你看看能不能幫到你
深度優(yōu)先搜索法有兩個顯著特點 (1)對已產(chǎn)生的結(jié)點按深度排序存儲,深度大的先得到擴展,即先產(chǎn)生它的子結(jié)點; (2)深度大的結(jié)點是后產(chǎn)生的,但先得到擴展,即“后產(chǎn)生先擴展”。因此該算法應該用堆棧作為的主要數(shù)據(jù)結(jié)構(gòu)存儲產(chǎn)生的結(jié)點:先把產(chǎn)生的數(shù)入棧,然后產(chǎn)生棧頂(即深度最大的結(jié)點)的子結(jié)點。子結(jié)點產(chǎn)生完后,出棧(pop)再產(chǎn)生棧頂?shù)淖咏Y(jié)點。
深度優(yōu)先搜索算法描述 程序?qū)崿F(xiàn)有兩種方式--遞歸與非遞歸。 遞歸過程為: 兩種方式本質(zhì)上是等價,但兩者也時有區(qū)別的。 1. 遞歸方式實現(xiàn)簡單,非遞歸方式較之比較復雜; 2. 遞歸方式需要利用??臻g,如果搜索量過大的話,可能造成棧溢出,所以在??臻g無法滿足的情況下,選用非遞歸實現(xiàn)方式較好。 其他回答(1)- + 5級 2010-10-30 dfs就是不斷向深層擴展 procedure dfs(x:longint); var i,j,k,t:longint; begin if x>深度 then begin 輸出結(jié)果; exit; end else 枚舉與x相連的點j; if j 可擴展 then begin 操作 ; dfs(j); 回溯; end; end;
|
|
|