Presentation is loading. Please wait.

Presentation is loading. Please wait.

October 21, 200819. Graphs1 Graphs CS 221 (slides from textbook author)

Similar presentations


Presentation on theme: "October 21, 200819. Graphs1 Graphs CS 221 (slides from textbook author)"— Presentation transcript:

1 October 21, 200819. Graphs1 Graphs CS 221 (slides from textbook author)

2 October 21, 200819. Graphs2 Graphs ORD DFW SFO LAX 802 1743 1843 1233 337

3 October 21, 200819. Graphs3 Outline and Reading Graphs (§6.1) –Definition –Applications –Terminology –Properties –ADT Data structures for graphs (§6.2) –Edge list structure –Adjacency list structure –Adjacency matrix structure

4 October 21, 200819. Graphs4 Graph A graph is a pair (V, E), where –V is a set of nodes, called vertices –E is a collection of pairs of vertices, called edges –Vertices and edges are positions and store elements Example: –A vertex represents an airport and stores the three-letter airport code –An edge represents a flight route between two airports and stores the mileage of the route ORD PVD MIA DFW SFO LAX LGA HNL 849 802 1387 1743 1843 1099 1120 1233 337 2555 142

5 October 21, 200819. Graphs5 Edge Types Directed edge –ordered pair of vertices (u,v) –first vertex u is the origin –second vertex v is the destination –e.g., a flight Undirected edge –unordered pair of vertices (u,v) –e.g., a flight route Directed graph –all the edges are directed –e.g., flight network Undirected graph –all the edges are undirected –e.g., route network ORDPVD flight AA 1206 ORDPVD 849 miles

6 October 21, 200819. Graphs6 Edge Types Directed edge –ordered pair of vertices (u,v) –first vertex u is the origin –second vertex v is the destination –e.g., a flight Undirected edge –unordered pair of vertices (u,v) –e.g., a flight route Directed graph –all the edges are directed –e.g., flight network Undirected graph –all the edges are undirected –e.g., route network ORDPVD flight AA 1206 ORDPVD 849 miles These are edges from two distinct graphs. FLVS-mod

7 October 21, 200819. Graphs7 ORD PVD MIA DFW SFO LAX LGA HNL AA1206 UA7654 AA5432 AA8901 AA4567 UA98 UA567 UA6789 UA45 UA1234 AA67 ORD PVD MIA DFW SFO LAX LGA HNL 849 802 1387 1743 1843 1099 1120 1233 337 2555 142 FLVS Undirected graph Directed graph

8 October 21, 200819. Graphs8 ORD PVD MIA DFW SFO LAX LGA HNL AA1206 UA7654 AA5432 AA8901 AA4567 UA98 UA567 UA6789 UA45 UA1234 AA67 FLVS Another directed graph ORD PVD MIA DFW SFO LAX LGA HNL AA1206 UA7654 AA5432 AA8901 AA4567 UA98 UA567 UA6789 UA45 UA1234 AA67 Directed graph AA1207 UA1235

9 October 21, 200819. Graphs9 Another comparison of directed and undirected graphs The streets of downtown Morgantown Directed graph: drivers of vehicles must drive in the direction indicated by arrow signs on the one-way streets. Undirected graph: pedestrians may walk either direction on the one-way streets. Willey ForestWalnutPleasant FLVS

10 October 21, 200819. Graphs10 Applications Electronic circuits –Printed circuit board –Integrated circuit Transportation networks –Highway network –Flight network Computer networks –Local area network –Internet –Web Databases –Entity-relationship diagram

11 October 21, 200819. Graphs11 Entity-relationship model An entity-relationship model (ERM) is an abstract conceptual representation of structured data. Entity-relationship modeling is a relational schema database modeling method, used in software engineering to produce a type of conceptual data model (or semantic data model ) of a system, often a relational database, and its requirements in a top-down fashion. Diagrams created using this process are called entity-relationship diagrams, or ER diagrams or ERDs for short. The definitive reference for entity relationship modelling is generally given as Peter Chen 's 1976 paper [1]. However, variants of the idea existed previously (see for example A. P. G. Brown [2] ) and have been devised subsequently. database modeling software engineering conceptual data model semantic data model relational database top-down Peter Chen [1] [2] http://en.wikipedia.org/wiki/Entity-relationship_model

