CS141: Intermediate Data Structures and Algorithms Graphs Amr - - PowerPoint PPT Presentation

cs141 intermediate data structures and algorithms graphs
SMART_READER_LITE
LIVE PREVIEW

CS141: Intermediate Data Structures and Algorithms Graphs Amr - - PowerPoint PPT Presentation

CS141: Intermediate Data Structures and Algorithms Graphs Amr Magdy Graph Data Structure A set of nodes (vertices) and edges connecting them 2 Graph Applications Road network Social media networks Knowledge basesS 3 Graph Representations


slide-1
SLIDE 1

CS141: Intermediate Data Structures and Algorithms Graphs

Amr Magdy

slide-2
SLIDE 2

Graph Data Structure

A set of nodes (vertices) and edges connecting them

2

slide-3
SLIDE 3

Graph Applications

Road network Social media networks Knowledge basesS

3

slide-4
SLIDE 4

Graph Representations

Adjacency matrix

Storage and access efficient when many edges exist

4

slide-5
SLIDE 5

Graph Representations

Adjacency matrix

Storage and access efficient when many edges exist

5

slide-6
SLIDE 6

Graph Representations

Incidence Matrix

Expensive storage, not popular

6

slide-7
SLIDE 7

Graph Representations

Adjacency list

Storage efficient when few edges exit (sparse graphs) Sequential access to edges (vs random access in matrix)

7

slide-8
SLIDE 8

Types of Graphs

Directed and Undirected graphs Weighted and Unweighted graphs Connected graphs Bipartite graphs Acyclic graphs Tree/Forest

8

slide-9
SLIDE 9

Types of Graphs

Directed and Undirected graphs Weighted and Unweighted graphs Connected graphs Bipartite graphs Acyclic graphs Tree/Forest

9

slide-10
SLIDE 10

Types of Graphs

Directed and Undirected graphs Weighted and Unweighted graphs Connected graphs Bipartite graphs Acyclic graphs Tree/Forest

10

slide-11
SLIDE 11

Types of Graphs

Directed and Undirected graphs Weighted and Unweighted graphs Connected graphs Bipartite graphs Acyclic graphs Tree/Forest

11

slide-12
SLIDE 12

Types of Graphs

Directed and Undirected graphs Weighted and Unweighted graphs Connected graphs Bipartite graphs Acyclic graphs Tree/Forest

12

slide-13
SLIDE 13

Types of Graphs

Directed and Undirected graphs Weighted and Unweighted graphs Connected graphs Bipartite graphs Acyclic graphs Tree/Forest

Tree: directed acyclic graph with max of one path between any two nodes Forest: set of disjoint trees

13

slide-14
SLIDE 14

Basic Graph Algorithms

Graph traversal algorithms

Bread-first Search (BFS) Depth-first Search (DFS)

Topological Sort Graph Connectivity Cycle Detection

14

slide-15
SLIDE 15

Breadth-first Search (BFS)

How to traverse?

15

slide-16
SLIDE 16

Breadth-first Search (BFS)

How to traverse? Use a queue

16

slide-17
SLIDE 17

Breadth-first Search (BFS)

How to traverse? Use a queue Start at a vertex s Mark s as visited Enqueue neighbors of s while Q not empty Dequeue vertex u Mark u as visited Enqueue unvisited neighbors of u

17

slide-18
SLIDE 18

Breadth-first Search (BFS)

18

slide-19
SLIDE 19

Depth-first Search (DFS)

How to traverse?

19

slide-20
SLIDE 20

Depth-first Search (DFS)

How to traverse? Use a stack

20

slide-21
SLIDE 21

Depth-first Search (DFS)

How to traverse? Use a stack Start at a vertex s Mark s as visited Push neighbors of s while Stack not empty Pop vertex u Mark u as visited Push unvisited neighbors of u

21

slide-22
SLIDE 22

Complexity of Graph Traversal

For G = (V,E), V set of vertices, E set of edges BFS

Time: O(|V|+|E|) Space: O(|V|) (plus graph representation)

DFS

O(|V|+|E|) Space: O(|V|) (plus graph representation)

22

slide-23
SLIDE 23

Graph Connectivity

Checking if graph is connected:

23

slide-24
SLIDE 24

Graph Connectivity

Checking if graph is connected: IsConnected(G) { DFS(G) if any vertex not visited return false else return true } Time Complexity: O(|V|+|E|)

24

slide-25
SLIDE 25

Graph Connected Components

Getting the graph connected components

