CSE332: Data Abstractions Lecture 15: Introduction to Graphs Dan Grossman Spring 2010.

Slides:



Advertisements
Similar presentations
Cpt S 223 – Advanced Data Structures Graph Algorithms: Introduction
Advertisements

PSU CS Algorithms Analysis and Design Graphs.
CSE 373 Graphs 1: Concepts, Depth/Breadth-First Search
CS 206 Introduction to Computer Science II 03 / 27 / 2009 Instructor: Michael Eckmann.
Graph A graph, G = (V, E), is a data structure where: V is a set of vertices (aka nodes) E is a set of edges We use graphs to represent relationships among.
1 CSE 326: Data Structures: Graphs Lecture 19: Monday, Feb 24, 2003.
CS 206 Introduction to Computer Science II 11 / 11 / Veterans Day Instructor: Michael Eckmann.
CSE332: Data Abstractions Lecture 16: Topological Sort / Graph Traversals Tyler Robison Summer
CSE332: Data Abstractions Lecture 16: Topological Sort / Graph Traversals Dan Grossman Spring 2010.
Graph & BFS.
CSE 326: Data Structures Lecture #19 Graphs I Alon Halevy Spring Quarter 2001.
CSE 326 Graphs David Kaplan Dept of Computer Science & Engineering Autumn 2001.
Directed Graph Algorithms CSE 373 Data Structures Lecture 14.
Graphs.
Graphs. Graph definitions There are two kinds of graphs: directed graphs (sometimes called digraphs) and undirected graphs Birmingham Rugby London Cambridge.
Introduction to Graphs
Lecture 14: Graph Algorithms Shang-Hua Teng. Undirected Graphs A graph G = (V, E) –V: vertices –E : edges, unordered pairs of vertices from V  V –(u,v)
CSE 326: Data Structures Graphs Ben Lerner Summer 2007.
CS 206 Introduction to Computer Science II 11 / 03 / 2008 Instructor: Michael Eckmann.
CSE 326: Data Structures Lecture #17 Trees and DAGs and Graphs, Oh MY! Bart Niswonger Summer Quarter 2001.
CS 206 Introduction to Computer Science II 11 / 05 / 2008 Instructor: Michael Eckmann.
CS 206 Introduction to Computer Science II 03 / 25 / 2009 Instructor: Michael Eckmann.
CS 206 Introduction to Computer Science II 11 / 09 / 2009 Instructor: Michael Eckmann.
Review of Graphs A graph is composed of edges E and vertices V that link the nodes together. A graph G is often denoted G=(V,E) where V is the set of vertices.
Graph. Data Structures Linear data structures: –Array, linked list, stack, queue Non linear data structures: –Tree, binary tree, graph and digraph.
1 Graphs Algorithms Sections 9.1, 9.2, and Graphs v1v1 v2v2 v5v5 v7v7 v8v8 v3v3 v6v6 v4v4 A graph G = (V, E) –V: set of vertices (nodes) –E: set.
Chapter 9 – Graphs A graph G=(V,E) – vertices and edges
CS 3343: Analysis of Algorithms Lecture 21: Introduction to Graphs.
Computer Science 112 Fundamentals of Programming II Introduction to Graphs.
CSE332: Data Structures & Algorithms Lecture 13: Introduction to Graphs Dan Grossman Fall 2013.
GRAPHS CSE, POSTECH. Chapter 16 covers the following topics Graph terminology: vertex, edge, adjacent, incident, degree, cycle, path, connected component,
Introduction to Graphs. Introduction Graphs are a generalization of trees –Nodes or verticies –Edges or arcs Two kinds of graphs –Directed –Undirected.
Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Graphs.
CSE 332 Data Abstractions: Graphs and Graph Traversals Kate Deibel Summer 2012 July 23, 2012CSE 332 Data Abstractions, Summer
Graphs. 2 Graph definitions There are two kinds of graphs: directed graphs (sometimes called digraphs) and undirected graphs Birmingham Rugby London Cambridge.
CSE 326: Data Structures First Post-Schism Lecture Lecture #22 SteganoGRAPHy Steve Wolfman Winter Quarter 2000.
CPSC 320: Intermediate Algorithm Design & Analysis Greedy Algorithms and Graphs Steve Wolfman 1.
CSE 326: Data Structures Lecture #20 Graphs I.5 Alon Halevy Spring Quarter 2001.
CSE373: Data Structures & Algorithms Lecture 15: Introduction to Graphs Nicki Dell Spring 2014.
CSE332: Data Abstractions Lecture 15: Introduction to Graphs Tyler Robison 2010 Summer 1.
COSC 2007 Data Structures II Chapter 14 Graphs I.
Graphs A graphs is an abstract representation of a set of objects, called vertices or nodes, where some pairs of the objects are connected by links, called.
Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)
CSE 373: Data Structures & Algorithms Lecture 17: Topological Sort / Graph Traversals Linda Shapiro Winter 2015.
Data Structures & Algorithms Graphs Richard Newman based on book by R. Sedgewick and slides by S. Sahni.
Graphs 황승원 Fall 2010 CSE, POSTECH. 2 2 Graphs G = (V,E) V is the vertex set. Vertices are also called nodes and points. E is the edge set. Each edge connects.
DATA STRUCTURES AND ALGORITHMS Lecture Notes 10 Prepared by İnanç TAHRALI.
Graphs Upon completion you will be able to:
CSE332: Data Structures & Algorithms Lecture 14: Introduction to Graphs Aaron Bauer Winter 2014.
Introduction to Graph Theory By: Arun Kumar (Asst. Professor) (Asst. Professor)
Graphs. Graph Definitions A graph G is denoted by G = (V, E) where  V is the set of vertices or nodes of the graph  E is the set of edges or arcs connecting.
Graphs and Shortest Paths Using ADTs and generic programming.
CSE373: Data Structures & Algorithms Lecture 14: Topological Sort / Graph Traversals Dan Grossman Fall 2013.
Graphs David Kauchak cs302 Spring Admin HW 12 and 13 (and likely 14) You can submit revised solutions to any problem you missed Also submit your.
1 CSE 332: Graphs Richard Anderson Spring Announcements This week and next week – Graph Algorithms Reading, Monday and Wednesday, Weiss
CS 201: Design and Analysis of Algorithms
CSE 373 Topological Sort Graph Traversals
CSE332: Data Structures & Algorithms Introduction to Graphs
Instructor: Lilian de Greef Quarter: Summer 2017
CSE373: Data Structures & Algorithms Lecture 16: Introduction to Graphs Linda Shapiro Winter 2015.
CSE373: Data Structures & Algorithms Lecture 15: Introduction to Graphs Catie Baker Spring 2015.
CS 3343: Analysis of Algorithms
CSE373: Data Structures & Algorithms Lecture 16: Introduction to Graphs Linda Shapiro Spring 2016.
Paul Beame in lieu of Richard Anderson
Graphs All tree structures are hierarchical. This means that each node can only have one parent node. Trees can be used to store data which has a definite.
Directed Graph Algorithms
Directed Graph Algorithms
Based on slides of Dan Suciu
GRAPHS Lecture 17 CS2110 Spring 2018.
GRAPHS Lecture 17 CS 2110 — Spring 2019.
Presentation transcript:

