fbpx
วิกิพีเดีย

การค้นหาในแนวกว้าง

ในทฤษฎีกราฟ การค้นหาตามแนวกว้าง (อังกฤษ: breadth-first search หรือย่อว่า BFS) คือขั้นตอนวิธีในการท่องกราฟอย่างหนึ่ง โดยในขณะที่กำลังท่องกราฟมายังจุดยอดหนึ่ง ๆ นั้น จะมีการกระทำสองอย่างคือ: (ก) เข้าเยี่ยมและตรวจสอบจุดยอดดังกล่าว (ข) เข้าถึงจุดยอดข้างเคียงของจุดยอดดังกลาว การท่องกราฟจะเริ่มต้นที่จุดยอดรากที่กำหนดและไปยังจุดยอดอื่น ๆ จนเกิดเป็นต้นไม้แบบทอดข้าม การท่องกราฟอีกรูปแบบที่คล้ายคลึงกันคือการค้นหาในแนวลึก

ภาพแสดงลำดับการค้นของการค้นตามแนวกว้าง

การค้นในลักษณะนี้ถูกใช้เป็นแนวคิดพื้นฐานในการแก้ปัญหาทฤษฏีกราฟรวมถึงการค้นในปริภูมิสถานะ

เนื่องจากมีลักษณะของการแวะผ่านปมไปทีละระดับ จึงเรียกอีกอย่างว่า การค้นทีละระดับ (Level-order search)

ลักษณะโดยทั่วไป

 
ภาพแสดงลำดับการค้นของการค้นตามแนวกว้าง

การค้นตามแนวกว้าง มีลักษณะการค้นหาลงไปทีละระดับ โดยการตรวจสอบระดับลูกทั้งหมดก่อน จึงลงไประดับถัดไป ซึ่งสามารถสร้างการค้นแบบนี้โดยใช้แถวคอย เพื่อให้ปมถูกค้นตามลำดับของระดับชั้น

เนื่องจากการค้นแบบนี้เป็นการค้นที่มีระบบ กล่าวคือไม่มีการตัดสินใจเลือกเส้นทางระหว่างการค้น แต่จะทำการค้นไปเรื่อยๆ ตามรูปแบบจนเจอคำตอบ จึงจัดอยู่ในกลุ่มของการค้นแบบ Blind Search หรือ Uniformed Search

ขั้นตอนวิธี

  1. เพิ่มปมเริ่มต้นลงในแถวคอย
  2. นำปมออกจากแถวคอย ทำสัญลักษณ์แสดงการแวะผ่านแล้ว จากนั้นตรวจสอบดังนี้
    • ถ้าเป็นปมที่สนใจหรือคำตอบ ให้ยุติการค้นหาและส่งคืนค่าผลลัพธ์
    • ทำการเพิ่มปมลูกที่ยังไม่เคยแวะผ่านทุกปมลงในแถวคอย
  3. หากแถวคอยว่าง แสดงว่าจบการค้นหา
  4. หากแถวคอยไม่ว่าง ให้กลับไปขั้นตอนที่ 2

codes

 
ภาพแสดงการเปลี่ยนสถานะของปมตามรหัสเทียม
เมื่อกำหนดสถานะของปมดังนี้
  • WHITE ปมยังไม่เคยถูกค้น
  • GRAY ปมอยู่ในแถวคอย
  • BLACK ปมถูกค้นเรียบร้อยแล้ว
 BFS(G(V,E), s) { for each v in V { color[v] <- WHITE; } Q = an empty queue; Q.enqueue(s); color[s] <- GRAY while (Q is not an empty queue) { u <- Q.dequeue(); color[u] <- BLACK; for(each v that adjacent with u) { if(color[v]=WHITE) { Q.enqueue(v); color[v] = GRAY; } } } } 

ตัวอย่าง

