A Dinitz-algoritmus egy polinomiális algoritmus a szállítási hálózatban a maximális áramlás meghatározására , amelyet 1970-ben Efim Dinitz szovjet (később izraeli) matematikus javasolt . Az algoritmus időbonyolultsága . Ilyen becslést kaphatunk a segédhálózat és a blokkoló (pszeudo-maximális) áramlás fogalmának bevezetésével . Az egységnyi sávszélességű hálózatokban erősebb az időbonyolultsági becslés: .
Legyen egy közlekedési hálózat , amelyben és az áteresztőképesség és az élen áthaladó áramlás .
A maradék sávszélesség a következőképpen definiált leképezés :Dinit algoritmusa
Bemenet : Hálózat . Kimenet : maximális áramlás .Megmutatható, hogy minden alkalommal, amikor a forrástól a nyelőig vezető legrövidebb úton lévő élek száma legalább eggyel nő, így nincs több blokkoló folyam az algoritmusban, ahol a hálózat csúcsainak száma. A segédhálózat szélesség-első időben történő bejárással építhető fel , és a blokkoló áramlás a gráf minden szintjén időben megtalálható . Ezért a Dinits algoritmus futási ideje .
A dinamikus fák nevű adatstruktúrák segítségével időben meg lehet találni a blokkoló áramlást az egyes fázisokon, majd a Dinitz-féle algoritmus futási idejét -re javítani .
Az alábbiakban a Dinitz-féle algoritmus szimulációja látható. A segédhálózatban a piros címkés csúcsok az értékek . A blokkolószál kék színnel van jelölve.
egy. | |||
---|---|---|---|
Egy blokkolószál útvonalakból áll:
Ezért a blokkoló áramlás 14 egységet tartalmaz, az áramlás értéke pedig 14. Vegye figyelembe, hogy a komplementer útvonalnak 3 éle van. | |||
2. | |||
Egy blokkolószál útvonalakból áll:
Ezért a blokkoló áramlás 5 egységet tartalmaz, és az áramlás értéke 14 + 5 = 19. Vegye figyelembe, hogy a komplementer útvonalnak 4 éle van. | |||
3. | |||
A készlet nem érhető el a hálózaton . Ezért az algoritmus megáll, és a maximális 19 nagyságú áramlást adja vissza. Vegye figyelembe, hogy minden blokkoló folyamban a komplementer útvonal éleinek száma legalább eggyel megnövekszik. |
A Dinitz-algoritmust 1970-ben az egykori szovjet tudós, Efim Dinitz tette közzé, aki ma a Ben-Gurion Egyetem (Izrael) Számítógép-mérnöki Karának tagja, korábban, mint az 1972-ben megjelent Edmonds-Karp algoritmust , de korábban létrehozott. Önállóan kimutatták, hogy a Ford-Fulkerson algoritmusban , ha a komplementer út a legrövidebb, a komplementer út hossza nem csökken.
Az algoritmus időbeli összetettsége csökkenthető a blokkoló szál keresési folyamatának optimalizálásával. Ehhez be kell vezetni a potenciál fogalmát . Az élpotenciál , a csúcspotenciál pedig . Ugyanezen logika szerint a . A fejlesztés ötlete az, hogy a segédhálózatban egy minimális pozitív potenciállal rendelkező csúcsot keressünk, és sorok segítségével blokkoló áramlást építsünk ki rajta .
Bemenet : Hálózat . Kimenet : maximális áramlás .Az előre, illetve a visszaszaporító algoritmusok arra szolgálnak, hogy megtalálják az oda és onnan tartó útvonalakat . Példa a közvetlen terjesztési algoritmusra sorokat használva:
Bemenet : Segédhálózat , olyan csúcspont , hogy . Kimenet : egy áramlás a forrástól a csúcsig , amely egy blokkoló folyam része.Tekintettel arra, hogy a blokkoló folyam keresésének minden iterációjában legalább egy csúcs "telített", ez a legrosszabb eset iterációival fejeződik be, amelyek mindegyike a csúcsok maximális számát veszi figyelembe. Legyen a "telített" élek száma a blokkoló szál keresésének minden -edik iterációjában. Ekkor az aszimptotikus komplexitása , ahol a csúcsok száma és a gráf éleinek száma. Így a Dinitz-féle szórási algoritmus aszimptotikus komplexitása egyenlő -val , mivel a blokkoló áramlás legfeljebb csúcsokon haladhat át .