12 October 21, 200819. Graphs12 Entity-relationship model: overview(1) The first stage of information system design uses these models during the requirements analysis to describe information needs or the type of information that is to be stored in a database. The data modeling technique can be used to describe any ontology (i.e. an overview and classifications of used terms and their relationships) for a certain universe of discourse (i.e. area of interest). In the case of the design of an information system that is based on a database, the conceptual data model is, at a later stage (usually called logical design), mapped to a logical data model, such as the relational model ; this in turn is mapped to a physical model during physical design. Note that sometimes, both of these phases are referred to as "physical design". information system requirements analysis information database data modeling ontology universe of discourse relational model http://en.wikipedia.org/wiki/Entity-relationship_model

13 October 21, 200819. Graphs13 Entity-relationship model: overview (2) There are a number of conventions for entity- relationship diagrams (ERDs). The classical notation is described in the remainder of this article, and mainly relates to conceptual modeling. There are a range of notations more typically employed in logical and physical database design, including IDEF1x (ICAM DEFinition Language) and dimensional modeling.IDEF1xdimensional modeling http://en.wikipedia.org/wiki/Entity-relationship_model

14 October 21, 200819. Graphs14 Entitity-relationship model: connection: entity (1) An entity may be defined as a thing which is recognised as being capable of an independent existence and which can be uniquely identified. An entity is an abstraction from the complexities of some domain. When we speak of an entity we normally speak of some aspect of the real world which can be distinguished from other aspects of the real world (Beynon-Davies, 2004). entity http://en.wikipedia.org/wiki/Entity-relationship_model

15 October 21, 200819. Graphs15 Entity-relationship model: connection: entity (2) An entity may be a physical object such as a house or a car, an event such as a house sale or a car service, or a concept such as a customer transaction or order. Although the term entity is the one most commonly used, following Chen we should really distinguish between an entity and an entity-type. An entity-type is a category. An entity, strictly speaking, is an instance of a given entity-type. There are usually many instances of an entity- type. Because the term entity-type is somewhat cumbersome, most people tend to use the term entity as a synonym for this term. http://en.wikipedia.org/wiki/Entity-relationship_model

16 October 21, 200819. Graphs16 Entity-relationship model: connection: entity (3) Entities can be thought of as nouns. Examples: a computer, an employee, a song, a mathematical theorem. Entities are represented as rectangles. nouns http://en.wikipedia.org/wiki/Entity- relationship_model

17 October 21, 200819. Graphs17 Entity-relationship model: connection: relationship A relationship captures how two or more entities are related to one another. Relationships can be thought of as verbs, linking two or more nouns. Examples: an owns relationship between a company and a computer, a supervises relationship between an employee and a department, a performs relationship between an artist and a song, a proved relationship between a mathematician and a theorem. Relationships are represented as diamonds, connected by lines to each of the entities in the relationship. verbs http://en.wikipedia.org/wiki/Entity-relationship_model

18 October 21, 200819. Graphs18 Entity-relationship model: attributes Entities and relationships can both have attributes. Examples: an employee entity might have a Social Security Number (SSN) attribute; the proved relationship may have a date attribute. Attributes are represented as ellipses connected to their owning entity sets by a line. http://en.wikipedia.org/wiki/Entity- relationship_model

19 October 21, 200819. Graphs19 Entity-relationship model: graph representation http://en.wikipedia.org/wiki/Entity-relationship_model

20 October 21, 200819. Graphs20 Terminology End vertices (or endpoints) of an edge –U and V are the endpoints of a Edges incident on a vertex –a, d, and b are incident on V Adjacent vertices –U and V are adjacent Degree of a vertex –X has degree 5 Parallel edges –h and i are parallel edges Self-loop –j is a self-loop XU V W Z Y a c b e d f g h i j

21 October 21, 200819. Graphs21 The degree of a vertex is the number of edges incident on that vertex. The degree of a graph is the maximum degree of any vertex. Terminology End vertices (or endpoints) of an edge –U and V are the endpoints of a Edges incident on a vertex –a, d, and b are incident on V Adjacent vertices –U and V are adjacent Degree of a vertex –X has degree 5 Parallel edges –h and i are parallel edges Self-loop –j is a self-loop XU V W Z Y a c b e d f g h i j FLVS mod

22 October 21, 200819. Graphs22 P1P1 Terminology (cont.) Path –sequence of alternating vertices and edges –begins with a vertex –ends with a vertex –each edge is preceded and followed by its endpoints Simple path –path such that all its vertices and edges are distinct Examples –P 1 =(V,b,X,h,Z) is a simple path –P 2 =(U,c,W,e,X,g,Y,f,W,d,V) is a path that is not simple XU V W Z Y a c b e d f g hP2P2

