Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Потоки в мережах

Реферат Потоки в мережах





it ++, jt=it)

{++; +=price [* it] [* jt] * temp; [* it] [* jt] -=temp; [* it] [* jt] +=temp; (! propSpos [* jt] [* it] amp; amp; propSpos [* it] [* jt])

{[* jt] [* it] +=temp; [* jt] [* it]=-price [* it] [* jt];

} (! propSpos [* it] [* jt] amp; amp;! rezult [* jt] [* it]) [* it] [* jt]=0;

} lt; lt; ti lt; lt; endl; (max - temp) lt; lt; Залишившись потік дорівнює lt; lt; max - temp lt; lt; endl;

Save (price, Проміжна матриця вартості ); (propSpos, Проміжна матриця пропускної здатності );

for (int i=0; i lt; n; i ++) (int j=i; j lt; n; j ++) (price [i] [j] lt; 0) [i] [j]=0; -=temp;

} rez=0; (int i=0; i lt; n; i ++) (int j=i; j lt; n; j ++) (rezult [i] [j]) += rezult [i] [j] * priceEtalon [i] [j];

cout lt; lt; endl lt; lt; Мінімальна вартість потоку lt; lt; maxB lt; lt; дорівнює lt; lt; rez; lt; lt; endl lt; lt; Все проміжні матриці вартості і потоків збережені у файл graph.txt raquo ;; (rezult.size () lt; 25) (rezult, n t tНовая матриця потоків ); lt; lt; endl lt; lt; Нова матриця потоків збережена у файл graph.txt n lt; lt; endl;

}


Алгоритм Фалкерсона


Алгоритм Форда - Фалкерсона вирішує задачу знаходження максимального потоку в транспортній мережі.

Ідея алгоритму полягає в наступному. Спочатку величині потоку присвоюється значення 0: f (u, v)=0 для всіх u, v? V. Потім величина потоку итеративно збільшується за допомогою пошуку збільшує шляху (шлях від джерела s до стоку t, уздовж якого можна послати більший потік). Процес повторюється, поки можна знайти збільшує шлях.

Обнуляємо всі потоки. Залишкова мережу спочатку збігається з вихідною мережею.

У залишкової мережі знаходимо будь-який шлях з джерела в стік. Якщо такого шляху немає, зупиняємося.

Пускаємо через знайдений шлях (він називається збільшує шляхом) максимально можливий потік:

На знайденому шляху в залишковій мережі шукаємо ребро з мінімальною пропускною здатністю.

Для кожного ребра на знайденому шляху збільшуємо потік на, а в протилежному йому - зменшуємо на.

Модифікуємо залишкову мережу. Для всіх ребер на знайденому шляху, а також для протилежних їм ребер, обчислюємо нову пропускну здатність. Якщо вона стала ненульовий, додаємо ребро до залишкової мережі, а якщо обнулилася, стираємо його.

Повертаємося на крок 2.

Важливо, що алгоритм не конкретизує, який саме шлях ми шукаємо на кроці 2 або як ми це робимо. З цієї причини алгоритм гарантовано сходиться тільки для цілих пропускних спроможностей, але навіть для них при великих значеннях пропускних спроможностей він може працювати дуже довго.


Реалізація алгоритму


# include main.h

int min (int a, int b) {(a == 0) return b; (b == 0) return a; (a lt; b)? a: b;} Svyazn (vector lt; vector lt; int gt; gt; amp; matr) { lt; vector lt; int gt; gt; temp (matr); n=matr.size (); (int i=0; i lt; n; i ++) (int j=0; j lt; n; j ++) (int k=0; k lt; n; k ++) (i!=k amp; amp; i!=j amp; amp; temp [j] [i]!=0 amp; amp; temp [i] [k]!=0 amp; amp; (min ( temp [j] [k], (temp [j] [i] + temp [i] [k]))!=temp [j] [k])) [j] [k]=temp [j] [i ] + temp [i] [k]; (int i=1; i lt; n; i ++) (! temp [0] [i]) return false; true;} Falkerson (vector lt; vector lt; int gt; gt; propSpos , vector lt; int gt; s, vector lt; int gt; t) {n=propSpos.size (), max=0, ti=0, tj=0, minPath, temp; lt; vector lt; int gt; gt; rezult (n, vector lt; int gt; (n)); lt; int gt; minP; {= Bellman (propSpos, s [0], t [0]); //=0;=0; (int i=0; i lt; s.size (); i ++) (int j=0; j lt; t.size (); j ++) (min (minPath, Bellman (propSpos, s [i], t [j]))!=minPath)//

{= Bellman (propSpos, s [i], t [j]); //=i;=j;

}=MakePath (propSpos, minPath, s [ti], t [tj]); //=propSpos [* minP.begin ()] [* ++ minP.begin ()]; (list lt; int gt; :: iterator it=minP.begin (), jt=minP.begin (); it!=--minP.end (); it ++, jt=it)

{++; (min (propSpos [* it] [* jt], temp)!=temp)=propSpos [* it] [* jt];

}=0; (list lt; int gt; :: iterator it=minP.begin (), jt=minP.begin (); it!=--minP.end (); it ++, jt =it)

{++; +=propSpos [* it] [* jt] * temp;//[* it] [* jt] -=temp; [* it] [* jt] += temp; (! propSpos [* jt] [* it] amp; amp; propSpos [* it] [* jt]) [* jt] [* it] +=temp; (! propSpos [* it] [* jt] amp; amp;! rezult [* jt...


Назад | сторінка 4 з 7 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Розробка та реалізація алгоритму Флойда і Беллмана-Форда для пошуку найкоро ...
  • Реферат на тему: Creation of control system by a personnel how to begin with a zero
  • Реферат на тему: Транспортні мережі. Задача про максимальний потік в мережі
  • Реферат на тему: Найкоротший шлях через мережу
  • Реферат на тему: Пошук найкоротшого шляху між парами вершин в орієнтованому і неориентирован ...