SlideShare ist ein Scribd-Unternehmen logo
1 von 57
Computer Science and Engineering Program
Introduction to Algorithms
Gedamu Alemu
alemugedamu@yahoo.com
Image processing and Computer vision SIG
Some of the sides are exported from different sources to
clarify the topic
Computer Science and Engineering Program
Introduction
 What is Algorithm
 Definition and Basic Concept
 Fundamental of Algorithmic Problem Solving
 Understanding and choose b/n exact
&approximate problem solving
 Important Problem Type
 Sorting and searching
 String processing and geometrical problem
 Graph and Tree problem
 Fundamental Data Structure
 Liner data Structure
 Non Liner Data stracture
Computer Science and Engineering Program
Analysis of algorithms
 Issues:
 Correctness
 space efficiency
 time efficiency
 optimality
 Approaches:
 theoretical analysis
 empirical analysis
Introduction
4
Computer Science and Engineering Program
Problem solving in computer Science
5
Computer Science and Engineering Program
What is an algorithm?
 An algorithm is a sequence of unambiguous instructions for
solving a problem, i.e., for obtaining a required output for any
legitimate input in a finite amount of time.
6
“computer”
problem
algorithm
input output
Computer Science and Engineering Program
7
What is an algorithm?
 Procedure for getting answers to a specific problem
 Problem solving strategy even if computers are not
involved
 Scope is limited  I can not have a procedure for you to have
very happy life or becoming rich and famous
Computer Science and Engineering Program
Notion/Concept of algorithm and
problem
 Nonambiguity for each step
 Range of inputs is specified carefully
 The same algorithm can be represented in several ways
 Several algorithms for the same problem may exist
 Several algorithms with different ideas can solve the same
problem with different speed.
8
“computer”
problem
algorithm
Input output
Computer Science and Engineering Program
Example of computational problem:
sorting
 Statement of problem:
 Input: A sequence of n numbers <a1, a2, …, an>
 Output: A reordering of the input sequence <a´
1, a´
2, …, a´
n> so that a´
i ≤
a´
j whenever i < j
 Instance: The sequence <5, 3, 2, 8, 3>
 Algorithms:
 Selection sort
 Insertion sort
 Merge sort
 (many others)
1-9
Computer Science and Engineering Program
Some Well-known Computational Problems
 Sorting
 Searching
 Shortest paths in a graph
 Minimum spanning tree
 Primality testing
 Traveling salesman problem
 Knapsack problem
 Chess
 Towers of Hanoi
1-10
Some of problems don’t have efficient algorithms, or algorithms at all!
Computer Science and Engineering Program
Basic Issues Related to Algorithms
 How to design algorithms
 How to express algorithms
 Proving correctness
 Efficiency (or complexity) analysis
 Theoretical analysis
 Empirical/ experimental analysis
 Optimality
1-11
Computer Science and Engineering Program
Algorithm design strategies
 Brute force
 Try all possible combinations
 Divide and conquer
breaking down a problem into two or more
sub-problems of the same (or related)
type, until these become simple
enough to be solved directly.
 Decrease and conquer
 Change an instance into one smaller
instance of the problem.
 Solve the smaller instance.
 Convert the solution of the smaller
instance into a solution for the larger
instance.
1-12
 Transform and conquer
• a simpler instance of the same problem, or
• a different representation of the same problem, or
• an instance of a different problem
 Greedy approach
• The problem could be solved in iterations
 Dynamic programming
• An instance is solved using the solutions for
smaller instances.
• The solution for a smaller instance might be
needed multiple times.
• The solutions to smaller instances are stored in a
table, so that each smaller instance is solved only
once.
• Additional space is used to save time.
 Backtracking and branch-and-
bound
Computer Science and Engineering Program
Analysis of Algorithms
1-13
 How good is the algorithm?
 Correctness
 Time efficiency
 Space efficiency
 Does there exist a better algorithm?
 Lower bounds
 Optimality
Computer Science and Engineering Program
What is an algorithm?
 Recipe, process, method, technique, procedure, routine,… with the
following requirements:
1. Finiteness
 terminates after a finite number of steps
2. Definiteness
 rigorously and unambiguously specified
3. Clearly specified input
 valid inputs are clearly specified
4. Clearly specified/expected output
 can be proved to produce the correct output given a valid input
5. Effectiveness
 steps are sufficiently simple and basic
1-14
Algorithms Examples
1-15
Addition and Subtraction
1-16
Computer Science and Engineering Program
2- Digit Addition
 Add the following (try it from left to right):
 Simply , think of 32 add ( 30+2) ; then add it to 47 ; then add
2 to the results
1-17
Computer Science and Engineering Program
2- Digit Addition (cont. )
 Add the following (try it from left to right):
1-18
Computer Science and Engineering Program
2- Digit Addition (cont. )
 Try this on your own:
1-19
Computer Science and Engineering Program
3- Digit Addition
1-20
Add the following :
Simply :
- Add the hundreds digit of the second number to the first number
- Add the tens digit to the result
- Add the unit digit to the result
Computer Science and Engineering Program
3- Digit Addition
Try this by yourself :
1-21
Computer Science and Engineering Program
3- Digit Addition
 Try this one :
 Try it this way (subtraction instead of addition)
1-22
Computer Science and Engineering Program
Part of your first assignment
 Find and write the best algorithm to sum up the
