Top Banner
1 Euler Tour: Example 0: 1 2 5 6 1: 0 2 2: 0 3 4 1 3: 4 2 4: 6 5 3 2 5: 4 0 6: 4 0 0 6 4 2 1 5 3 Adjacency list
24

1 Euler Tour: Example 0: 1 2 5 6 1: 0 2 2: 0 3 4 1 3: 4 2 4: 6 5 3 2 5: 4 0 6: 4 0 0 6 4 21 5 3 Adjacency list.

Dec 19, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 1 Euler Tour: Example 0: 1 2 5 6 1: 0 2 2: 0 3 4 1 3: 4 2 4: 6 5 3 2 5: 4 0 6: 4 0 0 6 4 21 5 3 Adjacency list.

1

Euler Tour: Example

0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0

0

6

4

21

5

3

Adjacency list

Page 2: 1 Euler Tour: Example 0: 1 2 5 6 1: 0 2 2: 0 3 4 1 3: 4 2 4: 6 5 3 2 5: 4 0 6: 4 0 0 6 4 21 5 3 Adjacency list.

2

Euler Tour: Example

0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0

0

6

4

21

5

3

Adjacency list

0

stdout

stack

Page 3: 1 Euler Tour: Example 0: 1 2 5 6 1: 0 2 2: 0 3 4 1 3: 4 2 4: 6 5 3 2 5: 4 0 6: 4 0 0 6 4 21 5 3 Adjacency list.

3

Euler Tour: Example

0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0

0

6

4

21

5

3

1

stack

Adjacency list

XX

stdout

0

Page 4: 1 Euler Tour: Example 0: 1 2 5 6 1: 0 2 2: 0 3 4 1 3: 4 2 4: 6 5 3 2 5: 4 0 6: 4 0 0 6 4 21 5 3 Adjacency list.

4

Euler Tour: Example

0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0

0

6

4

21

5

3

1

Adjacency list

2

XX X

X

stdout

0

stack

Page 5: 1 Euler Tour: Example 0: 1 2 5 6 1: 0 2 2: 0 3 4 1 3: 4 2 4: 6 5 3 2 5: 4 0 6: 4 0 0 6 4 21 5 3 Adjacency list.

5

Euler Tour: Example

0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0

0

6

4

21

5

3

1

Adjacency list

2

XXX

XX

X

0

stdout

0

stack

Page 6: 1 Euler Tour: Example 0: 1 2 5 6 1: 0 2 2: 0 3 4 1 3: 4 2 4: 6 5 3 2 5: 4 0 6: 4 0 0 6 4 21 5 3 Adjacency list.

6

Euler Tour: Example

0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0

0

6

4

21

5

3

Adjacency list

XXX

XX

X X

X

1

2

0

5

stdout

0

stack

Page 7: 1 Euler Tour: Example 0: 1 2 5 6 1: 0 2 2: 0 3 4 1 3: 4 2 4: 6 5 3 2 5: 4 0 6: 4 0 0 6 4 21 5 3 Adjacency list.

7

Euler Tour: Example

0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0

0

6

4

21

5

3

Adjacency list

XXX

XX

X X

X XX

1

2

0

5

4

stdout

0

stack

Page 8: 1 Euler Tour: Example 0: 1 2 5 6 1: 0 2 2: 0 3 4 1 3: 4 2 4: 6 5 3 2 5: 4 0 6: 4 0 0 6 4 21 5 3 Adjacency list.

8

Euler Tour: Example

0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0

0

6

4

21

5

3

Adjacency list

stdout

XXX

XX

X X

X XX

X

X

1

2

0

5

4

6

0

stack

Page 9: 1 Euler Tour: Example 0: 1 2 5 6 1: 0 2 2: 0 3 4 1 3: 4 2 4: 6 5 3 2 5: 4 0 6: 4 0 0 6 4 21 5 3 Adjacency list.

9

Euler Tour: Example

