@[implicit_reducible]
instance
NetworkFlow.instDecidableEdge
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(G : DirectedGraph V)
(u v : V)
:
structure
NetworkFlow.DirPath
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(G : DirectedGraph V)
:
Type u_1
- vertices : List V
Instances For
def
NetworkFlow.DirPath.edges
{V : Type u_1}
[Fintype V]
[DecidableEq V]
{G : DirectedGraph V}
(p : DirPath G)
:
Instances For
def
NetworkFlow.PairwiseEdgeDisjoint
{V : Type u_1}
[Fintype V]
[DecidableEq V]
{k : ℕ}
{G : DirectedGraph V}
(paths : Fin k → DirPath G)
:
Instances For
structure
NetworkFlow.EdgeDisjointPaths
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(G : DirectedGraph V)
(k : ℕ)
:
Type u_1
- disjoint : PairwiseEdgeDisjoint self.paths
Instances For
noncomputable def
NetworkFlow.minSTCutSize
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(G : DirectedGraph V)
:
Instances For
noncomputable def
NetworkFlow.maxEdgeDisjointPaths
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(G : DirectedGraph V)
:
Instances For
def
NetworkFlow.DirectedGraph.toFlowNetwork
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(G : DirectedGraph V)
:
Instances For
theorem
NetworkFlow.maxEdgeDisjointPaths_le_minSTCutSize
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(G : DirectedGraph V)
:
def
NetworkFlow.DirectedGraph.removePathEdges
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(G : DirectedGraph V)
(p : DirPath G)
:
Instances For
theorem
NetworkFlow.exists_maxFlow
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(N : FlowNetwork V)
:
∃ (fl : STFlow N), NoAugmentingPath N fl
theorem
NetworkFlow.cutCapacity_eq_crossing_edges
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(G : DirectedGraph V)
(C : STCut G.toFlowNetwork)
:
theorem
NetworkFlow.unit_cap_max_flow_integral
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(G : DirectedGraph V)
(fl : STFlow G.toFlowNetwork)
(hmax : NoAugmentingPath G.toFlowNetwork fl)
(u v : V)
:
theorem
NetworkFlow.integral_unit_flow_path_extraction
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(G : DirectedGraph V)
(fl : STFlow G.toFlowNetwork)
(hint : ∀ (u v : V), fl.f u v = 0 ∨ fl.f u v = 1)
(k : ℕ)
(hval : flowValue G.toFlowNetwork fl = ↑k)
:
Nonempty (EdgeDisjointPaths G k)
theorem
NetworkFlow.ford_fulkerson_integrality_paths
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(G : DirectedGraph V)
(fl : STFlow G.toFlowNetwork)
(hmax : NoAugmentingPath G.toFlowNetwork fl)
(k : ℕ)
(hval : flowValue G.toFlowNetwork fl = ↑k)
:
Nonempty (EdgeDisjointPaths G k)
theorem
NetworkFlow.unit_flow_to_paths
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(G : DirectedGraph V)
:
theorem
NetworkFlow.minSTCutSize_le_maxEdgeDisjointPaths
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(G : DirectedGraph V)
: