ต้นไม้ Spanning ขั้นต่ำของ MST เข้าถึงได้ทั้งหมดโดย Kruskal และ Prim หรือไม่


13

ฉันเชื่อว่านี่เป็นความจริง แต่ก็ไม่สามารถพิสูจน์ได้อย่างเป็นทางการเช่นกัน แต่มันเป็นความจริงหรือไม่ที่ต้นไม้สแปนนิ่งขั้นต่ำสามารถเข้าถึงได้โดยใช้อัลกอริทึมของ Kruskal? ในทำนองเดียวกันนี่เป็นความจริงสำหรับอัลกอริทึมของ Prim หรือไม่

แก้ไข: เพื่อให้แม่นยำยิ่งขึ้นฉันต้องการทราบว่าได้รับ MST สำหรับกราฟน้ำหนักที่เชื่อมต่อและไม่ระบุทิศทางหรือไม่รับประกันว่ามีลำดับขั้นตอนโดยใช้ Kruskal หรือ Prim ซึ่งสร้าง MST นี้ เช่นมีตัวเลือกต่าง ๆ สำหรับ Kruskal เมื่อมีหลายขอบที่มีน้ำหนักเท่ากัน เช่นเดียวกันกับ Prim


2
คำตอบและการอภิปรายที่เกี่ยวข้องกับผลลัพธ์อื่นที่คุณอาจต้องการใช้เป็นบทสรุป
ราฟาเอล

3
ส่วนแรกของคำตอบของฉันพิสูจน์เรื่องนี้สำหรับอัลกอริธึมของ Kruskal และฉันคิดว่าอาร์กิวเมนต์ที่คล้ายกันน่าจะใช้ได้กับ Prim's: stackoverflow.com/a/13779113/47984
j_random_hacker

คำตอบ:


9

ตามที่ระบุโดยความคิดเห็นของ Raphaelและความคิดเห็นของ j_random_hackerคำตอบนั้นเป็นไปในเชิงบวก ในความเป็นจริงMST ใด ๆ สามารถเข้าถึงได้โดยอัลกอริทึม MST ใด ๆ ที่มีข้อยกเว้นเล็กน้อยบางอย่าง

สำหรับกราฟฟังก์ชันน้ำหนักสองค่าบนขอบทั้งหมด (เป็นจำนวนจริง) ถูกกำหนดเป็น (อ่อน) เปรียบเทียบได้ (กัน) ถ้าเราสามารถขยายการจัดเรียงอ่อนแออย่างเข้มงวดบนขอบที่เกิดจากฟังก์ชันน้ำหนักอย่างใดอย่างหนึ่งไปยังที่เข้มงวดเดียวกัน ยอดรวมการสั่งซื้อ นั่นคือเราสามารถกำหนดกฎการเลิกผูกที่สอดคล้องกันกับแต่ละฟังก์ชั่นน้ำหนักเพื่อให้ผลการเปรียบเทียบของสองขอบใด ๆ โดยฟังก์ชั่นน้ำหนักหนึ่งและกฎการผูกไทม์เหมือนกันกับผลลัพธ์โดยฟังก์ชั่นน้ำหนักอื่น ๆ และ ทำลายกฎG

บทแทรก 1 : ให้และเป็นฟังก์ชันน้ำหนักสองฟังก์ชัน ห้าข้อความต่อไปนี้เทียบเท่ากันw 2w1w2

  1. w 2w1และเข้ากันได้กับการเปรียบเทียบw2
  2. ในชุดของขอบใด ๆ มีเป็นเรื่องธรรมดาที่มีน้ำหนักเบาขอบโดยและw_2w 2w1w2
  3. ในชุดของขอบใดมีขอบที่หนักที่สุดที่พบบ่อยโดยและw_2w 2w1w2
  4. มีฟังก์ชั่นน้ำหนักที่กำหนดน้ำหนักที่แตกต่างให้กับขอบที่แตกต่างกันซึ่งสามารถใช้งานร่วมกับการเปรียบเทียบกับและได้w 3 w 1 w 2w3w3w1w2
  5. สำหรับขอบและๆ ที่ทำให้เบากว่าหนึ่งฟังก์ชั่นน้ำหนักจะเบาหรือเบากว่าโดยฟังก์ชั่นน้ำหนักอื่น ๆe 2 e 1 e 2 e 1 e 2e1e2e1e2e1e2

