5. A graph G = (V,E) is
• V: set of vertices(or points
• E: set of edges connecting
the vertices in v or
(A set E of edges
such that each edge e in E is
identified with a unique
(unordered) pair [u, v] of
nodes in V, denotes by e =
6. Graphs cont..
If the element are in ordered pairs it is call directed graph.
If the pairs represent the same edge it is known as undirected graph.
Subgraph happened when every vertex include in other vertex and
every edge is include in other edge.
7. Some of the applications of graphs are :
• Mazes (using stacks)
• Networks (computer, cities ....)
• Maps (any geographic databases )
• Graphics : Geometrical Objects
• Neighborhood graphs
• Voronoi diagrams
8. Many geometrical objects such as cubes, polyhedral, and wire
frame car models, may be thought of as graphs. These graphs
are more than just nodes and edges. Their geometrical
structure must also be taken into account. For example
consider the cube:
• This structure contains three kinds of objects
Edges are crucial since, in a three dimensional object, an edge
will always belong to only two faces and two nodes. For this
reason it makes sense to number the edges. Faces become
linked list of edges, and each edge lives in only two faces
10. Adjacency Matrix Representation
An adjacency matrix is one of the two common ways to represent a
The adjacency matrix shows which nodes are adjacent to one another.
Two nodes are adjacent if there is an edge connecting them.
In the case of a directed graph, if node j is adjacent to node i, there is
an edge from i to j. In other words, if j is adjacent to i, you can get from
i to j by traversing one edge.
For a given graph with n nodes, the adjacency matrix will have
dimensions of n x n.
For an unweighted graph, the adjacency matrix will be populated with
11. • For any given node i, you can determine its adjacent nodes
by looking at row of the adjacency matrix. A value of true at
indicates that there is an edge from node i to node j, and
false indicating no edge. In an undirected graph, the values
of and will be equal.
• In a weighted graph, the boolean values will be replaced by
the weight of the edge connecting the two nodes, with a
special value that indicates the absence of an edge.
• The memory use of an adjacency matrix is O(n2).
13. Adjacency List Representation
• One way to have the graph maintain a list of lists, in
which the first list is a list of indices corresponding to
each node in the graph.
• Each of these refer to another list that stores a the
index of each adjacent node to this one. It also useful to
associate the weight of each link with the adjacent node
in this list.
Example: An undirected graph contains four nodes 1, 2, 3
and 4. 1 is linked to 2 and 3. 2 is linked to 3. 3 is linked to
1 - [2, 3]
2 - [1, 3]
3 - [1, 2, 4]
4 - 
14. Adjacency List Representation
• It useful to store the list of all the nodes in the
graph in a hash table. The keys then would
correspond to the indices of each node and the
value would be a reference to the list of adjacent
• Another implementation might require that each
node keep a list of its adjacent nodes.
16. Graph Traversal
•Problem: find a path between two
nodes of the graph (e.g., Austin
•Methods: Depth-First-Search (DFS)
or Breadth-First-Search (BFS)
17. • Start at vertex v, visit its neighbor w, then w's neighbor y and
keep going until reach 'a dead end' then iterate back and visit
nodes reachable from second last visited vertex and keep
applying the same principle.
• General algorithm:
for each vertex v in the graph
if v is not visited
start the depth first traversal at v
19. The depth first ordering of the vertices graph G3:
0 1 2 3 4 5 6 8 10 7 9
The general algorithm to do a depth first traversal at a
node v is:
1. Mark node v as visited
2. Visit the node
3. For each vertex u adjacent to v
if u is not visited
start the depth first traversal at u
20. Breadth-First Search (Queue)
Breadth first search visits the nodes neighbours and then the
univisited neighbours of the neighbours etc. If it starts on vertex a
it will go to all vertices that have an edge from a. If some points are
not reachable it will have to start another BFS from a new vertex.
Base on the same example in Depth-First Traversal :
0 1 2 3 4 5 6 8 10 7 9
Start the traversal at vertex 0. After visiting vertex 0 next visit the
vertices that are directly connected to it, that are 1 and 5. Next visit
the vertices that are directed connected to 1 and are not visit, that
is 2 and 3. Then visit vertices that directly connected to 5 and are
not visited, that is 6. Then continue to next path.
21. Breadth-First Search
The general algorithm:
a. for each vertex v in the graph
if v is not visited
add v to the queue // start the breadth first search at v
b. Mark v as visited
c. While the queue is not empty
c.1. Remove vertex u from the queue
c.2. Retrieve the vertices adjacent to u
c.3. for each vertex w that is adjacent to u
if w is not visited
c.3.1. Add w to the queue
c.3.2. Mark w as visited
22. • We may also want to associate some cost or weight to the traversal of an
edge. When we add this information, the graph is called weighted. An
example of a weighted graph would be the distance between the capitals of a
set of countries.
• Directed and undirected graphs may both be weighted. The operations on a
weighted graph are the same with addition of a weight parameter during edge
• Weighted Graph Operations (an extension of undirected/directed graph
• make-edge(vertex u, vertex v, weight w): edge
• Create an edge between u and v with weight w. In a directed graph, the edge
will flow from u to v.
• Weight graph also being used to find the shortest path.
24. Shortest Path
Shortest path A-B
Shortest path from
D to A is (DA) = 1
Shortest path from C
to A is (CBA) = 3
Shortest path from E to A is
(EDA) = 4
Shortest path from F to A is
(FCBA) = 5
25. Minimum Spanning Tree
A spanning tree of a graph is
just a subgraph that contains
all the vertices and is a tree.
A graph may have many
spanning trees; for instance
the complete graph on four
fom the figure of graph k4 ..it
has sixteen spanning trees: