[go: up one dir, main page]

0% found this document useful (0 votes)
63 views45 pages

01 CS316 Introduction

This document provides an overview of the Cs316 Algorithms course. The course objectives include designing algorithms using pseudocode, analyzing complexity using asymptotic notations, and applying standard algorithms like searching, sorting, trees, graphs, greedy, backtracking and dynamic programming. The syllabus covers algorithm design and analysis, asymptotic notations, complexity analysis of recursive and non-recursive algorithms, and specific algorithms like sorting and graphs. Students will be graded based on exams, assignments, tasks and a final exam. The document also provides context on algorithms and their analysis.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPSX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
63 views45 pages

01 CS316 Introduction

This document provides an overview of the Cs316 Algorithms course. The course objectives include designing algorithms using pseudocode, analyzing complexity using asymptotic notations, and applying standard algorithms like searching, sorting, trees, graphs, greedy, backtracking and dynamic programming. The syllabus covers algorithm design and analysis, asymptotic notations, complexity analysis of recursive and non-recursive algorithms, and specific algorithms like sorting and graphs. Students will be graded based on exams, assignments, tasks and a final exam. The document also provides context on algorithms and their analysis.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPSX, PDF, TXT or read online on Scribd
You are on page 1/ 45

Cs316: Algorithms

Lecture 1: Introduction
Assoc. Prof. Ensaf Hussein
Dr. Salwa Osama

09/26/2023 1
Course Objectives
 Design algorithms using Psedocode.
 Demonstrate and study asymptotic notations in best, worst and
average case.

 Define and analyze the complexity of recursive and non-


recursive algorithms.

 Understand, analyze and apply standard algorithms involving


searching, sorting, tree, graph, greedy, backtracking and
dynamic programming algorithms.
Course Syllabus
• Algorithms Design and Analysis
• Asymptotic Notations
• Compute Complexity for :
• Non-recursive algorithms
• Recursive Algorithms
• Iteration Tree
• Master Method
• Divide and Conquer Algorithms ( Merge Sort- Quick Sort)
• Linear time Sorting (count – bucket – radix)
• Graph
• BFS - DFS
• MST – Prim - Kruskal
• Shortest path – Dijkstra – Bellman Ford
• Dynamic Programming – Matrix Chain Multiplication - Longest Common Subsequence
• Greedy Approach – Knapsack [0-1 / Fractional]
resources
• Textbook:
• Thomas Cormen, Charles Leiserson, Ronn to Algorithms. 3rd
ed. MIT Press, 2009.
• Anany Levitin, Introduction to the design and analysis of
algorithms 3rd Edition, 2012.

• Handouts
• https://teams.microsoft.com/l/team/19%3anjekrCihDDuPoVNzp
-Xmc9evcLVkhbuZnCcPf5I6sUk1%40thread.tacv2/conversation
s?groupId=8453a8a6-b8ea-4d13-a6b8-de8cbdac9642&tenantId=
aadc0e0a-65ee-471a-99a1-9f86faecbaed

• Code: ynggc3s
09/26/2023 4
Grading policy
• Mid-term Exam 20%
• Quizzes 10%
• Assignments 10%
• Task 10%
• Final-Exam (Written Exam) 50%

09/26/2023 6
Algorithms
• ABU JA‘FAR MOHAMMED IBN MUSA
• AL-KHOWARIZMI (C. 780 – C. 850)
• Al-Khowarizmi, an astronomer and mathematician, was a
member of the House of Wisdom, an academy of scientists in
Baghdad. The name al-Khowarizmi means “from Kowarzizm,”
which was then part of Persia, but is now called Khiwa and is part
of Uzbekistan.
• Al-Khowarizmi wrote books on , astronomy, and geography.
• Western Europeans first learned about algebra from his works.
The word algebra comes from al-jabr, part of the title of his book
Kitab al-jabr w’al muquabala. This book was translated into Latin
and was a widely used textbook. His book on the use of Hindu
numerals describes procedures for arithmetic operations using
these numerals. European authors used a Latin corruption of his
name, which later evolved to the word algorithm, to describe the
subject of arithmetic with Hindu numerals.
Why Studying Algorithms?
Why Studying Algorithms?
• The study of algorithms is the cornerstone of
computer science.
• You have to know a standard set of important
algorithms from different areas of computing;
in addition, you should be able to design new
algorithms and analyze their efficiency.
• Algorithms can be seen as special kinds of
solutions to problems— not just answers but
precisely defined procedures for getting
answers
What is Algorithms ?!

09/26/2023
Algorithms
• Program = algorithms + data structures
Problem

Algorithm

Input Computer Output

• Data structures: Methods of organizing data

• You have to design your algorithm before coding


