Documentation

Epidemics.Giant

The supercritical giant component of G(n, p) (EPI-3) #

M. Krivelevich and B. Sudakov, The phase transition in random graphs: a simple proof, Random Structures & Algorithms 43 (2013) 131–138, arXiv:1201.6529.

The random graph G(n, p) is bond percolation on the complete graph: perc ⊤ ω with i.i.d. Bernoulli(p) edge coins ω ~ coins p on a vertex type V with n = |V| (Epidemics.ReedFrost, EPI-1). The edge probability p = (1 + ε) / n is written p * n = 1 + ε, which excludes n = 0. The paper's "with high probability" is made quantitative as "with probability at least 1 - C / n", and its "ε > 0 a small enough constant" as ∃ ε₀ > 0, ∀ ε ∈ (0, ε₀].

The proof is the paper's: run the depth-first search of Epidemics.GiantDFS on perc ⊤ ω for N₀ = ⌊θ n²⌋ queries (θ = ε / 2 in the paper). By the principle of deferred decisions (prob_queryAnswers) its answers are i.i.d. Bernoulli(p), so by the Chernoff bounds of FND-3 (Lemma 1, part 2, prob_count_take_far, and its windowed form prob_not_good_le) the numbers of positive answers are close to their means; then the deterministic properties of the search (Epidemics.GiantAnalysis) force a long stack U (a path) and an epoch spanning ε n / 2 vertices. Both arguments are first proved for general parameters (core_path, core_component), whose conditions are the paper's inequalities; the theorems follow by choosing the parameters, and the version for every ε > 0 by taking θ small in terms of ε (instead of θ = ε / 2).

theorem Epidemics.tail_le_div {n N₀ t₁ : ℕ} {p δ η lam : ℝ} (hn : 1 ≤ ↑n) (hη : 0 < η) (hlam : 0 < lam) (hδ : 0 < δ) (hN₀ : ↑N₀ ≤ ↑n ^ 2 / 4) (ht₁ : η * lam * ↑n - 1 ≤ ↑t₁ * p) :
(↑N₀ + 3) * Real.exp (-(δ ^ 2 * (↑t₁ * p) / 3)) ≤ 4 * Real.exp (δ ^ 2 / 3) * (6 / (δ ^ 2 * η * lam / 3) ^ 3) / ↑n

The bound (N₀ + 3) e^{-δ² t₁ p / 3} ≤ C / n once t₁ p ≥ η λ n - 1 and N₀ ≤ n² / 4.

theorem Epidemics.exists_component_of_good {V : Type u_1} [Fintype V] [DecidableEq V] (e₀ : Sym2 V) (ω : Sym2 V → Bool) {N₀ t₁ : ℕ} {p δ c : ℝ} (hn4 : 4 ≤ Fintype.card V) (hN₀N : N₀ ≤ (Fintype.card V).choose 2) (ht₁N₀ : t₁ ≤ N₀) (h0 : 0 ≤ p) (hδ0 : 0 < δ) (hδ1 : δ < 1) (hi : ↑N₀ < (↑(Fintype.card V) / 3 - 1 - (1 + δ) * (↑N₀ * p)) * ((2 * ↑(Fintype.card V) - 5) / 3)) (hcontr : 1 < (1 - δ) * p * (↑(Fintype.card V) - ↑N₀ * p)) (hc : c * ↑(Fintype.card V) ≤ (1 - δ) * (↑N₀ * p) - (1 + δ) * (↑t₁ * p)) (hG : Good p N₀ t₁ δ (queryAnswers (DFS.nextQuery e₀) ω N₀)) :
∃ (K : (perc ⊤ ω).ConnectedComponent), c * ↑(Fintype.card V) ≤ ↑K.supp.ncard

The deterministic part of the proof of Theorem 2: on typical answers (Good), and under the inequalities of the paper (hi: |S ∪ U| < n/3 at time N₀; hcontr: no epoch starts after t₁; hc: enough positive answers after t₁), the current epoch of the search on perc ⊤ ω lies in a component with at least c n vertices.

The paper's inequalities, for large n #

theorem Epidemics.ineq_explored {θ δ lam n N₀ q : ℝ} (hδ : 0 ≤ 1 + δ) (h2A : 0 < 2 * (1 / 3 - (1 + δ) * lam * θ) - 3 * θ) (hnA : (5 * (1 / 3 - (1 + δ) * lam * θ) + 2) / (2 * (1 / 3 - (1 + δ) * lam * θ) - 3 * θ) + 1 ≤ n) (hn4 : 4 ≤ n) (hN₀ : N₀ ≤ θ * n ^ 2) (hq : q ≤ θ * lam * n) :
N₀ < (n / 3 - 1 - (1 + δ) * q) * ((2 * n - 5) / 3)

