def
NetworkFlow.IsMaxFlow
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(N : FlowNetwork V)
(fl : STFlow N)
:
Instances For
noncomputable def
NetworkFlow.edgeCount
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(N : FlowNetwork V)
:
Instances For
noncomputable def
NetworkFlow.residualNetwork
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(N : FlowNetwork V)
(fl : STFlow N)
:
Instances For
noncomputable def
NetworkFlow.diffFlowFun
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(N : FlowNetwork V)
(fl fl_max : STFlow N)
(u v : V)
:
Instances For
theorem
NetworkFlow.diffFlowFun_nonneg
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(N : FlowNetwork V)
(fl fl_max : STFlow N)
(u v : V)
:
theorem
NetworkFlow.diffFlowFun_le_resCap
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(N : FlowNetwork V)
(fl fl_max : STFlow N)
(u v : V)
:
theorem
NetworkFlow.diffFlowFun_conservation
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(N : FlowNetwork V)
(fl fl_max : STFlow N)
(w : V)
(hw_s : w ≠ N.s)
(hw_t : w ≠ N.t)
:
noncomputable def
NetworkFlow.diffFlow
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(N : FlowNetwork V)
(fl fl_max : STFlow N)
:
STFlow (residualNetwork N fl)
Instances For
theorem
NetworkFlow.diffFlow_value
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(N : FlowNetwork V)
(fl fl_max : STFlow N)
:
theorem
NetworkFlow.diffFlow_support_le_edgeCount
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(N : FlowNetwork V)
(fl fl_max : STFlow N)
:
theorem
NetworkFlow.flowDecomp_value_eq_sum
{V : Type u_1}
[Fintype V]
[DecidableEq V]
{N' : FlowNetwork V}
{fl' : STFlow N'}
(decomp : FlowDecomposition N' fl')
:
theorem
NetworkFlow.FlowDecomposition.sum_ge_weight
{V : Type u_1}
[Fintype V]
[DecidableEq V]
{N' : FlowNetwork V}
{fl' : STFlow N'}
(decomp : FlowDecomposition N' fl')
(i : Fin decomp.k)
(u v : V)
(hmem : (decomp.paths i).mem_edges u v)
:
theorem
NetworkFlow.flowPath_to_augmenting
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(N : FlowNetwork V)
(fl fl_max : STFlow N)
(decomp : FlowDecomposition (residualNetwork N fl) (diffFlow N fl fl_max))
(i : Fin decomp.k)
:
IsAugmentingPath N fl (decomp.paths i).vertices
theorem
NetworkFlow.residual_decomposition_exists
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(N : FlowNetwork V)
(fl fl_max : STFlow N)
(hlt : flowValue N fl < flowValue N fl_max)
(m : ℕ)
(hm : m = edgeCount N)
(hm_pos : 0 < m)
:
theorem
NetworkFlow.large_augmenting_path
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(N : FlowNetwork V)
(fl fl_max : STFlow N)
(hmax : IsMaxFlow N fl_max)
(hlt : flowValue N fl < flowValue N fl_max)
(m : ℕ)
(hm : m = edgeCount N)
(hm_pos : 0 < m)
:
∃ (p : List V) (hp : IsAugmentingPath N fl p), pathBottleneck N fl p ⋯ ≥ (flowValue N fl_max - flowValue N fl) / ↑m