590 likes | 774 Views
Graphs. CS 221 (slides from textbook author). Graphs. 1843. ORD. SFO. 802. 1743. 337. 1233. LAX. DFW. Outline and Reading. Graphs ( § 6.1) Definition Applications Terminology Properties ADT Data structures for graphs ( § 6.2) Edge list structure Adjacency list structure
E N D
Graphs CS 221 (slides from textbook author) 19. Graphs
Graphs 1843 ORD SFO 802 1743 337 1233 LAX DFW 19. Graphs
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 19. Graphs
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 Graph 849 PVD 1843 ORD 142 SFO 802 LGA 1743 337 1387 HNL 2555 1099 1233 LAX 1120 DFW MIA 19. Graphs
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 flight AA 1206 ORD PVD 849 miles ORD PVD 19. Graphs
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 flight AA 1206 ORD PVD 849 miles ORD PVD These are edges from two distinct graphs. FLVS-mod 19. Graphs
Undirected graph 849 PVD 1843 ORD 142 SFO 802 LGA 1743 337 1387 HNL 2555 1099 1233 LAX 1120 DFW MIA Directed graph AA1206 PVD AA4567 ORD AA67 SFO UA7654 LGA AA8901 UA45 AA5432 HNL UA1234 UA98 UA6789 LAX UA567 DFW MIA FLVS 19. Graphs
Directed graph AA1206 PVD AA4567 ORD AA67 SFO UA7654 LGA AA8901 UA45 AA5432 HNL UA1234 UA98 UA6789 LAX UA567 DFW MIA AA1207 Another directed graph AA1206 PVD AA4567 ORD AA67 SFO UA7654 LGA AA8901 UA45 AA5432 HNL UA1234 UA98 UA6789 LAX UA567 DFW UA1235 MIA FLVS 19. Graphs
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. Forest Walnut Pleasant Willey FLVS 19. Graphs
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 19. Graphs
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. • http://en.wikipedia.org/wiki/Entity-relationship_model 19. Graphs
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". • http://en.wikipedia.org/wiki/Entity-relationship_model 19. Graphs
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. • http://en.wikipedia.org/wiki/Entity-relationship_model 19. Graphs
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). • http://en.wikipedia.org/wiki/Entity-relationship_model 19. Graphs
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 19. Graphs
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. • http://en.wikipedia.org/wiki/Entity-relationship_model 19. Graphs
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. • http://en.wikipedia.org/wiki/Entity-relationship_model 19. Graphs
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. Graphs
Entity-relationship model: graph representation http://en.wikipedia.org/wiki/Entity-relationship_model 19. Graphs
V b a h j U d X Z c e i W g f Y 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 19. Graphs
V b a h j U d X Z c e i W g f Y 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 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. FLVS mod 19. Graphs
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 • P1=(V,b,X,h,Z) is a simple path • P2=(U,c,W,e,X,g,Y,f,W,d,V) is a path that is not simple V b a P1 d U X Z P2 h c e W g f Y 19. Graphs
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 • C1=(V,b,X,g,Y,f,W,c,U,a,) is a simple cycle • C2=(U,c,W,e,X,g,Y,f,W,d,V,a,) is a cycle that is not simple V a b d U X Z C2 h e C1 c W g f Y 19. Graphs
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 Cn denotes a cycle on n vertices. C4 C5 C6 FLVS 19. Graphs
Notation n number of vertices m number of edges deg(v)degree of vertex v Property 1 Sv 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? Properties • Example • n = 4 • m = 6 • deg(v)= 3 19. Graphs
K4, 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 K4. FLVS-addition 19. Graphs
comparison of Cn and Kn C4 K4 C5 K5 C6 K6 19. Graphs
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() Main Methods of the Graph ADT Returns an arbitrary vertex If e is an edge between v and w, opposite(v,e) returns w 19. Graphs
Edge List Structure u a c • 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 b d v w z z w u v a b c d 19. Graphs
Adjacency List Structure a v b u w • 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 w u v b a 19. Graphs
Adjacency Matrix Structure a v b u w • 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 2 w 0 u 1 v b a 19. Graphs
Asymptotic Performance 19. Graphs
A B D E C Depth-First Search 19. Graphs
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 19. Graphs
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 19. Graphs
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 Connectivity Connected graph Non connected graph with two connected components 19. Graphs
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 19. Graphs
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 19. Graphs
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 Depth-First Search 19. Graphs
DFS Algorithm • The algorithm uses a mechanism for setting and getting “labels” of vertices and edges AlgorithmDFS(G, v) Inputgraph G and a start vertex v of G Outputlabeling 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) ifgetLabel(e) = UNEXPLORED w G.opposite(v,e) if getLabel(w) = UNEXPLORED setLabel(e, DISCOVERY) DFS(G, w) else setLabel(e, BACK) AlgorithmDFS(G) Inputgraph G Outputlabeling 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() ifgetLabel(v) = UNEXPLORED DFS(G, v) 19. Graphs
A B D E C A A B D E B D E C C Example unexplored vertex A visited vertex A unexplored edge discovery edge back edge 19. Graphs
A A A B D E B D E B D E C C C A B D E C Example (cont.) 19. Graphs
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) 19. Graphs
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 A B D E C Properties of DFS 19. Graphs
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 Sv deg(v)= 2m Analysis of DFS 19. Graphs
Path Finding AlgorithmpathDFS(G, v, z) setLabel(v, VISITED) S.push(v) if v= z return S.elements() for all e G.incidentEdges(v) ifgetLabel(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 } • 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 19. Graphs
Cycle Finding AlgorithmcycleDFS(G, v, z) setLabel(v, VISITED) S.push(v) for all e G.incidentEdges(v) ifgetLabel(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() • 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 19. Graphs
L0 A L1 B C D L2 E F Breadth-First Search 19. Graphs
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 19. Graphs
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 Breadth-First Search 19. Graphs