0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0

0

6

4

21

5

3

Adjacency list

stdout

XXX

XX

X X

X XX

X

X

X

X1

2

0

5

4

6

0

0

stack

Page 10: 1 Euler Tour: Example 0: 1 2 5 6 1: 0 2 2: 0 3 4 1 3: 4 2 4: 6 5 3 2 5: 4 0 6: 4 0 0 6 4 21 5 3 Adjacency list.

10

Euler Tour: Example

0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0

0

6

4

21

5

3

Adjacency list

0

stdout

XXX

XX

X X

X XX

X

X

X

X1

2

0

5

4

6

0

stack

Page 11: 1 Euler Tour: Example 0: 1 2 5 6 1: 0 2 2: 0 3 4 1 3: 4 2 4: 6 5 3 2 5: 4 0 6: 4 0 0 6 4 21 5 3 Adjacency list.

11

Euler Tour: Example

0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0

0

6

4

21

5

3

Adjacency list

0 6

stdout

XXX

XX

X X

X XX

X

X

X

X1

2

0

5

4

0

stack

Page 12: 1 Euler Tour: Example 0: 1 2 5 6 1: 0 2 2: 0 3 4 1 3: 4 2 4: 6 5 3 2 5: 4 0 6: 4 0 0 6 4 21 5 3 Adjacency list.

12

Euler Tour: Example

0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0

0

6

4

21

5

3

Adjacency list

XXX

XX

X X

X XX

X

X

X

X1

2

0

5

0

XX

0 6

stdout

4

3

stack

Page 13: 1 Euler Tour: Example 0: 1 2 5 6 1: 0 2 2: 0 3 4 1 3: 4 2 4: 6 5 3 2 5: 4 0 6: 4 0 0 6 4 21 5 3 Adjacency list.

13

Euler Tour: Example

0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0

0

6

4

21

5

3

Adjacency list

XXX

XX

X X

X XX

X

X

X

X1

2

0

5

0

XX

XX

0 6

stdout

4

3

2

stack

Page 14: 1 Euler Tour: Example 0: 1 2 5 6 1: 0 2 2: 0 3 4 1 3: 4 2 4: 6 5 3 2 5: 4 0 6: 4 0 0 6 4 21 5 3 Adjacency list.

14

Euler Tour: Example

0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0

0

6

4

21

5

3

Adjacency list

XXX

XX

X X

X XX

X

X

X

X1

2

0

5

0

XX

XX X

X

0 6

stdout

4

3

2

4

stack

Page 15: 1 Euler Tour: Example 0: 1 2 5 6 1: 0 2 2: 0 3 4 1 3: 4 2 4: 6 5 3 2 5: 4 0 6: 4 0 0 6 4 21 5 3 Adjacency list.

15

Euler Tour: Example

0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0

0

6

4

21

5

3

Adjacency list

XXX

XX

X X

X XX

X

X

X

X1

2

0

5

0

XX

XX X

X

0 6 4

stdout

4

3

2

stack

Page 16: 1 Euler Tour: Example 0: 1 2 5 6 1: 0 2 2: 0 3 4 1 3: 4 2 4: 6 5 3 2 5: 4 0 6: 4 0 0 6 4 21 5 3 Adjacency list.

16

Euler Tour: Example

0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0

0

6

4

21

5

3

Adjacency list

XXX

XX

X X

X XX

X

X

X

X1

2

0

5

0

XX

XX X

X

0 6 4 2

stdout

4

3

stack

Page 17: 1 Euler Tour: Example 0: 1 2 5 6 1: 0 2 2: 0 3 4 1 3: 4 2 4: 6 5 3 2 5: 4 0 6: 4 0 0 6 4 21 5 3 Adjacency list.

17

Euler Tour: Example

0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0

0

6

4

21

5

3

Adjacency list

XXX

XX

X X

X XX

X

X

X

X1

2

0

5

0

XX

XX X

X