|S ∪ U| < n/3 at time N₀ (proof of Theorem 1): N₀ < (n/3 - 1 - (1 + δ) N₀ p)(2n - 5)/3 when N₀ ≤ θ n², N₀ p ≤ θ λ n and n is large.

theorem Epidemics.ineq_contr {θ δ lam n p q : ℝ} (h0 : 0 ≤ p) (hδ1 : δ < 1) (hp : p * n = lam) (hq : q ≤ θ * lam * n) (hC2 : 1 < (1 - δ) * lam * (1 - lam * θ)) :
1 < (1 - δ) * p * (n - q)

No epoch starts after t₁ (proof of Theorem 2): (1 - δ) p (n - N₀ p) > 1.

theorem Epidemics.ineq_count {θ η δ lam c n p N₀ t₁ : ℝ} (h0 : 0 ≤ p) (h1 : p ≤ 1) (hδ0 : 0 < δ) (hδ1 : δ < 1) (hlam : 1 < lam) (hp : p * n = lam) (hβpos : 0 < ((1 - δ) * θ - (1 + δ) * η) * lam - c) (hnβ : lam / (((1 - δ) * θ - (1 + δ) * η) * lam - c) + 1 ≤ n) (hN₀ : θ * n ^ 2 - 1 ≤ N₀) (ht₁ : t₁ * p ≤ η * lam * n) :
c * n ≤ (1 - δ) * (N₀ * p) - (1 + δ) * (t₁ * p)

Enough positive answers after t₁ (proof of Theorem 2): c n ≤ (1 - δ) N₀ p - (1 + δ) t₁ p.

theorem Epidemics.core_component {lam θ η δ c : ℝ} (hlam : 1 < lam) (hδ0 : 0 < δ) (hδ1 : δ < 1) (hη : 0 < η) (hηθ : η ≤ θ) (hθ : θ ≤ 1 / 4) (hC1 : θ < 2 / 3 * (1 / 3 - (1 + δ) * lam * θ)) (hC2 : 1 < (1 - δ) * lam * (1 - lam * θ)) (hc : c < ((1 - δ) * θ - (1 + δ) * η) * lam) :
∃ (C : ℝ), ∀ (V : Type u_1) [inst : Fintype V] [inst_1 : DecidableEq V] (p : ℝ) (h0 : 0 ≤ p) (h1 : p ≤ 1), p * ↑(Fintype.card V) = lam → 1 - C / ↑(Fintype.card V) ≤ (coins p h0 h1).prob fun (ω : Sym2 V → Bool) => ∃ (K : (perc ⊤ ω).ConnectedComponent), c * ↑(Fintype.card V) ≤ ↑K.supp.ncard

Theorem 2, for general parameters (Krivelevich–Sudakov, proof of Theorem 2): let p n = λ, N₀ = ⌊θ n²⌋ queries, the window t₁ = ⌊η n²⌋ and the relative deviation δ, such that (i) θ < (2/3) (1/3 - (1 + δ) λ θ) (so |S ∪ U| < n/3 at time N₀), (ii) (1 - δ) λ (1 - λ θ) > 1 (so no epoch starts in [t₁, N₀]), and c < ((1 - δ) θ - (1 + δ) η) λ (the positive answers in [t₁, N₀]). Then G(n, p) has a component with at least c n vertices with probability at least 1 - C / n.

theorem Epidemics.ineq_mean_lo {θ δ lam n p N₀ : ℝ} (h0 : 0 ≤ p) (h1 : p ≤ 1) (hδ0 : 0 < δ) (hδ1 : δ < 1) (hp : p * n = lam) (hN₀ : θ * n ^ 2 - 1 ≤ N₀) :
(1 - δ) * θ * lam * n - 1 ≤ (1 - δ) * (N₀ * p)

(1 - δ) N₀ p ≥ (1 - δ) θ λ n - 1 when N₀ ≥ θ n² - 1, p n = λ, p ≤ 1.

theorem Epidemics.ineq_path_lo {θ δ lam ℓ n Xlo : ℝ} (hα : 0 < (1 - δ) * lam * θ - ℓ) (hn : 2 / ((1 - δ) * lam * θ - ℓ) + 1 ≤ n) (hX : (1 - δ) * θ * lam * n - 1 ≤ Xlo) :
ℓ * n + 1 ≤ Xlo

