Dr. Ajay kumar,Prof. Sanjay Garg
([email protected])
Assistant Professor (Senior Grade)
Deptt of CSE
JUET Guna (M.P.)
Algorithms and Problem Solving (APS)
Course Code: 14B11CI412
Course Credit: 4
Session: January 2025-May 2025
2.
Prerequisite
Introduction toprogramming in ‘C’ and
data structure (with sufficient familiarity
in the usage of array, pointers, recursion,
searching, sorting, tree etc…. )
3.
Purpose of thissubject
A rigorous introduction to the design and analysis
of algorithms
Not a lab or programming course
Not a math course, either
4.
Evaluation scheme: (Algorithmsand Problem Solving )
Test – I 15
Test – II 25
Test- III 35
Assignments 5
Quiz 5
Tutorial/Problem Solving 10
Attendance 05
Total 100
5.
Course Content
Analysisof algorithm: Asymptotic Notation, Sorting and merging
Algorithm
Tree and related data Structure: Heap, Priority Queues, B-Tree, AVL, Splay
Tree, Red-Black Tree, Threaded Tree
Files: Classification, Record Organization, Retrieval System, External
Sorting
Set, Dictionary: Design, Analysis, integration and applications
Fundamental techniques: Divide and Conquer method, Dynamic
Programming, Introduction to Greedy Method
Hashing: technique, collision resolution and analysis
Text Processing: String operation, pattern matching algorithm, tries, text
compression, text similarity testing.
6.
Books and References:
Textbook: Introduction to Algorithms, Cormen,
Leiserson, Rivest, Stein
Aho, Hopcraft, Ullman: Data Structure and
Algorithms
Kruse, Tonso, Leung: Data Structure and program
Design in C
Sahni: Data structure and algorithm and application
in C++
Weiss: Data Structure and Algorithm analysis in
C/C++
7.
Design and Analysisof Algorithms
• Analysis: predict the cost of an algorithm in terms of resources
and performance
• Design: design algorithms which minimize the cost
9.
Algorithms
An algorithm isa finite sequence of step by step, discrete,
unambiguous instructions for solving a particular problem
Has input data, and is expected to produce output data
Each instruction can be carried out in a finite amount of time
in a deterministic way
10.
Conti…
In simpleterms, an algorithm is a series of instructions to
solve a problem (complete a task).
Problems can be in any form
Business
Get a flight from Delhi to Banglore by morning
Allocate manpower to maximize profit
Life
I am hungry. How do I order pizza?
Explain how to tie shoelaces to a five year old child
11.
Algorithms (Criteria)
1. Input:Zero or more quantities are externally supplied.
2. Output: At least one quantity is produced.
3. Definiteness: Each instruction is clear and unambiguous.
4. Finiteness: If we trace out the instructions of an algorithm,
then for all cases, the algorithm terminates after a finite
number of steps.
5. Effectiveness: Every instruction must be very basic so that it
can be carried out, in principle, by a person using only pencil
and paper. It is not enough that each operation be definite as
in criteria 3, it also must be feasible.
12.
Algorithms
We dealwith data processing problems
Translated to programs that can be run on a computer
Since we can only input, store, process & output data on a
computer, the instructions in our algorithms will be
limited to these functions.
13.
Algorithm Description
Understandthe problem before solving it
Identify & name each Input/Givens
Identify & name each Output/Results
Assign a name to our algorithm (Name)
Combine the previous 3 pieces of information into
a formal statement (Definition)
Results := Name (Givens)
14.
Method
Once wehave prepared the Algorithm
Description, we need to solve the problem
We develop a series of instructions (limited to
those described previously) that, when executed,
will compute the desired Results from the
Givens (Method)
15.
Writing of Algorithm
Algorithmis basically a sequence of instruction
written in simple English type (pseudo) language.
The algorithms is basically divided into two
parts.
Algorithm heading: It consist of name of
algorithm, problem description, input and
output.
Algorithm body: It consists of logical body of the
algorithm.
16.
Assignment command
Syntax
X =5Y + 16
On the left side of =, we put the name of a variable and on the right side
we put a value or an expression.
Each variable refers to a unique location in computer memory that
contains a value.
Interpretation
An assignment is executed in two steps :
1-evaluation of the expression found on the right side.
2-setting the returned value in the memory cell corresponding to variable.
Example
Let SideSize=15
Let Area=SideSizeSideSize
17.
Assignment in computerscience and equality in
mathematics
a) The following instructions are the same in mathematics.
A=B B=A
not in computer science.
Let A=B is different from Let B=A
b) In mathematics we work with relations.
A relation B=A+1 means that it is true all the
time
In computer science, we work with
assignments. We can have:
A=5
B=A+1
A=2
The relation B=A+1 is true only after the
second instruction
18.
c) The instructionA=A+3 is false in mathematics.
In computer science Let A=A+3 means: the new value of A is
equal to the old one plus three.
d) The instruction A+5=3 is allowed in mathematics (it is an
equation).
Let A+5=3 has no meaning in computer science (the left side
must be a variable).
Assignment in computer science and equality in
mathematics
19.
Input command
Syntax
Get variable
Thevariable must be from input
Interpretation
Here the user must give a value. The given value is
assigned to the variable.
Example
Get Size_Side
Algorithm 1.1
Writean algorithm to find the sum of three given
numbers
NAME: SUM3
GIVENS: N1, N2, N3
RESULTS: Total
DEFINITION: Total := SUM3(N1, N2, N3)
-------------------------
METHOD:
Get N1
Get N2
Get N3
Let Total = N1 + N2 + N3
Give Total
22.
Algorithm 1.2
Writean algorithm to find the result of a division
operation for the given two numbers X and Y
NAME: Division
GIVENS: X, Y
RESULTS: Quotient
DEFINITION: Quotient := Division(X, Y)
-------------------------
METHOD:
Get X
Get Y
Let Quotient = X/Y
Give Quotient
23.
Algorithm 1.3
Writean algorithm to find the sum and product
of the two given numbers
NAME: SumTimes
GIVENS:Num1, Num2
RESULTS: Total, Product
DEFINITION: Total & Product := SumTimes(Num1, Num2)
-------------------------
METHOD:
Get Num1
Get Num2
Let Total = Num1 + Num2
Let Product = Num1 * Num2
Give Total
Give Product
24.
Algorithm 1.4
Findthe sum and average of three given
numbers
NAME:AVG3
GIVENS:Num1, Num2, Num3
RESULTS:Sum , Average
DEFINITION:Sum & Average := AVG3(Num1, Num2, Num3)
-------------------------
METHOD:
Get Num1
Get Num2
Get Num3
Let Sum = Num1 + Num2 + Num3
Let Average = Sum /3
Give Sum
Give Average
25.
Variables
Observe thatwe have used names for the data
items in our Givens and Results
Num1, Num2, Num3, Sum, Average in
Algorithm 1.4
Each name refers to a unique location in
computer memory (one or more adjacent
bytes) that contains a value
Since that value can change as the
instructions in our algorithm are executed, we
call each data item a variable
26.
Variables
In ouralgorithm, when we use a variable name,
we are referring to the value stored in memory
for that data item
Later in this lecture we will learn more about
how to define variables
27.
Intermediates
Occasionally, inan algorithm, we need to have a
variable (in addition to those representing Givens
or Results) to store a value temporarily
These are intermediate variables and we identify
them in the Algorithm Description as
Intermediates
28.
Algorithm 1.5
Given3 assignment marks (out of 50, 20, 70), find
the average (calculated as a mark out of 100)
General Concept
How does one figure out the percentage of several
marks?
Add them all up
Divide by the maximum possible mark (50+20+70)
Multiply by 100
29.
Algorithm 1.5
Given3 assignment marks (out of 50, 20, 70), find the
average, calculated as a mark out of 100
NAME: CalcMark
GIVENS: A1, A2, A3
RESULTS: Mark
INTERMEDIATES: Total, MaxMark (Constant)
DEFINITION: Mark := CalcMark(A1, A2, A3)
-------------------------
METHOD:
Set MaxMark = 140 (Constant)
Get A1
Get A2
Get A3
Let Total = A1 + A2 + A3
Let Mark = Total/MaxMark * 100
Give Mark
30.
Algorithm 1.6
Givena two digit number, find
the sum of its digits
General Concept
How can we break apart a
number?
41 = 4 Tens and 1 Ones
so for the number 41, we want 4 +
1 = 5
Use integer division
DIV returns the integer part of a
division
MOD returns the remainder of a
division
41 10 = 4
41 MOD 10 = 1
31.
Algorithm 1.6
Givena two digit number, find the sum of its digits
NAME: SumDig
GIVENS: N
RESULTS: Sum
INTERMEDIATES: Tens, Ones
DEFINITION: Sum := SumDig(N)
-------------------------
METHOD:
Get N
Let Tens = N div10
Let Ones = N mod 10
Let Sum = Tens + Ones
Give Sum
32.
Algorithm 1.7
Writean algorithm which swaps the values of two
numbers
Example 1
Two car family. The wrong car is at the end of the driveway
Move first car out on to the street
Move second car out on to the street
Move first car back in
Move second car back in
Example 2
You are looking after a 3 year old. He wants milk and juice. You
put the milk in the blue glass and the juice in the red glass. The
child is screaming that you did it wrong.
Get a third glass (white)
Pour the milk from the blue glass to the white glass
Pour the juice from the red glass to the blue glass
Pour the milk from the white glass to the red glass
33.
Algorithm 1.7
Writean algorithm which swaps the values of two
numbers
NAME: Swap
GIVENS: X, Y
RESULTS: X, Y
INTERMEDIATES: Temp
DEFINITION: Swap (X, Y)
-------------------------
METHOD:
Get X
Get Y
Let Temp = X
Let X = Y
Let Y = Temp
Give X
Give Y
34.
Algorithm 1.8
Writean algorithm which adds the given two
numbers (X and Y) and returns the sum in the
given variable X
NAME: AddXY
GIVENS:X, Y
RESULTS: X
INTERMEDIATES: None
DEFINITION: AddXY (X, Y)
-------------------------
METHOD:
Get X
Get Y
Let X = X+ Y
Give X
35.
Tracing an Algorithm
The purpose of tracing an algorithm is to
ensure that it works
This is a paper test. As we will see later, it
should be completed before writing the
computer code
Tracing involves
Executing the sequence of instructions with a
sample set of values
Computing the value of each variable after
each instruction is executed
Checking for the correct result
36.
Tracing an Algorithm
Step 1 - Number every instruction in the
algorithm
Step 2 – Make a table
The first column of the table indicates which
instruction has been executed
Subsequent columns list all the variables of the
algorithm (Givens, Results, Intermediates)
37.
Tracing an Algorithm
Step 3 – Complete the table
Each column of the table represents a variable
Start at the first line of your algorithm. Identify
what will happen to each variable as that
instruction is executed
Change any values which the instruction changes and
leave all other columns blank
38.
Trace 1.1
TraceAlgorithm 1.4 using the numbers 24, 31, and
35
METHOD:
(1) Get Num1
(2) Get Num2
(3) Get Num3
(4) Let Sum = Num1 + Num2 + Num3
(5) Let Average = Sum /3
(6) Give Sum
(7) Give Average
Line Num1 Num2 Num3 Sum Avg
1 24
2 31
3 35
4 90
5 30
6 output 90
7 output 30
39.
Trace 1.2
TraceAlgorithm 1.5 with the numbers 40, 18, 26
METHOD:
(1) Set MaxMark =140
(2) Get A1
(3) Get A2
(4) Get A3
(5) Let Total = A1 + A2 + A3
(6) Let Mark = Total/MaxMark * 100
(7) Give Mark
Ln A1 A2 A3 MM Ttl Mark
1 140
2 40
3 18
4 26
5 84
6 60
7 output 60
NB THE ANSWER IS NOT 69 (40/50 + 18/20 + 26/70)/3
40.
Trace 1.3
TraceAlgorithm 1.7 when X and Y have the values
25 and 88, respectively
METHOD:
(1) Get X
(2) Get Y
(3) Let Temp = X
(4) Let X = Y
(5) Let Y = Temp
(6) Give X
(7) Give Y
LN X Y
Temp
1 25
2 88
3 25
4 88
5 25
6 output 88
7 output 25
41.
Flow Charts
Isa pictorial representation of Algorithms
Can be created in MS Visio, MS word, Paint etc.
Begin and End with an Oval
Get/Give use a parallelogram
Lets use a rectangle
Flow is shown with arrows
42.
Algorithm 1.1
NAME: SUM3
GIVENS:N1, N2, N3
RESULTS: Total
DEFINITION:
Total := SUM3(N1, N2, N3)
Start
SUM3
Get N1
Get N2
Get N3
Let Total = N1 + N2 + N3
Give Total
Finish
SUM3
43.
Algorithm 1.2
NAME: Division
GIVENS:X, Y
RESULTS: Quotient
DEFINITION:
Quotient := Division(X, Y)
Start
DIVISION
Get X
Get Y
Let Quotient = X/Y
Give
Quotient
Finish
DIVISION
44.
Algorithm 1.3
NAME: SumTimes
GIVENS:Num1,Num2
RESULTS: Total, Product
DEFINITION:
Total & Product :=
SumTimes(Num1, Num2)
Start
SUMTIMES
Get Num1
Get Num2
Let Total = Num1 + Num2
Let Product = Num1 * Num2
Give Total
Give Product
Finish
SUMTIMES
45.
Algorithm 1.4
NAME:AVG3
GIVENS:Num1, Num2,Num3
RESULTS:Sum , Average
DEFINITION:
Sum & Average :=
AVG3(Num1, Num2, Num3)
Start
AVG3
Get Num1
Get Num2
Get Num3
Let Sum = Num1 + Num2 + Num3
Let Average = Sum/3
Give Suml
Give Average
Finish
AVG3
46.
Algorithm 1.5
NAME: CalcMark
GIVENS:A1, A2, A3
RESULTS: Mark
INTERMEDIATES:
Total,
MaxMark (Constant)
DEFINITION:
Mark := CalcMark(A1, A2, A3)
Start
CALCMARK
Get A1
Get A2
Get A3
Let Total = A1 + A2 + A3
Let Mark = Total/MaxMark
Give Mark
Finish
CALCMARK
Set MaxMark =140
47.
Algorithm 1.6
NAME: SumDig
GIVENS:N
RESULTS: Sum
INTERMEDIATES: Tens, Ones
DEFINITION:
Sum := SumDig(N)
Start
SUMDIG
Get N
Let Tens = N div 10
Let Ones = N mod 10
Let Sum = Tens + Ones
Give Sum
Finish
SUMDIG
48.
Algorithm 1.7
NAME: Swap
GIVENS:X, Y
Change: X, Y
RESULTS: None
INTERMEDIATES: Temp
DEFINITION: Swap (X, Y)
Start
SWAP
Get X
Get Y
Let Temp = X
Let X = Y
Let Y = Temp
Give X
Give Y
Finish
SWAP
49.
Algorithm 1.8
NAME: AddXY
GIVENS:X,Y
Change: X
RESULTS:None
INTERMEDIATES: None
DEFINITION: AddXY (X, Y)
Start
ADDXY
Get X
Get Y
Let X = X + Y
Give X
Finish
ADDXY