คำถามติดแท็ก network-flow

2
ต้นไม้ที่ถูกลิงค์ตัดเคยถูกใช้ในทางปฏิบัติสำหรับการคำนวณการไหลสูงสุดหรือการใช้งานอื่น ๆ หรือไม่?
อัลกอริธึมการไหลสูงสุดจำนวนมากที่ฉันเห็นโดยทั่วไปว่านำไปใช้งานอัลกอริทึมของ Dinic พุช relabel และอื่น ๆ สามารถทำให้ต้นทุนเวลาของพวกเขาดีขึ้นด้วยการใช้ต้นไม้ไดนามิก (หรือที่รู้จักกันในชื่อต้นไม้ตัดลิงก์) Push relabel ทำงานในหรือหรือตามปกติ แต่มีต้นไม้แบบไดนามิกO ( V2E)O(V2E)O(V^2E)O ( V3)O(V3)O(V^3)O ( V2E--√)O(V2E)O(V^2\sqrt{E})O ( VEเข้าสู่ระบบ( ฉบับที่2/ E) )O(VElog⁡(V2/E))O(VE \log(V^2/E)) อัลกอริทึมของ Dinic ทำงานในแต่ด้วยต้นไม้แบบไดนามิกO ( V2E)O(V2E)O(V^2E)O ( VEเข้าสู่ระบบ( ฉบับที่) )O(VElog⁡(V))O(VE\log(V)) อย่างไรก็ตามการใช้งานจริงของอัลกอริธึม max-flow ในไลบรารีส่วนใหญ่ดูเหมือนจะไม่ใช้ประโยชน์จากโครงสร้างข้อมูลนี้ ต้นไม้แบบไดนามิกเคยใช้ในทางปฏิบัติสำหรับการคำนวณการไหลสูงสุดหรือไม่ หรือพวกเขามีค่าใช้จ่ายมากเกินไปที่จะเป็นประโยชน์สำหรับขนาดของปัญหาโลกแห่งความจริง? มีโดเมนปัญหาอื่น ๆ อีกหรือไม่ที่มีการใช้การเชื่อมโยงทรี? คำถามนี้เกี่ยวข้องกับคำถามที่ฉันถามใน cstheory: มีอัลกอริธึม Maximum Flow อันทันสมัยที่สุดหรือไม่?

5
ชุดอิสระสูงสุดของกราฟแบบสองทาง
ฉันพยายามหากราฟอิสระชุดสูงสุดของ Biparite ฉันพบสิ่งต่อไปนี้ในบางบันทึกย่อ"13 พฤษภาคม 1998 - มหาวิทยาลัยวอชิงตัน - CSE 521 - การประยุกต์ใช้งานของเครือข่ายไหล" : ปัญหา: ได้รับการฝ่ายกราฟG = ( U, โวลต์, E)G=(U,V,E)G = (U,V,E)หาชุดอิสระยู'∪ V'U′∪V′U' \cup V'ซึ่งเป็นขนาดใหญ่ที่สุดเท่าที่เป็นไปได้ที่ยู'⊆ คุณU′⊆UU' \subseteq UและV'⊆ VV′⊆VV' \subseteq V V ชุดเป็นอิสระหากไม่มีขอบของEEEระหว่างองค์ประกอบของชุด วิธีการแก้: สร้างกราฟการไหลในจุดยู∪ V∪ { s , t }U∪V∪{s,t}U \cup V \cup \{s,t\} } สำหรับแต่ละขอบ(u,v)∈E(u,v)∈E(u,v) \in Eมีขอบจุอนันต์จากuuuจะ วีvvvสำหรับแต่ละu∈Uu∈Uu …