The stack bound ℓ n + 1 ≤ (1 - δ) N₀ p (proof of Theorem 1), for large n.

theorem Epidemics.ineq_path_one {θ δ lam ℓ n N₀ Xlo : ℝ} (hn0 : 0 < n) (hN₀ : N₀ ≤ θ * n ^ 2) (hα : 0 < (1 - δ) * lam * θ - ℓ) (hγ : 0 < 1 - (1 - δ) * lam * θ) (hC3 : θ < ((1 - δ) * lam * θ - ℓ) * (1 - (1 - δ) * lam * θ)) (hn : 2 * (1 - (1 - δ) * lam * θ) / (((1 - δ) * lam * θ - ℓ) * (1 - (1 - δ) * lam * θ) - θ) + 1 ≤ n) (hn2 : 2 / ((1 - δ) * lam * θ - ℓ) + 1 ≤ n) (hXlo : (1 - δ) * θ * lam * n - 1 ≤ Xlo) (hXhi : Xlo ≤ (1 - δ) * θ * lam * n) :
N₀ < (Xlo - (ℓ * n + 1)) * (n - Xlo)

N₀ < (Xlo - (ℓ n + 1)) (n - Xlo) (proof of Theorem 1), for large n.

theorem Epidemics.ineq_path_two {θ ℓ n N₀ : ℝ} (hn0 : 0 < n) (hN₀ : N₀ ≤ θ * n ^ 2) (hC4 : θ < 2 / 3 * (1 / 3 - ℓ)) (hn : 2 / 3 / (2 / 3 * (1 / 3 - ℓ) - θ) + 1 ≤ n) :
N₀ < (n / 3 - (ℓ * n + 1)) * (2 * n / 3)

N₀ < (n/3 - (ℓ n + 1)) (2n/3) (proof of Theorem 1), for large n.

theorem Epidemics.exists_path_of_typical {V : Type u_1} [Fintype V] [DecidableEq V] (e₀ : Sym2 V) (ω : Sym2 V → Bool) {N₀ : ℕ} {p δ ℓ : ℝ} (hn4 : 4 ≤ Fintype.card V) (hN₀N : N₀ ≤ (Fintype.card V).choose 2) (hℓ : 0 ≤ ℓ) (hi : ↑N₀ < (↑(Fintype.card V) / 3 - 1 - (1 + δ) * (↑N₀ * p)) * ((2 * ↑(Fintype.card V) - 5) / 3)) (hL : ℓ * ↑(Fintype.card V) + 1 ≤ (1 - δ) * (↑N₀ * p)) (h1 : ↑N₀ < ((1 - δ) * (↑N₀ * p) - (ℓ * ↑(Fintype.card V) + 1)) * (↑(Fintype.card V) - (1 - δ) * (↑N₀ * p))) (h2 : ↑N₀ < (↑(Fintype.card V) / 3 - (ℓ * ↑(Fintype.card V) + 1)) * (2 * ↑(Fintype.card V) / 3)) (hG : (1 - δ) * (↑N₀ * p) ≤ ↑(List.count true (List.take N₀ (queryAnswers (DFS.nextQuery e₀) ω N₀))) ∧ ↑(List.count true (List.take N₀ (queryAnswers (DFS.nextQuery e₀) ω N₀))) ≤ (1 + δ) * (↑N₀ * p)) :
∃ (u : V) (v : V) (q : (perc ⊤ ω).Walk u v), q.IsPath ∧ ℓ * ↑(Fintype.card V) ≤ ↑q.length

The deterministic part of the proof of Theorem 1, part 2: on typical answers, and under the inequalities of the paper, the stack of the search on perc ⊤ ω at time N₀ is a path with at least ℓ n edges.

