Algorithem Basics
Algorithem Basics
Course details
Text Book
• INTRODUCTION TO THE DESIGN
AND ANALYSIS OF ALGORITHMS
– ANANY LEVITIN,
PEARSON EDUCATION
A. rights
Copyright © 2007 Pearson Addison-Wesley. All Levitinreserved.
“Introduction to the Design & Analysis of Algorithms,” 2nd ed., Ch. 1
Detail of Academic Tasks
A. rights
Copyright © 2007 Pearson Addison-Wesley. All Levitinreserved.
“Introduction to the Design & Analysis of Algorithms,” 2nd ed., Ch. 1
Why we need to study this
course ?
A. rights
Copyright © 2007 Pearson Addison-Wesley. All Levitinreserved.
“Introduction to the Design & Analysis of Algorithms,” 2nd ed., Ch. 1
Why are we learning Design and analysis of
algorithms?
Algorithms are used in almost every program or software
system.
A. rights
Copyright © 2007 Pearson Addison-Wesley. All Levitinreserved.
“Introduction to the Design & Analysis of Algorithms,” 2nd ed., Ch. 1
The course contents CSE408
UNIT I - Foundations of algorithm
Foundations of algorithm
Basic DS
Analysis and growth
A. rights
Copyright © 2007 Pearson Addison-Wesley. All Levitinreserved.
“Introduction to the Design & Analysis of Algorithms,” 2nd ed., Ch. 1
UNIT II
String matching algorithms and
computational geometry
A. rights
Copyright © 2007 Pearson Addison-Wesley. All Levitinreserved.
“Introduction to the Design & Analysis of Algorithms,” 2nd ed., Ch. 1
UNIT III
A. rights
Copyright © 2007 Pearson Addison-Wesley. All Levitinreserved.
“Introduction to the Design & Analysis of Algorithms,” 2nd ed., Ch. 1
UNIT IV
A. rights
Copyright © 2007 Pearson Addison-Wesley. All Levitinreserved.
“Introduction to the Design & Analysis of Algorithms,” 2nd ed., Ch. 1
Algorithm
16
Step 2- Ascertaining the Capabilities of
a computational device
• Sequential Algorithms: Instructions are
executed one after another and one operation
at a time. Algorithms designed to be executed
on such machine are called sequential
algorithms
• Parallel Algorithms: Modern computers that
can execute instructions in parallel.
Algorithms designed to be executed on such
machine are called parallel algorithms
Step 3- Choosing between exact and
approximate problem solving
• Exact Algorithm: Solving problem exactly
• Approx. Algm. : Solving problem
approximately
• Why Approx. Algm.?
• Some problems cannot be solved exactly
• Solving problem exactly can be unacceptably
slow because of the problem complexity.
Step 4- Deciding on appropriate Data
Structures
• A Data structure is defined as a particular
scheme of organizing related data items.
• Decide on the suitable data structure
Step 5- Algorithm Design techniques
An algorithm design technique is a general
approach to solve problems algorithmically.
The various design techniques are:
Brute force
Divide and conquer
Greedy approach
Dynamic programming
Backtracking
Step 6- Method of specifying an
algorithm
• There are 3 methods:
• Natural language
– Easy but ambiguous
• Pseudo code
– Mixture of programming language and natural
language
• Flow chart
– It is pictorial representation of the algorithm.
– Here symbols are used.
Step 7- Proving an algorithm’s
correctness
Correctness: Prove that the algo. Yields the required
result for every legitimate input in a finite amount of
time.
A common technique for proving correctness is to use
mathematical induction
In order to show the alg. Is incorrect, we have to take
just one instance of its input for which the algm. Fails.
If a algo. is found to be incorrect, then reconsider one
or more those decisions
For approx. algo. We should show that the error
produced by the algo does not exceed the predefined
limit.
Step 8- Analyzing an algorithm
Analyze the following qualities of the algorithm
Efficiency:
◦ Time efficiency and Space efficiency
Simplicity
◦ Simple algorithms mean easy to understand and easy to
program.
Generality
◦ Design an algm. for a problem in more general terms. In
some cases, designing more general algm. Is
unnecessary or difficult.
◦ Optimality
The algorithm should produce optimal results.
Step 9- Coding an algorithm
• Algorithms are designed to be implemented
as computer programs.
• Use code tuning technique. For eg., replacing
costlier multiplication operation with cheaper
addition operation.
Fundamental data structures
• list graph
– array tree and binary tree
– linked list set and dictionary
– string
• stack
• queue
• priority queue/heap
1-25
TYPES OF DATA STRUCTURES
Linear Data Structures
•
Arrays
Arrays
– A sequence of n items of the same
fixed length (need preliminary
data type that are stored contiguously reservation of memory)
in computer memory and made contiguous memory locations
accessible by specifying a value of the direct access
array’s index.
•
Insert/delete
Linked List
– A sequence of zero or more nodes
Linked Lists
each containing two kinds of dynamic length
information: some data and one or arbitrary memory locations
more links called pointers to other
nodes of the linked list.
access by following links
– Singly linked list (next pointer) Insert/delete
– Doubly linked list (next + previous
pointers)
a1 a2 … an .
1-27
Stacks and Queues
• Stacks
– A stack of plates
• insertion/deletion can be done only at the top.
• LIFO
– Two operations (push and pop)
• Queues
– A queue of customers waiting for services
• Insertion/enqueue from the rear and deletion/dequeue from the
front.
• FIFO
– Two operations (enqueue and dequeue)
1-28
Priority Queue and Heap
Priority queues (implemented using heaps)
A data structure for maintaining a set of elements, each associated
with a key/priority, with the following operations
Finding the element with the highest priority
Deleting the element with the highest priority
Inserting a new element
Scheduling jobs on a shared computer
9
6 8
5 2 3
9 6 8 5 2 3
1-29
Graphs
• Formal definition
– A graph G = <V, E> is defined by a pair of two sets: a finite
set V of items called vertices and a set E of vertex pairs
called edges.
• Undirected and directed graphs (digraphs).
• maximum number of edges in an undirected
graph with |V| vertices
• Complete graphs
– A graph with every pair of its vertices connected by an
edge is called complete, K|V|
1-30
Graph Representation
• Adjacency matrix
– n x n boolean matrix if |V| is n.
– The element on the ith row and jth column is 1 if
there’s an edge from ith vertex to the jth vertex;
otherwise 0.
– The adjacency matrix of an undirected graph is
symmetric.
• Adjacency linked lists
– A collection of linked lists, one for each vertex, that
contain all the vertices adjacent to the list’s vertex.
• Which data structure would you use if the graph is a 100-node star shape?
0111 2 3 4
0001 4
0001 4
0000
1-31
Weighted Graphs
• Weighted graphs
– Graphs or digraphs with numbers assigned to the edges.
3
1 2
6 5 7
3 4
9
- A dense graph is a graph
in which the number
8
1-32
Graph Properties -- Paths and Connectivity
• Paths
– A path from vertex u to v of a graph G is defined as a
sequence of adjacent (connected by an edge) vertices
that starts with u and ends with v.
– Simple paths: All edges of a path are distinct.
– Path lengths: the number of edges, or the number of
vertices – 1.
• Connected graphs
– A graph is said to be connected if for every pair of its
vertices u and v there is a path from u to v.
• Connected component
– The maximum connected subgraph of a given graph.
1-33
Graph Properties -- Acyclicity
• Cycle
– A simple path of a positive length that starts and ends
a the same vertex.
• Acyclic graph
– A graph without cycles
– DAG (Directed Acyclic Graph)
1 2
3 4
1-34
Trees
• Trees
– A tree (or free tree) is a connected acyclic graph.
– Forest: a graph that has no cycles but is not
necessarily connected.
• Properties of trees
- For every two vertices in a tree there always exists
exactly one simple path from one of these vertices
to the other.
• Rooted trees: The above property makes it possible to select an
arbitrary vertex in a free tree and consider it as the root of the so
called rooted tree. 3
• Levels in a rooted tree. 1 3 5
4 1 5
|E| = |V| - 1 2 4 2
1-35
Rooted Trees (I)
• Ancestors
– For any vertex v in a tree T, all the vertices on the
simple path from the root to that vertex are called
ancestors.
• Descendants
– All the vertices for which a vertex v is an ancestor
are said to be descendants of v.
• Parent, child and siblings
– If (u, v) is the last edge of the simple path from the
root to vertex v, u is said to be the parent of v and v
is called a child of u.
– Vertices that have the same parent are called
siblings.
• Leaves
– A vertex without children is called a leaf.
• Subtree
– A vertex v with all its descendants is called the
subtree of T rooted at v.
1-36
Rooted Trees (II)
• Depth of a vertex
– The length of the simple path from the root to the vertex.
• Height of a tree
– The length of the longest simple path from the root to a leaf.
h=2
3
4 1 5
1-37
Ordered Trees
• Ordered trees
– An ordered tree is a rooted tree in which all the children of
each vertex are ordered.
• Binary trees
– A binary tree is an ordered tree in which every vertex has
no more than two children and each children is designated
s either a left child or a right child of its parent.
• Binary search trees
– Each vertex is assigned a number.
– A number assigned to each parental vertex is larger than all
the numbers in its left subtree and smaller than all the
numbers in its right subtree.
• log2n h n – 1, where h is the height of a binary tree and n the size.
9 6
6 8 3 9
5 2 3 2 5 8
1-38