void AssignNum(vertex V){ vertex M; Num[V] = counter++; Visitied[V] = True; for each W adjanct to V if(!Visited[W]) { Parent[W] = V; AssignNum[W]; }}void AssignLow(vertex V){ vertex W; Low[V] = Num[V]; for each W adjanct to V { if(Num[W]>Num[V]) { AssignLow(W); if(Low[W]>=Num[V])//這里不就一直成立,每個點都是割點 printf("V is an articulation point"); Low[V] = Min(Low[V],Low[W]); } else if(Parent[V]!=W)//V怎么會臨接到W呢? Low[V] = Min(Low[V],Nun[W]); }}數據結構書上將割點的部分,變量的意義在圖上。我不明白的是:assignlow中每個Low(W)=Num(W);而Num(W)是遞增的,那么assignlow中判斷就一直成立,每個都是割點啊、還有就是后面的那個特殊情況沒有理解。請大家幫忙講解一下。謝謝!
數據結構和算法分析中割點問題.
慕碼人8056858
2018-10-09 07:20:48