ต้นไม้ที่ถูกลิงค์ตัดเคยถูกใช้ในทางปฏิบัติสำหรับการคำนวณการไหลสูงสุดหรือการใช้งานอื่น ๆ หรือไม่?


20

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

  • Push relabel ทำงานในหรือหรือตามปกติ แต่มีต้นไม้แบบไดนามิกO(V2E)O(V3)O(V2E)O(VElog(V2/E))
  • อัลกอริทึมของ Dinic ทำงานในแต่ด้วยต้นไม้แบบไดนามิกO(V2E)O(VElog(V))

อย่างไรก็ตามการใช้งานจริงของอัลกอริธึม max-flow ในไลบรารีส่วนใหญ่ดูเหมือนจะไม่ใช้ประโยชน์จากโครงสร้างข้อมูลนี้ ต้นไม้แบบไดนามิกเคยใช้ในทางปฏิบัติสำหรับการคำนวณการไหลสูงสุดหรือไม่ หรือพวกเขามีค่าใช้จ่ายมากเกินไปที่จะเป็นประโยชน์สำหรับขนาดของปัญหาโลกแห่งความจริง?

มีโดเมนปัญหาอื่น ๆ อีกหรือไม่ที่มีการใช้การเชื่อมโยงทรี?

คำถามนี้เกี่ยวข้องกับคำถามที่ฉันถามใน cstheory: มีอัลกอริธึม Maximum Flow อันทันสมัยที่สุดหรือไม่?


ภาพรวม / เรียงลำดับจากต้นตัดลิงก์แต่จะกล่าวว่า "มีประโยชน์สำหรับแอปพลิเคชันเช่น Network Flow" เท่านั้น
vzn

จากการสำรวจ tarjan ที่อ้างถึงโดย reza โดยทั่วไปอัลกอริธึมเชิงเส้นเวลาทำงานได้ดีมาก / ดีที่สุดสำหรับจำนวนจุดยอด / ขอบปานกลางและจากนั้นก็มีการจัดตำแหน่งจุดยอด / ขอบที่ใหญ่กว่าซึ่งอัลกอริธึมลอการิทึม ดังนั้นการเข้าถึงลอการิทึม fns จึงมีประโยชน์ & อาจดีกว่าอย่างมากสำหรับกราฟที่มีขนาดใหญ่มาก
vzn

คำตอบ:


7

มีเอกสารเรื่อง " Dynamic Trees in Practice " ซึ่งทบทวนการใช้งานจริง

ประเภทอื่น ๆ ที่ต้นไม้ Link-Cut สามารถนำมาใช้อย่างมีประสิทธิภาพอยู่ในฐานข้อมูลการจัดทำดัชนี คุณสามารถค้นหาได้ในหนังสือ " เทคนิคการจัดทำดัชนีฐานข้อมูล "


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

@vzn: B + -tree, R-tree, H-Tree และ X-Tree เป็นตัวอย่าง
Reza

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

5

กระดาษนี้พบในตอนท้ายว่าต้นไม้ link-cut (LC) มีประสิทธิภาพเหนือกว่าต้นไม้ rake-compress (RC) สำหรับอัลกอริธึมการไหลสูงสุดของ Sleator / Tarjan โดยใช้เครื่องกำเนิดกราฟสุ่มของ Dimacs มาตรฐาน

กระดาษมุ่งเน้นไปที่การเผยแพร่การเปลี่ยนแปลงเป็นแอปพลิเคชันหนึ่งของต้นไม้แบบไดนามิก เช่นการแพร่กระจายการเปลี่ยนแปลงนั้นคล้ายกับวิธีที่เซลล์ Excel ต้องคำนวณใหม่ในการเปลี่ยนแปลงบางเซลล์ตามการพึ่งพาของเซลล์ / สูตร ผู้เขียนปล่อยรหัสเป็นห้องสมุดเปิด

การวิเคราะห์การทดลองของการขยายพันธุ์การเปลี่ยนแปลงในต้นไม้แบบไดนามิก Acar, Blelloch, Vittes

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


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