CSE332: Data Abstractions Lecture 15: Introduction to Graphs Dan Grossman Spring 2010

Graphs A graph is a formalism for representing relationships among items –Very general definition because very general concept A graph is a pair G = (V,E) –A set of vertices, also known as nodes V = {v 1,v 2,…,v n } –A set of edges E = {e 1,e 2,…,e m } Each edge e i is a pair of vertices (v j,v k ) An edge “connects” the vertices Graphs can be directed or undirected Spring 20102CSE332: Data Abstractions Han Leia Luke V = {Han,Leia,Luke} E = {(Luke,Leia), (Han,Leia), (Leia,Han)}

An ADT? Can think of graphs as an ADT with operations like isEdge((v j,v k )) But what the “standard operations” are is unclear Instead we tend to develop algorithms over graphs and then use data structures that are efficient for those algorithms Many important problems can be solved by: 1.Formulating them in terms of graphs 2.Applying a standard graph algorithm To make the formulation easy and standard, we have a lot of standard terminology about graphs Spring 20103CSE332: Data Abstractions

Some graphs For each, what are the vertices and what are the edges? Web pages with links Facebook friends “Input data” for the Kevin Bacon game Methods in a program that call each other Road maps (e.g., Google maps) Airline routes Family trees Course pre-requisites … Wow: Using the same algorithms for problems for this very different data sounds like “core computer science and engineering” Spring 20104CSE332: Data Abstractions

Undirected Graphs In undirected graphs, edges have no specific direction –Edges are always “two-way” Spring 20105CSE332: Data Abstractions Thus, (u,v)  E implies (v,u)  E. –Only one of these edges needs to be in the set; the other is implicit Degree of a vertex: number of edges containing that vertex –Put another way: the number of adjacent vertices A B C D

Directed graphs In directed graphs (sometimes called digraphs), edges have a specific direction Spring 20106CSE332: Data Abstractions Thus, (u,v)  E does not imply (v,u)  E. Let (u,v)  E mean u → v and call u the source and v the destination In-Degree of a vertex: number of in-bound edges, i.e., edges where the vertex is the destination Out-Degree of a vertex: number of out-bound edges, i.e., edges where the vertex is the source or 2 edges here A B C D A B C

