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...

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 2 1 5 3 Adjacency list
  • date post

    19-Dec-2015
  • Category

    Documents

  • view

    225
  • download

    2

Transcript of 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...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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