One theorem to rule them all Tyson Williams (UW-M) Counting Complexity Google Madison 2013 9 / 32
One theorem to rule them all Theorem (Schaefer’s dichotomy theorem ’78) For any set of constraint functions F , the problem CSP ( F ) is NP-Complete unless one of the following conditions holds, in which case the problem is in P: Tyson Williams (UW-M) Counting Complexity Google Madison 2013 9 / 32
One theorem to rule them all Theorem (Schaefer’s dichotomy theorem ’78) For any set of constraint functions F , the problem CSP ( F ) is NP-Complete unless one of the following conditions holds, in which case the problem is in P: All constraints in F ... that are not constantly false are true when all its arguments are true; 1 that are not constantly false are true when all its arguments are false; 2 are equivalent to a conjunction of binary clauses; 3 are equivalent to a conjunction of Horn clauses; 4 are equivalent to a conjunction of dual-Horn clauses; 5 are equivalent to a conjunction of affine formula. 6 Tyson Williams (UW-M) Counting Complexity Google Madison 2013 9 / 32
One theorem to rule them all Theorem (Schaefer’s dichotomy theorem ’78) For any set of constraint functions F , the problem CSP ( F ) is NP-Complete unless one of the following conditions holds, in which case the problem is in P: All constraints in F ... that are not constantly false are true when all its arguments are true; 1 that are not constantly false are true when all its arguments are false; 2 are equivalent to a conjunction of binary clauses; 3 are equivalent to a conjunction of Horn clauses; 4 are equivalent to a conjunction of dual-Horn clauses; 5 are equivalent to a conjunction of affine formula. 6 Tyson Williams (UW-M) Counting Complexity Google Madison 2013 9 / 32
One theorem to rule them all Theorem (Schaefer’s dichotomy theorem ’78) For any set of constraint functions F , the problem CSP ( F ) is NP-Complete unless one of the following conditions holds, in which case the problem is in P: All constraints in F ... that are not constantly false are true when all its arguments are true; 1 that are not constantly false are true when all its arguments are false; 2 are equivalent to a conjunction of binary clauses; 3 are equivalent to a conjunction of Horn clauses; 4 are equivalent to a conjunction of dual-Horn clauses; 5 are equivalent to a conjunction of affine formula. 6 Tyson Williams (UW-M) Counting Complexity Google Madison 2013 9 / 32
Three takeaways from Schaefer’s dichotomy theorem Tyson Williams (UW-M) Counting Complexity Google Madison 2013 10 / 32
Three takeaways from Schaefer’s dichotomy theorem Theorist: describes the line between easy problems and hard problems Tyson Williams (UW-M) Counting Complexity Google Madison 2013 10 / 32
Three takeaways from Schaefer’s dichotomy theorem Theorist: describes the line between easy problems and hard problems Practitioner (i.e. employee of Google): a complexity dictionary Tyson Williams (UW-M) Counting Complexity Google Madison 2013 10 / 32
Three takeaways from Schaefer’s dichotomy theorem Theorist: describes the line between easy problems and hard problems Practitioner (i.e. employee of Google): a complexity dictionary Observation: no problems of intermediate complexity Tyson Williams (UW-M) Counting Complexity Google Madison 2013 10 / 32
Three takeaways from Schaefer’s dichotomy theorem Theorist: describes the line between easy problems and hard problems Practitioner (i.e. employee of Google): a complexity dictionary Observation: no problems of intermediate complexity Theorem (Ladner’s theorem ’75) If P � = NP , then there exists problems in NP of intermediate complexity. Tyson Williams (UW-M) Counting Complexity Google Madison 2013 10 / 32
Tyson Williams (UW-M) Counting Complexity Google Madison 2013 11 / 32
http://commons.wikimedia.org/wiki/File:P_np_np-complete_np-hard.svg Tyson Williams (UW-M) Counting Complexity Google Madison 2013 11 / 32
A Motivation for Counting Tyson Williams (UW-M) Counting Complexity Google Madison 2013 12 / 32
Independent Set Want large independent set. Tyson Williams (UW-M) Counting Complexity Google Madison 2013 13 / 32
Independent Set Want large independent set. http://commons.wikimedia.org/wiki/File:Independent_set_graph.svg Tyson Williams (UW-M) Counting Complexity Google Madison 2013 13 / 32
The Facts Problem: IndependentSet Input: A graph G and k ∈ N . Output: “ Yes ” if G contains an independent set of size at least k “ No ” otherwise. Tyson Williams (UW-M) Counting Complexity Google Madison 2013 14 / 32
The Facts Problem: IndependentSet Input: A graph G and k ∈ N . Output: “ Yes ” if G contains an independent set of size at least k “ No ” otherwise. IndependentSet ∈ NP-Complete Tyson Williams (UW-M) Counting Complexity Google Madison 2013 14 / 32
The Facts Problem: IndependentSet Input: A graph G and k ∈ N . Output: “ Yes ” if G contains an independent set of size at least k “ No ” otherwise. IndependentSet ∈ NP-Complete Next question: how close to optimal can we get? Tyson Williams (UW-M) Counting Complexity Google Madison 2013 14 / 32
A Different Approach Let I ( G ) be the set of independent sets in G . Tyson Williams (UW-M) Counting Complexity Google Madison 2013 15 / 32
A Different Approach Let I ( G ) be the set of independent sets in G . Want to randomly sample I from I ( G ) such that Pr( I ) ∝ w ( I ) . Tyson Williams (UW-M) Counting Complexity Google Madison 2013 15 / 32
A Different Approach Let I ( G ) be the set of independent sets in G . Want to randomly sample I from I ( G ) such that Pr( I ) ∝ w ( I ) . Then must have Pr( I ) = w ( I ) Z ( G ) , where � Z ( G ) = w ( I ) . I ∈I ( G ) Tyson Williams (UW-M) Counting Complexity Google Madison 2013 15 / 32
A Different Approach Let I ( G ) be the set of independent sets in G . Want to randomly sample I from I ( G ) such that Pr( I ) ∝ w ( I ) . Then must have Pr( I ) = w ( I ) Z ( G ) , where � Z ( G ) = w ( I ) . I ∈I ( G ) Know as the partition function in statistical physics. Tyson Williams (UW-M) Counting Complexity Google Madison 2013 15 / 32
Weight functions Pr( I ) = w ( I ) � where Z ( G ) = w ( I ) . Z ( G ) I ∈I ( G ) Tyson Williams (UW-M) Counting Complexity Google Madison 2013 16 / 32
Weight functions Pr( I ) = w ( I ) � where Z ( G ) = w ( I ) . Z ( G ) I ∈I ( G ) If w ( I ) = 1, then Z ( G ) = |I ( G ) | is the number of independent sets. Tyson Williams (UW-M) Counting Complexity Google Madison 2013 16 / 32
Weight functions Pr( I ) = w ( I ) � where Z ( G ) = w ( I ) . Z ( G ) I ∈I ( G ) If w ( I ) = 1, then Z ( G ) = |I ( G ) | is the number of independent sets. Statistical physicists considered w ( I ) = λ | I | from some nonnegative λ ∈ R . Tyson Williams (UW-M) Counting Complexity Google Madison 2013 16 / 32
Weight functions Pr( I ) = w ( I ) � where Z ( G ) = w ( I ) . Z ( G ) I ∈I ( G ) If w ( I ) = 1, then Z ( G ) = |I ( G ) | is the number of independent sets. Statistical physicists considered w ( I ) = λ | I | from some nonnegative λ ∈ R . If λ = 1, then Z ( G ) = |I ( G ) | again. Tyson Williams (UW-M) Counting Complexity Google Madison 2013 16 / 32
Weight functions Pr( I ) = w ( I ) � where Z ( G ) = w ( I ) . Z ( G ) I ∈I ( G ) If w ( I ) = 1, then Z ( G ) = |I ( G ) | is the number of independent sets. Statistical physicists considered w ( I ) = λ | I | from some nonnegative λ ∈ R . If λ = 1, then Z ( G ) = |I ( G ) | again. If λ = 0, then Z ( G ) = 1. Tyson Williams (UW-M) Counting Complexity Google Madison 2013 16 / 32
Weight functions Pr( I ) = w ( I ) � where Z ( G ) = w ( I ) . Z ( G ) I ∈I ( G ) If w ( I ) = 1, then Z ( G ) = |I ( G ) | is the number of independent sets. Statistical physicists considered w ( I ) = λ | I | from some nonnegative λ ∈ R . If λ = 1, then Z ( G ) = |I ( G ) | again. If λ = 0, then Z ( G ) = 1. Theorem (Sly,Sun ’12) For d ≥ 3 and λ > λ c ( d ) = ( d − 1) d − 1 ( d − 2) d , unless NP = RP there is no approximation algorithm for the partition function with w ( I ) = λ | I | on d-regular graphs. Tyson Williams (UW-M) Counting Complexity Google Madison 2013 16 / 32
Local Constraints Tyson Williams (UW-M) Counting Complexity Google Madison 2013 17 / 32
#VertexCover Definition A vertex cover of a graph is a set of vertices such that each edge of the graph is incident to at least one vertex in the set. Tyson Williams (UW-M) Counting Complexity Google Madison 2013 18 / 32
#VertexCover Definition A vertex cover of a graph is a set of vertices such that each edge of the graph is incident to at least one vertex in the set. Tyson Williams (UW-M) Counting Complexity Google Madison 2013 18 / 32
#VertexCover Definition A vertex cover of a graph is a set of vertices such that each edge of the graph is incident to at least one vertex in the set. Tyson Williams (UW-M) Counting Complexity Google Madison 2013 18 / 32
#VertexCover Definition A vertex cover of a graph is a set of vertices such that each edge of the graph is incident to at least one vertex in the set. X � � � Tyson Williams (UW-M) Counting Complexity Google Madison 2013 18 / 32
Systematic Approach to #VertexCover G = ( V , E ) � OR( σ ( u ) , σ ( v )) = 1 · 1 · 1 · 1 · 1 · 1 = 1 ( u , v ) ∈ E Tyson Williams (UW-M) Counting Complexity Google Madison 2013 19 / 32
Systematic Approach to #VertexCover G = ( V , E ) � OR( σ ( u ) , σ ( v )) = 1 · 1 · 1 · 1 · 1 · 1 = 1 ( u , v ) ∈ E Tyson Williams (UW-M) Counting Complexity Google Madison 2013 19 / 32
Systematic Approach to #VertexCover G = ( V , E ) 0 σ : V → { 0 , 1 } 1 1 1 � OR( σ ( u ) , σ ( v )) = 1 · 1 · 1 · 1 · 1 · 1 = 1 ( u , v ) ∈ E Tyson Williams (UW-M) Counting Complexity Google Madison 2013 19 / 32
Systematic Approach to #VertexCover G = ( V , E ) 0 σ : V → { 0 , 1 } OR OR OR 1 OR OR 1 1 OR � OR( σ ( u ) , σ ( v )) = 1 · 1 · 1 · 1 · 1 · 1 = 1 ( u , v ) ∈ E Tyson Williams (UW-M) Counting Complexity Google Madison 2013 19 / 32
Systematic Approach to #VertexCover G = ( V , E ) 0 σ : V → { 0 , 1 } OR OR OR 1 OR OR 1 1 OR � OR( σ ( u ) , σ ( v )) = 1 · 1 · 1 · 1 · 1 · 1 = 1 ( u , v ) ∈ E Tyson Williams (UW-M) Counting Complexity Google Madison 2013 19 / 32
Systematic Approach to #VertexCover G = ( V , E ) 0 σ : V → { 0 , 1 } OR OR OR 1 OR OR 1 0 OR � OR( σ ( u ) , σ ( v )) = 1 · 1 · 0 · 1 · 1 · 1 = 0 ( u , v ) ∈ E Tyson Williams (UW-M) Counting Complexity Google Madison 2013 19 / 32
Systematic Approach to #VertexCover G = ( V , E ) σ : V → { 0 , 1 } � � # VertexCover ( G ) = OR( σ ( u ) , σ ( v )) σ : V →{ 0 , 1 } ( u , v ) ∈ E Tyson Williams (UW-M) Counting Complexity Google Madison 2013 19 / 32
Generalize � � OR ( σ ( u ) , σ ( v )) σ : V →{ 0 , 1 } ( u , v ) ∈ E Tyson Williams (UW-M) Counting Complexity Google Madison 2013 20 / 32
Generalize � � OR ( σ ( u ) , σ ( v )) σ : V →{ 0 , 1 } ( u , v ) ∈ E Input Output p q OR( p , q ) 0 0 0 0 1 1 1 0 1 1 1 1 Tyson Williams (UW-M) Counting Complexity Google Madison 2013 20 / 32
Generalize � � f ( σ ( u ) , σ ( v )) σ : V →{ 0 , 1 } ( u , v ) ∈ E Input Output Input Output p q OR( p , q ) p q f ( p , q ) 0 0 0 0 0 w 0 1 1 0 1 x 1 0 1 1 0 y 1 1 1 1 1 z where w , x , y , z ∈ C Tyson Williams (UW-M) Counting Complexity Google Madison 2013 20 / 32
Generalize Partition Function: Z ( · ) � � Z ( G ) = f ( σ ( u ) , σ ( v )) σ : V →{ 0 , 1 } ( u , v ) ∈ E Input Output Input Output p q OR( p , q ) p q f ( p , q ) 0 0 0 0 0 w 0 1 1 0 1 x 1 0 1 1 0 y 1 1 1 1 1 z where w , x , y , z ∈ C Tyson Williams (UW-M) Counting Complexity Google Madison 2013 20 / 32
A Counting Dichotomy Theorem (Cai, Kowalczyk, W ’12) Over 3-regular graphs G, the exact counting problem for any (binary) complex-weighted function f � � Z ( G ) = f ( σ ( u ) , σ ( v )) σ : V →{ 0 , 1 } ( u , v ) ∈ E is either computable in polynomial time or # P -hard. Tyson Williams (UW-M) Counting Complexity Google Madison 2013 21 / 32
Nonlocal Examples Problem: HamiltonianCycle Input: A graph G . Output: “ Yes ” if G contains an Hamiltonian cycle “ No ” otherwise. Tyson Williams (UW-M) Counting Complexity Google Madison 2013 22 / 32
Nonlocal Examples Problem: HamiltonianCycle Input: A graph G . Output: “ Yes ” if G contains an Hamiltonian cycle “ No ” otherwise. Problem: Connected Input: A graph G . Output: “ Yes ” if G is connected “ No ” otherwise. Tyson Williams (UW-M) Counting Complexity Google Madison 2013 22 / 32
Nonlocal Examples Problem: HamiltonianCycle Input: A graph G . Output: “ Yes ” if G contains an Hamiltonian cycle “ No ” otherwise. Problem: Connected Input: A graph G . Output: “ Yes ” if G is connected “ No ” otherwise. Confessions of a theorists: Tyson Williams (UW-M) Counting Complexity Google Madison 2013 22 / 32
Nonlocal Examples Problem: HamiltonianCycle Input: A graph G . Output: “ Yes ” if G contains an Hamiltonian cycle “ No ” otherwise. Problem: Connected Input: A graph G . Output: “ Yes ” if G is connected “ No ” otherwise. Confessions of a theorists: Some proofs of this depending on definition of “local”. Tyson Williams (UW-M) Counting Complexity Google Madison 2013 22 / 32
Nonlocal Examples Problem: HamiltonianCycle Input: A graph G . Output: “ Yes ” if G contains an Hamiltonian cycle “ No ” otherwise. Problem: Connected Input: A graph G . Output: “ Yes ” if G is connected “ No ” otherwise. Confessions of a theorists: Some proofs of this depending on definition of “local”. Formally, just think of these as conjectures. Tyson Williams (UW-M) Counting Complexity Google Madison 2013 22 / 32
Symmetric Function Definition A function is symmetric if invariant under any permutation of its inputs. Tyson Williams (UW-M) Counting Complexity Google Madison 2013 23 / 32
Symmetric Function Definition A function is symmetric if invariant under any permutation of its inputs. Examples: OR 2 = [0 , 1 , 1] AND 3 = [0 , 0 , 0 , 1] EVEN-PARITY 4 = [1 , 0 , 1 , 0 , 1] MAJORITY 5 = [0 , 0 , 0 , 1 , 1 , 1] (= 6 ) = EQUALITY 6 = [1 , 0 , 0 , 0 , 0 , 0 , 1] Tyson Williams (UW-M) Counting Complexity Google Madison 2013 23 / 32
Constraint Graph for #CSP( F ) Instance F = { EVEN-PARITY 3 , MAJORITY 3 , OR 3 } Tyson Williams (UW-M) Counting Complexity Google Madison 2013 24 / 32
Constraint Graph for #CSP( F ) Instance F = { EVEN-PARITY 3 , MAJORITY 3 , OR 3 } EVEN-PARITY 3 ( x , y , z ) ∧ MAJORITY 3 ( x , y , z ) ∧ OR 3 ( x , y , z ) Tyson Williams (UW-M) Counting Complexity Google Madison 2013 24 / 32
Constraint Graph for #CSP( F ) Instance F = { EVEN-PARITY 3 , MAJORITY 3 , OR 3 } EVEN-PARITY 3 ( x , y , z ) ∧ MAJORITY 3 ( x , y , z ) ∧ OR 3 ( x , y , z ) x EVEN-PARITY 3 y MAJORITY 3 z OR 3 Tyson Williams (UW-M) Counting Complexity Google Madison 2013 24 / 32
Constraint Graph for #CSP( F ) Instance F = { EVEN-PARITY 3 , MAJORITY 3 , OR 3 } EVEN-PARITY 3 ( x , y , z ) ∧ MAJORITY 3 ( x , y , z ) ∧ OR 3 ( x , y , z ) x EVEN-PARITY 3 y MAJORITY 3 z OR 3 NOT planar, so NOT an instance of Pl-#CSP( { EVEN-PARITY 3 , MAJORITY 3 , OR 3 } ) Tyson Williams (UW-M) Counting Complexity Google Madison 2013 24 / 32
Constraint Graph for #CSP( F ) Instance F = { EVEN-PARITY 3 , MAJORITY 3 , OR 3 } EVEN-PARITY 3 ( x , y , z ) ∧ MAJORITY 3 ( x , y , z ) ∧ OR 3 ( x , y , z ) x EVEN-PARITY 3 y MAJORITY 3 z OR 3 NOT planar, so NOT an instance of Pl-#CSP( { EVEN-PARITY 3 , MAJORITY 3 , OR 3 } ) Tyson Williams (UW-M) Counting Complexity Google Madison 2013 24 / 32
Constraint Graph for #CSP( F ) Instance F = { EVEN-PARITY 3 , MAJORITY 3 , OR 2 } EVEN-PARITY 3 ( x , y , z ) ∧ MAJORITY 3 ( x , y , z ) ∧ OR 2 ( x , y ) , z x EVEN-PARITY 3 y MAJORITY 3 z OR 2 Tyson Williams (UW-M) Counting Complexity Google Madison 2013 24 / 32
Constraint Graph for #CSP( F ) Instance F = { EVEN-PARITY 3 , MAJORITY 3 , OR 2 } EVEN-PARITY 3 ( x , y , z ) ∧ MAJORITY 3 ( x , y , z ) ∧ OR 2 ( x , y ) , z x x EVEN-PARITY 3 EVEN-PARITY 3 y z MAJORITY 3 OR 2 y z OR 2 MAJORITY 3 VALID instance of Pl-#CSP( { EVEN-PARITY 3 , MAJORITY 3 , OR 2 } ) Tyson Williams (UW-M) Counting Complexity Google Madison 2013 24 / 32
More Counting Dichotomies Theorem (Cai, Lu, Xia ’09) Let F be any set of complex-valued constraints in Boolean variables. Then #CSP( F ) is either # P -hard or computable in polynomial time. Tyson Williams (UW-M) Counting Complexity Google Madison 2013 25 / 32
More Counting Dichotomies Theorem (Cai, Lu, Xia ’09) Let F be any set of complex-valued constraints in Boolean variables. Then #CSP( F ) is either # P -hard or computable in polynomial time. Theorem (Cai, Xia ’12) Let F be any set of complex-valued constraints. Then #CSP( F ) is either # P -hard or computable in polynomial time. Tyson Williams (UW-M) Counting Complexity Google Madison 2013 25 / 32
More Counting Dichotomies Theorem (Cai, Lu, Xia ’09) Let F be any set of complex-valued constraints in Boolean variables. Then #CSP( F ) is either # P -hard or computable in polynomial time. Theorem (Cai, Xia ’12) Let F be any set of complex-valued constraints. Then #CSP( F ) is either # P -hard or computable in polynomial time. Theorem (Guo, W ’13) Let F be any set of symmetric, complex-valued constraints in Boolean variables. Then Pl-#CSP( F ) is either # P -hard or computable in polynomial time. Tyson Williams (UW-M) Counting Complexity Google Madison 2013 25 / 32
Definition of Holant Function Partition Function f f f f f f � � f ( σ ( u ) , σ ( v )) σ : V →{ 0 , 1 } ( u , v ) ∈ E Tyson Williams (UW-M) Counting Complexity Google Madison 2013 26 / 32
Definition of Holant Function Partition Function Assignments to vertices Functions on edges f f f f f f � � f ( σ ( u ) , σ ( v )) σ : V →{ 0 , 1 } ( u , v ) ∈ E Tyson Williams (UW-M) Counting Complexity Google Madison 2013 26 / 32
Definition of Holant Function Partition Function Holant Function Assignments to vertices Assignment to edges Functions on edges Functions on vertices f f f f f f � � f ( σ ( u ) , σ ( v )) σ : V →{ 0 , 1 } ( u , v ) ∈ E Tyson Williams (UW-M) Counting Complexity Google Madison 2013 26 / 32
Definition of Holant Function Partition Function Holant Function Assignments to vertices Assignment to edges Functions on edges Functions on vertices = 3 f f f f f f = 3 f f f f = 3 = 3 f f � � � � � � g v σ | E ( v ) f ( σ ( u ) , σ ( v )) v ∈ V σ : E →{ 0 , 1 } σ : V →{ 0 , 1 } ( u , v ) ∈ E Tyson Williams (UW-M) Counting Complexity Google Madison 2013 26 / 32
Definition of Holant Function Holant Function Holant( { f } | { = 3 } ) is a counting problem defined Assignment to edges Functions on vertices over (2,3)-regular bipartite graphs. = 3 f f f = 3 f f = 3 = 3 f � � � � g v σ | E ( v ) v ∈ V σ : E →{ 0 , 1 } Tyson Williams (UW-M) Counting Complexity Google Madison 2013 26 / 32
Definition of Holant Function Holant Function Holant( { f } | { = 3 } ) is a counting problem defined Assignment to edges Functions on vertices over (2,3)-regular bipartite graphs. = 3 Degree 2 vertices take f . Degree 3 vertices take = 3 . f f f = 3 f f = 3 = 3 f � � � � g v σ | E ( v ) v ∈ V σ : E →{ 0 , 1 } Tyson Williams (UW-M) Counting Complexity Google Madison 2013 26 / 32
Example Holant Problems Holant( { OR 2 } | { = 3 } ) is # VertexCover on 3-regular graphs. Tyson Williams (UW-M) Counting Complexity Google Madison 2013 27 / 32
Example Holant Problems Holant( { OR 2 } | { = 3 } ) is # VertexCover on 3-regular graphs. Holant( { NAND 2 } | { = 3 } ) is # IndependentSet on 3-regular graphs. Tyson Williams (UW-M) Counting Complexity Google Madison 2013 27 / 32
Example Holant Problems Holant( { OR 2 } | { = 3 } ) is # VertexCover on 3-regular graphs. Holant( { NAND 2 } | { = 3 } ) is # IndependentSet on 3-regular graphs. Holant( { = 2 } | { AT-MOST-ONE } ) � is # Matching . Holant(AT-MOST-ONE) Tyson Williams (UW-M) Counting Complexity Google Madison 2013 27 / 32
Example Holant Problems Holant( { OR 2 } | { = 3 } ) is # VertexCover on 3-regular graphs. Holant( { NAND 2 } | { = 3 } ) is # IndependentSet on 3-regular graphs. Holant( { = 2 } | { AT-MOST-ONE } ) � is # Matching . Holant(AT-MOST-ONE) Holant( { = 2 } | { EXACTLY-ONE } ) � is # PerfectMatching . Holant(EXACTLY-ONE) Tyson Williams (UW-M) Counting Complexity Google Madison 2013 27 / 32
Final Dichotomy Theorem (Cai, Guo, W ’13) Let F be any set of symmetric, complex-valued constraints in Boolean variables. Then Holant( F ) is either # P -hard or computable in polynomial time. Tyson Williams (UW-M) Counting Complexity Google Madison 2013 28 / 32
A Proof Technique: Polynomial Interpolation Tyson Williams (UW-M) Counting Complexity Google Madison 2013 29 / 32
Polynomial Interpolation 2 (distinct) points defines a (unique) line Tyson Williams (UW-M) Counting Complexity Google Madison 2013 30 / 32
Recommend
More recommend