Lec01 Motivation
Lec01 Motivation
(ESO207)
Lecture 1:
• An overview and motivation for the course
• some concrete examples.
1
Some Information
ESO207/ESO207A: Data Structures and Algorithms
2
Acknowledgment
3
Prerequisite of this course
4
Salient features of the course
A processor (CPU)
speed = few GHz
(a few nanoseconds to execute an instruction)
6
A simplifying assumption
(for the rest of the lecture)
7
EFFICIENT ALGORITHMS
8
What is an algorithm ?
Definition:
A finite sequence of well defined instructions
required to solve a given computational problem.
9
WHY SHOULD WE CARE FOR
EFFICIENT ALGORITHMS
10
Revisiting problems from ESC101
11
Problem 1:
Fibonacci numbers
Fibonacci numbers
;
;
for all ;
IFib(n)
if n=0 return 0;
else if n=1 return 1;
else {
a 0; b 1;
For(i=2 to n) do
{ temp b;
b a+b;
a temp;
}
}
return b;
13
Recursive algorithm for ()
Rfib(n)
{ if n=0 return 0;
else if n=1 return 1;
else return(Rfib(n-1) + Rfib(n-2))
}
14
Homework 1
(compulsory)
Input: a number
: long long int (64 bit integer).
Output: F() mod
1 minute
10 minutes
60 minutes
15
Problem 2:
Subset-sum problem
A 21 2123
20
16
Problem 3:
Sorting
A fact:
A significant fraction of the code of all the software is for sorting or searching only.
17
How to design efficient algorithm for a problem ?
Design of algorithms and data structures is also
an Art
Requires:
• Creativity
• Hard work
• Practice
• Perseverance (most important) 18
Summary of Algorithms
• There are many practically relevant problems for which there does not
exist any efficient algorithm till date . (How to deal with them ?)
19
THE DATA STRUCTURES
20
An Example
Given: a telephone directory storing telephone no. of hundred million persons.
Aim: to answer a sequence of queries of the form
“what is the phone number of a given person ?”.
Solution 1 :
Keep the directory in an array.
do sequential search for each query.
Time per query: around 1/10th of a second
Solution 2:
Keep the directory in an array, and sort it according to names,
do binary search for each query.
21
Aim of a data structure ?
22
Range-Minima Problem
A Motivating example
to realize the importance of data structures
23
Range-Minima Problem
Given: an array A storing numbers,
Aim: a data structure to answer a sequence of queries of the following type
Range-minima() : report the smallest element from A[],…,A[]
A 3 5 1 8 19 0 -1 30 99 -6 10 2 40 27 44 67
𝑖=4 𝑗=11
Range-Minima Problem
Applications:
• Computational geometry
• String matching
25
Range-Minima Problem
Solution 1:
Answer each query in a brute force manner using A itself.
Range-minima-trivial(i,j)
{ temp i+1; Time for answering all queries:
min A[i]; a few hours
While(temp <= j)
{ if (min > A[temp])
min A[temp];
temp temp+1;
}
return min
}
Time taken to answer a query: few milliseconds
26
Range-Minima Problem
Solution 2:
Compute and store answer for each possible query in a × matrix B.
𝑗
Solution 2 is
Theoretically efficient but
𝑖 3
practically impossible
• Compact
(nearly the same size as the input array A)
• Can answer each query efficiently ?
(a few nanoseconds per query)
28
Data structures to be covered in this
course
Elementary Data Structures
– Array
– List
– Stack
– Queue
30