Programming Abstractions Cynthia Lee CS106X. Upcoming Topics Graphs! 1.Basics  What are they? How do we represent them? 2.Theorems  What are some things.

Slides:



Advertisements
Similar presentations
CS16: Introduction to Data Structures & Algorithms
Advertisements

Introduction to Graph Theory Instructor: Dr. Chaudhary Department of Computer Science Millersville University Reading Assignment Chapter 1.
Introduction to Graphs
IKI 10100: Data Structures & Algorithms Ruli Manurung (acknowledgments to Denny & Ade Azurat) 1 Fasilkom UI Ruli Manurung (Fasilkom UI)IKI10100: Lecture10.
CSE 373 Graphs 1: Concepts, Depth/Breadth-First Search
CS 206 Introduction to Computer Science II 03 / 27 / 2009 Instructor: Michael Eckmann.
Chapter 8, Part I Graph Algorithms.
CS 206 Introduction to Computer Science II 11 / 07 / 2008 Instructor: Michael Eckmann.
Data Structure and Algorithms (BCS 1223) GRAPH. Introduction of Graph A graph G consists of two things: 1.A set V of elements called nodes(or points or.
CS 206 Introduction to Computer Science II 11 / 11 / Veterans Day Instructor: Michael Eckmann.
Graph & BFS.
Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Graphs.
Graph COMP171 Fall Graph / Slide 2 Graphs * Extremely useful tool in modeling problems * Consist of: n Vertices n Edges D E A C F B Vertex Edge.
Graphs. Graph definitions There are two kinds of graphs: directed graphs (sometimes called digraphs) and undirected graphs Birmingham Rugby London Cambridge.
Graph & BFS Lecture 22 COMP171 Fall Graph & BFS / Slide 2 Graphs * Extremely useful tool in modeling problems * Consist of: n Vertices n Edges D.
1 Graphs ORD DFW SFO LAX Many slides taken from Goodrich, Tamassia 2004.
CS 206 Introduction to Computer Science II 11 / 05 / 2008 Instructor: Michael Eckmann.
CS 206 Introduction to Computer Science II 03 / 30 / 2009 Instructor: Michael Eckmann.
CISC220 Fall 2009 James Atlas Nov 13: Graphs, Line Intersections.
ECE669 L10: Graph Applications March 2, 2004 ECE 669 Parallel Computer Architecture Lecture 10 Graph Applications.
Lecture20: Graph IV Bohyung Han CSE, POSTECH CSED233: Data Structures (2014F)
Graphs – Shortest Path (Weighted Graph) ORD DFW SFO LAX
GRAPH Learning Outcomes Students should be able to:
Chapter 9 – Graphs A graph G=(V,E) – vertices and edges
Chapter 2 Graph Algorithms.
Graph Theory Topics to be covered:
© 2006 Pearson Addison-Wesley. All rights reserved14 A-1 Chapter 14 Graphs.
CSE 20 – Discrete Mathematics Dr. Cynthia Bailey Lee Dr. Shachar Lovett Peer Instruction in Discrete Mathematics by Cynthia Leeis licensed under a Creative.
CS106X – Programming Abstractions in C++ Cynthia Bailey Lee BFS animation slides by Keith Schwarz CS2 in C++ Peer Instruction Materials by Cynthia Bailey.
CSE 20: Discrete Mathematics for Computer Science Prof. Shachar Lovett.
1 Spanning Trees Longin Jan Latecki Temple University based on slides by David Matuszek, UPenn, Rose Hoberman, CMU, Bing Liu, U. of Illinois, Boting Yang,
Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Graphs.
Graphs CSE 2011 Winter June Graphs A graph is a pair (V, E), where  V is a set of nodes, called vertices  E is a collection of pairs.
Spring 2007Graphs1 ORD DFW SFO LAX
Graphs. Definitions A graph is two sets. A graph is two sets. –A set of nodes or vertices V –A set of edges E Edges connect nodes. Edges connect nodes.
10 Copyright © William C. Cheng Data Structures - CSCI 102 Graph Terminology A graph consists of a set of Vertices and a set of Edges C A B D a c b d e.
COSC 2007 Data Structures II Chapter 14 Graphs I.
CS106X – Programming Abstractions in C++ Cynthia Bailey Lee Dijkstra’s animation slides by Keith Schwarz CS2 in C++ Peer Instruction Materials by Cynthia.
CSE 373: Data Structures and Algorithms
Graphs. Graphs Similar to the graphs you’ve known since the 5 th grade: line graphs, bar graphs, etc., but more general. Those mathematical graphs are.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Chapter 13: Graphs Data Abstraction & Problem Solving with C++
Graphs Upon completion you will be able to:
Discrete Maths 11. Graph Theory Objective
Chapter 05 Introduction to Graph And Search Algorithms.
CHAPTER 13 GRAPH ALGORITHMS ACKNOWLEDGEMENT: THESE SLIDES ARE ADAPTED FROM SLIDES PROVIDED WITH DATA STRUCTURES AND ALGORITHMS IN C++, GOODRICH, TAMASSIA.
1 GRAPH Learning Outcomes Students should be able to: Explain basic terminology of a graph Identify Euler and Hamiltonian cycle Represent graphs using.
Programming Abstractions Cynthia Lee CS106B. Upcoming Topics Graphs! 1.Basics  What are they? How do we represent them? 2.Theorems  What are some things.
Graphs ORD SFO LAX DFW Graphs 1 Graphs Graphs
Graphs 10/24/2017 6:47 AM Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and.
Graphs.
Graphs Lecture 19 CS2110 – Spring 2013.
Programming Abstractions
Graphs 7/18/2018 7:39 AM Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and.
Graphs ORD SFO LAX DFW Graphs Graphs
CSE 20: Discrete Mathematics for Computer Science Prof. Shachar Lovett
I206: Lecture 15: Graphs Marti Hearst Spring 2012.
Programming Abstractions
CMSC 341 Lecture 21 Graphs (Introduction)
Discrete Maths 9. Graphs Objective
Graphs.
Graphs Chapter 13.
Graphs CSE 2011 Winter November 2018.
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.
Graphs Chapter 11 Objectives Upon completion you will be able to:
CSE 373: Data Structures and Algorithms
Graph Theory By Amy C. and John M..
Graphs ORD SFO LAX DFW Graphs Graphs
Graphs 4/29/15 01:28:20 PM Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia,
CSE 373 Data Structures and Algorithms
INTRODUCTION A graph G=(V,E) consists of a finite non empty set of vertices V , and a finite set of edges E which connect pairs of vertices .
Presentation transcript:

Programming Abstractions Cynthia Lee CS106X

Upcoming Topics Graphs! 1.Basics  What are they? How do we represent them? 2.Theorems  What are some things we can prove about graphs? 3.Breadth-first search on a graph  Spoiler: just a very, very small change to tree version 4.Dijkstra’s shortest paths algorithm  Spoiler: just a very, very small change to BFS 5.A* shortest pathsalgorithm  Spoiler: just a very, very small change to Dijkstra’s 6.Minimum Spanning Tree  Kruskal’s algorithm

Graphs What are graphs? What are they good for?

Graph This file is licensed under the Creative Commons Attribution 3.0 Unported license. Jfd34 CommonsAttribution 3.0 UnportedJfd34http://commons.wikimedia.org/wiki/File:Ryan_ten_Doeschate_ODI_batting_graph.svg

A Social Network Slide by Keith Schwarz

Chemical Bonds Slide by Keith Schwarz

Slide by Keith Schwarz

Internet 8 This file is licensed under the Creative Commons Attribution 2.5 Generic license. The Opte Project CommonsAttribution 2.5 GenericThe Opte Projecthttp://commons.wikimedia.org/wiki/File:Internet_map_1024.jpg

A graph is a mathematical structure for representing relationships Consists of:  A set V of vertices (or nodes) › Often have an associated label  A set E of edges (or arcs) › Consist of two endpoint vertices › Often have an associated cost or weight  A graph may be directed (an edge from A to B only allow you to go from A to B, not B to A) or undirected (an edge between A and B allows travel in both directions)  We talk about the number of vertices or edges as the size of the set, using the notation |V| and |E|

Boggle as a graph Vertex = letter cube; Edge = connection to neighboring cube

Maze as graph If a maze is a graph, what is a vertex and what is an edge?

Graphs How do we represent graphs in code?

Diagram shows a graph with four vertices: Apple (outgoing edges to banana and blum) Banana (with outgoing edge to self) Pear (with outgoing edges to banana and plum) Plum (with outgoing edge to banana) Graph terminology This is a DIRECTED graph This is an UNDIRECTED graph

Diagrams each show a graph with four vertices: Apple, Banana, Pear, Plum. Each answer choice has different edge sets. A: no edges B: Apple to Plum directed, Apple to banana undirected C: Apple and Banana point to each other. Two edges point from Plum to Pear Graph terminology Which of the following is a correct graph? A.B.C. D. None of the above/other/more than one of the above

Paths path: A path from vertex a to b is a sequence of edges that can be followed starting from a to reach b.  can be represented as vertices visited, or edges taken  example, one path from V to Z: {b, h} or {V, X, Z}  What are two paths from U to Y? path length: Number of vertices or edges contained in the path. neighbor or adjacent: Two vertices connected directly by an edge.  example: V and X XU V W Z Y a c b e d f g h

Reachability, connectedness reachable: Vertex a is reachable from b if a path exists from a to b. connected: A graph is connected if every vertex is reachable from every other. complete: If every vertex has a direct edge to every other. XU V W Z Y a c b e d f g h a c b d a c b d e

Loops and cycles cycle: A path that begins and ends at the same node.  example: {V, X, Y, W, U, V}.  example: {U, W, V, U}.  acyclic graph: One that does not contain any cycles. loop: An edge directly from a node to itself.  Many graphs don't allow loops. XU V W Z Y a c b e d f g h

Weighted graphs weight: Cost associated with a given edge.  Some graphs have weighted edges, and some are unweighted.  Edges in an unweighted graph can be thought of as having equal weight (e.g. all 0, or all 1, etc.)  Most graphs do not allow negative weights. example: graph of airline flights, weighted by miles between cities: ORD PVD MIA DFW SFO LAX LGA HNL

Representing Graphs: Adjacency Matrix We can represent a graph as a Grid (unweighted) or Grid (weighted) We can represent a graph as a Grid (unweighted) or Grid (weighted)

Representing Graphs: adjacency list NodeConnected To Map > We can represent a graph as a map from nodes to the set of nodes each node is connected to. Slide by Keith Schwarz

Common ways of representing graphs Adjacency list:  Map > Adjacency matrix:  Grid unweighted  Grid weighted How many of the following are true?  Adjacency list can be used for directed graphs  Adjacency list can be used for undirected graphs  Adjacency matrix can be used for directed graphs  Adjacency matrix can be used for undirected graphs (A) 0 (B) 1 (C) 2 (D) 3 (E) 4

Graphs Theorems about graphs

Graphs lend themselves to fun theorems and proofs of said theorems! Any graph with 6 vertices contains either a triangle (3 vertices with all pairs having an edge) or an empty triangle (3 vertices no two pairs having an edge)

Diagram shows a graph with four vertices, which are all fully connected with each other by undirected edges (6 edges in total). Eulerian graphs Let G be an undirected graph A graph is Eulerian if it can drawn without lifting the pen and without repeating edges Is this graph Eulerian?  Yes  No

Diagram shows a graph with five vertices, four of which are all fully connected with each other by undirected edges (6 edges in total). The 5 th vertex is connected to two of the remaining four vertices by an edge. (6 + 2 = 8 edges in total) Eulerian graphs Let G be an undirected graph A graph is Eulerian if it can drawn without lifting the pen and without repeating edges What about this graph  Yes  No

Our second graph theorem Definition: Degree of a vertex: number of edges adjacent to it Euler’s theorem: a connected graph is Eulerian iff the number of vertices with odd degrees is either 0 or 2 (eg all vertices or all but two have even degrees) Does it work for and ?

Breadth-First Search Graph algorithms

Breadth-First Search AB EF CD GH IJ L K BFS is useful for finding the shortest path between two nodes. Example: What is the shortest way to go from F to G?

Breadth-First Search AB EF CD GH IJ L K BFS is useful for finding the shortest path between two nodes. Example: What is the shortest way to go from F to G? Way 1: F->E->I->G 3 edges

Breadth-First Search AB EF CD GH IJ L K BFS is useful for finding the shortest path between two nodes. Example: What is the shortest way to go from F to G? Way 2: F->K->G 2 edges

BFS is useful for finding the shortest path between two nodes. Map Example: What is the shortest way to go from Yoesmite (F) to Palo Alto (J)?

AB EF CD GH IJ L K AB EF CD GH IJ L K Breadth-First Search TO START: (1)Color all nodes GREY (2)Queue is empty Yoesmite Palo Alto

F AB EF CD GH IJ L K AB E CD GH IJ L K Breadth-First Search F TO START (2): (1)Enqueue the desired start node YELLOW (2)Note that anytime we enqueue a node, we mark it YELLOW

F AB EF CD GH IJ L K AB E CD GH IJ L K Breadth-First Search F LOOP PROCEDURE: (1)Dequeue a node GREEN (2)Mark current node GREEN YELLOW (3)Set current node’s GREY neighbors’ parent pointers to current node, then enqueue them (remember: set them YELLOW)

F AB EF CD GH IJ L K AB E CD GH IJ L K Breadth-First Search F

AB E D K F AB EF CD GH IJ L K C GH IJ L F

AB E D K F AB EF CD GH IJ L K C GH IJ L ABDEK F

AB E D K F AB EF CD GH IJ L K C GH IJ L BDEK A

AB E D K F AB EF CD GH IJ L K C GH IJ L BDEK A

AB E D K F AB EF CD GH IJ L K C GH IJ L BDEK A

AB E D K F AB EF CD GH IJ L K C GH IJ L DEK B

AB E D K F AB EF CD GH IJ L K C GH IJ L DEK B

H CAB E D K F AB EF CD GH IJ L K G IJ L DEK B CH

H CAB E D K F AB EF CD GH IJ L K G IJ L EKCH D

H CAB E D K F AB EF CD GH IJ L K G IJ L EKCH D

H CAB E D K F AB EF CD GH IJ L K G IJ L EKCH D

H CAB E D K F AB EF CD GH IJ L K G IJ L KCH E

H CAB E D K F AB EF CD GH IJ L K G IJ L KCH E

I H CAB E D K F AB EF CD GH IJ L K G J L KCH E I

I H CAB E D K F AB EF CD GH IJ L K G J L CHI K

I H CAB E D K F AB EF CD GH IJ L K G J L CHI K

I H CAB E D K F AB EF CD GH IJ L K G J L CHI K You predict the next slide! A.K’s neighbors F,G,H are yellow and in the queue and their parents are pointing to K B.K’s neighbors G,H are yellow and in the queue and their parents are pointing to K C.K’s neighbors G,H are yellow and in the queue D.Other/none/more

G I H CAB E D K F AB EF CD GH IJ L K J L Breadth-First Search CHI K G

G I H CAB E D K F AB EF CD GH IJ L K J L CHI K G

G I H CAB E D K F AB EF CD GH IJ L K J L HIG C

G I H CAB E D K F AB EF CD GH IJ L K J L HIG C

G I H CAB E D K F AB EF CD GH IJ L K J L IG H

G I H CAB E D K F AB EF CD GH IJ L K J L IG H

G I H CAB E D K F AB EF CD GH IJ L K J L IG

G I H CAB E D K F AB EF CD GH IJ L K J L G I

G I H CAB E D K F AB EF CD GH IJ L K J L G I

L G I H CAB E D K F AB EF CD GH IJ L K J G I L

L G I H CAB E D K F AB EF CD GH IJ L K J L G

L G I H CAB E D K F AB EF CD GH IJ L K J L G

L G I H CAB E D K F AB EF CD GH IJ L K J L

L G I H CAB E D K F AB EF CD GH IJ L K J L

J L G I H CAB E D K F AB EF CD GH IJ L K L J

J L G I H CAB E D K F AB EF CD GH IJ L K J

J L G I H CAB E D K F AB EF CD GH IJ L K J

J L G I H CAB E D K F AB EF CD GH IJ L K J Done! Now we know that to go from Yoesmite (F) to Palo Alto (J), we should go: F->E->I->L->J (4 edges) (note we follow the parent pointers backwards)

J L G I H CAB E D K F AB EF CD GH IJ L K Breadth-First Search THINGS TO NOTICE: (1) We used a queue (2) What’s left is a kind of subset of the edges, in the form of ‘parent’ pointers (3) If you follow the parent pointers from the desired end point, you will get back to the start point, and it will be the shortest way to do that

Quick question about efficiency… Let’s say that you have an extended family with somebody in every city in the western U.S.

Quick question about efficiency… You’re all going to fly to Yosemite for a family reunion, and then everyone will rent a car and drive home, and you’ve been tasked with making custom Yosemite-to-home driving directions for everyone.

Quick question about efficiency… You calculated the shortest path for yourself to return home from the reunion (Yosemite to Palo Alto) and let’s just say that it took time X = O((|E| + |V|)log|V|) With respect to the number of cities |V|, and the number of edges or road segments |E| How long will it take you, in total, to calculate the shortest path for you and all of your relatives? A.O(|V|*X) B.O(|E|*|V|* X) C.X D.Other/none/more

J L G I H CAB E D K F AB EF CD GH IJ L K Breadth-First Search THINGS TO NOTICE: (4) We now have the answer to the question “What is the shortest path to you from F?” for every single node in the graph!!