ฉันจะสมมติว่าคุณไม่ได้รับน้ำหนักถ่วงลบเนื่องจากอาจไม่ทำงานหากมีน้ำหนักเป็นลบ
ขั้นตอนวิธี
สำหรับแต่ละขอบของคุณให้ระบุถึง1n
ปล่อยน้ำหนัก A ของจำนวนขอบaii
ให้น้ำหนัก B ของหมายเลขขอบbii
วาดตารางนี้
|a_1 a_2 a_3 a_4 .. a_n
---+-------------------------
b_1|.........................
b_2|.........................
. |.........................
. |.........................
b_n|...................a_n * b_n
ด้วยองค์ประกอบแต่ละตารางเป็นผลิตภัณฑ์ของแถวและคอลัมน์
สำหรับแต่ละขอบให้รวมแถวของตารางและคอลัมน์ที่เกี่ยวข้อง (และอย่าลืมลบองค์ประกอบในสี่แยกเนื่องจากรวมสองครั้ง)
ค้นหาขอบที่มีผลรวมมากที่สุดลบขอบนี้หากไม่ตัดการเชื่อมต่อกราฟ ทำเครื่องหมายที่ขอบเป็นสิ่งจำเป็น หากขอบถูกลบให้เติมแถวและคอลัมน์ด้วย 0
ความถูกต้อง
เห็นได้ชัดว่าผลลัพธ์เป็นต้นไม้
เห็นได้ชัดว่าผลลัพธ์มีการทอดเนื่องจากไม่มีการตัดการเชื่อมต่อ
ผลที่ได้คือน้อยที่สุด? หากมีขอบอีกอันที่มีการลบจะสร้างทรีสแปนขนาดเล็กที่ท้ายอัลกอริธึมขอบนั้นจะถูกลบและถูกลบทิ้งก่อน (ถ้าใครบางคนสามารถช่วยฉันทำตัวอย่างนี้ให้เข้มงวดมากขึ้น / และ / หรือตัวนับแล้วนั่นจะยอดเยี่ยม)
Runtime
เห็นได้ชัดว่าพหุนามใน.|V|
แก้ไข
(2,11),(11,2),(4,6)คือไม่ได้เป็นตัวอย่างที่เคาน์เตอร์
a1=2,a2=11,a3=4
b1=11,b2=2,b3=6
แล้วก็
| 2 11 4
---+--------------------
11 | 22 121 44
2 | 4 22 8
6 | 12 66 24
(4,6)(2,11)(11,2)=44+8+24+66+12=154=22+4+12+121+44=203=121+22+66+4+8=221
(11,2)ถูกลบออก
จบลงด้วย(2,11),(4,6)=6∗17=102
ต้นไม้ทอดอื่น ๆ
(11,2),(4,6)=15∗12=180
(2,11),(11,2)=13∗13=169