Parity Helps to Compute Majority Igor Carboni Oliveira Rahul - - PowerPoint PPT Presentation

parity helps to compute majority
SMART_READER_LITE
LIVE PREVIEW

Parity Helps to Compute Majority Igor Carboni Oliveira Rahul - - PowerPoint PPT Presentation

Parity Helps to Compute Majority Igor Carboni Oliveira Rahul Santhanam Srikanth Srinivasan Computational Complexity Conference 2019 1 Background and Motivation 2 Bounded-depth boolean circuits AC 0 : Bounded-depth circuits with AND , OR


slide-1
SLIDE 1

Parity Helps to Compute Majority

Igor Carboni Oliveira Rahul Santhanam Srikanth Srinivasan

Computational Complexity Conference 2019

1

slide-2
SLIDE 2

Background and Motivation

2

slide-3
SLIDE 3

Bounded-depth boolean circuits

◮ AC0: Bounded-depth circuits with AND, OR, NOT gates. ◮ A model that captures fast parallel computations. ◮ Close connections to logic and finite model theory.

3

slide-4
SLIDE 4

We know a lot about AC0

◮ Explicit lower bounds: 2Ω(n1/(d−1)) for Parityn and Majorityn. ◮ Lower bound techniques have led to several advances: – Learning Algorithms for AC0 using random examples. – PRGs for AC0 with poly-log seed length. – Exponential lower bounds for AC0-Frege.

4

slide-5
SLIDE 5

We know a lot about AC0

◮ Explicit lower bounds: 2Ω(n1/(d−1)) for Parityn and Majorityn. ◮ Lower bound techniques have led to several advances: – Learning Algorithms for AC0 using random examples. – PRGs for AC0 with poly-log seed length. – Exponential lower bounds for AC0-Frege.

4

slide-6
SLIDE 6

This talk: AC0[⊕] circuits

◮ AC0[⊕]: Extension of AC0 by ⊕ (parity) gates. ◮ Parities can be very helpful: error-correcting codes, hash functions, GF(2)-polynomials, combinatorial designs, . . . ◮ Explicit lower bounds: 2Ω(n1/2(d−1)) for Majorityn. ◮ AC0 and AC0[⊕] are significantly different circuit classes: Example: depth hierarchy for AC0, depth collapse for AC0[⊕].

5

slide-7
SLIDE 7

This talk: AC0[⊕] circuits

◮ AC0[⊕]: Extension of AC0 by ⊕ (parity) gates. ◮ Parities can be very helpful: error-correcting codes, hash functions, GF(2)-polynomials, combinatorial designs, . . . ◮ Explicit lower bounds: 2Ω(n1/2(d−1)) for Majorityn. ◮ AC0 and AC0[⊕] are significantly different circuit classes: Example: depth hierarchy for AC0, depth collapse for AC0[⊕].

5

slide-8
SLIDE 8

This talk: AC0[⊕] circuits

◮ AC0[⊕]: Extension of AC0 by ⊕ (parity) gates. ◮ Parities can be very helpful: error-correcting codes, hash functions, GF(2)-polynomials, combinatorial designs, . . . ◮ Explicit lower bounds: 2Ω(n1/2(d−1)) for Majorityn. ◮ AC0 and AC0[⊕] are significantly different circuit classes: Example: depth hierarchy for AC0, depth collapse for AC0[⊕].

5

slide-9
SLIDE 9

AC0[⊕] and its challenges

◮ Many fundamental questions remain wide open for AC0[⊕]. – Can we learn AC0[⊕] using random examples? – Are there PRGs of seed length o(n)? – Does every tautology admit a short AC0[⊕]-Frege proof?

6

slide-10
SLIDE 10

AC0 versus AC0[⊕]

◮ Our primitive understanding of AC0[⊕] is reflected in part on existing lower bounds: – Majority is one of the most studied boolean functions. – Depth-d AC0 complexity of Majority is 2

Θ(n1/(d−1)) (1980’s).

– Best known AC0[⊕] lower bound is 2Ω(n1/2(d−1)) for any f ∈ NP.

(Razborov-Smolensky approximation method, 1980’s)

  • Question. Can ⊕ gates help us computing Majority?

7

slide-11
SLIDE 11

AC0 versus AC0[⊕]

