เริ่มวงจรเชิงลบโดยใช้ Bellman Ford


20

ฉันต้องหาวัฏจักรเชิงลบในกราฟถ่วงน้ำหนักกำกับ ฉันรู้ว่าอัลกอรึทึมของ Bellman Ford ทำงานอย่างไรและมันบอกฉันว่ามีรอบลบหรือไม่ แต่มันไม่ได้ตั้งชื่ออย่างชัดเจน

ฉันจะได้รับเส้นทางจริงของวัฏจักรอย่างไรv1,v2,vk,v1

หลังจากใช้อัลกอริทึมมาตรฐานเราได้ทำการวนซ้ำแล้วและไม่ควรทำการปรับปรุงเพิ่มเติม หากเรายังคงสามารถลดระยะห่างไปยังโหนดได้จะมีวัฏจักรเชิงลบเกิดขึ้นn-1

ความคิดของฉันคือ: เนื่องจากเรารู้ว่าขอบที่ยังสามารถปรับปรุงเส้นทางและเรารู้ว่าบรรพบุรุษของแต่ละโหนดเราสามารถติดตามวิธีการของเรากลับจากขอบนั้นจนกว่าเราจะได้พบกันอีกครั้ง ตอนนี้เราควรมีวัฏจักรของเรา

น่าเศร้าที่ฉันไม่พบบทความใด ๆ ที่บอกฉันว่าสิ่งนี้ถูกต้องหรือไม่ ดังนั้นมันใช้งานได้จริงเช่นนั้น?

แก้ไข:ตัวอย่างนี้พิสูจน์ว่าความคิดของฉันไม่ถูกต้อง ได้รับรูปแบบของกราฟต่อไปนี้เราทำงานยามฟอร์ดจากโหนด11

ป้อนคำอธิบายรูปภาพที่นี่

เราจะดำเนินการขอบในลำดับD หลังจากทำซ้ำเราจะได้รับระยะทางโหนด:n - 1 1 : - 5 2 : - 30 3 : - 15a,,,dn-1
1:-5
2:-30
3:-15

และตารางผู้ปกครอง:มีผู้ปกครองมีผู้ปกครองมีผู้ปกครอง
3 2 3 3 213
23
32

ตอนนี้ทำ TH ซ้ำเราจะเห็นว่าระยะทางของโหนดยังสามารถปรับปรุงการใช้ขอบ ดังนั้นเราจึงรู้ว่ามีวัฏจักรเชิงลบอยู่และเป็นส่วนหนึ่งของมัน1n1aa

แต่โดยการติดตามกลับมาทางเราผ่านตารางแม่ที่เราได้รับติดอยู่ในอีกวงจรเชิงลบและไม่เคยพบอีกครั้งa,da

เราจะแก้ปัญหานี้อย่างไร

คำตอบ:


14

คุณถูกต้องสำหรับส่วนใหญ่ นอกจากนี้อีกหนึ่ง เมื่อคุณย้อนกลับห่วงโซ่บรรพบุรุษเมื่อพยายามค้นหาวัฏจักรคุณหยุดเมื่อถึงจุดเริ่มต้นหรือจุดสุดยอดอื่น ๆ ที่เคยเห็นมาแล้วในห่วงโซ่บรรพบุรุษที่คุณเห็นมาแล้ว โดยทั่วไปคุณจะหยุดและเอาท์พุทจุดยอดเมื่อใดก็ตามที่คุณตรวจจับรอบเมื่อย้อนกลับโดยใช้รุ่นก่อนโวลต์1

สำหรับเอกสารการค้นหาของ Google ง่ายผลตอบแทนถัวเฉลี่ยXiuzhen Huang: Negative น้ำหนักวงจรอัลกอริทึม เป็นโบนัสที่พวกเขายังรายการขั้นตอนวิธีการอื่นในการหารอบน้ำหนักเชิงลบที่ไม่สามารถเข้าถึงได้จากแหล่งที่มาจุดสุดยอดของs


ลิงก์เสีย
human.js

1
เชื่อมโยง PDF สามารถพบได้ที่นี่

ฉันเพิ่งใช้ความคิดของ Prof. Huang แต่ฉันไม่เข้าใจว่าทำไมเขาเพิ่มทั้งโหนดต้นทางใหม่และเป้าหมายใหม่ ( s'และt') สำหรับฉันมันดูเหมือนว่าโหนดต้นทางใหม่ที่เชื่อมต่อกับจุดยอดที่มีอยู่ทั้งหมดด้วยความยาวไม่ว่าจะเป็นเท่าใดก็ตาม
AbuNassar

0

ตัวอย่างของคุณไม่ขัดแย้งกับความคิดของคุณ แน่นอนคุณได้พบวงจรเชิงลบ ฉันคิดว่าความคิดตัวอย่างของคุณแสดงให้เห็นว่าจุดสุดยอดแหล่งที่มาอาจไม่ได้เป็นโหนดในวงจรเชิงลบ

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