Theory of Computation and Complexity Theory
COL 705!Lecture 0!
Class Format
Two Minors: 20% each!Major: 35%!4 HWs: 20%!Class Participation: 5%
Resources
Slides generously shared by Manoj Prabhakaran!Text: Computational Complexity, a modern approach by Barak and Arora (freely available online)!Other resources on course webpage: http://www.cse.iitd.ac.in/~shweta/col705.html
Plagiarism Policy
What constitutes cheating?!Any cheating results in F (minimum)!No bending this rule, no discussion!If you are facing any problems, come talk to me, I will do everything possible to help.!If you resort to cheating, I will take strictest action and have no sympathy
Other Class TipsAsk questions! Do not be shy: if you have a doubt, then others likely do too!Be selfish, take responsibility for your learning: no one else can clarify things for you if you don’t!I care very much that you understand, and will be happy to answer as many questions as you need!Ask me to speed up or slow down, give feedback. Teaching and learning are fun when
Computation
A paradigm of modern science!Theory of computation/computational complexity is to computer science what theoretical physics is to electronics
Computational Complexity
Computation:!Problems to be solved!Algorithms to solve them!
in various models of computation!Complexity of a problem (in a comp. model)!
How much “resource” is sufficient/necessary
Computational Complexity
of!Problems
in!Models of!computatio
n
w.r.t!Complexity!measures
ProblemsInput represented as (say) a binary string!Given input, find a “satisfactory output”!
Function evaluation: only one correct output!Approximate evaluation!
Search problem: find one of many (if any)!Decision problem: find out if any!
A Boolean function evaluation (TRUE/FALSE)
Decision Problems
Evaluate a Boolean function (TRUE/FALSE)!i.e., Decide if input has some property!
Language!Set of inputs with a particular property!e.g. L = {x | x has equal number of 0s and 1s}!Decision problem: given input, decide if it is in L
Problems we care about?
Given a graph, find shortest path between two vertices!Given two matrices, compute their product!Given an integer, find its prime factors!Given a boolean formula, find a satisfying assignment
Decision versions?
Is a node A on the shortest path?!Is there a factor of n that is less than k?!Given a boolean formula, is it satisfiable?
Complexity of Languages
Some languages are “simpler” than others!L1 = {x | x starts with 0}!L2 = {x | x has equal number of 0s and 1s}!
Simpler in what way?!Fewer calculations, less memory, need not read all input, can do in an FSM
Complexity of Languages
Relating complexities of problems!Mo = {x | x has more 0s than 1s}!Eq = {x | x has equal number of 0s and 1s}!Eq(x):!
if (Mo(x0) == TRUE and Mo(x) == FALSE) then TRUE; else FALSE!
Eq is not (much) more complex than Mo. i.e., Mo is at least (almost) as complex as Eq.
Eq reduces to Mo
Models of Computation
FSM, PDA, TM!Variations: Non-deterministic, probabilistic. Other models: quantum computation!Church-Turing thesis: TM is as “powerful” as it gets!Non-uniform computation: circuit families
Turing Machine
The idea behind digital computers may be explained by saying that these machines are intended to carry out any operations which could be done by a human computer. The human computer is supposed to be following fixed rules; he has no authority to deviate from them in any detail. We may suppose that these rules are supplied in a book, which is altered whenever he is put on to a new job. He has also an unlimited supply of paper on which he does his calculations. — Alan Turing
Complexity MeasuresNumber of computational steps, amount of memory, circuit size/depth, ...!Exact numbers very much dependent on exact specification of the model (e.g. no. of tapes in TM)!
But “broad trends” robust!Trends: asymptotic!Broad: Log, Poly, Exp
Log Poly Exp
Complexity Theory
What is computable?!For problems that are computable, how many resources do they need?!Many fundamental open problems
Complexity Theory
Understand complexity of problems (i.e., how much resource used by best algorithm for it)!
Relate problems to each other [Reduce]!Relate computational models/complexity measures to each other [Simulate]!Calculate complexity of problems
Complexity Classes
Collect (decision) problems with similar complexity into classes!
Relate classes to each other!Hundreds of classes!
PSPACEIP
NP
BPPP
IP=PSPACEP vs NP ?P vs BPP ?
(NP-cap-coNP)/poly
NP/poly
PP/poly
NE/poly
(k>=5)-PBP
NC^1 PBP
LQNC^1
CSL
+EXP
EXPSPACE
EESPACEEEXP
+L
+L/poly +SAC^1
AL
P/poly
NC^2
P
BQP/poly
+P
ModP
SF_2
AmpMP
SF_3
+SAC^0
AC^0[2]
QNC_f^0
ACC^0
QACC^0
NC
1NAuxPDA^p
SAC^1
AC^1
2-PBP
3-PBP
4-PBP
TC^0
TC^0/poly
AC^0
AC^0/poly
FOLL
MAC^0QAC^0
L/poly
AH
ALL
AvgP
HalfP
NT
P-Close
P-Sel
P/log
UPbeta_2P
compNP
AM
AM[polylog]
BPP^{NP}
QAM
Sigma_2P
ZPP^{NP}
IP
Delta_3PSQG
BP.PP
QIP[2] RP^{NP}
PSPACE
MIPMIP* QIP
AM_{EXP}
IP_{EXP}
NEXP^{NP}
MIP_{EXP}
EXPH
APP
PP
P^{#P[1]}
AVBPP
HeurBPP
EXP
AWPP
A_0PP
Almost-PSPACE
BPEXP
BPEEMA_{EXP}
MP
AmpP-BQP
BQP
Sigma_3P
BQP/log
DQP
NIQSZK QCMAYQP
PH
AvgE
EE
NEE
ENearly-P
UE
ZPE
BH
P^{NP[log]}
BPP_{path}
P^{NP[log^2]}
BH_2
CH
EXP/poly
BPE
MA_E
EH
EEE
PEXP
BPL
PL
SC
NL/poly
L^{DET}
polyL
BPP
BPP/log
BPQP
Check
FH
N.BPP
NISZK
PZK
TreeBQP
WAPP
XOR-MIP*[2,1]
BPP/mlog
QPSPACE
frIP
MA
N.NISZK
NISZK_h
SZK
SBP
QMIP_{le}
BPP//log
BPP/rlog
BQP/mlog
BQP/qlog
QRG ESPACE
QSZK
QMA
BQP/qpoly
BQP/mpoly
CFL
GCSL
NLIN
QCFL
Q
NLINSPACE
RG
CZK
C_=L
C_=P
Coh
DCFL
LIN
NEXP
Delta_2P
P^{QMA}S_2P
P^{PP}
QS_2P
RG[1]
NE
RPE
NEEXP
NEEE
ELEMENTARY
PR
R
EP
Mod_3PMod_5P
NP
NP/one RP^{PromiseUP}US
EQP
LWPP
ZQP
WPP
RQP
NEXP/poly
EXP^{NP}
SEH
Few
P^{FewP}
SPP
FewL
LFew
NL SPL
FewP
FewUL
LogFew
RP
ZPP
RBQPYP
ZBQP
IC[log,poly]
QMIP_{ne}QMIP
R_HLUL
RL
MAJORITY
PT_1
PL_{infty}
MP^{#P}
SF_4
RNC
QNC
QP
NC^0
PL_1
QNC^0 SAC^0
NONE
PARITY
TALLY
REG
SPARSE
NP/log
NT*
UAPQPLINbetaP
compIP
RE
QMA(2)
SUBEXP
YPP
Complexity Zoo!
(NP-cap-coNP)/poly
NP/poly
PP/poly
NE/poly
(k>=5)-PBP
NC^1 PBP
LQNC^1
CSL
+EXP
EXPSPACE
EESPACEEEXP
+L
+L/poly +SAC^1
AL
P/poly
NC^2
P
BQP/poly
+P
ModP
SF_2
AmpMP
SF_3
+SAC^0
AC^0[2]
QNC_f^0
ACC^0
QACC^0
NC
1NAuxPDA^p
SAC^1
AC^1
2-PBP
3-PBP
4-PBP
TC^0
TC^0/poly
AC^0
AC^0/poly
FOLL
MAC^0QAC^0
L/poly
AH
ALL
AvgP
HalfP
NT
P-Close
P-Sel
P/log
UPbeta_2P
compNP
AM
AM[polylog]
BPP^{NP}
QAM
Sigma_2P
ZPP^{NP}
IP
Delta_3PSQG
BP.PP
QIP[2] RP^{NP}
PSPACE
MIPMIP* QIP
AM_{EXP}
IP_{EXP}
NEXP^{NP}
MIP_{EXP}
EXPH
APP
PP
P^{#P[1]}
AVBPP
HeurBPP
EXP
AWPP
A_0PP
Almost-PSPACE
BPEXP
BPEEMA_{EXP}
MP
AmpP-BQP
BQP
Sigma_3P
BQP/log
DQP
NIQSZK QCMAYQP
PH
AvgE
EE
NEE
ENearly-P
UE
ZPE
BH
P^{NP[log]}
BPP_{path}
P^{NP[log^2]}
BH_2
CH
EXP/poly
BPE
MA_E
EH
EEE
PEXP
BPL
PL
SC
NL/poly
L^{DET}
polyL
BPP
BPP/log
BPQP
Check
FH
N.BPP
NISZK
PZK
TreeBQP
WAPP
XOR-MIP*[2,1]
BPP/mlog
QPSPACE
frIP
MA
N.NISZK
NISZK_h
SZK
SBP
QMIP_{le}
BPP//log
BPP/rlog
BQP/mlog
BQP/qlog
QRG ESPACE
QSZK
QMA
BQP/qpoly
BQP/mpoly
CFL
GCSL
NLIN
QCFL
Q
NLINSPACE
RG
CZK
C_=L
C_=P
Coh
DCFL
LIN
NEXP
Delta_2P
P^{QMA}S_2P
P^{PP}
QS_2P
RG[1]
NE
RPE
NEEXP
NEEE
ELEMENTARY
PR
R
EP
Mod_3PMod_5P
NP
NP/one RP^{PromiseUP}US
EQP
LWPP
ZQP
WPP
RQP
NEXP/poly
EXP^{NP}
SEH
Few
P^{FewP}
SPP
FewL
LFew
NL SPL
FewP
FewUL
LogFew
RP
ZPP
RBQPYP
ZBQP
IC[log,poly]
QMIP_{ne}QMIP
R_HLUL
RL
MAJORITY
PT_1
PL_{infty}
MP^{#P}
SF_4
RNC
QNC
QP
NC^0
PL_1
QNC^0 SAC^0
NONE
PARITY
TALLY
REG
SPARSE
NP/log
NT*
UAPQPLINbetaP
compIP
RE
QMA(2)
SUBEXP
YPP
Collect (decision) problems with similar complexity into classes!
Relate classes to each other!Hundreds of classes!
Complexity Classes
Easy to define classes but hard to define meaningful classes!!Capture genuine computational phenomenon such as parallelism!Robust under variations of computational model!Possibly closed under natural operations
Central Open QuestionsIs finding a solution as easy as verifying one? Is P= NP?!Is every sequential algorithm parallelizable? Is P = NC?!Are time efficient algorithms the same as those that use little space? Is P=L?! Can every efficient randomised algorithm be converted to an efficient deterministic one? Is P = BPP?
Complexity in various settings
With various models of computation: decision trees, interactive settings, probabilistic computation!Various measures: depth, width, amount of communication, number of rounds, amount of randomness, amount of non-uniformity, ...!Various connections: time vs. space, randomness vs. hardness
CryptographyNeed to prove that a scheme is secure (according to some definition)!
i.e., breaking security has high complexity!Reductions: if you could break my scheme’s security efficiently, I can solve a hard problem almost as efficiently!Hard problems: almost all instances hard!
For most keys scheme should be secure!Contrast with Information Theory: limited cryptography if no computational constraints on adversary
Computational Complexity in Economics/Games
Traditionally, no computational constraints for strategizing players!But many problems in game-theory are computationally hard!
Rational players may not be able to play optimally!Suggests the need to redesign markets/financial instruments to be computationally tractable!
Recent results...
All that and much more..
Welcome to COL 705!!Textbook: www.cs.princeton.edu/theory/complexity/