◮ Our primitive understanding of AC0[⊕] is reflected in part on existing lower bounds: – Majority is one of the most studied boolean functions. – Depth-d AC0 complexity of Majority is 2

Θ(n1/(d−1)) (1980’s).

– Best known AC0[⊕] lower bound is 2Ω(n1/2(d−1)) for any f ∈ NP.

(Razborov-Smolensky approximation method, 1980’s)

  • Question. Can ⊕ gates help us computing Majority?

7

slide-12
SLIDE 12

AC0 versus AC0[⊕]

◮ Our primitive understanding of AC0[⊕] is reflected in part on existing lower bounds: – Majority is one of the most studied boolean functions. – Depth-d AC0 complexity of Majority is 2

Θ(n1/(d−1)) (1980’s).

– Best known AC0[⊕] lower bound is 2Ω(n1/2(d−1)) for any f ∈ NP.

(Razborov-Smolensky approximation method, 1980’s)

  • Question. Can ⊕ gates help us computing Majority?

7

slide-13
SLIDE 13

AC0 versus AC0[⊕]

◮ Our primitive understanding of AC0[⊕] is reflected in part on existing lower bounds: – Majority is one of the most studied boolean functions. – Depth-d AC0 complexity of Majority is 2

Θ(n1/(d−1)) (1980’s).

– Best known AC0[⊕] lower bound is 2Ω(n1/2(d−1)) for any f ∈ NP.

(Razborov-Smolensky approximation method, 1980’s)

  • Question. Can ⊕ gates help us computing Majority?

7

slide-14
SLIDE 14

Why should we care?

  • 1. Combinatorics: huge gap between 2n1/(d−1) and 2n1/2(d−1).
  • 2. Can we beat the “obviously” optimal algorithm?
  • 3. Parity gates play crucial role in hardness magnification.

Example: “a layer of parities away from NC1 lower bounds”.

  • 4. Better understanding of circuit complexity of a class C often

leads to progress w.r.t. related questions.

8

slide-15
SLIDE 15

Why should we care?

  • 1. Combinatorics: huge gap between 2n1/(d−1) and 2n1/2(d−1).
  • 2. Can we beat the “obviously” optimal algorithm?
  • 3. Parity gates play crucial role in hardness magnification.

Example: “a layer of parities away from NC1 lower bounds”.

  • 4. Better understanding of circuit complexity of a class C often

leads to progress w.r.t. related questions.

8

slide-16
SLIDE 16

Why should we care?

  • 1. Combinatorics: huge gap between 2n1/(d−1) and 2n1/2(d−1).
  • 2. Can we beat the “obviously” optimal algorithm?
  • 3. Parity gates play crucial role in hardness magnification.

Example: “a layer of parities away from NC1 lower bounds”.

  • 4. Better understanding of circuit complexity of a class C often

leads to progress w.r.t. related questions.

8

slide-17
SLIDE 17

Why should we care?

  • 1. Combinatorics: huge gap between 2n1/(d−1) and 2n1/2(d−1).
  • 2. Can we beat the “obviously” optimal algorithm?
  • 3. Parity gates play crucial role in hardness magnification.

Example: “a layer of parities away from NC1 lower bounds”.

  • 4. Better understanding of circuit complexity of a class C often

leads to progress w.r.t. related questions.

8

slide-18
SLIDE 18

Results

9

slide-19
SLIDE 19

Informal Summary

◮ Neither the trivial upper bound of 2

O(n1/(d−1)) gates nor the

Razborov-Smolensky lower bound 2Ω(n1/2(d−1)) is tight.

Our new upper and lower bounds for AC0[⊕] show that:

◮ Parity gates can speedup the computation of Majority for each large depth d ∈ N. ◮ Indeed, the AC0 and AC0[⊕] complexities are similar at depth 3, but parity gates significantly help at depth 4.

10

slide-20
SLIDE 20

Informal Summary

◮ Neither the trivial upper bound of 2

O(n1/(d−1)) gates nor the

Razborov-Smolensky lower bound 2Ω(n1/2(d−1)) is tight.

Our new upper and lower bounds for AC0[⊕] show that:

◮ Parity gates can speedup the computation of Majority for each large depth d ∈ N. ◮ Indeed, the AC0 and AC0[⊕] complexities are similar at depth 3, but parity gates significantly help at depth 4.

10

slide-21
SLIDE 21