numbers from 1 to 100 ? What is the complexity
of your algorithm ?
 Write an algorithm to add 3-digit numbers (take
the sign in your account- Allow the addition of
positive or negative numbers)? Compare your
algorithm to the computer does in similar cases?
1-23
Computer Science and Engineering Program
2-Digit Subtraction
1-24
Computer Science and Engineering Program
3-Digit Subtraction
1-25
More about numbers Euclid’s Algorithm
1-26
Computer Science and Engineering Program
Euclid’s Algorithm
Problem: Find gcd(m,n), the greatest common divisor of two nonnegative, not
both zero integers m and n
Examples: gcd(60,24) = 12, gcd(60,0) = 60, gcd(0,0) = ?
Euclid’s algorithm is based on repeated application of equality
gcd(m,n) = gcd(n, m mod n)
until the second number becomes 0, which makes the problem trivial.
Example: gcd(60,24) = gcd(24,12) = gcd(12,0) = 12
1-27
Computer Science and Engineering Program
Descriptions of Euclid’s algorithm
 Step 1 If n = 0, return m and stop; otherwise go to Step 2
 Step 2 Divide m by n and assign the value of the remainder to r
 Step 3 Assign the value of n to m and the value of r to n. Go to
Step 1.
while n ≠ 0 do
r ← m mod n
m← n
n ← r
return m
28
Computer Science and Engineering Program
Other methods for gcd(m , n) [cont.]
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)
E.g. find gcd(60, 24)
Step 1: 60 = 2 . 2 . 3 . 5
Step 2: 24 = 2 . 2 . 2 . 3
Step 3: 2 . 2 . 3
Step 4: 2 . 2 . 3 = 12
29
Is this an algorithm?
not qualified  how do you get the
prime factorization? How do you get
common elements in two stored lists?
How efficient is it?
Time complexity: O(sqrt(n))
More about numbers Sieve of
Eratosthenes
1-30
Computer Science and Engineering Program
Sieve of Eratosthenes
 To find all the prime numbers less than or
equal to a given integer n by Eratosthenes'
method:
 Create a list of consecutive integers from two to n: (2, 3, 4, ..., n).
 Initially, let p equal 2, the first prime number.
 Strike from the list all multiples of p less than or equal to n. (2p, 3p,
4p, etc.)
 Find the first number remaining on the list greater than p (this number
is the next prime); replace p with this number.
 Repeat steps 3 and 4 until p2 is greater than n.
 All the remaining numbers on the list are prime.
31
Computer Science and Engineering Program
Sieve of Eratosthenes
Input: Integer n ≥ 2
Output: List of primes less than or equal to n
for p ← 2 to n do A[p] ← p
for p ← 2 to n do
if A[p]  0 //p hasn’t been previously eliminated from the list
j ← p* p
while j ≤ n do
A[j] ← 0 //mark element as eliminated
j ← j + p
Example: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1-32
Computer Science and Engineering Program
Steps of Designing and Analyzing an
Algorithm
 Understand the Problem
 Decide on the machine to be used (sequential vs. parallel)
 Design an algorithm: select a specific techniques such as divide and conquer .
 Also, decide on how do you represent the algorithm for instance pseudocode ,
flowchart , etc..
 Prove correctness may be by example or mathematically
 Analyze the algorithm for instance in space and time efficiency
33
Computer Science and Engineering Program
Important Problem Types
 Sorting
 Searching
 String processing
 Graph problems
 Combinatorial problems (counting objects number of sub graph in a
graph )
 Geometric problems( closest pair and convex-hull)
 Numerical problems (mathematical equation)
1-34
Computer Science and Engineering Program
Sorting (I)
 Rearrange the items of a given list in ascending order.
 Input: A sequence of n numbers <a1, a2, …, an>
 Output: A reordering <a´
1, a´
2, …, a´
n> of the input sequence such that a´
1≤ a´
2 ≤
… ≤ a´
n.
 Why sorting?
 Help searching
 Algorithms often use sorting as a key subroutine.
 Sorting key
 A specially chosen piece of information used to guide sorting. E.g., sort student
records by names.
1-35
Computer Science and Engineering Program
Sorting (II)
 Examples of sorting algorithms
 Selection sort
 Bubble sort
 Insertion sort
 Merge sort
 …..
 Evaluate sorting algorithm complexity: the number of key comparisons.
 Two properties
 Stability: A sorting algorithm is called stable if it preserves the relative
order of any two equal elements in its input.
 In place : A sorting algorithm is in place if it does not require extra
memory, except, possibly for a few memory units.
1-36
Computer Science and Engineering Program
Selection Sort
Algorithm SelectionSort(A[0..n-1])
//The algorithm sorts a given array by selection sort
//Input: An array A[0..n-1] of orderable elements
//Output: Array A[0..n-1] sorted in ascending order
for i  0 to n – 2 do
min  i
for j  i + 1 to n – 1 do
if A[j] < A[min]
min  j
swap A[i] and A[min]
1-37
Computer Science and Engineering Program
Searching
 Find a given value, called a search key, in a given set.
 Examples of searching algorithms
 Sequential search
 Binary search …
