0% found this document useful (0 votes)
120 views31 pages

Data Structures and Algorithms: CS210/CS210A

- The range-minima problem takes an array A and queries to find the minimum element between indices i and j. - Solution 1 answers each query individually in O(j-i) time by scanning the subarray, taking milliseconds per query. - Solution 2 preprocesses the answers into a matrix B taking O(n^2) space, but can answer queries in constant time. However, the space required is impractical for large n. - An efficient solution is needed that uses sublinear space and answers queries faster than Solution 1's linear time.

Uploaded by

Madhav Agarwal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
120 views31 pages

Data Structures and Algorithms: CS210/CS210A

- The range-minima problem takes an array A and queries to find the minimum element between indices i and j. - Solution 1 answers each query individually in O(j-i) time by scanning the subarray, taking milliseconds per query. - Solution 2 preprocesses the answers into a matrix B taking O(n^2) space, but can answer queries in constant time. However, the space required is impractical for large n. - An efficient solution is needed that uses sublinear space and answers queries faster than Solution 1's linear time.

Uploaded by

Madhav Agarwal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 31

Data Structures and Algorithms

(CS210/CS210A)

Lecture 1:
• An overview and motivation for the course
• some concrete examples.

1
The website of the course
moodle.cse.iitk.ac.in
CSE
CS210: Data Structures and Algorithms
(guest login allowed)

This course will be taught differently.

2
Those were the golden moments…

As an instructor, I shall try my


best to make this course equally
enjoyable as solving those
physics problems.

3
Prerequisite of this course

• A good command on Programming in C


– Programs involving arrays
– Recursion
– Linked lists (preferred)

• Fascination for solving Puzzles

4
Salient features of the course

• Every concept We shall re-invent in the class itself.

• Solving each problem Through discussion in the class.

solution will emerge naturally if we ask


right set of questions
and then try to find their answers.

… so that finally it is a concept/solution derived by you


and not a concept from some scientist/book/teacher.

Isn’t that nice 


5
Let us open a desktop/laptop

A processor (CPU)
speed = few GHz
(a few nanoseconds to execute an instruction)

Internal memory (RAM)


size = a few GB (Stores a billion bytes/words)
speed = a few GHz( a few nanoseconds to read a byte/word)

External Memory (Hard Disk Drive)


size = a few tera bytes
speed : seek time = miliseconds
transfer rate= around billion bits per second

6
A simplifying assumption
(for the rest of the lecture)

It takes around a few nanoseconds to execute an instruction.

(This assumption is well supported by the modern day computers)

7
8
What is an algorithm ?

Definition:
A finite sequence of well defined instructions
required to solve a given computational problem.

A prime objective of the course:


Design of efficient algorithms

9
10
Revisiting problems from ESC101

11
Problem 1:
Fibonacci numbers

Fibonacci numbers
𝑭(0) = 0;
𝑭(1) = 1;
𝑭(𝑛) = 𝑭(𝑛 − 1) + 𝑭(𝑛 − 2) for all 𝑛 > 1;
𝑭 𝑛 ≈ 𝑎 ⋅ 𝑏𝑛

An easy exercise : Using induction or otherwise, show that


𝑛−2
𝑭(𝑛) > 2 2

Algorithms you must have implemented for computing 𝑭(n) :


• Iterative
• recursive

13
Iterative Algorithm for 𝑭(𝒏)

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;
14
Recursive algorithm for 𝑭(𝒏)

Rfib(n)
{ if n=0 return 0;
else if n=1 return 1;
else return(Rfib(n-1) + Rfib(n-2))
}

15
Homework 1
(compulsory)

Write a C program for the following problem:

Input: a number 𝒏
𝒏 : long long int (64 bit integer).
Output: F(𝒏) mod 𝟐𝟎𝟏𝟒

Time Taken Largest 𝒏 for Rfib Largest 𝒏 for IFib

1 minute
10 minutes
60 minutes

16
Problem 2:
Subset-sum problem

Input: An array A storing 𝒏 numbers, and a number 𝒔

A 12 3 46 34 19 101 208 120 219 115 220


123

Output: Determine if there is a subset of numbers from A whose sum is 𝒔.

𝒏/𝟐
The fastest existing algorithm till date : 𝟐 instructions

• Time for 𝒏 = 𝟏𝟎𝟎 At least an year


• Time for 𝒏 = 𝟏𝟐𝟎 At least 1000 years
on the fastest existing computer.

17
Problem 3:
Sorting

Input: An array A storing n numbers.


Output: Sorted A

A fact:
A significant fraction of the code of all the software is for sorting or searching only.

To sort 10 million numbers on the present day computers


• Selection sort will take at least a few hours.
• Merge sort will take only a few seconds.
• Quick sort will take ??? .

18
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)
19
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 ?)

• Efficient algorithms are important for theoretical as well as practical


purposes.

• Algorithm design is an art which demands a lot of creativity, intuition, and


perseverance.

• More and more applications in real life require efficient algorithms


– Search engines like Google exploits many clever algorithms.

20
21
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.
Time per query: less than 100 nanoseconds

22
Aim of a data structure ?

To store/organize a given data in the memory of computer so that


each subsequent operation (query/update) can be performed quickly ?

23
Range-Minima Problem

A Motivating example
to realize the importance of data structures

24
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[𝑗]

Let 𝒏 = one million.


No. of queries = 10 millions
Range-Minima(𝑖, 𝑗) = -6

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

• As an efficient subroutine in a variety of algorithms

(we shall discuss these problems sometime in this course or the next level
course CS345)

26
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

27
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

Size of B is too large to be


B kept in RAM. So we shall
have to keep most of it in the
Hard disk drive. Hence it will
take a few milliseconds per
query.
B[𝑖][𝑗] stores the smallest element from A[𝑖],…,A[𝑗]
Space : roughly 𝒏𝟐 words.

28
Range-Minima Problem

Question: Does there exist a data structure for Range-minima which is

• Compact
(nearly the same size as the input array A)
• Can answer each query efficiently ?
(a few nanoseconds per query)

Homework 2: Ponder over the above question.


(we shall solve it soon)

29
Range-1-Query
Determining if a rectangle has at least one 1 ?
• Data structure: a few tables.
• Query time: a few nanoseconds.
0 0 0 1 1 0 1 0
0 1 1 0 1 0 0 1
1 0 1 0 0 1 1 1
1 0 0 0 0 1 0 0
0 1 0 1 0 0 0 0
0 0 1 0 1 0 0 1
1 0 0 0 0 0 0 1
0 0 1 1 1 0 0 1
Any idea about
when this result in a Conference in
was derived ? 2015
Data structures to be covered in this
course
Elementary Data Structures
– Array
– List
– Stack
– Queue

Hierarchical Data Structures


– Binary Heap
– Binary Search Trees

Most fascinating and


Augmented Data Structures powerful data structures

31
• Look forward to working with all of you to make this course
enjoyable.

• This course will be light in contents (no formulas)


But it will be very demanding too.

• In case of any difficulty during the course,


just drop me an email without any delay.
I shall be happy to help 

32

You might also like