- numContractions : ℕ
- vertexCounts : Fin (self.numContractions + 1) → ℕ
- contraction_reduces (i : Fin self.numContractions) : self.vertexCounts ⟨↑i + 1, ⋯⟩ + 2 ≤ self.vertexCounts ⟨↑i, ⋯⟩
Instances For
Instances For
theorem
SimpleGraph.matching_edgeSet_ncard_le_card_div_two
{V : Type u_1}
[Fintype V]
[DecidableEq V]
{G : SimpleGraph V}
[DecidableRel G.Adj]
(M : G.Subgraph)
(hM : M.IsMatching)
:
theorem
SimpleGraph.edmonds_phase_bound
{V : Type u_1}
[Fintype V]
[DecidableEq V]
{G : SimpleGraph V}
[DecidableRel G.Adj]
(exec : G.EdmondsExecution)
:
theorem
SimpleGraph.edmonds_total_bound
{V : Type u_1}
[Fintype V]
[DecidableEq V]
{G : SimpleGraph V}
[DecidableRel G.Adj]
(exec : G.EdmondsExecution)
:
exec.numPhases * G.edgeFinset.card * (Fintype.card V / 2 + 1) ≤ Fintype.card V / 2 * G.edgeFinset.card * Fintype.card V
theorem
SimpleGraph.symmDiff_edgeSet_ncard_eq
{V : Type u_2}
[DecidableEq V]
{G : SimpleGraph V}
(M : G.Subgraph)
(hM : M.IsMatching)
{u v : V}
(p : G.Walk u v)
(haug : p.IsAugmentingPath M)
(hfin : M.edgeSet.Finite)
:
theorem
SimpleGraph.subgraph_edgeSet_finite
{V : Type u_1}
[Fintype V]
[DecidableEq V]
{G : SimpleGraph V}
[DecidableRel G.Adj]
(M : G.Subgraph)
:
theorem
SimpleGraph.exists_matching_succ_ncard
{V : Type u_1}
[Fintype V]
[DecidableEq V]
{G : SimpleGraph V}
[DecidableRel G.Adj]
(M : G.Subgraph)
(hM : M.IsMatching)
(hnmax : ¬M.IsMaxMatching)
:
theorem
SimpleGraph.exists_max_matching
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(G : SimpleGraph V)
[DecidableRel G.Adj]
:
∃ (M : G.Subgraph), M.IsMaxMatching
theorem
SimpleGraph.exists_matching_of_size
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(G : SimpleGraph V)
[DecidableRel G.Adj]
(Mmax : G.Subgraph)
(hMmax : Mmax.IsMaxMatching)
(k : ℕ)
(hk : k ≤ Mmax.edgeSet.ncard)
:
theorem
SimpleGraph.edmonds_execution_exists
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(G : SimpleGraph V)
[DecidableRel G.Adj]
:
∃ (exec : G.EdmondsExecution), exec.numPhases ≤ Fintype.card V / 2
theorem
SimpleGraph.edmonds_algorithm_runtime
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(G : SimpleGraph V)
[DecidableRel G.Adj]
:
∃ (M : G.Subgraph),
M.IsMaxMatching ∧ ∃ numPhases ≤ Fintype.card V / 2,
numPhases * G.edgeFinset.card * (Fintype.card V / 2 + 1) ≤ Fintype.card V / 2 * G.edgeFinset.card * Fintype.card V