Computational Complexity Theory

Slides:



Advertisements
Similar presentations
Models of Computation Prepared by John Reif, Ph.D. Distinguished Professor of Computer Science Duke University Analysis of Algorithms Week 1, Lecture 2.
Advertisements

Part VI NP-Hardness. Lecture 23 Whats NP? Hard Problems.
Complexity Classes: P and NP
CS 345: Chapter 9 Algorithmic Universality and Its Robustness
8/25/2009 Sofya Raskhodnikova Intro to Theory of Computation L ECTURE 1 Theory of Computation Course information Overview of the area Finite Automata Sofya.
Great Theoretical Ideas in Computer Science for Some.
Complexity 7-1 Complexity Andrei Bulatov Complexity of Problems.
Complexity 25-1 Complexity Andrei Bulatov #P-Completeness.
Complexity 15-1 Complexity Andrei Bulatov Hierarchy Theorem.
Complexity 11-1 Complexity Andrei Bulatov Space Complexity.
1 L is in NP means: There is a language L’ in P and a polynomial p so that L 1 · L 2 means: For some polynomial time computable map r : 8 x: x 2 L 1 iff.
Complexity 5-1 Complexity Andrei Bulatov Complexity of Problems.
1 dKS, Spring Some practical information Lecturers: Kristoffer Arnsfelt Hansen and Peter Bro Miltersen. Homepage:
1 Polynomial Church-Turing thesis A decision problem can be solved in polynomial time by using a reasonable sequential model of computation if and only.
NP-Complete Problems Reading Material: Chapter 10 Sections 1, 2, 3, and 4 only.
Analysis of Algorithms CS 477/677
Chapter 11: Limitations of Algorithmic Power
Theory of Computing Lecture 19 MAS 714 Hartmut Klauck.
Theory of Computing Lecture 15 MAS 714 Hartmut Klauck.
The Complexity of Optimization Problems. Summary -Complexity of algorithms and problems -Complexity classes: P and NP -Reducibility -Karp reducibility.
Computational Complexity Theory Lecture 2: Reductions, NP-completeness, Cook-Levin theorem Indian Institute of Science.
Theory of Computing Lecture 17 MAS 714 Hartmut Klauck.
Computational Complexity Theory Lecture 1: Intro; Turing machines; Class P and NP Indian Institute of Science.
Prabhas Chongstitvatana1 NP-complete proofs The circuit satisfiability proof of NP- completeness relies on a direct proof that L  p CIRCUIT-SAT for every.
Week 10Complexity of Algorithms1 Hard Computational Problems Some computational problems are hard Despite a numerous attempts we do not know any efficient.
1 Lower Bounds Lower bound: an estimate on a minimum amount of work needed to solve a given problem Examples: b number of comparisons needed to find the.
Complexity 25-1 Complexity Andrei Bulatov Counting Problems.
CSCI 3160 Design and Analysis of Algorithms Tutorial 10 Chengyu Lin.
1 P P := the class of decision problems (languages) decided by a Turing machine so that for some polynomial p and all x, the machine terminates after at.
Umans Complexity Theory Lectures Lecture 1a: Problems and Languages.
1 Turing’s Thesis. 2 Turing’s thesis: Any computation carried out by mechanical means can be performed by a Turing Machine (1930)
1 How to establish NP-hardness Lemma: If L 1 is NP-hard and L 1 ≤ L 2 then L 2 is NP-hard.
Strings Basic data type in computational biology A string is an ordered succession of characters or symbols from a finite set called an alphabet Sequence.
NP-Completness Turing Machine. Hard problems There are many many important problems for which no polynomial algorithms is known. We show that a polynomial-time.
Chapter 11 Introduction to Computational Complexity Copyright © 2011 The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 1.
Donghyun (David) Kim Department of Mathematics and Computer Science North Carolina Central University 1 Chapter 5 Reducibility Some slides are in courtesy.
1 SAT SAT: Given a Boolean function in CNF representation, is there a way to assign truth values to the variables so that the function evaluates to true?
Modeling Arithmetic, Computation, and Languages Mathematical Structures for Computer Science Chapter 8 Copyright © 2006 W.H. Freeman & Co.MSCS SlidesTuring.
Computational Complexity Theory Lecture 1: Intro; Turing machines; Class P and NP Indian Institute of Science.
ICS 353: Design and Analysis of Algorithms NP-Complete Problems King Fahd University of Petroleum & Minerals Information & Computer Science Department.
Design and Analysis of Approximation Algorithms
The NP class. NP-completeness
P & NP.
Chapter 10 NP-Complete Problems.
Computational Complexity Theory
NP-Completeness NP-Completeness Graphs 5/7/ :49 PM x x x x x x x
L is in NP means: There is a language L’ in P and a polynomial p so that L1 ≤ L2 means: For some polynomial time computable map r :  x: x  L1 iff.
Lecture 2-2 NP Class.
Great Theoretical Ideas in Computer Science
Part VI NP-Hardness.
Computational Complexity Theory
NP-Completeness Yin Tat Lee
Intro to Theory of Computation
Intro to Theory of Computation
ICS 353: Design and Analysis of Algorithms
CSCE 411 Design and Analysis of Algorithms
Objective of This Course
Richard Anderson Lecture 25 NP-Completeness
Chapter 34: NP-Completeness
Chapter 11 Limitations of Algorithm Power
NP-Complete Problems.
Prabhas Chongstitvatana
CS154, Lecture 13: P vs NP.
Recall last lecture and Nondeterministic TMs
Turing Machines Complexity ©D.Moshkovitz.
CS21 Decidability and Tractability
NP-Completeness Yin Tat Lee
Umans Complexity Theory Lectures
CS151 Complexity Theory Lecture 1 April 2, 2019.
Instructor: Aaron Roth
Presentation transcript:

