190 likes | 489 Views
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 objects (relationship = edge, object = node) Examples Physical Networks: Communication, Information, Transportation, Mazes
E N D
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 objects(relationship = edge, object = node) • Examples • Physical Networks: • Communication, Information, Transportation, Mazes • Social Networks: • Facebook, LinkedIn, Google+ • Dependency Networks: • Flow charts, State machines, Bayes Nets, Markov Random Fields, Regulatory Networks
Directed Graph • A directed graph, G = (V, E), is a data structure where: • V is a set of vertices (aka nodes) • E V Vis a set of edges • For any ei = (u, v) E “คู่อันดับ – ordered pairs” • u V is the source node • v V is the target node (aka destination node) • Note: In some graphs we allow self-edges • i.e., ei = (u, u) • We use directed edges to represent asymmetrical relationships • Examples: One-way streets, Causal relationship, Regulatory relationship, Web page links
Undirected Graph • An undirected graph, G = (V, E), is a data structure where: • V is a set of vertices (aka nodes) • E = { {u,v} | u, v V }is a set of edges • Here E is a set of คู่ไม่อันดับ – unordered pairs • We use undirected edges to represent symmetrical relationships • Examples: • Two-way streets • Network traffic • Mazes • Six degrees of separation (and Six degrees of Kevin Bacon)
Weighted Graph • An weighted graph, G = (V, E, W), is a data structure where: • V is a set of vertices (aka nodes) • E is a set of edges (directed or undirected) • W: E (i.e., a function from E to ) • Examples: Distances on a map
Properties of graphs • |V| = number of nodes • |E| = number of edges • If we allow self-edges • In a directed graph, |E| |V|2 • In an undirected graph, |E| |V|*(|V|-1)/2 + |V| • A sparse graph is one where |E| = O(|V|) or less • Most ‘real world’ graphs are sparse • Transportation networks, www, mazes, Facebook • A dense graph is one where |E| = O(|V|2) or more
Properties of graphs • The degree of a node is the number of edges coming in or out of that node • In undirected graphs • Degree(u) = | { v V : {u,v} E } | • Thus, Degree(u) is the number of “neighbors” of u • In directed graphs • In-degree(u) = | { v V : (v,u) E } | • Out-degree(u) = | { v V : (u,v) E } | • Degree(u) = In-degree(u) + Out-degree(u)
Representing Graphs • Directed, unweighted Adjacency matrix Adjacency List a b c d b source b c a d a b c d a target
Representing Graphs • Directed, weighted Adjacency matrix Adjacency List a b c d b,2 source c,3 a,-1 d,8 a b c d a,9 target
Representing Graphs • Undirected, unweighted Adjacency matrix Adjacency List a b c d source a b c d target
Representing Graphs • Undirected, weighted Adjacency matrix Adjacency List a b c d source a b c d target
Mini-Quiz • Undirected or Directed Graphs • Space Complexity • Adjacency Matrix Representation: O(?) • Adjacency List Representation: O(?) • Which is the better choice if the graph is sparse? • How expensive is it to check whether (u,v) E ? • Adjacency Matrix Representation: O(?) • Adjacency List Representation: O(?) • Undirected Graphs • How expensive is it to compute the degree of a node? • Adjacency Matrix Representation: O(?) • Adjacency List Representation: O(?)
Mini-Quiz • Directed Graphs • How expensive is it to compute the out-degree of a node? • Adjacency Matrix Representation: O(?) • Adjacency List Representation: O(?) • How expensive is it to compute the in-degree of a node? • Adjacency Matrix Representation: O(?) • Adjacency List Representation: O(?)
Paths and Cycles • Let G = (V,E) be a graph, a path is a sequence of m vertices v1, v2, v3, …, vm-1, vmsuch that (vi, vi+1) E for 1im-1 • v1 is the source vertex of the path • vm is the target vertex of the path • The length of the path is m-1 • A cycle is a path where v1 == vm
Simple Paths and Simple Cycles • A path is simple if there is at most one copy of each vertex in the path • What is the maximum length of a simple path in a graph with |V| nodes? • A cycle is simple if there is at most one copy of each vertex, except the source/target, in the cycle • What is the maximum length of a simple cycle in a graph with |V| nodes?
Reachability • One of the most common tasks for computing over graphs is to find the subset of nodes reachable from some particular node u • This is called “reachability problem” • Special case: determine whether there is a path from some particular node u to some particular node t • There are two fundamental algorithms for answering this question • Depth-first search (DFS) • Breadth-first search (BFS)
Depth-First Search (DFS) • DFS Algorithm on a node u, • Make sure to keep track of nodes that has been visited • For each edge (u, vi) • If vi has not yet been visited • Include vi to a list of nodes reachable from u • Recursively perform DFS on vi • Note: We have to keep track of visited nodes because there might be cycles in the graph
Breadth-First Search (BFS) • BFS Algorithm on a node u, • Make sure to keep track of nodes that has been visited • Initialization: • Enqueue u to a queue • Add u to a list of nodes reachable from u • While the queue isn’t empty • Dequeue node v from front of queue • For each edge (v,w) • If w hasn’t been visited • Enqueue w to a queue • Add w to a list of nodes reachable from u
Depth-First Search (BFS) … again • DFS Algorithm on a node u, • Make sure to keep track of nodes that has been visited • Initialization: • Push u to a stack • Add u to a list of nodes reachable from u • While the stack isn’t empty • Pop node v from the stack • For each edge (v,w) • If w hasn’t been visited • Push w to a stack • Add w to a list of nodes reachable from u
Analyzing BFS, DFS algorithms • What’s the total cost of a DFS/ BFS? • Hints • How many times do we process each node in a DFS/BFS? • How many times do we cross each edge in a DFS/BFS?