Counting in structural complexity theory

Structural complexity theory is the study of the form and meaning of computational complexity classes. Complexity classes--P, NP, ProbabilisticP, PSPACE, etc.--are formalizations of computational powers--deterministic, nondeterministic, probabilistic, etc. By examining the structure of and the relationships between these classes, we seek to understand the relative strength of their underlying computational paradigms. This thesis studies counting in structural complexity theory. We are interested in complexity classes defined by counting and in the use of counting to explore the structure of these and other classes. We consider the structure of the strong exponential hierarchy, an exponential time analogue of the polynomial time hierarchy. A careful investigation of the census functions of nondeterministic computation trees shows that the strong exponential hierarchy collapses. Next, we move from computing census functions of computation trees to computing census functions of sets. The ranking problem for a fixed set is to determine the position of elements within the set. We give strong structural evidence that ranking of any type--uniform, nonuniform, strong, weak, or enumeratively approximate--is computationally complex. Indeed, we can believe that most types of ranking are computationally hard with at least the certainty with which we believe that P $\not=$ NP. Returning to the combinatorics of computation trees and their accepting paths, we study robust machines. A robust machine is a nondeterministic Turing machine that maintains certain computational properties in every relativized world. We show that, due to the limited combinatorial control of NP machines, robust machines accept only simple languages. A robust machine will accept, for every oracle A, a language that can be accepted by a polynomial time Turing machine with oracles for NP and A. Finally, we turn to the count "one," and its effect on computation trees, accepting paths, and the structure of the satisfiability problem. We prove a UP (unique polynomial time) converse to the Borodin-Demers Theorem, and, under a complexity-theoretic assumption related to uniqueness, we show that there is an algorithm that quickly finds satisfying assignments for satisfiable formulas with few satisfying assignments. Throughout this thesis, our goal is to use counting as a tool in understanding the structure of feasible computations.