Announcements Problem Set 4 is out!

Similar documents
CSC263 Week 8. Larry Zhang.

Announcements. HW3 is graded. Average is 81%

Graphs. Graph G = (V, E) Types of graphs E = O( V 2 ) V = set of vertices E = set of edges (V V)

COT 6405 Introduction to Theory of Algorithms

Outlines: Graphs Part-2

Graph Theory. Many problems are mapped to graphs. Problems. traffic VLSI circuits social network communication networks web pages relationship

Graphs & Digraphs Tuesday, November 06, 2007

Elementary Graph Algorithms

Computer Science & Engineering 423/823 Design and Analysis of Algorithms

Basic Graph Algorithms (CLRS B.4-B.5, )

Graph Algorithms. Definition

Graph Search. Adnan Aziz

CS 220: Discrete Structures and their Applications. graphs zybooks chapter 10

22.1 Representations of graphs

Graph Representation

Design and Analysis of Algorithms

Computer Science & Engineering 423/823 Design and Analysis of Algorithms

CS Elementary Graph Algorithms

CS Elementary Graph Algorithms

Scribes: Romil Verma, Juliana Cook (2015), Virginia Williams, Date: May 1, 2017 and Seth Hildick-Smith (2016), G. Valiant (2017), M.

Graph: representation and traversal

CS 310 Advanced Data Structures and Algorithms

Graph representation

CS 270 Algorithms. Oliver Kullmann. Breadth-first search. Analysing BFS. Depth-first. search. Analysing DFS. Dags and topological sorting.

CS 270 Algorithms. Oliver Kullmann. Analysing BFS. Depth-first search. Analysing DFS. Dags and topological sorting.

Trees and Graphs Shabsi Walfish NYU - Fundamental Algorithms Summer 2006

Algorithm Design and Analysis

CSI 604 Elementary Graph Algorithms

CS490: Problem Solving in Computer Science Lecture 6: Introductory Graph Theory

CS61BL. Lecture 5: Graphs Sorting

Algorithm Design and Analysis

Representations of Graphs

Outline. 1 Introduction. 2 Algorithm. 3 Example. 4 Analysis. 5 References. Idea

Figure 1: A directed graph.

Graph Algorithms. Chapter 22. CPTR 430 Algorithms Graph Algorithms 1

Week 5. 1 Analysing BFS. 2 Depth-first search. 3 Analysing DFS. 4 Dags and topological sorting. 5 Detecting cycles. CS 270 Algorithms.

csci 210: Data Structures Graph Traversals

Elementary Graph Algorithms. Ref: Chapter 22 of the text by Cormen et al. Representing a graph:

Lecture 10. Elementary Graph Algorithm Minimum Spanning Trees

Tutorial. Question There are no forward edges. 4. For each back edge u, v, we have 0 d[v] d[u].

Review: Graph Theory and Representation

CS/COE 1501 cs.pitt.edu/~bill/1501/ Graphs

Graph Traversal CSCI Algorithms I. Andrew Rosenberg

CSE 100: GRAPH ALGORITHMS

Algorithm Design and Analysis

Graphs. CSE 2320 Algorithms and Data Structures Alexandra Stefan and Vassilis Athitsos University of Texas at Arlington

GRAPHS Lecture 19 CS2110 Spring 2013

Basic Graph Algorithms

Chapter 22. Elementary Graph Algorithms

CS/COE

CS 206 Introduction to Computer Science II

Computer Science & Engineering 423/823 Design and Analysis of Algorithms

CSE 373 NOVEMBER 20 TH TOPOLOGICAL SORT

CS 161 Lecture 11 BFS, Dijkstra s algorithm Jessica Su (some parts copied from CLRS) 1 Review

W4231: Analysis of Algorithms

COP 4531 Complexity & Analysis of Data Structures & Algorithms

Announcements Problem Set 5 is out (today)!

Old final Exam Question Answer true or false and justify your answer: Since it takes at least n-1 key comparisons to find the min of n data items and

Data Structures. Elementary Graph Algorithms BFS, DFS & Topological Sort

