Chapter 10: GRAPH
-
Upload
sonya-stephenson -
Category
Documents
-
view
39 -
download
1
description
Transcript of Chapter 10: GRAPH
Chapter 10: GRAPH
OBJECTIVESGraph terminology and conceptGraph storage structuresTraversing operationDetermining shortest path
CONTENTSIntroductionGraph storage structuresGraph TraversingNetworks
Shortest DistanceSpanning Tree
INTRODUCTIONA graph is a collection of nodes, called vertices, and line
segments, called arcs or edges, that connect pairs of nodes.
The graph is used for modeling any information used in
computer applications.
Examples:Represents relationship amongst cities – where the nodes
represent cities and line segments are distances.The World Wide Web. The files are the vertices. A link from
one file to another is a directed edge (or arc). In general, the graph is always has been used because it
represent in one cycle and also it has more than one connection.
INTRODUCTIONGraphs may be directed or undirected:
Directed Graph (or digraph) –each line called an arc, has a direction indicating how it may be traversed. Figure 1(a) shows the example of directed graph.
Undirected graph –there is no direction on the lines known as edges and it may be traversed in either direction. Figure 1(b) shows the example of undirected graph.
INTRODUCTION
Two vertices in a graph are said to be adjacent vertices (or neighbors) if an edge directly connects them. In Figure 1, A and B are adjacent, where as D and F are not.
A path is a sequence of vertices in which each vertex is adjacent to the next one. (Example: In Figure 1, {A, B, C, E} is one path and {A, B, E, F} is another)
A cycle is a path consisting of a least three vertices that starts and ends with the same vertex. (Example: In Figure 1(b) {B, C, D, E, B} is a cycle.
A graph G=(V,E) means that the graph consists a set of vertices (V) and edges (E) which connect them.
INTRODUCTIONExample
INTRODUCTIONA graph is said to be connected if there is a
path from any vertex to any vertex.A graph is disjoint if it is not connected. In
other words, a node that has no connection with other nodes. Figure 2(c) shows one of the examples of disjoint graphs.
INTRODUCTION
INTRODUCTIONThe degree of a vertex is the number of lines
incident to it.The indegree is the number of arcs entering
the vertex.The outdegree of a vertex in a graph is the
number of arcs leaving the vertex. (Example: Figure 2(a), the indegree of vertex B is 1 and its outdegree is 2).
GRAPH STORAGE STRUCTURESTo represent a graph we need to store two sets to represent the vertices of the graph and the edges or arcs
Two most common structures used to store the sets are array and linked lists
Adjacency MatrixFor a graph with n node (1, 2, 3, 4, ... , n), the
adjacency matrix is the nxn matrix, in which, if there is an edge between vertices, the entry in row i and column j is 1 (true) and is 0 (or false) otherwise.
The adjacency matrix for non-directed graph is symmetry, Aij = Aji
The adjacency matrix for directed graph is not symmetry, Aij ≠ Aji
Adjacency MatrixExample
Adjacency MatrixLimitationLimitations in the adjacency matrix:
The size of the graph must be known before the program starts
Only one edge can be stored between any two vertices
Adjacency List
Use a linked list to store the vertices. The pointer at the left of the list linked the vertex entries. In this method, the vertex list is a singly linked list of the vertices in the list. An adjacency list is shown in Figure 4.
TRAVERSING GRAPHTwo standard graph traversals are depth first
and breadth first. Depth-first
In the depth-first traversal, all of node’s descendents are processed before moving to an adjacent node.
Breadth-firstIn the breadth-first traversal all adjacent
vertices are processed before processing the descendents of vertex.
TRAVERSING GRAPHExample
→Depth-first traversal: 1 2 5 6 3 4 7 8 →Breadth-first traversal: 1 2 3 4 5 6 7 8
43
65
2
87
1
TRAVERSING GRAPHExample
→Depth-first traversal: 1 2 6 5 7 8 3 4 9 10 11 12 13 14
TRAVERSING GRAPHExample
Breadth-first traversal: 1 5 4 3 2 6 7 8 9 10 11 12 13 14
NETWORKS A network is a graph whose lines are
weighted also known as weighted graph. The meaning of the weights depends on the
application such as mileage, time, or cost.
Two applications of network: the shortest path and minimum spanning tree.
4
2 3
56
1
7
8
6
5
7
2
10
5
3
Shortest Path AlgorithmCommon application used with graphs is to
find the shortest path between two vertices in a network.
Can use Djikstra’s shortest path algorithm, (developed by Edgar Dijkstra in 1959)
Djikstra’s Algorithm 1- Pick a vertex, call it W, that is not in S,
and for which the distance from 1 to W is a minimum. Add it to S.
2- For every vertex still not in S, see whether the distance from vertex 1 to that vertex can be shortened by going through W. If so, update the corresponding element of Dist.
Pseudo code:S = {1}Dist[2..n] = Edge[1][2 .. n]for (I = 1; I <= n-1)
Choose W Ï S for Dist[W] is the minimum then S = S+{W}
For all vertex J Ï S, then
Dist[J] = min(Dist[j], Dist[W]+ Edge[W][J])
Example: Find the shortest path from vertex 1 to other vertices using the algorithm.
Output:Shortest paths between vertex 1 and all other vertices:
Vertex Path Length
Predecessor
2 30 1
3 60 4
4 50 1
5 40 1
6 90 3
SPANNING TREEA spanning tree is a tree that contains all of
the vertices in graph.A minimum spanning tree is a spanning tree
in which the total weight of the lines is guaranteed to be the minimum of all possible trees in the graph.
Kruskal's algorithm is one of three classical minimum-spanning tree algorithms.
SPANNING TREEExample:To determine the minimum spanning tree shown in Figure
8.
SPANNING TREEExample:We can start with any vertex, let’s start with A.Then, add the vertex that gives the minimum-weighted edge with A, AC.From the two vertices in the tree, A and C, now locate the edge with the minimum weight.The edge AB has a weight of 6, the edge BC has a weight of 2, the edge CD has a weight of 3, and the edge CE has a weight of 4. Therefore the minimum-weighted edge is BC.To generalize the process, use the following rule:From all the vertices in the tree, select the edge with the minimal value to a vertex no currently in the tree and insert it into the tree.Using this rule: add CD (weight 3), DE (weight 2), and DF(weight 3) in turn. The steps graphically shown in Figure 9.
SPANNING TREEExample:
Minimum Spanning Tree Pseudo codealgorithm spanningTree (val graph <metadata>)Determine the minimum spanning tree of a network.Pre graph contains a networkPost spanning tree determinedif (empty graph)1 return2 end if3 vertexPtr = graph.first4 loop (vertexPtr not null)
Set inTree flags false.1 vertexPtr->inTree = false2 edgePtr = vertexPtr->edge3 loop (edgePtr not null)
1 edgePtr->inTree = false2 edgePtr = edgePtr->nextEdge
4 end loop5 vertexPtr = vertexPtr->nextVertex
5 end loop Now derive spanning tree.6 vertexPtr = graph.first7 vertexPtr->inTree = true8 treeComplete = false9 loop (not treeComplete)
1 treeComplete = true2 chkVertexPtr = vertexPtr3 minEdge = +¥4 minEdgePtr = null5 loop (chkVertexPtr not null)
walk through graph checking vertices in tree.1 if (chkVertexPtr->inTree true
AND chkVertexPtr->outDegree >0)edgePtr = chkVertexPtr->edgeloop (edgePtr not null)
if (edgePtr->destination->inTree false)1 treeComplete = false2 if (edgePtr->weight < minEdge)
1 minEdge = edgeptr->weight2 minEdgePtr = edgePtr
3 end if2 end if3 edgePtr = edgePtr->nextedge
3 end loop2 end ifchVertexPtr = chkVertexPtr = chkVertexPtr->nextVertex
end loopif (minEdgePtr not null)Found edge to insert into tree.
min DegePtr-> inTree2= trueminEdgePtr->destination-> = true
end if10 end loop11 returnend spanning tree
EXERCISEBased on Diagram 1, find Breadth-First Traversal starts at vertex A? Depth-First Traversal starts at vertex A?