You are on page 1of 53

Dr.

Pratyay Kuila
Dept. of Computer Science & Engineering
NIT Sikkim-737139
• A much more powerful model of computation, first proposed by
Alan Turing in 1936, called the Turing machine.

• A Turing machine can do everything that a real computer can do.


Any algorithmic process can be simulated efficiently by the Turing
machine. This is a simple formation of what come to be known as
Church-Turing thesis, a version of Church-Thesis.

• Nonetheless, even a Turing machine cannot solve certain


problems.

Dr. Pratyay Kuila, NIT Sikkim 2


a b a a b b Input tape.

Read/ write head

Finite
Control Turing machine model

Dr. Pratyay Kuila, NIT Sikkim 3


a b a a b b Input tape.

Read/ write head

Finite
Control Turing machine model

Turing Machine: A Turing machine M is a 7-tuple (Q, X, , , q0, B, F),


where Q - a finite set of states
X – the set of tape symbol
 - a finite set of input symbol,  is a subset of X.
 - a function from Q  X → Q  X  {L, R}, called
the transition function of M.
q0 - the start state
B - blank symbol. This symbol is in X but not in .
F - set of final state.
Dr. Pratyay Kuila, NIT Sikkim 4
We divide the problems that can be solved by Turing machine in two class:

A language is recursively enumerable if some Turing machine accepts it.


Let L be a recursively enumerable language and M be the Turing Machine
that accepts it,
For a string ω,
if ω ∈ L then M halts in a final state.
if ω ∉ L then M halts in a non-final state or loops forever.

A language is recursive if some Turing machine accepts it and halts on any


input string. A language is recursive if there is an algorithm for it. Let L be a
recursive language and M be the Turing Machine that accepts it,
For a string ω,
if ω ∈ L then M halts in a final state.
if ω ∉ L then M halts in a non-final state.

Dr. Pratyay Kuila, NIT Sikkim 5


▪ The Class P: A language L (or a problem) is in class P if their
exist some polynomial T(n) such that L = T(M) for some
deterministic Turing machine M of time complexity T(n).
By L = T(M) of time complexity T(n), it is indicated that
whenever, M is given an input ω ∈ L of length n, M halts after
making at most T(n) moves, regardless of wheatear or not M
accepts ω.
▪ The class P consists of all decision problems that are solvable by
deterministic Turing machines in polynomial time.
▪ We say that problems in P are “efficiently” solvable.
▪ One may argue whether n100 represents “efficient” computation
as it is in polynomial time. However, in practice, whenever we
show that a problem is in P, we usually find an n2, n3 or n5 time
algorithm but not an n100 algorithm.
Dr. Pratyay Kuila, NIT Sikkim 6
▪ The Class non-deterministic polynomial (NP): A language L (or a
problem) is in class NP if their exist some polynomial T(n) such
that L = T(M) for some non-deterministic Turing machine M of
time complexity T(n).

Examples: Vertex-cover problem, Independent set problem,


Traveling salesperson problem, subset-sum problem, etc.
▪ If T(n) be the complexity of non-deterministic Turing machine M,
then the complexity of equivalent deterministic Turing machine
M1 is 2O(T(n)).

The class NP consists of those problems that are “verifiable” in


polynomial time.

Dr. Pratyay Kuila, NIT Sikkim 7


▪ The Class non-deterministic polynomial (NP) (Cont..):
➢ What do we mean by a problem being verifiable?
➢ If we were somehow given a “certificate” of a solution, then we
could verify that the certificate is correct in time polynomial in
the size of the input to the problem.
➢ As an example, for 3-CNF satisfiability, a certificate would be
an assignment of values to variables. We could check in
polynomial time that this assignment satisfies the boolean
formula. Similarly,
• Independent set problem: the certificate is the list of k
vertices forming an independent set.
• Traveling salesperson problem: the certificate is the sequence
of nodes in the tour.
• Subset sum problem: the certificate is the list of members in
this subset.
Dr. Pratyay Kuila, NIT Sikkim 8
➢ A literal is a variable or the negation of a variable, e.g., x7, ¬ x3.
➢ A clause is formed by taking one or more literals and
connecting them with a OR, e.g., (x2 ∨ x4 ∨ ¬ x5) is a clause,
and also (x3).
➢ A formula in Conjunctive Normal Form (CNF) is the AND of
clauses, e.g., (x2 ∨ x4 ∨ ¬ x5) ^ (x2 ∨ x3) ^ (x2 ∨ ¬ x4 ∨ x5).
➢ A k-CNF is a CNF formula in which all clauses contain at most
k literals.
➢ A formula F is satisfiable if there exists some assignment z
such that F(z) is True (i.e., some assignment of the values 0 and
1 to its variables that causes it to evaluate to 1). Otherwise, F is
unsatisfiable.
➢ Satisfiability problem: Is the given Boolean formula F
satisfiable?
Dr. Pratyay Kuila, NIT Sikkim 9
Definition (Reductions, NP-hardness and NP-completeness): We
say that a language A ⊆{0,1}* is polynomial-time reducible to a
language B ⊆{0,1}* denoted by A ≤ p B if there is a polynomial-
time computable function f : {0, 1}* → {0, 1}* such that for every
x ∈ {0, 1}*, x ∈ A if and only if f(x) ∈ B.

