Диницов алгоритам

Извор: testwiki
Пређи на навигацију Пређи на претрагу

Диницов алгоритам је строго полиномијални алгоритам за израчунавање максималног протока кроз транспортну мрежу осмишљен 1970. године од стране израелског (претходно совјетског) изучивача компјутера Јефим Динитз[1][1] алгоритам се извршава у временском периоду О(В2Е) и сличан је Емонд-Карп Алгоритму који се извршава у времену О(ВЕ2) у томе да користи најкраће промењене путање. Увод концепта о графа са нивоима и блокирања тока омогућују Диницовом алгоритму да постигне своје извођење.

Историја

Динитц алгоритам је 1970. године објавио бивши руски изучивач компјутера Јефим А. Динитц, који је данас члан Одсека за науку рачунарства нa Бен-Гурион Универзитету Негав (Израел), пре Едмондс-карп алгоритма који је објављен 1972. године али је раније откривен. Независно су показали да у Форд-фулкерсон алгоритму[2][2] ако је свака промењљива путања најкраћа, онда дужина променљивих путања не опада.

Дефиниција

Нека је G=((V,E),c,s,t) мрежа са c(u,v) и f(u,v) тежина и проток грана (u,v) (у том редоследу).

Преостала тежина је Сликање cf:V×VR+ дефинисано као
1. ако (u,v)E
cf(u,v)=c(u,v)f(u,v)
cf(v,u)=f(u,v)
2. иначе cf(u,v)=0
Преостали граф Gf=((V,Ef),cf|Ef,s,t) где:
Ef={(u,v)V×V:cf(u,v)>0} Промењљива путања је st путања у преосталом графу Gf.
дефинишемо дист(в) да буде дужина накраће путање од с до в у графу Gf. Онда граф са нивоима Gf је граф GL=(V,EL,cf|EL,s,t) где:
EL={(u,v)Ef:dist(v)=dist(u)+1}
Блокирајући ток је st ток f такав да граф G=(V,EL,s,t) са EL={(u,v):f(u,v)<cf|EL(u,v)} не садржи st путању

Алгоритам

Диницов алгоритам

Улаз граф G=((V,E),c,s,t)
Излаз: st ток f максималне вредности
  1. иницијализујемо f(e)=0 за свако eE
  2. Конструишемо GL уз помоћ Gf од G. Ако је dist(t)= стани и стави f на излаз.
  3. Нађемо блокирајући ток f у GL
  4. Ускладимо  f успомоћ f и вратимо се на други корак

Анализа алгоритма

Може бити показано да се број грана у сваком блокирајућем току повећава за барем 1 сваки пут тако да има највише n1 блокирајућих токова у алгоритму, где је n број чворова у графу. Граф са нивоима GL може бити конструисан претрагом у ширину у O(E) времену а блокирајући ток у сваком нивоу графа се може пронаћи у O(VE) времену. Дакле Време извршавања овог алгоритма је O(V2E).

Користећи структуру података звану динамичко дрве време потребно за налажење блокирајућег тока се може смањити на O(ElogV), па се време извршавања овог алгоритма може побољшати на O(VElogV).

Специјални случајеви

У графу са јединичним тежинама, постоји много јача временска граница. Сваки блокирајући ток се може наћи за O(E) и може се показати да број фаза не прелази O(E) и O(V2/3). Тако да се алгоритам извршава у O(min{V2/3,E1/2}E) времену[3].

У графовима насталим током решавања проблема бипартитивног упаривања број фаза је ограничен са O(V), одтле водећи временску границу O(VE). Резултујући алгоритам је познат као Хопцртфт-Карп алгоритам. Генералније ова граница држи било који граф -- граф у којем сваки чвор осим извора и понора има или једну улазну грану тежине један или једну излазну грану тежине један, а све остале тежине су произвољни цели бројеви.[4]

Пример

Следеће је симулација динитц алгоритма. У гафу са нивоима GL чворови у црвеној боји су вредности dist(v). Путање плаве боје су блокирајући ток.

G Gf GL
1.
Г1
Гф1
Гл1

Блокирајући ток се састоји од

  1. {s,1,3,t} са 4 јединице тока
  2. {s,1,4,t} са 6 јединице тока
  3. {s,2,4,t} ца 4 јединице тока

Дакле блокирајући ток је састављен од 14 јединица тока , и вредност тока |f| је 14. приметити да свака промењљива путања у блокирајућем току има 3 гране.

2.
Г2
ГФ2
Гл2

Блокирајући ток се састоји од

  1. {s,2,4,3,t} са 5 јединица тока.

Дакле блокирајући ток се састоји од 5 јединица и вредност тока |f| је 14+5=19. Приметити да свака промењљива путања има 4 гране.

3.
Г3
Гф3
Гл3

Пошто t не може да се достигне у Gf алгоротам завршава са радом и враћаток са максималном вредношћу 19. Приметити да у сваком блокирајућем току број грана у промењљивим путањама се повећава за барем 1.

Види још

Референце

Шаблон:Reflist

Шаблон:Нормативна контрола

  1. [[Јефим Динитз|Шаблон:Cite journal]]
  2. [[Форд-Фулкерсонов алгоритам|Шаблон:Cite web]]
  3. Шаблон:Cite journal
  4. Тарјан 1983. п. 102.