0% found this document useful (0 votes)
30 views

Auto Maeta Theroi

The document provides an overview of automata theory and formal languages. It discusses how abstract computational devices called automata are used to model real computations. Examples of simple automata with finite states are presented, including ones that turn a light on based on the number of times switches are flipped. The document outlines different types of automata that will be covered, including finite automata, pushdown automata, and Turing machines. It also summarizes how these models of computation can be used to determine whether a problem can be solved by a given type of computing device.

Uploaded by

GANAPATHY.S
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
30 views

Auto Maeta Theroi

The document provides an overview of automata theory and formal languages. It discusses how abstract computational devices called automata are used to model real computations. Examples of simple automata with finite states are presented, including ones that turn a light on based on the number of times switches are flipped. The document outlines different types of automata that will be covered, including finite automata, pushdown automata, and Turing machines. It also summarizes how these models of computation can be used to determine whether a problem can be solved by a given type of computing device.

Uploaded by

GANAPATHY.S
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 29

The Chinese University of Hong Kong Fall 2008

Automata theory and formal languages

Andrej Bogdanov http://www.cse.cuhk.edu.hk/~andrejb/csc3130

What is automata theory


Automata theory is the study of abstract computational devices
Abstract devices are (simplified) models of real computations Computations happen everywhere: On your laptop, on your cell phone, in nature,

Why do we need abstract models?

A simple computer

BATTERY

input: switch
output: light bulb actions: flip switch

states: on, off

A simple computer

f
BATTERY

start

off
f

on

input: switch
output: light bulb actions: f for flip switch bulb is on if and only if there was an odd number of flips

states: on, off

Another computer
1 1 start off

1 2
1 2

off

BATTERY

2 2

off

on

inputs: switches 1 and 2


actions: 1 for flip switch 1 actions: 2 for flip switch 2 bulb is on if and only if both switches were flipped an odd number of times

states: on, off

A design problem
1

BATTERY

2 3

4 5

Can you design a circuit where the light is on if and only if all the switches were flipped exactly the same number of times?

A design problem
Such devices are difficult to reason about, because they can be designed in an infinite number of ways
By representing them as abstract computational devices, or automata, we will learn how to answer such questions

These devices can model many things


They can describe the operation of any small computer, like the control component of an alarm clock or a microwave
They are also used in lexical analyzers to recognize well formed expressions in programming languages:
ab1 is a legal name of a variable in C 5u= is not

Different kinds of automata


This was only one example of a computational device, and there are others
We will look at different devices, and look at the following questions:
What can a given type of device compute, and what are its limitations? Is one type of device more powerful than another?

Some devices we will see


finite automata push-down automata Devices with a finite amount of memory. Used to model small computers. Devices with infinite memory that can be accessed in a restricted way.

Used to model parsers, etc. Turing Machines Devices with infinite memory.
Used to model any computer. time-bounded Turing Machines Infinite memory, but bounded running time. Used to model any computer program that runs in a reasonable amount of time.

Some highlights of the course


Finite automata
We will understand what kinds of things a device with finite memory can do, and what it cannot do Introduce simulation: the ability of one device to imitate another device Introduce nondeterminism: the ability of a device to make arbitrary choices

Push-down automata
These devices are related to grammars, which describe the structure of programming (and natural) languages

Some highlights of the course


Turing Machines
This is a general model of a computer, capturing anything we could ever hope to compute Surprisingly, there are many things that we cannot compute, for example: Write a program that, given the code of another program in C, tells if this program ever outputs the word hello It seems that you should be able to tell just by looking at the program, but it is impossible to do!

Some highlights of the course


Time-bounded Turing Machines
Many problems are possible to solve on a computer in principle, but take too much time in practice Traveling salesman: Given a list of cities, find the shortest way to visit them and come back home
Beijing Xian Guangzhou Hong Kong

Chengdu

Shanghai

Easy in principle: Try the cities in every possible order Hard in practice: For 100 cities, this would take 100+ years even on the fastest computer!

Preliminaries of automata theory


How do we formalize the question
Can device A solve problem B? First, we need a formal way of describing the problems that we are interested in solving

Problems
Examples of problems we will consider
Given a word s, does it contain the subword fool? Given a number n, is it divisible by 7? Given a pair of words s and t, are they the same? Given an expression with brackets, e.g. (()()), does every left bracket match with a subsequent right bracket?

All of these have yes/no answers.


There are other types of problems, that ask Find this or How many of that but we wont look at those.

Alphabets and strings


A common way to talk about words, number, pairs of words, etc. is by representing them as strings
To define strings, we start with an alphabet An alphabet is a finite set of symbols. Examples S1 = {a, b, c, d, , z}: the set of letters in English
S2 = {0, 1, , 9}: the set of (base 10) digits S3 = {a, b, , z, #}: the set of letters plus the special symbol # S4 = {(, )}: the set of open and closed brackets

Strings
A string over alphabet S is a finite sequence of symbols in S.

The empty string will be denoted by e


Examples
abfbz is a string over S1 = {a, b, c, d, , z} 9021 is a string over S2 = {0, 1, , 9} ab#bc is a string over S3 = {a, b, , z, #} ))()(() is a string over S4 = {(, )}

Languages
A language is a set of strings over an alphabet. Languages can be used to describe problems with yes/no answers, for example:
L1 = The set of all strings over S1 that contain the substring fool The set of all strings over S2 that are divisible by

L2 = 7 = {7, 14, 21, } L3 = The set of all strings of the form s#s where s is any string over {a, b, , z} L4 = The set of all strings over S4 where every ( can

Finite Automata

Example of a finite automaton


f on f

off

There are states off and on, the automaton starts in off and tries to reach the good state on

What sequences of fs lead to the good state?


Answer: {f, fff, fffff, } = {f n: n is odd} This is an example of a deterministic finite automaton over alphabet {f}

Deterministic finite automata


A deterministic finite automaton (DFA) is a 5tuple (Q, S, d, q0, F) where
Q is a finite set of states S is an alphabet d: Q S Q is a transition function q0 Q is the initial state F Q is a set of accepting states (or final states).

In diagrams, the accepting states will be denoted by double loops

Example
0 q0 1 q1 1 0 q2 0,1

states

alphabet S = {0, 1} start state Q = {q0, q1, q2} initial state q0 accepting states F = {q0, q1}

transition function d:
inputs

q0 q1 q2

0 q0 q2 q2

1 q1 q1 q2

Language of a DFA
The language of a DFA (Q, S, d, q0, F) is the set of all strings over S that, starting from q0 and following the transitions as the string is read left to right, will reach some accepting state.
f

M:

off

on

Language of M is {f, fff, fffff, } = {f n: n is odd}

Examples
0 q0 0 q0 1 0 1 1 q1 0 q2 q1 1 1 q1 1 0

0 q0

0,1

What are the languages of these DFAs?

Examples
Construct a DFA that accepts the language
L = {010, 1} ( S = {0, 1} )

Examples
Construct a DFA that accepts the language
L = {010, 1} ( S = {0, 1} )

Answer
0
qe

q0

q01

q010

0 1
q1 0, 1

1 0, 1
qdie 0, 1

Examples
Construct a DFA over alphabet {0, 1} that accepts all strings that end in 101

Examples
Construct a DFA over alphabet {0, 1} that accepts all strings that end in 101 Hint: The DFA must remember the last 3 bits of the string it is reading

Examples
Construct a DFA over alphabet {0, 1} that accepts all strings that end in 101
Sketch of answer:
0 0 0 qe 1 0 q1 1 q0 1 q00 q01 q10 q11 1 q000 1 q001 0

q111

q101

You might also like