09/26/2023 11
Algorithms
• An algorithm: sequence of unambiguous
instructions for solving a problem.
 Obtaining a required output for any allowable
input in a finite amount of time.

09/26/2023 12
Understand
the problem

Decide on: computational means,


exact vs. approximate solving,
algorithm design technique

Design
algorithm

Prove
correctness

Analyze the
algorithm

infinite Code the


algorithm

09/26/2023 finite 13
Example:
The greatest common divisor of two nonnegative,
not-both-zero integers m and n, denoted gcd(m,
n), is defined as the largest integer that divides
both m and n.
60
Ex: gcd ( 60,24 ) ?? 5X
60 = 2 X 2 X 3 X 5
2X2X3
24 = 2 X 2 X 2 X 3
X 2
• gcd ( 60,24 ) = 2 X 2 X 3 = 12 24
A solution for gcd(m,n):
Middle-school procedure
• Step 1 Find the prime factorization of m
• Step 2 Find the prime factorization of n
• Step 3 Find all the common prime factors
• Step 4 Compute the product of all the
common prime factors and return it as
gcd(m,n)

• Is this an algorithm???

The algorithm should has no ambiguous


Another solution for gcd(m,n)
Consecutive integer checking algorithm
• Step 1 Assign the value of m in {m,n } to t
Step 2 Divide m by t. If the remainder is 0, go to Step 3
otherwise, go to Step 4
Step 3 Divide n by t. If the remainder is 0, return t and
stop; otherwise, go to Step 4
 Ho
Step 4 Decrease t by 1 and go to Step 2
wh
num
• Is this an algorithm???

• It is so important to specify the set of an algorithm’s


inputs explicitly and carefully.
Euclid’s solution for gcd
Euclid’s algorithm is based on:
Repeated application of equality
gcd( m, n ) = gcd( n , m mod n ),
until the second number becomes 0
Ex: gcd( 60, 24 )
= gcd( 24, 60 mod 24)
= gcd ( 24, 12)
• = gcd ( 12, 24 mod 12)
= gcd ( 12, 0)
= 12
Euclid’s method
Step 1 If n = 0, return m Could be writen as:
and stop; otherwise while n ≠ 0 do
go to Step 2
Step 2 Divide m by n and r ← m mod n
assign the value of m← n
the remainder to r n←r
return m
Step 3 Assign the value of
n to m and the
value of r to n. Go
to Step 1.
Pseudo-code like
English like Algorithm Algorithm
Algorithm Design

09/26/2023
Algorithm design:
• Algorithm can be described in three ways:
• 1- Natural language like English:
When this way is chosen care should be taken, we
should ensure that each & every statement is definite.
• 2- Graphic representation called flowchart:
This method will work well when the algorithm is
small& simple.
• 3- Pseudo-code Method:
In this method, we should typically describe
algorithms as program, which resembles language like
Pascal & algol.
Pseudo-Code Conventions:
1- Comments begin with // and continue until the end of
line.
2- Blocks are indicated with matching braces {and}.
3- An identifier begins with a letter. The data types of
variables are not explicitly declared.
• 4- Assignment of values to variables is done using the
assignment statement.
• <Variable>:= <expression>; Or <Variable> ←
<expression>;
• 5- There are two Boolean values TRUE and FALSE.
 Logical Operators AND, OR, NOT
 Relational Operators <, <=,>,>=, =, !=
• 6- The following looping statements are employed.
• For, while and repeat-until
• While Loop:
• While < condition > do
• {
• <statement-1>
• <statement-n>
• }
For Loop:
For variable: = value-1 to value-2 step vlaue-3 do
{
<statement-1>
<statement-n>
}
• repeat-until:
• repeat
• <statement-1>

• <statement-n>
• until<condition>
7- A conditional statement has the following forms.
 If <condition> then <statement>
 If <condition> then <statement-1>
Else <statement-1>
Case statement:
select case(expression)
{
case 1 : <statement-1>

case n : <statement-n>
default : <statement-n+1>
}
8- Input and output are done using the instructions read & write.
9- There is only one type of procedure:
Algorithm, the heading takes the form,
Algorithm Name (Parameter lists)

 As an example, the following algorithm finds & returns the


maximum of ‘n’ given numbers
Example
1. algorithm Max( A, n) This algorithm:
2. // A is an array of size n • named Max
3. { • A & n are
4. Result := A[1] procedure
parameters.
5. for I ← 2 to n do
• Result & I are Local
6. if A[I] > Result then variables.
7. Result ← A[I]
8. return Result
9. }
Analysis of Algorithms

09/26/2023
Analysis of Algorithms
• Term “analysis of algorithms” means an investigation of an algorithm’s efficiency