23 October 21, 200819. Graphs23 Terminology (cont.) Cycle –circular sequence of alternating vertices and edges –each edge is preceded and followed by its endpoints Simple cycle –cycle such that all its vertices and edges are distinct Examples –C 1 =(V,b,X,g,Y,f,W,c,U,a,  ) is a simple cycle –C 2 =(U,c,W,e,X,g,Y,f,W,d,V,a,  ) is a cycle that is not simple C1C1 XU V W Z Y a c b e d f g hC2C2

24 October 21, 200819. Graphs24 Cycle: an additional definition We also use the term "cycle" to refer to a graph all of whose edges form a single cycle. The notation C n denotes a cycle on n vertices. FLVS C4C4 C5C5 C6C6

25 October 21, 200819. Graphs25 Properties Notation nnumber of vertices mnumber of edges deg(v)degree of vertex v Property 1  v deg(v)  2m Proof: each edge is counted twice Property 2 In an undirected graph with no self-loops and no multiple edges m  n (n  1)  2 Proof: each vertex has degree at most (n  1) What is the bound for a directed graph? Example n  4 m  6 deg(v)  3

26 October 21, 200819. Graphs26 K 4, the complete graph on 4 vertices Example n  4 m  6 deg(v)  3 This is a special graph, the complete graph on 4 vertices, denoted K 4. FLVS-addition

27 October 21, 200819. Graphs27 comparison of Cn and Kn K4K4 K5K5 K6K6 C4C4 C5C5 C6C6

28 October 21, 200819. Graphs28 Main Methods of the Graph ADT Vertices and edges –are positions –store elements Accessor methods –aVertex() –incidentEdges(v) –endVertices(e) –isDirected(e) –origin(e) –destination(e) –opposite(v, e) –areAdjacent(v, w) Update methods –insertVertex(o) –insertEdge(v, w, o) –insertDirectedEdge(v, w, o) –removeVertex(v) –removeEdge(e) Generic methods –numVertices() –numEdges() –vertices() –edges() If e is an edge between v and w, opposite(v,e) returns w Returns an arbitrary vertex

29 October 21, 200819. Graphs29 Edge List Structure Vertex object –element –reference to position in vertex sequence Edge object –element –origin vertex object –destination vertex object –reference to position in edge sequence Vertex sequence –sequence of vertex objects Edge sequence –sequence of edge objects v u w ac b a z d uv w z bcd

30 October 21, 200819. Graphs30 Adjacency List Structure Edge list structure Incidence sequence for each vertex –sequence of references to edge objects of incident edges Augmented edge objects –references to associated positions in incidence sequences of end vertices u v w ab a uv w b

31 October 21, 200819. Graphs31 Adjacency Matrix Structure Edge list structure Augmented vertex objects –Integer key (index) associated with vertex 2D adjacency array –Reference to edge object for adjacent vertices –Null for non nonadjacent vertices The “old fashioned” version just has 0 for no edge and 1 for edge u v w ab 012 0  1  2  a uv w 01 2 b

32 October 21, 200819. Graphs32 Asymptotic Performance n vertices, m edges no parallel edges no self-loops Bounds are “big-Oh” Edge List Adjacency List Adjacency Matrix Space n  m n2n2 incidentEdges(v)mdeg(v)n areAdjacent (v, w)mmin(deg(v), deg(w))1 insertVertex(o)11n2n2 insertEdge(v, w, o)111 removeVertex(v)mdeg(v)n2n2 removeEdge(e)111

33 October 21, 200819. Graphs33 Depth-First Search DB A C E

34 October 21, 200819. Graphs34 Outline and Reading Definitions (§6.1) –Subgraph –Connectivity –Spanning trees and forests Depth-first search (§6.3.1) –Algorithm –Example –Properties –Analysis Applications of DFS (§6.5) –Path finding –Cycle finding

35 October 21, 200819. Graphs35 Subgraphs A subgraph S of a graph G is a graph such that –The vertices of S are a subset of the vertices of G –The edges of S are a subset of the edges of G A spanning subgraph of G is a subgraph that contains all the vertices of G Subgraph Spanning subgraph

36 October 21, 200819. Graphs36 Connectivity A graph is connected if there is a path between every pair of vertices A connected component of a graph G is a maximal connected subgraph of G Connected graph Non connected graph with two connected components