Computational Complexity Theory Lecture 1: Intro; Turing machines; Class P and NP Indian Institute of Science

About the course Computational complexity attempts to classify computational problems based on the amount of resources required by algorithms to solve them.

About the course Computational complexity attempts to classify computational problems based on the amount of resources required by algorithms to solve them. Computational problems come in various flavors:

About the course Computational complexity attempts to classify computational problems based on the amount of resources required by algorithms to solve them. Computational problems come in various flavors: a. Decision problem Example: Is vertex t reachable from vertex s in graph G? (…output is YES/NO)

About the course Computational complexity attempts to classify computational problems based on the amount of resources required by algorithms to solve them. Computational problems come in various flavors: a. Decision problem b. Search problem Example: Find a satisfying assignment of a boolean formula, if it exists.

About the course Computational complexity attempts to classify computational problems based on the amount of resources required by algorithms to solve them. Computational problems come in various flavors: a. Decision problem b. Search problem c. Counting problem Example: Find the number of cycles in a graph

About the course Computational complexity attempts to classify computational problems based on the amount of resources required by algorithms to solve them. Computational problems come in various flavors: a. Decision problem b. Search problem c. Counting problem d. Optimization problem Example: Find a minimum size vertex cover in a graph

About the course Computational complexity attempts to classify computational problems based on the amount of resources required by algorithms to solve them. Algorithms are methods of solving problems; they are studied using formal models of computation, like Turing machines.

About the course Computational complexity attempts to classify computational problems based on the amount of resources required by algorithms to solve them. Algorithms are methods of solving problems; they are studied using formal models of computation, like Turing machines. a memory with head (like a RAM)

About the course Computational complexity attempts to classify computational problems based on the amount of resources required by algorithms to solve them. Algorithms are methods of solving problems; they are studied using formal models of computation, like Turing machines. a memory with head (like a RAM) a finite control (like a processor)

About the course Computational complexity attempts to classify computational problems based on the amount of resources required by algorithms to solve them. Algorithms are methods of solving problems; they are studied using formal models of computation, like Turing machines. (…more later)

About the course Computational complexity attempts to classify computational problems based on the amount of resources required by algorithms to solve them. Computational resources (required by models of computation) can be: Time (bit operations) Space (memory cells)

About the course Computational complexity attempts to classify computational problems based on the amount of resources required by algorithms to solve them. Computational resources (required by models of computation) can be: Time (bit operations) Space (memory cells) Random bits Communication (bit exchanges)

Some topics in complexity theory Average-case complexity Approximation algorithms Complexity theory Secrecy & security Role of Randomness Structural complexity (P, NP, etc.)

Some topics in complexity theory Average-case complexity Approximation algorithms Complexity theory Secrecy & security Role of Randomness Structural complexity (P, NP, etc.)

Structural Complexity Classes P, NP, co-NP… NP-completeness.

Structural Complexity Classes P, NP, co-NP… NP-completeness. How hard is it to check satisfiability of a boolean formula that has exactly one or no satisfying assignment?