25

slide-26
SLIDE 26

Graph Connected Components

Getting the graph connected components Mark all nodes as unvisited visitCycle = 1 while( there exists unvisited node n) {

  • Start DFS(G) at n, mark visited node with visitCycle
  • Output all nodes with current visitCycle as one

connected component

  • visitCycle = visitCycle+1

} Time Complexity: O(|V|+|E|)

26

slide-27
SLIDE 27

Cycle Detection

Does a connected graph G contain a cycle? (non-trivial cycle) General idea: if DFS procedure tries to revisit a visited node, then there is a cycle

27

slide-28
SLIDE 28

Cycle Detection

Does a graph G contain a cycle? (non-trivial cycle) IsAcyclic(G) { Start at unvisited vertex s Mark “s” as visited Push neighbors of s in stack while stack not empty Pop vertex u Mark u as visited if u has visited neighbors return true Push unvisited neighbors of u return false }

28

slide-29
SLIDE 29

Cycle Detection in Directed Graphs

visitFlag = 1 while there exist unvisited node n {

  • Call IsAcyclic(G) with start node n

and visitFlag

  • visitFlag = visitFlag + 1

} IsAcyclic pseudo code will be modified to have: if u has visited neighbors marked with visitFlag return true

29

slide-30
SLIDE 30

Topological Sort

Determine a linear order for vertices of a directed acyclic graph (DAG)

Mostly dependency/precedence graphs If edge (u,v) exists, then u appears before v in the order

30

slide-31
SLIDE 31

Topological Sort

31

slide-32
SLIDE 32

Spanning Tree

Given a connected graph G=(V,E), a spanning tree T ⊆ E is a set of edges that “spans” (i.e., connects) all vertices in V. A Minimum Spanning Tree (MST): a spanning tree with minimum total weight on edges of T Application:

The wiring problem in hardware circuit design

32

slide-33
SLIDE 33

Spanning Tree: Example

33

slide-34
SLIDE 34

Spanning Tree: Not MST

34

slide-35
SLIDE 35

Spanning Tree: MST

35

slide-36
SLIDE 36

Spanning Tree: Another MST

36

slide-37
SLIDE 37

Finding MST: Kruskal’s algorithm

Sort all the edges by weight Scan the edges by weight from lowest to highest If an edge introduces a cycle, drop it If an edge does not introduce a cycle, pick it Terminate when n-1 edges are picked (n: number of vertices)

37

slide-38
SLIDE 38

Finding MST: Kruskal’s algorithm

38

slide-39
SLIDE 39

Finding MST: Kruskal’s algorithm

39

slide-40
SLIDE 40

Finding MST: Kruskal’s algorithm

40

slide-41
SLIDE 41

Finding MST: Kruskal’s algorithm

41

slide-42
SLIDE 42

Finding MST: Kruskal’s algorithm

42

slide-43
SLIDE 43

Finding MST: Kruskal’s algorithm

43

slide-44
SLIDE 44

Finding MST: Kruskal’s algorithm

44

slide-45
SLIDE 45

Finding MST: Kruskal’s algorithm

45

slide-46
SLIDE 46

Finding MST: Kruskal’s algorithm

46

slide-47
SLIDE 47

Finding MST: Kruskal’s algorithm

47

slide-48
SLIDE 48

Finding MST

Kruskal’s algorithm: greedy

Greedy choice: least weighted edge first Complexity: O(E log E) – sorting edges by weight Edge-cycle detection: O(1) using hashing of O(V) space

Prim’s algorithm: greedy

Complexity: O(E+ V log V) – using Fibonacci heap data structure

48

slide-49
SLIDE 49

Shortest Paths in Graphs

Given graph G=(V,E), find shortest paths from a given node source to all nodes in V. (Single-source All Destinations)

49

slide-50
SLIDE 50

Shortest Paths in Graphs

Given graph G=(V,E), find shortest paths from a given node source to all nodes in V. (Single-source All Destinations) If negative weight cycle exist from st, shortest is undefined

Can always reduce the cost by navigating the negative cycle

If graph with all +ve weights  Dijkstra’s algorithm If graph with some -ve weights  Bellman-Ford’s algorithm

50

slide-51
SLIDE 51

Dijkstra’s Algorithm Prev: {A,U,U,U,U}

slide-52
SLIDE 52

Dijkstra’s Algorithm

slide-53
SLIDE 53

Dijkstra’s Algorithm Prev: {A,A,A,U,U}

