CompSci 201 Graphs
220 likes | 241 Vues
Learn about the structure and terminology of graphs, graph traversals using DFS and BFS, and applications such as modeling connections in the Hollywood Universe. Code examples included.
CompSci 201 Graphs
E N D
Presentation Transcript
CompSci 201Graphs Owen Astrachan Jeff Forbes December 6, 2018 CompSci 201, Fall 2017, Graphs
Y is for … • Y2K • Bits are cheap? • Yahoo! • The importance of browsing • YAML, YACC • Yet another • Yao’s minimax principle • Randomized algorithms & their limits CompSci 201, Fall 2017, Huff and More
PFTD • Graphs • Structure and terminology • Traversing via DFS & BFS • Oracle of Bacon • Modeling connections in the Hollywood Universe • Code https://coursework.cs.duke.edu/201fall17/classwork-graphs CompSci 201, Fall 2017, Graphs
Recall FriendScore http://www.cs.duke.edu/csed/newapt/friendscore.html • Person A is a 2-friend of Person B iff • A is friends with B or • Person C is a friend of both A and B
Friends in Common? • Triadic closure • If two people in a social network have a friend in common, then there is an increased likelihood that they will be come friends themselves at some point in the future. – [Rapaport, 1953) • Why? • Opportunity • Trust • Incentive
Friends in Common? • Triadic closure
Graph problems • Word Ladders • How many ladders from cart to dire as shown? • Oracle of Bacon • How many 2-friends (i.e. friend of a friend) does Kevin Bacon have? • What is J’s Bacon Number? care dare dire cart tart dart dirt
NYC Phil LAX LGA ORD Boston Wash DC DCA Vocabulary 78 • Graphs are collections of vertices and edges (vertex also called node) • Edge connects two vertices • Direction can be important, directed edge, directed graph • Edge may have associated weight/cost • A vertex sequence v0, v1, …, vn-1 is a path where vk and vk+1 are connected by an edge. • If some vertex is repeated, the path is a cycle • A graph is connected if there is a path between any pair of vertices • What vertices are reachable from a given vertex? • Traverse the graph… 268 204 190 394 $441 $186 $412 $1701 $186
Traversals • What vertices are reachable from a given vertex? • Connected components? • Degree: # edges incident a vertex • Starting at Bacon where can we get? • Random search, choose a neighboring vertex at random • Can we move in circles? • Depth-first search, envision each vertex as a room, with doors leading out • Go into a room, mark the room, choose an unused door, exit • Don’t go into a room you’ve already been in (see mark) • Backtrack if all doors used (to room with unused door) • Used in Percolation assignment • Rooms are stacked up, backtracking is really recursion • One alternative uses a queue: breadth-first search
Depth-first search on Graphs public Set<Graph.Vertex> dfs(Graph.Vertex start){ Set<Graph.Vertex> visited = new TreeSet<Graph.Vertex>(); Stack<Graph.Vertex> qu = new Stack<Graph.Vertex>(); visited.add(start); qu.push(start); while (qu.size() > 0){ Graph.Vertex v = qu.pop(); for(Graph.Vertexadj : myGraph.getAdjacent(v)){ if (! visited.contains(adj)) { visited.add(adj); qu.push(adj); } } } return visited; }
BFS compared to DFS public Set<Graph.Vertex> bfs(Graph.Vertex start){ Set<Graph.Vertex> visited = new TreeSet<Graph.Vertex>(); Queue<Graph.Vertex> qu = new LinkedList<Graph.Vertex>(); visited.add(start); qu.add(start); while (qu.size() > 0){ Graph.Vertex v = qu.remove(); for(Graph.Vertexadj : myGraph.getAdjacent(v)){ if (! visited.contains(adj)) { visited.add(adj); qu.add(adj); } } } return visited; } WOTO:http://bit.ly/201-f17-1206-graph
Graph implementations: Adjacency list • Typical operations on graph: • Add vertex • Add edge (parameters?) • getAdjacent(vertex) • getVertices(..) • String->Vertex (vice versa) • Different kinds of graphs • Lots of vertices, few edges, sparse graph • Use adjacency list • Lots of edges (max # ?) dense graph • Use adjacency matrix Adjacency list
Graph implementations:Adjacency matrix • Adjacency matrix • Every possible edge represented, how many? • Adjacency list uses O(V+E) space • What about matrix? • Which is better? • What do we do to get adjacent vertices for given vertex? • What is complexity? • Compared to adjacency list? • What about weighted edges? … T F Adjacency matrix
Six Degrees of Bacon • Background • Stanley Milgram’s Six Degrees of Separation? • Craig Fass, Mike Ginelli, and Brian Turtle invented a as a drinking game at Albright College • Brett Tjaden, Glenn Wasson, Patrick Reynolds have run online website from UVa and beyond • Instance of Small-World phenomenon • http://oracleofbacon.org handles 2 kinds of requests • Find the links from Actor A to Actor B. • How good a centeris a given actor? • How does it answer these requests?
BN = 1 Sean Penn Tim Robbins Mystic River Tom Hanks Apollo 13 Bill Paxton Footloose Sarah Jessica Parker John Lithgow How does the Oracle work? • Not using Oracle™ • Queries require traversal of the graph BN = 0 Kevin Bacon
How does the Oracle Work? • BN = Bacon Number • Queries require traversal of the graph BN = 2 Woody Allen Sweet and Lowdown Judge Reinhold BN = 1 Fast Times at Ridgemont High Sean Penn Miranda Otto War of the Worlds Tim Robbins Mystic River Morgan Freeman The Shawshank Redemption BN = 0 Tom Hanks Cast Away Kevin Bacon Apollo 13 Helen Hunt Bill Paxton Forrest Gump Footloose Sarah Jessica Parker Sally Field Tombstone John Lithgow Val Kilmer A Simple Plan Billy Bob Thornton
How does the Oracle work? • How do we choose which movie or actor to explore next? • Queries require traversal of the graph BN = 2 Woody Allen Sweet and Lowdown Judge Reinhold BN = 1 Fast Times at Ridgemont High Sean Penn Miranda Otto War of the Worlds Tim Robbins Mystic River Morgan Freeman The Shawshank Redemption BN = 0 Tom Hanks Cast Away Kevin Bacon Apollo 13 Helen Hunt Bill Paxton Forrest Gump Footloose Sarah Jessica Parker Sally Field Tombstone John Lithgow Val Kilmer A Simple Plan Billy Bob Thornton
Data Representation • IMDB via the Sedgewick and Wayne book site • Movie title, followed by a list of actors and actresses that appeared in that movie, delimited by /. Movie 0/Bacon, Kevin/A Movie 1/A/B/C Movie 2/D/E/A/B Movie 3/E/F/G Movie 4/F/G/H Movie 5/H/I/J/K Movie 6/J/L/M/N Movie 7/A/B/C/D • Who has the highest bacon degree? CompSci 201, Fall 2017, Graphs
Actor-Actor Representation • Vertices: Actors or actresses • Edges: Two actors are adjacentif and only if they appeared in the same movie Movie 0/Bacon, Kevin/A Movie 1/A/B/C Movie 2/D/E/A/B Movie 3/E/F/G Movie 4/F/G/H Movie 5/H/I/J/K Movie 6/J/L/M/N Movie 7/A/B/C/D CompSci 201, Fall 2017, Graphs
Movie-Movie Representation • Vertices:Movies • Edges: Two movies are adjacent iffthey share a cast member CompSci 201, Fall 2017, Graphs
Actor-Movie Representation • Vertices:Actors, actresses, and movies • Edges: An Actor is connected to a Movie iffhe or she appeared in that movie CompSci 201, Fall 2017, Graphs
Bacon Questions • Compare and contrast representations for the problem: • Actor-Actor • Movie-Movie • Actor-Movie • Which graph will be have the most vertices or edges? • Which one will be easiest to implement? WOTO:http://bit.ly/201-f17-1206-bacon CompSci 201, Fall 2017, Graphs