เครือข่ายการไหลเป็นกราฟG = (V, E)
ที่มีจุดสุดยอดแหล่งที่มาs ϵ V
และจุดสุดยอดอ่างล้างจานt ϵ V
และที่ขอบทุก(u, v) ϵ E
บนกราฟ (เชื่อมต่อโหนดu ϵ V
และv ϵ V
) มี 2 ปริมาณที่เกี่ยวข้องกับมัน:
c(u, v) >= 0
ความจุของขอบa(u, v) >= 0
ค่าใช้จ่ายในการส่งหนึ่งหน่วยผ่านขอบ
เรากำหนดฟังก์ชั่นที่จะได้รับจำนวนหน่วยที่ถูกส่งผ่านขอบให้0 <= f(u, v) <= c(u, v)
(u, v)
ดังนั้นค่าใช้จ่ายสำหรับขอบที่กำหนดคือ(u, v)
ปัญหาการไหลขั้นต่ำค่าใช้จ่ายถูกกำหนดให้เป็นการลดค่าใช้จ่ายรวมกว่าขอบทั้งหมดสำหรับจำนวนเงินไหลที่กำหนดให้ตามปริมาณต่อไปนี้:a(u, v) * f(u, v)
d
ข้อ จำกัด ต่อไปนี้ใช้กับปัญหา:
- ข้อกำหนดด้านความจุ : การไหลผ่านขอบที่กำหนดอาจไม่เกินความจุของขอบนั้น (
f(u, v) <= c(u, v)
) - สมมาตรเอียง : การไหลแม้ว่าขอบที่กำหนดจะต้องเป็น antisymmetric เมื่อทิศทางกลับด้าน (
f(u, v) = -f(v, u)
) - ไหลอนุรักษ์ : การไหลเข้าสุทธิใดโหนดที่ไม่ใช่อ่างล้างจานที่ไม่ใช่แหล่งที่มาจะต้องเป็น 0 (สำหรับแต่ละ
u ∉ {s, t}
ข้อสรุปมากกว่าทุกw
,sum f(u, w) = 0
) - การไหลที่จำเป็น : สุทธิไหลออกจากแหล่งที่มาและการไหลสุทธิลงในอ่างทั้งสองจะต้องเท่ากับการไหลที่ต้องการผ่านเครือข่าย (ข้อสรุปมากกว่าทุก
u
,sum f(s, u) = sum f(u, t) = d
)
ให้เครือข่ายการไหลG
และการไหลที่ต้องการd
ส่งออกต้นทุนขั้นต่ำสำหรับการส่งd
หน่วยผ่านเครือข่าย คุณอาจคิดว่ามีวิธีแก้ปัญหาอยู่ d
และความสามารถและค่าใช้จ่ายทั้งหมดจะเป็นจำนวนเต็มไม่เป็นลบ สำหรับเครือข่ายที่มีN
จุดที่มีป้ายกำกับ[0, N-1]
, จุดสุดยอดแหล่งที่มาจะเป็นจุดสุดยอดและอ่างล้างจานจะเป็น0
N-1
นี่คือ รหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุด (เป็นไบต์) จะชนะ โปรดจำไว้ว่านี่คือการแข่งขันภายในภาษาเช่นเดียวกับระหว่างภาษาดังนั้นอย่ากลัวที่จะโพสต์วิธีแก้ปัญหาในภาษา verbose
อนุญาตให้มีบิวด์อินได้ แต่ขอแนะนำให้คุณรวมโซลูชันที่ไม่มีบิวด์อินเป็นโซลูชันเพิ่มเติมในคำตอบเดียวกันหรือเป็นคำตอบอิสระ
อินพุตอาจอยู่ในลักษณะที่สมเหตุสมผลซึ่งรวมถึงความสามารถและต้นทุนของแต่ละขอบและความต้องการ
กรณีทดสอบ
กรณีทดสอบมีให้ในรูปแบบต่อไปนี้:
c=<2D matrix of capacities> a=<2D matrix of costs> d=<demand> -> <solution>
c=[[0, 3, 2, 3, 2], [3, 0, 5, 3, 3], [2, 5, 0, 4, 5], [3, 3, 4, 0, 4], [2, 3, 5, 4, 0]] a=[[0, 1, 1, 2, 1], [1, 0, 1, 2, 3], [1, 1, 0, 2, 2], [2, 2, 2, 0, 3], [1, 3, 2, 3, 0]] d=7 -> 20
c=[[0, 1, 1, 5, 4], [1, 0, 2, 4, 2], [1, 2, 0, 1, 1], [5, 4, 1, 0, 3], [4, 2, 1, 3, 0]] a=[[0, 1, 1, 2, 2], [1, 0, 2, 4, 1], [1, 2, 0, 1, 1], [2, 4, 1, 0, 3], [2, 1, 1, 3, 0]] d=7 -> 17
c=[[0, 1, 4, 5, 4, 2, 3], [1, 0, 5, 4, 3, 3, 5], [4, 5, 0, 1, 5, 5, 5], [5, 4, 1, 0, 3, 2, 5], [4, 3, 5, 3, 0, 4, 4], [2, 3, 5, 2, 4, 0, 2], [3, 5, 5, 5, 4, 2, 0]] a=[[0, 1, 4, 2, 4, 1, 1], [1, 0, 3, 2, 2, 1, 1], [4, 3, 0, 1, 4, 5, 2], [2, 2, 1, 0, 2, 2, 3], [4, 2, 4, 2, 0, 4, 1], [1, 1, 5, 2, 4, 0, 2], [1, 1, 2, 3, 1, 2, 0]] d=10 -> 31
c=[[0, 16, 14, 10, 14, 11, 10, 4, 3, 16], [16, 0, 18, 19, 1, 6, 10, 19, 5, 4], [14, 18, 0, 2, 15, 9, 3, 14, 20, 13], [10, 19, 2, 0, 2, 10, 12, 17, 19, 22], [14, 1, 15, 2, 0, 11, 23, 25, 10, 19], [11, 6, 9, 10, 11, 0, 14, 16, 25, 4], [10, 10, 3, 12, 23, 14, 0, 11, 7, 8], [4, 19, 14, 17, 25, 16, 11, 0, 14, 5], [3, 5, 20, 19, 10, 25, 7, 14, 0, 22], [16, 4, 13, 22, 19, 4, 8, 5, 22, 0]] a=[[0, 12, 4, 2, 9, 1, 1, 3, 1, 6], [12, 0, 12, 16, 1, 2, 9, 13, 2, 3], [4, 12, 0, 2, 2, 2, 2, 10, 1, 1], [2, 16, 2, 0, 2, 1, 8, 4, 4, 2], [9, 1, 2, 2, 0, 5, 6, 23, 5, 8], [1, 2, 2, 1, 5, 0, 13, 12, 12, 1], [1, 9, 2, 8, 6, 13, 0, 9, 4, 4], [3, 13, 10, 4, 23, 12, 9, 0, 13, 1], [1, 2, 1, 4, 5, 12, 4, 13, 0, 13], [6, 3, 1, 2, 8, 1, 4, 1, 13, 0]] d=50 -> 213
กรณีทดสอบเหล่านี้ถูกคำนวณกับห้องสมุด NetworkX หลาม