ตามที่ระบุโดยความคิดเห็นของ Raphaelและความคิดเห็นของ j_random_hackerคำตอบนั้นเป็นไปในเชิงบวก ในความเป็นจริงMST ใด ๆ สามารถเข้าถึงได้โดยอัลกอริทึม MST ใด ๆ ที่มีข้อยกเว้นเล็กน้อยบางอย่าง
สำหรับกราฟฟังก์ชันน้ำหนักสองค่าบนขอบทั้งหมด (เป็นจำนวนจริง) ถูกกำหนดเป็น (อ่อน) เปรียบเทียบได้ (กัน) ถ้าเราสามารถขยายการจัดเรียงอ่อนแออย่างเข้มงวดบนขอบที่เกิดจากฟังก์ชันน้ำหนักอย่างใดอย่างหนึ่งไปยังที่เข้มงวดเดียวกัน ยอดรวมการสั่งซื้อ นั่นคือเราสามารถกำหนดกฎการเลิกผูกที่สอดคล้องกันกับแต่ละฟังก์ชั่นน้ำหนักเพื่อให้ผลการเปรียบเทียบของสองขอบใด ๆ โดยฟังก์ชั่นน้ำหนักหนึ่งและกฎการผูกไทม์เหมือนกันกับผลลัพธ์โดยฟังก์ชั่นน้ำหนักอื่น ๆ และ ทำลายกฎG
บทแทรก 1 : ให้และเป็นฟังก์ชันน้ำหนักสองฟังก์ชัน ห้าข้อความต่อไปนี้เทียบเท่ากันw 2W1W2
- w 2W1และเข้ากันได้กับการเปรียบเทียบW2
- ในชุดของขอบใด ๆ มีเป็นเรื่องธรรมดาที่มีน้ำหนักเบาขอบโดยและw_2w 2W1W2
- ในชุดของขอบใดมีขอบที่หนักที่สุดที่พบบ่อยโดยและw_2w 2W1W2
- มีฟังก์ชั่นน้ำหนักที่กำหนดน้ำหนักที่แตกต่างให้กับขอบที่แตกต่างกันซึ่งสามารถใช้งานร่วมกับการเปรียบเทียบกับและได้w 3 w 1 w 2W3W3W1W2
- สำหรับขอบและๆ ที่ทำให้เบากว่าหนึ่งฟังก์ชั่นน้ำหนักจะเบาหรือเบากว่าโดยฟังก์ชั่นน้ำหนักอื่น ๆe 2 e 1 e 2 e 1 e 2อี1อี2อี1อี2อี1อี2
หลักฐานของบทแทรก 1 ถูกทิ้งไว้ว่าเป็นการออกกำลังกายที่ง่าย
บทแทรก 2 : Let สองฟังก์ชั่น้ำหนักและเป็นเช่นว่าถ้าแล้วe_1จากนั้นจะสามารถเปรียบเทียบได้w 2 e 1 < w 1 e 2 e 1 < w 2 e 2W1W2อี1<W1อี2อี1<W2อี2
(คำแนะนำถึง) การพิสูจน์: วิธีการหนึ่งคือตรวจสอบเงื่อนไข 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
อัลกอริทึมสามารถใช้งานร่วมกันได้หากในแง่หลวมสามารถอธิบายได้ในสามขั้นตอน
- ทำสิ่งที่ไม่เกี่ยวข้องกับน้ำหนัก
- เลือกขอบที่มีน้ำหนักต่ำสุดในชุดของขอบที่กำหนด
- เลือกขอบที่มีน้ำหนักสูงสุดในชุดของขอบที่กำหนด
เงื่อนไขที่เพียงพอนี้ครอบคลุมอัลกอริทึมของ Bor Primvka, Prim's, Kruskal, reverse-delete, delete-heavy-edge และ add-non-heavy-edge โปรดทราบว่าเพื่อให้เหมาะสมกับสภาพที่เพียงพอนี้เราอาจต้องเปลี่ยนคำอธิบายบางอย่างของอัลกอริทึมโดยไม่กระทบกับชุด MST ที่เข้าถึงได้ เนื่องจากข้อยกเว้นของอัลกอริทึมของ Kruskal ที่มีความลำเอียงระดับปริญญาเป็นสิ่งที่เข้ากันได้กับการเปรียบเทียบขอให้ฉันเน้นย้ำเงื่อนไขที่เพียงพอนี้ไว้ในเงื่อนไขที่หลวม