37 October 21, 200819. Graphs37 Trees and Forests A (free) tree is an undirected graph T such that –T is connected –T has no cycles This definition of tree is different from the one of a rooted tree A forest is an undirected graph without cycles The connected components of a forest are trees Tree Forest

38 October 21, 200819. Graphs38 Spanning Trees and Forests A spanning tree of a connected graph is a spanning subgraph that is a tree A spanning tree is not unique unless the graph is a tree Spanning trees have applications to the design of communication networks A spanning forest of a graph is a spanning subgraph that is a forest Graph Spanning tree

39 October 21, 200819. Graphs39 Depth-First Search Depth-first search (DFS) is a general technique for traversing a graph A DFS traversal of a graph G –Visits all the vertices and edges of G –Determines whether G is connected –Computes the connected components of G –Computes a spanning forest of G DFS on a graph with n vertices and m edges takes O(n  m ) time DFS can be further extended to solve other graph problems –Find and report a path between two given vertices –Find a cycle in the graph Depth-first search is to graphs what Euler tour is to binary trees

40 October 21, 200819. Graphs40 DFS Algorithm The algorithm uses a mechanism for setting and getting “labels” of vertices and edges Algorithm DFS(G, v) Input graph G and a start vertex v of G Output labeling of the edges of G in the connected component of v as discovery edges and back edges setLabel(v, VISITED) for all e  G.incidentEdges(v) if getLabel(e)  UNEXPLORED w  G.opposite(v,e) if getLabel(w)  UNEXPLORED setLabel(e, DISCOVERY) DFS(G, w) else setLabel(e, BACK) Algorithm DFS(G) Input graph G Output labeling of the edges of G as discovery edges and back edges for all u  G.vertices() setLabel(u, UNEXPLORED) for all e  G.edges() setLabel(e, UNEXPLORED) for all v  G.vertices() if getLabel(v)  UNEXPLORED DFS(G, v)

41 October 21, 200819. Graphs41 Example DB A C ED B A C ED B A C E discovery edge back edge A visited vertex A unexplored vertex unexplored edge

42 October 21, 200819. Graphs42 Example (cont.) DB A C E DB A C E DB A C E D B A C E

43 October 21, 200819. Graphs43 DFS and Maze Traversal The DFS algorithm is similar to a classic strategy for exploring a maze –We mark each intersection, corner and dead end (vertex) visited –We mark each corridor (edge ) traversed –We keep track of the path back to the entrance (start vertex) by means of a rope (recursion stack)

44 October 21, 200819. Graphs44 Properties of DFS Property 1 DFS(G, v) visits all the vertices and edges in the connected component of v Property 2 The discovery edges labeled by DFS(G, v) form a spanning tree of the connected component of v DB A C E

45 October 21, 200819. Graphs45 Analysis of DFS Setting/getting a vertex/edge label takes O(1) time Each vertex is labeled twice –once as UNEXPLORED –once as VISITED Each edge is labeled twice –once as UNEXPLORED –once as DISCOVERY or BACK Method incidentEdges is called once for each vertex DFS runs in O(n  m) time provided the graph is represented by the adjacency list structure –Recall that  v deg(v)  2m

46 October 21, 200819. Graphs46 Path Finding We can specialize the DFS algorithm to find a path between two given vertices u and z using the template method pattern We call DFS(G, u) with u as the start vertex We use a stack S to keep track of the path between the start vertex and the current vertex As soon as destination vertex z is encountered, we return the path as the contents of the stack Algorithm pathDFS(G, v, z) setLabel(v, VISITED) S.push(v) if v  z return S.elements() for all e  G.incidentEdges(v) if getLabel(e)  UNEXPLORED w  opposite(v, e) if getLabel(w)  UNEXPLORED setLabel(e, DISCOVERY) S.push(e) pathDFS(G, w, z) S.pop(){ e gets popped } else setLabel(e, BACK) S.pop() { v gets popped }

47 October 21, 200819. Graphs47 Cycle Finding We can specialize the DFS algorithm to find a simple cycle using the template method pattern We use a stack S to keep track of the path between the start vertex and the current vertex As soon as a back edge (v, w) is encountered, we return the cycle as the portion of the stack from the top to vertex w Algorithm cycleDFS(G, v, z) setLabel(v, VISITED) S.push(v) for all e  G.incidentEdges(v) if getLabel(e)  UNEXPLORED w  opposite(v,e) S.push(e) if getLabel(w)  UNEXPLORED setLabel(e, DISCOVERY) pathDFS(G, w, z) S.pop() else C  new empty stack repeat o  S.pop() C.push(o) until o  w return C.elements() S.pop()