1-38
input: sorted array a_i < … < a_j and
key x;
m (i+j)/2;
while i < j and x != a_m do
if x < a_m then j  m-1
else i  m+1;
if x = a_m then output a_m;
Time: O(log n)
Computer Science and Engineering Program
String Processing
 A string is a sequence of characters from an alphabet.
 Text strings: letters, numbers, and special characters.
 String matching: searching for a given word/pattern in a text.
1-39
Examples:
(i) searching for a word or phrase on WWW or in a Word
document
(ii) searching for a short read in the reference genomic
sequence
Computer Science and Engineering Program
String Matching
 Given a text string T of length n and a pattern string P
of length m, the exact string matching problem is to
find all occurrences of P in T.
 Example: T=“AGCTTGA” P=“GCT”
 Applications:
 Searching keywords in a file
 Searching engines (like Google and Openfind)
 Database searching (GenBank)
 More string matching algorithms (with source codes):
http://www-igm.univ-mlv.fr/~lecroq/string/
1-40
Computer Science and Engineering Program
String Matching
 Brute Force algorithm
 The brute force algorithm consists in checking, at all positions in the text
between 0 and n-m, whether an occurrence of the pattern starts there or not.
Then, after each attempt, it shifts the pattern by exactly one position to the
right.
1-41
Time: O(mn) where m=|P| and
n=|T|.
Computer Science and Engineering Program
Main Features
 No preprocessing phase;
 Constant extra space needed;
 Always shifts the window by exactly 1 position to the right;
 Comparisons can be done in any order;
 Searching phase in O(mn) time complexity;
1-42
Computer Science and Engineering Program
Graph Problems
 Informal definition
 A graph is a collection of points called vertices, some of which
are connected by line segments called edges.
 Modeling Real-life Problems
 Modeling WWW
 Communication networks
 Project scheduling …
 Examples of Graph Algorithms
 Graph traversal algorithms
 Shortest-path algorithms
 ……..
1-43
Computer Science and Engineering Program
….
 Data Structures:
 An implementation of an ADT is a translation into
statements of a programming language,
─ the declarations that define a variable to be of that
ADT type
─ the operations defined on the ADT (using procedures
of the programming language)
 Each data structure is built up from the basic data types of the
underlying programming language using the available data
structuring facilities, such as
 arrays, records (structures in C), pointers, files, sets, etc.
44
Computer Science and Engineering Program
Fundamental data structures
 list
 array
 linked list
 string
 stack
 queue
 priority queue
1-45
 graph
 tree and binary tree
Computer Science and Engineering Program
Linear Data Structures
 Arrays
 A sequence of n items of the same data type that
are stored contiguously in computer memory and
made accessible by specifying a value of the
array’s index.
 Linked List
 A sequence of zero or more nodes each
containing two kinds of information: some data
and one or more links called pointers to other
nodes of the linked list.
 Singly linked list (next pointer)
 Doubly linked list (next + previous pointers)
1-46
 Arrays
 fixed length (need
preliminary reservation of
memory)
 contiguous memory
locations
 direct access
 Insert/delete
 Linked Lists
 dynamic length
 arbitrary memory
locations
 access by following links
 Insert/delete
a1 ana2
Computer Science and Engineering Program
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-47
Computer Science and Engineering Program
Priority Queue and Heap
1-48
 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
Computer Science and Engineering Program
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).
 Complete, dense, and sparse graphs
 A graph with every pair of its vertices connected by an edge is called
complete, K|V|
 In Dense graph, the number of edges is close to the maximal number
of edges.
1-49
1 2
3 4
Complete
Dense
Computer Science and Engineering Program
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?
1-50
0 1 1 1
0 0 0 1
0 0 0 1
0 0 0 0
2 3 4
4
4
Computer Science and Engineering Program
Weighted Graphs
 Graphs or digraphs with numbers assigned to the edges.
1-51
1 2
3 4
6
8
5
7
9
Computer Science and Engineering Program
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: a path in a graph which does not have repeating
vertices..
 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-52
Computer Science and Engineering Program
Graph Properties – A cyclicity
 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-53
1 2
3 4
Computer Science and Engineering Program
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.
─ Levels in a rooted tree.
1-54
1 3
2 4
5
1
3
2
4 5
rooted
Forest
Computer Science and Engineering Program
Rooted Trees (I)
 Ancestors/predecessors
 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/children
 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-55
1
3
2
4 5
rooted
Computer Science and Engineering Program
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-56
1
3
2
4 5
h = 2
Computer Science and Engineering Program
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 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.
1-57
9
6 8
5 2 3
6
3 9
2 5 8

Weitere ähnliche Inhalte

Was ist angesagt?

Dynamic programming class 16
Dynamic programming class 16Dynamic programming class 16
Dynamic programming class 16
Kumar
 
DESIGN AND ANALYSIS OF ALGORITHMS
DESIGN AND ANALYSIS OF ALGORITHMSDESIGN AND ANALYSIS OF ALGORITHMS
DESIGN AND ANALYSIS OF ALGORITHMS
Gayathri Gaayu
 

Was ist angesagt? (20)

Design & Analysis Of Algorithm
Design & Analysis Of AlgorithmDesign & Analysis Of Algorithm
Design & Analysis Of Algorithm
 
Dynamic programming class 16
Dynamic programming class 16Dynamic programming class 16
Dynamic programming class 16
 