Let P1 and P2 be two problems. A reduction from P1 to P2 is an


algorithm that converts an instance of P1 to an instance of P2. If the
time taken by the algorithm is an polynomial, then the reduction is
called polynomial time reduction from P1 to P2 .

Dr. Pratyay Kuila, NIT Sikkim 10


Theorem 1: 3SAT is polynomial time reducible to independent
set (IS) problem.
➢ We can state the IS problem as follows: given a graph
G = (V, E) and an integer k > 0, is there an independent set in G
of size k?
➢ A set of vertices I ⊆ V is independent if no two vertices u, v ∈ I
are connected by an edge (u, v) ∈ E.

The set of red nodes is independent set.


Dr. Pratyay Kuila, NIT Sikkim 11
Theorem 1: 3SAT is polynomial time reducible to independent
set (IS) problem.
➢ We can state the IS problem as follows: given a graph
G = (V, E) and an integer k > 0, is there an independent set in G
of size k?
➢ A set of vertices I ⊆ V is independent if no two vertices u, v ∈ I
are connected by an edge (u, v) ∈ E.

The set of red nodes is independent set.


Dr. Pratyay Kuila, NIT Sikkim 12
Theorem 1: 3SAT is polynomial time reducible to independent
set (IS) problem.
▪ Let us have a problem in 3SAT which is a boolean expression F
with n variables x1, x2,… , xn, and m clauses.
▪ Reduction:
1. Construct a graph G with 3m vertices, one for each literal.
2. Add edges to connect vertices corresponding to literals
belonging to the same clause, so that for each clause we have a
triangle of vertices connecting its literal.
3. Finally, add edges to connect all pairs of vertices which are
negations of each other.
▪ It can be observed that the graph can be constructed from the
expression F in time that is proportional to the squire of the length
of F. Therefore, the conversion of F to G is a polynomial time
reduction.
Dr. Pratyay Kuila, NIT Sikkim 13
Example 1: Let us consider a 3-CNF,
F = (x1 ∨ x2 ∨ ¬x3)(x2 ∨ x3 ∨ ¬ x4) (x1 ∨ ¬x2 ∨ x4)

Dr. Pratyay Kuila, NIT Sikkim 14


Example 2: Let us consider a 3-CNF,
F = (x1 ∨ ¬x3 ∨ ¬x4)(¬ x2 ∨ x3 ∨ x4) (¬ x1 ∨ x2 ∨ x3)

Dr. Pratyay Kuila, NIT Sikkim 15


Independent Set (Cont…)
For some clauses, we may have choice of two or three of the literals,
and if so, pick one of them arbitrarily and construct an independent
set (I) of m independent nodes by picking a suitable node from each
clause.
If a variable xi is in I, then T(xi)=1, if its negation is in I, then
T(xi)=0. If there is no node for a particular xi then pick T(xi)
arbitrarily.
Exercise 3: Find the satisfiable truth value T(xi) for all xi of the given
3-CNF E = (x1+x2+x3)(¬ x1+x2+x4)(¬ x2+x3+x5)(¬ x3+¬x4+¬x5) using
Independent Set (IS) problem.
Hints: The selected four literals are x1, x2, x3 and ¬x4. Therefore,
T(x1)=1, T(x2)=1, T(x3)=1 and T(x4)=0. There must also be an
assignment for x5. we may pick that arbitrarily, say T(x5)=1.

