48
Graphs

Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

Embed Size (px)

Citation preview

Page 1: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

Graphs

Page 2: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

Graphs

• Data structures that connect a set of objects to form a kind of a

network

• Objects are called “Nodes” or “Vertices”

• Connections are called “Edges”

2

Page 3: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

Types of Graphs

3

Directed vs. undirected

Undirected (Edges have no direction)

Directed (Edges have directions)

Weighted vs. unweighted

Unweighted (Edges have no cost/weight)

Weighted (Edges have associated cost/weight)

Page 4: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

Types of Graphs (Cont’d)

4

Dense vs. Sparse

Dense graphs (many edges between nodes)

Sparse graphs (few edges between nodes)

• If the graph has n vertices (nodes) Maximum # of edges is n2

• In dense graphs number of edges is close to n2

• In sparse graphs number of edges is close to n

Page 5: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

5

Some Graph Applications

transportation

Graph

street intersections

Nodes Edges

highways

communication computers fiber optic cables

World Wide Web web pages hyperlinks

social people relationships

food web species predator-prey

software systems functions function calls

scheduling tasks precedence constraints

circuits gates wires

Page 6: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

6

World Wide Web

Web graph. Node: web page. Edge: hyperlink from one page to another.

cnn.com

cnnsi.comnovell.comnetscape.com timewarner.com

hbo.com

sorpranos.com

Page 7: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

7

Social Network

Social network graph. Node: people. Edge: relationship between two people.

Reference: Valdis Krebs, http://www.firstmonday.org/issues/issue7_4/krebs

Page 8: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

Protein Networks

8

Nodes are proteins

Edges are connections (interaction between proteins)

Page 9: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

More Formalization

9

Page 10: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

10

Undirected Graphs

Undirected graph. G = (V, E) V = set of nodes or vertices E = edges between pairs of nodes. Graph size parameters: n = |V|, m = |E|.

V = { 1, 2, 3, 4, 5, 6, 7, 8 }

E = { 1-2, 1-3, 2-3, 2-4, 2-5, 3-5, 3-7, 3-8, 4-5, 5-6 }

n = |V| = 8

m = |E| = 11

Page 11: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

Graph Representation

Two main methods

11

Adjacency Matrix Adjacency List

Page 12: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

12

Graph Representation: Adjacency Matrix

Adjacency matrix. V-by-V matrix (A)

A[i, j] = 1 if exists edge between node i and node j

Space proportional to V2

Checking if (u, v) is an edge takes (1) time.

Identifying all edges takes (V2) time.

For undirected graph matrix is symmetric across the diagonal

1 2 3 4 5 6 7 81 0 1 1 0 0 0 0 02 1 0 1 1 1 0 0 03 1 1 0 0 1 0 1 14 0 1 0 1 1 0 0 05 0 1 1 1 0 1 0 06 0 0 0 0 1 0 0 07 0 0 1 0 0 0 0 18 0 0 1 0 0 0 1 0

Vertices

Vertices

Page 13: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

13

Graph Representation: Adjacency List

Adjacency list. Node indexed array of lists.

Two representations of each edge.

Space proportional to O(E + V).

Checking if (u, v) is an edge takes O(deg(u)) time.

Identifying all edges takes (E + V) time.

1 2 3

2

3

4 2 5

5

6

7 3 8

8

1 3 4 5

1 2 5 87

2 3 4 6

5

degree = number of neighbors of u

3 7

Page 14: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

Degree of a Node

In-degree(v): Number of edges coming to (entering) node v

Out-degree(v): Number of edges getting out (leaving) node v

For Undirected graphs In-degree = Out-degree

14

In-degree(V3) = Out-degree(3) = 5In-degree(E) = 2 Out-degree(E) = 3

Page 15: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

Graph Traversal

15

Page 16: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

Graph Traversal

Graph Traversal means visiting each node in the graph

There is a starting node (s)

Two main types of traversal Breadth-First-Search (BFS) Depth-First-Search (DFS)

Both are applicable for directed and undirected graphs

16

BFS DFS

Page 17: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

17

Breadth First Search

s

2

5

4

7

8

3 6 9

s L1 L2 L n-1 Visit the nodes one-level at a time

Requires a queue (First-come-first-served)

Page 18: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

18

Breadth First Search

s

2

5

4

7

8

3 6 9

0

Undiscovered

Discovered

Finished

Queue: s

Top of queue

2

1Shortest pathfrom s

Page 19: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

19

Breadth First Search

s

2

5

4

7

8

3 6 9

0

Undiscovered

Discovered

Finished

Queue: s 2

Top of queue

3

1

1

Page 20: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

20

Breadth First Search

s

2

5

4

7

8

3 6 9

0

Undiscovered

Discovered

Finished

Queue: s 2 3

Top of queue

5

1

1

1

Page 21: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

21

Breadth First Search

s

2

5

4

7

8

3 6 9

0

Undiscovered

Discovered

Finished

Queue: 2 3 5

Top of queue

1

1

1

Page 22: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

22

Breadth First Search

s

2

5

4

7

8

3 6 9

0

Undiscovered

Discovered

Finished

Queue: 2 3 5

Top of queue

4

1

1

1

2

Page 23: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

23

Breadth First Search

s

2

5

4

7

8

3 6 9

0

Undiscovered

Discovered

Finished

Queue: 2 3 5 4

Top of queue

1

1

1

2

5 already discovered:don't enqueue