CS473-Algorithms I. Lecture 14-A. Graph Searching: Breadth-First Search. Cevdet Aykanat - Bilkent University Computer Engineering Department

Module 11: Additional Topics Graph Theory and Applications

Graph Representations and Traversal


CS 341: Algorithms. Douglas R. Stinson. David R. Cheriton School of Computer Science University of Waterloo. February 26, 2019

Algorithms and Theory of Computation. Lecture 3: Graph Algorithms

Graph Algorithms. Andreas Klappenecker

Practical Session No. 12 Graphs, BFS, DFS, Topological sort

Graph. Vertex. edge. Directed Graph. Undirected Graph

CS Algorithms and Complexity

Multidimensional Arrays & Graphs. CMSC 420: Lecture 3

Week 12: Minimum Spanning trees and Shortest Paths

Lecture 9 Graph Traversal

Minimum Spanning Trees Ch 23 Traversing graphs

MA/CSSE 473 Day 12. Questions? Insertion sort analysis Depth first Search Breadth first Search. (Introduce permutation and subset generation)

CSE 100: GRAPH SEARCH

Homework Assignment #3 Graph

Graph implementations :

Lecture 26: Graphs: Traversal (Part 1)

Graph Algorithms: Chapters Part 1: Introductory graph concepts

CSE 373: Data Structures and Algorithms

Unit 2: Algorithmic Graph Theory

Elementary Graph Algorithms

Fundamental Algorithms

Practical Session No. 12 Graphs, BFS, DFS Topological Sort

Inf 2B: Graphs, BFS, DFS

UNIT Name the different ways of representing a graph? a.adjacencymatrix b. Adjacency list

Graph Algorithms. Andreas Klappenecker. [based on slides by Prof. Welch]

I A graph is a mathematical structure consisting of a set of. I Formally: G =(V, E), where V is a set and E V V.

CS 1114: Implementing Search. Last time. ! Graph traversal. ! Two types of todo lists: ! Prof. Graeme Bailey.

Final Exam. EECS 2011 Prof. J. Elder - 1 -

Jana Kosecka. Red-Black Trees Graph Algorithms. Many slides here are based on E. Demaine, D. Luebke slides

DHANALAKSHMI COLLEGE OF ENGINEERING, CHENNAI. Department of Computer Science and Engineering CS6301 PROGRAMMING DATA STRUCTURES II

Outline. Computer Science 331. Analysis of Prim's Algorithm

Graphs - II. Announcements. Where did I leave that book? Where did I leave that book? Where did I leave that book? CS 2110, Fall 2016

Lesson 1 Introduction to Path Planning Graph Searches: BFS and DFS

Outline. Graphs. Divide and Conquer.

TIE Graph algorithms

Lecture 10 Graph algorithms: testing graph properties

Unweighted directed graphs

Breadth First Search. cse2011 section 13.3 of textbook

Transcription:

CSC263 Week 8

Announcements Problem Set 4 is out! Due Tuesday (Nov 17)

Other Announcements Drop date Nov 8 Final exam schedule is posted CSC263 exam Dec 11, 2-5pm

This week s outline Graphs BFS

Graph A really, really important ADT that is used to model relationships between objects. Reference: http://steve-yegge.blogspot.ca/2008/03/get-that-job-at-google.html

Things that can be modelled using graphs Web Facebook Task scheduling Maps & GPS Compiler (garbage collection) OCR (computer vision) Database Rubik s cube. (many many other things)

Definition G = (V, E) Set of vertices e.g., {a, b, c} Set of edges e.g., { (a, b), (c, a) }

Flavours of graphs

each edge is an unordered pair (u, v) = (v, u) each edge is an ordered pair (u, v) (v, u) Undirected Directed

10 200-3 Unweighted Weighted

Simple Non-simple No multiple edge, no self-loop

Acyclic Cyclic

Connected Disconnected

Dense Sparse

Path A path of length 3 Length of path = number of edges Read Appendix B.4 for more background on graphs.