• The main goal is to determine the cost of running an algorithm and how to reduce
that cost.

• Cost is expressed as Complexity

• Time Complexity

• Space Complexity

29
Time Complexity
• It may be useful to time how long an algorithm takes to run
• In some cases it may be essential to know how long an algorithm takes on
some system
• e.g. air traffic control systems

• But, is this a good general comparison method?

• Running time is affected by a number of factors other than algorithm efficiency

30
Running Time is Affected By
• CPU speed
• Amount of main memory
• Specialized hardware (e.g. graphics card)
• Operating system
• System configuration (e.g. virtual memory)
• Programming language
• Algorithm implementation
• Other programs
• System tasks (e.g. memory management)
• … 31
Time Complexity
• Instead of timing an algorithm, count the number
of instructions that it performs
• The number of instructions performed may vary
based on
• The size of the input– ex, multiply two
matrixes, though not always – ex, find binary
representation of a decimal number. Almost all
algorithms run longer on larger inputs.
• The organization of the input – ex, consider
searching a large array, If the target is the first
item in the array the search will be very quick
The number of instructions can be written as a cost
function on the input, expressed as T(n).
32
Number of Operations

• We measure T(n) of an algorithm by counting


the number of operations.
• Each "simple" operation (+, -, =, <, >=) is one
operation.
• Loops and function calls are not simple
operations, but depend upon the size of the data
and the contents of a function. We do not want
”sort'' to be a single step operation.
• Each memory access is one operation.

33
Example
Algorithm factorial (n)
{
f = 1; 1
if ( n > 0 ) 1
for (i = 1 to n) n+1
f =f*i; n
return f ; 1
}
-------
Then, T(n) = 2n+4

34
Time Complexity
• It can be difficult to determine the exact
number of operations performed by an
algorithm, Though it is often still useful to do
so
• An alternative to counting all instructions is
to focus on an algorithm's basic operation
• The basic operation is the instruction that
is executed the most number of times in
an algorithm
• The number of times that the basic
operation is executed is usually
proportional to its running time
Example
Algorithm factorial (n)
{
f= 1; basic
The
if operation
(n>0)
for (i = 1 to n)
f =f*i; n
return f ;
}
-------
Then, approximately T(n) = n

36
Complexity of the Factorial Algorithm

T(n) = n

T(n)

37
Best-case, average-case, worst-
case
• The efficiencies of some algorithms may differ
significantly for inputs of the same size.
• For such algorithms, we need to distinguish
between the worst-case, average-case, and best-
case efficiencies.
• Some algorithms are same for all three cases – ex,
find the maximum value in an unsorted array.

38
Example (2):
Algorithm linearSearch (a, key, n)
{
for (i = 0 to n-1)
if (a[i ]== key) return i;
return -1;
}
T(n) = number of array element comparisons.
Best case: T(n) = 1
Worst case: T(n) = n
39
Complexity of the Linear Search
Algorithm

T(n) = 1 in the best case. T(n) = n in the worst


case

T(n)
(n)

(1)
n
40
Best-case, average-case, worst-
caseto be computed
• Average case not easy
• NOT the average of worst and best case
• Expected number of basic operations considered
as a random variable under some assumption
about the probability distribution of all possible
inputs of size n
• There are many important algorithms for which
the average case efficiency is much better than
the worst-case efficiency

41
Eight Growth Functions
• Eight functions O(n) that occur frequently in
the analysis of algorithms (in order of
increasing rate of growth relative to n):
• Constant  1
• Logarithmic  log n
• Linear  n
• Log Linear  n log n
• Quadratic  n2
• Cubic  n3
• Exponential  2n
• Factorial n! 42
Growth Rates Compared
n=1 n=2 n=4 n=8 n=16 n=32
1 1 1 1 1 1 1
log n 0 1 2 3 4 5
n 1 2 4 8 16 32
nlogn 0 2 8 24 64 160
n2 1 4 16 64 256 1024
n3 1 8 64 512 4096 32768
2n 2 4 16 256 65536 4294967296
n! 1 2 24 40320 20.9T Don’t ask!
09/26/2023

43
Growth Rates Compared

• To appreciate the qualitative difference among


the orders of growth functions, consider how
they react to if the value of their argument n is
duplicated.
• log2 n increases in value by just 1 (because
log22n = log2 2 + log2 n = 1+ log2 n)
• n2 increase fourfold , because (2n)2 = 4n2
• 2n gets squared, because 22n = (2n)2

44

References
Anany Levitin, Introduction to the design and analysis of
algorithms, 2nd Edition.
• Chapter 1, sections 1.1, 1.2
• Chapter 2, Sections 2.1,2.2
09/26/2023 46

You might also like