fbpx
วิกิพีเดีย

การค้นหาแบบจำกัดความลึก

การค้นแบบจำกัดความลึก หรือ การค้นหาแบบจำกัดความลึก (อังกฤษ: depth limited search) เป็นขั้นตอนวิธีทางวิทยาการคอมพิวเตอร์ที่ใช้ในการหาปมบนกราฟซึ่งได้ปรับปรุงจากการค้นหาเชิงลึก (depth first search) เพื่อใช้ในงานค้นหากราฟ ที่ต้องการประสิทธิภาพสูงขึ้น โดยขั้นตอนวิธีนี้ เป็นพื้นฐานของ Iterative deepening depth-first search ซึ่งเป็นขั้นตอนวิธีสำหรับการค้นหาสถานะ (state space search) ที่อาศัยการค้นหาเชิงลึกจำกัดแบบวนเพิ่มความลึกไปเรื่อยๆ เพื่อหาคำตอบที่ดีที่สุด

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

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

ขั้นตอนวิธี

  1. ระบุจุดยอดที่จะเริ่มการค้นหา และระบุความลึกสูงสุดที่ควรจะเป็น
  2. ตรวจสอบว่าจุดยอดนั้นเป็นคำตอบหรือไม่
    • ถ้าใช่ก็คืนค่าคำตอบนั้น
    • ถ้าไม่ใช่ก็ทำต่อไปยังข้อ 3
  3. ตรวจสอบว่าจุดยอดนั้นมีความลึกเกินค่าที่กำหนดหรือไม่
    • ถ้าเกินก็ไม่ต้องทำอะไร (ไม่มีคำตอบในวิถีนี้)
    • ถ้าไม่เกินก็ให้ทำการเรียกซ้ำข้อ 2 ตามปลายทางเส้นเชื่อมของกราฟในจุดยอดนั้นทั้งหมด เพื่อหาในความลึกในระดับถัดไปเรื่อย

รหัสเทียม

DLS(node, goal, depth) { if ( depth >= 0 ) { if ( node == goal ) return node 
 for each child in expand(node) DLS(child, goal, depth-1) } } 

คุณสมบัติ

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

จะมีความซับซ้อนด้านพื้นที่เป็น O( ) (โดย   คือจำนวนจุดยอดบนกราฟ) เนื่องจากใช้โครงสร้างแบบเดียวกันกับการค้นหาเชิงลึก

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

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

ความสมบูรณ์ (Completeness)

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

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

คำตอบที่ได้จากการค้นหาแบบนี้อาจจะยังไม่เหมาะสมที่สุด เนื่องจากยังคงมีปัญหาจากการค้นหาเชิงลึก ที่บางกรณีที่หากการไล่ค้นหากราฟนั้นเริ่มเดินทางจากเส้นเชื่อมที่ไม่ใช่เส้นเชื่อมที่ดีที่สุด แล้วค้นเจอคำตอบที่ต้องการ

ตัวอย่าง

พิจารณากราฟ

 

จากกราฟ หากเราเริ่มค้นหาจากจุดยอด A และต้องการค้นหาจุดยอด C การค้นหาด้วย Depth First Search โดยไม่ได้มีการจำว่าแวะผ่านจุดยอดใดไปแล้วบ้าง นั้นจะทำการค้นหาในวิถี A -> B -> D -> F -> E -> A -> B -> D -> F -> E -> A -> และวนไปเรื่อยๆ หาจุดยอดที่ต้องการไม่พบ แต่หากกำหนดว่าความลึกของเราจะไม่เกิน 3 เราจะได้การค้นหาเป็น A -> B -> D -> F -> E -> C ซึ่งเป็นจุดยอดที่ต้องการ โดยมีวิถีคือ A -> C

แต่อย่างไรก็ตาม หากเรากำหนดความลึกไว้ไม่เหมาะสม ก็อาจจะทำให้คำตอบที่ได้นั้นไม่เป็นคำตอบที่ดีที่สุด เช่น กำหนดความลึกไว้ที่ 3 และหาจุดยอด E เราจะได้การค้นว่าเป็น A -> B -> D -> F -> E ซึ่งจะได้วิถีของคำตอบคือ A -> B -> F -> E ซึ่งไม่ใช่วิถีที่ดีที่สุด ( A -> E) เป็นต้น

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

การค้นหาแบบจำกัดความลึก ใช้ในงานหลายๆ ด้าน แต่ส่วนมากนั้นจะใช้ในเรื่องเกี่ยวกับการทำปัญญาประดิษฐ์​ (Artificial Intelligence) เช่นการจำลองการเล่นหมากรุก โดยใช้งานร่วมที่ใช้ขั้นตอนวิธีอื่นๆ เพิ่มเติม เช่น minimax (วิธีการหาวิธีที่ดีที่สุด) หรือ alpha-beta (ขั้นตอนวิธีที่ใช้ลดการหาที่ไม่จำเป็น)

