Theory of
Computation
Lecture # 1-2-3
Book
Introduction to Theory of Computation by Anil
Maheshwari Michiel Smid, 2014
Introduction to computer theory by Daniel I.A. Cohen Second
Edition
Introduction
to the Theory of Computation
(second/third edition) by Michael Sipser
Introduction to Languages and Theory of Computation, by J. C.
Martin, McGraw Hill Book Co., 1997, Second Edition
Main contents
RE
NFA
DFA
CFG
PDA
NPDS
TM(The Church-Turing Thesis )
Decidable and Undecidable Languages
NP Completeness Complexity Theory
Reducibility & Intractability
Language
Natural Languages
English, Chinese, French, Urdu etc
Programming Languages
Basic, Fortran, C, C++, Java etc
Mathematics
State diagram
etc
Components of Language
Alphabets
Basic elements
Set of letters or characters
Rules
Grammar
Tells you that words belongs to a language
Syntax
Meaning
Semantics
Definition
Language
Set of strings of characters from the alphabets
Word
A set of characters belongs to the language
English Words
Alphabets
a b cz A B C .Z punctuation marks,
blank space etc
Words
All words in standard dictionary
What is on the exam
The quick brown fox jumped over the lazy dog
E.g
context-free, regular
C-Language
Alphabets
ASCII characters
Words
Programs
#include<conio.h> main()
{printf(Hello);}
Conventions
What does Theory of automata
mean?
The word Theory means that this subject is
a more mathematical
practical.
subject
and
less
Automata is the plural of the word Automaton
which means self-acting
In
general, this subject focuses on
theoretical aspects of computer science.
the
Theory of Automata
Applications
This subject plays a major role in:
Defining computer languages
Compiler Construction
Parsing
etc
Types of languages
There are two types of languages
Formal Languages are used as a basis for
defining computer languages
A predefined set of symbols and string
Formal language theory studies purely syntactical
aspects of a language (e.g., word abcd)
Informal Languages
different versions
such as English has many
Basic Element of a Formal
Language Alphabets
Definition:
A finite non-empty set of symbols (letters), is
called an alphabet. It is denoted by Greek letter
sigma .
Example:
={1,2,3}
={0,1} //Binary digits
={i,j,k}
Example Computer Languages
C Language
C++
Java
Vb.net
C#.net
etc
What are Strings
A String is formed by combining various symbols
from an alphabet.
Example:
If = {1,0} then some sample strings are
0, 1, 110011, ..
Similarly, If = {a, b} then some sample strings
are
a, b, abbbbbb, aaaabbbbb, ..
What is an EMPTY or NULL String
A string with no symbol is denoted by (Small
Greek letter Lambda) or (Capital Greek
letter Lambda) . It is called an empty string
or null string.
Please dont confuse it with logical operator
and.
What are Words
Words are strings that belong to some specific
language.
Example:
If = {a} then a language L can be defined as
L={a,aa,aaa,.} where L is a set of words of
the language define by given set of alphabets.
Also a, aa, are the words of L but not ab.
Defining Alphabets Guidelines
The following are three important rules for defining
Alphabets for a language:
Should not contain empty symbol
Should be finite. Thus, the number of symbols are
finite
Should not be ambiguous
Example: an alphabet may contain letters consisting
of group of symbols for example 1= {A, aA, bab, d}.
All starting letters are unique
Defining Alphabets Guidelines
Now consider an alphabet
2= {A, Aa, bab, d} and a string AababA.
This string can be factored in two different ways
(Aa), (bab), (A)
(A), (abab), (A)
Which shows that the second group cannot be
identified as a string, defined over = {a, b}.
This is due to ambiguity in the defined alphabet
2
(Because of A and Aa)
Ambiguity Examples
1= {A, aA, bab, d}
2= {A, Aa, bab, d}
1 is a valid alphabet while 2 is an in-valid alphabet.
Similarly,
1= {a, ab, ac}
2= {a, ba, ca}
In this case, 1 is a invalid alphabet while 2 is a
valid alphabet.
Length of Strings
Definition:
The length of string s, denoted by |s|, is the
number of letters/symbols in the string.
Example:
={a,b}
s=aaabb
|s|=5
Word Length Example
Number of words in a string
Example:
= {A, aA, bab, d}
s=AaAbabAd
Factoring=(A), (aA), (bab), (A), (d)
|s|=5
One important point to note here is that aA has a
length 1 and not 2.
Length of strings over n
alphabets
Formula: Number of strings of length m defined
over alphabet of n letters is nm
Examples:
The language of strings of length 2, defined over
={a,b}is L={aa, ab, ba, bb} i.e. number of strings =
22
The language of strings of length 3, defined over
={a,b} is L={aaa, aab, aba, baa, abb, bab, bba, bbb}
i.e. number of strings = 23
Reverse of a String
The reverse of a string s denoted by Rev(s) or
obtained by writing the letters of s in reverse order.
Example:
If s=abc is a string defined over ={a,b,c}
then Rev(s) or sr= cba
= {A, aA, bab, d}
s=AaAbabAd
Rev(s)=dAbabAaA
sr,
is
PALINDROME
(Palindrome examples: CIVIC, MADAM, RADAR, STATS, TALLAT, ROTATOR)
The language consisting of and the strings s
defined over such that Rev(s)=s.
It is to be denoted that the words of PALINDROME
are called palindromes.
Example:
For ={a, b}
PALINDROME={ , a, b, aa, bb, aaa, aba, bab,
bbb, ...}
Even Even
All strings that contains even number of as
and even number of bs
E.g
^, aa, bb, aabb, abab, abba, baab etc
Kleene Star closure
It is denoted by *and represent all collection
of strings defined over including Null string.
The language produced by Kleene closure is
infinite. It contains infinite words, however
each word has finite length.
Kleene Star closure
Examples
If = {x}
Then * = {, x, xx, xxx, xxxx, .}
If = {0,1}
Then * = {, 0, 1, 00, 01, 10, 11, .}
If = {aaB, c}
Then * = { ,aaB, c, aaBaaB, aaBc, caaB, cc,
.}
Kleene Star closure
Consider the language S*, where S = {a b}.
How many words does this language have of
length 2? of length 3? of length n?
Number of words = nm
Length 2: 22 = 4
Length 3: 23= 8
Length n: 2n
(n is number of symbols and m is length)
Plus Operation
With Plus Operation, combination of different
letters are formed. However, Null String is not
part of the generated language.
Plus Operation
Examples
If = {x}
Then + = { x, xx, xxx, xxxx, .}
If = {0,1}
Then + = { 0, 1, 00, 01, 10, 11, .}
If = {aaB, c}
Then + = {aaB, c, aaBaaB, aaBc, caaB, cc,
.}
Defining language
Four different ways, in which a language can be defined
There are four ways that we will study in this course:
Descriptive way
Recursive way
Regular Expression
Finite Automata
Descriptive way and its examples
The language and its associated conditions are defined in plain
English.
Example:
The language L of strings of even length, defined over ={b}, can
be written as
L={bb, bbbb, ..}
Example:
The language L of strings that does not start with a, defined over
={a,b,c}, can be written as
L={b, c, ba, bb, bc, ca, cb, cc, }
Descriptive way and its examples
Example:
The
language L of strings of length 3, defined over ={0,1,2}, can be
written as
L={000,
012, 022,101, 101,120,}
Example:
The
language L of strings ending in 1, defined over ={0,1}, can be
written as
L={1,001,101,0001,0101,1001,1101,}
Example:
The
language EQUAL, of strings with number of as equal to number
of bs, defined over ={a,b}, can be written as
L={ ,ab,aabb,abab,baba,abba,}
Descriptive way and its examples
Example:
The language EVEN-EVEN, of strings with even number of as
and even number of bs, defined over ={a,b}, can be written as
L={, aa, bb, aaaa, aabb,abab, abba, baab, baba, bbaa, bbbb,
}
Example:
The language INTEGER, of strings defined over
={-,0,1,2,3,4,5,6,7,8,9}, can be written as
INTEGER = {,-2,-1,0,1,2,}
Example:
The
language
EVEN,
of
stings
defined
over
={-,0,1,2,3,4,5,6,7,8,9}, can be written as
EVEN = { ,-4,-2,0,2,4,}
Descriptive way and its examples
Example:
The language {anbn}, of strings defined over
={a,b}, as
{an bn: n=1,2,3,}, can be written as
L= {ab, aabb, aaabbb,aaaabbbb,}
Example:
The language {anbncn}, of strings defined over
={a,b,c}, as {anbncn: n=1,2,3,}, can be written
as
L= {abc, aabbcc, aaabbbccc,aaaabbbbcccc,}