Problemă de debit maxim

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
O rețea cu un exemplu de debit maxim. Sursa este s și fântâna este t . Numerele indică fluxul și capacitatea arcelor.

În teoria optimizării , problema debitului maxim constă în găsirea, într-o rețea de curgere cu o singură sursă și un puț, a unui debit admisibil care este maxim.

Problema debitului maxim poate fi văzută ca un caz particular de probleme mai complexe pe rețelele de curgere, cum ar fi problema circulației . Valoarea maximă a unui flux de st (adică un flux generat de o sursă s care se termină într-un puț t ) este echivalentă cu capacitatea minimă a unui st tăiat în aceeași rețea, așa cum este afirmat de debitul maxim și teorema de tăiere minimă .

Istorie

Problema debitului maxim a fost formulată pentru prima dată în 1954 de TE Harris și FS Ross pentru simplificarea modelului de debit al sistemului feroviar sovietic. [1] [2] [3] În 1955, Lester R. Ford, Jr. și Delbert R. Fulkerson au publicat primul algoritm cunoscut, algoritmul Ford-Fulkerson . [4] [5]

În anii următori, au fost concepute diverse soluții la această problemă, printre care cele mai cunoscute sunt cele ale americanilor Edmonds și Karp (1972) și Sovietul Dinitz (1970).

Definiție

O rețea de flux, cu sursă s și puț t . Numerele de lângă arce reprezintă capacitățile respective.

Este o rețea cu respectiv sursă și fântână de .

Capacitatea unui arc este o funcție , indicat cu sau , care reprezintă debitul maxim care poate trece printr-un arc.

Un flux este o funcție , indicat cu sau , sub rezerva următoarelor două constrângeri:

  1. (constrângerea capacității: fluxul printr-un arc nu poate fi mai mare decât capacitatea sa);
  2. (constrângere de conservare a fluxului: suma fluxurilor care intră într-un nod trebuie să fie egală cu suma fluxurilor care ies din acesta, cu excepția sursei și a puțului).

Valoarea fluxului este definită de , unde este este sursa . Reprezintă cantitatea de debit de la sursă la fântână.

Problema debitului maxim este de a maximiza , adică să direcționeze cât mai mult flux posibil din la .

Soluții

Pentru a înțelege diferitele soluții ale problemei, este necesar să se introducă conceptul de rețea reziduală. Având în vedere o rețea de flux și un flux pe , definim rețeaua reziduală pe în comparație cu după cum urmează:

  1. Setul de noduri ale Este la fel ca .
  2. Fiecare arc din are o capacitate .
  3. Fiecare arc din are o capacitate .

Tabelul următor listează cei mai cunoscuți algoritmi pentru rezolvarea problemei debitului maxim.

Metodă Complexitatea computațională Notă
Algoritmul Ford-Fulkerson Încetarea algoritmului este garantată dacă toate greutățile sunt raționale , altfel este posibil ca algoritmul să nu convergă la valoarea maximă. În orice caz, dacă algoritmul se termină, corectitudinea rezultatului este garantată.
Algoritmul Edmonds-Karp O specializare a algoritmului Ford - Fulkerson care exploatează căutarea pe larg .
Algoritm dinic cu flux de blocare În fiecare fază a algoritmului se construiește un grafic stratificat prin căutarea în amplitudine pe graficul rezidual. Debitul maxim pe un grafic stratificat poate fi calculat în timp iar numărul maxim de faze este . În rețelele cu capacități unitare algoritmul se termină în timp .
Algoritm MPM (Malhotra, Pramodh-Kumar și Maheshwari) [6] Vă rugăm să consultați publicația originală .
Algoritmul lui Dinic Structura dinamică a arborelui accelerează calculul debitului maxim în graficul stratificat până la .
Algoritm generic push-relabel
Algoritm push-relabel cu selecție FIFO
Algoritm push-relabel cu arbori dinamici
Algoritmul KRT (King, Rao, Tarjan) [7]
Algoritm binar de blocare a fluxului [8] Valoarea corespunde capacității maxime a rețelei.
James B Orlin + algoritmul KRT (King, Rao, Tarjan) [9] Algoritmul lui Orlin găsește fluxul maxim în timp pentru în timp ce KRT rezolvă problema în pentru .

Aplicații

Notă

  1. ^ (EN) A. Schrijver, Despre istoria transportului și problemele de debit maxim în programarea matematică, vol. 91, nr. 3, 2002, pp. 437-445, DOI : 10.1007 / s101070100259 .
  2. ^ (EN) Saul I. Gass și Arjang A. Assad, Dezvoltări matematice, algoritmice și profesionale ale cercetării operaționale din 1951 până în 1956, în An Annotated Timeline of Operations Research, International Series in Operations Research & Management Science, vol. 75, 2005, pp. 79-110, DOI : 10.1007 / 0-387-25837-X_5 , ISBN 1-4020-8116-2 .
  3. ^ (EN) TE Harris și FS Ross, Fundamentele unei metode pentru evaluarea capacităților feroviare nete (PDF), în Research Memorandum, Rand Corporation, 1955.
  4. ^ (EN) LR Ford și DR Fulkerson , Flux maxim printr-o rețea , în Canadian Journal of Mathematics , vol. 8, 1956, p. 399, DOI : 10.4153 / CJM-1956-045-5 .
  5. ^(RO) Ford, LR, Jr.; Fulkerson, DR, Flows in Networks , Princeton University Press (1962).
  6. ^ (EN) VM Malhotra, M.Pramodh Kumar și SN Maheshwari, An algoritm pentru găsirea fluxurilor maxime în rețele , în Scrisori de procesare a informațiilor , vol. 7, nr. 6, 1978, pp. 277-278, DOI : 10.1016 / 0020-0190 (78) 90016-9 .
  7. ^ (EN) V. King, S. Rao și R. Tarjan, Un algoritm de flux maxim determinist mai rapid , Journal of Algorithms, vol. 17, n. 3, 1994, pp. 447-474, DOI : 10.1006 / jagm.1994.1044 .
  8. ^ (EN) AV Goldberg și S. Rao, Dincolo de bariera de descompunere a fluxului , în Jurnalul ACM , vol. 45, n. 5, 1998, p. 783, DOI : 10.1145 / 290179.290181 .
  9. ^ (EN) James B. Orlin, Max curge în timp O (nm), sau mai bine , în STOC '13 Proceedings of the patruzeci și cincilea simpozion anual ACM on Theory of Computing, 2013, pp. 765-774, DOI : 10.1145 / 2488608.2488705 .

Bibliografie

Elemente conexe

linkuri externe

Matematica Portalul de matematică : accesați intrările Wikipedia care se ocupă de matematică