ขั้นตอนวิธีหนึ่งที่เกี่ยวข้องคือ Iterative deepening depth-first search ซึ่งเป็นขั้นตอนวิธีสำหรับการค้นหาสถานะ (state space search) ที่อาศัยการค้นหาแบบจำกัดความลึก โดยเพิ่มจำนวนความลึก ไปเรื่อยๆ จนกระทั่งเจอคำตอบ ซึ่งวิธีนี้จะทำให้สามารถรับประกันได้ว่าคำตอบที่เราได้มานั้นเป็นคำตอบที่ดีที่สุด (จะได้วิถีผ่านที่น้อยที่สุด เนื่องจากเราพิจารณาจากวิถีน้อยไปมากขึ้นเรื่อยๆ)

สรุป

ขั้นตอนวิธีนี้ เกิดจากปรับปรุงแก้ไขจากการค้นหาเชิงลึก เพื่อทำให้ประสิทธิภาพของขั้นตอนวิธีดีขึ้น กล่าวคือ ไม่เกิดการวนซ้ำไปเรื่อยๆ จนไม่มีที่สิ้นสุด แต่อย่างไรก็ตาม ยังมีข้อจำกัดอยู่ที่ว่าเราจะต้องเลือกความลึกของการค้นหาให้เหมาะสม จึงจะทำให้เกิดประสิทธิภาพ กำหนดความลึกไว้น้อย ก็อาจไม่เจอคำตอบ หรือกำหนดความลึกมาก ก็อาจจะได้คำตอบที่ยังไม่ดีที่สุด ซึ่งขั้นตอนวิธีนี้ได้ถูกแก้ไขปรับปรุงเป็น Iterative deepening depth-first search โดยอาศัยหลักการของขั้นตอนวิธีเชิงละโมบ ที่ค่อยๆ หาจากการกำหนดขีดความลึกไว้ที่ 0 แล้วเพิ่มขึ้นเรื่อยๆ จนกว่าเราจะเจอคำตอบต้องการได้

ดูเพิ่ม

