Các phương pháp duyệt đồ thị
1CaCáùc phc phưương phng pháùp p duyeduyệät t đđoồàthò thò DDưương Anh ơng Anh ĐứĐức c ––NhaNhậäp môn Cap môn Cấáu truu trúùc Dc Dưữ liẽ liệäu vau vàøGiaGiảûi thuai thuậätt22CaCáùc phc phưương phng pháùp duyep duyệät t đđoồàthò thò DuyeDuyệät theo chiet theo chiềàu sâuu sâu(Depth(Depth--First Search)First Search)DuyeDuyệät theo chiet theo chiềàu rou rộängng(Breadth(Breadth--First Search) First Search) 2DepthDepth--First Search First Search (DFS) (DFS) DDưương Anh ơng Anh ĐứĐức c ––NhaNhậäp môn Cap môn Cấáu truu trúùc Dc Dưữ liẽ liệäu vau vàøGiaGiảûi thuai thuậätt44KhaKháùi niei niệämmDFSDFStrên motrên mộät t đđoồàthò vô hthò vô hưươớùng cũng giong cũng giốáng nhng nhưưkhakháùm pham pháùmomộät mê cung vơt mê cung vớùi moi mộät cuot cuộän chn chỉỉvavàømomộät t thuthùøng sơn ng sơn đđoỏûđđeểåđđaáùnh danh dấáuu,,tratráùnh bò lanh bò lạïcc TaTababắét t đđaầàu tu từừđỉđỉnhnhss,,buobuộäc c đđaầàu cuou cuộän chn chỉỉvavàøoossvavàøđđaáùnh danh dấáu u đỉđỉnh nanh nàøy lay làø““đđã thămã thăm”” Sau Sau đđoóùta ta đđaáùnh danh dấáuusslalàøđỉđỉnh hienh hiệän han hàønhnhuu 3DDưương Anh ơng Anh ĐứĐức c ––NhaNhậäp môn Cap môn Cấáu truu trúùc Dc Dưữ liẽ liệäu vau vàøGiaGiảûi thuai thuậätt55KhaKháùi niei niệämmBây giơBây giờø,,ta ta đđi theo cai theo cạïnhnh(u, v)(u, v)babấát kyt kỳø NeNếáu cau cạïnhnh(u, v)(u, v)dẫn chudẫn chúùng ta ng ta đđeếán n đỉđỉnhnh““đđã ã thămthăm””vv,,tataquayquaytrơtrởûvevềàu.u.NeNếáu u đỉđỉnhnhvvlalàøđỉđỉnh mơnh mớùii,,ta di chuyeta di chuyểån n đđeếánnvvvavàøkhông quên lăm cuokhông quên lăm cuộän chn chỉỉcucủûa ma mìình theonh theo ĐĐaáùnh nh dadấáu u đỉđỉnhnhvvlalàø““đđã thămã thăm”” ĐĐaặëttvvthathàønh nh đỉđỉnh hienh hiệän n hahàønh vanh vàølalặëp lap lạïi cai cáùc bc bưươớùc trc trưươớùcc DDưương Anh ơng Anh ĐứĐức c ––NhaNhậäp môn Cap môn Cấáu truu trúùc Dc Dưữ liẽ liệäu vau vàøGiaGiảûi thuai thuậätt66KhaKháùi niei niệämmCuoCuốái cui cùøngng,,ta cota cóùthethểåđđi i đđeếán mon mộät t đđieiểåm mam màøtatạïi i đđoóùtatấát cat cảûcacáùc cac cạïnh kenh kềàvơvớùi noi nóùđđeềàu dẫn chuu dẫn chúùng ta ng ta đđeếán n cacáùc c đỉđỉnhnh““đđã thămã thăm”” Khi Khi đđoóù,,ta sẽta sẽquayquaylui balui bằèng ng cacáùch cuoch cuộän ngn ngưươợïc cuoc cuộän chn chỉỉvavàøquayquaylalạïi cho i cho đđeếán n khi trơkhi trởûlalạïi moi mộät t đỉđỉnh kenh kềàvơvớùi moi mộät cat cạïnh conh còøn chn chưưa a đưđươợïc khac kháùm pham pháù LaLạïi tiei tiếáp tup tụïccquiquitrtrìình khanh kháùm pham pháùnhnhưưtrêntrên Khi chuKhi chúùng ta trơng ta trởûvevềàssvavàøkhông cokhông còøn can cạïnh nanh nàøo keo kềàvơvớùi noi nóùchchưưa bò khaa bò kháùm pham pháùlalàølulúùccDFSDFSddừừngng 4DDưương Anh ơng Anh ĐứĐức c ––NhaNhậäp môn Cap môn Cấáu truu trúùc Dc Dưữ liẽ liệäu vau vàøGiaGiảûi thuai thuậätt77ThuaThuậät toat toáùnnDepthDepth--First Search First Search Algorithm DFS(v);Input:Một đỉnh v của đồ thòOutput:Một cách gán nhãn cho các cạnh đã“được khám phá” hoặc “backedge”for (mọi cạnh e kề với v) doif cạnh e chưa được khám phá thenGọi w là đỉnh khác của eif đỉnh w là đỉnh mới thenGán nhãn e là “được khám phá”Gọi đệ qui DFS(w)elseGán nhãn e là “backedge”Algorithm DFS(v);Algorithm DFS(v);Input:Input:MoMộät t đỉđỉnhnhvvcucủûa a đđoồàthòthòOutput:Output:MoMộät cat cáùch gach gáùn nhãn cho can nhãn cho cáùc cac cạïnh nh đđãã““đưđươợïc khac kháùm pham pháù””hoahoặëcc““backedgebackedge””forfor((momọïi cai cạïnhnheekekềàvơvớùiiv)v)dodoififcacạïnhnheechchưưa a đưđươợïc khac kháùm pham pháùthenthenGoGọïiiwwlalàøđỉđỉnh khanh kháùc cuc củûaaeeififđỉđỉnhnhwwlalàøđỉđỉnh mơnh mớùiithenthenGaGáùn nhãnn nhãneelalàø““đưđươợïc khac kháùm pham pháù””GoGọïi i đđeệäqui qui DFS(w)DFS(w)elseelseGaGáùn nhãnn nhãneelalàø““backedgebackedge””DDưương Anh ơng Anh ĐứĐức c ––NhaNhậäp môn Cap môn Cấáu truu trúùc Dc Dưữ liẽ liệäu vau vàøGiaGiảûi thuai thuậätt88ThuaThuậät toat toáùnnDepthDepth--First Search First Search 5DDưương Anh ơng Anh ĐứĐức c ––NhaNhậäp môn Cap môn Cấáu truu trúùc Dc Dưữ liẽ liệäu vau vàøGiaGiảûi thuai thuậätt99XaXáùc c đđònh ònh đỉđỉnh kenh kềàtrongtrongDFS DFS KeKếát quat quảûcucủûaaDFSDFSphuphụïthuothuộäc vac vàøo cao cáùch ta choch ta chọïn n đỉđỉnh kenh kếátietiếápp DDưương Anh ơng Anh ĐứĐức c ––NhaNhậäp môn Cap môn Cấáu truu trúùc Dc Dưữ liẽ liệäu vau vàøGiaGiảûi thuai thuậätt1010XaXáùc c đđònh ònh đỉđỉnh kenh kềàtrongtrongDFS DFS NeNếáu ta bau ta bắét t đđaầàu tau tạïiiAAvavàøththửửcacạïnh nonh nốái i đđeếánnF,F,sau sau đđoóùđđeếánnB,B,rorồài i đđeếánnE, C,E, C,cuocuốái cui cùøng lang làøGGta ta đưđươợïcc:: 6DDưương Anh ơng Anh ĐứĐức c ––NhaNhậäp môn Cap môn Cấáu truu trúùc Dc Dưữ liẽ liệäu vau vàøGiaGiảûi thuai thuậätt1111XaXáùc c đđònh ònh đỉđỉnh kenh kềàtrongtrongDFS DFS NeNếáu cũng bau cũng bắét t đđaầàu tu từừAAnhnhưưng ng đđi theo tri theo trìình tnh tựự::tatậäp cap cáùc cac cạïnh nh đđã thămã thăm,,backedge vabackedge vàøcacáùc c đđieiểåm m đđeệäquiquisẽ khasẽ kháùc trc trưươớùcc. (. (Hãy tHãy tựựlalàøm vam vàøkiekiểåm chm chứứngng).).DDưương Anh ơng Anh ĐứĐức c ––NhaNhậäp môn Cap môn Cấáu truu trúùc Dc Dưữ liẽ liệäu vau vàøGiaGiảûi thuai thuậätt1212ThuaThuậät toat toáùnnDepthDepth--First Search First Search Bây giơBây giờøta sẽ xeta sẽ xéùt tt từừng bng bưươớùc cuc củûaaDFS quaDFS quavvíídudụïtrêntrên:: 7DDưương Anh ơng Anh ĐứĐức c ––NhaNhậäp môn Cap môn Cấáu truu trúùc Dc Dưữ liẽ liệäu vau vàøGiaGiảûi thuai thuậätt1313ThuaThuậät toat toáùnnDepthDepth--First Search First Search DDưương Anh ơng Anh ĐứĐức c ––NhaNhậäp môn Cap môn Cấáu truu trúùc Dc Dưữ liẽ liệäu vau vàøGiaGiảûi thuai thuậätt1414ThuaThuậät toat toáùnnDepthDepth--First Search First Search 8DDưương Anh ơng Anh ĐứĐức c ––NhaNhậäp môn Cap môn Cấáu truu trúùc Dc Dưữ liẽ liệäu vau vàøGiaGiảûi thuai thuậätt1515ThuaThuậät toat toáùnnDepthDepth--First Search First Search DDưương Anh ơng Anh ĐứĐức c ––NhaNhậäp môn Cap môn Cấáu truu trúùc Dc Dưữ liẽ liệäu vau vàøGiaGiảûi thuai thuậätt1616ThuaThuậät toat toáùnnDepthDepth--First Search First Search 9DDưương Anh ơng Anh ĐứĐức c ––NhaNhậäp môn Cap môn Cấáu truu trúùc Dc Dưữ liẽ liệäu vau vàøGiaGiảûi thuai thuậätt1717ThuaThuậät toat toáùnnDepthDepth--First Search First Search DDưương Anh ơng Anh ĐứĐức c ––NhaNhậäp môn Cap môn Cấáu truu trúùc Dc Dưữ liẽ liệäu vau vàøGiaGiảûi thuai thuậätt1818ThuaThuậät toat toáùnnDepthDepth--First Search First Search 10DDưương Anh ơng Anh ĐứĐức c ––NhaNhậäp môn Cap môn Cấáu truu trúùc Dc Dưữ liẽ liệäu vau vàøGiaGiảûi thuai thuậätt1919ThuaThuậät toat toáùnnDepthDepth--First Search First Search DDưương Anh ơng Anh ĐứĐức c ––NhaNhậäp môn Cap môn Cấáu truu trúùc Dc Dưữ liẽ liệäu vau vàøGiaGiảûi thuai thuậätt2020ThuaThuậät toat toáùnnDepthDepth--First Search First Search [...]... lie õ lie ä ä u va u va ø ø Gia Gia û û i thua i thua ä ä t t 43 43 Thua Thua ä ä t toa t toa ù ù n n Breadth Breadth - - First Search First Search Algorithm BFS(v); Input:Một đỉnh v của đồ thị Output:Một cách gán nhãn cho các cạnh đã “được khám phá” hoặc “crossedge” Khởi tạo hàng đợi L 0 để chứa đỉnh s i ← 0; while L i ≠∅do Tạo L i+1 = ∅ for mỗi đỉnh v ∈ L i do if cạnh e kề với v then Gọi w là đỉnh khác... ph c ph ư ư ơng pha ơng pha ù ù p p duye duye ä ä t t đ đ o o à à thị thị D D ư ư ơng Anh ơng Anh Đứ Đứ c c – – Nha Nha ä ä p môn Ca p môn Ca á á u tru u tru ù ù c D c D ö ö õ lie õ lie ä ä u va u va ø ø Gia Gia û û i thua i thua ä ä t t 2 2 Ca Ca ù ù c ph c ph ư ư ơng pha ơng pha ù ù p duye p duye ä ä t t đ đ o o à à thị thị Duye Duye ä ä t theo chie t theo chie à à u saâu u saâu (Depth (Depth - - First... va ø ø Gia Gia û û i thua i thua ä ä t t 44 44 Ca Ca ù ù c t c t í í nh cha nh cha á á t cu t cu û û a a BFS BFS Me Me ä ä nh nh đ đ e e à à : : Go Go ï ï i i G G la la ø ø mo mo ä ä t t đ đ o o à à thị vô h thị vô h ư ư ơ ơ ù ù ng trên ng trên đ đ o o ù ù th th ự ự c hie c hie ä ä n phe n phe ù ù p duye p duye ä ä t t BFS BFS ba ba é é t t đ đ a a à à u t u t ừ ừ đỉ đỉ nh nh s s . Ta . Ta co co ù ù : : Phe Phe ù ù p... thua i thua ä ä t t 32 32 Thua Thua ä ä t toa t toa ù ù n n Depth Depth - - First Search First Search Me Me ä ä nh nh đ đ e e à à : : Go Go ï ï i i G G la la ø ø mo mo ä ä t t đ đ o o à à thị vô h thị vô h ư ư ơ ơ ù ù ng ng , , trên trên đ đ o o ù ù ta sẽ th ta sẽ th ự ự c hie c hie ä ä n thao ta n thao ta ù ù c c DFS DFS vơ vơ ù ù i i đỉ đỉ nh ba nh ba é é t t đ đ a a à à u la u la ø ø s s th th ì ì : : 1. 1. Phe Phe ù ù p... ( ( BFS BFS ) ) duye duye ä ä t t qua qua toa toa ø ø n bo n bo ä ä ca ca ù ù c c đỉ đỉ nh thuo nh thuo ä ä c mo c mo ä ä t t tha tha ø ø nh phân liên thông cu nh phân liên thông cu û û a a đ đ o o à à thị va thị va ø ø xa xa ù ù c c đ đ ịnh ịnh đư đư ơ ơ ï ï c mo c mo ä ä t cây to t cây to á á i i đ đ a a ï ï i cu i cu û û a no a no ù ù vơ vơ ù ù i mo i mo ä ä t so t so á á thuo thuo ä ä c c t t í í nh... phe t phe ù ù p p DFS DFS ba ba é é t t đ đ a a à à u ta u ta ï ï i i s s sẽ sẽ chay vơ chay vơ ù ù i thơ i thơ ø ø i gian i gian O( O( n n S S + + m m S S ) ) ne ne á á u u : : Đ Đ o o à à thị thị đư đư ơ ơ ï ï c bie c bie å å u diễn ba u diễn ba è è ng ng CTDL CTDL da da ï ï ng danh sa ng danh sa ù ù ch ch ke ke à à . . Đ Đ a a ë ë t nhãn cho mo t nhãn cho mo ä ä t t đỉ đỉ nh... then Gán nhãn elà“được khám phá” Chèn w vào L i+1 else Gán nhãn e là “crossedge” i ← i + 1 Algorithm BFS(v); Algorithm BFS(v); Input: Input: Mo Mo ä ä t t đỉ đỉ nh nh v v cu cu û û a a đ đ o o à à thị thị Output: Output: Mo Mo ä ä t ca t ca ù ù ch ga ch ga ù ù n nhaõn cho ca n nhaõn cho ca ù ù c ca c ca ï ï nh nh đ đ ã ã “ “ đư đư ơ ơ ï ï c kha c kha ù ù m pha m pha ù ù ” ” hoa hoa ë ë c c “ “ crossedge crossedge ” ” Khơ Khơ û û i . Search First Search Algorithm DFS(v);Input:Một đỉnh v của đồ thòOutput:Một cách gán nhãn cho các cạnh đã“được khám phá” hoặc “backedge”for (mọi cạnh e