theorem Epidemics.core_path {lam θ δ ℓ : ℝ} (hlam : 0 < lam) (hδ0 : 0 < δ) (hδ1 : δ < 1) (hθ0 : 0 < θ) (hθ : θ ≤ 1 / 4) (hℓ : 0 ≤ ℓ) (hC1 : θ < 2 / 3 * (1 / 3 - (1 + δ) * lam * θ)) (hC3 : θ < ((1 - δ) * lam * θ - ℓ) * (1 - (1 - δ) * lam * θ)) (hC4 : θ < 2 / 3 * (1 / 3 - ℓ)) :
∃ (C : ℝ), ∀ (V : Type u_1) [inst : Fintype V] [inst_1 : DecidableEq V] (p : ℝ) (h0 : 0 ≤ p) (h1 : p ≤ 1), p * ↑(Fintype.card V) = lam → 1 - C / ↑(Fintype.card V) ≤ (coins p h0 h1).prob fun (ω : Sym2 V → Bool) => ∃ (u : V) (v : V) (q : (perc ⊤ ω).Walk u v), q.IsPath ∧ ℓ * ↑(Fintype.card V) ≤ ↑q.length

Theorem 1, part 2, for general parameters (Krivelevich–Sudakov, proof of Theorem 1): let p n = λ, N₀ = ⌊θ n²⌋ queries and the relative deviation δ such that (i) θ < (2/3)(1/3 - (1 + δ) λ θ) (so |S ∪ U| < n/3 at time N₀), and (ii) θ < ((1 - δ) λ θ - ℓ)(1 - (1 - δ) λ θ), θ < (2/3)(1/3 - ℓ) (so |U| > ℓ n at time N₀). Then G(n, p) has a path with at least ℓ n edges with probability at least 1 - C / n.

theorem Epidemics.exists_long_path :
∃ (ε₀ : ℝ), 0 < ε₀ ∧ ∀ (ε : ℝ), 0 < ε → ε ≤ ε₀ → ∃ (C : ℝ), ∀ (V : Type u_1) [inst : Fintype V] [inst_1 : DecidableEq V] (p : ℝ) (h0 : 0 ≤ p) (h1 : p ≤ 1), p * ↑(Fintype.card V) = 1 + ε → 1 - C / ↑(Fintype.card V) ≤ (coins p h0 h1).prob fun (ω : Sym2 V → Bool) => ∃ (u : V) (v : V) (q : (perc ⊤ ω).Walk u v), q.IsPath ∧ ε ^ 2 * ↑(Fintype.card V) / 5 ≤ ↑q.length

Long path (Krivelevich–Sudakov, Theorem 1, part 2; Ajtai, Komlós and Szemerédi): for every small enough ε > 0 there is C such that, for p = (1 + ε) / n, the random graph G(n, p) (bond percolation perc ⊤ ω on the complete graph on n vertices, with i.i.d. Bernoulli(p) edge coins ω) contains a path of length (number of edges) at least ε² n / 5 with probability at least 1 - C / n.

theorem Epidemics.exists_giant_component :
∃ (ε₀ : ℝ), 0 < ε₀ ∧ ∀ (ε : ℝ), 0 < ε → ε ≤ ε₀ → ∃ (C : ℝ), ∀ (V : Type u_1) [inst : Fintype V] [inst_1 : DecidableEq V] (p : ℝ) (h0 : 0 ≤ p) (h1 : p ≤ 1), p * ↑(Fintype.card V) = 1 + ε → 1 - C / ↑(Fintype.card V) ≤ (coins p h0 h1).prob fun (ω : Sym2 V → Bool) => ∃ (K : (perc ⊤ ω).ConnectedComponent), ε * ↑(Fintype.card V) / 2 ≤ ↑K.supp.ncard

Giant component (Krivelevich–Sudakov, Theorem 2): for every small enough ε > 0 there is C such that, for p = (1 + ε) / n, the random graph G(n, p) (bond percolation perc ⊤ ω on the complete graph on n vertices) has a connected component with at least ε n / 2 vertices with probability at least 1 - C / n.

theorem Epidemics.exists_linear_component (ε : ℝ) (hε : 0 < ε) :
∃ (c : ℝ), 0 < c ∧ ∃ (C : ℝ), ∀ (V : Type u_1) [inst : Fintype V] [inst_1 : DecidableEq V] (p : ℝ) (h0 : 0 ≤ p) (h1 : p ≤ 1), p * ↑(Fintype.card V) = 1 + ε → 1 - C / ↑(Fintype.card V) ≤ (coins p h0 h1).prob fun (ω : Sym2 V → Bool) => ∃ (K : (perc ⊤ ω).ConnectedComponent), c * ↑(Fintype.card V) ≤ ↑K.supp.ncard

Supercritical phase (Erdős and Rényi, as stated in the abstract of Krivelevich–Sudakov): for every ε > 0 there are c > 0 and C such that, for p = (1 + ε) / n, the random graph G(n, p) has a connected component with at least c n vertices with probability at least 1 - C / n.