Divide-and-conquer is not optimal for AC0[⊕] Recall: For d ≥ 2, the depth-d AC0 complexity of Majorityn is 2

  • Θ
  • n1/(d−1)

.

Theorem 1. Let d ≥ 5 be an integer. Majority on n bits can be computed by depth-d AC0[⊕] circuits of size 2

  • O
  • n

2 3 · 1 (d−4)

. ◮ A similar upper bound holds for symmetric functions and linear threshold functions.

11

slide-22
SLIDE 22

Divide-and-conquer is not optimal for AC0[⊕] Recall: For d ≥ 2, the depth-d AC0 complexity of Majorityn is 2

  • Θ
  • n1/(d−1)

.

Theorem 1. Let d ≥ 5 be an integer. Majority on n bits can be computed by depth-d AC0[⊕] circuits of size 2

  • O
  • n

2 3 · 1 (d−4)

. ◮ A similar upper bound holds for symmetric functions and linear threshold functions.

11

slide-23
SLIDE 23

Strengthening Razborov-Smolensky Razborov-Smolensky The depth-d AC0[⊕] complexity of Majorityn is 2Ω

  • n1/(2d−2)

.

Theorem 2. Let d ≥ 3 be an integer. Majority on n bits requires depth-d AC0[⊕] circuits of size 2Ω

  • n1/(2d−4)

. ◮ A small improvement of explicit lower bounds for f ∈ NP. ◮ This improvement is significant for very small d.

12

slide-24
SLIDE 24

Strengthening Razborov-Smolensky Razborov-Smolensky The depth-d AC0[⊕] complexity of Majorityn is 2Ω

  • n1/(2d−2)

.

Theorem 2. Let d ≥ 3 be an integer. Majority on n bits requires depth-d AC0[⊕] circuits of size 2Ω

  • n1/(2d−4)

. ◮ A small improvement of explicit lower bounds for f ∈ NP. ◮ This improvement is significant for very small d.

12

slide-25
SLIDE 25

The small depth regime New lower bound + extension of upper bound techniques yield:

Corollary 1. The depth-3 AC0[⊕] circuit size complexity of Majority is 2

Θ(n1/2).

The depth-4 AC0[⊕] circuit size complexity of Majority is 2

Θ(n1/4).

◮ Parity gates significantly help at depth 4 but not at depth 3.

13

slide-26
SLIDE 26

Techniques: AC0[⊕] Upper Bounds

14

slide-27
SLIDE 27

Improved upper bound for all large depths

Theorem 1. Let d ≥ 5 be an integer. Majority on n bits can be computed by depth-d AC0[⊕] circuits of size 2

  • O
  • n

2 3 · 1 (d−4)

. Ei(y) =    1 if |y|1 = i,

  • therwise.

Di,j(y) =    1 if |y|1 = i, if |y|1 = j. Goal: AC0[⊕] circuits of size ≈ 2n2/3d for all Di,j, 0 ≤ i = j ≤ n.

15

slide-28
SLIDE 28

Improved upper bound for all large depths

Theorem 1. Let d ≥ 5 be an integer. Majority on n bits can be computed by depth-d AC0[⊕] circuits of size 2

  • O
  • n

2 3 · 1 (d−4)

. Ei(y) =    1 if |y|1 = i,

  • therwise.

Di,j(y) =    1 if |y|1 = i, if |y|1 = j. Goal: AC0[⊕] circuits of size ≈ 2n2/3d for all Di,j, 0 ≤ i = j ≤ n.

15

slide-29
SLIDE 29

Improved upper bound for all large depths

Theorem 1. Let d ≥ 5 be an integer. Majority on n bits can be computed by depth-d AC0[⊕] circuits of size 2

  • O
  • n

2 3 · 1 (d−4)

. Ei(y) =    1 if |y|1 = i,

  • therwise.

Di,j(y) =    1 if |y|1 = i, if |y|1 = j. Goal: AC0[⊕] circuits of size ≈ 2n2/3d for all Di,j, 0 ≤ i = j ≤ n.

15

slide-30
SLIDE 30

The Di,j partial boolean function

16

slide-31
SLIDE 31

Circuit for Di,j

