graphs and search algorithmsadjacency list 3. adjacency matrix. graph data structs 1. raw...
TRANSCRIPT
![Page 1: Graphs and Search AlgorithmsAdjacency list 3. Adjacency matrix. Graph Data Structs 1. Raw vertex/edge lists 2. Adjacency list 3. Adjacency matrix. Graph Data Structs What is the space](https://reader030.vdocuments.site/reader030/viewer/2022040513/5e69a04c4c3f586e7e36dadd/html5/thumbnails/1.jpg)
Graphs and Search Algorithms
![Page 2: Graphs and Search AlgorithmsAdjacency list 3. Adjacency matrix. Graph Data Structs 1. Raw vertex/edge lists 2. Adjacency list 3. Adjacency matrix. Graph Data Structs What is the space](https://reader030.vdocuments.site/reader030/viewer/2022040513/5e69a04c4c3f586e7e36dadd/html5/thumbnails/2.jpg)
Social Network Backend
Want to build social network app tracking:• users• friend relationship between some pairs
of users
A
B C
EF
D
![Page 3: Graphs and Search AlgorithmsAdjacency list 3. Adjacency matrix. Graph Data Structs 1. Raw vertex/edge lists 2. Adjacency list 3. Adjacency matrix. Graph Data Structs What is the space](https://reader030.vdocuments.site/reader030/viewer/2022040513/5e69a04c4c3f586e7e36dadd/html5/thumbnails/3.jpg)
Graph Basics
Network is a graph:• nodes or vertices
A
B C
EF
D
![Page 4: Graphs and Search AlgorithmsAdjacency list 3. Adjacency matrix. Graph Data Structs 1. Raw vertex/edge lists 2. Adjacency list 3. Adjacency matrix. Graph Data Structs What is the space](https://reader030.vdocuments.site/reader030/viewer/2022040513/5e69a04c4c3f586e7e36dadd/html5/thumbnails/4.jpg)
Graph Basics
Network is a graph:• nodes or vertices • edges
A
B C
EF
D
![Page 5: Graphs and Search AlgorithmsAdjacency list 3. Adjacency matrix. Graph Data Structs 1. Raw vertex/edge lists 2. Adjacency list 3. Adjacency matrix. Graph Data Structs What is the space](https://reader030.vdocuments.site/reader030/viewer/2022040513/5e69a04c4c3f586e7e36dadd/html5/thumbnails/5.jpg)
Graph Basics
Network is a graph:• nodes or vertices • edges• can be directed (one-way) or undirected
A
B CD
EF
![Page 6: Graphs and Search AlgorithmsAdjacency list 3. Adjacency matrix. Graph Data Structs 1. Raw vertex/edge lists 2. Adjacency list 3. Adjacency matrix. Graph Data Structs What is the space](https://reader030.vdocuments.site/reader030/viewer/2022040513/5e69a04c4c3f586e7e36dadd/html5/thumbnails/6.jpg)
Graph Data Structs
1. Raw vertex/edge lists
![Page 7: Graphs and Search AlgorithmsAdjacency list 3. Adjacency matrix. Graph Data Structs 1. Raw vertex/edge lists 2. Adjacency list 3. Adjacency matrix. Graph Data Structs What is the space](https://reader030.vdocuments.site/reader030/viewer/2022040513/5e69a04c4c3f586e7e36dadd/html5/thumbnails/7.jpg)
Graph Data Structs
1. Raw vertex/edge lists
2. Adjacency list
![Page 8: Graphs and Search AlgorithmsAdjacency list 3. Adjacency matrix. Graph Data Structs 1. Raw vertex/edge lists 2. Adjacency list 3. Adjacency matrix. Graph Data Structs What is the space](https://reader030.vdocuments.site/reader030/viewer/2022040513/5e69a04c4c3f586e7e36dadd/html5/thumbnails/8.jpg)
Graph Data Structs
1. Raw vertex/edge lists
2. Adjacency list3. Adjacency matrix
![Page 9: Graphs and Search AlgorithmsAdjacency list 3. Adjacency matrix. Graph Data Structs 1. Raw vertex/edge lists 2. Adjacency list 3. Adjacency matrix. Graph Data Structs What is the space](https://reader030.vdocuments.site/reader030/viewer/2022040513/5e69a04c4c3f586e7e36dadd/html5/thumbnails/9.jpg)
Graph Data Structs
1. Raw vertex/edge lists
2. Adjacency list3. Adjacency matrix
![Page 10: Graphs and Search AlgorithmsAdjacency list 3. Adjacency matrix. Graph Data Structs 1. Raw vertex/edge lists 2. Adjacency list 3. Adjacency matrix. Graph Data Structs What is the space](https://reader030.vdocuments.site/reader030/viewer/2022040513/5e69a04c4c3f586e7e36dadd/html5/thumbnails/10.jpg)
Graph Data Structs
What is the space cost of each option?
Raw lists:
Adjacency list:
Adjacency matrix:
![Page 11: Graphs and Search AlgorithmsAdjacency list 3. Adjacency matrix. Graph Data Structs 1. Raw vertex/edge lists 2. Adjacency list 3. Adjacency matrix. Graph Data Structs What is the space](https://reader030.vdocuments.site/reader030/viewer/2022040513/5e69a04c4c3f586e7e36dadd/html5/thumbnails/11.jpg)
Graph Data Structs
What is the space cost of each option?
Raw lists:
Adjacency list:
Adjacency matrix:
![Page 12: Graphs and Search AlgorithmsAdjacency list 3. Adjacency matrix. Graph Data Structs 1. Raw vertex/edge lists 2. Adjacency list 3. Adjacency matrix. Graph Data Structs What is the space](https://reader030.vdocuments.site/reader030/viewer/2022040513/5e69a04c4c3f586e7e36dadd/html5/thumbnails/12.jpg)
Graph Operations
Given two vertices, are they neighbors?
Raw lists:
Adjacency list:
Adjacency matrix:
![Page 13: Graphs and Search AlgorithmsAdjacency list 3. Adjacency matrix. Graph Data Structs 1. Raw vertex/edge lists 2. Adjacency list 3. Adjacency matrix. Graph Data Structs What is the space](https://reader030.vdocuments.site/reader030/viewer/2022040513/5e69a04c4c3f586e7e36dadd/html5/thumbnails/13.jpg)
Graph Operations
Given two vertices, are they neighbors?
Raw lists: search entire edge list
Adjacency list:
Adjacency matrix:
![Page 14: Graphs and Search AlgorithmsAdjacency list 3. Adjacency matrix. Graph Data Structs 1. Raw vertex/edge lists 2. Adjacency list 3. Adjacency matrix. Graph Data Structs What is the space](https://reader030.vdocuments.site/reader030/viewer/2022040513/5e69a04c4c3f586e7e36dadd/html5/thumbnails/14.jpg)
Graph Operations
Given two vertices, are they neighbors?
Raw lists: search entire edge list
Adjacency list: search one adjacency list(technically )
Adjacency matrix:
![Page 15: Graphs and Search AlgorithmsAdjacency list 3. Adjacency matrix. Graph Data Structs 1. Raw vertex/edge lists 2. Adjacency list 3. Adjacency matrix. Graph Data Structs What is the space](https://reader030.vdocuments.site/reader030/viewer/2022040513/5e69a04c4c3f586e7e36dadd/html5/thumbnails/15.jpg)
Graph Operations
Given two vertices, are they neighbors?
Raw lists: search entire edge list
Adjacency list: search one adjacency list(technically )
Adjacency matrix: look up entry
![Page 16: Graphs and Search AlgorithmsAdjacency list 3. Adjacency matrix. Graph Data Structs 1. Raw vertex/edge lists 2. Adjacency list 3. Adjacency matrix. Graph Data Structs What is the space](https://reader030.vdocuments.site/reader030/viewer/2022040513/5e69a04c4c3f586e7e36dadd/html5/thumbnails/16.jpg)
Graph Operations
Given a vertex, who are the neighbors?
Raw lists: search entire edge list
Adjacency list:
Adjacency matrix:
![Page 17: Graphs and Search AlgorithmsAdjacency list 3. Adjacency matrix. Graph Data Structs 1. Raw vertex/edge lists 2. Adjacency list 3. Adjacency matrix. Graph Data Structs What is the space](https://reader030.vdocuments.site/reader030/viewer/2022040513/5e69a04c4c3f586e7e36dadd/html5/thumbnails/17.jpg)
Graph Operations
Given a vertex, who are the neighbors?
Raw lists: search entire edge list
Adjacency list: nothing to do…
Adjacency matrix: search row of matrix
![Page 18: Graphs and Search AlgorithmsAdjacency list 3. Adjacency matrix. Graph Data Structs 1. Raw vertex/edge lists 2. Adjacency list 3. Adjacency matrix. Graph Data Structs What is the space](https://reader030.vdocuments.site/reader030/viewer/2022040513/5e69a04c4c3f586e7e36dadd/html5/thumbnails/18.jpg)
Friend Network
Given a social network containing people (vertices) and friend relationships (edges), A is in the same friend network as B if
• they are the same person• A is friends with someone in that is in
the same friend network as B
![Page 19: Graphs and Search AlgorithmsAdjacency list 3. Adjacency matrix. Graph Data Structs 1. Raw vertex/edge lists 2. Adjacency list 3. Adjacency matrix. Graph Data Structs What is the space](https://reader030.vdocuments.site/reader030/viewer/2022040513/5e69a04c4c3f586e7e36dadd/html5/thumbnails/19.jpg)
Friend Network
Are A and E in the same friend network?
![Page 20: Graphs and Search AlgorithmsAdjacency list 3. Adjacency matrix. Graph Data Structs 1. Raw vertex/edge lists 2. Adjacency list 3. Adjacency matrix. Graph Data Structs What is the space](https://reader030.vdocuments.site/reader030/viewer/2022040513/5e69a04c4c3f586e7e36dadd/html5/thumbnails/20.jpg)
Friend Network
Are A and E in the same friend network?
Basic idea: start at A and “flood fill” along edges, and see if we ever hit E
(We will need to create a “visited” flag for vertices)
![Page 21: Graphs and Search AlgorithmsAdjacency list 3. Adjacency matrix. Graph Data Structs 1. Raw vertex/edge lists 2. Adjacency list 3. Adjacency matrix. Graph Data Structs What is the space](https://reader030.vdocuments.site/reader030/viewer/2022040513/5e69a04c4c3f586e7e36dadd/html5/thumbnails/21.jpg)
Friend Network
friendNetwork(A,B)for each vertex v:
v.visited = false;return search(A);
search(v)if(v == B) return true;if(v.visited) return false;v.visited = true;for each neighbor w: if(search(w)) return true;return false;
![Page 22: Graphs and Search AlgorithmsAdjacency list 3. Adjacency matrix. Graph Data Structs 1. Raw vertex/edge lists 2. Adjacency list 3. Adjacency matrix. Graph Data Structs What is the space](https://reader030.vdocuments.site/reader030/viewer/2022040513/5e69a04c4c3f586e7e36dadd/html5/thumbnails/22.jpg)
Friend Network
friendNetwork(A,B)for each vertex v:
v.visited = false;return search(A);
search(v)if(v == B) return true;if(v.visited) return false;v.visited = true;for each neighbor w: if(search(w)) return true;return false;
(are there potential issues?)
![Page 23: Graphs and Search AlgorithmsAdjacency list 3. Adjacency matrix. Graph Data Structs 1. Raw vertex/edge lists 2. Adjacency list 3. Adjacency matrix. Graph Data Structs What is the space](https://reader030.vdocuments.site/reader030/viewer/2022040513/5e69a04c4c3f586e7e36dadd/html5/thumbnails/23.jpg)
Iterative VersionfriendNetwork(A,B)for each vertex v:
v.visited = false;stack S = {A};
while(!S.empty()) v = S.pop(); if(v == B) return true; if(v.visited) continue; v.visited = true; for each neighbor w: S.push(w);return false;
![Page 24: Graphs and Search AlgorithmsAdjacency list 3. Adjacency matrix. Graph Data Structs 1. Raw vertex/edge lists 2. Adjacency list 3. Adjacency matrix. Graph Data Structs What is the space](https://reader030.vdocuments.site/reader030/viewer/2022040513/5e69a04c4c3f586e7e36dadd/html5/thumbnails/24.jpg)
Iterative VersionfriendNetwork(A,B)for each vertex v:
v.visited = false;stack S = {A};
while(!S.empty()) v = S.pop(); if(v == B) return true; if(v.visited) continue; v.visited = true; for each neighbor w: S.push(w);return false;depth-first search (DFS)
![Page 25: Graphs and Search AlgorithmsAdjacency list 3. Adjacency matrix. Graph Data Structs 1. Raw vertex/edge lists 2. Adjacency list 3. Adjacency matrix. Graph Data Structs What is the space](https://reader030.vdocuments.site/reader030/viewer/2022040513/5e69a04c4c3f586e7e36dadd/html5/thumbnails/25.jpg)
Kevin Bacon ProblemGiven a social network and two people A, B,
what is the shortest chain of friends from A to B?
Ex: bacon(A, A) = 0 bacon(A, E) = 2 bacon(C, D) = infinity
![Page 26: Graphs and Search AlgorithmsAdjacency list 3. Adjacency matrix. Graph Data Structs 1. Raw vertex/edge lists 2. Adjacency list 3. Adjacency matrix. Graph Data Structs What is the space](https://reader030.vdocuments.site/reader030/viewer/2022040513/5e69a04c4c3f586e7e36dadd/html5/thumbnails/26.jpg)
Kevin Bacon Problem
Intuition: when calculating bacon(A, *) we still want to flood-fill, but we need to guarantee we search friends before friends-of-friends
A
B C
EF
D
![Page 27: Graphs and Search AlgorithmsAdjacency list 3. Adjacency matrix. Graph Data Structs 1. Raw vertex/edge lists 2. Adjacency list 3. Adjacency matrix. Graph Data Structs What is the space](https://reader030.vdocuments.site/reader030/viewer/2022040513/5e69a04c4c3f586e7e36dadd/html5/thumbnails/27.jpg)
Breadth-First SearchfriendNetwork(A,B)for each vertex v:
v.visited = false;queue Q = {A};
while(!Q.empty()) v = Q.pop(); if(v == B) return true; if(v.visited) continue; v.visited = true; for each neighbor w: Q.push(w);return false;
![Page 28: Graphs and Search AlgorithmsAdjacency list 3. Adjacency matrix. Graph Data Structs 1. Raw vertex/edge lists 2. Adjacency list 3. Adjacency matrix. Graph Data Structs What is the space](https://reader030.vdocuments.site/reader030/viewer/2022040513/5e69a04c4c3f586e7e36dadd/html5/thumbnails/28.jpg)
Kevin Bacon Problembacon(A,B)for each vertex v:
v.visited = false; v.dist = infinity;queue Q = {A};A.dist = 0;
while(!Q.empty()) v = Q.pop(); if(v == B) return v.dist; if(v.visited) continue; v.visited = true; for each neighbor w: Q.push(w); w.dist = v.dist + 1;return infinity;