Structural Complexity Classes P, NP, co-NP… NP-completeness. Space bounded computation.

Structural Complexity Classes P, NP, co-NP… NP-completeness. Space bounded computation. How much space is required to check s-t connectivity?

Structural Complexity Classes P, NP, co-NP… NP-completeness. Space bounded computation. Counting complexity.

Structural Complexity Classes P, NP, co-NP… NP-completeness. Space bounded computation. Counting complexity. How hard is it to count the number of perfect matchings in a graph?

Structural Complexity Classes P, NP, co-NP… NP-completeness. Space bounded computation. Counting complexity. Polynomial Hierarchy. . How hard is it to check that largest independent set in G has size exactly k ? NP co-NP P

Structural Complexity Classes P, NP, co-NP… NP-completeness. Space bounded computation. Counting complexity. Polynomial Hierarchy. How hard is it to find a minimum size circuit computing the same boolean function as a given boolean circuit?

Structural Complexity Classes P, NP, co-NP… NP-completeness. Space bounded computation. Counting complexity. Polynomial Hierarchy. Boolean circuits and circuit lower bounds.

Structural Complexity Classes P, NP, co-NP… NP-completeness. Space bounded computation. Counting complexity. Polynomial Hierarchy. Boolean circuits and circuit lower bounds. A central topic in classical complecity theory; Proving P≠NP boils down to showing circuit lower bounds.

Role of Randomness in Computation Probabilistic complexity classes.

Role of Randomness in Computation Probabilistic complexity classes. Does randomization help in improving efficiency? Quicksort has O(n log n) expected time but O(n^2) worst case time. Can SAT be solved in polynomial time using randomness? Theorem (Schoening, 1999): 3SAT can be solved in randomized O((4/3)n) time.

Role of Randomness in Computation Probabilistic complexity classes. Probabilistically Checkable Proofs (PCPs).

Role of Randomness in Computation Probabilistic complexity classes. Probabilistically Checkable Proofs (PCPs). Unconditional hardness of approximation results Theorem (Hastad, 1997): If there’s a poly-time algorithm to compute an assignment that satisfies at least 7/8 + e fraction of the clauses of an input 3SAT, for a constant e > 0, then P = NP.

Role of Randomness in Computation Probabilistic complexity classes. Probabilistically Checkable Proofs (PCPs). A glimpse of randomness extractors and pseudorandom generators (if time permits).

Role of Randomness in Computation Probabilistic complexity classes. Probabilistically Checkable Proofs (PCPs). A glimpse of randomness extractors and pseudorandom generators (if time permits). Can every polynomial-time randomized algorithm be derandomized to a deterministic polynomial-time algorithm?

Average-case Complexity Distributional problems (if time permits). How hard is it to solve the clique problem on inputs chosen from a “real-life” distribution?

Average-case Complexity Distributional problems (if time permits). Hardness amplification: From weak to strong hardness. In cryptographic applications, we need hard on average functions for secure encryptions.

Basic Course Info Course title: Computational Complexity Theory Credits: 3:1 Instructor: Chandan Saha TA: Nikhil Gupta and Vineet Nair Class timings : Tuesday, Thursday: 3:30-5 pm. Venue: CSA lecture hall 252. Primary reference: Computational Complexity – A Modern Approach by Sanjeev Arora and Boaz Barak.

Basic Course Info Prerequisites : Basic familiarity with algorithms; Some mathematical maturity will be helpful. Grading policy : Assignments - 30% Mid-term - 35% End-term - 35% Course homepage: drona.csa.iisc.ernet.in/~chandan/courses/complexity17/home.html

Let’s begin…

Turing Machines An algorithm is a set of instructions or rules. To understand the performance of an algorithm we need a model of computation. Turing machine is one such natural model.

Turing Machines An algorithm is a set of instructions or rules. To understand the performance of an algorithm we need a model of computation. Turing machine is one such natural model. A TM consists of: Memory tape(s) A finite set of rules

Turing Machines An algorithm is a set of instructions or rules. To understand the performance of an algorithm we need a model of computation. Turing machine is one such natural model. A TM consists of: Turing machines A mathematical way to describe algorithms. Memory tape(s) A finite set of rules

Turing Machines An algorithm is a set of instructions or rules. To understand the performance of an algorithm we need a model of computation. Turing machine is one such natural model. A TM consists of: (e.g. of a physical realization a TM is a simple adder) Memory tape(s) A finite set of rules

