Изменения

Перейти к: навигация, поиск

Циркуляция потока

415 байт добавлено, 19:36, 24 ноября 2015
Псевдокод
==Псевдокод==
<tex>G =\varnothing</tex> <font color=green>// пустой граф, вершины 0 и n + 1 - исток и сток n, m; // вершин, ребер в исходном графеn вершин и m рёбер</font> edge '''for''' <tex>e : e\in E</tex> <font color=green>// ребро с полями (from, to, min_cap, cap)</font> Для i = 1 to m считать ребро edge добавить в граф G ребро <tex>t</tex>(<tex>0</tex>, edge<tex>e</tex>.to, <tex>0</tex>, edge<tex>e</tex>.min_cap) добавить в граф G ребро edge <tex>g</tex>(edge<tex>e</tex>.from, edge<tex>e</tex>.to, <tex>0</tex>, edge<tex>e</tex>.cap <tex>- edgee</tex>.min_cap) добавить в граф G ребро edge <tex>h</tex>(edge<tex>e</tex>.from, <tex>n + 1</tex>, <tex>0</tex>, edge<tex>e</tex>.min_cap) <tex>G = G \cup {t,g,h}</tex> max_flow = getmaxflow(<tex>G</tex>) <font color=green>// наибольший поток в графе G</font> Для всех ребер, инцидентных истоку'''for''' <tex>e : e\in E</tex> '''and''' <tex>e</tex>.from <tex>=s</tex> '''if''' <tex>f</tex>(<tex>e</tex>)<tex>< e</tex>.cap <font color=green>// если для текущего ребра flow < cap </font> циркуляции НЕТ '''return''' false '''return''' true
==Источники==
27
правок

Навигация