ขั้นตอนวิธีของโบรุฟกา
ลิงก์ข้ามภาษาในบทความนี้ มีไว้ให้ผู้อ่านและผู้ร่วมแก้ไขบทความศึกษาเพิ่มเติมโดยสะดวก เนื่องจากวิกิพีเดียภาษาไทยยังไม่มีบทความดังกล่าว กระนั้น ควรรีบสร้างเป็นบทความโดยเร็วที่สุด |
ขั้นตอนวิธีโบรุฟกา (อังกฤษ: Borůvka's algorithm) คือขั้นตอนวิธีสำหรับหาต้นไม้ทอดข้ามน้อยที่สุดในกราฟที่ทุกเส้นเชื่อมมีน้ำหนักไม่เท่ากัน
ประวัติที่มา
[แก้]ทฤษฏีนี้ได้จำหน่ายขึ้นในปี ค.ศ. 1962 โดย Otakar Borůvka เพื่อเป็นวิธีการสำหรับสร้างโครงข่ายไฟฟ้าที่มีประสิทธิภาพสำหรับ เขตมอเรเวีย-ไซลีเชีย เมืองออสตราวา ใน สาธารณรัฐเช็ก หลังจากนั้นขั้นตอนวิธีนี้ได้ถูกค้นพบอีกครั้งโดย Florek, Łukasiewicz, Perkal, Steinhaus, และ Zubrzycki ในปี ค.ศ. 1951 และค้นพบโดย Sollin ในปี ค.ศ. 1965 เนื่องจากว่า Sollin เป็นนักวิทยาศาสตร์คอมพิวเตอร์เพียงคนเดียวในที่กล่าวมาข้างต้นอาศัยอยู่ในประเทศที่ใช้ภาษาอังกฤษเป็นภาษาประจำชาติ ขั้นตอนวิธีนี้จึงมักถูกเรียกในอีกชื่อหนึ่งว่า ขั้นตอนวิธีโซลลิน
เนื้อหา
[แก้]ขั้นตอนวิธีนี้ถือว่าเป็นขั้นตอนวิธีแบบละโมบ เริ่มต้นจากการพิจารณาจุดยอดทีละจุดและทำการเลือกเส้นเชื่อมที่เชื่อมจุดยอดนั้นและจุดยอดใดๆที่มีน้ำหนักน้อยที่สุดและไม่ทำให้เกิดวัฏจักรโดยไม่คำนึงว่าเส้นเชื่อมนั้นได้ถูกเลือกไปแล้ว ทำเช่นนี้ไปเรื่อยๆจนกว่า จุดเชื่อมทุกจุดจะกลายเป็น ต้นไม้ทอดข้าม
โครงสร้างข้อมูล
[แก้]โครงสร้างข้อมูลที่สำคัญสำหรับขั้นตอนวิธีโบรุฟกา คือ กราฟที่จะใช้ต้องเป็นกราฟแบบไม่มีทิศทาง[1]
รหัสเทียม
[แก้]Given G = (V,E)
T = graph consisting of V with no edges while T has < n-1 edges do for each connected component C of T do e = min cost edge (v,u) s.t. v in C and u not in C T := T union {e}[2]
การวิเคราะห์รหัสเทียม
[แก้]ในแต่ละการวนของวงวนนั้น ต้อง
- หา connected component ซึ่งสามารถหาได้ในเวลา โดยใช้การค้นแบบจำกัดความลึก
- หาเส้นเชื่อมที่สั้นที่สุด สามารถหาได้ในเวลา โดยการเปรียบเทียบ ทุกเส้นเชื่อมของ และ กับเส้นเชื่อมที่สุดที่สุดของ และเส้นเชื่อมที่สั้นที่สุดชอง
จำนวนของ connected component จะลดลงโดยประมาณ 2 เท่าต่อการวนหนึ่งรอบ ดังนั้นจึงสามารถทราบได้ว่ามีการวนมากที่สุด ครั้ง ดังนั้น เวลาที่ใช้ทั้งหมดจึงเป็น [1]
ขั้นตอนวิธีอื่นๆที่แก้ไขปัญหาเดียวกัน
[แก้]ขั้นตอนวิธีสำหรับหาต้นไม้ทอดข้ามน้อยที่สุด นอกจากขั้นตอนวิธีนี้แล้วยังรวมไปด้วยขั้นตอนวิธีครูสกาลและขั้นตอนวิธีพริม สำหรับขั้นตอนวิธีที่เร็วกว่านั้น สามารถคำนวณได้โดยขั้นตอนวิธีแบบสุ่ม และใช้ขั้นตอนวิธีพริมและขั้นตอนวิธีโบรุฟการ่วมกัน ซึ่งจะสามารถคำนวณได้ในเวลา [3] สำหรับขั้นตอนวิธีเชิงกำหนดที่เร็วที่สุดก็ใช้ขั้นตอนวิธีโบรุฟการ่วมด้วย มีเวลาการทำงาน โดย เป็นฟังก์ชันผกผันของฟังก์ชันแอคเคอร์แมน
อ้างอิง
[แก้]- ↑ 1.0 1.1 เอกสารประกอบคำสอนขั้นตอนวิธีโบรุฟกา ของ University of California Irvine [ลิงก์เสีย]
- ↑ "เอกสารประกอบคำสอนขั้นตอนวิธีโบรุฟกา ของ University of Texas at Austin". คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2011-12-03. สืบค้นเมื่อ 2011-09-21.
- ↑ Boruvka's algorithm Articles and Information