Turing Machines Definition. A k-tape Turing Machine M is described by a tuple (Γ, Q, δ) such that

Turing Machines Definition. A k-tape Turing Machine M is described by a tuple (Γ, Q, δ) such that M has k memory tapes (input/work/output tapes) with heads; Γis a finite set of alphabets. (Every memory cell contains an element of Γ)

Turing Machines Definition. A k-tape Turing Machine M is described by a tuple (Γ, Q, δ) such that M has k memory tapes (input/work/output tapes) with heads; Γis a finite set of alphabets. (Every memory cell contains an element of Γ) has a blank symbol

Turing Machines Definition. A k-tape Turing Machine M is described by a tuple (Γ, Q, δ) such that M has k memory tapes (input/work/output tapes) with heads; Γis a finite set of alphabets. (Every memory cell contains an element of Γ) Q is a finite set of states. (special states: qstart , qhalt) δ is a function from Q x Γ to Q x Γ x {L,S,R} k k k

known as transition function; it captures the dynamics of M Turing Machines Definition. A k-tape Turing Machine M is described by a tuple (Γ, Q, δ) such that M has k memory tapes (input/work/output tapes) with heads; Γis a finite set of alphabets. (Every memory cell contains an element of Γ) Q is a finite set of states. (special states: qstart , qhalt) δ is a function from Q x Γ to Q x Γ x {L,S,R} k k k known as transition function; it captures the dynamics of M

Turing Machines: Computation Start configuration. All tapes other than the input tape contain blank symbols. The input tape contains the input string. All the head positions are at the start of the tapes. The machine is in the start state qstart .

Turing Machines: Computation Start configuration. All tapes other than the input tape contain blank symbols. The input tape contains the input string. All the head positions are at the start of the tapes. The machine is in the start state qstart . Computation. A step of computation is performed by applying δ. Halting. Once the machine enters qhalt it stops computation.

Turing Machines: Running time Let f: {0,1}* {0,1}* and T: N N and M be a Turing machine. Definition. We say M computes f if on every x in {0,1}*, M halts with f(x) on its output tape beginning from the start configuration with x on its input tape.

Turing Machines: Running time Let f: {0,1}* {0,1}* and T: N N and M be a Turing machine. Definition. We say M computes f if on every x in {0,1}*, M halts with f(x) on its output tape beginning from the start configuration with x on its input tape. Definition. M computes f in T(|x|) time, if M computes f and for every x in {0,1}*, and M halts within T(|x|) steps of computation.

Turing Machines In this course, we would be dealing with Turing machines that halt on every input. Computational problems that can be solved by Turing machines.

Turing Machines In this course, we would be dealing with Turing machines that halt on every input. Computational problems that can be solved by Turing machines. Can every computational problem be solved using Turing machines?

Turing Machines: Uncomputability There are problems for which there exists no TM that halts on every input instances of the problem and outputs the correct answer. Input: A system of polynomial equations in many variables with integer coefficients. Output: Check if the system has integer solutions . Question: Is there an algorithm to solve this problem?

Turing Machines: Uncomputability There are problems for which there exists no TM that halts on every input instances of the problem and outputs the correct answer. A typical input instance: x2y + 5y3 = 3 x2 + z5 – 3y2 = 0 y2 – 4z6 = 0 Integer solutions for x, y, z?

Turing Machines: Uncomputability There are problems for which there exists no TM that halts on every input instances of the problem and outputs the correct answer. Input: A system of polynomial equations in many variables with integer coefficients. Output: Check if the system has integer solutions . Question: Is there an algorithm to solve this problem? (Hilbert’s tenth problem, 1900)

Turing Machines: Uncomputability There are problems for which there exists no TM that halts on every input instances of the problem and outputs the correct answer. Input: A system of polynomial equations in many variables with integer coefficients. Output: Check if the system has integer solutions . Question: Is there an algorithm to solve this problem? Theorem. There does not exist any algorithm (realizable by a TM) to solve this problem.

Why Turing Machines? TMs are natural and intuitive. Church-Turing thesis: “Every physically realizable computation device – whether it’s based on silicon, DNA, neurons or some other alien technology – can be simulated by a Turing machine”. --- [quote from Arora-Barak’s book]

Why Turing Machines? TMs are natural and intuitive. Church-Turing thesis: “Every physically realizable computation device – whether it’s based on silicon, DNA, neurons or some other alien technology – can be simulated by a Turing machine”. --- [quote from Arora-Barak’s book] Several other computational models can be simulated by TMs.

