data structures in java
play

Data Structures in Java Lecture 16: Introduction to Graphs. - PowerPoint PPT Presentation

Data Structures in Java Lecture 16: Introduction to Graphs. 11/16/2015 Daniel Bauer 1 Graphs A Graph is a pair of two sets G=(V,E): V: the set of vertices (or nodes ) E: the set of edges . each edge is a pair (v,w) where v,w


  1. Data Structures in Java Lecture 16: Introduction to Graphs. 11/16/2015 Daniel Bauer 1

  2. Graphs • A Graph is a pair of two sets G=(V,E): • V: the set of vertices (or nodes ) • E: the set of edges . • each edge is a pair (v,w) where v,w ∈ V 
 2

  3. Graphs • A Graph is a pair of two sets G=(V,E): v 1 • V: the set of vertices (or nodes ) v 2 v 3 v 4 • E: the set of edges . • each edge is a pair (v,w) where v 5 v 6 v,w ∈ V 
 3

  4. Graphs • A Graph is a pair of two sets G=(V,E): v 1 • V: the set of vertices (or nodes ) v 2 v 3 v 4 • E: the set of edges . • each edge is a pair (v,w) where v 5 v 6 v,w ∈ V 
 4

  5. Graphs • A Graph is a pair of two sets G=(V,E): v 1 • V: the set of vertices (or nodes ) v 2 v 3 v 4 • E: the set of edges . • each edge is a pair (v,w) where v 5 v 6 v,w ∈ V 
 V = {v 1, v 2, v 3, v 4, v 5, v 6 } E = {(v 1, v 2 ), (v 1, v 3 ), (v 2, v 3 ),(v 2, v 5 ),(v 3, v 4 ), 
 (v 3, v 6 ),(v 4, v 5 ), (v 4, v 6 ), (v 5, v 6 )} 5

  6. Graphs in Computer Science • Graphs are used to model all kinds of relational data. • General purpose algorithms make it possible to solve problems on these models. • Shortest Paths, Spanning Tree, Finding Cliques, Strongly Connected Components, Network Flow, Graph Coloring, Minimum Edge/Vertex Cover, Graph Partitioning, … 6

  7. Social Networks 7

  8. Interaction Networks Extracted from Text http://www.cs.columbia.edu/~apoorv/SINNET/ 8

  9. Rail Network 9 Source: Days of WonderVideo Games

  10. US Power Grid 10

  11. Human Disease Network 11 Source: Goh et al, PNAS 2007

  12. Graph-Based Representation of Sentence Meaning “Pascale was charged with public intoxication and resisting arrest.” 12 Source: Kevin Knight

  13. Graphical Models bad rush hour accident weather traffic jam sirens 13

  14. Edges • Graphs may be directed or undirected . • In directed graphs, the edge pairs are ordered. • Edges often have some weight or cost associated with them ( weighted graphs). v 1 v 2 v 3 v 4 V = {v 1, v 2, v 3, v 4, v 5, v 6 } E = {(v 1, v 3 ), (v 2, v 1 ),(v 2, v 3 ), (v 3, v 4 ), 
 v 5 v 6 (v 3, v 5 ), (v 4, v 6 ), (v 5, v 6 )} directed graph 14

  15. Edges • Graphs may be directed or undirected . • In directed graphs, the edge pairs are ordered. • Edges often have some weight or cost associated with them ( weighted graphs). v 1 1 3 v 2 v 3 v 4 6 5 V = {v 1, v 2, v 3, v 4, v 5, v 6 } 2 1 E = {(v 1, v 3 ), (v 2, v 1 ),(v 2, v 3 ), (v 3, v 4 ), 
 v 5 v 6 3 (v 3, v 5 ), (v 4, v 6 ), (v 5, v 6 )} directed and weighted graph 15

  16. Paths • Vertex w is adjacent to vertex v iff (w,v) ∈ E. • A path is a sequence of vertices w 1 , w 2 , …, w k 
 such that (w i, w i+1 ) ∈ E. v 1 1 3 v 2 v 3 v 4 6 5 2 1 v 5 v 6 3 16

  17. Paths • Vertex w is adjacent to vertex v iff (w,v) ∈ E. • A path is a sequence of vertices w 1 , w 2 , …, w k 
 such that (w i, w i+1 ) ∈ E. • length of a path: 
 v 1 k-1 = number of edges on path 1 3 • cost of a path: 
 v 2 v 4 v 3 Sum of all edge costs. 
 6 5 2 1 v 5 v 6 3 Path from v 1 to v 6 , length 3, cost 8 (v 1 , v 3 ), (v 3 , v 5 ), (v 5 , v 6 ) 17

  18. Simple Paths v 1 v 2 v 3 v 4 v 5 v 6 18

  19. Simple Paths • A simple path is a path that contains every node only once (except possibly the first and last node). v 1 v 2 v 3 v 4 v 5 v 6 18

  20. Simple Paths • A simple path is a path that contains every node only once (except possibly the first and last node). v 1 v 2 v 3 v 4 • (v 2 , v 3 , v 4 , v 6 , v 5 ,v 3 , v 1 ) is a path 
 but not a simple path. v 5 v 6 18

  21. Simple Paths • A simple path is a path that contains every node only once (except possibly the first and last node). v 1 v 2 v 3 v 4 • (v 2 , v 3 , v 4 , v 6 , v 5 ,v 3 , v 1 ) is a path 
 but not a simple path. v 5 v 6 • There are only two simple paths between v 2 and v 1 : (v 2 , v 1 ) and (v 2 , v 3 , v 1 ) 18

  22. Simple Paths • A simple path is a path that contains every node only once (except possibly the first and last node). v 1 v 2 v 3 v 4 • (v 2 , v 3 , v 4 , v 6 , v 5 ,v 3 , v 1 ) is a path 
 but not a simple path. v 5 v 6 • There are only two simple paths between v 2 and v 1 : (v 2 , v 1 ) and (v 2 , v 3 , v 1 ) • (v 1 , v 3 , v 2 , v 1 ) is a simple path. 18

  23. Cycles in Directed Graphs • A cycle is a path (of length > 1) such that 
 v 1 w 1 = w k • (v 3 , v 4 , v 6 , v 3 ) is a cycle. v 2 v 3 v 4 v 5 v 6 19

  24. Cycles in Directed Graphs • A cycle is a path (of length > 1) such that 
 v 1 w 1 = w k • (v 3 , v 4 , v 6 , v 3 ) is a cycle. v 2 v 3 v 4 v 5 v 6 • A Directed Acyclic Graph (DAG) is a directed graph that contains no cycles. 20

  25. Cycles in Directed Graphs • A cycle is a path (of length > 1) such that 
 v 1 w 1 = w k • (v 3 , v 4 , v 6 , v 3 ) is a cycle. v 2 v 3 v 4 v 5 v 6 • A Directed Acyclic Graph (DAG) is a directed graph that contains no cycles. 20

  26. Columbia CS Course Prerequisites as a DAG W1004 W3134 W4115 W4156 W3261 W3203 W4111 W1007 W3137 W4701 W3157 Please do not use this figure for program planning! No guarantee for accuracy. 21

  27. Connectivity • An undirected graph is connected if there is a 
 path from every vertex to every other vertex. connected graph 22

  28. Connectivity • An undirected graph is connected if there is a 
 path from every vertex to every other vertex. unconnected graph 23

  29. Connectivity in Directed Graphs • A directed graph is weakly connected if there is an undirected path from every vertex to every other vertex. weakly connected graph 24

  30. Strongly Connected Graphs • A directed graph is strongly connected if there is a path from every vertex to every other vertex. v Weakly connected, but not strongly connected (no other vertex can be reached from v). 25

  31. Strongly Connected Graphs • A directed graph is strongly connected if there is a path from every vertex to every other vertex. strongly connected 26

  32. Complete Graphs • A complete graph has edges between every pair of vertices. N=2 27

  33. Complete Graphs • A complete graph has edges between every pair of vertices. N=3 28

  34. Complete Graphs • A complete graph has edges between every pair of vertices. N=4 29

  35. Complete Graphs • A complete graph has edges between every pair of vertices. N=5 How many edges are there in a complete graph of size N? 30

  36. Complete Graphs • A complete graph has edges between every pair of vertices. N=5 How many edges are there in a complete graph of size N? 30

  37. Representing Graphs • Represent graph G = (E,V), option 1: • N x N Adjacency Matrix represented as 2- dimensional Boolean[][] . • A[u][v] = true if (u,v) ∈ E, else false v 0 0 1 2 3 4 5 0 f f t f f f 1 t f t f f f v 1 v 2 v 3 2 f f f t t f 3 f f f f f t v 4 v 5 4 f f f f f t 5 f f f f f f 31

  38. Representing Graphs • Represent graph G = (E,V), option 1: • N x N Adjacency Matrix represented as 2- dimensional Integer[][] . • A[u][v] = cost(u,v) if (u,v) ∈ E, else ∞ v 0 0 1 2 3 4 5 1 0 2 ∞ ∞ 2 ∞ ∞ ∞ 1 1 ∞ 3 ∞ ∞ ∞ v 1 v 2 v 3 3 5 2 ∞ ∞ ∞ 5 4 ∞ 4 3 3 ∞ ∞ ∞ ∞ ∞ 3 v 4 v 5 4 ∞ ∞ ∞ ∞ ∞ 4 4 5 ∞ ∞ ∞ ∞ ∞ ∞ 32

  39. Representing Graphs • Problem of Adjacency Matrix representation: • For sparse graphs (that contain much less than 
 |V| 2 edges), a lot of array space is wasted. v 0 0 1 2 3 4 5 1 0 2 ∞ ∞ 2 ∞ ∞ ∞ 1 1 ∞ 3 ∞ ∞ ∞ v 1 v 2 v 3 3 5 2 ∞ ∞ ∞ 5 4 ∞ 4 3 3 ∞ ∞ ∞ ∞ ∞ 3 v 4 v 5 4 ∞ ∞ ∞ ∞ ∞ 4 4 5 ∞ ∞ ∞ ∞ ∞ ∞ 33

  40. Representing Graphs • Problem of Adjacency Matrix representation: Space requirement: • For sparse graphs (that contain much less than 
 |V| 2 edges), a lot of array space is wasted. v 0 0 1 2 3 4 5 1 0 2 ∞ ∞ 2 ∞ ∞ ∞ 1 1 ∞ 3 ∞ ∞ ∞ v 1 v 2 v 3 3 5 2 ∞ ∞ ∞ 5 4 ∞ 4 3 3 ∞ ∞ ∞ ∞ ∞ 3 v 4 v 5 4 ∞ ∞ ∞ ∞ ∞ 4 4 5 ∞ ∞ ∞ ∞ ∞ ∞ 33

  41. Representing Graphs • Represent graph G = (E,V), option 2: Adjacency Lists • For each vertex, keep a list of all adjacent vertices. v 2 :2 v 0 v 0 v 1 v 0 :1 v 2 :3 1 2 v 2 v 3 :3 v 4 :4 v 1 v 2 v 3 3 5 v 3 v 5 :3 4 3 v 5 :4 v 4 v 4 v 5 4 v 5 34

  42. Representing Graphs • Represent graph G = (E,V), option 2: Adjacency Lists • For each vertex, keep a list of all adjacent vertices. v 2 :2 v 0 v 0 v 1 v 0 :1 v 2 :3 1 2 v 2 v 3 :3 v 4 :4 v 1 v 2 v 3 3 5 v 3 v 5 :3 4 3 v 5 :4 v 4 v 4 v 5 4 v 5 Space requirement: 34

  43. Storing Adjacency Lists • If we construct a graph (or read it in from some specification), a LinkedList is better than an ArrayList because we don’t know how many adjacent vertices there are for each vertex. • Create an instance of a Vertex class for each vertex and keep adjacency list in this object. • Can also keep an index to quickly access vertices by name. http://www.cs.columbia.edu/~bauer/cs3134/code/week11/BasicGraph.java 35

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend