fbpx
วิกิพีเดีย

ขั้นตอนวิธีของครูสกาล

ขั้นตอนวิธีของครูสกาล (อังกฤษ: Kruskal's algorithm) เป็นขั้นตอนวิธีแบบละโมบในทฤษฎีกราฟ ที่ใช้หา ต้นไม้แบบทอดข้ามน้อยสุด (Minimum spanning tree) สำหรับกราฟเชื่อมโยงแบบมีน้ำหนัก นั้นหมายความว่าเราจะได้เซตย่อยของเส้นเชื่อมในต้นไม้ที่เชื่อมทุกๆปม โดยที่ผลรวมของน้ำหนักบนเส้นเชื่อมจะมีค่าน้อยที่สุด หากกราฟไม่เป็นกราฟเชื่อมโยง เราจะได้ ป่าแบบทอดข้ามน้อยสุด (คือต้นไม้แบบทอดข้ามน้อยสุดแต่ละต้นในกราฟ)

การจำลองการทำงานของขั้นตอนวิธีของครูสกาล

ขั้นตอนวิธีนี้ปรากฏครั้งแรกบนนิตยสารทางวิทยาศาสตร์ชื่อ Proceedings of the American Mathematical Society หน้า. 48-50 ในปี 1956, และเขียนโดย โจเซฟ ครูสกาล

และยังมีขั้นตอนวิธีสำหรับแก้ปัญหาแบบเดียวกัน เช่น ขั้นตอนวิธีของพริม ขั้นตอนวิธีการลบย้อนกลับ และ ขั้นตอนวิธีของโบรุฟกา

อธิบาย

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

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

รหัสเทียม

จากรหัสสามารถทำให้เกิดผลด้วยโครงสร้างข้อมูลแบบเซตไม่ต่อเนื่อง (disjoint-set data structure)

KRUSKAL(G): 1 A = ∅ 2 foreach v ∈ G.V: 3 MAKE-SET(v) 4 foreach (u, v) ordered by weight(u, v), increasing: 5 if FIND-SET(u) ≠ FIND-SET(v): 6 A = A ∪ {(u, v)} 7 UNION(u, v) 8 return A 

ประสิทธิภาพ

ถ้า E คือจำนวนเส้นเชื่อมในกราฟ และ V คือจำนวนของจุดยอด ขั้นตอนวิธีนี้สามารถทำงานได้ในเวลา O(E log E) หรือเท่ากับ O(E log V) โดยในทุกโครงสร้าข้อมูล เวลาการทำงานจะเท่าเทียมกันเพราะ:

  • E มีค่ามากที่สุดประมาณ   และ     นั่นคือ O(log V)
  • แต่ละจุดยอดเดี่ยวเป็นส่วนประกอบแยกของป่าแบบทอดข้ามน้อยสุด ถ้าเราไม่สนใจจุดยอดเดี่ยว เราจะได้ VE+1 ดังนั้น log V คือ O(log E)

เราสามารถเพิ่มประสิทธิภาพได้ดังนี้ เริ่มจากเรียงลำดับเส้นเชื่อมตามน้ำหนักใช้เวลา O(E log E) ขั้นตอนนี้อนุญาตให้ ลบเส้นเชื่อมที่มีน้ำหนักน้อยที่สุดจาก S เพื่อที่จะดำเนินการในเวลาคงที่ ขั้นตอนต่อไปเราใช้ ข้อมูลแบบเซตไม่ต่อเนื่อง เพื่อเก็บลู่ของจุดยอดต้องการการปฏิบัติการใน O(E) การดำเนินการ ทุกๆ โครงสร้างข้อมูลแบบเซตไม่ต่อเนื่อง สามารถทำได้ปฏิบัติการได้ใน O(E) การดำเนินการ ในเวลา O(E log V) ดังนั้นจะได้เวลารวม O(E log E) = O(E log V)

ถ้าได้เรียงลำดับเส้นเชื่อมก่อนแล้วหรือสามารถเรียงดำลับในเวลาเชิงเส้น (เช่น การเรียงลำดับแบบนับจำนวน (counting sort)) หรือ การเรียงลำดับแบบสมุฎฐาน (radix sort)) ขั้นตอนวิธีนี้ลดความซับซ้อนของโครงสร้างข้อมูลแบบเซตไม่ต่อเนื่อง เพื่อลดเวลาการทำงานใน O(E α(V)) เมื่อ α เป็นค่าที่มีอัตราการเติบโตน้อยมากๆ

ตัวอย่าง