Operations on a graph Add a vertex; remove a vertex Add an edge; remove an edge Get neighbours (undirected graph) Neighbourhood(u): all v V such that (u, v) E Get in-neighbours / out-neighbours (directed graph) Traversal: visit every vertex in the graph

Many other operations: Traversal: BFS (breadth first search) DFS (depth first search) Given s,t find a (minimum length) path from s to t Given a connected graph G, output a spanning tree of G Is G connected?

Data structures for the graph ADT Adjacency matrix Adjacency list

Adjacency matrix A V x V matrix A

Adjacency matrix 1 1 1 2 3 4 0 1 0 1 2 4 2 0 0 1 0 3 1 0 0 0 3 4 0 0 0 0

Adjacency matrix How much space does it take? V ² 1 2 3 4 1 2 3 4 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0

Adjacency matrix (undirected graph) 1 1 1 2 3 4 0 1 1 1 2 4 2 1 0 1 0 3 1 1 0 0 3 4 1 0 0 0 The adjacency matrix of an undirected graph is. symmetric

Adjacency matrix (undirected graph) How much space does it take? V ² 1 2 3 4 1 2 3 4 0 1 1 1 1 0 1 0 1 1 0 0 1 0 0 0

Adjacency list

Adjacency list (directed graph) Each vertex v i stores a list A[i] of v j that satisfies (v i, v j ) E 1 1 2 2 4 1 4 3 2 4 3 1 3 4

Adjacency list (directed graph) How much space does it take? V + E 1 2 3 4 V E 2 4 1 4 3 1

Adjacency list (directed graph) How much space does it take? V + E This assumes we can store the name of a vertex in one cell of the linked list. In terms of bits, the size would be more like V + E (log V ) 1 2 3 4 V E 2 4 1 4 3 1

Adjacency list (directed graph) How much space does it take? V + E One often ignores these lower order factors of log n. (Recall for hashing, we assume h(x) in constant time.) 1 2 3 4 V E 2 4 1 4 3 1

Adjacency list (undirected graph) 1 1 2 4 3 2 4 2 1 3 3 3 4 2 1 1

Adjacency list (undirected graph) How much space does it take? V +2 E 1 2 3 4 V 2 E 2 4 3 1 3 2 1 1

Matrix versus List In term of space complexity adjacency matrix is Θ( V ²) adjacency list is Θ( V + E ) Which one is more space-efficient? Adjacency list, if E V ², i.e., the graph is not very dense.

Matrix versus List Anything that Matrix does better than List? Check whether edge (v i, v j ) is in E Matrix: just check if A[i, j] = 1, O(1) List: go through list A[i] see if j is in there, O(length of list)

Takeaway Adjacency matrix or adjacency list? Choose the more appropriate one depending on the problem.

Graph Traversals BFS and DFS They are twins!

Graph traversals Visiting every vertex once, starting from a given vertex. The visits can follow different orders, we will learn about the following two ways Breadth First Search (BFS) Depth First Search (DFS)

Intuitions of BFS and DFS Consider a special graph -- a tree

The knowledge learning tree High School Science Traversing this graph means learning all these subjects. College CS Physics Geology PhD AI DB String Theory Black hole Rocks Sand

The Breadth-First ways of learning these subjects Level by level, finish high school, then all subjects at College level, then finish all subjects in PhD level. High School Science College CS Physics Geology PhD AI DB String Theory Black hole Rocks Sand

The Depth-First way of learning these subjects Go towards PhD whenever possible; only start learning physics after finishing everything in CS. High School Science College CS Physics Geology PhD AI DB String Theory Black hole Rocks Sand

Now let s seriously start studying BFS

Special case: BFS in a tree Review CSC148: BFS in a tree (starting from root) is a level-by-level traversal. (NOT preorder!) What ADT did we use for implementing the level-by-level traversal? Queue!

Special case: BFS in a tree Output: a b c d e f b a c d e f NOT_YET_BFS(root): Q Queue() Enqueue(Q, root) while Q not empty: x Dequeue(Q) print x for each child c of x: Enqueue(Q, c) Queue: a b c d e f DQ DQ DQ DQ DQ DQ EMPTY!