อ้างอิง

  • Russell, Stuart J.; Norvig, Peter (2003), Artificial Intelligence: A Modern Approach (2nd ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN 0-13-790395-2
  • Depth-First: Chess Programming Wiki

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

การค, นหาแบบจำก, ดความล, การค, นแบบจำก, ดความล, หร, งกฤษ, depth, limited, search, เป, นข, นตอนว, ทางว, ทยาการคอมพ, วเตอร, ใช, ในการหาปมบนกราฟซ, งได, ปร, บปร, งจากการค, นหาเช, งล, depth, first, search, เพ, อใช, ในงานค, นหากราฟ, องการประส, ทธ, ภาพส, งข, โดยข, นต. karkhnaebbcakdkhwamluk hrux karkhnhaaebbcakdkhwamluk xngkvs depth limited search epnkhntxnwithithangwithyakarkhxmphiwetxrthiichinkarhapmbnkrafsungidprbprungcakkarkhnhaechingluk depth first search ephuxichinngankhnhakraf thitxngkarprasiththiphaphsungkhun odykhntxnwithini epnphunthankhxng Iterative deepening depth first search sungepnkhntxnwithisahrbkarkhnhasthana state space search thixasykarkhnhaechinglukcakdaebbwnephimkhwamlukiperuxy ephuxhakhatxbthidithisud enuxha 1 lksnaodythwip 2 khntxnwithi 3 rhsethiym 4 khunsmbti 4 1 khwamsbsxndanphunthi 4 2 khwamsbsxndanewla 4 3 khwamsmburn Completeness 4 4 karidkhatxbehmaasmthisud Optimality 5 twxyang 6 karprayuktich 7 srup 8 duephim 9 xangxing 10 aehlngkhxmulxunlksnaodythwip aekikhkarkhnhaaebbcakdkhwamluknn cakhlaykbkarkhnhaechingluk aetcamikarkahndkhidcakdkhxngkarkhnhawacakhnhaimekinkhwamlukethair hakekinkcahyudephuxpxngknkarkhnlukiperuxy sungcaepnkarhlikeliyngcudxxnkhxngkarkhnhaechingluk thixacekidcakkarwnipimmithisinsudhakkrafnnmiwngwnxyukhntxnwithi aekikhrabucudyxdthicaerimkarkhnha aelarabukhwamluksungsudthikhwrcaepn trwcsxbwacudyxdnnepnkhatxbhruxim thaichkkhunkhakhatxbnn thaimichkthatxipyngkhx 3 trwcsxbwacudyxdnnmikhwamlukekinkhathikahndhruxim thaekinkimtxngthaxair immikhatxbinwithini thaimekinkihthakareriyksakhx 2 tamplaythangesnechuxmkhxngkrafincudyxdnnthnghmd ephuxhainkhwamlukinradbthdiperuxyrhsethiym aekikhDLS node goal depth if depth gt 0 if node goal return node for each child in expand node DLS child goal depth 1 khunsmbti aekikhkhwamsbsxndanphunthi aekikh camikhwamsbsxndanphunthiepn O V displaystyle vert V vert ody V displaystyle vert V vert khuxcanwncudyxdbnkraf enuxngcakichokhrngsrangaebbediywknkbkarkhnhaechingluk khwamsbsxndanewla aekikh camikhwamsbsxndanewlaepn O V E displaystyle vert V vert vert E vert V displaystyle vert V vert khuxcanwncudyxdbnkraf aela E displaystyle vert E vert khuxcanwnesnechuxmbnkraf odyethakbkbaebbkarkhnhaechingluk enuxngcakichokhrngsrangaebbediywkn aetthwakarkhnaebbdwykrabwnkarnicakhnhakrafphayinrayathikahndiw imidkhnhakrafthnghmd khwamsmburn Completeness aekikh thungaemwakarkhnhaaebbnicathaimsamarthedintamesnechuxmkhxngkrafipxyangimmithisinsud hruxtidxyuinwngwnkhxngkrafenuxngcakmikarkahndkhxbekhtktam khwamsmburnkhxngkhatxbnncakhunxyukbkarkahndkhxbekhtkhxngkhwamluk hakkahndkhakhwamlukiwnxyekinipkxaccaimidkhatxb hruxhakkahndmakip kxaccaidkhatxbthiimdithisud karidkhatxbehmaasmthisud Optimality aekikh khatxbthiidcakkarkhnhaaebbnixaccayngimehmaasmthisud enuxngcakyngkhngmipyhacakkarkhnhaechingluk thibangkrnithihakkarilkhnhakrafnnerimedinthangcakesnechuxmthiimichesnechuxmthidithisud aelwkhnecxkhatxbthitxngkartwxyang aekikhphicarnakraf cakkraf hakeraerimkhnhacakcudyxd A aelatxngkarkhnhacudyxd C karkhnhadwy Depth First Search odyimidmikarcawaaewaphancudyxdidipaelwbang nncathakarkhnhainwithi A gt B gt D gt F gt E gt A gt B gt D gt F gt E gt A gt aelawniperuxy hacudyxdthitxngkarimphb aethakkahndwakhwamlukkhxngeracaimekin 3 eracaidkarkhnhaepn A gt B gt D gt F gt E gt C sungepncudyxdthitxngkar odymiwithikhux A gt Caetxyangirktam hakerakahndkhwamlukiwimehmaasm kxaccathaihkhatxbthiidnnimepnkhatxbthidithisud echn kahndkhwamlukiwthi 3 aelahacudyxd E eracaidkarkhnwaepn A gt B gt D gt F gt E sungcaidwithikhxngkhatxbkhux A gt B gt F gt E sungimichwithithidithisud A gt E epntnkarprayuktich aekikhkarkhnhaaebbcakdkhwamluk ichinnganhlay dan aetswnmaknncaichineruxngekiywkbkarthapyyapradisth Artificial Intelligence echnkarcalxngkarelnhmakruk odyichnganrwmthiichkhntxnwithixun ephimetim echn minimax withikarhawithithidithisud hrux alpha beta khntxnwithithiichldkarhathiimcaepn khntxnwithihnungthiekiywkhxngkhux Iterative deepening depth first search sungepnkhntxnwithisahrbkarkhnhasthana state space search thixasykarkhnhaaebbcakdkhwamluk odyephimcanwnkhwamluk iperuxy cnkrathngecxkhatxb sungwithinicathaihsamarthrbpraknidwakhatxbthieraidmannepnkhatxbthidithisud caidwithiphanthinxythisud enuxngcakeraphicarnacakwithinxyipmakkhuneruxy srup aekikhkhntxnwithini ekidcakprbprungaekikhcakkarkhnhaechingluk ephuxthaihprasiththiphaphkhxngkhntxnwithidikhun klawkhux imekidkarwnsaiperuxy cnimmithisinsud aetxyangirktam yngmikhxcakdxyuthiwaeracatxngeluxkkhwamlukkhxngkarkhnhaihehmaasm cungcathaihekidprasiththiphaph kahndkhwamlukiwnxy kxacimecxkhatxb hruxkahndkhwamlukmak kxaccaidkhatxbthiyngimdithisud sungkhntxnwithiniidthukaekikhprbprungepn Iterative deepening depth first search odyxasyhlkkarkhxngkhntxnwithiechinglaomb thikhxy hacakkarkahndkhidkhwamlukiwthi 0 aelwephimkhuneruxy cnkwaeracaecxkhatxbtxngkaridduephim aekikhkarkhnhaechinglukcakdaebbwnephimkhwamluk Iterative deepening depth first search xangxing aekikhRussell Stuart J Norvig Peter 2003 Artificial Intelligence A Modern Approach 2nd ed Upper Saddle River New Jersey Prentice Hall ISBN 0 13 790395 2 Depth First Chess Programming Wikiaehlngkhxmulxun aekikhtwxyangkarthangan Archived 2011 07 01 thi ewyaebkaemchchin twxyangkarnaipichinphasa Java Archived 2011 09 01 thi ewyaebkaemchchinekhathungcak https th wikipedia org w index php title karkhnhaaebbcakdkhwamluk amp oldid 9614382, wikipedia, วิกิ หนังสือ, หนังสือ, ห้องสมุด,

บทความ

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