ดาวน์โหลดข้อมูลตัวอย่าง 2012-07-16 ที่ เวย์แบ็กแมชชีน

รูปภาพ คำอธิบาย
  AD และ CE เป็นเส้นเชื่อมที่สั้นที่สุดมีความยาว 5 หน่วย แล้วทำการเลือก AD โดยพลการ และทำการเน้นเส้นเชื่อมนั้น
  CE เป็นเส้นเชื่อมที่สั้นที่สุด ณ ตอนนี้ที่ไม่เป็นวัฏจักรโดยมีความยาว 5 แล้วทำการเน้นเป็นเส้นเชื่อมที่สอง
  เส้นเชื่อมต่อไปคือ DF มีความยาว 6 หน่วย ได้ถูกเน้นตามวิธีการเดิม
  เส้นเชื่อมที่สั้นที่สุดต่อไปคือ AB และ BE ทั้งคือมีความยาว 7 หน่วย เลือก AB โดยใช้หลักพลการ เส้นเชื่อม BD ได้ถูกเน้นเป็นสีแดงเพราะมันอยู่ในแนวเดินระหว่าง B และ D อยู่แล้ว ดังนั้นถ้าเราเลือกจะเกิดวัฏจักรขึ้น (ABD)
  กระทำเช่นเดิมไปเรื่อยๆทำการเน้นเส้นเชื่อมที่สั้นที่สุดต่อไป BE ยาว 7 หน่วย และหลายๆเส้นเชื่อมจะถูกเน้นสีแดง: BC เพราะจะเกิดวงวน BCE DE เพราะจะเกิดวงวน DEBA และ FE เพราะจะเกิด FEBAD
  ในที่สุด เมื่อกระบวนการเสร็จสิ้นโดยเลือก EG ยาว 9 หน่วยก็จะได้ต้นไม้แบบทอดข้ามน้อยที่สุด

พิสูจน์ความถูกต้อง

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

ต้นไม้ทอดข้าม

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

ความต่ำสุด

เราจะแสดงว่าประพจน์ P เป็นจริงโดยใช้ อุปนัยเชิงคณิตศาสตร์ ถ้า F เป็นเซตของเส้นเชื่อมที่ถูกเลือกที่แต่ละระดับของขั้นตอนวิธี แล้วจะได้ต้นไม้แบบทอดข้ามน้อยที่สุดที่มี F อยู่ด้วย

  • ชัดเจนว่า P เป็นจริงตั้งแต่เริ่มต้น เมื่อ F เป็นเซตว่าง ทุกต้นไม้แบบทอดข้ามน้อยที่สุดจะเป็นเช่นนั้น และถ้ามีอย่างน้อยหนึ่งเส้นเชื่อมก็จะเป็นต้นไม้แบบทอดข้ามน้อยที่สุดเพราะเป็นกราฟเชื่อมโยงที่มีน้ำหนัก
  • สมมติให้ P เป็นจริงสำหรับบางเซตของเส้นเชื่อม F และให้ T เป็นต้นไม้แบบทอดข้ามน้อยที่สุดที่บรรจุ F ไว้ ถ้าเลือกเส้นเชื่อมถัดไป e ก็ยังอยู่ใน T ดังนั้น P เป็นจริงสำหรับ F + e มิฉะนั้น T + e จะมีวัฏจักร C และเส้นเชื่อมอื่น f ที่อยู่ใน C แต่ไม่อยู่ใน F (ถ้าไม่มีเส้นเชื่อม f เลยแล้ว e จะไม่อยู่เพิ่มเข้าไปใน F เพราะการกระทำนั้นจะทำให้เกิดวัฏจักร C) แล้ว Tf + e เป็นต้นไม้ และมีน้ำหนักเท่ากับ T เพราะ T เป็นมีน้ำหนักน้อยที่สุด และน้ำหนักของ f จะไม่น้อยไปกว่า e มิฉะนั้นขั้นตอนวิธีจะเลือก f แทน e ดังนั้น Tf + e คือต้นไม้แบบทอดข้ามน้อยที่สุด ที่มี F + e
  • ดังนั้นจากอุปนัยเชิงคณิตศาสตร์จึงสรุปได้ว่า P เป็นจริง เมื่อ F เป็นต้นไม้ทอดข้าม

ดูเพิ่ม

อ้างอิง

Kruskal's algorithm

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

  • Kruskal's algorithm explanation and example with c implementation
  • Download the example minimum spanning tree data. 2012-07-16 ที่ เวย์แบ็กแมชชีน
  • Animation of Kruskal's algorithm (Requires Java plugin)
  • download kruskal algorithm Implement with C++ and java(graphical)(Requires java 7+)
  • C# Implementation
  • Open source java graph library with implementation of Kruskal's algorithm
  • Auto-generated PowerPoint Slides for Teaching and Learning