slide-54
SLIDE 54

Dijkstra’s Algorithm Prev: {A,A,A,U,U}

slide-55
SLIDE 55

Dijkstra’s Algorithm Prev: {A,C,A,C,C}

slide-56
SLIDE 56

Dijkstra’s Algorithm Prev: {A,C,A,C,C}

slide-57
SLIDE 57

Dijkstra’s Algorithm Prev: {A,C,A,C,C}

slide-58
SLIDE 58

Dijkstra’s Algorithm Prev: {A,C,A,C,C}

slide-59
SLIDE 59

Dijkstra’s Algorithm Prev: {A,C,A,B,C}

slide-60
SLIDE 60

Dijkstra’s Algorithm Prev: {A,C,A,B,C}

slide-61
SLIDE 61

Dijkstra’s Algorithm

Prev: {A,C,A,B,C} A: A  A B: A  C  B C: A  C D: A  C  B  D E: A  C  E

slide-62
SLIDE 62

Dijkstra’s Algorithm

62

slide-63
SLIDE 63

Network Max Flow

What the maximum amount we can ship from Vancouver to Winnipeg?

63

s

v1 v3 v2 v4

t

Edmonton Saskatoon Vancouver Winnipeg Regina Calgary 16 12 20 13 14 4 4 9 7

slide-64
SLIDE 64

Network Max Flow

What the maximum amount we can ship from Vancouver to Winnipeg? Pseudo code MaxFlow(G, s, t) { max_flow = 0 while (Ǝ a simple path p:st){ curr_flow = min weight in p max_flow = max_flow + curr_flow for each (edge e ϵ p) { e.weight = e.weight - curr_flow } } return max_flow }

64

slide-65
SLIDE 65

Network Max Flow

What the maximum amount we can ship from Vancouver to Winnipeg?

65

s

v1 v3 v2 v4

t

Edmonton Saskatoon Vancouver Winnipeg Regina Calgary 16 12 20 13 14 4 4 9 7

slide-66
SLIDE 66

Network Max Flow

What the maximum amount we can ship from Vancouver to Winnipeg?

66

s

v1 v3 v2 v4

t

Edmonton Saskatoon Vancouver Winnipeg Regina Calgary 16-12 12-12 20-12 13 14 4 4 9 7

max_flow = 12

slide-67
SLIDE 67

Network Max Flow

What the maximum amount we can ship from Vancouver to Winnipeg?

67

s

v1 v3 v2 v4

t

Edmonton Saskatoon Vancouver Winnipeg Regina Calgary 4 8 13 14 4 4 9 7

max_flow = 12

slide-68
SLIDE 68

Network Max Flow

What the maximum amount we can ship from Vancouver to Winnipeg?

68

s

v1 v3 v2 v4

t

Edmonton Saskatoon Vancouver Winnipeg Regina Calgary 4 8 13-4 14-4 4-4 4 9 7

max_flow = 16

slide-69
SLIDE 69

Network Max Flow

What the maximum amount we can ship from Vancouver to Winnipeg?

69

s

v1 v3 v2 v4

t

Edmonton Saskatoon Vancouver Winnipeg Regina Calgary 4 8 9 10 4 9 7

max_flow = 16

slide-70
SLIDE 70

Network Max Flow

What the maximum amount we can ship from Vancouver to Winnipeg?

70

s

v1 v3 v2 v4

t

Edmonton Saskatoon Vancouver Winnipeg Regina Calgary 4 8 9 10 4 9 7

max_flow = 16

slide-71
SLIDE 71

Network Max Flow

What the maximum amount we can ship from Vancouver to Winnipeg?

71

s

v1 v3 v2 v4

t

Edmonton Saskatoon Vancouver Winnipeg Regina Calgary 4 8-7 9-7 10-7 4 9 7-7

max_flow = 23

slide-72
SLIDE 72

Network Max Flow

What the maximum amount we can ship from Vancouver to Winnipeg?

72

s

v1 v3 v2 v4

t

Edmonton Saskatoon Vancouver Winnipeg Regina Calgary 4 1 2 3 4 9

max_flow = 23

slide-73
SLIDE 73

Book Readings & Credits

Book Readings:

  • Ch. 22, 23.2, 24.3, 26.1, 26.2

Credits:

Figures: Wikipedia btechsmartclass.com https://www.codingeek.com/data-structure/graph-introductions- explanations-and-applications/

  • Prof. Ahmed Eldawy notes

Laksman Veeravagu and Luis Barrera

73