Basic facts about TMs

Turing Machines Time constructible functions. A function T: N N is time constructible if T(n) ≥ n and there’s a TM that computes the function that maps x to T(|x|) in O(T(|x|)) time. Examples: T(n) = n2, or 2n, or n log n in binary

Turing Machines: Robustness Let f: {0,1}* {0,1}* and T: N N be a time constructible function. Binary alphabets suffice. If a TM M computes f in T(n) time using Γ as the alphabet set then there’s another TM M’ that computes f in time 4.log |Γ| . T(n) using {0, 1, blank} as the alphabet set.

Turing Machines: Robustness Let f: {0,1}* {0,1}* and T: N N be a time constructible function. Binary alphabets suffice. If a TM M computes f in T(n) time using Γ as the alphabet set then there’s another TM M’ that computes f in time 4.log |Γ| . T(n) using {0, 1, blank} as the alphabet set. A single tape suffices. If a TM M computes f in T(n) time using k tapes then there’s another TM M’ that computes f in time 5k . T(n)2 using a single tape that is used for input, work and output.

Turing Machines: As strings Every TM can be represented by a finite string over {0,1}. …simply encode the description of the TM.

Turing Machines: As strings Every TM can be represented by a finite string over {0,1}. Every string over {0,1} represents some TM. …invalid strings map to a fixed, trivial TM.

Turing Machines: As strings Every TM can be represented by a finite string over {0,1}. Every string over {0,1} represents some TM. Every TM has infinitely many string representations. … allow padding with arbitrary number of 0’s

Turing Machines: As strings Every TM can be represented by a finite string over {0,1}. Every string over {0,1} represents some TM. Every TM has infinitely many string representations. α Mα {0,1} string TM corresponding to α

Turing Machines: As strings Every TM can be represented by a finite string over {0,1}. Every string over {0,1} represents some TM. Every TM has infinitely many string representations. A TM (i.e. its string representation) can be given as an input to another TM !!

Universal Turing Machines Theorem. There exists a TM U that on every input x, α in {0,1}* outputs Mα(x). Further, if Mα halts within T steps then U halts within C. T. log T steps, where C is a constant that depends only on Mα ’s alphabet size, number of states and number of tapes.

Universal Turing Machines Theorem. There exists a TM U that on every input x, α in {0,1}* outputs Mα(x). Further, if Mα halts within T steps then U halts within C. T. log T steps, where C is a constant that depends only on Mα ’s alphabet size, number of states and number of tapes. Physical realization of UTMs are modern day electronic computers.

Complexity classes P and NP

Decision Problems In the initial part of this course, we’ll focus primarily on decision problems.

Decision Problems In the initial part of this course, we’ll focus primarily on decision problems. Decision problems can be naturally identified with boolean functions, i.e. functions from {0,1}* to {0,1}.

Decision Problems In the initial part of this course, we’ll focus primarily on decision problems. Decision problems can be naturally identified with boolean functions, i.e. functions from {0,1}* to {0,1}. Boolean functions can be naturally identified with sets of {0,1} strings, also called languages.

Decision Problems Decision problems Boolean functions Languages Definition. We say a TM M decides a language L ⊆ {0,1}* if M computes fL, where fL(x) = 1 if and only if x ∈ L.

Complexity Class P Let T: N N be some function. Definition: A language L is in DTIME(T(n)) if there’s a TM that decides L in time O(T(n)). Defintion: Class P = ∪ DTIME (nc). c > 0

Complexity Class P Let T: N N be some function. Definition: A language L is in DTIME(T(n)) if there’s a TM that decides L in time O(T(n)). Defintion: Class P = ∪ DTIME (nc). c > 0 Deterministic polynomial-time

Complexity Class P : Examples Cycle detection (DFS) Check if a given graph has a cycle.

Complexity Class P : Examples Cycle detection Solvabililty of a system of linear equations (Gaussian elimination) Given a system of linear equations over Q check if there exists a common solution to all the linear equations.

Complexity Class P : Examples Cycle detection Solvabililty of a system of linear equations Perfect matching (Edmonds 1965) Check if a given graph has a perfect matching

Complexity Class P : Examples Cycle detection Solvabililty of a system of linear equations Perfect matching Primality testing (AKS test 2002) Check if a number is prime