Dr. Pratyay Kuila, NIT Sikkim 16


The polynomial-time reducible is also known as polynomial-time
Karp reducible, many-to-one reducible or polynomial-time mapping
reducible.

Theorem:
1. (Transitivity) If A ≤ p B and B ≤ p C, then A ≤ p C.
2. If there is a polynomial time reduction A ≤ p B and if B is in
class P, then A is also in P.

➢ We say that a language (or a problem) B is NP-complete if


i. B ∈ NP, and
ii. A ≤ p B for every A ∈ NP.

➢ We say that B is NP-hard if A ≤ p B for every A ∈ NP.

Dr. Pratyay Kuila, NIT Sikkim 17


➢ If B is a language such that A ≤ p B for some A ∈ NP-complete,
then B is NP-hard. Moreover, if B ∈ NP, then B ∈ NP-complete.

➢ If any NP-complete problem is polynomial-time solvable, then


P = NP. Equivalently, if any problem in NP is not polynomial-
time solvable, then no NP-complete problem is polynomial-time
solvable.

➢ If language A is NP-hard and A ∈ P then P = NP.

➢ If language A is NP-complete then A ∈ P if and only if P = NP.

➢ If language A is NP-complete and A ≤ p B for B ∈ NP then B is


NP-complete.

Dr. Pratyay Kuila, NIT Sikkim 18


Dr. Pratyay Kuila, NIT Sikkim 19
Theorem 2 (Cook-Levin Theorem): Let SAT be the language of
all satisfiable CNF formula and 3SAT be the language of all
satisfiable 3CNF formula. Then,
• SAT is NP-complete.
• 3SAT is NP-complete.

1. It is obvious that both SAT and 3SAT are in NP.


2. Thus we only need to prove that they are NP-hard.
3. To prove this we have to reduce every NP language L to
SAT, i.e., give a polynomial-time transformation that turns
any x ∈ {0, 1}* into a CNF formula F such that x ∈ L iff F
is satisfiable.

Dr. Pratyay Kuila, NIT Sikkim 20


Claim: For every Boolean function f : {0, 1}n → {0, 1} there is an
n-variable CNF formula F of maximum size n2n such that
F(u) = f(u) for every u ∈ {0, 1}n, where the size of a CNF formula
is defined to be the number of ^/ ∨ symbols it contains.

Lemma: SAT is NP-hard.


Proof: It can be proved by the above claim.

Hence Proof of The Cook-Levin Theorem: SAT is NP-Complete.

Dr. Pratyay Kuila, NIT Sikkim 21


Lemma: SAT ≤ p 3SAT

Proof: Starting from an arbitrary CNF formula F, we will construct a


small 3CNF F3 by substituting each clause C = (x1 ∨ x2 …∨ xk) in F
that contains k ≥ 4 literals with k - 2 clauses which contain 3 literals as
follow:
C = (x1 ∨ x2 ∨y1) ^ (x3 ∨ ¬ y1 ∨y2) ^ (x4 ∨ ¬ y2 ∨y3) ^… ^ (xk-2 ∨ ¬ yk-4
∨yk-3) ^ (xk-1 ∨ xk ∨ ¬ yk-3)
where we have introduced k-3 new variables y1, y2,…, yk-3. If any of
the original literals xi = 1, then the whole formula is satisfiable (taking
yj = 1 for all yj up to the clause in which xi is encountered, and yj = 0
thereafter). If none of the xi =1, then C = (y1) ^ (¬ y1 ∨y2) ^ (¬ y2 ∨y3)
^… ^ (¬ yk-4 ∨yk-3) ^ (¬ yk-3), which itself is not satisfiable.
Thus SAT ≤ p 3SAT and thereby 3SAT is NP-complete.
Dr. Pratyay Kuila, NIT Sikkim 22
Theorem 3: Independent Set (IS) problem is NP-complete.

➢ We have to proof,
I. IS ∈ NP.
II. A ≤ p IS for every A ∈ NP.

➢ To proof (I): is it polynomial time verifiable?


➢ To proof (II): we have to show, 3SAT is polynomial time
reducible to IS (or, 3SAT ≤ p IS). This is already proved.
➢ Hence, every NP problem is polynomial time reducible to IS.
▪ Hence IS ∈ NP-complete.

Dr. Pratyay Kuila, NIT Sikkim 23


