Module 1 : Computational Complexity

Lecture 1 : Complexity of Computation & Complexity Classes

We will restrict ourselves to two types of Complexities:

Time Complexity
Space Complexity.

By time/space complexity we mean the time/space as a function of input size required by an algorithm to solve a problem.

Problems are categorized into 2 types

(i) Decision Problem
(ii) Optimization Problem.

For the purpose of present discussion we will concentrate on decision problems. This is defined as follows.

Definition 1: Let be a set of alphabets and let L ⊆ ∑* be a language. Given a string x ∈ L or x ∉ L is decision problem.

Notation: Let p() denote a polynomial function.
We will define some complexity classes:

Definition 2: The class P comprises of all languages L ⊆ ∑* such that there exist a polynomial time algorithm A to decide L. In other words given a string x ∈ ∑* the algorithim A can determine in time p(|x|) whether x ∈ L or x ∉ L.

Definition3: The class NP comprises of all language L ⊆ ∑ * such that given a string x ∈ L a proof of the membership of x ∈ L can be found and verified in time p(|x|).

Definition 4: The class Co-NP comprises of all language L ⊆ ∑* such that ∑*- L ∈NP.

Note: We can easily verify CO-P=P and thus P ⊆NPCO-NP.

Definition 5: The class PSPACE comprise of all languages L ⊆ ∑ * such that there exists an algorithm A that uses polynomial working space with respect to the input size to decide L. In other words given a string x ∈ ∑* the algorithim A can determine using space, i.e., p(|x|) whether x ∈ L or x ∉ L.

We will state without proof the following result that follows from Savitch’s theorem:
PSPACE=NSPACE