1
การตัดขั้นต่ำสามารถทำได้ง่ายกว่าการไหลของเครือข่ายหรือไม่
ต้องขอบคุณทฤษฎีบทการตัดขั้นต่ำสูงสุดเรารู้ว่าเราสามารถใช้อัลกอริทึมใด ๆ ในการคำนวณการไหลสูงสุดในกราฟเครือข่ายเพื่อคำนวณ a -min-cut ดังนั้นความซับซ้อนของการคำนวณขั้นต่ำ -cut จึงไม่เกินความซับซ้อนของการคำนวณสูงสุด -flow( s , t ) ( s , t )(s,t)(s,t)(s,t)(s,t)(s,t)(s,t)(s,t)(s,t)(s,t) มันจะน้อยลงหรือไม่ มีอัลกอริทึมสำหรับการคำนวณขั้นต่ำ -cut ที่เร็วกว่าอัลกอริธึม max-flow หรือไม่?(s,t)(s,t)(s,t) ฉันพยายามหาลดลงเพื่อลด(s,t(s,t(s,t ) ปัญหา -max ไหลไป(s,t)(s,t)(s,t)ปัญหา -min ตัด แต่ผมก็ไม่สามารถที่จะหาคน ความคิดแรกของฉันคือใช้อัลกอริธึมการหารและการพิชิต: ก่อนอื่นให้หา min-cut ซึ่งแยกกราฟออกเป็นสองส่วน ตอนนี้หา max-flow แบบวนซ้ำสำหรับส่วนด้านซ้ายและ max-flow สำหรับส่วนที่ถูกต้องและรวมเข้าด้วยกันกับขอบทั้งหมดที่ตัดผ่าน สิ่งนี้จะทำงานเพื่อสร้างโฟลว์สูงสุด แต่เวลาทำงานที่เลวร้ายที่สุดของมันอาจมากเท่ากับO(|V|)O(|V|)O(|V|)เท่าใหญ่เท่ากับเวลาทำงานของอัลกอริธึมตัดขั้นต่ำ มีการลดที่ดีขึ้นหรือไม่ ฉันตระหนักถึงทฤษฎีการตัดขั้นต่ำแบบ max-flow แสดงให้เห็นว่าความซับซ้อนของการคำนวณคุณค่าของ max-flow นั้นเหมือนกับความซับซ้อนของการคำนวณความสามารถของการตัดขั้นต่ำ แต่นั่นไม่ใช่สิ่งที่ฉันถาม …

2
คำนวณ max-flow จาก min-cut
เรารู้ว่าการคำนวณการตอบสนองต่อการไหลสูงสุด การตัดเครือข่ายขั้นต่ำที่มีความสามารถเทียบเท่ากัน cf เลย สูงสุดไหลทฤษฎีบทนาทีตัด เรามีอัลกอริทึม (มีประสิทธิภาพมากกว่าหรือน้อยกว่า) สำหรับการคำนวณการไหลสูงสุดและการคำนวณการตัดต่ำสุดเนื่องจากการไหลสูงสุดนั้นไม่ยากหรือไม่แพงเลย แต่สิ่งที่ตรงกันข้าม เมื่อตัดน้อยที่สุดเราจะกำหนดกระแสสูงสุดได้อย่างไร โดยไม่ต้องแก้ไข Max-Flow ตั้งแต่เริ่มต้นแน่นอนและเร็วกว่านั้นเช่นกัน ความคิดบางอย่าง: จากการตัดขั้นต่ำเรารู้ค่าการไหลสูงสุด ฉันไม่เห็นว่าข้อมูลนี้ช่วยให้วิธีการมาตรฐานเพิ่มเส้นทางและ push-relabel ได้อย่างไรแม้ว่าการปรับตัวหลังดูเหมือนจะมีเหตุผลมากขึ้นเล็กน้อย เราไม่สามารถใช้การตัดต่ำสุดเพื่อแยกเครือข่ายออกเป็นสองส่วนและเรียกคืนเนื่องจากจะไม่ทำให้ปัญหาในกรณีเลวร้ายที่สุด (ถ้าพาร์ติชันหนึ่งเป็นแบบซิงเกิล) นอกจากนี้เราจะไม่ลดขั้นต่ำของอินสแตนซ์ขนาดเล็กลง การทราบคุณค่าของความเร็วการไหลสูงสุดที่แก้ไข Max-Flow LP อาจจะผ่านเงื่อนไขความหย่อนเสริมหรือไม่?

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

2
กรณีพิเศษของปัญหาการตั้งเวลาสามารถแก้ไขได้ในเวลาเชิงเส้นหรือไม่?
อลิซนักเรียนทำการบ้านมากมายในสัปดาห์หน้า การบ้านแต่ละรายการจะใช้เวลาหนึ่งวัน แต่ละรายการมีกำหนดเวลาและผลกระทบทางลบต่อผลการเรียนของเธอ (สมมติว่าเป็นจำนวนจริงคะแนนโบนัสสำหรับการเปรียบเทียบเท่านั้น) หากเธอพลาดกำหนดเวลา เขียนฟังก์ชั่นที่ให้รายการของ (กำหนดเวลาผลกระทบระดับคะแนน) กำหนดตารางเวลาสำหรับการทำการบ้านในวันที่ลดผลรวมของผลกระทบที่ไม่ดีต่อเกรดของเธอ การบ้านทั้งหมดจะต้องทำในที่สุด แต่ถ้าเธอพลาดกำหนดเวลาสำหรับรายการมันไม่สำคัญว่าเธอจะเปิดช้าแค่ไหน ในสูตรทางเลือก: ACME corp ต้องการส่งน้ำให้กับลูกค้า พวกเขาทั้งหมดอาศัยอยู่ตามถนนสายเดียว ACME มีหลุมหลายแห่งกระจายอยู่ตามถนน แต่ละบ่อมีน้ำเพียงพอสำหรับลูกค้าหนึ่งราย ลูกค้าเสนอราคาเป็นจำนวนเงินที่แตกต่างกัน น้ำไหลลงเขาเท่านั้น เพิ่มรายได้ให้สูงสุดด้วยการเลือกลูกค้าที่จะจัดหา เราสามารถจัดเรียงกำหนดเวลาโดยใช้การจัดเรียงกลุ่ม (หรือสมมติว่าเราได้เรียงลำดับตามกำหนดเวลาแล้ว) เราสามารถแก้ปัญหาได้อย่างง่ายดายด้วยอัลกอริธึมโลภหากเราจัดเรียงโดยการกระทบจากระดับสูงสุดก่อน ทางออกนั้นจะไม่ดีไปกว่า O (n log n) ได้รับแรงบันดาลใจจากMedian of MediansและอัลกอริทึมSpanning Tree แบบขั้นต่ำแบบเส้นตรงฉันสงสัยว่าเราสามารถแก้ปัญหาการตั้งเวลา / การไหลแบบง่าย ๆ ของฉันในเวลาเชิงเส้น (แบบสุ่ม?) ได้เช่นกัน ฉันกำลังมองหา: อัลกอริทึมเวลาเชิงเส้น (อาจสุ่ม) หรือมิฉะนั้นก็โต้แย้งว่าไม่สามารถใช้เวลาเชิงเส้นได้ ในฐานะที่เป็นหินก้าว: ฉันได้พิสูจน์แล้วว่าเพิ่งรู้ว่ารายการใดที่สามารถทำได้ก่อนกำหนดเวลาของพวกเขาเพียงพอที่จะสร้างตารางเวลาที่สมบูรณ์ในเวลาเชิงเส้น (ข้อมูลเชิงลึกนั้นเป็นรากฐานของสูตรที่สองที่ฉันถามเกี่ยวกับใบรับรองเท่านั้น) โปรแกรมเชิงเส้นตรง (integral!) สามารถจำลองปัญหานี้ได้ …

1
การแยกประเภทการปรับแต่ง
ที่ทำงานฉันได้รับมอบหมายให้อนุมานข้อมูลบางประเภทเกี่ยวกับภาษาแบบไดนามิก ฉันเขียนลำดับของข้อความไปยังletนิพจน์ที่ซ้อนกันเช่น: return x; Z => x var x; Z => let x = undefined in Z x = y; Z => let x = y in Z if x then T else F; Z => if x then { T; Z } else { F; Z } เนื่องจากฉันเริ่มต้นจากข้อมูลประเภททั่วไปและพยายามอนุมานประเภทที่เฉพาะเจาะจงมากขึ้นตัวเลือกที่เป็นธรรมชาติคือประเภทการปรับแต่ง ตัวอย่างเช่นตัวดำเนินการตามเงื่อนไขส่งคืนการรวมของประเภทของสาขาที่เป็นจริงและเท็จ …
11 programming-languages  logic  type-theory  type-inference  machine-learning  data-mining  clustering  order-theory  reference-request  information-theory  entropy  algorithms  algorithm-analysis  space-complexity  lower-bounds  formal-languages  computability  formal-grammars  context-free  parsing  complexity-theory  time-complexity  terminology  turing-machines  nondeterminism  programming-languages  semantics  operational-semantics  complexity-theory  time-complexity  complexity-theory  reference-request  turing-machines  machine-models  simulation  graphs  probability-theory  data-structures  terminology  distributed-systems  hash-tables  history  terminology  programming-languages  meta-programming  terminology  formal-grammars  compilers  algorithms  search-algorithms  formal-languages  regular-languages  complexity-theory  satisfiability  sat-solvers  factoring  algorithms  randomized-algorithms  streaming-algorithm  in-place  algorithms  numerical-analysis  regular-languages  automata  finite-automata  regular-expressions  algorithms  data-structures  efficiency  coding-theory  algorithms  graph-theory  reference-request  education  books  formal-languages  context-free  proof-techniques  algorithms  graph-theory  greedy-algorithms  matroids  complexity-theory  graph-theory  np-complete  intuition  complexity-theory  np-complete  traveling-salesman  algorithms  graphs  probabilistic-algorithms  weighted-graphs  data-structures  time-complexity  priority-queues  computability  turing-machines  automata  pushdown-automata  algorithms  graphs  binary-trees  algorithms  algorithm-analysis  spanning-trees  terminology  asymptotics  landau-notation  algorithms  graph-theory  network-flow  terminology  computability  undecidability  rice-theorem  algorithms  data-structures  computational-geometry 

2
ลดการไหลสูงสุดให้กับการจับคู่สองฝ่าย?
มีการลดลงที่มีชื่อเสียงและสง่างามจากปัญหาสูงสุดฝ่ายที่ตรงกันกับปัญหาที่เกิดขึ้นสูงสุดไหล: เราสร้างเครือข่ายที่มีโหนดแหล่ง , ขั้วโหนดและหนึ่งโหนดสำหรับแต่ละรายการที่จะจับคู่แล้วเพิ่มขอบที่เหมาะสมsssเสื้อเสื้อt มีวิธีหนึ่งในการลดการไหลสูงสุดไปสู่การจับคู่สองฝ่ายสูงสุดในเวลาพหุนามเนื่องจากทั้งคู่สามารถแก้ปัญหาแบบเอกเทศได้ในเวลาพหุนาม อย่างไรก็ตามมีการลดเวลาพหุนาม "ดี" จากการไหลสูงสุด (ในกราฟทั่วไป) ไปเป็นการจับคู่สองฝ่ายสูงสุดหรือไม่?

1
ลบจำนวนจุดยอดต่ำสุดเพื่อตัดการเชื่อมต่อกราฟ
พิจารณากราฟที่ไม่มีทิศทางพร้อมแหล่งที่มาและจุดยอดจม เราต้องการลบจำนวนจุดยอดต่ำสุดในกราฟนั้นเพื่อตัดการเชื่อมต่อเส้นทางใด ๆ ระหว่างต้นทางและอ่างล้างจาน เราสามารถทำได้โดยใช้อัลกอริธึม max-flow, min-cut หรือไม่?

1
ทำไมความซับซ้อนของการลบรอบการลบ
เราต้องการแก้ปัญหาการไหลของต้นทุนที่น้อยที่สุดด้วยอัลกอริทึมการยกเลิกเชิงลบทั่วไป นั่นคือเราเริ่มต้นด้วยการไหลที่ถูกต้องแบบสุ่มและจากนั้นเราจะไม่เลือกวัฏจักรเชิงลบ "ดี" ใด ๆ เช่นรอบต้นทุนเฉลี่ยขั้นต่ำสุด แต่ใช้ Bellman-Ford เพื่อค้นหารอบที่น้อยที่สุดและเพิ่มตามรอบการค้นพบ Letเป็นจำนวนโหนดในกราฟจำนวนขอบความจุสูงสุดของขอบในกราฟและVVVAAAยูยูUWWWค่าใช้จ่ายสูงสุดของขอบในกราฟ จากนั้นสื่อการเรียนรู้ของฉันอ้างสิทธิ์: ค่าใช้จ่ายสูงสุดที่จุดเริ่มต้นต้องไม่เกิน UWAยูWAUW การเพิ่มไปตามวัฏจักรลบหนึ่งครั้งจะช่วยลดต้นทุนได้อย่างน้อยหนึ่งหน่วย ขอบล่างสำหรับต้นทุนต่ำสุดคือ 0 เพราะเราไม่อนุญาตให้มีค่าใช้จ่ายติดลบ แต่ละรอบการลบสามารถพบได้ใน O ( Vก)O(VA)O(VA) และพวกเขาก็ทำตามความซับซ้อนของอัลกอริทึม O(V2UW)O(V2AยูW)O(V^2AUW). ฉันเข้าใจเหตุผลที่อยู่เบื้องหลังการอ้างสิทธิ์แต่ละข้อ แต่คิดว่าความซับซ้อนนั้นแตกต่างกัน โดยเฉพาะจำนวนสูงสุดของการเพิ่มจะได้รับจากหนึ่งหน่วยของการไหลต่อการเสริมการใช้ค่าใช้จ่ายจากUWAยูWAUW ถึงศูนย์ทำให้เราได้มากที่สุด UWAยูWAUWaugmentations เราจำเป็นต้องค้นพบวัฏจักรเชิงลบสำหรับแต่ละดังนั้นเราจึงเพิ่มจำนวนสูงสุดของการขยายเวลาที่จำเป็นในการค้นพบรอบ (VAVAVA) และมาถึงที่ โอ(A2VยูW)O(A2VยูW)O(A^2VUW) สำหรับอัลกอริทึม นี่อาจเป็นข้อผิดพลาดในสื่อการเรียนรู้ (นี่เป็นข้อความที่อาจารย์ให้ไว้ไม่ใช่จากบันทึกของนักเรียนจากหลักสูตร) ​​หรือเหตุผลของฉันผิด?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.