0 6 4 2 3

stdout

4

stack

Page 18: 1 Euler Tour: Example 0: 1 2 5 6 1: 0 2 2: 0 3 4 1 3: 4 2 4: 6 5 3 2 5: 4 0 6: 4 0 0 6 4 21 5 3 Adjacency list.

18

Euler Tour: Example

0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0

0

6

4

21

5

3

Adjacency list

XXX

XX

X X

X XX

X

X

X

X1

2

0

5

0

XX

XX X

X

0 6 4 2 3 4

stdout

stack

Page 19: 1 Euler Tour: Example 0: 1 2 5 6 1: 0 2 2: 0 3 4 1 3: 4 2 4: 6 5 3 2 5: 4 0 6: 4 0 0 6 4 21 5 3 Adjacency list.

19

Euler Tour: Example

0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0

0

6

4

21

5

3

Adjacency list

XXX

XX

X X

X XX

X

X

X

X1

2

0

0

XX

XX X

X

0 6 4 2 3 4 5

stdout

stack

Page 20: 1 Euler Tour: Example 0: 1 2 5 6 1: 0 2 2: 0 3 4 1 3: 4 2 4: 6 5 3 2 5: 4 0 6: 4 0 0 6 4 21 5 3 Adjacency list.

20

Euler Tour: Example

0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0

0

6

4

21

5

3

Adjacency list

XXX

XX

X X

X XX

X

X

X

X1

2

0

XX

XX X

X

0 6 4 2 3 4 5 0

stdout

stack

Page 21: 1 Euler Tour: Example 0: 1 2 5 6 1: 0 2 2: 0 3 4 1 3: 4 2 4: 6 5 3 2 5: 4 0 6: 4 0 0 6 4 21 5 3 Adjacency list.

21

Euler Tour: Example

0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0

0

6

4

21

5

3

Adjacency list

XXX

XX

X X

X XX

X

X

X

X1

0

XX

XX X

X

0 6 4 2 3 4 5 0 2

stdout

stack

Page 22: 1 Euler Tour: Example 0: 1 2 5 6 1: 0 2 2: 0 3 4 1 3: 4 2 4: 6 5 3 2 5: 4 0 6: 4 0 0 6 4 21 5 3 Adjacency list.

22

Euler Tour: Example

0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0

0

6

4

21

5

3

Adjacency list

XXX

XX

X X

X XX

X

X

X

X

0

XX

XX X

X

0 6 4 2 3 4 5 0 2 1

stdout

stack

Page 23: 1 Euler Tour: Example 0: 1 2 5 6 1: 0 2 2: 0 3 4 1 3: 4 2 4: 6 5 3 2 5: 4 0 6: 4 0 0 6 4 21 5 3 Adjacency list.

23

Euler Tour: Example

0: 1 2 5 61: 0 22: 0 3 4 13: 4 24: 6 5 3 25: 4 06: 4 0

0

6

4

21

5

3

Adjacency list

XXX

XX

X X

X XX

X

X

X

X

XX

XX X

X

0 6 4 2 3 4 5 0 2 1 0

stdout

Page 24: 1 Euler Tour: Example 0: 1 2 5 6 1: 0 2 2: 0 3 4 1 3: 4 2 4: 6 5 3 2 5: 4 0 6: 4 0 0 6 4 21 5 3 Adjacency list.

24

int euler(Graph G, int v) { link t; int w; for(t = G->adj[v]; t != NULL, v = w) { STACKpush(v); w = t->w; GRAPHremove(G, EDGE(v, w)); } return v;}

void GRAPHshowEuler(Graph G, int v) { STACKinit(G->E); STACKpush(v); while ((euler(G, v) == v) && !STACKisempty()) v = STACKpop(); printf("%d ", v); } if (!STACKisempty()) printf("Not Eulerian.\n");}

Euler Tour

Euler Tour: Implementation

cyclic path back to initial vertex

delete both copies of edge