Theorem 4: Vertex-cover problem (VCP) is NP-complete.

➢ Vertex-cover of a graph is a set of vertices such that each edge


has at least one of its ends at a vertex from the set.
➢ A vertex-cover problem (VCP) asks whether a graph contains a
vertex-cover of specified size (say k).

The set of red


nodes is
vertex-cover.

Dr. Pratyay Kuila, NIT Sikkim 24


Theorem 4: Vertex-cover problem (VCP) is NP-complete.

➢ Vertex-cover of a graph is a set of vertices such that each edge


has at least one of its ends at a vertex from the set.
➢ A vertex-cover problem (VCP) asks whether a graph contains a
vertex-cover of specified size (say k).

The set of red


nodes is
vertex-cover.

➢ It is obvious that VCP∈NP.


➢ Now we have to show that every NP problem is polynomial time
reducible to VCP.
Dr. Pratyay Kuila, NIT Sikkim 25
Theorem 4: Vertex-cover problem (VCP) is NP-complete.

Lemma: 3SAT ≤ p VCP.


Proof: A Boolean formula (3-CNF) F to a graph G.
• For each variable x, we create a variable-gadget with two
nodes, x and ¬x. Make an edge connecting these two nodes.
• For each clause, a clause-gadget is built which is a triple of
three nodes that are labeled with the three literals of the clause.
These three nodes are connected to each other and to the nodes
in the variables gadgets that have the identical labels.
• Thus, total number of nodes that appear in G is 2l + 3m.
Where, F has l variables and m clauses. Let, k = l + 2m.
Dr. Pratyay Kuila, NIT Sikkim 26
Theorem 4: Vertex-cover problem (VCP) is NP-complete.

Lemma: 3SAT ≤ p VCP.


Proof (Cont…):
• We first put the nodes of the variable-gadgets that correspond
to the true literals in the assignment into the vertex cover (VC).
• Then, select one true literal in every clause and put the
remaining two nodes from every clause-gadget into the VC.
• Now, we have a total of k = l + 2m nodes. They cover all edges
because every variable-gadget edge is clearly covered, all
three edges within every clause-gadget are covered, and all
edges between variable and clause gadgets are covered.
• Hence G has a vertex cover with k nodes.
Dr. Pratyay Kuila, NIT Sikkim 27
Theorem 4: Vertex-cover problem (VCP) is NP-complete.

Lemma: 3SAT ≤ p VCP.


Proof (Cont…):
• Second, if G has a VC with k nodes, we show that F is satisfiable.
• The VC must contain one node in each variable-gadget and two in
every clause-gadget in order to cover the edges of the variable-gadgets
and the three edges within the clause-gadgets. So none are left over.
• We take the nodes of the variable-gadgets that are in the VC and assign
the corresponding literals TRUE. That assignment satisfies F because
each of the three edges connecting the variable-gadgets with each
clause-gadget is covered and only two nodes of the clause-gadget are in
the vertex cover.
• Therefore one of the edges must be covered by a node from a variable
gadget and so that assignment satisfies the corresponding clause.
Dr. Pratyay Kuila, NIT Sikkim 28
Example 4: Let us consider a 3-CNF,
E = (x1 ∨ ¬x3 ∨ ¬x4)(¬ x2 ∨ x3 ∨ x4) (¬ x1 ∨ x2 ∨ x3).
Therefore, k = l + 2m = 4+2×3 = 10.
Variable-gadget Variable-gadget Variable-gadget Variable-gadget
x1 x1 x2 x2 x3 x3 x4 x4

x1 x2 x1

x3 x4 x3 x4 x2 x3
Clause-gadget Clause-gadget Clause-gadget

Dr. Pratyay Kuila, NIT Sikkim 29


Example 4: Let us consider a 3-CNF,
E = (x1 ∨ ¬x3 ∨ ¬x4)(¬ x2 ∨ x3 ∨ x4) (¬ x1 ∨ x2 ∨ x3).
Therefore, k = l + 2m = 4+2×3 = 10.

x1 x1 x2 x2 x3 x3 x4 x4

x1 x2 x1

x3 x4 x3 x4 x2 x3

Dr. Pratyay Kuila, NIT Sikkim 30