◮ We consider the value |i − j|: – Small regime: |i − j| ≤ n1/3. We use an “algebraic” construction. This circuit relies on a F2 polynomial, divide-and-conquer, and needs ⊕ gates. – Large regime: |i − j| > n1/3. We use a “combinatorial” construction. This circuit relies on a probabilistic construction of AC0 circuits for the Coin Problem.

17

slide-32
SLIDE 32

Circuit for Di,j

◮ We consider the value |i − j|: – Small regime: |i − j| ≤ n1/3. We use an “algebraic” construction. This circuit relies on a F2 polynomial, divide-and-conquer, and needs ⊕ gates. – Large regime: |i − j| > n1/3. We use a “combinatorial” construction. This circuit relies on a probabilistic construction of AC0 circuits for the Coin Problem.

17

slide-33
SLIDE 33

|i − j| ≤ n1/3: The algebraic construction I

18

slide-34
SLIDE 34

|i − j| ≤ n1/3: The algebraic construction II ◮ Q(x1, . . . , xn) is defined over Z. We take a homomorphism ψ: Z → F2. P(x) =

ℓ−1

  • t=0

bt · Pt(x) over F2, where ℓ = (i − j) + 1. ◮ P(x) computes Di,j(x) and has degree at most ℓ ≤ n1/3. – We would like to compute P(x) in depth-d AC0[⊕]. – Goal: elementary symmetric polynomials Q1, . . . , Qℓ, where ℓ ≤ n1/3.

19

slide-35
SLIDE 35

|i − j| ≤ n1/3: The algebraic construction II ◮ Q(x1, . . . , xn) is defined over Z. We take a homomorphism ψ: Z → F2. P(x) =

ℓ−1

  • t=0

bt · Pt(x) over F2, where ℓ = (i − j) + 1. ◮ P(x) computes Di,j(x) and has degree at most ℓ ≤ n1/3. – We would like to compute P(x) in depth-d AC0[⊕]. – Goal: elementary symmetric polynomials Q1, . . . , Qℓ, where ℓ ≤ n1/3.

19

slide-36
SLIDE 36

|i − j| ≤ n1/3: The algebraic construction II ◮ Q(x1, . . . , xn) is defined over Z. We take a homomorphism ψ: Z → F2. P(x) =

ℓ−1

  • t=0

bt · Pt(x) over F2, where ℓ = (i − j) + 1. ◮ P(x) computes Di,j(x) and has degree at most ℓ ≤ n1/3. – We would like to compute P(x) in depth-d AC0[⊕]. – Goal: elementary symmetric polynomials Q1, . . . , Qℓ, where ℓ ≤ n1/3.

19

slide-37
SLIDE 37

|i − j| ≤ n1/3: The algebraic construction III Pℓ(x1, . . . , xn) =

  • S∈([n]

ℓ )

  • j∈S

xj We simulate Pℓ using an algebraic branching program: Divide-and-conquer approach similar to depth-d circuit for STCONN: We can compute Pℓ using and in depth d and size nO(ℓ2/d). For ℓ ≤ n1/3, this gives AC0[⊕] circuit size 2 ˜

O(n2/3d). 20

slide-38
SLIDE 38

|i − j| ≤ n1/3: The algebraic construction III Pℓ(x1, . . . , xn) =

  • S∈([n]

ℓ )

  • j∈S

xj We simulate Pℓ using an algebraic branching program: Divide-and-conquer approach similar to depth-d circuit for STCONN: We can compute Pℓ using and in depth d and size nO(ℓ2/d). For ℓ ≤ n1/3, this gives AC0[⊕] circuit size 2 ˜

O(n2/3d). 20

slide-39
SLIDE 39

|i − j| ≤ n1/3: The algebraic construction III Pℓ(x1, . . . , xn) =

  • S∈([n]

ℓ )

  • j∈S

xj We simulate Pℓ using an algebraic branching program: Divide-and-conquer approach similar to depth-d circuit for STCONN: We can compute Pℓ using and in depth d and size nO(ℓ2/d). For ℓ ≤ n1/3, this gives AC0[⊕] circuit size 2 ˜

O(n2/3d). 20

slide-40
SLIDE 40

|i − j| > n1/3: The combinatorial construction

By moving from n to Θ(n) input bits, we can assume i and j are equally spaced from middle layer. Let i = n/2 + t and j = n/2 − t. Enough to compute Approximate Majority / Coin Problem. Elegant construction [OW07], [Ama09], [RS17]: Can be done by depth-d AC0 circuits of size roughly 2(n/t)1/d. For t = Θ(|i − j|) > n1/3, this size bound is 2O(n2/3d).

