17447_Ch1
-
Upload
ruchir-gupta -
Category
Documents
-
view
215 -
download
0
Transcript of 17447_Ch1
-
8/11/2019 17447_Ch1
1/35
Chapter 1
-
8/11/2019 17447_Ch1
2/35
Algorithm
Instruction:- Set of operations
-
8/11/2019 17447_Ch1
3/35
-
8/11/2019 17447_Ch1
4/35
Problem for finding GCD
First Method
-
8/11/2019 17447_Ch1
5/35
-
8/11/2019 17447_Ch1
6/35
-
8/11/2019 17447_Ch1
7/35
Second method
-
8/11/2019 17447_Ch1
8/35
Third Method
-
8/11/2019 17447_Ch1
9/35
Method for finding Prime Number
-
8/11/2019 17447_Ch1
10/35
-
8/11/2019 17447_Ch1
11/35
-
8/11/2019 17447_Ch1
12/35
Fundamentals of algorithmicproblem solving
Understanding the problem Ascertaining the capabilities of a computationaldevice. Choosing between exact and approximateproblem solving. Deciding an appropriate Data Structure Algorithm design techniques.
Methods of specifying an algorithm. Proving an algorithms correctness Analyzing an algorithm. Coding an algorithm
-
8/11/2019 17447_Ch1
13/35
-
8/11/2019 17447_Ch1
14/35
Understand the given problem completely. Read the problem description carefully Ask doubts about the problem Do few examples Think about special cases like boundary value Know about the already known algorithms for solving that
problem
Clear about the input to an algorithm.
14
Step 1- Understanding the problem
-
8/11/2019 17447_Ch1
15/35
Sequential Algorithms: Instructions areexecuted one after another and one operationat a time. Algorithms designed to be executed
on such machine are called sequentialalgorithms
Parallel Algorithms: Modern computers that
can execute instructions in parallel. Algorithmsdesigned to be executed on such machine arecalled parallel algorithms
Step 2- Ascertaining the Capabilities ofa computational device
-
8/11/2019 17447_Ch1
16/35
Exact Algorithm: Solving problem exactly Approx. Algm. : Solving problem
approximately Why Approx. Algm.? Some problems cannot be solved exactly
Solving problem exactly can be unacceptablyslow because of the problem complexity.
Step 3- Choosing between exact andapproximate problem solving
-
8/11/2019 17447_Ch1
17/35
A Data structure is defined as a particularscheme of organizing related data items.
Decide on the suitable data structure
Step 4- Deciding on appropriate DataStructures
-
8/11/2019 17447_Ch1
18/35
An algorithm design technique is a general approach tosolve problems algorithmically.The various design techniques are:Brute force
Divide and conquerDecrease and conquerTransform and conquerGreedy approachDynamic programmingBacktracking and Branch and boundSpace and time tradeoffs
Step 5- Algorithm Design techniques
-
8/11/2019 17447_Ch1
19/35
There are 3 methods: Natural language
Easy but ambiguous Pseudo code
Mixture of programming language and naturallanguage
Flow chart It is pictorial representation of the algorithm. Here symbols are used.
Step 6- Method of specifying analgorithm
-
8/11/2019 17447_Ch1
20/35
Correctness: Prove that the algm. Yields the requiredresult for every legitimate input in a finite amount oftime.A common technique for proving correctness is to use
mathematical inductionIn order to show the algm. Is incorrect, we have to take
just one instance of its input for which the algm. Fails.If a algm. is found to be incorrect, then reconsider oneor more those decisionsFor approx. algms. We should show that the errorproduced by the algm does not exceed the predefinedlimit.
Step 7- Proving an algorithmscorrectness
-
8/11/2019 17447_Ch1
21/35
Analyze the following qualities of the algorithmEfficiency:
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. Isunnecessary or difficult.
OptimalityThe algorithm should produce optimal results.
Step 8- Analyzing an algorithm
-
8/11/2019 17447_Ch1
22/35
Algorithms are designed to be implementedas computer programs.
Use code tuning technique. For eg., replacingcostlier multiplication operation with cheaperaddition operation.
Step 9- Coding an algorithm
-
8/11/2019 17447_Ch1
23/35
1-23
Fundamental data structures
list array
linked list
string
stack
queue priority queue/heap
graphtree and binary tree
set and dictionary
-
8/11/2019 17447_Ch1
24/35
1-24
Linear Data Structures
Arrays A sequence of n items of the same
data type that are stored contiguouslyin computer memory and madeaccessible by specifying a value of thearrays index.
Linked List A sequence of zero or more nodes
each containing two kinds ofinformation: some data and one ormore links called pointers to othernodes of the linked list.
Singly linked list (next pointer) Doubly linked list (next + previous
pointers)
Arraysfixed length (need preliminaryreservation of memory)contiguous memory locations
direct accessInsert/deleteLinked Lists
dynamic lengtharbitrary memory locations
access by following linksInsert/delete
a1 ana2 .
-
8/11/2019 17447_Ch1
25/35
1-25
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)
-
8/11/2019 17447_Ch1
26/35
1-26
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
96 8
5 2 3
9 6 58 2 3
-
8/11/2019 17447_Ch1
27/35
1-27
Graphs Formal definition
A graph G = is defined by a pair of two sets: a finiteset V of items called vertices and a set E of vertex pairscalled 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 anedge is called complete, K |V|
-
8/11/2019 17447_Ch1
28/35
1-28
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
theres an edge from ith vertex to the jth vertex;otherwise 0.
The adjacency matrix of an undirected graph issymmetric. Adjacency linked lists
A collection of linked lists, one for each vertex, thatcontain all the vertices adjacent to the lists vertex.
Which data structure would you use if the graph is a 100-node starshape?
0 1 1 10 0 0 10 0 0 10 0 0 0
2 3 444
-
8/11/2019 17447_Ch1
29/35
1-29
Weighted Graphs
Weighted graphs Graphs or digraphs with numbers assigned to the edges.
- A dense graph is a graph in which the numberof edges is close to the maximal number ofedges. The opposite, a graph with only a fewedges, is a sparse graph .
1 2
3 46
8
57
9
3
G h P ti P th d C ti it
https://en.wikipedia.org/wiki/Graph_(mathematics)https://en.wikipedia.org/wiki/Graph_(mathematics)https://en.wikipedia.org/wiki/Graph_(mathematics) -
8/11/2019 17447_Ch1
30/35
1-30
Graph Properties -- Paths and Connectivity
Paths
A path from vertex u to v of a graph G is defined as asequence of adjacent (connected by an edge) verticesthat 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 itsvertices u and v there is a path from u to v.
Connected component The maximum connected subgraph of a given graph.
-
8/11/2019 17447_Ch1
31/35
-
8/11/2019 17447_Ch1
32/35
1-32
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 existsexactly one simple path from one of these verticesto 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 socalled rooted tree. Levels in a rooted tree.
|E| = |V| - 1
1 3
2 4
51
3
2
4 5
-
8/11/2019 17447_Ch1
33/35
1-33
Rooted Trees (I) Ancestors
For any vertex v in a tree T , all the vertices on thesimple path from the root to that vertex are calledancestors.
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 theroot 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 calledsiblings.
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 .
-
8/11/2019 17447_Ch1
34/35
1-34
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.
1
3
2
4 5
h = 2
-
8/11/2019 17447_Ch1
35/35
1 35
Ordered Trees Ordered trees
An ordered tree is a rooted tree in which all the children ofeach vertex are ordered. Binary trees
A binary tree is an ordered tree in which every vertex has nomore 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.
96 8
5 2 3
63 9
2 5 8