หลักฐานของบทแทรก 1 ถูกทิ้งไว้ว่าเป็นการออกกำลังกายที่ง่าย

บทแทรก 2 : Let สองฟังก์ชั่น้ำหนักและเป็นเช่นว่าถ้าแล้วe_1จากนั้นจะสามารถเปรียบเทียบได้w 2 e 1 < w 1 e 2 e 1 < w 2 e 2w1w2e1<w1e2e1<w2e2

(คำแนะนำถึง) การพิสูจน์: วิธีการหนึ่งคือตรวจสอบเงื่อนไข 5 ของบทแทรก 1 อีกวิธีหนึ่งคือตรวจสอบเงื่อนไข 2 ของบทแทรก 1 โดยแสดงว่าในชุดของขอบใด ๆ ขอบที่สว่างที่สุดโดยก็เป็นขอบที่เบาที่สุดด้วย ,w 1w2w1

อัลกอริธึมที่อิงการเปรียบเทียบบนกราฟหมายถึงการเข้ากันได้กับการเปรียบเทียบสำหรับฟังก์ชันน้ำหนักที่รองรับการเปรียบเทียบสอง (อ่อน ๆ ) บนขอบทั้งหมดเราสามารถเรียกใช้อัลกอริทึมด้วยฟังก์ชันน้ำหนักเดียวในวิธีที่สามารถทำซ้ำได้โดยไม่มีการเปลี่ยนแปลงใด ๆ ด้วยฟังก์ชั่นน้ำหนักอื่น ๆ โดยเฉพาะอย่างยิ่งการเรียกใช้อัลกอริทึมทั้งสองนั้นจะมีเอาต์พุตเหมือนกันG

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

อัลกอริทึม MST ที่เข้ากันได้กับการเปรียบเทียบสามารถค้นหา MST ทั้งหมด

เพื่อพิสูจน์ข้อเสนอข้างต้นเราก็ต้องปรับตัวเล็กน้อยส่วน "Kruskal สามารถค้นหาทุก MST" ในการคำนวณจำนวน MSTS สำหรับ MSTของมีฟังก์ชั่นน้ำหนักให้เลือกน้ำหนักบวกที่เบากว่าความแตกต่างที่แน่นอนระหว่างน้ำหนักขอบคู่ที่ไม่เท่ากัน ถ้าเราลบน้ำหนักจากน้ำหนักของแต่ละขอบในการที่โดยไม่ต้องเปลี่ยนน้ำหนักของขอบอื่น ๆ ที่เราได้รับฟังก์ชั่นใหม่น้ำหนักการพูด, w_2ถ้าขอบมีน้ำหนักเบากว่าโดย ,ต้องเบากว่าโดยG w 1 m w 2 e 1 e 2 w 1 e 1 e 2 w 2 w 1 w 2 m w 2 w 2 m w 1 w 2 m w 2 m w 1mGw1mw2e1e2w1e1e2w2เช่นกัน โดย lemma 2,และสามารถเข้ากันได้กับการเปรียบเทียบ โปรดทราบว่าเป็นที่ไม่ซ้ำกัน MST กับw_2(วิธีหนึ่งที่จะแสดงความเป็นเอกลักษณ์นี้คือการพิสูจน์ว่าเมื่อใดก็ตามที่น้ำหนักของขอบ MST หนึ่งจะลดลง MST ใด ๆ กับฟังก์ชั่นใหม่น้ำหนักจะต้องมีขอบที่.) ดังนั้นการทำงานใด ๆ ของอัลกอริทึมในจะพบม.เพราะขั้นตอนวิธีการเปรียบเทียบที่เข้ากันได้เราสามารถเรียกใช้อัลกอริทึมในลักษณะเดียวกันกับหรือw_2เนื่องจากการทำงานที่จะได้พบกับ MST ที่ไม่ซ้ำกัน,กับก็จะได้พบกับเช่นเดียวกับw_1w1w2mw2w2mw1w2mw2mw1