Theorem 4: Vertex-cover problem (VCP) is NP-complete.
Lemma: 3SAT ≤ p VCP.
Proof (Cont…):
• Therefore, 3SAT ≤p VCP. Hence, every NP problem is polynomial
time reducible to VCP.
• We have VCP ∈ NP.
• Hence, VCP is NP-Complete.

Dr. Pratyay Kuila, NIT Sikkim 31


Theorem 4: Vertex-cover problem (VCP) is NP-complete.
Lemma: 3SAT ≤ p VCP.
Proof (Cont…):
• Therefore, 3SAT ≤p VCP. Hence, every NP problem is polynomial
time reducible to VCP.
• We have VCP ∈ NP.
• Hence, VCP is NP-Complete.

Lemma: IS ≤ p VCP.
• The complement of an Independent Set (IS) is Vertex-cover.
• A graph G has an IS of size k, if and only if G has a vertex-cover of
size n-k (i.e., IS ≤ p VCP).
• Hence, VCP is NP-complete.

Dr. Pratyay Kuila, NIT Sikkim 32


Theorem 5: CLIQUE is NP-complete.

➢ A k-clique in a graph G is set of k nodes of G such that there is


an edge between every two nodes in the clique.

➢ CLIQUE: given a graph G and a constant k, does G has a


k-clique?

3-clique 4-clique 3-clique


Dr. Pratyay Kuila, NIT Sikkim 33
Theorem 5: CLIQUE is NP-complete.

Lemma: 3SAT ≤ p CLIQUE.


Proof:
• Given a 3-CNF formula with m clauses, we create an
undirected graph G with at most 3m vertices.
• We then connect every pair of vertices, with the exception of
vertices in the same clause and vertices labelled with a
variable and its negation (i.e. (xi and ¬ xi) for some i).
• We now show that G has an m-clique if and only if the 3-CNF
is satisfiable. Now, we have to show that CLIQUE ∈ NP.

Dr. Pratyay Kuila, NIT Sikkim 34


Example 5: Let us consider a 3-CNF,
F = (x1 ∨ ¬x3 ∨ ¬x4)(¬ x2 ∨ x3 ∨ x4) (¬ x1 ∨ x2 ∨ x3).

x2 x3 x4

x1
x1

x3 x2

x4
x3

Dr. Pratyay Kuila, NIT Sikkim 35


Example 5: Let us consider a 3-CNF,
F = (x1 ∨ ¬x3 ∨ ¬x4)(¬ x2 ∨ x3 ∨ x4) (¬ x1 ∨ x2 ∨ x3).

x2 x3 x4

x1
x1

x3 x2

x4
x3

Dr. Pratyay Kuila, NIT Sikkim 36


Example 5: Let us consider a 3-CNF,
F = (x1 ∨ ¬x3 ∨ ¬x4)(¬ x2 ∨ x3 ∨ x4) (¬ x1 ∨ x2 ∨ x3).

x2 x3 x4

x1
x1

x3 x2

x4
x3

Dr. Pratyay Kuila, NIT Sikkim 37


Theorem 5: CLIQUE is NP-complete.

Lemma: 3SAT ≤ p CLIQUE.


Proof (Cont…): In each triple of G, we select one node corresponding
to a true literal in the satisfying assignment. If more than one literal is
true in a particular clause, we choose one of the true literals arbitrarily.
The nodes just selected form a k-clique. The number of nodes selected
is k, because we chose one for each of the k triples.
Each pair of selected nodes is joined by an edge because no pair fits
one of the exceptions described previously. They could not be from
the same triple because we selected only one node per triple. They
could not have contradictory labels because the associated literals
were both true in the satisfying assignment. Therefore G contains a
k-clique.

Dr. Pratyay Kuila, NIT Sikkim 38


Theorem 5: CLIQUE is NP-complete.

Lemma: 3SAT ≤ p CLIQUE.


Proof (Cont…):
• Therefore, 3SAT ≤p CLIQUE. Hence, every NP problem is
polynomial time reducible to CLIQUE.
• We have CLIQUE ∈ NP.
• Hence, CLIQUE is NP-Complete.

Dr. Pratyay Kuila, NIT Sikkim 39


Theorem 6: Hamiltonian Cycle (HC) is NP-complete.

➢ Given a directed graph G, the Hamiltonian Cycle visits every


vertex exactly once.
➢ The Hamiltonian cycle problem is to determine, whether a given
graph contains such cycle or not.

Dr. Pratyay Kuila, NIT Sikkim 40