ภาพตัวอย่างแสดงการเชื่อมโยงของเมืองในประเทศโรมาเนีย
เมื่อใช้การค้นตามแนวกว้างกับกราฟนี้ จะได้ลำดับการค้นดังนี้
 Arad > Timisora > Zerind > Sibiu > Craivora > Oradea > Rimnicu > Fagaras > Pitesti > Bucharest 

คุณสมบัติ

ความซับซ้อนด้านพื้นที่

เมื่อกำหนดให้หนึ่งปมมีปมลูก b และกราฟมีความสูง h จะพบว่าในแต่ละระดับจะมีจำนวนปมทั้งสิ้น bh
ดังนั้นสามารถวิเคราะห์ความซับซ้อนของพื้นที่ได้เป็น O(bh)
นอกจากนี้ยังสามารถแทนความซับซ็อนของพื้นที่ในรูปของจำนวนปมคือ O(|V|) เมื่อ V แทนเซ็ตของปมในกราฟ

ความซับซ้อนด้านเวลา

พิจารณาลำดับการผ่านปมของการค้นตามแนวกว้างจะพบว่าในแต่ละครั้งของการค้นหา จะผ่านปมหนึ่งๆเพียงหนึ่งครั้งเท่านั้น ดังนั้นจึงใช้เวลาไม่เกิน O(|V|)
ในขณะเดียวกัน การผ่านเส้นเชื่อมในแต่ละครั้งของการค้นจะผ่านเพียงเส้นละหนึ่งครั้งเช่นกัน ดังนั้นจึงใช้เวลาไม่เกิน O(|E|)
ดังนั้นในกรณีเลวร้ายที่สุดของการค้นตามแนวกว้างที่ต้องผ่านทุกปมและทุกเส้นเชื่อม จะสามารถวิเคราะห์เวลาของการทำงานได้เป็น O(|V| + |E|)

ความสมบูรณ์

หากมีคำตอบหรือปมที่สนใจอยู่ในกราฟ ไม่ว่ากราฟนั้นจะเป็นกราฟอนันต์หรือไม่ การค้นตามแนวกว้างจะสามารถการันตีได้ว่าจะต้องเจอคำตอบเสมอ

การได้คำตอบเหมาะสมที่สุด

คำตอบแรกที่ได้จากการค้นหาตวามแนวกว้าง จะมีระยะห่างจากปมเริ่มต้นเป็นระยะทางสั้นที่สุดเสมอ (เมื่อวัดจากจำนวนเส้นเชื่อม)
แต่ในกรณีที่เป็นกราฟมีน้ำหนัก (Weighted Graph) คำตอบที่ได้อาจไม่ใช่ระยะทางสั้นสุด ซึ่งสามารถแก้ไขได้โดยการใช้การค้นหาตามค่าทุนอย่างมีเอกรูป

การประยุกต์ใช้งาน

การค้นตามแนวกว้างสามารถใช้ในการแก้ปัญหาต่างๆของทฤษฏีกราฟได้เช่น

  1. การหาจุดยอดภายในส่วนประกอบที่เชื่อมกัน
  2. หาวงจรอย่างง่าย ในกราฟ
  3. หาป่าไม้แผ่ขยาย ในกราฟ
  4. หาระยะทางสั้นสุดระหว่างสองปม เช่นขั้นตอนวิธีของพริมและขั้นตอนวิธีของไดค์สตรา
  5. ตรวจสอบความเป็นกราฟสองส่วน (Bipartiteness)
  6. ใช้ในขั้นตอนวิธีของเชนีย์
  7. ใช้ในขั้นตอนวิธีของฟอร์ด-เฟอลเกอสัน (Ford–Fulkerson method) ในการคำนวณการไหลสูงสุด (Maximum Flow) ในเครือข่ายการไหล (Flow Network)