48 October 21, 200819. Graphs48 Breadth-First Search CB A E D L0L0 L1L1 F L2L2

49 October 21, 200819. Graphs49 Outline and Reading Breadth-first search (§6.3.3) –Algorithm –Example –Properties –Analysis –Applications DFS vs. BFS (§6.3.3) –Comparison of applications –Comparison of edge labels

50 October 21, 200819. Graphs50 Breadth-First Search Breadth-first search (BFS) is a general technique for traversing a graph A BFS traversal of a graph G –Visits all the vertices and edges of G –Determines whether G is connected –Computes the connected components of G –Computes a spanning forest of G BFS on a graph with n vertices and m edges takes O(n  m ) time BFS can be further extended to solve other graph problems –Find and report a path with the minimum number of edges between two given vertices –Find a simple cycle, if there is one

51 October 21, 200819. Graphs51 BFS Algorithm The algorithm uses a mechanism for setting and getting “labels” of vertices and edges Algorithm BFS(G, s) L 0  new empty sequence L 0.insertLast(s) setLabel(s, VISITED ) i  0 while  L i.isEmpty() L i  1  new empty sequence for all v  L i.elements() for all e  G.incidentEdges(v) if getLabel(e)  UNEXPLORED w  opposite(v,e) if getLabel(w)  UNEXPLORED setLabel(e, DISCOVERY ) setLabel(w, VISITED ) L i  1.insertLast(w) else setLabel(e, CROSS ) i  i  1 Algorithm BFS(G) Input graph G Output labeling of the edges and partition of the vertices of G for all u  G.vertices() setLabel(u, UNEXPLORED ) for all e  G.edges() setLabel(e, UNEXPLORED ) for all v  G.vertices() if getLabel(v)  UNEXPLORED BFS(G, v)

52 October 21, 200819. Graphs52 Example C B A E D discovery edge cross edge A visited vertex A unexplored vertex unexplored edge L0L0 L1L1 F CB A E D L0L0 L1L1 F CB A E D L0L0 L1L1 F

53 October 21, 200819. Graphs53 Example (cont.) CB A E D L0L0 L1L1 F CB A E D L0L0 L1L1 F L2L2 CB A E D L0L0 L1L1 F L2L2 CB A E D L0L0 L1L1 F L2L2

54 October 21, 200819. Graphs54 Example (cont.) CB A E D L0L0 L1L1 F L2L2 CB A E D L0L0 L1L1 F L2L2 CB A E D L0L0 L1L1 F L2L2

55 October 21, 200819. Graphs55 Properties Notation G s : connected component of s Property 1 BFS(G, s) visits all the vertices and edges of G s Property 2 The discovery edges labeled by BFS(G, s) form a spanning tree T s of G s Property 3 For each vertex v in L i –The path of T s from s to v has i edges –Every path from s to v in G s has at least i edges CB A E D L0L0 L1L1 F L2L2 CB A E D F

56 October 21, 200819. Graphs56 Analysis Setting/getting a vertex/edge label takes O(1) time Each vertex is labeled twice –once as UNEXPLORED –once as VISITED Each edge is labeled twice –once as UNEXPLORED –once as DISCOVERY or CROSS Each vertex is inserted once into a sequence L i Method incidentEdges is called once for each vertex BFS runs in O(n  m) time provided the graph is represented by the adjacency list structure –Recall that  v deg(v)  2m

57 October 21, 200819. Graphs57 Applications Using the template method pattern, we can specialize the BFS traversal of a graph G to solve the following problems in O(n  m) time –Compute the connected components of G –Compute a spanning forest of G –Find a simple cycle in G, or report that G is a forest –Given two vertices of G, find a path in G between them with the minimum number of edges, or report that no such path exists

58 October 21, 200819. Graphs58 DFS vs. BFS CB A E D L0L0 L1L1 F L2L2 CB A E D F DFSBFS ApplicationsDFSBFS Spanning forest, connected components, paths, cycles  Shortest paths  Biconnected components 

59 October 21, 200819. Graphs59 DFS vs. BFS (cont.) Back edge (v,w) –w is an ancestor of v in the tree of discovery edges Cross edge (v,w) –w is in the same level as v or in the next level in the tree of discovery edges CB A E D L0L0 L1L1 F L2L2 CB A E D F DFSBFS


Download ppt "October 21, 200819. Graphs1 Graphs CS 221 (slides from textbook author)"

Similar presentations


Ads by Google