21

slide-41
SLIDE 41

|i − j| > n1/3: The combinatorial construction

By moving from n to Θ(n) input bits, we can assume i and j are equally spaced from middle layer. Let i = n/2 + t and j = n/2 − t. Enough to compute Approximate Majority / Coin Problem. Elegant construction [OW07], [Ama09], [RS17]: Can be done by depth-d AC0 circuits of size roughly 2(n/t)1/d. For t = Θ(|i − j|) > n1/3, this size bound is 2O(n2/3d).

21

slide-42
SLIDE 42

|i − j| > n1/3: The combinatorial construction

By moving from n to Θ(n) input bits, we can assume i and j are equally spaced from middle layer. Let i = n/2 + t and j = n/2 − t. Enough to compute Approximate Majority / Coin Problem. Elegant construction [OW07], [Ama09], [RS17]: Can be done by depth-d AC0 circuits of size roughly 2(n/t)1/d. For t = Θ(|i − j|) > n1/3, this size bound is 2O(n2/3d).

21

slide-43
SLIDE 43

|i − j| > n1/3: The combinatorial construction

By moving from n to Θ(n) input bits, we can assume i and j are equally spaced from middle layer. Let i = n/2 + t and j = n/2 − t. Enough to compute Approximate Majority / Coin Problem. Elegant construction [OW07], [Ama09], [RS17]: Can be done by depth-d AC0 circuits of size roughly 2(n/t)1/d. For t = Θ(|i − j|) > n1/3, this size bound is 2O(n2/3d).

21

slide-44
SLIDE 44

Extensions of the Upper Bound

◮ Previous argument works for all symmetric functions. ◮ In depth d = 4, careful depth control + new ingredient: randomly splitting variables into buckets. ◮ Linear Threshold Functions (LTFs) and Polytopes: AC0 reduction to Exact Threshold Functions (ETH) via [HP10], then reduction to symmetric functions (Chinese remaindering).

22

slide-45
SLIDE 45

Extensions of the Upper Bound

◮ Previous argument works for all symmetric functions. ◮ In depth d = 4, careful depth control + new ingredient: randomly splitting variables into buckets. ◮ Linear Threshold Functions (LTFs) and Polytopes: AC0 reduction to Exact Threshold Functions (ETH) via [HP10], then reduction to symmetric functions (Chinese remaindering).

22

slide-46
SLIDE 46

Extensions of the Upper Bound

◮ Previous argument works for all symmetric functions. ◮ In depth d = 4, careful depth control + new ingredient: randomly splitting variables into buckets. ◮ Linear Threshold Functions (LTFs) and Polytopes: AC0 reduction to Exact Threshold Functions (ETH) via [HP10], then reduction to symmetric functions (Chinese remaindering).

22

slide-47
SLIDE 47

Techniques: AC0[⊕] Lower Bounds

23

slide-48
SLIDE 48

Improved lower bounds for all depths

Theorem 2. Let d ≥ 3 be an integer. Majority on n bits requires depth-d AC0[⊕] circuits of size 2Ω

  • n1/(2d−4)

. Recall: Razborov-Smolensky shows a 2Ω(n1/(2d−2)) lower bound. ◮ Intuition: How to save two layers of gates in the polynomial approximation method?

24

slide-49
SLIDE 49

Review of Razborov-Smolensky

◮ Degree Upper Bound: Probabilistic polynomial P over F2 correct on each input w.h.p. AND, OR, NOT, PARITY: error ε and degree log(1/ε) Size-s depth-d AC0[⊕]: deg(P ) ≈ (log s)d−1 and error ε ≤ 1/50. ◮ Degree Lower Bound: For Majorityn, deg(P ) must be ≥

  • n · log(1/ε).

25

slide-50
SLIDE 50

Review of Razborov-Smolensky

◮ Degree Upper Bound: Probabilistic polynomial P over F2 correct on each input w.h.p. AND, OR, NOT, PARITY: error ε and degree log(1/ε) Size-s depth-d AC0[⊕]: deg(P ) ≈ (log s)d−1 and error ε ≤ 1/50. ◮ Degree Lower Bound: For Majorityn, deg(P ) must be ≥

  • n · log(1/ε).