อ้างอิง

  • Knuth, Donald E. (1997), The Art Of Computer Programming Vol 1. 3rd ed., Boston: Addison-Wesley, ISBN 0-201-89683-4
  • การออกแบบและวิเคราะห์อัลกอริทึม, 2010, ISBN 9786165511940 |first= missing |last= (help)
  • http://www.personal.kent.edu/~rmuhamma/Algorithms/MyAlgorithms/GraphAlgor/breadthSearch.htm
  • http://intelligence.worldofcomputing.net/ai-search/breadth-first-search.html Archived 2013-08-29 ที่ WebCite

แหล่งข้อมูลอื่น

การค, นหาในแนวกว, าง, ในทฤษฎ, กราฟ, การค, นหาตามแนวกว, าง, งกฤษ, breadth, first, search, หร, อย, อว, อข, นตอนว, ในการท, องกราฟอย, างหน, โดยในขณะท, กำล, งท, องกราฟมาย, งจ, ดยอดหน, จะม, การกระทำสองอย, างค, เข, าเย, ยมและตรวจสอบจ, ดยอดด, งกล, าว, เข, าถ, งจ, ดยอด. inthvsdikraf karkhnhatamaenwkwang xngkvs breadth first search hruxyxwa BFS khuxkhntxnwithiinkarthxngkrafxyanghnung odyinkhnathikalngthxngkrafmayngcudyxdhnung nn camikarkrathasxngxyangkhux k ekhaeyiymaelatrwcsxbcudyxddngklaw kh ekhathungcudyxdkhangekhiyngkhxngcudyxddngklaw karthxngkrafcaerimtnthicudyxdrakthikahndaelaipyngcudyxdxun cnekidepntnimaebbthxdkham karthxngkrafxikrupaebbthikhlaykhlungknkhuxkarkhnhainaenwlukphaphaesdngladbkarkhnkhxngkarkhntamaenwkwang karkhninlksnanithukichepnaenwkhidphunthaninkaraekpyhathvstikrafrwmthungkarkhninpriphumisthanaenuxngcakmilksnakhxngkaraewaphanpmipthilaradb cungeriykxikxyangwa karkhnthilaradb Level order search enuxha 1 lksnaodythwip 2 khntxnwithi 3 codes 4 twxyang 5 khunsmbti 5 1 khwamsbsxndanphunthi 5 2 khwamsbsxndanewla 5 3 khwamsmburn 5 4 karidkhatxbehmaasmthisud 6 karprayuktichngan 7 xangxing 8 aehlngkhxmulxunlksnaodythwip aekikh phaphaesdngladbkarkhnkhxngkarkhntamaenwkwang karkhntamaenwkwang milksnakarkhnhalngipthilaradb odykartrwcsxbradblukthnghmdkxn cunglngipradbthdip sungsamarthsrangkarkhnaebbniodyichaethwkhxy ephuxihpmthukkhntamladbkhxngradbchnenuxngcakkarkhnaebbniepnkarkhnthimirabb klawkhuximmikartdsiniceluxkesnthangrahwangkarkhn aetcathakarkhniperuxy tamrupaebbcnecxkhatxb cungcdxyuinklumkhxngkarkhnaebb Blind Search hrux Uniformed Searchkhntxnwithi aekikhephimpmerimtnlnginaethwkhxy napmxxkcakaethwkhxy thasylksnaesdngkaraewaphanaelw caknntrwcsxbdngni thaepnpmthisnichruxkhatxb ihyutikarkhnhaaelasngkhunkhaphllphth thakarephimpmlukthiyngimekhyaewaphanthukpmlnginaethwkhxy hakaethwkhxywang aesdngwacbkarkhnha hakaethwkhxyimwang ihklbipkhntxnthi 2codes aekikh phaphaesdngkarepliynsthanakhxngpmtamrhsethiym emuxkahndsthanakhxngpmdngniWHITE pmyngimekhythukkhn GRAY pmxyuinaethwkhxy BLACK pmthukkhneriybrxyaelwBFS G V E s for each v in V color v lt WHITE Q an empty queue Q enqueue s color s lt GRAY while Q is not an empty queue u lt Q dequeue color u lt BLACK for each v that adjacent with u if color v WHITE Q enqueue v color v GRAY twxyang aekikh phaphtwxyangaesdngkarechuxmoyngkhxngemuxnginpraethsormaeniy emuxichkarkhntamaenwkwangkbkrafni caidladbkarkhndngniArad gt Timisora gt Zerind gt Sibiu gt Craivora gt Oradea gt Rimnicu gt Fagaras gt Pitesti gt Bucharestkhunsmbti aekikhkhwamsbsxndanphunthi aekikh emuxkahndihhnungpmmipmluk b aelakrafmikhwamsung h caphbwainaetlaradbcamicanwnpmthngsin bh dngnnsamarthwiekhraahkhwamsbsxnkhxngphunthiidepn O bh nxkcakniyngsamarthaethnkhwamsbsxnkhxngphunthiinrupkhxngcanwnpmkhux O V emux V aethnestkhxngpminkrafkhwamsbsxndanewla aekikh phicarnaladbkarphanpmkhxngkarkhntamaenwkwangcaphbwainaetlakhrngkhxngkarkhnha caphanpmhnungephiynghnungkhrngethann dngnncungichewlaimekin O V inkhnaediywkn karphanesnechuxminaetlakhrngkhxngkarkhncaphanephiyngesnlahnungkhrngechnkn dngnncungichewlaimekin O E dngnninkrnielwraythisudkhxngkarkhntamaenwkwangthitxngphanthukpmaelathukesnechuxm casamarthwiekhraahewlakhxngkarthanganidepn O V E khwamsmburn aekikh hakmikhatxbhruxpmthisnicxyuinkraf imwakrafnncaepnkrafxnnthruxim karkhntamaenwkwangcasamarthkarntiidwacatxngecxkhatxbesmxkaridkhatxbehmaasmthisud aekikh khatxbaerkthiidcakkarkhnhatwamaenwkwang camirayahangcakpmerimtnepnrayathangsnthisudesmx emuxwdcakcanwnesnechuxm aetinkrnithiepnkrafminahnk Weighted Graph khatxbthiidxacimichrayathangsnsud sungsamarthaekikhidodykarichkarkhnhatamkhathunxyangmiexkrupkarprayuktichngan aekikhkarkhntamaenwkwangsamarthichinkaraekpyhatangkhxngthvstikrafidechn karhacudyxdphayinswnprakxbthiechuxmkn hawngcrxyangngay inkraf hapaimaephkhyay inkraf harayathangsnsudrahwangsxngpm echnkhntxnwithikhxngphrimaelakhntxnwithikhxngidkhstra trwcsxbkhwamepnkrafsxngswn Bipartiteness ichinkhntxnwithikhxngechniy ichinkhntxnwithikhxngfxrd efxlekxsn Ford Fulkerson method inkarkhanwnkarihlsungsud Maximum Flow inekhruxkhaykarihl Flow Network xangxing aekikhKnuth Donald E 1997 The Art Of Computer Programming Vol 1 3rd ed Boston Addison Wesley ISBN 0 201 89683 4 karxxkaebbaelawiekhraahxlkxrithum 2010 ISBN 9786165511940 first missing last help http www personal kent edu rmuhamma Algorithms MyAlgorithms GraphAlgor breadthSearch htm http intelligence worldofcomputing net ai search breadth first search html Archived 2013 08 29 thi WebCiteaehlngkhxmulxun aekikhkhxmmxns miphaphaelasuxekiywkb karkhnhainaenwkwangBreadth First Search in JAVA lingkesiy JAWAA Animation Breadth First Search lingkesiy http www cp eng chula ac th somchai ULearn Algorithms index htm http ww3 algorithmdesign net handouts BFS pdf Edmonds s Non Bipartite Matching Algorithm ekhathungcak https th wikipedia org w index php title karkhnhainaenwkwang amp oldid 9614390, wikipedia, วิกิ หนังสือ, หนังสือ, ห้องสมุด,

บทความ

, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม