Graph Dr. Bernard Chen Ph.D. University of Central Arkansas.

54
Graph Dr. Bernard Chen Ph.D. University of Central Arkansas

Transcript of Graph Dr. Bernard Chen Ph.D. University of Central Arkansas.

Graph

Dr. Bernard Chen Ph.D.University of Central Arkansas

Graph Algorithms

Graphs and Theorems about Graphs

Graph Algorithms minimum spanning tree

What can graphs model?

Cost of wiring electronic components together.

Shortest route between two cities. Finding the shortest distance

between all pairs of cities in a road atlas.

What is a Graph?

Informally a graph is a set of nodes joined by a set of lines or arrows.

1 12 3

4 45 56 6

2 3

Directed Graph A directed graph is a pair ( V, E ),

where the set V is a finite set and E is a binary relation on V .

The set V is called the vertex set of G and the elements are called vertices.

The set E is called the edge set of G and the elements are edges

Directed Graph

1 2 3

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

E = { (1,2), (2,2), (2,4), (4,5), (4,1), (5,4),(6,3) }| E | = 7

Self loop

7 Isolated node

Undirected Graph

An undirected graph G = ( V , E ) , but unlike a digraph the edge set E consist of unordered pairs.

We use the notation (a, b ) to refer to a directed edge, and { a, b } for an undirected edge.

Undirected Graph

A

D E F

B C V = { A, B, C, D, E, F } |V | = 6

E = { {A, B}, {A,E}, {B,E}, {C,F} } |E | = 4

Some texts use (a, b) also for undirected edges. So ( a, b ) and ( b, a ) refers to the same edge.

Degree

Degree of a Vertex in an undirected graph is the number of edges incident on it.

In a directed graph , the out degree of a vertex is the number of edges leaving it and the in degree is the number of edges entering it.

Degree

A

D E F

B C The degree of B is 2.

Degree

1 2

4 5

The in degree of 2 is 2 andthe out degree of 2 is 3.

Weighted Graph

A weighted graph is a graph for which each edge has an associated weight, usually given by a weight function w: E R.

1 2 3

4 5 6

.5

1.2

.2

.5

1.5.3

Weighted Graph

Implementation of a Graph

Adjacency-list representation of a graph G = ( V, E ) consists of an array ADJ of |V | lists, one for each vertex in V. For each u V , ADJ [ u ] points to all its adjacent vertices.

Implementation of a Graph

1

5

1

22

5

4 4

3 3

2 5

1 5 3 4

2 4

2

4

5

1

3

2

Implementation of a Graph

1

5

1

22

5

4 4

3 3

2 5

5 3 4

4

5

5

Adjacency lists

Advantage: Saves space for sparse graphs. Most

graphs are sparse.

“Visit” edges that start at v Must traverse linked list of v Size of linked list of v is degree(v) (degree(v))

Adjacency-matrix-representation Adjacency-matrix-

representation of a graph G = ( V, E) is a |V | x |V | matrix A = ( aij )

such that aij = 1 (or some Object) if (i, j ) E 0 (or null) otherwise.

Adjacency-matrix-representation

0

4

1

3

2

0 1 2 3 4

01234

0 1 0 0 11 0 1 1 10 1 0 1 0

0 1 1 0 11 1 0 1 0

Adjacency-matrix-representation

0 1 0 0 10 0 1 1 10 0 0 1 0

0 0 0 0 10 0 0 0 0

0 1 2 3 4

01234

0

4

1

3

2

Adjacency-matrix-representation

Advantage: Saves space on pointers for dense

graphs, and on small unweighted graphs using 1 bit

per edge. Check for existence of an edge (v, u)

(adjacency [i] [j]) == true?) So (1)

Graph Algorithms

Graphs and Theorems about Graphs

Graph Algorithms minimum spanning tree

Minimum Spanning Tree

Example of MST

Problem: Laying Telephone Wire

Central office

Wiring: Naïve Approach

Central office

Expensive!

Wiring: Better Approach

Central office

Minimize the total length of wire connecting the customers

Growing an MST: general idea

GENERIC-MST(G,w)

1. A{}2. while A does not form a spanning tree3. do find an edge (u,v) that is safe

for A4. A A U {(u,v)}5. return A

Tricky part

How do you find a safe edge? This safe edge is part of the minimum

spanning tree

Algorithms for MST

Prim’s Grow a MST by adding a single edge at a

time

Kruskal’s Choose a smallest edge and add it to the

forest If an edge is formed a cycle, it is

rejected

Prim’s greedy algorithm Start from some (any) vertex.

Build up spanning tree T, one vertex at a time.

At each step, add to T the lowest-weight edge in G that does not create a cycle.

Stop when all vertices in G are touched

Prim’s MST algorithm

Example

A

B

D

G

C

F

IE

H

2 3

4

57

8

4

3

1

6

9

2

7

Min EdgePick a root

A

B

D

G

C

F

IE

H

2 3

4

57

8

4

3

1

6

9

2

7

= in heap

Min Edge = 1

A

B

D

G

C

F

IE

H

2 3

4

57

8

4

3

1

6

9

2

7

Min Edge = 2

A

B

D

G

C

F

IE

H

2 3

4

57

8

4

3

1

6

9

2

7

Min Edge = 2

A

B

D

G

C

F

IE

H

2 3

4

57

8

4

3

1

6

9

2

7

Min Edge = 3

A

B

D

G

C

F

IE

H

2 3

4

57

8

4

3

1

6

9

2

7

Min Edge = 4

A

B

D

G

C

F

IE

H

2 3

4

57

8

4

3

1

6

9

2

7

Min Edge = 3

A

B

D

G

C

F

IE

H

2 3

4

57

8

4

3

1

6

9

2

7

Min Edge = 4

A

B

D

G

C

F

IE

H

2 3

4

57

8

4

3

1

6

9

2

7

Min Edge = 6

A

B

D

G

C

F

IE

H

2 3

4

57

8

4

3

1

6

9

2

7

Example II

Kruskal’s Algorithm

Choose the smallest edge and add it to a forest

Keep connecting components until all vertices connected

If an edge would form a cycle, it is rejected.

Example

A

B

D

G

C

F

IE

H

2 3

4

57

8

4

3

1

6

9

2

7

Min Edge = 1

A

B

D

G

C

F

IE

H

2 3

4

57

8

4

3

1

6

9

2

7

Min Edge = 2

A

B

D

G

C

F

IE

H

2 3

4

57

8

4

3

1

6

9

2

7

Min Edge = 2

A

B

D

G

C

F

IE

H

2 3

4

57

8

4

3

1

6

9

2

7

Min Edge = 3

A

B

D

G

C

F

IE

H

2 3

4

57

8

4

3

1

6

9

2

7

Now have 2 disjoint components:

ABFG and CH

Min Edge = 3

A

B

D

G

C

F

IE

H

2 3

4

57

8

4

3

1

6

9

2

7

Min Edge = 4

A

B

D

G

C

F

IE

H

2 3

4

57

8

4

3

1

6

9

2

7

Two components now merged into one.

Min Edge = 4

A

B

D

G

C

F

IE

H

2 3

4

57

8

4

3

1

6

9

2

7

Min Edge = 5

A

B

D

G

C

F

IE

H

2 3

4

57

8

4

3

1

6

9

2

7Rejected due to a cycle BFGB

Min Edge = 6

A

B

D

G

C

F

IE

H

2 3

4

57

8

4

3

1

6

9

2

7