ขั้นตอนวิธีโบรุฟกา

จากวิกิพีเดีย สารานุกรมเสรี

ขั้นตอนวิธีโบรุฟกา (อังกฤษ: 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] 

[แก้] การวิเคราะห์รหัสเทียม

ในแต่ละการวนของ while ต้อง

  • หา connected component ซึ่งสามารถหาได้ในเวลา O(|E|) โดยใช้การค้นหาเชิงลึกจำกัด
  • หาเส้นเชื่อมี่สั้นที่สุด สามารถหาได้ในเวลา O(|E|) โดยการเปรียบเทียบ ทุกเส้นเชื่อมของ v และ u กับเส้นเชื่อมที่สุดที่สุดของ v และเส้นเชื่อมที่สั้นที่สุดชอง u

จำนวนของ connected component จะลดลงโดยประมาณ 2 เท่าต่อการวนหนึ่งรอบ ดังนั้นจึงสามารถทราบได้ว่ามีการวนมากที่สุด log |V| ครั้ง ดังนั้น เวลาที่ใช้ทั้งหมดจึงเป็น O(|E| log |V|) [1]

[แก้] ขั้นตอนวิธีอื่นๆที่เกียวข้อง

ขั้นตอนวิธีสำหรับหาต้นไม้ทอดข้ามน้อยที่สุด นอกจากขั้นตอนวิธีนี้แล้วยังรวมไปด้วย ขั้นตอนวิธีครูสกาล และขั้นตอนวิธีพริม สำหรับขั้นตอนวิธีที่เร็วกว่านั้น เราสามารถคำนวณได้โดยใช้ขั้นตอนวิธีพริมและขั้นตอนวิธีโบรุฟการ่วมกัน ซึ่งจะสามารถคำนวณได้ในเวลา O(|E|)[3]

[แก้] อ้างอิง

เครื่องมือส่วนตัว

สิ่งที่แตกต่าง
การกระทำ
ป้ายบอกทาง
มีส่วนร่วม
พิมพ์/ส่งออก
เครื่องมือ
ภาษาอื่น