25

slide-51
SLIDE 51

The lower bound

Putting together the approximate degree bounds:

(log s)d−1 ≥

  • n · log(1/ε),

ε = 1/50.

This implies that s ≥ 2Ω(n1/(2d−2)).

(The RS lower bound is maximized when ε = constant.)

26

slide-52
SLIDE 52

Our approach

We follow Razborov-Smolensky, with two new ideas. Idea 1. Exploit error ε = 1/50 of polynomial approximator:

– Error is one-sided and ≤ 1/ log s on say C−1(1). – Hope to exploit stronger degree lower bound of

  • n · log(1/ε).

Idea 2. Random restrictions for AC0[⊕] circuits:

– Prove that w.h.p. a random restriction leads to depth-2 subcircuits of smaller approximate degree. Can do better than (log s)2 on bottom layers.

27

slide-53
SLIDE 53

Our approach

We follow Razborov-Smolensky, with two new ideas. Idea 1. Exploit error ε = 1/50 of polynomial approximator:

– Error is one-sided and ≤ 1/ log s on say C−1(1). – Hope to exploit stronger degree lower bound of

  • n · log(1/ε).

Idea 2. Random restrictions for AC0[⊕] circuits:

– Prove that w.h.p. a random restriction leads to depth-2 subcircuits of smaller approximate degree. Can do better than (log s)2 on bottom layers.

27

slide-54
SLIDE 54

First idea: One-sided approximations

◮ We approximate every non-output gate to error ≤ 1/s2. ◮ By union bound, every input wire of output gate is correct (except with prob. ≤ 1/s). ◮ Approximation method over OR gate is one-sided (“random parities”): zero inputs to OR gate always produce zero.

28

slide-55
SLIDE 55

First idea: Stronger degree lower bound

◮ Smolensky’s approximate degree lower bound: degε(Majorityn) = Ω(

  • n · log(1/ε)).

Can we maintain this lower bound when error on Majority−1

n (0)

is ≤ ε but error on Majority−1

n (1) is as large as 1/50?

◮ We extend the technique of certifying polynomials [KS12] to show this is the case.

29

slide-56
SLIDE 56

First idea: Stronger degree lower bound

◮ Smolensky’s approximate degree lower bound: degε(Majorityn) = Ω(

  • n · log(1/ε)).

Can we maintain this lower bound when error on Majority−1

n (0)

is ≤ ε but error on Majority−1

n (1) is as large as 1/50?

◮ We extend the technique of certifying polynomials [KS12] to show this is the case.

29

slide-57
SLIDE 57

Second idea: random restrictions for AC0[⊕]

◮ We prove the following lemma: Random Restriction Lemma. Let C be a depth-2 AC0[⊕] circuit on n vars and of size s ≥ n2. Let p∗ ≤ 1/(500 log s). Then, Pρ∼Rn

p∗[degε=1/s2(C|ρ) > 10 log s | ρ is balanced ] <

1 10s. ◮ Case analysis based on gates of C (OR, AND, PARITY).

30

slide-58
SLIDE 58

Second idea: random restrictions for AC0[⊕]

◮ We prove the following lemma: Random Restriction Lemma. Let C be a depth-2 AC0[⊕] circuit on n vars and of size s ≥ n2. Let p∗ ≤ 1/(500 log s). Then, Pρ∼Rn

p∗[degε=1/s2(C|ρ) > 10 log s | ρ is balanced ] <

1 10s. ◮ Case analysis based on gates of C (OR, AND, PARITY).

30

slide-59
SLIDE 59

Concluding Remarks

31

slide-60
SLIDE 60

Open Problems

Challenge: What is the AC0[⊕] complexity of Majority? ◮ Close the gap between the 2

  • O
  • n

2 3 · 1 (d−4)

upper bound and the 2Ω

  • n1/(2d−4)

lower bound. ◮ Find more examples where the “optimal” algorithm or circuit can be improved.

32

slide-61
SLIDE 61

Open Problems

Challenge: What is the AC0[⊕] complexity of Majority? ◮ Close the gap between the 2

  • O
  • n

2 3 · 1 (d−4)

upper bound and the 2Ω

  • n1/(2d−4)

lower bound. ◮ Find more examples where the “optimal” algorithm or circuit can be improved.

32