1 / 28

Graph Theory and Representation

Graph Theory and Representation. Graph Algorithms. Graphs and Theorems about Graphs Graph ADT and implementation Graph Algorithms Shortest paths minimum spanning tree. What can graphs model?. Cost of wiring electronic components together. Shortest route between two cities.

vernados
Télécharger la présentation

Graph Theory and Representation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Graph Theory and Representation

  2. Graph Algorithms • Graphs and Theorems about Graphs • Graph ADT and implementation • Graph Algorithms • Shortest paths • minimum spanning tree Cutler/Head

  3. What can graphs model? • Cost of wiring electronic components together. • Shortest route between two cities. • Finding the shortest distance between all pairs of cities in a road atlas. • Flow of material (liquid flowing through pipes, current through electrical networks, information through communication networks, parts through an assembly line, etc). • State of a machine (FSM). • Used in Operating systems to model resource handling (deadlock problems). • Used in compilers for parsing and optimizing the code. Cutler/Head

  4. What is a Graph? • Informally a graph is a set of nodes joined by a set of lines or arrows. 1 2 3 1 3 2 4 4 5 6 5 6 Cutler/Head

  5. A directed graph, also called a digraphG is a pair ( V, E ), where the set V is a finite set and E is a binary relation on V . The set V is called the vertex set of G and the elements are called vertices. The set E is called the edge set of G and the elements are edges (also called arcs ). A edge from node a to node b is denoted by the ordered pair ( a, b ). Self loop Isolated node 1 3 7 2 4 5 6 V = { 1, 2, 3, 4, 5, 6, 7 }| V | = 7 E = { (1,2), (2,2), (2,4), (4,5), (4,1), (5,4),(6,3) }| E | = 7 Cutler/Head

  6. An undirected graph G = ( V, E ) , but unlike a digraph the edge set E consist of unordered pairs. Our text uses the notation ( a,b ) to refer to a directed edge, and { a, b } for an undirected edge. V = { A, B, C, D, E, F } |V | = 6 A B C E = { {A, B}, {A,E}, {B,E}, {C,F} } |E | = 4 D F E Some texts use (a, b) also for undirected edges. So ( a, b ) and ( b, a ) refers to the same edge. Cutler/Head

  7. Degree of a Vertex in an undirected graph is the number of edges incident on it. In a directed graph , the out degree of a vertex is the number of edges leaving it and the in degree is the number of edges entering it. The degree of B is 2. A B C Self-loop D F E The in degree of 2 is 2 andthe out degree of 2 is 3. 1 2 4 5 Cutler/Head

  8. Simple Graphs Simple graphs are graphs without multiple edges or self-loops. We will consider only simple graphs. Proposition: If G is an undirected graph then deg(v) = 2 |E | Proposition: If G is a digraph then indeg(v) =  outdeg(v) = |E | v G v G v G Cutler/Head

  9. A weighted graph is a graph for which each edge has an associated weight, usually given by a weight functionw: E R. 2 1.2 1 3 1 2 3 2 .2 1.5 5 .5 3 .3 1 4 5 6 4 5 6 .5 Cutler/Head

  10. A path is a sequence of vertices such that there is an edge from each vertex to its successor. A path from a vertex to itself is called a cycle. A graph is called cyclic if it contains a cycle; otherwise it is called acyclic A path is simple if each vertex is distinct. A B C 1 3 2 Cycle D F E 4 5 6 Unreachable Cycle If there is path p from u to v then we say v is reachable from u via p. Simple path from 1 to 5 = ( 1, 2, 4, 5 ) or as in our text ((1, 2), (2, 4), (4,5)) Cutler/Head

  11. A Complete graph is an undirected/directed graph in which every pair of vertices is adjacent. If (u, v ) is an edge in a graph G, we say that vertex v is adjacent to vertex u. A A B B E D D 4 nodes and (4*3)/2 edges V nodes and V*(V-1)/2 edges Note: if self loops are allowed V(V-1)/2 +Vedges 3 nodes and 3*2 edges V nodes and V*(V-1) edges Note: if self loops are allowed V2 edges Cutler/Head

  12. An undirected graph is connected if you can get from any node to any other by following a sequence of edges OR any two nodes are connected by a path.A directed graph is strongly connected if there is a directed path from any node to any other node. • A graph is sparse if | E |  | V | • A graph is dense if | E |  | V |2. 1 2 A B C 4 5 D F E Cutler/Head

  13. A bipartite graphis an undirected graph G = (V,E) in which V can be partitioned into 2 sets V1 and V2 such that ( u,v) E implies either uV1 and vV2 OR vV1 and uV2. Cutler/Head

  14. A free tree is an acyclic, connected, undirected graph. A forest is an acyclic undirected graph. A rooted tree is a tree with one distinguished node, root. Let G = (V, E ) be an undirected graph. The following statements are equivalent.1. G is a tree2. Any two vertices in G are connected by unique simple path.3. G is connected, but if any edge is removed from E, the resulting graph is disconnected.4. G is connected, and | E | = | V | -15. G is acyclic, and | E | = | V | -16. G is acyclic, but if any edge is added to E, the resulting graph contains a cycle. Cutler/Head

  15. Graph ADT • What kinds of methods should be supplied? • The next slides assume an undirected graph • For simplicity the implementation of the interface in the next slide assumes that the vertices of a graph are numbered 0,…,numVertices-1. Cutler/Head

  16. A possible interface for edges public interface Edge { public int getFrom ();//returns first node public int getTo (); //returns second node public Object getInfo ();//returns the data } Cutler/Head

  17. A possible interface for undirected graphs public interface Graph { public int numberOfVertices(); public void addUEdge (int to, int from); public void addUEdge (int to, int from, Object info); public Iterator getAdjacent(int vertex); public Edge getEdge (int v, int w); public boolean isEdge(int v, int w); public Iterator getEdges (); public void addVertex (); } Cutler/Head

  18. Implementation of a Graph. • Adjacency-list representation of a graph G = ( V, E ) consists of an array ADJ of |V | lists, one for each vertex in V. For each uV , ADJ [ u ] points to all its adjacent vertices. 2 5 1 1 2 2 1 5 3 4 3 3 2 4 5 4 4 2 5 3 5 4 1 2 Cutler/Head

  19. Adjacency-list representation for a directed graph. 2 5 1 1 2 2 5 3 4 3 3 4 5 4 4 5 5 5 Variation: Can keep a second list of edges coming into a vertex. Cutler/Head

  20. Representing graph as an adjacency list protected ArrayList adjacencyList; private int numVertices = 0; //constructor public GraphAdjLists (int size) { numVertices = size; //creates a graph with n nodes, no edges adjacencyList= new ArrayList(size); for (int i = 0; i < numVertices; ++i) { adjacencyList.add(new LinkedList()); } } ArrayList and LinkedList are the Java implementations of a growable array, and a linked list Cutler/Head

  21. Implementing a graph as an adjacency list public void addUEdge (int i, int j) { ((LinkedList)adjacencyList.get(i)).add(new Integer(j)); if (i!=j){ ((LinkedList)adjacencyList.get(j)).add(new Integer(i)); } } public Iterator getAdjacent(int i) { return ((LinkedList)adjacencyList.get(i)).iterator(); } Cutler/Head

  22. Adjacency lists • Advantage: • Saves space for sparse graphs. Most graphs are sparse. • “Visit” edges that start at v • Must traverse linked list of v • Size of linked list of v is degree(v) • (degree(v)) • Disadvantage: • Check for existence of an edge (v, u) • Must traverse linked list of v • Size of linked list of v is degree(v) • (degree(v)) Cutler/Head

  23. Adjacency List • Storage • We need V pointers to linked lists • For a directed graph the number of nodes (or edges) contained (referenced) in all the linked lists is (out-degree (v)) = | E |. So we need ( V + E ) • For an undirected graph the number of nodes is(degree (v)) = 2 | E | Also ( V + E ) v V v V Cutler/Head

  24. Adjacency-matrix-representation of a graph G = ( V, E) is a |V | x |V | matrix A = ( aij ) such that aij = 1 (or some Object) if (i, j ) E and 0 (or null) otherwise. 0 1 2 3 4 0 1 2 0 1 0 0 1 0 1 2 3 4 1 0 1 1 1 4 3 0 1 0 1 0 0 1 1 0 1 1 1 0 1 0 Cutler/Head

  25. Adjacency Matrix Representation for a Directed Graph 0 1 2 3 4 0 1 0 0 1 0 1 0 1 2 3 4 0 0 1 1 1 2 0 0 0 1 0 4 0 0 0 0 1 3 0 0 0 0 0 Cutler/Head

  26. Implementation of graph in an adjacency matrix protected boolean[ ][ ] adjacent; private int numVertices; public GraphMatrix (int size) { numVertices = size; adjacent = new boolean [size][size]; initialize matrix to false } public void addUEdge (int i, int j) { adjacent [i] [j]=true; adjacent [j] [i]=true; } Cutler/Head

  27. Adjacency Matrix Representation • Advantage: • Saves space on pointers for dense graphs, and on • small unweighted graphs using 1 bit per edge. • Check for existence of an edge (v, u) • (adjacency [i] [j]) == true?) • So (1) • Disadvantage: • “visit” all the edges that start at v • Row v of the matrix must be traversed. • So (|V|). Cutler/Head

  28. Adjacency Matrix Representation • Storage • ( | V |2) ( We usually just write, (V2) ) • For undirected graphs you can save storage (only 1/2(V2)) by noticing the adjacency matrix of an undirected graph is symmetric. • Need to update code to work with new representation. • Gain in space is offset by increase in the time required by the methods. Cutler/Head

More Related