遍匈 / 方象潤更 / 伊、夕 /

8.4 夕議銭宥來!購准泣才嶷銭宥蛍楚

邪飛壓評肇競泣v 參式才v 屢購選議光円岻朔?繍夕議匯倖銭宥蛍楚蛍護撹曾倖賜曾倖參貧議銭宥蛍楚?夸各競泣v 葎乎夕議匯倖購准泣(articulation point) 。匯倖短嗤購准泣議銭宥夕各葎嶷銭宥夕(biconnected graph) 。壓嶷銭宥夕貧?販吭匯斤競泣岻寂崛富贋壓曾訳揃抄?夸壓評肇蝶倖競泣參式卆現噐乎競泣議光円扮匆音篤撒夕議銭宥來。飛壓銭宥夕貧崛富評肇k 倖競泣嘉嬬篤撒夕議銭宥來?夸各緩夕議銭宥業葎k。購准泣才嶷銭宥夕壓糞縞嶄熟謹哘喘。?堡撮r燦橳輅祥36斗璿腟塚宍珍m╋挽集滷f簣詰郭戎豹殖n淆枴把漬燦汶承祿氐峭辺六鰓盖粛盻臚道毅ii鴫屍囲賚詰概蔦鋠9ぷ?屍嵌脾r燦?戎嬪甗怍盃愾m┻庁t魑営殻?熟瀲鯡貽瑭板隔嶬km鮃惘嬖隠b耽揚埒百啀雉頂熟瀏撞清瘀丕市挌脾h彤?鷙翊5勅噉謬臑卦長惻輶濛敬莠導埠愾m┻鳥娃t鰓敖覚ÞĆ鯁?У椎蘓氐贈u蕙殂w啜長δ棆司樮囲譯iii間?t旁春窻丕h悞ť飮抖亰週辻吠簣滷ix氳萋道菊簫吠簍瘞亠長惱攀禺歓鼻?

箭泌?夕8.21 (a)嶄夕G7 頁銭宥夕?徽音頁嶷銭宥夕。夕嶄嗤膨倖購准泣A、B 才G 。飛評肇競泣B 參式侭嗤卆現競泣B 議円?G7 祥瓜蛍護撹眉倖銭宥蛍楚{A、C、F、L、M、J}、{G、H、I、K}才{D、E}。窃貌仇?飛評肇競泣A 賜D 賜G 參式侭卆現噐万断議円?夸G7 瓜蛍護撹曾倖銭宥蛍楚?喇緩?購准泣呀各葎護泣。
旋喘侮業單枠朴沫宴辛箔誼夕議購准泣?旺喇緩辛登艶夕頁倦頁嶷銭宥議。

夕8.21 (b)侭幣葎貫競泣A 竃窟侮單枠伏撹峯?夕嶄糞?燕幣峯円?倡?燕幣指円?軸音壓伏撹峯貧議円?。斤峯嶄販匯競泣v 遇冱?凪頃徨潤泣葎壓万岻朔朴沫欺議惣俊泣?遇凪褒牌潤泣才喇指円銭俊議怕枠潤泣頁壓万岻念朴沫欺議惣俊泣。喇侮業單枠伏撹峯辛誼竃曾窃購准泣議蒙來?

?1?飛伏撹峯議功嗤曾臣賜曾臣參貧議徨峯?夸緩功競泣駅葎購准泣。咀葎夕嶄音贋壓選潤音揖徨峯嶄競泣議円?咀緩?飛評肇功競泣?伏撹峯宴延撹伏撹畢爽。泌夕8.21(b)嶄議競泣A。
?2?飛伏撹峯嶄蝶倖掲匐徨競泣v?凪蝶臣徨峯議功才徨峯嶄議凪万潤泣譲短嗤峺?v 議怕枠議指円?夸v 葎購准泣。咀葎?飛評肇v?夸凪徨峯才夕議凪万何蛍瓜蛍護蝕栖。泌夕8.21(b)嶄議競泣B 才G 。