MST ของอัลกอริทึมทุกตัวสามารถใช้งานร่วมกันได้

ข้อเสนอดังกล่าวฟังดูเกินจริง โดยอัลกอริทึม MST ทุกครั้งฉันหมายถึงอัลกอริธึม MST ที่อิงการเปรียบเทียบทั่วไปที่ฉันได้เห็นไม่รวมถึงพยาธิสภาพที่เห็นได้ชัดเช่นผิดหรือมีขั้นตอนที่ไม่จำเป็น เนื่องจากอัลกอริทึม MST ที่เข้ากันได้กับการเปรียบเทียบสามารถค้นหา MST ทั้งหมดได้อัลกอริทึม MST ทุกตัวสามารถค้นหา MST ทั้งหมดได้ โดยเฉพาะอย่างยิ่งอัลกอริทึม MST สี่แบบคลาสสิกแต่ละแบบได้แก่ Borůvka's, Prim's, Kruskal และ reverse-delete algorithm สามารถค้นหาMSTทั้งหมดได้

ต่อไปนี้เป็นอัลกอริทึม MST ที่เข้ากันได้กับการเปรียบเทียบอีกสามรายการ

  • อัลกอริทึมลบขอบหนัก เริ่มต้นด้วยขอบทั้งหมด ค้นหาวัฏจักรซ้ำแล้วลบหนึ่งในขอบที่หนักที่สุดจนกระทั่งไม่มีรอบเหลือ
  • อัลกอริทึม Add-non-heavy-edge เริ่มต้นด้วยชุดที่ว่างเปล่า วนซ้ำผ่านขอบทั้งหมด เพิ่มแต่ละขอบและหากเกิดวัฏจักรขึ้นให้เอาขอบที่หนักที่สุดอันใดอันหนึ่งออก
  • อัลกอริทึมแทนที่ด้วยไฟแช็ก เริ่มต้นด้วยการใด ๆ ซึ่งประกอบไปด้วยต้นไม้Tค้นหาวงจรในบวกขอบไม่ได้อยู่ในทีถ้าขอบในวงจรที่เป็นหนักกว่าเอาจากและเพิ่มเพื่อTทำซ้ำจนกว่าเราจะไม่สามารถลดน้ำหนักของอีกต่อไปT อีทีทีอีทีทีอีT TTTeTtetTeTT

อัลกอริทึม MST ต่อไปนี้ไม่สามารถใช้ร่วมกันได้

  • อัลกอริธึมของ Kruskal ที่มีความลำเอียงระดับปริญญาซึ่งเป็นอัลกอริทึมของ Kruskal โดยมีการปรับเปลี่ยนดังต่อไปนี้ สมมติว่าเมื่อเราจะลบขอบด้วยน้ำหนักขั้นต่ำจากตามที่อธิบายไว้ในวิกิพีเดียของอัลกอริทึมของ Kruskalเรามีหลายขอบที่มีน้ำหนักต่ำสุดให้เลือก ขอบที่เราเลือกที่จะลบจะเป็นขอบที่มีผลรวมขององศาของจุดยอดสองจุดที่ใหญ่ที่สุดในบรรดาตัวเลือกทั้งหมด อัลกอริทึมนี้ไม่สามารถเปรียบเทียบกันได้เนื่องจากไม่พบ MSTของกราฟที่มีจุดยอดและขอบของน้ำหนักและขอบของน้ำหนัก{ a b , b c , c d } a , b , c a b 1 b c , c d , d b 2S{ab,bc,cd}a,b,cab1bc,cd,db2. อัลกอริทึมนี้ถือเป็นพยาธิวิทยาเนื่องจากการดัดแปลงที่ไม่จำเป็น