Dynamicpgmming
DynamicpgmmingDynamicpgmming
Dynamicpgmming
 
Fundamental computing algorithms
Fundamental computing algorithmsFundamental computing algorithms
Fundamental computing algorithms
 
CS8461 - Design and Analysis of Algorithms
CS8461 - Design and Analysis of AlgorithmsCS8461 - Design and Analysis of Algorithms
CS8461 - Design and Analysis of Algorithms
 
DESIGN AND ANALYSIS OF ALGORITHMS
DESIGN AND ANALYSIS OF ALGORITHMSDESIGN AND ANALYSIS OF ALGORITHMS
DESIGN AND ANALYSIS OF ALGORITHMS
 
CS8451 - Design and Analysis of Algorithms
CS8451 - Design and Analysis of AlgorithmsCS8451 - Design and Analysis of Algorithms
CS8451 - Design and Analysis of Algorithms
 
Unit 2
Unit 2Unit 2
Unit 2
 
algorithm Unit 2
algorithm Unit 2 algorithm Unit 2
algorithm Unit 2
 
Online Algorithms - An Introduction
Online Algorithms - An IntroductionOnline Algorithms - An Introduction
Online Algorithms - An Introduction
 
Dynamic programming
Dynamic programmingDynamic programming
Dynamic programming
 
01. design & analysis of agorithm intro & complexity analysis
01. design & analysis of agorithm intro & complexity analysis01. design & analysis of agorithm intro & complexity analysis
01. design & analysis of agorithm intro & complexity analysis
 
Unit i
Unit iUnit i
Unit i
 
Asymptotic Notation and Data Structures
Asymptotic Notation and Data StructuresAsymptotic Notation and Data Structures
Asymptotic Notation and Data Structures
 
Dynamic programming1
Dynamic programming1Dynamic programming1
Dynamic programming1
 
DP
DPDP
DP
 
Unit 4
Unit 4Unit 4
Unit 4
 
Unit 3
Unit 3Unit 3
Unit 3
 
Design and Analysis of Algorithms
Design and Analysis of AlgorithmsDesign and Analysis of Algorithms
Design and Analysis of Algorithms
 
Divide and Conquer - Part II - Quickselect and Closest Pair of Points
Divide and Conquer - Part II - Quickselect and Closest Pair of PointsDivide and Conquer - Part II - Quickselect and Closest Pair of Points
Divide and Conquer - Part II - Quickselect and Closest Pair of Points
 

Andere mochten auch

Dc parent 14 2
Dc parent 14 2Dc parent 14 2
Dc parent 14 2
mtaft
 
Ancient Ideas of Creation & Evolution
Ancient Ideas of Creation & EvolutionAncient Ideas of Creation & Evolution
Ancient Ideas of Creation & Evolution
John Lynch
 
Introduction to "Origins, Evolution & Creation"
Introduction to "Origins, Evolution & Creation"Introduction to "Origins, Evolution & Creation"
Introduction to "Origins, Evolution & Creation"
John Lynch
 
One Long Argument
One Long ArgumentOne Long Argument
One Long Argument
John Lynch
 
History of Creationism, Parts II & III
History of Creationism, Parts II & IIIHistory of Creationism, Parts II & III
History of Creationism, Parts II & III
John Lynch
 
Tri Merge Sorting Algorithm
Tri Merge Sorting AlgorithmTri Merge Sorting Algorithm
Tri Merge Sorting Algorithm
Ashim Sikder
 
The Scientific Revolution
The Scientific RevolutionThe Scientific Revolution
The Scientific Revolution
John Lynch
 

Andere mochten auch (20)

Introduction to Information Technology ch 02_a
Introduction to Information Technology ch 02_aIntroduction to Information Technology ch 02_a
Introduction to Information Technology ch 02_a
 
Chap04alg
Chap04algChap04alg
Chap04alg
 
Dc parent 14 2
Dc parent 14 2Dc parent 14 2
Dc parent 14 2
 
Ancient Ideas of Creation & Evolution
Ancient Ideas of Creation & EvolutionAncient Ideas of Creation & Evolution
Ancient Ideas of Creation & Evolution
 
Google
GoogleGoogle
Google
 
Introduction to "Origins, Evolution & Creation"
Introduction to "Origins, Evolution & Creation"Introduction to "Origins, Evolution & Creation"
Introduction to "Origins, Evolution & Creation"
 
One Long Argument
One Long ArgumentOne Long Argument
One Long Argument
 
History of Creationism, Parts II & III
History of Creationism, Parts II & IIIHistory of Creationism, Parts II & III
History of Creationism, Parts II & III
 
Google at a glance 1998 - 2008
Google at a glance 1998 - 2008Google at a glance 1998 - 2008
Google at a glance 1998 - 2008
 
Google Algorithm Change History - 2k14-2k16.
Google Algorithm Change History - 2k14-2k16.Google Algorithm Change History - 2k14-2k16.
Google Algorithm Change History - 2k14-2k16.
 
Algorithms - Aaron Bloomfield
Algorithms - Aaron BloomfieldAlgorithms - Aaron Bloomfield
Algorithms - Aaron Bloomfield
 
Ds 4
Ds 4Ds 4
Ds 4
 
simple-sorting algorithms
simple-sorting algorithmssimple-sorting algorithms
simple-sorting algorithms
 