飛斤夕Graph?(V?{Edge}) 嶷仟協吶演煽扮議恵諒痕方visited?旺哈秘匯倖仟議痕方low?夸喇匯肝侮業單枠演煽宴辛箔誼銭宥夕嶄贋壓議侭嗤購准泣。

協吶visited[v]葎侮業單枠朴沫演煽銭宥夕扮恵諒競泣v 議肝會催?協吶?
飛斤噐蝶倖競泣v?贋壓頃徨潤泣w 拝low[w]?Rvisited[v]?夸乎競泣v 駅葎購准泣。咀葎輝w 頁v 議頃徨潤泣扮?low[w]?Rvisited[v]?燕苧w 式凪徨柾譲涙峺?v 議怕枠議指円。喇協吶辛岑?visited[v]峙軸葎v 壓侮業單枠伏撹峯議念會會双議會催?峪俶繍DFS 痕方嶄遊曾倖囂鞘個葎visited[v0]=++count?壓DFSTraverse 嶄譜兜峙count=1?軸辛?low[v]辛喇朔會演煽侮業單枠伏撹峯箔誼?遇v 壓朔會會双嶄議肝會才演煽扮曜竃DFS 痕方議肝會屢揖?喇緩俐個侮業單枠朴沫演煽議麻隈宴辛誼欺箔購准泣議麻隈?需麻隈8.12 才麻隈8.13?。
void FindArticul(ALGraph G)
{ /*銭宥夕G 參惣俊燕恬贋刈潤更?臥孀旺補竃G 貧畠何購准泣*/
count=1; /*畠蕉延楚count 喘噐斤恵諒柴方*/
visited[0]=1; /*譜協惣俊燕貧0 催競泣葎伏撹峯議功*/
for(i=1;i<G.vexnum;++i) /*凪噫競泣賓隆恵諒*/
visited[i]=0;
p=G.adjlist[0].first;
v=p->adjvex;
DFSArticul(g,v); /*貫競泣v 竃窟侮業單枠臥孀購准泣*/
if(count<G.vexnum) /*伏撹峯議功崛富嗤曾臣徨峯*/
{printf(0,G.adjlist[0].vertex); /*功頁購准泣?補竃*/
while(p->next)
{ p=p->next;
v=p->adjvex;
if(visited[v]==0) DFSArticul(g,v);
}
}
} /*FindArticul*/
麻隈8.12

void DFSArticul(ALGraph G,int v0)
/*貫競泣v0 竃窟侮業單枠演煽夕G?臥孀旺補竃購准泣*/
{ visited[v0]=min=++count; /*v0 頁及count 倖恵諒議競泣*/
for(p=G.adjlist[v0].firstedge; p; p=p->next;) /*斤v0 議耽倖惣俊泣殊臥*/
{ w=p->adjvex; /*w 葎v0 議惣俊泣*/
if(visited[w]==0) /*飛w 隆奚恵諒?夸w 葎v0 議頃徨*/
{ DFSArticul(G,w); /*卦指念箔誼low[w]*/
if(low[w]<min)min=low[w];
if(low[w]>=visited[v0]) printf(v0,G.adjlist[v0].vertex); /*補竃購准泣*/
}
else if(visited[w]<min) min=visited[w]; /*w 厮恵諒?w 頁v0 壓伏撹峯貧議怕枠*/
}
low[v0]=min;
}
麻隈8.13

箭泌?夕G7 嶄光競泣柴麻侭誼visited 才low 議痕方峙泌和侭双?
凪嶄J 頁及匯倖箔誼low 峙議競泣?喇噐贋壓指円?J,L??夸low[J]=Min{visited[J]、visited[L]}=2。乏宴戻匯鞘?貧峰麻隈嶄繍峺?褒牌議峯円匆心撹頁指円?喇噐音唹峒購准泣議登艶?咀緩?葎聞麻隈酒苧軟需?壓麻隈嶄短嗤曝艶岻。

喇噐貧峰麻隈議狛殻祥頁匯倖演煽議狛殻?咀緩?箔購准泣議扮寂鹸墫業挽葎O?n+e?。

AltStyle によって変換されたページ (->オリジナル) /