Dinitz-algoritmen er en polynomiel algoritme til at finde det maksimale flow i et transportnetværk , foreslået i 1970 af den sovjetiske (senere israelske) matematiker Efim Dinitz . Algoritmens tidskompleksitet er . Et sådant estimat kan opnås ved at introducere begreberne et hjælpenetværk og et blokerende (pseudo-maksimalt) flow . I netværk med enhedsbåndbredder er der et stærkere tidskompleksitetsestimat: .
Lade være et transportnetværk , hvori og er henholdsvis gennemstrømningen og strømmen gennem kanten .
Den resterende båndbredde er en kortlægning defineret som:Dinits algoritme
Input : Netværk . Udgang : maksimalt flow .Det kan vises, at hver gang antallet af kanter i den korteste vej fra kilden til synken stiger med mindst én, så der ikke er flere blokerende flows i algoritmen, hvor er antallet af toppunkter i netværket. Hjælpenetværket kan bygges ved bredde-først gennemløb i tid , og blokeringsflowet på hvert niveau af grafen kan findes i tid . Derfor er køretiden for Dinits-algoritmen .
Ved at bruge datastrukturer kaldet dynamiske træer er det muligt at finde blokeringsflowet på hver fase i tid , så kan køretiden for Dinitz's algoritme forbedres til .
Nedenfor er en simulering af Dinitz's algoritme. I hjælpenetværket er hjørnerne med røde etiketter værdierne . Spærretråden er markeret med blåt.
en. | |||
---|---|---|---|
En blokerende tråd består af stier:
Derfor indeholder det blokerende flow 14 enheder, og flowværdien er 14. Bemærk at den komplementære bane har 3 kanter. | |||
2. | |||
En blokerende tråd består af stier:
Derfor indeholder det blokerende flow 5 enheder, og værdien af flowet er 14 + 5 = 19. Bemærk at den komplementære vej har 4 kanter. | |||
3. | |||
Aktien er ikke tilgængelig på netværket . Derfor stopper algoritmen og returnerer det maksimale flow af størrelsesorden 19. Bemærk, at i hvert blokeringsflow øges antallet af kanter i den komplementære bane med mindst én. |
Dinitz-algoritmen blev udgivet i 1970 af den tidligere sovjetiske videnskabsmand Efim Dinitz, som nu er medlem af fakultetet for datateknik ved Ben-Gurion University (Israel), tidligere end Edmonds-Karp-algoritmen , som blev offentliggjort i 1972, men oprettet tidligere. De viste uafhængigt, at i Ford-Fulkerson-algoritmen , hvis den komplementære vej er den korteste, falder længden af den komplementære vej ikke.
Algoritmens tidskompleksitet kan reduceres ved at optimere processen med at finde en blokerende tråd. For at gøre dette er det nødvendigt at introducere begrebet potentiale . Kantpotentialet er , og toppunktspotentialet er . Af samme logik er en . Ideen med forbedringen er at lede efter et toppunkt med det mindste positive potentiale i hjælpenetværket og bygge et blokerende flow gennem det ved hjælp af køer .
Input : Netværk . Udgang : maksimalt flow .Fremadgående og tilbagegående algoritmer tjener til at finde stier fra henholdsvis til og fra til . Et eksempel på den direkte udbredelsesalgoritme ved brug af køer:
Input : Hjælpe netværk , toppunkt således . Output : Et flow fra kilde til toppunkt , der er en del af et blokerende flow.På grund af det faktum, at mindst et toppunkt er "mættet" i hver iteration af søgningen efter et blokerende flow, fuldføres det i worst-case iterationer, som hver især tager højde for maksimum af toppunkter. Lad være antallet af "mættede" kanter i hver -te iteration af søgningen efter en blokerende tråd. Så er dens asymptotiske kompleksitet , hvor er antallet af hjørner og er antallet af kanter i grafen. Således er den asymptotiske kompleksitet af Dinitz's spredningsalgoritme lig med , da den blokerende strøm højst kan passere gennem hjørner.