Lecture 1
Lecture 1
Dr. Shamshad
Lakho
1
Books
Thomas H. Corman, Charles E. Leiserson,
Ronald L. Rivest and Clifford Stein,
“Introduction to Algorithms”, Latest Edition.
Jon Kleinberg, Eva Tardos, “Algorithm
Design”, Latest Edition.
Robert Sedgewick, Kevin Wayne,
“Algorithms”, Latest Edition.
Course Outline
Data Structure (Recap)
Introduction of Algorithms and its notation
Basics algorithms and its analysis
Asymptotic notations
Recursion and recurrence relations
Divide-and-conquer approach
Sorting; Search trees
Hashing
3
Course Outline (Cont !!!)
Binary Search Tree
Graph algorithms; Shortest paths; Network
flow; Disjoint Sets; Polynomial and matrix
calculations;
Greedy approach
Dynamic programming
String matching algorithms
Amortized analysis
NP complete problems
4
Design and Analysis of
Algorithms
An Algorithm is a sequence of steps to solve a
problem.
Design and Analysis of Algorithm is very
important for designing algorithm to solve
different types of problems in the branch of
computer science and information technology.
5
Data Structure Recap
6
Algorithm
An algorithm is a set of steps of operations to
solve a problem performing calculation, data
processing, and automated reasoning tasks.
An algorithm is an efficient method that can be
expressed within finite amount of time and space.
An algorithm is the best way to represent the
solution of a particular problem in a very simple
and efficient way.
If we have an algorithm for a specific problem,
then we can implement it in any programming
language, meaning that the algorithm is
independent from any programming languages.
Algorithm Design
The important aspects of algorithm design include
creating an efficient algorithm to solve a problem in
an efficient way using minimum time and space.
To solve a problem, different approaches can be
followed. Some of them can be efficient with respect
to time consumption, whereas other approaches may
be memory efficient.
However, one has to keep in mind that both time
consumption and memory usage cannot be optimized
simultaneously.
If we require an algorithm to run in lesser time, we
have to invest in more memory and if we require an
algorithm to run with lesser memory, we need to have
more time.
Data Structure Recap
9
Data Structure Recap
11
Data Structure Recap
12
Data Structure Recap
13
Data Structure Recap
Array
Linear and sequential
Array is combination of homogenous element with
N Consecutive index numbers (Such as 1,2,3,4, . . .)
Successive memory location (such as 102, 104, 106 . . . )
Successive memory location depend on the size of data types,
such as in C language size of integer data type is 2 bytes)
Two types of array are commonly used.
One Dimensional (1-D) ( Only logical data structure)
Two Dimensional (2-D) (Physical Data structure)
Dope Vector method is used to convert 2-D into 1-D
14
Data Structure Recap
Two Operations:
Push (to insert an element into a stack, top++)
Pop (to delete an element from a stack, top--)
15
Data Structure Recap
Queue Data Structure
Linear and sequential
Work on following principles
FIFO (First In First Out) OR
LILO (Last In Last Out)
Two Conditions are
Overflow (It will occur when Queue is full and you try to insert new element) when
rear=N
Underflow (It will occur when Queue is empty and you try to delete an element)
when front=0/-1
Type of Queues are
Circular Queue
Priority Queue
Double Ended Queue
16
Data Structure Recap
17
Data Structure Recap
Internal node
Indegree
outdegree
18
Data Structure Recap
19
Summary
Data structure is way for storing and manipulation of data
Two main categories or types of data structure are linear and non
linear data structure.
In case of memory representation, data structure are of two types
logical and physical data structure.
Insert, Delete, Merge, Sort and search are common operations for all
types of data structure.
Array, Stack and Queue are linear and sequential data structures.
Linked List is linear and pointer based data structure.
Tree and graphs are non linear data structures
20
What to be Next
21