Was There A Darwinian Revolution
Was There A Darwinian RevolutionWas There A Darwinian Revolution
Was There A Darwinian Revolution
 
Sorting pnk
Sorting pnkSorting pnk
Sorting pnk
 
Tri Merge Sorting Algorithm
Tri Merge Sorting AlgorithmTri Merge Sorting Algorithm
Tri Merge Sorting Algorithm
 
Sorting algorithms
Sorting algorithmsSorting algorithms
Sorting algorithms
 
The Scientific Revolution
The Scientific RevolutionThe Scientific Revolution
The Scientific Revolution
 
Why Ben Stein Is Wrong About History & Science
Why Ben Stein Is Wrong About History & ScienceWhy Ben Stein Is Wrong About History & Science
Why Ben Stein Is Wrong About History & Science
 
CSS 3, Style and Beyond
CSS 3, Style and BeyondCSS 3, Style and Beyond
CSS 3, Style and Beyond
 

Ähnlich wie Chapter one

Algorithm chapter 1
Algorithm chapter 1Algorithm chapter 1
Algorithm chapter 1
chidabdu
 
Analysis of Algorithm full version 2024.pptx
Analysis of Algorithm  full version  2024.pptxAnalysis of Algorithm  full version  2024.pptx
Analysis of Algorithm full version 2024.pptx
rajesshs31r
 
Design Analysis of Alogorithm 1 ppt 2024.pptx
Design Analysis of Alogorithm 1 ppt 2024.pptxDesign Analysis of Alogorithm 1 ppt 2024.pptx
Design Analysis of Alogorithm 1 ppt 2024.pptx
rajesshs31r
 
Kk20503 1 introduction
Kk20503 1 introductionKk20503 1 introduction
Kk20503 1 introduction
Low Ying Hao
 
CP4151 Advanced data structures and algorithms
CP4151 Advanced data structures and algorithmsCP4151 Advanced data structures and algorithms
CP4151 Advanced data structures and algorithms
Sheba41
 

Ähnlich wie Chapter one (20)

Design and Analysis of Algorithm Brute Force 1.ppt
Design and Analysis of Algorithm Brute Force 1.pptDesign and Analysis of Algorithm Brute Force 1.ppt
Design and Analysis of Algorithm Brute Force 1.ppt
 
02-FAZ-A First Step Toward Algorithm Complexity Analysis.ppt
02-FAZ-A First Step Toward Algorithm Complexity Analysis.ppt02-FAZ-A First Step Toward Algorithm Complexity Analysis.ppt
02-FAZ-A First Step Toward Algorithm Complexity Analysis.ppt
 
Algorithm chapter 1
Algorithm chapter 1Algorithm chapter 1
Algorithm chapter 1
 
ANALYSIS-AND-DESIGN-OF-ALGORITHM.ppt
ANALYSIS-AND-DESIGN-OF-ALGORITHM.pptANALYSIS-AND-DESIGN-OF-ALGORITHM.ppt
ANALYSIS-AND-DESIGN-OF-ALGORITHM.ppt
 
UnitI (1).ppt
UnitI (1).pptUnitI (1).ppt
UnitI (1).ppt
 
Chapter two
Chapter twoChapter two
Chapter two
 
Algorithms
Algorithms Algorithms
Algorithms
 
Cis435 week01
Cis435 week01Cis435 week01
Cis435 week01
 
Analysis of Algorithm full version 2024.pptx
Analysis of Algorithm  full version  2024.pptxAnalysis of Algorithm  full version  2024.pptx
Analysis of Algorithm full version 2024.pptx
 
Design Analysis of Alogorithm 1 ppt 2024.pptx
Design Analysis of Alogorithm 1 ppt 2024.pptxDesign Analysis of Alogorithm 1 ppt 2024.pptx
Design Analysis of Alogorithm 1 ppt 2024.pptx
 
complexity analysis.pdf
complexity analysis.pdfcomplexity analysis.pdf
complexity analysis.pdf
 
Kk20503 1 introduction
Kk20503 1 introductionKk20503 1 introduction
Kk20503 1 introduction
 
3 analysis.gtm
3 analysis.gtm3 analysis.gtm
3 analysis.gtm
 
Unit i
Unit iUnit i
Unit i
 
ALGO.ppt
ALGO.pptALGO.ppt
ALGO.ppt
 
CP4151 ADSA unit1 Advanced Data Structures and Algorithms
CP4151 ADSA unit1 Advanced Data Structures and AlgorithmsCP4151 ADSA unit1 Advanced Data Structures and Algorithms
CP4151 ADSA unit1 Advanced Data Structures and Algorithms
 
a581a6a2cb5778045788f0b1d7da1c0236f.pptx
a581a6a2cb5778045788f0b1d7da1c0236f.pptxa581a6a2cb5778045788f0b1d7da1c0236f.pptx
a581a6a2cb5778045788f0b1d7da1c0236f.pptx
 
CP4151 Advanced data structures and algorithms
CP4151 Advanced data structures and algorithmsCP4151 Advanced data structures and algorithms
CP4151 Advanced data structures and algorithms
 
Data Structures and Algorithm Analysis
Data Structures  and  Algorithm AnalysisData Structures  and  Algorithm Analysis
Data Structures and Algorithm Analysis
 
