8.1 夕議児云古廷
夕彜潤更頁匯嶽曳峯侘潤更厚鹸墫議掲?來潤更。壓峯彜潤更嶄?潤泣寂醤嗤蛍屶蚊肝購狼?耽匯蚊貧議潤泣峪嬬才貧匯蚊嶄議崛謹匯倖潤泣屢購?徽辛嬬才和匯蚊議謹倖潤泣屢購。遇壓夕彜潤更嶄?販吭曾倖潤泣岻寂脅辛嬬屢購?軸潤泣岻寂議惣俊購狼辛參頁販吭議。咀緩?夕彜潤更瓜喘噐宙峰光嶽鹸墫議方象斤嵆?壓徭隼親僥、芙氏親僥才繁猟親僥吉俯謹糟囃嗤彭掲械鴻刑議哘喘。
1?夕議協吶
夕(Graph)頁喇掲腎議競泣鹿栽才匯倖宙峰競泣岻寂購狼?D?D円?賜宀察?議鹿栽怏撹?凪侘塀晒協吶葎?
G??V?E?
V?{vi| vi∈dataobject}
E?{( vi,vj)| vi, vj ∈V ∧P(vi, vj)}
凪嶄?G 燕幣匯倖夕?V 頁夕G 嶄競泣議鹿栽?E 頁夕G 嶄円議鹿栽?鹿栽E 嶄P(vi,vj)燕幣競泣vi 才競泣vj 岻寂嗤匯訳岷俊銭??軸甜斤(vi,vj)燕幣匯訳円。夕8.1 公竃阻匯倖夕議幣箭?壓乎夕嶄?
鹿栽V?{v1,v2,v3,v4,v5}?
鹿栽E?{(v1,v2),(v1,v4),(v2,v3),(v3,v4),(v3,v5),(v2,v5)}。 2?夕議屢購宝囂
?1?涙?夕。壓匯倖夕嶄?泌惚販吭曾倖競泣更撹議甜斤?vi, vj?∈E 頁涙會議?軸競泣岻寂議銭?頁短嗤圭?議?夸各乎夕葎涙?夕。泌夕8.1 侭幣頁匯倖涙?夕G1。
?2?嗤?夕。壓匯倖夕嶄?泌惚販吭曾倖競泣更撹議甜斤?vi, vj?∈E 頁嗤會議?軸競泣岻寂議銭?頁嗤圭?議?夸各乎夕葎嗤?夕。泌夕8.2 侭幣頁匯倖嗤?夕G2?
G2=(V2,E2)
V2={v1,v2,v3,v4}
E2={<v1,v2>,<v1,v3>,<v3,v4>,<v4,v1>}
?3?競泣、円、察、察遊、察硫。夕嶄?方象圷殆vi 各葎競泣(vertex )?P(vi, vj)燕幣壓競泣vi 才競泣vj 岻寂嗤匯訳岷俊銭?。泌惚頁壓涙?夕嶄?夸各宸訳銭?葎円?泌惚頁壓嗤?夕嶄?匯違各宸訳銭?葎察。円喘競泣議涙會甜斤?vi, vj?栖燕幣?各競泣vi才競泣vj 札葎惣俊泣?円?vi, vj?卆現噐競泣vi 嚥競泣vj?察喘競泣議嗤會甜斤<vi, vj>栖燕幣?嗤會甜斤議及匯倖潤泣vi 瓜各葎兵泣?賜察硫??壓夕嶄祥頁音揮収遊議匯極?嗤會甜斤議及屈倖潤泣vj 瓜各葎嶮泣?賜察遊??壓夕嶄祥頁揮収遊議匯極。
?4?涙?頼畠夕。壓匯倖涙?夕嶄?泌惚販吭曾競泣脅嗤匯訳岷俊円屢銭俊?夸各乎夕葎涙?頼畠夕。辛參屬苧?壓匯倖根嗤n 倖競泣議涙?頼畠夕嶄?嗤n(n-1)/2 訳円。
?5?嗤?頼畠夕。壓匯倖嗤?夕嶄?泌惚販吭曾競泣岻寂脅嗤圭?札葎屢郡議曾訳察屢銭俊?夸各乎夕葎嗤?頼畠夕。壓匯倖根嗤n 倖競泣議嗤?頼畠夕嶄?嗤n(n-1)訳円。
?6?轄畜夕、蓮墓夕。飛匯倖夕俊除頼畠夕?各葎轄畜夕?各円方載富議夕葎蓮墓夕。
?7?競泣議業、秘業、竃業。競泣議業?degree?頁峺卆現噐蝶競泣v 議円方?宥械芝葎TD (v)。壓嗤?夕嶄?勣曝艶競泣議秘業嚥竃業議古廷。競泣v 議秘業頁峺參競泣葎嶮泣議察議方朕。芝葎ID (v)?競泣v 竃業頁峺參競泣v 葎兵泣議察議方朕?芝葎OD (v)。
嗤TD (v)=ID (v)?OD (v)。
箭泌?壓G1 嶄嗤?
TD(v1)=2 TD(v2)=3 TD(v3)=3 TD(v4)=2 TD(v5)=2
壓G2 嶄嗤?
ID(v1)=1 OD(v1)=2 TD(v1)=3
ID(v2)=1 OD(v2)=0 TD(v2)=1
ID(v3)=1 OD(v3)=1 TD(v3)=2
ID(v4)=1 OD(v4)=1 TD(v4)=2
辛參屬苧?斤噐醤嗤n 倖競泣、e 訳円議夕?競泣vi 議業TD (vi)嚥競泣議倖方參式円議方朕諾怎購狼? ?8?円議幡、利夕。嚥円嗤購議方象佚連各葎幡?weight?。壓糞縞哘喘嶄?幡峙辛參嗤蝶嶽根吶。曳泌?壓匯倖郡啌廓偏住宥?揃議夕嶄?円貧議幡峙辛參燕幣乎訳?揃議海業賜宀吉雫?斤噐匯倖窮徨?揃夕?円貧議幡峙辛參燕幣曾倖極泣岻寂議窮怦、窮送賜窮儿峙?斤噐郡啌垢殻序業議夕遇冱?円貧議幡峙辛參燕幣貫念匯倖垢殻欺朔匯倖垢殻侭俶勣議扮寂吉吉。円貧揮幡議夕各葎利夕賜利大?network?。泌夕8.3 侭幣?祥頁匯倖涙?利夕。泌惚円頁嗤圭?議揮幡夕?夸祥頁匯倖嗤?利夕。
?9?揃抄、揃抄海業。競泣vp 欺競泣vq 岻寂議揃抄?path?頁峺競泣會双vp,vi1,vi2, …,vim,vq.。凪嶄??vp,vi1??(vi1,vi2)?…,(vim,.vq)蛍艶葎夕嶄議円。揃抄貧円議方朕各葎揃抄海業。夕8.1 侭幣議涙?夕G1 嶄?v1→v4→v3→v5 嚥v1→v2→v5 頁貫競泣v1 欺競泣v5 議曾訳揃抄?揃抄海業蛍艶葎3 才2。
?10?指揃、酒汽揃抄、酒汽指揃。各vi 議揃抄葎指揃賜宀桟?cycle?。會双嶄競泣音嶷鹸竃孖議揃抄各葎酒汽揃抄。壓夕8.1 嶄?念中戻欺議v1 欺v5 議曾訳揃抄脅葎酒汽揃抄。茅及匯倖競泣嚥恷朔匯倖競泣岻翌?凪麿競泣音嶷鹸竃孖議指揃各葎酒汽指揃?賜宀酒汽桟。泌夕8.2 嶄議v1→v3→v4→v1。
?11?徨夕。斤噐夕G=?V?E??G’=?V’?E’??飛贋壓V’頁V 議徨鹿?E’頁E議徨鹿?夸各夕G’頁G 議匯倖徨夕。夕8.4 幣竃阻G2 才G1 議曾倖徨夕G’才G’’。 ?12?銭宥議、銭宥夕、銭宥蛍楚。壓涙?夕嶄?泌惚貫匯倖競泣vi 欺総匯倖競泣vj(i≠j)嗤揃抄?夸各競泣vi 才vj 頁銭宥議。泌惚夕嶄販吭曾競泣脅頁銭宥議?夸各乎夕頁銭宥夕。涙?夕議自寄銭宥徨夕各葎銭宥蛍楚。夕8.5 (a)嶄嗤曾倖銭宥蛍楚?泌夕8.5 (b)侭幣。
?13?膿銭宥夕、膿銭宥蛍楚。斤噐嗤?夕栖傍?飛夕嶄販吭匯斤競泣vi 才vj(i≠j)譲嗤貫匯倖競泣vi 欺総匯倖競泣vj 嗤揃抄?匆嗤貫vj 欺vi 議揃抄?夸各乎嗤?夕頁膿銭宥夕。嗤?夕議自寄膿銭宥徨夕各葎膿銭宥蛍楚。夕8.2 嶄嗤曾倖膿銭宥蛍楚?蛍艶頁{v1,v2,v3}才{v4}?泌夕8.6 侭幣。
?14?伏撹峯。侭僚銭宥夕G 議伏撹峯?頁G 議淫根凪畠何n 倖競泣議匯倖自弌銭宥徨夕。万駅協淫根拝叙淫根G 議n-1 訳円。夕8.4(b)G”幣竃阻夕8.1(a)嶄G1 議匯臣伏撹峯。壓伏撹峯嶄耶紗販吭匯訳奉噐圻夕嶄議円駅協氏恢伏指揃?咀葎仟耶紗議円聞凪侭卆現議曾倖競泣岻寂嗤阻及屈訳揃抄。飛伏撹峯嶄受富販吭匯訳円?夸駅隼撹葎掲銭宥議。
?15?伏撹畢爽。壓掲銭宥夕嶄?喇耽倖銭宥蛍楚脅辛誼欺匯倖自弌銭宥徨夕?軸匯臣伏撹峯。宸乂銭宥蛍楚議伏撹峯祥怏撹阻匯倖掲銭宥夕議伏撹畢爽。
?1? CreatGraph?G?補秘夕G 議競泣才円?秀羨夕G 議贋刈。
?2?DestroyGraph?G?瞥慧夕G 媼喘議贋刈腎寂。
?3?GetVex?G?v?壓夕G 嶄孀欺競泣v?旺卦指競泣v 議屢購佚連。
?4?PutVex?G?v?value?壓夕G 嶄孀欺競泣v?旺繍value 峙験公競泣v。
?5?InsertVex?G?v?壓夕G 嶄奐耶仟競泣v。
?6?DeleteVex?G?v?壓夕G 嶄?評茅競泣v 參式侭嗤才競泣v 屢購選議円賜察。
?7?InsertArc?G?v?w?壓夕G 嶄奐耶匯訳貫競泣v 欺競泣w 議円賜察。
?8?DeleteArc?G?v?w?壓夕G 嶄評茅匯訳貫競泣v 欺競泣w 議円賜察。
?9?DFSTraverse?G?v?壓夕G 嶄?貫競泣v 竃窟侮業單枠演煽夕G。
?10?BFSTtaverse?G?v?壓夕G 嶄?貫競泣v 竃窟鴻業單枠演煽夕G。
壓匯倖夕嶄?競泣頁短嗤枠朔肝會議?徽輝寡喘蝶匯嶽鳩協議贋刈圭塀贋刈朔?贋刈潤更嶄競泣議贋刈肝會更撹阻競泣岻寂議屢斤肝會?宸戦喘競泣壓夕嶄議了崔燕幣乎競泣議贋刈乏會?揖劔議祇尖?斤匯倖競泣議侭嗤惣俊泣?寡喘乎競泣議及i 倖惣俊泣燕幣嚥乎競泣屢惣俊議蝶倖競泣議贋刈乏會?壓宸嶽吭吶和?夕議児云荷恬珊嗤?
?11?LocateVex?G?u?壓夕G 嶄孀欺競泣u?卦指乎競泣壓夕嶄了崔。
?12?FirstAdjVex?G?v?壓夕G 嶄?卦指v 議及匯倖惣俊泣。飛競泣壓G 嶄短嗤惣俊競泣?夸卦指“腎”。
?13?NextAdjVex?G?v?w?壓夕G 嶄?卦指v 議?屢斤噐w 議?和匯倖惣俊競泣。飛w 頁v 議恷朔匯倖惣俊泣?夸卦指“腎”。
8.1.1 夕議協吶才宝囂
1?夕議協吶
夕(Graph)頁喇掲腎議競泣鹿栽才匯倖宙峰競泣岻寂購狼?D?D円?賜宀察?議鹿栽怏撹?凪侘塀晒協吶葎?
G??V?E?
V?{vi| vi∈dataobject}
E?{( vi,vj)| vi, vj ∈V ∧P(vi, vj)}
凪嶄?G 燕幣匯倖夕?V 頁夕G 嶄競泣議鹿栽?E 頁夕G 嶄円議鹿栽?鹿栽E 嶄P(vi,vj)燕幣競泣vi 才競泣vj 岻寂嗤匯訳岷俊銭??軸甜斤(vi,vj)燕幣匯訳円。夕8.1 公竃阻匯倖夕議幣箭?壓乎夕嶄?
鹿栽V?{v1,v2,v3,v4,v5}?
鹿栽E?{(v1,v2),(v1,v4),(v2,v3),(v3,v4),(v3,v5),(v2,v5)}。 2?夕議屢購宝囂
?1?涙?夕。壓匯倖夕嶄?泌惚販吭曾倖競泣更撹議甜斤?vi, vj?∈E 頁涙會議?軸競泣岻寂議銭?頁短嗤圭?議?夸各乎夕葎涙?夕。泌夕8.1 侭幣頁匯倖涙?夕G1。
?2?嗤?夕。壓匯倖夕嶄?泌惚販吭曾倖競泣更撹議甜斤?vi, vj?∈E 頁嗤會議?軸競泣岻寂議銭?頁嗤圭?議?夸各乎夕葎嗤?夕。泌夕8.2 侭幣頁匯倖嗤?夕G2?
G2=(V2,E2)
V2={v1,v2,v3,v4}
E2={<v1,v2>,<v1,v3>,<v3,v4>,<v4,v1>}
?3?競泣、円、察、察遊、察硫。夕嶄?方象圷殆vi 各葎競泣(vertex )?P(vi, vj)燕幣壓競泣vi 才競泣vj 岻寂嗤匯訳岷俊銭?。泌惚頁壓涙?夕嶄?夸各宸訳銭?葎円?泌惚頁壓嗤?夕嶄?匯違各宸訳銭?葎察。円喘競泣議涙會甜斤?vi, vj?栖燕幣?各競泣vi才競泣vj 札葎惣俊泣?円?vi, vj?卆現噐競泣vi 嚥競泣vj?察喘競泣議嗤會甜斤<vi, vj>栖燕幣?嗤會甜斤議及匯倖潤泣vi 瓜各葎兵泣?賜察硫??壓夕嶄祥頁音揮収遊議匯極?嗤會甜斤議及屈倖潤泣vj 瓜各葎嶮泣?賜察遊??壓夕嶄祥頁揮収遊議匯極。
?4?涙?頼畠夕。壓匯倖涙?夕嶄?泌惚販吭曾競泣脅嗤匯訳岷俊円屢銭俊?夸各乎夕葎涙?頼畠夕。辛參屬苧?壓匯倖根嗤n 倖競泣議涙?頼畠夕嶄?嗤n(n-1)/2 訳円。
?5?嗤?頼畠夕。壓匯倖嗤?夕嶄?泌惚販吭曾競泣岻寂脅嗤圭?札葎屢郡議曾訳察屢銭俊?夸各乎夕葎嗤?頼畠夕。壓匯倖根嗤n 倖競泣議嗤?頼畠夕嶄?嗤n(n-1)訳円。
?6?轄畜夕、蓮墓夕。飛匯倖夕俊除頼畠夕?各葎轄畜夕?各円方載富議夕葎蓮墓夕。
?7?競泣議業、秘業、竃業。競泣議業?degree?頁峺卆現噐蝶競泣v 議円方?宥械芝葎TD (v)。壓嗤?夕嶄?勣曝艶競泣議秘業嚥竃業議古廷。競泣v 議秘業頁峺參競泣葎嶮泣議察議方朕。芝葎ID (v)?競泣v 竃業頁峺參競泣v 葎兵泣議察議方朕?芝葎OD (v)。
嗤TD (v)=ID (v)?OD (v)。
箭泌?壓G1 嶄嗤?
TD(v1)=2 TD(v2)=3 TD(v3)=3 TD(v4)=2 TD(v5)=2
壓G2 嶄嗤?
ID(v1)=1 OD(v1)=2 TD(v1)=3
ID(v2)=1 OD(v2)=0 TD(v2)=1
ID(v3)=1 OD(v3)=1 TD(v3)=2
ID(v4)=1 OD(v4)=1 TD(v4)=2
辛參屬苧?斤噐醤嗤n 倖競泣、e 訳円議夕?競泣vi 議業TD (vi)嚥競泣議倖方參式円議方朕諾怎購狼? ?8?円議幡、利夕。嚥円嗤購議方象佚連各葎幡?weight?。壓糞縞哘喘嶄?幡峙辛參嗤蝶嶽根吶。曳泌?壓匯倖郡啌廓偏住宥?揃議夕嶄?円貧議幡峙辛參燕幣乎訳?揃議海業賜宀吉雫?斤噐匯倖窮徨?揃夕?円貧議幡峙辛參燕幣曾倖極泣岻寂議窮怦、窮送賜窮儿峙?斤噐郡啌垢殻序業議夕遇冱?円貧議幡峙辛參燕幣貫念匯倖垢殻欺朔匯倖垢殻侭俶勣議扮寂吉吉。円貧揮幡議夕各葎利夕賜利大?network?。泌夕8.3 侭幣?祥頁匯倖涙?利夕。泌惚円頁嗤圭?議揮幡夕?夸祥頁匯倖嗤?利夕。
?9?揃抄、揃抄海業。競泣vp 欺競泣vq 岻寂議揃抄?path?頁峺競泣會双vp,vi1,vi2, …,vim,vq.。凪嶄??vp,vi1??(vi1,vi2)?…,(vim,.vq)蛍艶葎夕嶄議円。揃抄貧円議方朕各葎揃抄海業。夕8.1 侭幣議涙?夕G1 嶄?v1→v4→v3→v5 嚥v1→v2→v5 頁貫競泣v1 欺競泣v5 議曾訳揃抄?揃抄海業蛍艶葎3 才2。
?10?指揃、酒汽揃抄、酒汽指揃。各vi 議揃抄葎指揃賜宀桟?cycle?。會双嶄競泣音嶷鹸竃孖議揃抄各葎酒汽揃抄。壓夕8.1 嶄?念中戻欺議v1 欺v5 議曾訳揃抄脅葎酒汽揃抄。茅及匯倖競泣嚥恷朔匯倖競泣岻翌?凪麿競泣音嶷鹸竃孖議指揃各葎酒汽指揃?賜宀酒汽桟。泌夕8.2 嶄議v1→v3→v4→v1。
?11?徨夕。斤噐夕G=?V?E??G’=?V’?E’??飛贋壓V’頁V 議徨鹿?E’頁E議徨鹿?夸各夕G’頁G 議匯倖徨夕。夕8.4 幣竃阻G2 才G1 議曾倖徨夕G’才G’’。 ?12?銭宥議、銭宥夕、銭宥蛍楚。壓涙?夕嶄?泌惚貫匯倖競泣vi 欺総匯倖競泣vj(i≠j)嗤揃抄?夸各競泣vi 才vj 頁銭宥議。泌惚夕嶄販吭曾競泣脅頁銭宥議?夸各乎夕頁銭宥夕。涙?夕議自寄銭宥徨夕各葎銭宥蛍楚。夕8.5 (a)嶄嗤曾倖銭宥蛍楚?泌夕8.5 (b)侭幣。
?13?膿銭宥夕、膿銭宥蛍楚。斤噐嗤?夕栖傍?飛夕嶄販吭匯斤競泣vi 才vj(i≠j)譲嗤貫匯倖競泣vi 欺総匯倖競泣vj 嗤揃抄?匆嗤貫vj 欺vi 議揃抄?夸各乎嗤?夕頁膿銭宥夕。嗤?夕議自寄膿銭宥徨夕各葎膿銭宥蛍楚。夕8.2 嶄嗤曾倖膿銭宥蛍楚?蛍艶頁{v1,v2,v3}才{v4}?泌夕8.6 侭幣。
?14?伏撹峯。侭僚銭宥夕G 議伏撹峯?頁G 議淫根凪畠何n 倖競泣議匯倖自弌銭宥徨夕。万駅協淫根拝叙淫根G 議n-1 訳円。夕8.4(b)G”幣竃阻夕8.1(a)嶄G1 議匯臣伏撹峯。壓伏撹峯嶄耶紗販吭匯訳奉噐圻夕嶄議円駅協氏恢伏指揃?咀葎仟耶紗議円聞凪侭卆現議曾倖競泣岻寂嗤阻及屈訳揃抄。飛伏撹峯嶄受富販吭匯訳円?夸駅隼撹葎掲銭宥議。
?15?伏撹畢爽。壓掲銭宥夕嶄?喇耽倖銭宥蛍楚脅辛誼欺匯倖自弌銭宥徨夕?軸匯臣伏撹峯。宸乂銭宥蛍楚議伏撹峯祥怏撹阻匯倖掲銭宥夕議伏撹畢爽。
8.1.2 夕議児云荷恬
?1? CreatGraph?G?補秘夕G 議競泣才円?秀羨夕G 議贋刈。
?2?DestroyGraph?G?瞥慧夕G 媼喘議贋刈腎寂。
?3?GetVex?G?v?壓夕G 嶄孀欺競泣v?旺卦指競泣v 議屢購佚連。
?4?PutVex?G?v?value?壓夕G 嶄孀欺競泣v?旺繍value 峙験公競泣v。
?5?InsertVex?G?v?壓夕G 嶄奐耶仟競泣v。
?6?DeleteVex?G?v?壓夕G 嶄?評茅競泣v 參式侭嗤才競泣v 屢購選議円賜察。
?7?InsertArc?G?v?w?壓夕G 嶄奐耶匯訳貫競泣v 欺競泣w 議円賜察。
?8?DeleteArc?G?v?w?壓夕G 嶄評茅匯訳貫競泣v 欺競泣w 議円賜察。
?9?DFSTraverse?G?v?壓夕G 嶄?貫競泣v 竃窟侮業單枠演煽夕G。
?10?BFSTtaverse?G?v?壓夕G 嶄?貫競泣v 竃窟鴻業單枠演煽夕G。
壓匯倖夕嶄?競泣頁短嗤枠朔肝會議?徽輝寡喘蝶匯嶽鳩協議贋刈圭塀贋刈朔?贋刈潤更嶄競泣議贋刈肝會更撹阻競泣岻寂議屢斤肝會?宸戦喘競泣壓夕嶄議了崔燕幣乎競泣議贋刈乏會?揖劔議祇尖?斤匯倖競泣議侭嗤惣俊泣?寡喘乎競泣議及i 倖惣俊泣燕幣嚥乎競泣屢惣俊議蝶倖競泣議贋刈乏會?壓宸嶽吭吶和?夕議児云荷恬珊嗤?
?11?LocateVex?G?u?壓夕G 嶄孀欺競泣u?卦指乎競泣壓夕嶄了崔。
?12?FirstAdjVex?G?v?壓夕G 嶄?卦指v 議及匯倖惣俊泣。飛競泣壓G 嶄短嗤惣俊競泣?夸卦指“腎”。
?13?NextAdjVex?G?v?w?壓夕G 嶄?卦指v 議?屢斤噐w 議?和匯倖惣俊競泣。飛w 頁v 議恷朔匯倖惣俊泣?夸卦指“腎”。