Page 24: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

24

Breadth First Search

s

2

5

4

7

8

3 6 9

0

Undiscovered

Discovered

Finished

Queue: 2 3 5 4

Top of queue

1

1

1

2

Page 25: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

25

Breadth First Search

s

2

5

4

7

8

3 6 9

0

Undiscovered

Discovered

Finished

Queue: 3 5 4

Top of queue

1

1

1

2

Page 26: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

26

Breadth First Search

s

2

5

4

7

8

3 6 9

0

Undiscovered

Discovered

Finished

Queue: 3 5 4

Top of queue

1

1

1

2

6

2

Page 27: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

27

Breadth First Search

s

2

5

4

7

8

3 6 9

0

Undiscovered

Discovered

Finished

Queue: 3 5 4 6

Top of queue

1

1

1

2

2

Page 28: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

28

Breadth First Search

s

2

5

4

7

8

3 6 9

0

Undiscovered

Discovered

Finished

Queue: 5 4 6

Top of queue

1

1

1

2

2

Page 29: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

29

Breadth First Search

s

2

5

4

7

8

3 6 9

0

Undiscovered

Discovered

Finished

Queue: 5 4 6

Top of queue

1

1

1

2

2

Page 30: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

30

Breadth First Search

s

2

5

4

7

8

3 6 9

0

Undiscovered

Discovered

Finished

Queue: 4 6

Top of queue

1

1

1

2

2

Page 31: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

31

Breadth First Search

s

2

5

4

7

8

3 6 9

0

Undiscovered

Discovered

Finished

Queue: 4 6

Top of queue

1

1

1

2

2

8

3

Page 32: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

32

Breadth First Search

s

2

5

4

7

8

3 6 9

0

Undiscovered

Discovered

Finished

Queue: 4 6 8

Top of queue

1

1

1

2

2

3

Page 33: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

33

Breadth First Search

s

2

5

4

7

8

3 6 9

0

Undiscovered

Discovered

Finished

Queue: 6 8

Top of queue

1

1

1

2

2

3

7

3

Page 34: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

34

Breadth First Search

s

2

5

4

7

8

3 6 9

0

Undiscovered

Discovered

Finished

Queue: 6 8 7

Top of queue

1

1

1

2

2

3

9

3

3

Page 35: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

35

Breadth First Search

s

2

5

4

7

8

3 6 9

0

Undiscovered

Discovered

Finished

Queue: 6 8 7 9

Top of queue

1

1

1

2

2

3

3

3

Page 36: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

36

Breadth First Search

s

2

5

4

7

8

3 6 9

0

Undiscovered

Discovered

Finished

Queue: 8 7 9

Top of queue

1

1

1

2

2

3

3

3

Page 37: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

37

Breadth First Search

s

2

5

4

7

8

3 6 9

0

Undiscovered

Discovered

Finished

Queue: 7 9

Top of queue

1

1

1

2

2

3

3

3

Page 38: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

38

Breadth First Search

s

2

5

4

7

8

3 6 9

0

Undiscovered

Discovered

Finished

Queue: 7 9

Top of queue

1

1

1

2

2

3

3

3

Page 39: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

39

Breadth First Search

s

2

5

4

7

8

3 6 9

0

Undiscovered

Discovered

Finished

Queue: 7 9

Top of queue

1

1

1

2

2

3

3

3

Page 40: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

40

Breadth First Search

s

2

5

4

7

8

3 6 9

0

Undiscovered

Discovered

Finished

Queue: 7 9

Top of queue

1

1

1

2

2

3

3

3

Page 41: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

41

Breadth First Search

s

2

5

4

7

8

3 6 9

0

Undiscovered

Discovered

Finished

Queue: 9

Top of queue

1

1

1

2

2

3

3

3

Page 42: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

42

Breadth First Search

s

2

5

4

7

8

3 6 9

0

Undiscovered

Discovered

Finished

Queue: 9

Top of queue

1

1

1

2

2

3

3

3

Page 43: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

43

Breadth First Search

s

2

5

4

7

8

3 6 9

0

Undiscovered

Discovered

Finished

Queue: 9

Top of queue

1

1

1

2

2

3

3

3

Page 44: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

44

Breadth First Search

s

2

5

4

7

8

3 6 9

0

Undiscovered

Discovered

Finished

Queue:

Top of queue

1

1

1

2

2

3

3

3

Page 45: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

45

Breadth First Search

s

2

5

4

7

8

3 6 9

0

Starting from s, we visited all (reachable) nodes

BFS forms a tree rooted at s (BFS Tree)

For each node x reachable from s we created a shortest path from s to x

1

1

1

2

2

3

3

3

Page 46: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

46

Breadth First Search

Example problems in which we use BFS

Find if node x is reachable from node y Start from node y and do BFS

Find the shortest path from node x to node y Start from node x and perform BFS

Search for a value v in the graph Start from any node and perform BFS

Always keep in mind whether we talk about undirected graph or directed graph

Page 47: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

47

Breadth First Search: Algorithm

Start at node v

Can do any processing on t

Page 48: Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”

48

Breadth First Search: Analysis

Theorem. The above implementation of BFS runs in O(V + E) time if

the graph is given by its adjacency list.

Proof Each node will be queued only once O(V) For each node, we visit all its out edges O(E)

– In fact each edge (u,v) is visited twice once from u’s side and once

form v’s side

Total is O(V + E)