Розставляння позначок
Позначка довільної вершини хi складається з двох частин і може бути двох видів:
(+xj, d) або (-xj, d)
де +xj означає, що потік припускає збільшення уздовж дуги (xi, xj); -xj - потік може бути зменшений уздовж дуги (xi, xj); d - максимальний розмір додаткового потоку, що може протікати від S до xi, уздовж побудованого ланцюга потоку. Вершина може знаходитися в одному із трьох станів:
1. Вершині приписана позначка, і вершина переглянута (тобто вона має позначку і всі суміжні з нею вершини "оброблені").
2. Позначка приписана, але вершина не переглянута (тобто вона має позначку, але не всі суміжні з нею вершини "оброблені").
3. Вершина не має позначки.
Спочатку усі вершини не мають позначок.
Крок 1. Привласнити вершині хi= S позначку (+ S, ¥).
Крок 2. Взяти деяку не переглянуту вершину xi із позначкою; нехай її позначка є (±xk, d(xi));
а) кожній непозначеній вершині xj Î F(xj), для якої xij > qij,., привласнити позначку
(+xk, d(xj)), де d(xj) = min {d(xi), qij - xij};
б) кожній непозначеній вершині xj Î F-1(xj), для якої позначку xij > 0, привласнити позначку (-xj, d(xj)), де d(xj) = min {d(xi), xij}.
Тепер вершина xi і позначена, і переглянута, а вершини позначки яким привласнені, є непереглянутими.
Крок 3. Повторювати крок 2 доти, поки або вершина t буде позначеною, і тоді перейти до кроку 4, або t буде не позначена, і ніяких інших позначок не можна розставити; у цьому випадку алгоритм закінчує роботу з максимальним вектором потоку.
Дата добавления: 2015-05-30; просмотров: 619;