mc-202 — unidade 20 percurso de grafosrafael/cursos/1s2017/mc... · mc-202 — unidade 20...
TRANSCRIPT
![Page 1: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/1.jpg)
MC-202 — Unidade 20Percurso de Grafos
Rafael C. S. [email protected]
Universidade Estadual de Campinas
1º semestre/2017
![Page 2: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/2.jpg)
Caminhos em Grafos
0
1
2 3
45
6
7 8
9
Um caminho de s para t em um grafo é:
• Uma sequência sem repetição de vértices vizinhos• Começando em s e terminado em t
Por exemplo:• 0, 1, 6, 7, 2, 3, 8 é um caminho de 0 para 8• 0, 5, 8 não é um caminho de 0 para 8• 0, 1, 2, 7, 6, 1, 2, 3, 8 não é um caminho de 0 para 8
2
![Page 3: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/3.jpg)
Caminhos em Grafos
0
1
2 3
45
6
7 8
9
Um caminho de s para t em um grafo é:• Uma sequência sem repetição de vértices vizinhos
• Começando em s e terminado em t
Por exemplo:• 0, 1, 6, 7, 2, 3, 8 é um caminho de 0 para 8• 0, 5, 8 não é um caminho de 0 para 8• 0, 1, 2, 7, 6, 1, 2, 3, 8 não é um caminho de 0 para 8
2
![Page 4: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/4.jpg)
Caminhos em Grafos
0
1
2 3
45
6
7 8
9
Um caminho de s para t em um grafo é:• Uma sequência sem repetição de vértices vizinhos• Começando em s e terminado em t
Por exemplo:• 0, 1, 6, 7, 2, 3, 8 é um caminho de 0 para 8• 0, 5, 8 não é um caminho de 0 para 8• 0, 1, 2, 7, 6, 1, 2, 3, 8 não é um caminho de 0 para 8
2
![Page 5: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/5.jpg)
Caminhos em Grafos
0
1
2 3
45
6
7 8
9
Um caminho de s para t em um grafo é:• Uma sequência sem repetição de vértices vizinhos• Começando em s e terminado em t
Por exemplo:
• 0, 1, 6, 7, 2, 3, 8 é um caminho de 0 para 8• 0, 5, 8 não é um caminho de 0 para 8• 0, 1, 2, 7, 6, 1, 2, 3, 8 não é um caminho de 0 para 8
2
![Page 6: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/6.jpg)
Caminhos em Grafos
0
1
2 3
45
6
7 8
9
Um caminho de s para t em um grafo é:• Uma sequência sem repetição de vértices vizinhos• Começando em s e terminado em t
Por exemplo:• 0, 1, 6, 7, 2, 3, 8 é um caminho de 0 para 8
• 0, 5, 8 não é um caminho de 0 para 8• 0, 1, 2, 7, 6, 1, 2, 3, 8 não é um caminho de 0 para 8
2
![Page 7: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/7.jpg)
Caminhos em Grafos
0
1
2 3
45
6
7 8
9
Um caminho de s para t em um grafo é:• Uma sequência sem repetição de vértices vizinhos• Começando em s e terminado em t
Por exemplo:• 0, 1, 6, 7, 2, 3, 8 é um caminho de 0 para 8• 0, 5, 8 não é um caminho de 0 para 8
• 0, 1, 2, 7, 6, 1, 2, 3, 8 não é um caminho de 0 para 8
2
![Page 8: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/8.jpg)
Caminhos em Grafos
0
1
2 3
45
6
7 8
9
Um caminho de s para t em um grafo é:• Uma sequência sem repetição de vértices vizinhos• Começando em s e terminado em t
Por exemplo:• 0, 1, 6, 7, 2, 3, 8 é um caminho de 0 para 8• 0, 5, 8 não é um caminho de 0 para 8• 0, 1, 2, 7, 6, 1, 2, 3, 8 não é um caminho de 0 para 8
2
![Page 9: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/9.jpg)
Caminhos em Grafos0
1
2 3
45
6
7 8
9
Formalmente, um caminho de s para t em um grafo é:
• Uma sequência de vértice v0, v1, . . . , vk onde• v0 = s e vk = t
• {vi, vi+1} é uma aresta para todo 0 ≤ i ≤ k − 1• vi ̸= vj para todo 0 ≤ i < j ≤ k
k é o comprimento do caminho• k = 0 se e somente se s = t
3
![Page 10: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/10.jpg)
Caminhos em Grafos0
1
2 3
45
6
7 8
9
Formalmente, um caminho de s para t em um grafo é:• Uma sequência de vértice v0, v1, . . . , vk onde
• v0 = s e vk = t
• {vi, vi+1} é uma aresta para todo 0 ≤ i ≤ k − 1• vi ̸= vj para todo 0 ≤ i < j ≤ k
k é o comprimento do caminho• k = 0 se e somente se s = t
3
![Page 11: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/11.jpg)
Caminhos em Grafos0
1
2 3
45
6
7 8
9
Formalmente, um caminho de s para t em um grafo é:• Uma sequência de vértice v0, v1, . . . , vk onde• v0 = s e vk = t
• {vi, vi+1} é uma aresta para todo 0 ≤ i ≤ k − 1• vi ̸= vj para todo 0 ≤ i < j ≤ k
k é o comprimento do caminho• k = 0 se e somente se s = t
3
![Page 12: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/12.jpg)
Caminhos em Grafos0
1
2 3
45
6
7 8
9
Formalmente, um caminho de s para t em um grafo é:• Uma sequência de vértice v0, v1, . . . , vk onde• v0 = s e vk = t
• {vi, vi+1} é uma aresta para todo 0 ≤ i ≤ k − 1
• vi ̸= vj para todo 0 ≤ i < j ≤ k
k é o comprimento do caminho• k = 0 se e somente se s = t
3
![Page 13: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/13.jpg)
Caminhos em Grafos0
1
2 3
45
6
7 8
9
Formalmente, um caminho de s para t em um grafo é:• Uma sequência de vértice v0, v1, . . . , vk onde• v0 = s e vk = t
• {vi, vi+1} é uma aresta para todo 0 ≤ i ≤ k − 1• vi ̸= vj para todo 0 ≤ i < j ≤ k
k é o comprimento do caminho• k = 0 se e somente se s = t
3
![Page 14: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/14.jpg)
Caminhos em Grafos0
1
2 3
45
6
7 8
9
Formalmente, um caminho de s para t em um grafo é:• Uma sequência de vértice v0, v1, . . . , vk onde• v0 = s e vk = t
• {vi, vi+1} é uma aresta para todo 0 ≤ i ≤ k − 1• vi ̸= vj para todo 0 ≤ i < j ≤ k
k é o comprimento do caminho
• k = 0 se e somente se s = t
3
![Page 15: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/15.jpg)
Caminhos em Grafos0
1
2 3
45
6
7 8
9
Formalmente, um caminho de s para t em um grafo é:• Uma sequência de vértice v0, v1, . . . , vk onde• v0 = s e vk = t
• {vi, vi+1} é uma aresta para todo 0 ≤ i ≤ k − 1• vi ̸= vj para todo 0 ≤ i < j ≤ k
k é o comprimento do caminho• k = 0 se e somente se s = t
3
![Page 16: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/16.jpg)
Componentes ConexasUm grafo pode ter várias “partes”
0
1
2 3
45
6
7 8
9
10
11
12
13
14
15
Chamamos essas partes de Componentes Conexas• Um par de vértices está na mesma componente se e
somente se existe caminho entre eles
– Não há caminho entre vértices de componentes distintas
• Um grafo conexo tem apenas uma componente conexa
4
![Page 17: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/17.jpg)
Componentes ConexasUm grafo pode ter várias “partes”
0
1
2 3
45
6
7 8
9
10
11
12
13
14
15
Chamamos essas partes de Componentes Conexas• Um par de vértices está na mesma componente se e
somente se existe caminho entre eles
– Não há caminho entre vértices de componentes distintas
• Um grafo conexo tem apenas uma componente conexa
4
![Page 18: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/18.jpg)
Componentes ConexasUm grafo pode ter várias “partes”
0
1
2 3
45
6
7 8
9
10
11
12
13
14
15
Chamamos essas partes de Componentes Conexas• Um par de vértices está na mesma componente se e
somente se existe caminho entre eles
– Não há caminho entre vértices de componentes distintas
• Um grafo conexo tem apenas uma componente conexa
4
![Page 19: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/19.jpg)
Componentes ConexasUm grafo pode ter várias “partes”
0
1
2 3
45
6
7 8
9
10
11
12
13
14
15
Chamamos essas partes de Componentes Conexas• Um par de vértices está na mesma componente se e
somente se existe caminho entre eles
– Não há caminho entre vértices de componentes distintas
• Um grafo conexo tem apenas uma componente conexa
4
![Page 20: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/20.jpg)
Componentes ConexasUm grafo pode ter várias “partes”
0
1
2 3
45
6
7 8
9
10
11
12
13
14
15
Chamamos essas partes de Componentes Conexas• Um par de vértices está na mesma componente se e
somente se existe caminho entre eles
– Não há caminho entre vértices de componentes distintas
• Um grafo conexo tem apenas uma componente conexa
4
![Page 21: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/21.jpg)
Componentes ConexasUm grafo pode ter várias “partes”
0
1
2 3
45
6
7 8
9
10
11
12
13
14
15
Chamamos essas partes de Componentes Conexas• Um par de vértices está na mesma componente se e
somente se existe caminho entre eles
– Não há caminho entre vértices de componentes distintas
• Um grafo conexo tem apenas uma componente conexa
4
![Page 22: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/22.jpg)
Componentes ConexasUm grafo pode ter várias “partes”
0
1
2 3
45
6
7 8
9
10
11
12
13
14
15
Chamamos essas partes de Componentes Conexas
• Um par de vértices está na mesma componente se esomente se existe caminho entre eles
– Não há caminho entre vértices de componentes distintas
• Um grafo conexo tem apenas uma componente conexa
4
![Page 23: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/23.jpg)
Componentes ConexasUm grafo pode ter várias “partes”
0
1
2 3
45
6
7 8
9
10
11
12
13
14
15
Chamamos essas partes de Componentes Conexas• Um par de vértices está na mesma componente se e
somente se existe caminho entre eles
– Não há caminho entre vértices de componentes distintas
• Um grafo conexo tem apenas uma componente conexa
4
![Page 24: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/24.jpg)
Componentes ConexasUm grafo pode ter várias “partes”
0
1
2 3
45
6
7 8
9
10
11
12
13
14
15
Chamamos essas partes de Componentes Conexas• Um par de vértices está na mesma componente se e
somente se existe caminho entre eles– Não há caminho entre vértices de componentes distintas
• Um grafo conexo tem apenas uma componente conexa
4
![Page 25: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/25.jpg)
Componentes ConexasUm grafo pode ter várias “partes”
0
1
2 3
45
6
7 8
9
10
11
12
13
14
15
Chamamos essas partes de Componentes Conexas• Um par de vértices está na mesma componente se e
somente se existe caminho entre eles– Não há caminho entre vértices de componentes distintas
• Um grafo conexo tem apenas uma componente conexa4
![Page 26: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/26.jpg)
Existe caminho entre s e t?Queremos saber se s e t estão na mesma componente conexa
Se estiverem, existe algum caminho de s até t
s v1 v2 vk−1 t· · ·
Se existe caminho e s ̸= t, existe um segundo vértice v1
• E v1 é vizinho de s
• Então, ou v1 = t, ou existe um terceiro vértice v2
– E v2 é vizinho de v1
• E assim por diante...
A dificuldade é acertar qual vizinho v1 de s devemos usar...• Solução: testar todos!
5
![Page 27: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/27.jpg)
Existe caminho entre s e t?Queremos saber se s e t estão na mesma componente conexa
Se estiverem, existe algum caminho de s até t
s v1 v2 vk−1 t· · ·
Se existe caminho e s ̸= t, existe um segundo vértice v1
• E v1 é vizinho de s
• Então, ou v1 = t, ou existe um terceiro vértice v2
– E v2 é vizinho de v1
• E assim por diante...
A dificuldade é acertar qual vizinho v1 de s devemos usar...• Solução: testar todos!
5
![Page 28: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/28.jpg)
Existe caminho entre s e t?Queremos saber se s e t estão na mesma componente conexa
Se estiverem, existe algum caminho de s até t
s v1 v2 vk−1 t· · ·
Se existe caminho e s ̸= t, existe um segundo vértice v1
• E v1 é vizinho de s
• Então, ou v1 = t, ou existe um terceiro vértice v2
– E v2 é vizinho de v1
• E assim por diante...
A dificuldade é acertar qual vizinho v1 de s devemos usar...• Solução: testar todos!
5
![Page 29: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/29.jpg)
Existe caminho entre s e t?Queremos saber se s e t estão na mesma componente conexa
Se estiverem, existe algum caminho de s até t
s v1 v2 vk−1 t· · ·
Se existe caminho e s ̸= t, existe um segundo vértice v1
• E v1 é vizinho de s
• Então, ou v1 = t, ou existe um terceiro vértice v2
– E v2 é vizinho de v1
• E assim por diante...
A dificuldade é acertar qual vizinho v1 de s devemos usar...• Solução: testar todos!
5
![Page 30: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/30.jpg)
Existe caminho entre s e t?Queremos saber se s e t estão na mesma componente conexa
Se estiverem, existe algum caminho de s até t
s v1 v2 vk−1 t· · ·
Se existe caminho e s ̸= t, existe um segundo vértice v1
• E v1 é vizinho de s
• Então, ou v1 = t, ou existe um terceiro vértice v2
– E v2 é vizinho de v1
• E assim por diante...
A dificuldade é acertar qual vizinho v1 de s devemos usar...• Solução: testar todos!
5
![Page 31: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/31.jpg)
Existe caminho entre s e t?Queremos saber se s e t estão na mesma componente conexa
Se estiverem, existe algum caminho de s até t
s v1 v2 vk−1 t· · ·
Se existe caminho e s ̸= t, existe um segundo vértice v1
• E v1 é vizinho de s
• Então, ou v1 = t, ou existe um terceiro vértice v2– E v2 é vizinho de v1
• E assim por diante...
A dificuldade é acertar qual vizinho v1 de s devemos usar...• Solução: testar todos!
5
![Page 32: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/32.jpg)
Existe caminho entre s e t?Queremos saber se s e t estão na mesma componente conexa
Se estiverem, existe algum caminho de s até t
s v1 v2 vk−1 t· · ·
Se existe caminho e s ̸= t, existe um segundo vértice v1
• E v1 é vizinho de s
• Então, ou v1 = t, ou existe um terceiro vértice v2– E v2 é vizinho de v1
• E assim por diante...
A dificuldade é acertar qual vizinho v1 de s devemos usar...• Solução: testar todos!
5
![Page 33: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/33.jpg)
Existe caminho entre s e t?Queremos saber se s e t estão na mesma componente conexa
Se estiverem, existe algum caminho de s até t
s v1 v2 vk−1 t· · ·
Se existe caminho e s ̸= t, existe um segundo vértice v1
• E v1 é vizinho de s
• Então, ou v1 = t, ou existe um terceiro vértice v2– E v2 é vizinho de v1
• E assim por diante...
A dificuldade é acertar qual vizinho v1 de s devemos usar...
• Solução: testar todos!
5
![Page 34: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/34.jpg)
Existe caminho entre s e t?Queremos saber se s e t estão na mesma componente conexa
Se estiverem, existe algum caminho de s até t
s v1 v2 vk−1 t· · ·
Se existe caminho e s ̸= t, existe um segundo vértice v1
• E v1 é vizinho de s
• Então, ou v1 = t, ou existe um terceiro vértice v2– E v2 é vizinho de v1
• E assim por diante...
A dificuldade é acertar qual vizinho v1 de s devemos usar...• Solução: testar todos!
5
![Page 35: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/35.jpg)
Exemplo - Existe caminho de 0 até 15?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Essa é uma busca em profundidade:• Vá o máximo possível em uma direção• Se não encontrarmos o vértice, volte o mínimo possível• E pegue um novo caminho por um vértice não visitado
6
![Page 36: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/36.jpg)
Exemplo - Existe caminho de 0 até 15?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Essa é uma busca em profundidade:• Vá o máximo possível em uma direção• Se não encontrarmos o vértice, volte o mínimo possível• E pegue um novo caminho por um vértice não visitado
6
![Page 37: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/37.jpg)
Exemplo - Existe caminho de 0 até 15?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Essa é uma busca em profundidade:• Vá o máximo possível em uma direção• Se não encontrarmos o vértice, volte o mínimo possível• E pegue um novo caminho por um vértice não visitado
6
![Page 38: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/38.jpg)
Exemplo - Existe caminho de 0 até 15?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Essa é uma busca em profundidade:• Vá o máximo possível em uma direção• Se não encontrarmos o vértice, volte o mínimo possível• E pegue um novo caminho por um vértice não visitado
6
![Page 39: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/39.jpg)
Exemplo - Existe caminho de 0 até 15?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Essa é uma busca em profundidade:• Vá o máximo possível em uma direção• Se não encontrarmos o vértice, volte o mínimo possível• E pegue um novo caminho por um vértice não visitado
6
![Page 40: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/40.jpg)
Exemplo - Existe caminho de 0 até 15?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Essa é uma busca em profundidade:• Vá o máximo possível em uma direção• Se não encontrarmos o vértice, volte o mínimo possível• E pegue um novo caminho por um vértice não visitado
6
![Page 41: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/41.jpg)
Exemplo - Existe caminho de 0 até 15?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Essa é uma busca em profundidade:• Vá o máximo possível em uma direção• Se não encontrarmos o vértice, volte o mínimo possível• E pegue um novo caminho por um vértice não visitado
6
![Page 42: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/42.jpg)
Exemplo - Existe caminho de 0 até 15?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Essa é uma busca em profundidade:• Vá o máximo possível em uma direção• Se não encontrarmos o vértice, volte o mínimo possível• E pegue um novo caminho por um vértice não visitado
6
![Page 43: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/43.jpg)
Exemplo - Existe caminho de 0 até 15?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Essa é uma busca em profundidade:• Vá o máximo possível em uma direção• Se não encontrarmos o vértice, volte o mínimo possível• E pegue um novo caminho por um vértice não visitado
6
![Page 44: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/44.jpg)
Exemplo - Existe caminho de 0 até 15?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Essa é uma busca em profundidade:• Vá o máximo possível em uma direção• Se não encontrarmos o vértice, volte o mínimo possível• E pegue um novo caminho por um vértice não visitado
6
![Page 45: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/45.jpg)
Exemplo - Existe caminho de 0 até 15?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Essa é uma busca em profundidade:• Vá o máximo possível em uma direção• Se não encontrarmos o vértice, volte o mínimo possível• E pegue um novo caminho por um vértice não visitado
6
![Page 46: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/46.jpg)
Exemplo - Existe caminho de 0 até 15?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Essa é uma busca em profundidade:• Vá o máximo possível em uma direção• Se não encontrarmos o vértice, volte o mínimo possível• E pegue um novo caminho por um vértice não visitado
6
![Page 47: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/47.jpg)
Exemplo - Existe caminho de 0 até 15?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Essa é uma busca em profundidade:• Vá o máximo possível em uma direção• Se não encontrarmos o vértice, volte o mínimo possível• E pegue um novo caminho por um vértice não visitado
6
![Page 48: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/48.jpg)
Exemplo - Existe caminho de 0 até 15?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Essa é uma busca em profundidade:• Vá o máximo possível em uma direção• Se não encontrarmos o vértice, volte o mínimo possível• E pegue um novo caminho por um vértice não visitado
6
![Page 49: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/49.jpg)
Exemplo - Existe caminho de 0 até 15?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Essa é uma busca em profundidade:• Vá o máximo possível em uma direção• Se não encontrarmos o vértice, volte o mínimo possível• E pegue um novo caminho por um vértice não visitado
6
![Page 50: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/50.jpg)
Exemplo - Existe caminho de 0 até 15?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Essa é uma busca em profundidade:• Vá o máximo possível em uma direção• Se não encontrarmos o vértice, volte o mínimo possível• E pegue um novo caminho por um vértice não visitado
6
![Page 51: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/51.jpg)
Exemplo - Existe caminho de 0 até 15?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Essa é uma busca em profundidade:• Vá o máximo possível em uma direção• Se não encontrarmos o vértice, volte o mínimo possível• E pegue um novo caminho por um vértice não visitado
6
![Page 52: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/52.jpg)
Exemplo - Existe caminho de 0 até 15?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Essa é uma busca em profundidade:• Vá o máximo possível em uma direção• Se não encontrarmos o vértice, volte o mínimo possível• E pegue um novo caminho por um vértice não visitado
6
![Page 53: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/53.jpg)
Exemplo - Existe caminho de 0 até 15?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Essa é uma busca em profundidade:• Vá o máximo possível em uma direção• Se não encontrarmos o vértice, volte o mínimo possível• E pegue um novo caminho por um vértice não visitado
6
![Page 54: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/54.jpg)
Exemplo - Existe caminho de 0 até 15?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Essa é uma busca em profundidade:• Vá o máximo possível em uma direção• Se não encontrarmos o vértice, volte o mínimo possível• E pegue um novo caminho por um vértice não visitado
6
![Page 55: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/55.jpg)
Exemplo - Existe caminho de 0 até 15?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Essa é uma busca em profundidade:• Vá o máximo possível em uma direção• Se não encontrarmos o vértice, volte o mínimo possível• E pegue um novo caminho por um vértice não visitado
6
![Page 56: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/56.jpg)
Exemplo - Existe caminho de 0 até 15?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Essa é uma busca em profundidade:• Vá o máximo possível em uma direção• Se não encontrarmos o vértice, volte o mínimo possível• E pegue um novo caminho por um vértice não visitado
6
![Page 57: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/57.jpg)
Exemplo - Existe caminho de 0 até 15?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Essa é uma busca em profundidade:• Vá o máximo possível em uma direção• Se não encontrarmos o vértice, volte o mínimo possível• E pegue um novo caminho por um vértice não visitado
6
![Page 58: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/58.jpg)
Exemplo - Existe caminho de 0 até 15?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Essa é uma busca em profundidade:
• Vá o máximo possível em uma direção• Se não encontrarmos o vértice, volte o mínimo possível• E pegue um novo caminho por um vértice não visitado
6
![Page 59: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/59.jpg)
Exemplo - Existe caminho de 0 até 15?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Essa é uma busca em profundidade:• Vá o máximo possível em uma direção
• Se não encontrarmos o vértice, volte o mínimo possível• E pegue um novo caminho por um vértice não visitado
6
![Page 60: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/60.jpg)
Exemplo - Existe caminho de 0 até 15?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Essa é uma busca em profundidade:• Vá o máximo possível em uma direção• Se não encontrarmos o vértice, volte o mínimo possível
• E pegue um novo caminho por um vértice não visitado
6
![Page 61: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/61.jpg)
Exemplo - Existe caminho de 0 até 15?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Essa é uma busca em profundidade:• Vá o máximo possível em uma direção• Se não encontrarmos o vértice, volte o mínimo possível• E pegue um novo caminho por um vértice não visitado
6
![Page 62: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/62.jpg)
Implementação (com Matriz de Adjacências)1 int existe_caminho(Grafo g, int s, int t) {2 int encontrou, i, *visitado = malloc(g.n * sizeof(int));3 for (i = 0; i < g.n; i++)4 visitado[i] = 0;5 encontrou = busca_rec(g, visitado, s, t);6 free(visitado);7 return encontrou;8 }
1 int busca_rec(Grafo g, int *visitado, int v, int t) {2 int w;3 if (v == t)4 return 1; /*sempre existe caminho de t para t*/5 visitado[v] = 1;6 for (w = 0; w < g.n; w++)7 if (g.adj[v][w] && !visitado[w])8 if (busca_rec(g, visitado, w, t))9 return 1;
10 return 0;11 }
E se quisermos saber quais são as componentes conexas?
7
![Page 63: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/63.jpg)
Implementação (com Matriz de Adjacências)1 int existe_caminho(Grafo g, int s, int t) {2 int encontrou, i, *visitado = malloc(g.n * sizeof(int));3 for (i = 0; i < g.n; i++)4 visitado[i] = 0;5 encontrou = busca_rec(g, visitado, s, t);6 free(visitado);7 return encontrou;8 }
1 int busca_rec(Grafo g, int *visitado, int v, int t) {
2 int w;3 if (v == t)4 return 1; /*sempre existe caminho de t para t*/5 visitado[v] = 1;6 for (w = 0; w < g.n; w++)7 if (g.adj[v][w] && !visitado[w])8 if (busca_rec(g, visitado, w, t))9 return 1;
10 return 0;11 }
E se quisermos saber quais são as componentes conexas?
7
![Page 64: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/64.jpg)
Implementação (com Matriz de Adjacências)1 int existe_caminho(Grafo g, int s, int t) {2 int encontrou, i, *visitado = malloc(g.n * sizeof(int));3 for (i = 0; i < g.n; i++)4 visitado[i] = 0;5 encontrou = busca_rec(g, visitado, s, t);6 free(visitado);7 return encontrou;8 }
1 int busca_rec(Grafo g, int *visitado, int v, int t) {2 int w;3 if (v == t)4 return 1; /*sempre existe caminho de t para t*/
5 visitado[v] = 1;6 for (w = 0; w < g.n; w++)7 if (g.adj[v][w] && !visitado[w])8 if (busca_rec(g, visitado, w, t))9 return 1;
10 return 0;11 }
E se quisermos saber quais são as componentes conexas?
7
![Page 65: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/65.jpg)
Implementação (com Matriz de Adjacências)1 int existe_caminho(Grafo g, int s, int t) {2 int encontrou, i, *visitado = malloc(g.n * sizeof(int));3 for (i = 0; i < g.n; i++)4 visitado[i] = 0;5 encontrou = busca_rec(g, visitado, s, t);6 free(visitado);7 return encontrou;8 }
1 int busca_rec(Grafo g, int *visitado, int v, int t) {2 int w;3 if (v == t)4 return 1; /*sempre existe caminho de t para t*/5 visitado[v] = 1;
6 for (w = 0; w < g.n; w++)7 if (g.adj[v][w] && !visitado[w])8 if (busca_rec(g, visitado, w, t))9 return 1;
10 return 0;11 }
E se quisermos saber quais são as componentes conexas?
7
![Page 66: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/66.jpg)
Implementação (com Matriz de Adjacências)1 int existe_caminho(Grafo g, int s, int t) {2 int encontrou, i, *visitado = malloc(g.n * sizeof(int));3 for (i = 0; i < g.n; i++)4 visitado[i] = 0;5 encontrou = busca_rec(g, visitado, s, t);6 free(visitado);7 return encontrou;8 }
1 int busca_rec(Grafo g, int *visitado, int v, int t) {2 int w;3 if (v == t)4 return 1; /*sempre existe caminho de t para t*/5 visitado[v] = 1;6 for (w = 0; w < g.n; w++)
7 if (g.adj[v][w] && !visitado[w])8 if (busca_rec(g, visitado, w, t))9 return 1;
10 return 0;11 }
E se quisermos saber quais são as componentes conexas?
7
![Page 67: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/67.jpg)
Implementação (com Matriz de Adjacências)1 int existe_caminho(Grafo g, int s, int t) {2 int encontrou, i, *visitado = malloc(g.n * sizeof(int));3 for (i = 0; i < g.n; i++)4 visitado[i] = 0;5 encontrou = busca_rec(g, visitado, s, t);6 free(visitado);7 return encontrou;8 }
1 int busca_rec(Grafo g, int *visitado, int v, int t) {2 int w;3 if (v == t)4 return 1; /*sempre existe caminho de t para t*/5 visitado[v] = 1;6 for (w = 0; w < g.n; w++)7 if (g.adj[v][w] && !visitado[w])
8 if (busca_rec(g, visitado, w, t))9 return 1;
10 return 0;11 }
E se quisermos saber quais são as componentes conexas?
7
![Page 68: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/68.jpg)
Implementação (com Matriz de Adjacências)1 int existe_caminho(Grafo g, int s, int t) {2 int encontrou, i, *visitado = malloc(g.n * sizeof(int));3 for (i = 0; i < g.n; i++)4 visitado[i] = 0;5 encontrou = busca_rec(g, visitado, s, t);6 free(visitado);7 return encontrou;8 }
1 int busca_rec(Grafo g, int *visitado, int v, int t) {2 int w;3 if (v == t)4 return 1; /*sempre existe caminho de t para t*/5 visitado[v] = 1;6 for (w = 0; w < g.n; w++)7 if (g.adj[v][w] && !visitado[w])8 if (busca_rec(g, visitado, w, t))9 return 1;
10 return 0;11 }
E se quisermos saber quais são as componentes conexas?
7
![Page 69: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/69.jpg)
Implementação (com Matriz de Adjacências)1 int existe_caminho(Grafo g, int s, int t) {2 int encontrou, i, *visitado = malloc(g.n * sizeof(int));3 for (i = 0; i < g.n; i++)4 visitado[i] = 0;5 encontrou = busca_rec(g, visitado, s, t);6 free(visitado);7 return encontrou;8 }
1 int busca_rec(Grafo g, int *visitado, int v, int t) {2 int w;3 if (v == t)4 return 1; /*sempre existe caminho de t para t*/5 visitado[v] = 1;6 for (w = 0; w < g.n; w++)7 if (g.adj[v][w] && !visitado[w])8 if (busca_rec(g, visitado, w, t))9 return 1;
10 return 0;11 }
E se quisermos saber quais são as componentes conexas?
7
![Page 70: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/70.jpg)
Implementação (com Matriz de Adjacências)1 int existe_caminho(Grafo g, int s, int t) {2 int encontrou, i, *visitado = malloc(g.n * sizeof(int));3 for (i = 0; i < g.n; i++)4 visitado[i] = 0;5 encontrou = busca_rec(g, visitado, s, t);6 free(visitado);7 return encontrou;8 }
1 int busca_rec(Grafo g, int *visitado, int v, int t) {2 int w;3 if (v == t)4 return 1; /*sempre existe caminho de t para t*/5 visitado[v] = 1;6 for (w = 0; w < g.n; w++)7 if (g.adj[v][w] && !visitado[w])8 if (busca_rec(g, visitado, w, t))9 return 1;
10 return 0;11 }
E se quisermos saber quais são as componentes conexas?7
![Page 71: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/71.jpg)
Componentes Conexas (Listas de Adjacência)
1 int * encontra_componentes(Grafo g) {
2 int s, c = 0, *componentes = malloc(g.n * sizeof(int));3 for (s = 0; s < g.n; s++)4 componentes[s] = -1;5 for (s = 0; s < g.n; s++)6 if (componentes[s] == -1) {7 visita_rec(g, componentes, c, s);8 c++;9 }
10 return componentes;11 }
1 void visita_rec(Grafo g, int *componentes, int comp, int v) {2 No *t;3 componentes[v] = comp;4 for (t = g.adj[v]; t != NULL; t = t->prox)5 if (componentes[t->v] == -1)6 visita_rec(g, componentes, comp, t->v);7 }
8
![Page 72: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/72.jpg)
Componentes Conexas (Listas de Adjacência)
1 int * encontra_componentes(Grafo g) {2 int s, c = 0, *componentes = malloc(g.n * sizeof(int));
3 for (s = 0; s < g.n; s++)4 componentes[s] = -1;5 for (s = 0; s < g.n; s++)6 if (componentes[s] == -1) {7 visita_rec(g, componentes, c, s);8 c++;9 }
10 return componentes;11 }
1 void visita_rec(Grafo g, int *componentes, int comp, int v) {2 No *t;3 componentes[v] = comp;4 for (t = g.adj[v]; t != NULL; t = t->prox)5 if (componentes[t->v] == -1)6 visita_rec(g, componentes, comp, t->v);7 }
8
![Page 73: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/73.jpg)
Componentes Conexas (Listas de Adjacência)
1 int * encontra_componentes(Grafo g) {2 int s, c = 0, *componentes = malloc(g.n * sizeof(int));3 for (s = 0; s < g.n; s++)4 componentes[s] = -1;
5 for (s = 0; s < g.n; s++)6 if (componentes[s] == -1) {7 visita_rec(g, componentes, c, s);8 c++;9 }
10 return componentes;11 }
1 void visita_rec(Grafo g, int *componentes, int comp, int v) {2 No *t;3 componentes[v] = comp;4 for (t = g.adj[v]; t != NULL; t = t->prox)5 if (componentes[t->v] == -1)6 visita_rec(g, componentes, comp, t->v);7 }
8
![Page 74: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/74.jpg)
Componentes Conexas (Listas de Adjacência)
1 int * encontra_componentes(Grafo g) {2 int s, c = 0, *componentes = malloc(g.n * sizeof(int));3 for (s = 0; s < g.n; s++)4 componentes[s] = -1;5 for (s = 0; s < g.n; s++)6 if (componentes[s] == -1) {
7 visita_rec(g, componentes, c, s);8 c++;9 }
10 return componentes;11 }
1 void visita_rec(Grafo g, int *componentes, int comp, int v) {2 No *t;3 componentes[v] = comp;4 for (t = g.adj[v]; t != NULL; t = t->prox)5 if (componentes[t->v] == -1)6 visita_rec(g, componentes, comp, t->v);7 }
8
![Page 75: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/75.jpg)
Componentes Conexas (Listas de Adjacência)
1 int * encontra_componentes(Grafo g) {2 int s, c = 0, *componentes = malloc(g.n * sizeof(int));3 for (s = 0; s < g.n; s++)4 componentes[s] = -1;5 for (s = 0; s < g.n; s++)6 if (componentes[s] == -1) {7 visita_rec(g, componentes, c, s);
8 c++;9 }
10 return componentes;11 }
1 void visita_rec(Grafo g, int *componentes, int comp, int v) {2 No *t;3 componentes[v] = comp;4 for (t = g.adj[v]; t != NULL; t = t->prox)5 if (componentes[t->v] == -1)6 visita_rec(g, componentes, comp, t->v);7 }
8
![Page 76: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/76.jpg)
Componentes Conexas (Listas de Adjacência)
1 int * encontra_componentes(Grafo g) {2 int s, c = 0, *componentes = malloc(g.n * sizeof(int));3 for (s = 0; s < g.n; s++)4 componentes[s] = -1;5 for (s = 0; s < g.n; s++)6 if (componentes[s] == -1) {7 visita_rec(g, componentes, c, s);8 c++;
9 }10 return componentes;11 }
1 void visita_rec(Grafo g, int *componentes, int comp, int v) {2 No *t;3 componentes[v] = comp;4 for (t = g.adj[v]; t != NULL; t = t->prox)5 if (componentes[t->v] == -1)6 visita_rec(g, componentes, comp, t->v);7 }
8
![Page 77: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/77.jpg)
Componentes Conexas (Listas de Adjacência)
1 int * encontra_componentes(Grafo g) {2 int s, c = 0, *componentes = malloc(g.n * sizeof(int));3 for (s = 0; s < g.n; s++)4 componentes[s] = -1;5 for (s = 0; s < g.n; s++)6 if (componentes[s] == -1) {7 visita_rec(g, componentes, c, s);8 c++;9 }
10 return componentes;11 }
1 void visita_rec(Grafo g, int *componentes, int comp, int v) {2 No *t;3 componentes[v] = comp;4 for (t = g.adj[v]; t != NULL; t = t->prox)5 if (componentes[t->v] == -1)6 visita_rec(g, componentes, comp, t->v);7 }
8
![Page 78: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/78.jpg)
Componentes Conexas (Listas de Adjacência)
1 int * encontra_componentes(Grafo g) {2 int s, c = 0, *componentes = malloc(g.n * sizeof(int));3 for (s = 0; s < g.n; s++)4 componentes[s] = -1;5 for (s = 0; s < g.n; s++)6 if (componentes[s] == -1) {7 visita_rec(g, componentes, c, s);8 c++;9 }
10 return componentes;11 }
1 void visita_rec(Grafo g, int *componentes, int comp, int v) {
2 No *t;3 componentes[v] = comp;4 for (t = g.adj[v]; t != NULL; t = t->prox)5 if (componentes[t->v] == -1)6 visita_rec(g, componentes, comp, t->v);7 }
8
![Page 79: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/79.jpg)
Componentes Conexas (Listas de Adjacência)
1 int * encontra_componentes(Grafo g) {2 int s, c = 0, *componentes = malloc(g.n * sizeof(int));3 for (s = 0; s < g.n; s++)4 componentes[s] = -1;5 for (s = 0; s < g.n; s++)6 if (componentes[s] == -1) {7 visita_rec(g, componentes, c, s);8 c++;9 }
10 return componentes;11 }
1 void visita_rec(Grafo g, int *componentes, int comp, int v) {2 No *t;3 componentes[v] = comp;
4 for (t = g.adj[v]; t != NULL; t = t->prox)5 if (componentes[t->v] == -1)6 visita_rec(g, componentes, comp, t->v);7 }
8
![Page 80: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/80.jpg)
Componentes Conexas (Listas de Adjacência)
1 int * encontra_componentes(Grafo g) {2 int s, c = 0, *componentes = malloc(g.n * sizeof(int));3 for (s = 0; s < g.n; s++)4 componentes[s] = -1;5 for (s = 0; s < g.n; s++)6 if (componentes[s] == -1) {7 visita_rec(g, componentes, c, s);8 c++;9 }
10 return componentes;11 }
1 void visita_rec(Grafo g, int *componentes, int comp, int v) {2 No *t;3 componentes[v] = comp;4 for (t = g.adj[v]; t != NULL; t = t->prox)
5 if (componentes[t->v] == -1)6 visita_rec(g, componentes, comp, t->v);7 }
8
![Page 81: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/81.jpg)
Componentes Conexas (Listas de Adjacência)
1 int * encontra_componentes(Grafo g) {2 int s, c = 0, *componentes = malloc(g.n * sizeof(int));3 for (s = 0; s < g.n; s++)4 componentes[s] = -1;5 for (s = 0; s < g.n; s++)6 if (componentes[s] == -1) {7 visita_rec(g, componentes, c, s);8 c++;9 }
10 return componentes;11 }
1 void visita_rec(Grafo g, int *componentes, int comp, int v) {2 No *t;3 componentes[v] = comp;4 for (t = g.adj[v]; t != NULL; t = t->prox)5 if (componentes[t->v] == -1)
6 visita_rec(g, componentes, comp, t->v);7 }
8
![Page 82: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/82.jpg)
Componentes Conexas (Listas de Adjacência)
1 int * encontra_componentes(Grafo g) {2 int s, c = 0, *componentes = malloc(g.n * sizeof(int));3 for (s = 0; s < g.n; s++)4 componentes[s] = -1;5 for (s = 0; s < g.n; s++)6 if (componentes[s] == -1) {7 visita_rec(g, componentes, c, s);8 c++;9 }
10 return componentes;11 }
1 void visita_rec(Grafo g, int *componentes, int comp, int v) {2 No *t;3 componentes[v] = comp;4 for (t = g.adj[v]; t != NULL; t = t->prox)5 if (componentes[t->v] == -1)6 visita_rec(g, componentes, comp, t->v);7 }
8
![Page 83: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/83.jpg)
Ciclos em Grafos0
1
2 3
45
6
7 8
9
Um ciclo em um grafo é:
• Uma sequência de vértices vizinhos sem repetição excetopelo primeiro e o último vértice que são idênticos
Por exemplo:• 5, 6, 7, 8, 9, 5 é um ciclo• 1, 2, 3 não é um ciclo• 1, 2, 7, 6, 1 é um ciclo• 1, 2, 7, 6, 1, 0 não é um ciclo
(mas contém um ciclo)
9
![Page 84: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/84.jpg)
Ciclos em Grafos0
1
2 3
45
6
7 8
9
Um ciclo em um grafo é:• Uma sequência de vértices vizinhos sem repetição exceto
pelo primeiro e o último vértice que são idênticos
Por exemplo:• 5, 6, 7, 8, 9, 5 é um ciclo• 1, 2, 3 não é um ciclo• 1, 2, 7, 6, 1 é um ciclo• 1, 2, 7, 6, 1, 0 não é um ciclo
(mas contém um ciclo)
9
![Page 85: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/85.jpg)
Ciclos em Grafos0
1
2 3
45
6
7 8
9
Um ciclo em um grafo é:• Uma sequência de vértices vizinhos sem repetição exceto
pelo primeiro e o último vértice que são idênticos
Por exemplo:
• 5, 6, 7, 8, 9, 5 é um ciclo• 1, 2, 3 não é um ciclo• 1, 2, 7, 6, 1 é um ciclo• 1, 2, 7, 6, 1, 0 não é um ciclo
(mas contém um ciclo)
9
![Page 86: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/86.jpg)
Ciclos em Grafos0
1
2 3
45
6
7 8
9
Um ciclo em um grafo é:• Uma sequência de vértices vizinhos sem repetição exceto
pelo primeiro e o último vértice que são idênticos
Por exemplo:• 5, 6, 7, 8, 9, 5 é um ciclo
• 1, 2, 3 não é um ciclo• 1, 2, 7, 6, 1 é um ciclo• 1, 2, 7, 6, 1, 0 não é um ciclo
(mas contém um ciclo)
9
![Page 87: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/87.jpg)
Ciclos em Grafos0
1
2 3
45
6
7 8
9
Um ciclo em um grafo é:• Uma sequência de vértices vizinhos sem repetição exceto
pelo primeiro e o último vértice que são idênticos
Por exemplo:• 5, 6, 7, 8, 9, 5 é um ciclo• 1, 2, 3 não é um ciclo
• 1, 2, 7, 6, 1 é um ciclo• 1, 2, 7, 6, 1, 0 não é um ciclo
(mas contém um ciclo)
9
![Page 88: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/88.jpg)
Ciclos em Grafos0
1
2 3
45
6
7 8
9
Um ciclo em um grafo é:• Uma sequência de vértices vizinhos sem repetição exceto
pelo primeiro e o último vértice que são idênticos
Por exemplo:• 5, 6, 7, 8, 9, 5 é um ciclo• 1, 2, 3 não é um ciclo• 1, 2, 7, 6, 1 é um ciclo
• 1, 2, 7, 6, 1, 0 não é um ciclo
(mas contém um ciclo)
9
![Page 89: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/89.jpg)
Ciclos em Grafos0
1
2 3
45
6
7 8
9
Um ciclo em um grafo é:• Uma sequência de vértices vizinhos sem repetição exceto
pelo primeiro e o último vértice que são idênticos
Por exemplo:• 5, 6, 7, 8, 9, 5 é um ciclo• 1, 2, 3 não é um ciclo• 1, 2, 7, 6, 1 é um ciclo• 1, 2, 7, 6, 1, 0 não é um ciclo
(mas contém um ciclo)
9
![Page 90: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/90.jpg)
Ciclos em Grafos0
1
2 3
45
6
7 8
9
Um ciclo em um grafo é:• Uma sequência de vértices vizinhos sem repetição exceto
pelo primeiro e o último vértice que são idênticos
Por exemplo:• 5, 6, 7, 8, 9, 5 é um ciclo• 1, 2, 3 não é um ciclo• 1, 2, 7, 6, 1 é um ciclo• 1, 2, 7, 6, 1, 0 não é um ciclo (mas contém um ciclo)
9
![Page 91: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/91.jpg)
Árvores, Florestas e SubgrafosUma árvore é um grafo conexo acíclico
• Uma floresta é um grafo acíclico• Suas componentes conexas são árvores
Um subgrafo é um grafo obtido a partir da remoção devértices e arestas
• Podemos considerar também árvores/florestas que sãosubgrafos de um grafo dado
0
1
2 3
45
6
7 8
9
Um subgrafo que é uma floresta
10
![Page 92: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/92.jpg)
Árvores, Florestas e SubgrafosUma árvore é um grafo conexo acíclico
• Uma floresta é um grafo acíclico
• Suas componentes conexas são árvores
Um subgrafo é um grafo obtido a partir da remoção devértices e arestas
• Podemos considerar também árvores/florestas que sãosubgrafos de um grafo dado
0
1
2 3
45
6
7 8
9
Um subgrafo que é uma floresta
10
![Page 93: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/93.jpg)
Árvores, Florestas e SubgrafosUma árvore é um grafo conexo acíclico
• Uma floresta é um grafo acíclico• Suas componentes conexas são árvores
Um subgrafo é um grafo obtido a partir da remoção devértices e arestas
• Podemos considerar também árvores/florestas que sãosubgrafos de um grafo dado
0
1
2 3
45
6
7 8
9
Um subgrafo que é uma floresta
10
![Page 94: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/94.jpg)
Árvores, Florestas e SubgrafosUma árvore é um grafo conexo acíclico
• Uma floresta é um grafo acíclico• Suas componentes conexas são árvores
Um subgrafo é um grafo obtido a partir da remoção devértices e arestas
• Podemos considerar também árvores/florestas que sãosubgrafos de um grafo dado
0
1
2 3
45
6
7 8
9
Um subgrafo que é uma floresta
10
![Page 95: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/95.jpg)
Árvores, Florestas e SubgrafosUma árvore é um grafo conexo acíclico
• Uma floresta é um grafo acíclico• Suas componentes conexas são árvores
Um subgrafo é um grafo obtido a partir da remoção devértices e arestas
• Podemos considerar também árvores/florestas que sãosubgrafos de um grafo dado
0
1
2 3
45
6
7 8
9
Um subgrafo que é uma floresta
10
![Page 96: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/96.jpg)
Árvores, Florestas e SubgrafosUma árvore é um grafo conexo acíclico
• Uma floresta é um grafo acíclico• Suas componentes conexas são árvores
Um subgrafo é um grafo obtido a partir da remoção devértices e arestas
• Podemos considerar também árvores/florestas que sãosubgrafos de um grafo dado
0
1
2 3
45
6
7 8
9
Um subgrafo que é uma floresta
10
![Page 97: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/97.jpg)
Árvores, Florestas e SubgrafosUma árvore é um grafo conexo acíclico
• Uma floresta é um grafo acíclico• Suas componentes conexas são árvores
Um subgrafo é um grafo obtido a partir da remoção devértices e arestas
• Podemos considerar também árvores/florestas que sãosubgrafos de um grafo dado
0
1
2 3
45
6
7 8
9
Um subgrafo que é uma floresta
10
![Page 98: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/98.jpg)
Árvores, Florestas e SubgrafosUma árvore é um grafo conexo acíclico
• Uma floresta é um grafo acíclico• Suas componentes conexas são árvores
Um subgrafo é um grafo obtido a partir da remoção devértices e arestas
• Podemos considerar também árvores/florestas que sãosubgrafos de um grafo dado
0
1
2 3
45
6
7 8
9
Um subgrafo que é uma floresta
Um subgrafo que é uma árvore
10
![Page 99: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/99.jpg)
Árvores, Florestas e SubgrafosUma árvore é um grafo conexo acíclico
• Uma floresta é um grafo acíclico• Suas componentes conexas são árvores
Um subgrafo é um grafo obtido a partir da remoção devértices e arestas
• Podemos considerar também árvores/florestas que sãosubgrafos de um grafo dado
0
1
2 3
45
6
7 8
9
Um subgrafo que é uma floresta
Um subgrafo com ciclo
10
![Page 100: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/100.jpg)
Caminhos de s para outros vértices da componente
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
As arestas usadas formam uma árvore!• Essa árvore dá um caminho de qualquer vértice até a raiz• Basta ir subindo na árvore
11
![Page 101: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/101.jpg)
Caminhos de s para outros vértices da componente
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
As arestas usadas formam uma árvore!• Essa árvore dá um caminho de qualquer vértice até a raiz• Basta ir subindo na árvore
11
![Page 102: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/102.jpg)
Caminhos de s para outros vértices da componente
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
As arestas usadas formam uma árvore!• Essa árvore dá um caminho de qualquer vértice até a raiz• Basta ir subindo na árvore
11
![Page 103: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/103.jpg)
Caminhos de s para outros vértices da componente
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
As arestas usadas formam uma árvore!• Essa árvore dá um caminho de qualquer vértice até a raiz• Basta ir subindo na árvore
11
![Page 104: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/104.jpg)
Caminhos de s para outros vértices da componente
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
As arestas usadas formam uma árvore!• Essa árvore dá um caminho de qualquer vértice até a raiz• Basta ir subindo na árvore
11
![Page 105: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/105.jpg)
Caminhos de s para outros vértices da componente
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
As arestas usadas formam uma árvore!• Essa árvore dá um caminho de qualquer vértice até a raiz• Basta ir subindo na árvore
11
![Page 106: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/106.jpg)
Caminhos de s para outros vértices da componente
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
As arestas usadas formam uma árvore!• Essa árvore dá um caminho de qualquer vértice até a raiz• Basta ir subindo na árvore
11
![Page 107: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/107.jpg)
Caminhos de s para outros vértices da componente
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
As arestas usadas formam uma árvore!• Essa árvore dá um caminho de qualquer vértice até a raiz• Basta ir subindo na árvore
11
![Page 108: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/108.jpg)
Caminhos de s para outros vértices da componente
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
As arestas usadas formam uma árvore!• Essa árvore dá um caminho de qualquer vértice até a raiz• Basta ir subindo na árvore
11
![Page 109: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/109.jpg)
Caminhos de s para outros vértices da componente
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
As arestas usadas formam uma árvore!• Essa árvore dá um caminho de qualquer vértice até a raiz• Basta ir subindo na árvore
11
![Page 110: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/110.jpg)
Caminhos de s para outros vértices da componente
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
As arestas usadas formam uma árvore!• Essa árvore dá um caminho de qualquer vértice até a raiz• Basta ir subindo na árvore
11
![Page 111: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/111.jpg)
Caminhos de s para outros vértices da componente
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
As arestas usadas formam uma árvore!• Essa árvore dá um caminho de qualquer vértice até a raiz• Basta ir subindo na árvore
11
![Page 112: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/112.jpg)
Caminhos de s para outros vértices da componente
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
As arestas usadas formam uma árvore!• Essa árvore dá um caminho de qualquer vértice até a raiz• Basta ir subindo na árvore
11
![Page 113: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/113.jpg)
Caminhos de s para outros vértices da componente
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
As arestas usadas formam uma árvore!• Essa árvore dá um caminho de qualquer vértice até a raiz• Basta ir subindo na árvore
11
![Page 114: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/114.jpg)
Caminhos de s para outros vértices da componente
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
As arestas usadas formam uma árvore!• Essa árvore dá um caminho de qualquer vértice até a raiz• Basta ir subindo na árvore
11
![Page 115: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/115.jpg)
Caminhos de s para outros vértices da componente
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
As arestas usadas formam uma árvore!• Essa árvore dá um caminho de qualquer vértice até a raiz• Basta ir subindo na árvore
11
![Page 116: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/116.jpg)
Caminhos de s para outros vértices da componente
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
As arestas usadas formam uma árvore!• Essa árvore dá um caminho de qualquer vértice até a raiz• Basta ir subindo na árvore
11
![Page 117: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/117.jpg)
Caminhos de s para outros vértices da componente
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
As arestas usadas formam uma árvore!• Essa árvore dá um caminho de qualquer vértice até a raiz• Basta ir subindo na árvore
11
![Page 118: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/118.jpg)
Caminhos de s para outros vértices da componente
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
As arestas usadas formam uma árvore!• Essa árvore dá um caminho de qualquer vértice até a raiz• Basta ir subindo na árvore
11
![Page 119: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/119.jpg)
Caminhos de s para outros vértices da componente
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
As arestas usadas formam uma árvore!• Essa árvore dá um caminho de qualquer vértice até a raiz• Basta ir subindo na árvore
11
![Page 120: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/120.jpg)
Caminhos de s para outros vértices da componente
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
As arestas usadas formam uma árvore!• Essa árvore dá um caminho de qualquer vértice até a raiz• Basta ir subindo na árvore
11
![Page 121: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/121.jpg)
Caminhos de s para outros vértices da componente
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
As arestas usadas formam uma árvore!• Essa árvore dá um caminho de qualquer vértice até a raiz• Basta ir subindo na árvore
11
![Page 122: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/122.jpg)
Caminhos de s para outros vértices da componente
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
As arestas usadas formam uma árvore!• Essa árvore dá um caminho de qualquer vértice até a raiz• Basta ir subindo na árvore
11
![Page 123: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/123.jpg)
Caminhos de s para outros vértices da componente
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
As arestas usadas formam uma árvore!
• Essa árvore dá um caminho de qualquer vértice até a raiz• Basta ir subindo na árvore
11
![Page 124: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/124.jpg)
Caminhos de s para outros vértices da componente
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
As arestas usadas formam uma árvore!• Essa árvore dá um caminho de qualquer vértice até a raiz
• Basta ir subindo na árvore
11
![Page 125: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/125.jpg)
Caminhos de s para outros vértices da componente
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
As arestas usadas formam uma árvore!• Essa árvore dá um caminho de qualquer vértice até a raiz• Basta ir subindo na árvore
11
![Page 126: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/126.jpg)
Caminhos de s para outros vértices da componente
1 int * encontra_caminhos(Grafo g, int s) {2 int i, *pai = malloc(g.n * sizeof(int));3 for (i = 0; i < g.n; i++)4 pai[i] = -1;5 busca_em_profundidade(g, pai, s, s);6 return pai;7 }
0
1
2
3
7
6
11
4
8
9
5
10
13
12
14
15
1 void busca_em_profundidade(Grafo g, int *pai, int p, int v) {2 No *t;3 pai[v] = p;4 for(t = g.adj[v]; t != NULL; t = t->prox)5 if (pai[t->v] == -1)6 busca_em_profundidade(g, pai, v, t->v);7 }
12
![Page 127: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/127.jpg)
Caminhos de s para outros vértices da componente
1 int * encontra_caminhos(Grafo g, int s) {2 int i, *pai = malloc(g.n * sizeof(int));3 for (i = 0; i < g.n; i++)4 pai[i] = -1;5 busca_em_profundidade(g, pai, s, s);6 return pai;7 }
0
1
2
3
7
6
11
4
8
9
5
10
13
12
14
15
1 void busca_em_profundidade(Grafo g, int *pai, int p, int v) {2 No *t;3 pai[v] = p;4 for(t = g.adj[v]; t != NULL; t = t->prox)5 if (pai[t->v] == -1)6 busca_em_profundidade(g, pai, v, t->v);7 }
12
![Page 128: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/128.jpg)
Caminhos de s para outros vértices da componente
1 int * encontra_caminhos(Grafo g, int s) {2 int i, *pai = malloc(g.n * sizeof(int));3 for (i = 0; i < g.n; i++)4 pai[i] = -1;5 busca_em_profundidade(g, pai, s, s);6 return pai;7 }
0
1
2
3
7
6
11
4
8
9
5
10
13
12
14
15
1 void busca_em_profundidade(Grafo g, int *pai, int p, int v) {2 No *t;3 pai[v] = p;4 for(t = g.adj[v]; t != NULL; t = t->prox)5 if (pai[t->v] == -1)6 busca_em_profundidade(g, pai, v, t->v);7 }
12
![Page 129: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/129.jpg)
Imprimindo o caminho
1 void imprimi_caminho_reverso(int v, int *pai) {2 printf("%d", v);3 if(pai[v] != v)4 imprimi_caminho(pai[v], pai);5 }
1 void imprimi_caminho(int v, int *pai) {2 if(pai[v] != v)3 imprimi_caminho(pai[v], pai);4 printf("%d", v);5 }
0
1
2
3
7
6
11
4
8
9
5
10
13
12
14
15
13
![Page 130: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/130.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Pilha
14
![Page 131: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/131.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Pilha
14
![Page 132: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/132.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 0
Pilha
14
![Page 133: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/133.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Pilha
0
14
![Page 134: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/134.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
Pilha
0
14
![Page 135: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/135.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
1
Pilha
0
14
![Page 136: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/136.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
1
Pilha
14
![Page 137: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/137.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
1
Pilha
1
14
![Page 138: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/138.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
4
Pilha
1
14
![Page 139: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/139.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
4
2
Pilha
1
14
![Page 140: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/140.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
4
2
Pilha
14
![Page 141: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/141.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
4
Pilha
2
14
![Page 142: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/142.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
4
6
Pilha
2
14
![Page 143: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/143.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
4
6
3
Pilha
2
14
![Page 144: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/144.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
4
6
3
Pilha
14
![Page 145: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/145.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
4
6
Pilha
3
14
![Page 146: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/146.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
4
6
7
Pilha
3
14
![Page 147: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/147.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
4
6
7
Pilha
14
![Page 148: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/148.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
4
6
Pilha
7
14
![Page 149: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/149.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
4
6
Pilha
7
14
![Page 150: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/150.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
4
6
11
6
Pilha
7
14
![Page 151: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/151.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
4
6
11
6
Pilha
14
![Page 152: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/152.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
4
6
11
Pilha
6
14
![Page 153: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/153.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
4
6
11
11
Pilha
6
14
![Page 154: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/154.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
4
6
11
11
Pilha
14
![Page 155: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/155.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
4
6
11
Pilha
11
14
![Page 156: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/156.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
4
6
11
Pilha
14
![Page 157: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/157.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
4
6
Pilha
11
14
![Page 158: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/158.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
4
Pilha
6
14
![Page 159: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/159.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
Pilha
4
14
![Page 160: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/160.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
Pilha
4
14
![Page 161: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/161.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
13
12
12
10
14
Pilha
15
14
![Page 162: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/162.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
13
12
12
10
14
Pilha
14
![Page 163: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/163.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
13
12
12
10
Pilha
14
14
![Page 164: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/164.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
13
12
12
Pilha
10
14
![Page 165: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/165.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
13
12
Pilha
12
14
![Page 166: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/166.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
13
Pilha
12
14
![Page 167: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/167.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 4
Pilha
13
14
![Page 168: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/168.jpg)
Busca em Profundidade usando uma PilhaPodemos fazer uma busca em profundidade usando pilha:
• A cada passo, desempilhamos um vértice não visitado• E inserimos os seus vizinhos não visitados na pilha
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Pilha
4
14
![Page 169: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/169.jpg)
Implementação1 int * busca_em_profundidade(Grafo g, int s) {
2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Pilha p;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializa_pilha(&p);11 empilhar(&p,s);12 pai[s] = s;13 while(!eh_vazia(p)) {14 v = desempilhar(&p);15 visitado[v] = 1;16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 pai[w] = v;19 empilhar(&p, w);20 }21 }22 destroi_pilha(&p);23 free(visitado);24 return pai;25 }
15
![Page 170: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/170.jpg)
Implementação1 int * busca_em_profundidade(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));
5 Pilha p;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializa_pilha(&p);11 empilhar(&p,s);12 pai[s] = s;13 while(!eh_vazia(p)) {14 v = desempilhar(&p);15 visitado[v] = 1;16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 pai[w] = v;19 empilhar(&p, w);20 }21 }22 destroi_pilha(&p);23 free(visitado);24 return pai;25 }
15
![Page 171: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/171.jpg)
Implementação1 int * busca_em_profundidade(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Pilha p;
6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializa_pilha(&p);11 empilhar(&p,s);12 pai[s] = s;13 while(!eh_vazia(p)) {14 v = desempilhar(&p);15 visitado[v] = 1;16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 pai[w] = v;19 empilhar(&p, w);20 }21 }22 destroi_pilha(&p);23 free(visitado);24 return pai;25 }
15
![Page 172: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/172.jpg)
Implementação1 int * busca_em_profundidade(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Pilha p;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializa_pilha(&p);11 empilhar(&p,s);12 pai[s] = s;13 while(!eh_vazia(p)) {14 v = desempilhar(&p);15 visitado[v] = 1;16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 pai[w] = v;19 empilhar(&p, w);20 }21 }22 destroi_pilha(&p);23 free(visitado);24 return pai;25 }
15
![Page 173: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/173.jpg)
Implementação1 int * busca_em_profundidade(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Pilha p;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializa_pilha(&p);
11 empilhar(&p,s);12 pai[s] = s;13 while(!eh_vazia(p)) {14 v = desempilhar(&p);15 visitado[v] = 1;16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 pai[w] = v;19 empilhar(&p, w);20 }21 }22 destroi_pilha(&p);23 free(visitado);24 return pai;25 }
15
![Page 174: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/174.jpg)
Implementação1 int * busca_em_profundidade(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Pilha p;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializa_pilha(&p);11 empilhar(&p,s);
12 pai[s] = s;13 while(!eh_vazia(p)) {14 v = desempilhar(&p);15 visitado[v] = 1;16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 pai[w] = v;19 empilhar(&p, w);20 }21 }22 destroi_pilha(&p);23 free(visitado);24 return pai;25 }
15
![Page 175: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/175.jpg)
Implementação1 int * busca_em_profundidade(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Pilha p;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializa_pilha(&p);11 empilhar(&p,s);12 pai[s] = s;
13 while(!eh_vazia(p)) {14 v = desempilhar(&p);15 visitado[v] = 1;16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 pai[w] = v;19 empilhar(&p, w);20 }21 }22 destroi_pilha(&p);23 free(visitado);24 return pai;25 }
15
![Page 176: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/176.jpg)
Implementação1 int * busca_em_profundidade(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Pilha p;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializa_pilha(&p);11 empilhar(&p,s);12 pai[s] = s;13 while(!eh_vazia(p)) {
14 v = desempilhar(&p);15 visitado[v] = 1;16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 pai[w] = v;19 empilhar(&p, w);20 }21 }22 destroi_pilha(&p);23 free(visitado);24 return pai;25 }
15
![Page 177: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/177.jpg)
Implementação1 int * busca_em_profundidade(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Pilha p;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializa_pilha(&p);11 empilhar(&p,s);12 pai[s] = s;13 while(!eh_vazia(p)) {14 v = desempilhar(&p);
15 visitado[v] = 1;16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 pai[w] = v;19 empilhar(&p, w);20 }21 }22 destroi_pilha(&p);23 free(visitado);24 return pai;25 }
15
![Page 178: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/178.jpg)
Implementação1 int * busca_em_profundidade(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Pilha p;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializa_pilha(&p);11 empilhar(&p,s);12 pai[s] = s;13 while(!eh_vazia(p)) {14 v = desempilhar(&p);15 visitado[v] = 1;
16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 pai[w] = v;19 empilhar(&p, w);20 }21 }22 destroi_pilha(&p);23 free(visitado);24 return pai;25 }
15
![Page 179: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/179.jpg)
Implementação1 int * busca_em_profundidade(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Pilha p;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializa_pilha(&p);11 empilhar(&p,s);12 pai[s] = s;13 while(!eh_vazia(p)) {14 v = desempilhar(&p);15 visitado[v] = 1;16 for (w = 0; w < g.n; w++)
17 if (g.adj[v][w] && !visitado[w]) {18 pai[w] = v;19 empilhar(&p, w);20 }21 }22 destroi_pilha(&p);23 free(visitado);24 return pai;25 }
15
![Page 180: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/180.jpg)
Implementação1 int * busca_em_profundidade(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Pilha p;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializa_pilha(&p);11 empilhar(&p,s);12 pai[s] = s;13 while(!eh_vazia(p)) {14 v = desempilhar(&p);15 visitado[v] = 1;16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {
18 pai[w] = v;19 empilhar(&p, w);20 }21 }22 destroi_pilha(&p);23 free(visitado);24 return pai;25 }
15
![Page 181: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/181.jpg)
Implementação1 int * busca_em_profundidade(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Pilha p;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializa_pilha(&p);11 empilhar(&p,s);12 pai[s] = s;13 while(!eh_vazia(p)) {14 v = desempilhar(&p);15 visitado[v] = 1;16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 pai[w] = v;
19 empilhar(&p, w);20 }21 }22 destroi_pilha(&p);23 free(visitado);24 return pai;25 }
15
![Page 182: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/182.jpg)
Implementação1 int * busca_em_profundidade(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Pilha p;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializa_pilha(&p);11 empilhar(&p,s);12 pai[s] = s;13 while(!eh_vazia(p)) {14 v = desempilhar(&p);15 visitado[v] = 1;16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 pai[w] = v;19 empilhar(&p, w);
20 }21 }22 destroi_pilha(&p);23 free(visitado);24 return pai;25 }
15
![Page 183: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/183.jpg)
Implementação1 int * busca_em_profundidade(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Pilha p;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializa_pilha(&p);11 empilhar(&p,s);12 pai[s] = s;13 while(!eh_vazia(p)) {14 v = desempilhar(&p);15 visitado[v] = 1;16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 pai[w] = v;19 empilhar(&p, w);20 }21 }
22 destroi_pilha(&p);23 free(visitado);24 return pai;25 }
15
![Page 184: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/184.jpg)
Implementação1 int * busca_em_profundidade(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Pilha p;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializa_pilha(&p);11 empilhar(&p,s);12 pai[s] = s;13 while(!eh_vazia(p)) {14 v = desempilhar(&p);15 visitado[v] = 1;16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 pai[w] = v;19 empilhar(&p, w);20 }21 }22 destroi_pilha(&p);
23 free(visitado);24 return pai;25 }
15
![Page 185: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/185.jpg)
Implementação1 int * busca_em_profundidade(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Pilha p;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializa_pilha(&p);11 empilhar(&p,s);12 pai[s] = s;13 while(!eh_vazia(p)) {14 v = desempilhar(&p);15 visitado[v] = 1;16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 pai[w] = v;19 empilhar(&p, w);20 }21 }22 destroi_pilha(&p);23 free(visitado);
24 return pai;25 }
15
![Page 186: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/186.jpg)
Implementação1 int * busca_em_profundidade(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Pilha p;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializa_pilha(&p);11 empilhar(&p,s);12 pai[s] = s;13 while(!eh_vazia(p)) {14 v = desempilhar(&p);15 visitado[v] = 1;16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 pai[w] = v;19 empilhar(&p, w);20 }21 }22 destroi_pilha(&p);23 free(visitado);24 return pai;25 }
15
![Page 187: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/187.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Fila
16
![Page 188: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/188.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0Fila
16
![Page 189: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/189.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Fila
0
16
![Page 190: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/190.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1Fila
0
16
![Page 191: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/191.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1 4Fila
0
16
![Page 192: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/192.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1 4Fila
16
![Page 193: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/193.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
4Fila
1
16
![Page 194: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/194.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
4 2Fila
1
16
![Page 195: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/195.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
4 2Fila
16
![Page 196: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/196.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2Fila
4
16
![Page 197: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/197.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2 8Fila
4
16
![Page 198: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/198.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2 8Fila
16
![Page 199: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/199.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
8Fila
2
16
![Page 200: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/200.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
8 3Fila
2
16
![Page 201: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/201.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
8 3 6Fila
2
16
![Page 202: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/202.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
8 3 6Fila
16
![Page 203: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/203.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
8 3 6Fila
16
![Page 204: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/204.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
3 6Fila
8
16
![Page 205: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/205.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
3 6 9Fila
8
16
![Page 206: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/206.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
3 6 9 12Fila
8
16
![Page 207: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/207.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
3 6 9 12 13Fila
8
16
![Page 208: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/208.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
3 6 9 12 13Fila
16
![Page 209: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/209.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
6 9 12 13Fila
3
16
![Page 210: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/210.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
6 9 12 13 7Fila
3
16
![Page 211: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/211.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
6 9 12 13 7Fila
16
![Page 212: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/212.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
9 12 13 7Fila
6
16
![Page 213: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/213.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
9 12 13 7 11Fila
6
16
![Page 214: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/214.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
9 12 13 7 11Fila
16
![Page 215: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/215.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
12 13 7 11Fila
9
16
![Page 216: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/216.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
12 13 7 11 5Fila
9
16
![Page 217: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/217.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
12 13 7 11 5 10Fila
9
16
![Page 218: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/218.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
12 13 7 11 5 10Fila
16
![Page 219: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/219.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
13 7 11 5 10Fila
12
16
![Page 220: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/220.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
13 7 11 5 10Fila
16
![Page 221: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/221.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
7 11 5 10Fila
13
16
![Page 222: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/222.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
7 11 5 10 14Fila
13
16
![Page 223: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/223.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
7 11 5 10 14Fila
16
![Page 224: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/224.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
11 5 10 14Fila
7
16
![Page 225: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/225.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
11 5 10 14Fila
16
![Page 226: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/226.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
5 10 14Fila
11
16
![Page 227: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/227.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
5 10 14Fila
16
![Page 228: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/228.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
10 14Fila
5
16
![Page 229: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/229.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
10 14Fila
16
![Page 230: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/230.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
14Fila
10
16
![Page 231: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/231.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
14Fila
16
![Page 232: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/232.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Fila
14
16
![Page 233: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/233.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
15Fila
14
16
![Page 234: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/234.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
15Fila
16
![Page 235: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/235.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Fila
15
16
![Page 236: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/236.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Fila
15
16
![Page 237: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/237.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Usando uma fila, visitamos primeiro os vértices mais próximos• Enfileiramos os vizinhos de 0 (que estão a distância 1)• Desenfileiramos um de seus vizinho• E enfileiramos os vizinhos deste vértice
– que estão a distância 2 de 0
• Assim por diante...
A árvore nos dá um caminho mínimo entre raiz e vértice
17
![Page 238: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/238.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Usando uma fila, visitamos primeiro os vértices mais próximos
• Enfileiramos os vizinhos de 0 (que estão a distância 1)• Desenfileiramos um de seus vizinho• E enfileiramos os vizinhos deste vértice
– que estão a distância 2 de 0
• Assim por diante...
A árvore nos dá um caminho mínimo entre raiz e vértice
17
![Page 239: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/239.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Usando uma fila, visitamos primeiro os vértices mais próximos• Enfileiramos os vizinhos de 0 (que estão a distância 1)
• Desenfileiramos um de seus vizinho• E enfileiramos os vizinhos deste vértice
– que estão a distância 2 de 0
• Assim por diante...
A árvore nos dá um caminho mínimo entre raiz e vértice
17
![Page 240: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/240.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Usando uma fila, visitamos primeiro os vértices mais próximos• Enfileiramos os vizinhos de 0 (que estão a distância 1)• Desenfileiramos um de seus vizinho
• E enfileiramos os vizinhos deste vértice
– que estão a distância 2 de 0
• Assim por diante...
A árvore nos dá um caminho mínimo entre raiz e vértice
17
![Page 241: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/241.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Usando uma fila, visitamos primeiro os vértices mais próximos• Enfileiramos os vizinhos de 0 (que estão a distância 1)• Desenfileiramos um de seus vizinho• E enfileiramos os vizinhos deste vértice
– que estão a distância 2 de 0• Assim por diante...
A árvore nos dá um caminho mínimo entre raiz e vértice
17
![Page 242: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/242.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Usando uma fila, visitamos primeiro os vértices mais próximos• Enfileiramos os vizinhos de 0 (que estão a distância 1)• Desenfileiramos um de seus vizinho• E enfileiramos os vizinhos deste vértice
– que estão a distância 2 de 0
• Assim por diante...
A árvore nos dá um caminho mínimo entre raiz e vértice
17
![Page 243: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/243.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Usando uma fila, visitamos primeiro os vértices mais próximos• Enfileiramos os vizinhos de 0 (que estão a distância 1)• Desenfileiramos um de seus vizinho• E enfileiramos os vizinhos deste vértice
– que estão a distância 2 de 0• Assim por diante...
A árvore nos dá um caminho mínimo entre raiz e vértice
17
![Page 244: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/244.jpg)
E se tivéssemos usando uma Fila?
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Usando uma fila, visitamos primeiro os vértices mais próximos• Enfileiramos os vizinhos de 0 (que estão a distância 1)• Desenfileiramos um de seus vizinho• E enfileiramos os vizinhos deste vértice
– que estão a distância 2 de 0• Assim por diante...
A árvore nos dá um caminho mínimo entre raiz e vértice17
![Page 245: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/245.jpg)
Implementação da Busca em Largura1 int * busca_em_largura(Grafo g, int s) {
2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Fila f;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializar_fila(&f);11 enfileira(&f,s);12 pai[s] = s;13 visitado[s] = 1;14 while(!fila_vazia(f)) {15 v = desenfileira(&f);16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 visitado[w] = 1;/*evita repetição na fila*/19 pai[w] = v;20 enfileira(&f, w);21 }22 }23 destroi_fila(&f);24 free(visitado);25 return pai;26 }
18
![Page 246: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/246.jpg)
Implementação da Busca em Largura1 int * busca_em_largura(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));
5 Fila f;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializar_fila(&f);11 enfileira(&f,s);12 pai[s] = s;13 visitado[s] = 1;14 while(!fila_vazia(f)) {15 v = desenfileira(&f);16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 visitado[w] = 1;/*evita repetição na fila*/19 pai[w] = v;20 enfileira(&f, w);21 }22 }23 destroi_fila(&f);24 free(visitado);25 return pai;26 }
18
![Page 247: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/247.jpg)
Implementação da Busca em Largura1 int * busca_em_largura(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Fila f;
6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializar_fila(&f);11 enfileira(&f,s);12 pai[s] = s;13 visitado[s] = 1;14 while(!fila_vazia(f)) {15 v = desenfileira(&f);16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 visitado[w] = 1;/*evita repetição na fila*/19 pai[w] = v;20 enfileira(&f, w);21 }22 }23 destroi_fila(&f);24 free(visitado);25 return pai;26 }
18
![Page 248: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/248.jpg)
Implementação da Busca em Largura1 int * busca_em_largura(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Fila f;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializar_fila(&f);11 enfileira(&f,s);12 pai[s] = s;13 visitado[s] = 1;14 while(!fila_vazia(f)) {15 v = desenfileira(&f);16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 visitado[w] = 1;/*evita repetição na fila*/19 pai[w] = v;20 enfileira(&f, w);21 }22 }23 destroi_fila(&f);24 free(visitado);25 return pai;26 }
18
![Page 249: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/249.jpg)
Implementação da Busca em Largura1 int * busca_em_largura(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Fila f;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializar_fila(&f);
11 enfileira(&f,s);12 pai[s] = s;13 visitado[s] = 1;14 while(!fila_vazia(f)) {15 v = desenfileira(&f);16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 visitado[w] = 1;/*evita repetição na fila*/19 pai[w] = v;20 enfileira(&f, w);21 }22 }23 destroi_fila(&f);24 free(visitado);25 return pai;26 }
18
![Page 250: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/250.jpg)
Implementação da Busca em Largura1 int * busca_em_largura(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Fila f;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializar_fila(&f);11 enfileira(&f,s);
12 pai[s] = s;13 visitado[s] = 1;14 while(!fila_vazia(f)) {15 v = desenfileira(&f);16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 visitado[w] = 1;/*evita repetição na fila*/19 pai[w] = v;20 enfileira(&f, w);21 }22 }23 destroi_fila(&f);24 free(visitado);25 return pai;26 }
18
![Page 251: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/251.jpg)
Implementação da Busca em Largura1 int * busca_em_largura(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Fila f;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializar_fila(&f);11 enfileira(&f,s);12 pai[s] = s;
13 visitado[s] = 1;14 while(!fila_vazia(f)) {15 v = desenfileira(&f);16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 visitado[w] = 1;/*evita repetição na fila*/19 pai[w] = v;20 enfileira(&f, w);21 }22 }23 destroi_fila(&f);24 free(visitado);25 return pai;26 }
18
![Page 252: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/252.jpg)
Implementação da Busca em Largura1 int * busca_em_largura(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Fila f;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializar_fila(&f);11 enfileira(&f,s);12 pai[s] = s;13 visitado[s] = 1;
14 while(!fila_vazia(f)) {15 v = desenfileira(&f);16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 visitado[w] = 1;/*evita repetição na fila*/19 pai[w] = v;20 enfileira(&f, w);21 }22 }23 destroi_fila(&f);24 free(visitado);25 return pai;26 }
18
![Page 253: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/253.jpg)
Implementação da Busca em Largura1 int * busca_em_largura(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Fila f;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializar_fila(&f);11 enfileira(&f,s);12 pai[s] = s;13 visitado[s] = 1;14 while(!fila_vazia(f)) {
15 v = desenfileira(&f);16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 visitado[w] = 1;/*evita repetição na fila*/19 pai[w] = v;20 enfileira(&f, w);21 }22 }23 destroi_fila(&f);24 free(visitado);25 return pai;26 }
18
![Page 254: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/254.jpg)
Implementação da Busca em Largura1 int * busca_em_largura(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Fila f;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializar_fila(&f);11 enfileira(&f,s);12 pai[s] = s;13 visitado[s] = 1;14 while(!fila_vazia(f)) {15 v = desenfileira(&f);
16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 visitado[w] = 1;/*evita repetição na fila*/19 pai[w] = v;20 enfileira(&f, w);21 }22 }23 destroi_fila(&f);24 free(visitado);25 return pai;26 }
18
![Page 255: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/255.jpg)
Implementação da Busca em Largura1 int * busca_em_largura(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Fila f;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializar_fila(&f);11 enfileira(&f,s);12 pai[s] = s;13 visitado[s] = 1;14 while(!fila_vazia(f)) {15 v = desenfileira(&f);16 for (w = 0; w < g.n; w++)
17 if (g.adj[v][w] && !visitado[w]) {18 visitado[w] = 1;/*evita repetição na fila*/19 pai[w] = v;20 enfileira(&f, w);21 }22 }23 destroi_fila(&f);24 free(visitado);25 return pai;26 }
18
![Page 256: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/256.jpg)
Implementação da Busca em Largura1 int * busca_em_largura(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Fila f;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializar_fila(&f);11 enfileira(&f,s);12 pai[s] = s;13 visitado[s] = 1;14 while(!fila_vazia(f)) {15 v = desenfileira(&f);16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {
18 visitado[w] = 1;/*evita repetição na fila*/19 pai[w] = v;20 enfileira(&f, w);21 }22 }23 destroi_fila(&f);24 free(visitado);25 return pai;26 }
18
![Page 257: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/257.jpg)
Implementação da Busca em Largura1 int * busca_em_largura(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Fila f;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializar_fila(&f);11 enfileira(&f,s);12 pai[s] = s;13 visitado[s] = 1;14 while(!fila_vazia(f)) {15 v = desenfileira(&f);16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 visitado[w] = 1;/*evita repetição na fila*/
19 pai[w] = v;20 enfileira(&f, w);21 }22 }23 destroi_fila(&f);24 free(visitado);25 return pai;26 }
18
![Page 258: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/258.jpg)
Implementação da Busca em Largura1 int * busca_em_largura(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Fila f;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializar_fila(&f);11 enfileira(&f,s);12 pai[s] = s;13 visitado[s] = 1;14 while(!fila_vazia(f)) {15 v = desenfileira(&f);16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 visitado[w] = 1;/*evita repetição na fila*/19 pai[w] = v;
20 enfileira(&f, w);21 }22 }23 destroi_fila(&f);24 free(visitado);25 return pai;26 }
18
![Page 259: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/259.jpg)
Implementação da Busca em Largura1 int * busca_em_largura(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Fila f;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializar_fila(&f);11 enfileira(&f,s);12 pai[s] = s;13 visitado[s] = 1;14 while(!fila_vazia(f)) {15 v = desenfileira(&f);16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 visitado[w] = 1;/*evita repetição na fila*/19 pai[w] = v;20 enfileira(&f, w);
21 }22 }23 destroi_fila(&f);24 free(visitado);25 return pai;26 }
18
![Page 260: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/260.jpg)
Implementação da Busca em Largura1 int * busca_em_largura(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Fila f;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializar_fila(&f);11 enfileira(&f,s);12 pai[s] = s;13 visitado[s] = 1;14 while(!fila_vazia(f)) {15 v = desenfileira(&f);16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 visitado[w] = 1;/*evita repetição na fila*/19 pai[w] = v;20 enfileira(&f, w);21 }22 }
23 destroi_fila(&f);24 free(visitado);25 return pai;26 }
18
![Page 261: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/261.jpg)
Implementação da Busca em Largura1 int * busca_em_largura(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Fila f;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializar_fila(&f);11 enfileira(&f,s);12 pai[s] = s;13 visitado[s] = 1;14 while(!fila_vazia(f)) {15 v = desenfileira(&f);16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 visitado[w] = 1;/*evita repetição na fila*/19 pai[w] = v;20 enfileira(&f, w);21 }22 }23 destroi_fila(&f);
24 free(visitado);25 return pai;26 }
18
![Page 262: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/262.jpg)
Implementação da Busca em Largura1 int * busca_em_largura(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Fila f;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializar_fila(&f);11 enfileira(&f,s);12 pai[s] = s;13 visitado[s] = 1;14 while(!fila_vazia(f)) {15 v = desenfileira(&f);16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 visitado[w] = 1;/*evita repetição na fila*/19 pai[w] = v;20 enfileira(&f, w);21 }22 }23 destroi_fila(&f);24 free(visitado);
25 return pai;26 }
18
![Page 263: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/263.jpg)
Implementação da Busca em Largura1 int * busca_em_largura(Grafo g, int s) {2 int w, v;3 int *pai = malloc(g.n * sizeof(int));4 int *visitado = malloc(g.n * sizeof(int));5 Fila f;6 for (v = 0; v < g.n; v++) {7 pai[v] = -1;8 visitado[v] = 0;9 }
10 inicializar_fila(&f);11 enfileira(&f,s);12 pai[s] = s;13 visitado[s] = 1;14 while(!fila_vazia(f)) {15 v = desenfileira(&f);16 for (w = 0; w < g.n; w++)17 if (g.adj[v][w] && !visitado[w]) {18 visitado[w] = 1;/*evita repetição na fila*/19 pai[w] = v;20 enfileira(&f, w);21 }22 }23 destroi_fila(&f);24 free(visitado);25 return pai;26 } 18
![Page 264: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/264.jpg)
Tempo para fazer a buscaQuanto tempo demora para fazer uma busca?
• em profundidade ou em largura• em um grafo com n vértices e m arestas
Suponha que inserir e remover de pilha/fila leva O(1)• Podemos usar vetores ou listas ligadas
A busca percorre todos os vértices• E empilha/enfileira seus vizinhos não visitados• Se usarmos uma Matriz de Adjacências, leva O(n2)
E se usarmos Listas de Adjacência?• Cada aresta é analisada apenas duas vezes• Gastamos tempo O(max{n + m}) = O(n + m)
19
![Page 265: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/265.jpg)
Tempo para fazer a buscaQuanto tempo demora para fazer uma busca?
• em profundidade ou em largura
• em um grafo com n vértices e m arestas
Suponha que inserir e remover de pilha/fila leva O(1)• Podemos usar vetores ou listas ligadas
A busca percorre todos os vértices• E empilha/enfileira seus vizinhos não visitados• Se usarmos uma Matriz de Adjacências, leva O(n2)
E se usarmos Listas de Adjacência?• Cada aresta é analisada apenas duas vezes• Gastamos tempo O(max{n + m}) = O(n + m)
19
![Page 266: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/266.jpg)
Tempo para fazer a buscaQuanto tempo demora para fazer uma busca?
• em profundidade ou em largura• em um grafo com n vértices e m arestas
Suponha que inserir e remover de pilha/fila leva O(1)• Podemos usar vetores ou listas ligadas
A busca percorre todos os vértices• E empilha/enfileira seus vizinhos não visitados• Se usarmos uma Matriz de Adjacências, leva O(n2)
E se usarmos Listas de Adjacência?• Cada aresta é analisada apenas duas vezes• Gastamos tempo O(max{n + m}) = O(n + m)
19
![Page 267: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/267.jpg)
Tempo para fazer a buscaQuanto tempo demora para fazer uma busca?
• em profundidade ou em largura• em um grafo com n vértices e m arestas
Suponha que inserir e remover de pilha/fila leva O(1)
• Podemos usar vetores ou listas ligadas
A busca percorre todos os vértices• E empilha/enfileira seus vizinhos não visitados• Se usarmos uma Matriz de Adjacências, leva O(n2)
E se usarmos Listas de Adjacência?• Cada aresta é analisada apenas duas vezes• Gastamos tempo O(max{n + m}) = O(n + m)
19
![Page 268: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/268.jpg)
Tempo para fazer a buscaQuanto tempo demora para fazer uma busca?
• em profundidade ou em largura• em um grafo com n vértices e m arestas
Suponha que inserir e remover de pilha/fila leva O(1)• Podemos usar vetores ou listas ligadas
A busca percorre todos os vértices• E empilha/enfileira seus vizinhos não visitados• Se usarmos uma Matriz de Adjacências, leva O(n2)
E se usarmos Listas de Adjacência?• Cada aresta é analisada apenas duas vezes• Gastamos tempo O(max{n + m}) = O(n + m)
19
![Page 269: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/269.jpg)
Tempo para fazer a buscaQuanto tempo demora para fazer uma busca?
• em profundidade ou em largura• em um grafo com n vértices e m arestas
Suponha que inserir e remover de pilha/fila leva O(1)• Podemos usar vetores ou listas ligadas
A busca percorre todos os vértices
• E empilha/enfileira seus vizinhos não visitados• Se usarmos uma Matriz de Adjacências, leva O(n2)
E se usarmos Listas de Adjacência?• Cada aresta é analisada apenas duas vezes• Gastamos tempo O(max{n + m}) = O(n + m)
19
![Page 270: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/270.jpg)
Tempo para fazer a buscaQuanto tempo demora para fazer uma busca?
• em profundidade ou em largura• em um grafo com n vértices e m arestas
Suponha que inserir e remover de pilha/fila leva O(1)• Podemos usar vetores ou listas ligadas
A busca percorre todos os vértices• E empilha/enfileira seus vizinhos não visitados
• Se usarmos uma Matriz de Adjacências, leva O(n2)
E se usarmos Listas de Adjacência?• Cada aresta é analisada apenas duas vezes• Gastamos tempo O(max{n + m}) = O(n + m)
19
![Page 271: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/271.jpg)
Tempo para fazer a buscaQuanto tempo demora para fazer uma busca?
• em profundidade ou em largura• em um grafo com n vértices e m arestas
Suponha que inserir e remover de pilha/fila leva O(1)• Podemos usar vetores ou listas ligadas
A busca percorre todos os vértices• E empilha/enfileira seus vizinhos não visitados• Se usarmos uma Matriz de Adjacências, leva O(n2)
E se usarmos Listas de Adjacência?• Cada aresta é analisada apenas duas vezes• Gastamos tempo O(max{n + m}) = O(n + m)
19
![Page 272: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/272.jpg)
Tempo para fazer a buscaQuanto tempo demora para fazer uma busca?
• em profundidade ou em largura• em um grafo com n vértices e m arestas
Suponha que inserir e remover de pilha/fila leva O(1)• Podemos usar vetores ou listas ligadas
A busca percorre todos os vértices• E empilha/enfileira seus vizinhos não visitados• Se usarmos uma Matriz de Adjacências, leva O(n2)
E se usarmos Listas de Adjacência?
• Cada aresta é analisada apenas duas vezes• Gastamos tempo O(max{n + m}) = O(n + m)
19
![Page 273: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/273.jpg)
Tempo para fazer a buscaQuanto tempo demora para fazer uma busca?
• em profundidade ou em largura• em um grafo com n vértices e m arestas
Suponha que inserir e remover de pilha/fila leva O(1)• Podemos usar vetores ou listas ligadas
A busca percorre todos os vértices• E empilha/enfileira seus vizinhos não visitados• Se usarmos uma Matriz de Adjacências, leva O(n2)
E se usarmos Listas de Adjacência?• Cada aresta é analisada apenas duas vezes
• Gastamos tempo O(max{n + m}) = O(n + m)
19
![Page 274: MC-202 — Unidade 20 Percurso de Grafosrafael/cursos/1s2017/mc... · MC-202 — Unidade 20 Percurso de Grafos Rafael C. S. Schouery rafael@ic.unicamp.br Universidade Estadual de](https://reader034.vdocuments.site/reader034/viewer/2022042922/5f6f4e666b36ea3924362891/html5/thumbnails/274.jpg)
Tempo para fazer a buscaQuanto tempo demora para fazer uma busca?
• em profundidade ou em largura• em um grafo com n vértices e m arestas
Suponha que inserir e remover de pilha/fila leva O(1)• Podemos usar vetores ou listas ligadas
A busca percorre todos os vértices• E empilha/enfileira seus vizinhos não visitados• Se usarmos uma Matriz de Adjacências, leva O(n2)
E se usarmos Listas de Adjacência?• Cada aresta é analisada apenas duas vezes• Gastamos tempo O(max{n + m}) = O(n + m)
19