นตอนว, ของคร, สกาล, งกฤษ, kruskal, algorithm, เป, นข, นตอนว, แบบละโมบในทฤษฎ, กราฟ, ใช, หา, นไม, แบบทอดข, ามน, อยส, minimum, spanning, tree, สำหร, บกราฟเช, อมโยงแบบม, ำหน, นหมายความว, าเราจะได, เซตย, อยของเส, นเช, อมในต, นไม, เช, อมท, กๆปม, โดยท, ผลรวมของน, ำหน. khntxnwithikhxngkhruskal xngkvs Kruskal s algorithm epnkhntxnwithiaebblaombinthvsdikraf thiichha tnimaebbthxdkhamnxysud Minimum spanning tree sahrbkrafechuxmoyngaebbminahnk nnhmaykhwamwaeracaidestyxykhxngesnechuxmintnimthiechuxmthukpm odythiphlrwmkhxngnahnkbnesnechuxmcamikhanxythisud hakkrafimepnkrafechuxmoyng eracaid paaebbthxdkhamnxysud khuxtnimaebbthxdkhamnxysudaetlatninkraf karcalxngkarthangankhxngkhntxnwithikhxngkhruskal khntxnwithinipraktkhrngaerkbnnitysarthangwithyasastrchux Proceedings of the American Mathematical Society hna 48 50 inpi 1956 aelaekhiynody ocesf khruskalaelayngmikhntxnwithisahrbaekpyhaaebbediywkn echn khntxnwithikhxngphrim khntxnwithikarlbyxnklb aela khntxnwithikhxngobrufka enuxha 1 xthibay 2 rhsethiym 3 prasiththiphaph 4 twxyang 5 phisucnkhwamthuktxng 5 1 tnimthxdkham 5 2 khwamtasud 6 duephim 7 xangxing 8 aehlngkhxmulxunxthibay aekikhsrangpa F estkhxngtnim thimicudyxdhruxpminkrafepntnim srangest S thibrrcuthukesnechuxminkrafiw inkhnathi S imepnestwang aela F yngimthxdkham lbesnechuxmthiminahnknxythisudcak S thaesnechuxmnnechuxmcudsxngcudthitangknbntnim aelwephimekhaipinpadngklawrwmtnimsxngtnihepntnediywemuxkhntxnwithisinsudlng pacaxyuinruppaaebbthxdkhamnxysudkhxngkraf thakrafepnkrafechuxmoyng padngklawcaprakxbkninrupkhxngtnimaebbthxdkhamnxysudrhsethiym aekikhcakrhssamarththaihekidphldwyokhrngsrangkhxmulaebbestimtxenuxng disjoint set data structure KRUSKAL G 1 A 2 b foreach b v G V 3 MAKE SET v 4 b foreach b u v ordered by weight u v increasing 5 b if b FIND SET u FIND SET v 6 A A u v 7 UNION u v 8 b return b Aprasiththiphaph aekikhtha E khuxcanwnesnechuxminkraf aela V khuxcanwnkhxngcudyxd khntxnwithinisamarththanganidinewla O E log E hruxethakb O E log V odyinthukokhrngsrakhxmul ewlakarthangancaethaethiymknephraa E mikhamakthisudpraman V 2 displaystyle V 2 aela log V 2 2 log V displaystyle log V 2 2 log V displaystyle nnkhux O log V aetlacudyxdediywepnswnprakxbaeykkhxngpaaebbthxdkhamnxysud thaeraimsniccudyxdediyw eracaid V E 1 dngnn log V khux O log E erasamarthephimprasiththiphaphiddngni erimcakeriyngladbesnechuxmtamnahnkichewla O E log E khntxnnixnuyatih lbesnechuxmthiminahnknxythisudcakSephuxthicadaeninkarinewlakhngthi khntxntxiperaich khxmulaebbestimtxenuxng ephuxekblukhxngcudyxdtxngkarkarptibtikarin O E kardaeninkar thuk okhrngsrangkhxmulaebbestimtxenuxng samarththaidptibtikaridin O E kardaeninkar inewlaO ElogV dngnncaidewlarwmO ElogE O ElogV thaideriyngladbesnechuxmkxnaelwhruxsamartheriyngdalbinewlaechingesn echn kareriyngladbaebbnbcanwn counting sort hrux kareriyngladbaebbsmudthan radix sort khntxnwithinildkhwamsbsxnkhxngokhrngsrangkhxmulaebbestimtxenuxng ephuxldewlakarthanganin O E a V emux a epnkhathimixtrakaretibotnxymaktwxyang aekikhdawnohldkhxmultwxyang Archived 2012 07 16 thi ewyaebkaemchchin rupphaph khaxthibay AD aela CE epnesnechuxmthisnthisudmikhwamyaw 5 hnwy aelwthakareluxk AD odyphlkar aelathakarennesnechuxmnn CE epnesnechuxmthisnthisud n txnnithiimepnwtckrodymikhwamyaw 5 aelwthakarennepnesnechuxmthisxng esnechuxmtxipkhux DF mikhwamyaw 6 hnwy idthukenntamwithikaredim esnechuxmthisnthisudtxipkhux AB aela BE thngkhuxmikhwamyaw 7 hnwy eluxk AB odyichhlkphlkar esnechuxm BD idthukennepnsiaedngephraamnxyuinaenwedinrahwang B aela D xyuaelw dngnnthaeraeluxkcaekidwtckrkhun ABD krathaechnedimiperuxythakarennesnechuxmthisnthisudtxip BE yaw 7 hnwy aelahlayesnechuxmcathukennsiaedng BC ephraacaekidwngwn BCE DE ephraacaekidwngwn DEBA aela FE ephraacaekid FEBAD inthisud emuxkrabwnkaresrcsinodyeluxk EG yaw 9 hnwykcaidtnimaebbthxdkhamnxythisudphisucnkhwamthuktxng aekikhkarphisucnprakxbipdwysxngswn khux swnaerkepnkarphisucnwakhntxnwithinisrangtnimaebbthxdkhamid swnthisxngkhuxphisucnwatnimthxdkhamdngklawminahnkrwmnxythisud tnimthxdkham aekikh ih P epnkrafechuxmoyngthiminahnk aelaih Y epnkrafyxykhxng P thisrangodykhntxnwithini Y immiwtckr mihnungtnimyxy aelaimmitnimsxngtnthiaetktangkn Y imsamarthimechuxmoyngid ephraa esnechuxmaerkthiphbcaechuxmsxngcudyxdin Y aelwcathukephimtamkhntxnwithi dngnn Y cungepntnimaebbthxdkhamkhxng P khwamtasud aekikh eracaaesdngwapraphcn P epncringodyich xupnyechingkhnitsastr tha F epnestkhxngesnechuxmthithukeluxkthiaetlaradbkhxngkhntxnwithi aelwcaidtnimaebbthxdkhamnxythisudthimi F xyudwy chdecnwa P epncringtngaeterimtn emux F epnestwang thuktnimaebbthxdkhamnxythisudcaepnechnnn aelathamixyangnxyhnungesnechuxmkcaepntnimaebbthxdkhamnxythisudephraaepnkrafechuxmoyngthiminahnk smmtiih P epncringsahrbbangestkhxngesnechuxm F aelaih T epntnimaebbthxdkhamnxythisudthibrrcu F iw thaeluxkesnechuxmthdip e kyngxyuin T dngnn P epncringsahrb F e michann T e camiwtckr C aelaesnechuxmxun f thixyuin C aetimxyuin F thaimmiesnechuxm f elyaelw e caimxyuephimekhaipin F ephraakarkrathanncathaihekidwtckr C aelw T f e epntnim aelaminahnkethakb T ephraa T epnminahnknxythisud aelanahnkkhxng f caimnxyipkwa e michannkhntxnwithicaeluxk f aethn e dngnn T f e khuxtnimaebbthxdkhamnxythisud thimi F e dngnncakxupnyechingkhnitsastrcungsrupidwa P epncring emux F epntnimthxdkhamduephim aekikhkhntxnwithikhxngidkhstra khntxnwithikhxngphrim khntxnwithikarlbyxnklb khntxnwithikhxngobrufkaxangxing aekikhKruskal s algorithmaehlngkhxmulxun aekikhKruskal s algorithm explanation and example with c implementation Download the example minimum spanning tree data Archived 2012 07 16 thi ewyaebkaemchchin Animation of Kruskal s algorithm Requires Java plugin download kruskal algorithm Implement with C and java graphical Requires java 7 C Implementation Open source java graph library with implementation of Kruskal s algorithm Auto generated PowerPoint Slides for Teaching and Learningekhathungcak https th wikipedia org w index php title khntxnwithikhxngkhruskal amp oldid 9561026, wikipedia, วิกิ หนังสือ, หนังสือ, ห้องสมุด,

บทความ

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