Minimal Spanning Tree พร้อมพารามิเตอร์น้ำหนักสองเท่า


12

พิจารณากราฟE) ขอบแต่ละมีสองน้ำหนักและB_eค้นหาต้นไม้ทอดที่ช่วยลดสินค้าขวา) อัลกอริทึมควรทำงานในเวลาพหุนามเกี่ยวกับ.G(V,E)A e B e ( e T A e ) ( e T B e ) | V | , | E |eAeBe(eTAe)(eTBe)|V|,|E|

ฉันคิดว่ามันยากที่จะปรับแต่งอัลกอริธึมดั้งเดิมใด ๆ บนต้นไม้ที่ทอด (Kruskal, Prim, Edge-Deletion) วิธีแก้ปัญหา คำใบ้ใด ๆ


อาจจะพยายามที่จะสร้างกราฟใหม่ที่มีน้ำหนักของขอบเป็นB_e) emax(Ae,Be)
utdiscant

3
นี่เป็นปัญหา / การบ้านหรือไม่? ถ้าเป็นเช่นนั้นมาจากตำราหรือไม่? เหตุผลที่ฉันถามคือบริบทสามารถช่วยในการ "ย้อนกลับวิศวกร" ปัญหา ไม่ชัดเจนว่าอัลกอริทึมโลภเหมาะสมที่นี่ แต่ถ้ามาจากบทเกี่ยวกับอัลกอริทึมโลภ ...
Joe

1
@utdiscant ที่ไม่ทำงาน ขอบลบอาจมีประโยชน์
Nicholas Mancuso

แม้สำหรับขอบบวกไม่มีประโยชน์เช่นคู่ (10,10) ไม่ดีกว่าคู่ (11,1) ในกรณีส่วนใหญ่

คำตอบ:


1

ฉันจะสมมติว่าคุณไม่ได้รับน้ำหนักถ่วงลบเนื่องจากอาจไม่ทำงานหากมีน้ำหนักเป็นลบ

ขั้นตอนวิธี

สำหรับแต่ละขอบของคุณให้ระบุถึง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)=44+8+24+66+12=154(2,11)=22+4+12+121+44=203(11,2)=121+22+66+4+8=221

(11,2)ถูกลบออก

จบลงด้วย(2,11),(4,6)=617=102

ต้นไม้ทอดอื่น ๆ

(11,2),(4,6)=1512=180

(2,11),(11,2)=1313=169


1
ดูเหมือนว่าฉันว่านี่เป็นโปรแกรมที่ค่อนข้างโลภ ฉันไม่เชื่อว่า "ข้อพิสูจน์" ของความเรียบง่าย
Nejc

1
@SaeedAmiri นั่นเป็นตัวอย่างที่เคาน์เตอร์ได้อย่างไร ฉันโพสต์การทำงานในส่วนที่แก้ไขอัลกอริทึมให้ผลลัพธ์ที่ถูกต้อง
Herp Derpington

1
สิ่งที่คุณทำคือค้นหาจำนวนมีส่วนร่วมในและคุณเลือกสิ่งที่มีผลกระทบมากที่สุด นั่นเป็นสิ่งที่ดี แต่ไม่จำเป็นต้องมี มันเป็นคำถามที่ยุ่งยาก หากคุณต้องการปรับปรุงคำตอบของคุณคุณจะต้องมีหลักฐาน มิฉะนั้นจะไม่มีประโยชน์ (ai,bi)eEai.eEbi
AJed

มันไม่ยุติธรรมเลยที่จะลงคะแนนเสียงให้กับความพยายามของคุณ
AJed

@Ajed หลักฐานเป็นเช่นเดียวกับในการลบ Prim / kush / reverse ทั้งหมดที่เราต้องพิสูจน์ตอนนี้คือทรัพย์สินที่ถูกตัดยังคงมีอยู่
Herp Derpington

1

นี่คือวิธีการแก้ปัญหาจากhttp://www.cnblogs.com/autsky-jadek/p/3959446.html

เราสามารถดูต้นไม้ที่ทอดได้ทุกจุดในโดยที่คือผลรวมของน้ำหนัก , y คือผลรวมของน้ำหนักE} มีเป้าหมายที่จะลดความเซ็กซี่xyxeTAeeTBexy

  1. ค้นหาต้นไม้ขั้นต่ำทอดตามน้ำหนักและน้ำหนักBดังนั้นเราจึงมีสองจุดในระนาบ XY B ในทุกจุดซึ่งประกอบไปด้วยต้นไม้ในเครื่องบิน, มีขั้นต่ำ ,มีขั้นต่ำปีABA,BAxBy

  2. ตอนนี้เรามุ่งมั่นที่จะหาจุดในรูปสามเหลี่ยมที่มีระยะทางสูงสุดกับสายเพื่อให้เราสามารถมีค่าสำหรับลดลงสำหรับทุกจุดในสามเหลี่ยมABCCOABABxyCABC

เนื่องจาก{y})2SABC=|AB×AC|=(BxAx,ByAy)×(CxAx,CyAy)=(BxAx)Cy+(AyBy)CxAy(BxAx)+Ax(ByAy)

  1. ขอให้สังเกตว่าเป็นค่าคงที่ดังนั้นตอนนี้เราจึงมุ่งมั่นที่จะเพิ่มดังนั้นเราจึงสร้างกราฟใหม่ในขณะที่น้ำหนักตอนนี้เรารันต้นไม้ทอดสูงสุดบนจะได้รับจุดCAy(BxAx)+Ax(ByAy(BxAx)Cy+(AyBy)CxG=(V,E)w(e)=Be(BxAx)+Cx(AyBy)GC

  2. เรียกใช้ขั้นตอนวิธีการข้างต้นในซ้ำจนกว่าจะมีไม่มากต้นไม้ระหว่างทอดและOOBC,OACBC,ACO

  3. ตอนนี้เราได้ชุดต้นไม้ทอดที่เป็นไปได้ คำนวณค่าสำหรับต้นไม้แต่ละต้นเพื่อรับต้นไม้ขั้นต่ำxy

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