โปรดทราบว่าอัลกอริทึม MST ทั้งแปดที่กล่าวถึงข้างต้นนั้นใช้การเปรียบเทียบ

วิธีการแสดงอัลกอริทึมเข้ากันได้กับการเปรียบเทียบ?

ฉันจะใช้อัลกอริทึมของ Kruskal เป็นตัวอย่าง นี่คือคำอธิบายของอัลกอริทึมของ Kruskal (ในรสชาติที่สอง) บนถ่วงน้ำหนักไม่มีทิศทางกราฟGG

  • สร้างกราฟที่มีจุดยอดเดียวกันกับแต่ไม่มีขอบ ดังนั้นเป็นป่าของต้นไม้ที่แยกจากจุดสุดยอดเดียวG FFGF
  • สร้างชุดที่มีขอบทั้งหมดในกราฟS
  • ในขณะที่ไม่ว่างเปล่าและยังไม่ครอบคลุม FSF
    • เลือกขอบที่มีน้ำหนักขั้นต่ำจากSS
    • ลบขอบจากSS
    • หากขอบนั้นเชื่อมต่อต้นไม้สองต้นที่แตกต่างกันให้เพิ่มเข้าไปในป่ารวมสองต้นเข้าด้วยกันในต้นเดียวF
  • เอาท์พุทFF

ให้และสองเปรียบเทียบได้ฟังก์ชั่นน้ำหนักในGอัลกอริทึมของ Kruskal เกี่ยวข้องกับฟังก์ชั่นน้ำหนักเฉพาะในขั้นตอนที่ "เลือกขอบด้วยน้ำหนักขั้นต่ำจาก " เงื่อนไข 2 ของบทแทรก 1 บอกเราว่าเราสามารถเลือกขอบที่เบาที่สุดในขั้นตอนนี้ จากนั้นเราจะสามารถตรวจสอบได้อย่างง่ายดายโดยการเหนี่ยวนำให้เราสามารถทำงานทุกขั้นตอนในทางเดียวกันกับและw_2ดังนั้นอัลกอริทึมของ Kruskal จึงเข้ากันได้กับการเปรียบเทียบw 2 G S w 1 w 2w1w2GSw1w2

อัลกอริทึมสามารถใช้งานร่วมกันได้หากในแง่หลวมสามารถอธิบายได้ในสามขั้นตอน

  1. ทำสิ่งที่ไม่เกี่ยวข้องกับน้ำหนัก
  2. เลือกขอบที่มีน้ำหนักต่ำสุดในชุดของขอบที่กำหนด
  3. เลือกขอบที่มีน้ำหนักสูงสุดในชุดของขอบที่กำหนด

เงื่อนไขที่เพียงพอนี้ครอบคลุมอัลกอริทึมของ Bor Primvka, Prim's, Kruskal, reverse-delete, delete-heavy-edge และ add-non-heavy-edge โปรดทราบว่าเพื่อให้เหมาะสมกับสภาพที่เพียงพอนี้เราอาจต้องเปลี่ยนคำอธิบายบางอย่างของอัลกอริทึมโดยไม่กระทบกับชุด MST ที่เข้าถึงได้ เนื่องจากข้อยกเว้นของอัลกอริทึมของ Kruskal ที่มีความลำเอียงระดับปริญญาเป็นสิ่งที่เข้ากันได้กับการเปรียบเทียบขอให้ฉันเน้นย้ำเงื่อนไขที่เพียงพอนี้ไว้ในเงื่อนไขที่หลวม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.