Lecture 01-2.ppt
Lecture 01-2.pptLecture 01-2.ppt
Lecture 01-2.ppt
 

Kürzlich hochgeladen

Seal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptxSeal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptx
negromaestrong
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
ciinovamais
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdf
QucHHunhnh
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
heathfieldcps1
 
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
ZurliaSoop
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please Practise
AnaAcapella
 

Kürzlich hochgeladen (20)

Seal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptxSeal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptx
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibit
 
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
 
Unit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxUnit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptx
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdf
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
 
SOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning PresentationSOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning Presentation
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdf
 
Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...
 
How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17
 
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
 
Food safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdfFood safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdf
 
psychiatric nursing HISTORY COLLECTION .docx
psychiatric  nursing HISTORY  COLLECTION  .docxpsychiatric  nursing HISTORY  COLLECTION  .docx
psychiatric nursing HISTORY COLLECTION .docx
 
Asian American Pacific Islander Month DDSD 2024.pptx
Asian American Pacific Islander Month DDSD 2024.pptxAsian American Pacific Islander Month DDSD 2024.pptx
Asian American Pacific Islander Month DDSD 2024.pptx
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please Practise
 
ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701
 
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptxSKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POS
 

Chapter one

  • 1. Computer Science and Engineering Program Introduction to Algorithms Gedamu Alemu alemugedamu@yahoo.com Image processing and Computer vision SIG Some of the sides are exported from different sources to clarify the topic
  • 2. Computer Science and Engineering Program Introduction  What is Algorithm  Definition and Basic Concept  Fundamental of Algorithmic Problem Solving  Understanding and choose b/n exact &approximate problem solving  Important Problem Type  Sorting and searching  String processing and geometrical problem  Graph and Tree problem  Fundamental Data Structure  Liner data Structure  Non Liner Data stracture
  • 3. Computer Science and Engineering Program Analysis of algorithms  Issues:  Correctness  space efficiency  time efficiency  optimality  Approaches:  theoretical analysis  empirical analysis
  • 5. Computer Science and Engineering Program Problem solving in computer Science 5
  • 6. Computer Science and Engineering Program What is an algorithm?  An algorithm is a sequence of unambiguous instructions for solving a problem, i.e., for obtaining a required output for any legitimate input in a finite amount of time. 6 “computer” problem algorithm input output
  • 7. Computer Science and Engineering Program 7 What is an algorithm?  Procedure for getting answers to a specific problem  Problem solving strategy even if computers are not involved  Scope is limited  I can not have a procedure for you to have very happy life or becoming rich and famous
  • 8. Computer Science and Engineering Program Notion/Concept of algorithm and problem  Nonambiguity for each step  Range of inputs is specified carefully  The same algorithm can be represented in several ways  Several algorithms for the same problem may exist  Several algorithms with different ideas can solve the same problem with different speed. 8 “computer” problem algorithm Input output
  • 9. Computer Science and Engineering Program Example of computational problem: sorting  Statement of problem:  Input: A sequence of n numbers <a1, a2, …, an>  Output: A reordering of the input sequence <a´ 1, a´ 2, …, a´ n> so that a´ i ≤ a´ j whenever i < j  Instance: The sequence <5, 3, 2, 8, 3>  Algorithms:  Selection sort  Insertion sort  Merge sort  (many others) 1-9
  • 10. Computer Science and Engineering Program Some Well-known Computational Problems  Sorting  Searching  Shortest paths in a graph  Minimum spanning tree  Primality testing  Traveling salesman problem  Knapsack problem  Chess  Towers of Hanoi 1-10 Some of problems don’t have efficient algorithms, or algorithms at all!
  • 11. Computer Science and Engineering Program Basic Issues Related to Algorithms  How to design algorithms  How to express algorithms  Proving correctness  Efficiency (or complexity) analysis  Theoretical analysis  Empirical/ experimental analysis  Optimality 1-11
  • 12. Computer Science and Engineering Program Algorithm design strategies  Brute force  Try all possible combinations  Divide and conquer breaking down a problem into two or more sub-problems of the same (or related) type, until these become simple enough to be solved directly.  Decrease and conquer  Change an instance into one smaller instance of the problem.  Solve the smaller instance.  Convert the solution of the smaller instance into a solution for the larger instance. 1-12  Transform and conquer • a simpler instance of the same problem, or • a different representation of the same problem, or • an instance of a different problem  Greedy approach • The problem could be solved in iterations  Dynamic programming • An instance is solved using the solutions for smaller instances. • The solution for a smaller instance might be needed multiple times. • The solutions to smaller instances are stored in a table, so that each smaller instance is solved only once. • Additional space is used to save time.  Backtracking and branch-and- bound
  • 13. Computer Science and Engineering Program Analysis of Algorithms 1-13  How good is the algorithm?  Correctness  Time efficiency  Space efficiency  Does there exist a better algorithm?  Lower bounds  Optimality
  • 14. Computer Science and Engineering Program What is an algorithm?  Recipe, process, method, technique, procedure, routine,… with the following requirements: 1. Finiteness  terminates after a finite number of steps 2. Definiteness  rigorously and unambiguously specified 3. Clearly specified input  valid inputs are clearly specified 4. Clearly specified/expected output  can be proved to produce the correct output given a valid input 5. Effectiveness  steps are sufficiently simple and basic 1-14
  • 17. Computer Science and Engineering Program 2- Digit Addition  Add the following (try it from left to right):  Simply , think of 32 add ( 30+2) ; then add it to 47 ; then add 2 to the results 1-17
  • 18. Computer Science and Engineering Program 2- Digit Addition (cont. )  Add the following (try it from left to right): 1-18
  • 19. Computer Science and Engineering Program 2- Digit Addition (cont. )  Try this on your own: 1-19
  • 20. Computer Science and Engineering Program 3- Digit Addition 1-20 Add the following : Simply : - Add the hundreds digit of the second number to the first number - Add the tens digit to the result - Add the unit digit to the result
  • 21. Computer Science and Engineering Program 3- Digit Addition Try this by yourself : 1-21
  • 22. Computer Science and Engineering Program 3- Digit Addition  Try this one :  Try it this way (subtraction instead of addition) 1-22
  • 23. Computer Science and Engineering Program Part of your first assignment  Find and write the best algorithm to sum up the numbers from 1 to 100 ? What is the complexity of your algorithm ?  Write an algorithm to add 3-digit numbers (take the sign in your account- Allow the addition of positive or negative numbers)? Compare your algorithm to the computer does in similar cases? 1-23
  • 24. Computer Science and Engineering Program 2-Digit Subtraction 1-24
  • 25. Computer Science and Engineering Program 3-Digit Subtraction 1-25
  • 26. More about numbers Euclid’s Algorithm 1-26
  • 27. Computer Science and Engineering Program Euclid’s Algorithm Problem: Find gcd(m,n), the greatest common divisor of two nonnegative, not both zero integers m and n Examples: gcd(60,24) = 12, gcd(60,0) = 60, gcd(0,0) = ? Euclid’s algorithm is based on repeated application of equality gcd(m,n) = gcd(n, m mod n) until the second number becomes 0, which makes the problem trivial. Example: gcd(60,24) = gcd(24,12) = gcd(12,0) = 12 1-27
  • 28. Computer Science and Engineering Program Descriptions of Euclid’s algorithm  Step 1 If n = 0, return m and stop; otherwise go to Step 2  Step 2 Divide m by n and assign the value of the remainder to r  Step 3 Assign the value of n to m and the value of r to n. Go to Step 1. while n ≠ 0 do r ← m mod n m← n n ← r return m 28
  • 29. Computer Science and Engineering Program Other methods for gcd(m , n) [cont.] 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) E.g. find gcd(60, 24) Step 1: 60 = 2 . 2 . 3 . 5 Step 2: 24 = 2 . 2 . 2 . 3 Step 3: 2 . 2 . 3 Step 4: 2 . 2 . 3 = 12 29 Is this an algorithm? not qualified  how do you get the prime factorization? How do you get common elements in two stored lists? How efficient is it? Time complexity: O(sqrt(n))
  • 30. More about numbers Sieve of Eratosthenes 1-30
  • 31. Computer Science and Engineering Program Sieve of Eratosthenes  To find all the prime numbers less than or equal to a given integer n by Eratosthenes' method:  Create a list of consecutive integers from two to n: (2, 3, 4, ..., n).  Initially, let p equal 2, the first prime number.  Strike from the list all multiples of p less than or equal to n. (2p, 3p, 4p, etc.)  Find the first number remaining on the list greater than p (this number is the next prime); replace p with this number.  Repeat steps 3 and 4 until p2 is greater than n.  All the remaining numbers on the list are prime. 31
  • 32. Computer Science and Engineering Program Sieve of Eratosthenes Input: Integer n ≥ 2 Output: List of primes less than or equal to n for p ← 2 to n do A[p] ← p for p ← 2 to n do if A[p]  0 //p hasn’t been previously eliminated from the list j ← p* p while j ≤ n do A[j] ← 0 //mark element as eliminated j ← j + p Example: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1-32
  • 33. Computer Science and Engineering Program Steps of Designing and Analyzing an Algorithm  Understand the Problem  Decide on the machine to be used (sequential vs. parallel)  Design an algorithm: select a specific techniques such as divide and conquer .  Also, decide on how do you represent the algorithm for instance pseudocode , flowchart , etc..  Prove correctness may be by example or mathematically  Analyze the algorithm for instance in space and time efficiency 33
  • 34. Computer Science and Engineering Program Important Problem Types  Sorting  Searching  String processing  Graph problems  Combinatorial problems (counting objects number of sub graph in a graph )  Geometric problems( closest pair and convex-hull)  Numerical problems (mathematical equation) 1-34
  • 35. Computer Science and Engineering Program Sorting (I)  Rearrange the items of a given list in ascending order.  Input: A sequence of n numbers <a1, a2, …, an>  Output: A reordering <a´ 1, a´ 2, …, a´ n> of the input sequence such that a´ 1≤ a´ 2 ≤ … ≤ a´ n.  Why sorting?  Help searching  Algorithms often use sorting as a key subroutine.  Sorting key  A specially chosen piece of information used to guide sorting. E.g., sort student records by names. 1-35
  • 36. Computer Science and Engineering Program Sorting (II)  Examples of sorting algorithms  Selection sort  Bubble sort  Insertion sort  Merge sort  …..  Evaluate sorting algorithm complexity: the number of key comparisons.  Two properties  Stability: A sorting algorithm is called stable if it preserves the relative order of any two equal elements in its input.  In place : A sorting algorithm is in place if it does not require extra memory, except, possibly for a few memory units. 1-36
  • 37. Computer Science and Engineering Program Selection Sort Algorithm SelectionSort(A[0..n-1]) //The algorithm sorts a given array by selection sort //Input: An array A[0..n-1] of orderable elements //Output: Array A[0..n-1] sorted in ascending order for i  0 to n – 2 do min  i for j  i + 1 to n – 1 do if A[j] < A[min] min  j swap A[i] and A[min] 1-37
  • 38. Computer Science and Engineering Program Searching  Find a given value, called a search key, in a given set.  Examples of searching algorithms  Sequential search  Binary search … 1-38 input: sorted array a_i < … < a_j and key x; m (i+j)/2; while i < j and x != a_m do if x < a_m then j  m-1 else i  m+1; if x = a_m then output a_m; Time: O(log n)
  • 39. Computer Science and Engineering Program String Processing  A string is a sequence of characters from an alphabet.  Text strings: letters, numbers, and special characters.  String matching: searching for a given word/pattern in a text. 1-39 Examples: (i) searching for a word or phrase on WWW or in a Word document (ii) searching for a short read in the reference genomic sequence
  • 40. Computer Science and Engineering Program String Matching  Given a text string T of length n and a pattern string P of length m, the exact string matching problem is to find all occurrences of P in T.  Example: T=“AGCTTGA” P=“GCT”  Applications:  Searching keywords in a file  Searching engines (like Google and Openfind)  Database searching (GenBank)  More string matching algorithms (with source codes): http://www-igm.univ-mlv.fr/~lecroq/string/ 1-40
  • 41. Computer Science and Engineering Program String Matching  Brute Force algorithm  The brute force algorithm consists in checking, at all positions in the text between 0 and n-m, whether an occurrence of the pattern starts there or not. Then, after each attempt, it shifts the pattern by exactly one position to the right. 1-41 Time: O(mn) where m=|P| and n=|T|.
  • 42. Computer Science and Engineering Program Main Features  No preprocessing phase;  Constant extra space needed;  Always shifts the window by exactly 1 position to the right;  Comparisons can be done in any order;  Searching phase in O(mn) time complexity; 1-42
  • 43. Computer Science and Engineering Program Graph Problems  Informal definition  A graph is a collection of points called vertices, some of which are connected by line segments called edges.  Modeling Real-life Problems  Modeling WWW  Communication networks  Project scheduling …  Examples of Graph Algorithms  Graph traversal algorithms  Shortest-path algorithms  …….. 1-43
  • 44. Computer Science and Engineering Program ….  Data Structures:  An implementation of an ADT is a translation into statements of a programming language, ─ the declarations that define a variable to be of that ADT type ─ the operations defined on the ADT (using procedures of the programming language)  Each data structure is built up from the basic data types of the underlying programming language using the available data structuring facilities, such as  arrays, records (structures in C), pointers, files, sets, etc. 44
  • 45. Computer Science and Engineering Program Fundamental data structures  list  array  linked list  string  stack  queue  priority queue 1-45  graph  tree and binary tree
  • 46. Computer Science and Engineering Program Linear Data Structures  Arrays  A sequence of n items of the same data type that are stored contiguously in computer memory and made accessible by specifying a value of the array’s index.  Linked List  A sequence of zero or more nodes each containing two kinds of information: some data and one or more links called pointers to other nodes of the linked list.  Singly linked list (next pointer)  Doubly linked list (next + previous pointers) 1-46  Arrays  fixed length (need preliminary reservation of memory)  contiguous memory locations  direct access  Insert/delete  Linked Lists  dynamic length  arbitrary memory locations  access by following links  Insert/delete a1 ana2
  • 47. Computer Science and Engineering Program 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-47
  • 48. Computer Science and Engineering Program Priority Queue and Heap 1-48  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
  • 49. Computer Science and Engineering Program 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).  Complete, dense, and sparse graphs  A graph with every pair of its vertices connected by an edge is called complete, K|V|  In Dense graph, the number of edges is close to the maximal number of edges. 1-49 1 2 3 4 Complete Dense
  • 50. Computer Science and Engineering Program 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? 1-50 0 1 1 1 0 0 0 1 0 0 0 1 0 0 0 0 2 3 4 4 4
  • 51. Computer Science and Engineering Program Weighted Graphs  Graphs or digraphs with numbers assigned to the edges. 1-51 1 2 3 4 6 8 5 7 9
  • 52. Computer Science and Engineering Program 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: a path in a graph which does not have repeating vertices..  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-52
  • 53. Computer Science and Engineering Program Graph Properties – A cyclicity  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-53 1 2 3 4
  • 54. Computer Science and Engineering Program 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. ─ Levels in a rooted tree. 1-54 1 3 2 4 5 1 3 2 4 5 rooted Forest
  • 55. Computer Science and Engineering Program Rooted Trees (I)  Ancestors/predecessors  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/children  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-55 1 3 2 4 5 rooted
  • 56. Computer Science and Engineering Program 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-56 1 3 2 4 5 h = 2
  • 57. Computer Science and Engineering Program 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 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. 1-57 9 6 8 5 2 3 6 3 9 2 5 8