Presentation on theme: "Data Structure and Algorithms (BCS 1223) GRAPH. Introduction of Graph A graph G consists of two things: 1.A set V of elements called nodes(or points or."— Presentation transcript:
Data Structure and Algorithms (BCS 1223) GRAPH
Introduction of Graph A graph G consists of two things: 1.A set V of elements called nodes(or points or vertices) 2.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 = [u, v] 2
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
4 A directed graph. The number of edges with one endpoint on a given vertex is called that vertex's degree. In a directed graph, the number of edges that point to a given vertex is called its in-degree, and the number that point from it is called its out-degree. Often, we may want to be able to distinguish between different nodes and edges. We can associate labels with either. We call such a graph labeled.
An undirected graph. In a directed graph, the edges point from one vertex to another, while in an undirected graph, they merely connect two vertices. 5
Some of the applications of graphs are : Mazes (using stacks) Networks (computer, cities....) Maps (any geographic databases ) Graphics : Geometrical Objects Neighborhood graphs Voronoi diagrams 6
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: 7 This structure contains three kinds of objects vertices edges faces 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.
Neighborhood Graphs 8 These are graphs for collection of points in d-dimensional space. Such point sets may be visualized by connecting close points. There are many possible definitions of closeness. For example, one might draw a circle with two data points at diametrically opposite sides. If the circle contains no other data points then the two points may be considered "close" and an edge may be added between them.
Voronoi Diagrams In computational geometry the voronoi diagram is the main tool for storing clouds of points and for manipulating points in the Euclidean space. To create a voronoi diagram we must partition the graphical space into regions. This is done by separating every pair of data points which are nearest neighbors by a line which is centered between the points and perpendicular to an imaginary edge between them.
Adjacency Matrix Representation An adjacency matrix is one of the two common ways to represent a graph. 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 boolean values.
Adjacency Matrix 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(n 2 ). 11
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 [2, 3] 2 - [1, 3] 3 - [1, 2, 4] 4 - 
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 node indecies. Another implementation might require that each node keep a list of its adjacent nodes. 14
Adjacency List Representation 15
Problem: find a path between two nodes of the graph (e.g., Austin and Washington) Methods: Depth-First-Search (DFS) or Breadth-First-Search (BFS)
Depth-First Traversal (implemented using stack) 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 17
Depth-First Traversal Example the following graph: Directed graph G3
Depth-First Traversal The depth first ordering of the vertices graph G3: The general algorithm to do a depth first traversal at a given 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 19
Breadth-First Search 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. 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 : 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 creation: Weighted Graph Operations (an extension of undirected/directed graph operations) 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. 23
General algorithm of Short Path: 1.Initialize the array smallestWeight so that smallestWeight[u] = weights[vertex, u]. 2. Set samllestWeight [vertex] = Find the vertex, v, that is closet to vertex for which the shortest path has not been determined. 4. Mark v as the (next) vertex for which the smallest weight is found 5. For each vertex w in G, such that the shortest path from vertex to w has not been determined and an edge(v,w) exists, if the weight of the path to w via v is smaller than its current weight, update the weight of w to be the weight of v + the weight of edge (v,w). 24
25 Shortest path A-B is 2 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
26 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 vertices o---o |\ / | | X | |/ \ | o---o
27 has sixteen spanning trees:
The standard application is to a problem like phone network design. You want a set of lines that connects all your offices with a minimum total cost. If a network isn't a tree it can always remove some edges and save money. A less obvious application is that the minimum spanning tree can be used to approximately solve the traveling salesman problem. A convenient formal way of defining this problem is to find the shortest path that visits each point at least once. It's help in minimization over a strictly larger set. Example, if draw a path tracing around the minimum spanning tree, trace that each edge twice and visit all points that is why MST weight is less than the TSP weight 28