Self-edges, connectedness, etc. [Before you get the wrong idea, graphs are very flexible…] A self-edge a.k.a. a loop is an edge of the form (u,u) –Depending on the use/algorithm, a graph may have: No self edges Some self edges All self edges (in which case often implicit, but we will be explicit) A node can have a degree / in-degree / out-degree of zero A graph does not have to be connected –Even if every node has non-zero degree Spring 20107CSE332: Data Abstractions

More notation For a graph G=(V,E) : |V| is the number of vertices |E| is the number of edges –Minimum? –Maximum for undirected? –Maximum for directed? If (u,v)  E –Then v is a neighbor of u, i.e., v is adjacent to u –Order matters for directed edges Spring 20108CSE332: Data Abstractions A B C V = {A, B, C, D} E = {(C, B), (A, B), (B, A) (C, D)} D

More notation For a graph G=(V,E) : |V| is the number of vertices |E| is the number of edges –Minimum? 0 –Maximum for undirected? |V||V+1|/2  O(|V| 2 ) –Maximum for directed? |V| 2  O(|V| 2 ) (assuming self-edges allowed, else subtract |V| ) If (u,v)  E –Then v is a neighbor of u, i.e., v is adjacent to u –Order matters for directed edges Spring 20109CSE332: Data Abstractions A B C D

Examples again Which would use directed edges? Which would have self-edges? Which would be connected? Which could have 0-degree nodes? Web pages with links Facebook friends “Input data” for the Kevin Bacon game Methods in a program that call each other Road maps (e.g., Google maps) Airline routes Family trees Course pre-requisites … Spring CSE332: Data Abstractions

Weighted graphs In a weighed graph, each edge has a weight a.k.a. cost –Typically numeric (most examples will use ints) –Orthogonal to whether graph is directed –Some graphs allow negative weights; many don’t Spring CSE332: Data Abstractions Mukilteo Edmonds Seattle Bremerton Bainbridge Kingston Clinton

Examples What, if anything, might weights represent for each of these? Do negative weights make sense? Web pages with links Facebook friends “Input data” for the Kevin Bacon game Methods in a program that call each other Road maps (e.g., Google maps) Airline routes Family trees Course pre-requisites … Spring CSE332: Data Abstractions

Paths and Cycles A path is a list of vertices [v 0,v 1,…,v n ] such that (v i,v i+1 )  E for all 0  i < n. Say “a path from v 0 to v n ” A cycle is a path that begins and ends at the same node ( v 0 == v n ) Spring CSE332: Data Abstractions Seattle San Francisco Dallas Chicago Salt Lake City Example: [Seattle, Salt Lake City, Chicago, Dallas, San Francisco, Seattle]

Path Length and Cost Path length: Number of edges in a path Path cost: sum of the weights of each edge Example where P= [Seattle, Salt Lake City, Chicago, Dallas, San Francisco, Seattle] Spring CSE332: Data Abstractions Seattle San Francisco Dallas Chicago Salt Lake City length(P) = 5 cost(P) = 11.5

Simple paths and cycles A simple path repeats no vertices, except the first might be the last [Seattle, Salt Lake City, San Francisco, Dallas] [Seattle, Salt Lake City, San Francisco, Dallas, Seattle] Recall, a cycle is a path that ends where it begins [Seattle, Salt Lake City, San Francisco, Dallas, Seattle] [Seattle, Salt Lake City, Seattle, Dallas, Seattle] A simple cycle is a cycle and a simple path [Seattle, Salt Lake City, San Francisco, Dallas, Seattle] Spring CSE332: Data Abstractions

Paths/cycles in directed graphs Example: Is there a path from A to D? Does the graph contain any cycles? Spring CSE332: Data Abstractions A B C D

Paths/cycles in directed graphs Example: Is there a path from A to D? No Does the graph contain any cycles? No Spring CSE332: Data Abstractions A B C D

Undirected graph connectivity An undirected graph is connected if for all pairs of vertices u,v, there exists a path from u to v An undirected graph is complete, a.k.a. fully connected if for all pairs of vertices u,v, there exists an edge from u to v Spring CSE332: Data Abstractions Connected graphDisconnected graph

Directed graph connectivity A directed graph is strongly connected if there is a path from every vertex to every other vertex A directed graph is weakly connected if there is a path from every vertex to every other vertex ignoring direction of edges A complete a.k.a. fully connected directed graph has an edge from every vertex to every other vertex Spring CSE332: Data Abstractions

Examples For undirected graphs: connected? For directed graphs: strongly connected? weakly connected? Web pages with links Facebook friends “Input data” for the Kevin Bacon game Methods in a program that call each other Road maps (e.g., Google maps) Airline routes Family trees Course pre-requisites … Spring CSE332: Data Abstractions

