630 likes | 798 Views
Graphs. David Kauchak cs302 Spring 2013. Admin. HW 12 and 13 (and likely 14) You can submit revised solutions to any problem you missed Also submit your original homework I ’ ll give you up to half of the points taken off
E N D
Graphs David Kauchak cs302 Spring 2013
Admin • HW 12 and 13 (and likely 14) • You can submit revised solutions to any problem you missed • Also submit your original homework • I’ll give you up to half of the points taken off • Because I’ve given comments/feedback, make sure you explain why for simple questions (like run-time) • Also, I will expect your answers to be very clear and precise • HW 15 • more dynamic programming • will involve some programming (you may use any language installed on the lab machines) • may work with a partner: you and your partner must always be there when you’re working on the assignment
A B C E D F G Graphs What is a graph?
A B C E D F G Graphs A graph is a set of vertices V and a set of edges (u,v) E where u,v V
A B C E D F G Graphs How do graphs differ? What are graph characteristics we might care about?
A B C E D F G Different types of graphs Undirected – edges do not have a direction
A B C E D F G Different types of graphs Directed – edges do have a direction
A B C E D F G Different types of graphs Weighted – edges have an associated weight 8 7 7 2 1 20 2
A B C E D F G Different types of graphs Weighted – edges have an associated weight 8 7 7 2 1 20 2
A B C E D F G Terminology Path – A path is a list of vertices p1,p2,…pk where there exists an edge (pi,pi+1) E
A B C E D F G Terminology Path – A path is a list of vertices p1,p2,…pk where there exists an edge (pi,pi+1) E {A, B, D, E, F}
A B C E D F G Terminology Path – A path is a list of vertices p1,p2,…pk where there exists an edge (pi,pi+1) E {C, D}
A B C E D F G Terminology Path – A path is a list of vertices p1,p2,…pk where there exists an edge (pi,pi+1) E A simple path contains no repeated vertices (often this is implied)
Terminology A B C E D F G Cycle – A subset of the edges that form a path such that the first and last node are the same
Terminology A B C E D F G Cycle – A subset of the edges that form a path such that the first and last node are the same {A, B, D}
A B C E D F G Terminology Cycle – A subset of the edges that form a path such that the first and last node are the same not a cycle
A B C E D F G Terminology Cycle – A subset of the edges that form a path such that the first and last node are the same
A B C E D F G Terminology Cycle – A subset of the edges that form a path such that the first and last node are the same not a cycle
A B C E D F G Terminology Cycle – A path p1,p2,…pk where p1 = pk cycle
A B C E D F G Terminology Connected – every pair of vertices is connected by a path connected
A B C E D F G Terminology Connected (undirected graphs) – every pair of vertices is connected by a path not connected
A B C E D F G Terminology Strongly connected (directed graphs) – Every two vertices are reachable by a path not strongly connected
A B E D F G Terminology Strongly connected (directed graphs) – Every two vertices are reachable by a path not strongly connected
A B E D F G Terminology Strongly connected (directed graphs) – Every two vertices are reachable by a path strongly connected
A B C E D F G H Different types of graphs What is a tree (in our terminology)?
A B C E D F G H Different types of graphs Tree – connected, undirected graph without any cycles
A B C E D F G H Different types of graphs Tree – connected, undirected graph without any cycles need to specify root
A B C E D F G H Different types of graphs Tree – connected, undirected graph without any cycles
A B C E D F G H Different types of graphs DAG – directed, acyclic graph
A B C D F Different types of graphs Complete graph – an edge exists between every node
A B C E D F G Different types of graphs Bipartite graph – a graph where every vertex can be partitioned into two sets X and Y such that all edges connect a vertex u X and a vertex v Y
When do we see graphs in real life problems? • Transportation networks (flights, roads, etc.) • Communication networks • Web • Social networks • Circuit design • Bayesian networks
A B C E D Representing graphs Adjacency list – Each vertex u V contains an adjacency list of the set of vertices v such that there exists an edge (u,v) E A: B D B: A D C: D D: A B C E E: D
A B C E D Representing graphs Adjacency list – Each vertex u V contains an adjacency list of the set of vertices v such that there exists an edge (u,v) E A: B B: C: D D: A B E: D
A B C E D Representing graphs Adjacency matrix – A |V|x|V| matrix A such that: A B C D E A 0 1 0 1 0B 1 0 0 1 0C 0 0 0 1 0D 1 1 1 0 1E 0 0 0 1 0
A B C E D Representing graphs Adjacency matrix – A |V|x|V| matrix A such that: A B C D E A 0 1 0 1 0B 1 0 0 1 0C 0 0 0 1 0D 1 1 1 0 1E 0 0 0 1 0
A B C E D Representing graphs Adjacency matrix – A |V|x|V| matrix A such that: A B C D E A 0 1 0 1 0B1 0 0 1 0C 0 0 0 1 0D 1 1 1 0 1E 0 0 0 1 0
A B C E D Representing graphs Adjacency matrix – A |V|x|V| matrix A such that: A B C D E A 0 1 0 1 0B 1 0 0 1 0C 0 0 0 1 0D1 1 1 0 1E 0 0 0 1 0
A B C E D Representing graphs Adjacency matrix – A |V|x|V| matrix A such that: A B C D E A 0 1 0 1 0B 1 0 0 1 0C 0 0 0 1 0D 1 1 1 0 1E 0 0 0 1 0 Is it always symmetric?
A B C E D Representing graphs Adjacency matrix – A |V|x|V| matrix A such that: A B C D E A 0 1 0 0 0B 0 0 0 0 0C 0 0 0 1 0D 1 1 0 0 0E 0 0 0 1 0
Adjacency list vs.adjacency matrix Sparse graphs (e.g. web) Space efficient Must traverse the adjacency list to discover is an edge exists Adjacency list Adjacency matrix Dense graphs Constant time lookup to discover if an edge exists Simple to implement For non-weighted graphs, only requires boolean matrix Can we get the best of both worlds?
A B C E D Sparse adjacency matrix Rather than using an adjacency list, use an adjacency hashtable A: hashtable [B,D] B: hashtable [A,D] C: hashtable [D] D: hashtable [A,B,C,E] E: hashtable [D]
A B C E D Sparse adjacency matrix Constant time lookup Space efficient Not good for dense graphs, why? A: hashtable [B,D] B: hashtable [A,D] C: hashtable [D] D: hashtable [A,B,C,E] E: hashtable [D]
A B C E D Weighted graphs Adjacency list • store the weight as an additional field in the list A: B:8 D:3 8 3 13 2 10
A B C E D Weighted graphs Adjacency matrix A B C D E A 0 8 0 3 0B 8 0 0 2 0C 0 0 0 10 0D 3 2 10 0 13E 0 0 0 13 0 8 3 13 2 10
Graph algorithms/questions • Graph traversal (BFS, DFS) • Shortest path from a to b • unweighted • weighted positive weights • negative/positive weights • Minimum spanning trees • Are all nodes in the graph connected? • Is the graph bipartite? • hw16 and hw17
A B C E D F G Tree BFS Q:
A B C E D F G Tree BFS Q: A