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

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
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
95 views

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
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