The real deal: BFS in a Graph r s t u v w x y If we just run NOT_YET_BFS(t) on the above graph. What problem would we have? It would want to visit some vertices more than once (e.g., x) NOT_YET_BFS(root): Q Queue() Enqueue(Q, root) while Q not empty: x Dequeue(Q) print x for each neighbr c of x: Enqueue(Q, c)

How avoid visiting a vertex twice Remember you visited it by labelling it using colours. White: unvisited Gray: encountered Black: explored Initially all vertices are white Colour a vertex gray the first time visiting it Colour a vertex black when all its neighbours have been encountered Avoid visiting gray or black vertices In the end, all vertices are black (sort-of)

Some other values we want to remember during the traversal... pi[v]: the vertex from which v is encountered I was introduced as whose neighbour? d[v]: the distance value the distance from v to the source vertex of the BFS This d[v] is going to be really useful! r v s w t x u y

BFS(G=(V, E), s): 1 for all v in V: 2 colour[v] white 3 d[v] 4 pi[v] NIL 5 Q Queue() 6 colour[s] gray 7 d[s] 0 8 Enqueue(Q, s) 9 while Q not empty: 10 u Dequeue(Q) 11 for each neighbour v of u: 12 if colour[v] = white 13 colour[v] gray 14 d[v] d[u] + 1 15 pi[v] u 16 Enqueue(Q, v) 17 colour[u] black The blue lines are the same as NOT_YET_BFS Pseudocode: the real BFS # Initialize vertices # source s is encountered # distance from s to s is 0 # only visit unvisited vertices # v is 1-level farther from s than u # v is introduced as u s neighbour # all neighbours of u have been encountered, therefore u is explored

Let s run an example! r s t u v w x y BFS(G, s)

After initialization r s t u v w x y All vertices are white and have d =

Start by encountering the source d=0 r s t u v w x y Queue: s Colour the source gray and set its d = 0, and Enqueue it

Dequeue, explore neighbours 1 0 r s t u v DQ w 1 x y Queue: s r w The red edge indicates the pi[v] that got remembered

Colour black after exploring all neighbours 1 0 r s t u v DQ w 1 x y Queue: s r w

Dequeue, explore neighbours (2) 1 0 r s t u v 2 DQ w 1 DQ x y Queue: s r w v

Dequeue, explore neighbours (3) 1 0 2 r s t u v 2 DQ w 1 DQ DQ x 2 y Queue: s r w v t x

after a few more steps...

BFS done! 1 0 3 r 2 s t u v 2 w 1 x 2 y 3 DQ DQ DQ DQ DQ DQ DQ DQ Queue: s r w v t x u y

What do we get after doing all this?

1 0 3 r 2 s t u v 2 w 1 x 2 y 3 First of all, we get to visit every vertex once.

Did you know? The official name of the red edges are called tree edges. r s t u v w x y This is called the BFS-tree, it s a tree that connects all vertices, if the graph is connected.

These d[v] values, we said they were going to be really useful. Short path from u to s: u pi[u] pi[pi[u]] pi[pi[pi[u]]] s 1 0 3 r 2 s t u v 2 w 1 x 2 y 3 The value indicates the vertex s distance from the source vertex. Actually more than that, it s the shortest-path distance, we can prove it. How about finding short path itself? Follow the red edges, pi[v] comes in handy for this.

What if G is disconnected? 1 0 3 r 2 s t u z v 2 w 1 x 2 y 3 After BFS(s), z is of white colour and d[v] = The infinite distance value of z indicates that it is unreachable from the source vertex.

Runtime analysis! The total amount of work (use adjacency list): Visit each vertex once Enqueue, Dequeue, change colours, assign d[v],, constant work per vertex in total: O( V ) At each vertex, check all its neighbours (all its incident edges) Each edge is checked twice (by the two end vertices) in total: O( E ) Total runtime: r v s w O( V + E ) t x u y

Summary of BFS Explores breadth rather than depth Useful for getting single-source shortest paths on unweighted graphs Useful for testing reachability Runtime O( V + E ) with adjacency list (with adjacency matrix it ll be different)

Next week DFS BFS