Theorem 6: Hamiltonian Cycle (HC) is NP-complete.

➢ Given a directed graph G, the Hamiltonian Cycle visits every


vertex exactly once.
➢ The Hamiltonian cycle problem is to determine, whether a given
graph contains such cycle or not.

➢ First, we have to show that HC ∈ NP.


➢ Second we show, 3SAT ≤ p HC.
➢ For each 3CNF-formula F we show how to construct a directed
graph G with two nodes, s and t, where a Hamiltonian cycle
exists between s and t iff F is satisfiable.
➢ Consider an instance I of 3-SAT, with variables x1,…, xn and
clauses C1, …, Ck.
Dr. Pratyay Kuila, NIT Sikkim 41
Theorem 6: Hamiltonian Cycle (HC) is NP-complete.

➢ First, we have to show that HC ∈ NP.


▪ Given a graph G =(V, E), our certificate is the sequence of |V|
vertices that makes up the Hamiltonian cycle.
▪ The verification algorithm checks that this sequence contains
each vertex in V exactly once and that with the first vertex
repeated at the end, it forms a cycle in G.
▪ That is, it checks that there is an edge between each pair of
consecutive vertices and between the first and last vertices.
▪ We can verify the certificate in polynomial time.
➢ Second we show, 3SAT ≤ p HC.
Dr. Pratyay Kuila, NIT Sikkim 42
Represent each variable xi by a gadget with 3k + 3 nodes as follow:

The middle horizontal row contains 3k + 1 nodes.

Dr. Pratyay Kuila, NIT Sikkim 43


Following is an example of the middle horizontal row for a CNF
with 4 clauses. The node 2i and 2i+1 represents clause Ci.

C1 C2 C3 C4

We have to design such n number of gadgets for all n variables,


x1, …, xn

Dr. Pratyay Kuila, NIT Sikkim 44


The gadgets can be visited by the following way.

xi = true. xi = false.

Now, add k number of clauses C1, …, Ck as k vertices.

Dr. Pratyay Kuila, NIT Sikkim 45


A 3-CNF with l literals and
k clauses can be represented
as the shown graph. Here,
each individual gadget has
3k + 3 nodes.

Dr. Pratyay Kuila, NIT Sikkim 46


For each literals, xi, all clauses are connected as follow.

➢ If xi is in clause Cj then connect the node 2j and 2j+1 of the


gadget xi with the clause node Cj. Note the direction of the
connection.

Cj

Gadget for xi ... ...

Cj
Dr. Pratyay Kuila, NIT Sikkim 47
➢ If ¬ xi is in clause Cj then connect the node 2j+1 and 2j of the
gadget xi with the clause node Cj. Again note the different
direction of the connection.

Cj

Gadget for xi ... ...

Cj
Dr. Pratyay Kuila, NIT Sikkim 48
➢ After adding all the edges corresponding to each
occurrence of xi or ¬xi in each clause, the construction of
the G is complete.

➢ If the 3-CNF is satisfiable, a Hamiltonian path exists from


s to t and, conversely, if such a path exists, the 3-CNF is
satisfiable.

Dr. Pratyay Kuila, NIT Sikkim 49


Example: (x + y)(¬ x + ¬ y) As the graph has a
Hamiltonian path
from s to t, the
CNF is satisfiable.
Here, it can be
observed from the
path movement that
the CNF is
satisfiable for x =1
and y = 0.

Dr. Pratyay Kuila, NIT Sikkim 50


Theorem 7: Subset Sum is NP-complete.
Theorem 8: Integer programming is NP-complete.
Theorem 9: 3-Color (Graph coloring with 3 colors) is NP-
complete.
Theorem 10: Travelling Salesperson Problem (TSP) is NP-
complete.
Theorem 11: 2-SAT ∈ P.

Dr. Pratyay Kuila, NIT Sikkim 51


References:

1. T. H. Cormen, C. E. Leiserson, R. L. Rivest, Introduction to


Algorithms, Prentice hall.
2. Sanjeev Arora and Boaz Barak, Computational Complexity: A
Modern Approach.
3. Michael Sipser, Introduction to the theory of computation.

Dr. Pratyay Kuila, NIT Sikkim 52


Never Give up.

Keep Hardworking.

Take Care.

Dr. Pratyay Kuila, NIT Sikkim 53

You might also like