Trees as graphs When talking about graphs, we say a tree is a graph that is: –undirected –acyclic –connected So all trees are graphs, but not all graphs are trees How does this relate to the trees we know and love?... Spring CSE332: Data Abstractions A B DE C F HG Example:

Rooted Trees We are more accustomed to rooted trees where: –We identify a unique (“special”) root –We think of edges are directed: parent to children Given a tree, once you pick a root, you have a unique rooted tree (just drawn differently and with undirected edges) Spring CSE332: Data Abstractions A B DE C F HG redrawn A B DE C F HG

Rooted Trees We are more accustomed to rooted trees where: –We identify a unique (“special”) root –We think of edges are directed: parent to children Given a tree, once you pick a root, you have a unique rooted tree (just drawn differently and with undirected edges) Spring CSE332: Data Abstractions A B DE C F HG redrawn F GHC A B DE

Directed acyclic graphs (DAGs) A DAG is a directed graph with no (directed) cycles –Every rooted directed tree is a DAG –But not every DAG is a rooted directed tree –Every DAG is a directed graph –But not every directed graph is a DAG Spring CSE332: Data Abstractions

Examples Which of our directed-graph examples do you expect to be a DAG? Web pages with links “Input data” for the Kevin Bacon game Methods in a program that call each other Airline routes Family trees Course pre-requisites … Spring CSE332: Data Abstractions

Density / sparsity Recall: In an undirected graph, 0 ≤ |E| < |V| 2 Recall: In a directed graph: 0 ≤ |E| ≤ |V| 2 So for any graph, O (|E|+|V| 2 ) is O (|V| 2 ) One more fact: If an undirected graph is connected, then |V|-1 ≤ |E| Because |E| is often much smaller than its maximum size, we do not always approximate as |E| as O (|V| 2 ) –This is a correct bound, it just is often not tight –If it is tight, i.e., |E| is  (|V| 2 ) we say the graph is dense More sloppily, dense means “lots of edges” –If |E| is O (|V|) we say the graph is sparse More sloppily, sparse means “most possible edges missing” Spring CSE332: Data Abstractions

What’s the data structure Okay, so graphs are really useful for lots of data and questions we might ask like “what’s the lowest-cost path from x to y” But we need a data structure that represents graphs The “best one” can depend on: –properties of the graph (e.g., dense versus sparse) –the common queries (e.g., is (u,v) an edge versus what are the neighbors of node u ) So we’ll discuss the two standard graph representations… –Different trade-offs, particularly time versus space Spring CSE332: Data Abstractions

Adjacency matrix Assign each node a number from 0 to |V|-1 A |V| x |V| matrix (i.e., 2-D array) of booleans (or 1 vs. 0) –If M is the matrix, then M[u][v] == true means there is an edge from u to v Spring CSE332: Data Abstractions ABC A B C D D A B C D T T TT FFF FFF F F FFFF

Adjacency matrix properties Running time to: –Get a vertex’s out-edges: O(|V|) –Get a vertex’s in-edges: O(|V|) –Decide if some edge exists: O(1) –Insert an edge: O(1) –Delete an edge: O(1) Space requirements: –|V| 2 bits If graph is weighted, put weights in matrix instead of booleans –If weight of 0 is not allowed, can use that for “not an edge” Best for dense graphs Spring CSE332: Data Abstractions ABC A B C D D T T TT FFF FFF F F FFFF

Adjacency List Assign each node a number from 0 to |V|-1 An array of length |V| in which each entry stores a list (e.g., linked list) of all adjacent vertices Spring CSE332: Data Abstractions A B C D A B C D B/ A/ DB/ /

Adjacency List Properties Spring CSE332: Data Abstractions Running time to: –Get all of a vertex’s out-edges: O(d) where d is out-degree of vertex –Get all of a vertex’s in-edges: O(|E|) (but could keep a second adjacency list for this!) –Decide if some edge exists: O(d) where d is out-degree of source –Insert an edge: O(1) –Delete an edge: O(d) where d is out-degree of source Space requirements: –O(|V|+|E|) Best for sparse graphs: so usually just stick with linked lists A B C D B/ A/ DB/ /

Undirected graphs Adjacency matrices & adjacency lists both do fine for undirected graphs Matrix: Can save 2x space if you want, but may slow down operations in languages with “proper” 2D arrays (not Java) –How would you “get all neighbors”? Lists: Each edge in two lists to support efficient “get all neighbors” Example: Spring CSE332: Data Abstractions A B C D ABC A B C D D T T TT FFF FTF F F FFTF F T T A B C D B/ A DB/ C/ C/

Next… Okay, we can represent graphs Now let’s implement some useful and non-trivial algorithms Topological sort: Given a DAG, order all the vertices so that every vertex comes before all of its neighbors Shortest paths: Find the shortest or lowest-cost path from x to y –Related: Determine if there even is such a path Spring CSE332: Data Abstractions