Computational Complexity
Total Page:16
File Type:pdf, Size:1020Kb
Computational Complexity Avi Wigderson Oded Goldreich School of Mathematics Department of Computer Science Institute for Advanced Study Weizmann Institute of Science Princeton NJ USA Rehovot Israel aviiasedu odedgoldreichweizmann aci l Octob er Abstract The strive for eciency is ancient and universal as time is always short for humans Com putational Complexity is a mathematical study of the what can b e achieved when time and other resources are scarce In this brief article we will introduce quite a few notions Formal mo dels of computation and measures of eciency the P vs NP problem and NPcompleteness circuit complexity and pro of complexity randomized computation and pseudorandomness probabilistic pro of systems cryptography and more A glossary of complexity classes is included in an app endix We highly recommend the given bibliography and the references therein for more information Contents Introduction Preliminaries Computability and Algorithms Ecient Computability and the class P The P versus NP Question Ecient Verication and the class NP The Big Conjecture NP versus coNP Reducibility and NPCompleteness Lower Bounds Bo olean Circuit Complexity Basic Results and Questions Monotone Circuits BoundedDepth Circuits Formula Size Why Is It Hard to Prove Lower Bounds Arithmetic Circuits Univariate Polynomials Multivariate Polynomials Pro of Complexity Logical Pro of Systems Algebraic Pro of Systems Geometric Pro of Systems Randomized Computation Counting at Random Probabilistic Pro of Systems Interactive Pro of Systems ZeroKnowledge Pro of Systems Probabilistically Checkable Pro of systems Weak Random Sources The Bright Side of Hardness Pseudorandomness Hardness versus Randomness Pseudorandom Functions Cryptography The Tip of an Iceb erg Relaxing the Requirements AverageCase Complexity Approximation Other Complexity Measures Other Notions of Computation Concluding Remarks Bibliography App endix Glossary of Complexity Classes A Algorithmbased classes A Circuitbased classes Introduction Computational Complexity or Complexity Theory is a central subeld of the theoretical founda tions of Computer Science It is concerned with the study of the intrinsic complexity of computa tional tasks This study tends to aim at generality it fo cuses on natural computational resources and considers the eect of limiting these resources on the class of problems that can b e solved It also tends to asymptotics studying this complexity as the size of data grows Another related subeld represented in this volume deals with the design and analysis of algorithms for specic classes of computational problems that arise in a variety of areas of mathematics science and engineering The halfcentury history of Complexity Theory has witnessed two main research eorts or directions The rst direction is aimed towards actually establishing concrete lower b ounds on the complexity of problems via an analysis of the evolution of the pro cess of computation Thus in a sense the heart of this direction is a lowlevel analysis of computation Most research in circuit complexity and in pro of complexity falls within this category In contrast a second research eort is aimed at exploring the connections among computational problems and notions without b eing able to provide absolute statements This eort may b e viewed as a highlevel study of computation The theory of NPcompleteness the study of probabilistic pro of systems as well as pseudorandomness and cryptography all falls within this category Preliminaries This exp osition considers only nite ob jects enco ded by nite binary sequences called strings For n a natural number n we denote by f g the set of all binary sequences of length n hereafter n referred to as nbit strings The set of all strings is denoted f g that is f g f g nN jxj For x f g we denote by jxj the length of x ie x f g At times we asso ciate f g f g with f g Natural numbers will b e enco ded by their binary expansion Computability and Algorithms We are all familiar with computers and the ability of computer programs to manipulate data But how do es one capture al l computational pro cesses Before b eing formal we oer a lo ose description capturing many articial as well as natural pro cesses and invite the reader to compare it with physical theories A computation is a pro cess that mo dies an environment via rep eated applications of a prede termined rule The key restriction is that this rule is simple in each application it dep ends and aects only a small p ortion of the environment called the active zone We contrast the apriori bounded size of the active zone and of the mo dication rule with the apriori unbounded size of the entire environment We note that although each application of the rule has a very limited eect the eect of many applications of the rule may b e very complex The computation rule esp ecially when designed to eect a desired computation is often referred to as an algorithm Such pro cesses naturally compute functions and their complexity is naturally captured by the number of steps they apply Let us elab orate We are interested in the transformation of the environment eected by the computational pro cess Typically the initial environment to which the computation is applied enco des an input string and the end environment ie at termination of the computation enco des an output string We 1 We assume that when invoked on any nite initial environment the computation halts after a nite number of consider the mapping from inputs to outputs induced by the computation that is for each p ossible input x we consider the output y obtained at the end of a computation initiated with input x and say that the computation maps input x to output y We also consider the number of steps ie applications of the rule taken by the computation for each input The latter function is called the time complexity of the computational pro cess While time complexity is dened p er input one often considers it p er input length taking the maximum over all inputs of the same length To dene computation and computation time rigorously one needs to sp ecify some mo del of computation that is provide a concrete denition of environments and a class of rules that may b e applied to them Such a mo del corresp onds to an abstraction of a real computer b e it a PC mainframe or network of computers One simple abstract mo del that is commonly used is that of Turing machines see eg Thus sp ecic algorithms and their complexity are typically formalized by corresp onding Turing machines We stress however that most results in the Theory of Computation hold regardless of the sp ecic computational mo del used as long as it is reasonable ie satises the aforementioned simplicity condition The ab ove discussion has implicitly referred to computations and Turing machines as a means of computing functions Sp ecically a Turing machine M computes the function f f g f g M dened by f x y if when invoked on input x machine M halts with output y For example M we may refer to the computation of the integer multiplication function which given an enco ding of two integers returns the enco ding of their pro duct However computations can also b e viewed as a means of solving problems or making decisions which are captured resp ectively by relations and sets Search problems are captured by binary relations R f g f g with the semantics that y is called a valid solution for problem instance x if and only if x y R Machine M solves the search problem R if x f x R whenever a solution for x exists that is given an instance x M that has a valid solution machine M nds some valid solution for x For example we may refer to a machine that given a system of p olynomial equations returns a valid solution Decision problems are captured by sets S f g with the semantics that S is the set of yesinstances of the problem We say that M solves the decision problem S if it holds that f x if and only if x S that is given an instance x machine M determines whether or M not