Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca...
Transcript of Busca em Grafostiagodemelo.info/wp-content/uploads/2019/11/grafos-busca.pdf · 2019-11-13 · Busca...
Algoritmos e Estruturas de Dados II
Busca em GrafosProf. Tiago Eugenio de Melo
www.tiagodemelo.info
2/183
Observações
● As palavras com a fonte Courier indicam as palavras-reservadas da linguagem de programação.
3/183
Referências
● Projetos de Algoritmos – com implementações em Pascal e C. Nivio Ziviani. 2a edição. Thomson, 2005.
● Material baseado nas notas de aula do professor Marco Antônio Moreira de Carvalho. Acessado em 14/10/2019: http://www.decom.ufop.br/marco/ensino/bcc204/material-das-aulas
4/183
IntroduçãoBusca em Grafos
5/183
Busca em Grafos
6/183
Busca em Grafos
● Definição
7/183
Busca em Grafos
● Definição– A busca em grafos (ou percurso em grafos) é a
examinação de vértices e arestas de um grafo.
8/183
Busca em Grafos
● Definição– A busca em grafos (ou percurso em grafos) é a
examinação de vértices e arestas de um grafo.– O projeto de bons algoritmos para determinação de
estruturas ou propriedades de grafos depende fortemente do domínio dessas técnicas.
9/183
Busca em Grafos
10/183
Busca em Grafos
● Terminologia
11/183
Busca em Grafos
● Terminologia– Uma aresta ou um vértice ainda não examinados
são marcados como não explorados ou não visitados.
12/183
Busca em Grafos
● Terminologia– Uma aresta ou um vértice ainda não examinados
são marcados como não explorados ou não visitados.
– Inicialmente, todos os vértices e arestas são marcados como não explorados.
13/183
Busca em Grafos
● Terminologia– Uma aresta ou um vértice ainda não examinados
são marcados como não explorados ou não visitados.
– Inicialmente, todos os vértices e arestas são marcados como não explorados.
– Após terem sido examinados, os mesmos são marcados como explorados ou visitados.
14/183
Busca em Grafos
● Terminologia– Uma aresta ou um vértice ainda não examinados
são marcados como não explorados ou não visitados.
– Inicialmente, todos os vértices e arestas são marcados como não explorados.
– Após terem sido examinados, os mesmos são marcados como explorados ou visitados.
– Ao final, todos os vértices e arestas são marcados como explorados (no caso de uma busca completa).
15/183
Busca Genérica
16/183
Atravessando Labirintos
17/183
Como escapar?
18/183
Como escapar?
● Algoritmo de Trémaux (Século XIX)
19/183
Como escapar?
● Algoritmo de Trémaux (Século XIX)– Pierre Trémaux
20/183
Como escapar?
● Algoritmo de Trémaux (Século XIX)– Pierre Trémaux– Arquiteto francês, fotógrafo e orientalista.
21/183
Como escapar?
● Algoritmo de Trémaux (Século XIX)– Pierre Trémaux– Arquiteto francês, fotógrafo e orientalista.– Autor de várias publicações científicas e
etnografias.
22/183
Como escapar?
23/183
Como escapar?
● Algoritmo
24/183
Como escapar?
● Algoritmo– Inicialmente, uma direção aleatória é escolhida.
25/183
Como escapar?
● Algoritmo– Inicialmente, uma direção aleatória é escolhida.– Ao chegar em uma junção não visitada (ou seja,
nenhuma linha), escolha a direção aleatória e risque o caminho.
26/183
Como escapar?
● Algoritmo– Inicialmente, uma direção aleatória é escolhida.– Ao chegar em uma junção não visitada (ou seja,
nenhuma linha), escolha a direção aleatória e risque o caminho.
– Ao chegar em uma junção já marcada, vire-se e caminhe de volta, marcando o caminho pela segunda vez.
27/183
Como escapar?
● Algoritmo– Inicialmente, uma direção aleatória é escolhida.– Ao chegar em uma junção não visitada (ou seja,
nenhuma linha), escolha a direção aleatória e risque o caminho.
– Ao chegar em uma junção já marcada, vire-se e caminhe de volta, marcando o caminho pela segunda vez.
– Se este não for o caso, escolha o caminho com menos linhas e marque-o novamente.
28/183
Como escapar?
● Algoritmo– Inicialmente, uma direção aleatória é escolhida.– Ao chegar em uma junção não visitada (ou seja, nenhuma
linha), escolha a direção aleatória e risque o caminho.– Ao chegar em uma junção já marcada, vire-se e caminhe
de volta, marcando o caminho pela segunda vez.– Se este não for o caso, escolha o caminho com menos
linhas e marque-o novamente.– Quando finalmente chegar à saída do labirinto, os
caminhos marcados com apenas uma linha indicarão o caminho direto até o ponto inicial.
29/183
Como escapar?
● Algoritmo– Inicialmente, uma direção aleatória é escolhida.– Ao chegar em uma junção não visitada (ou seja, nenhuma
linha), escolha a direção aleatória e risque o caminho.– Ao chegar em uma junção já marcada, vire-se e caminhe de
volta, marcando o caminho pela segunda vez.– Se este não for o caso, escolha o caminho com menos linhas
e marque-o novamente.– Quando finalmente chegar à saída do labirinto, os caminhos
marcados com apenas uma linha indicarão o caminho direto até o ponto inicial.
– Se não houver saída, você voltará ao ponto inicial, no qual todos os caminhos possuem duas linhas.
30/183
Atravessando Labirintos
31/183
Atravessando Labirintos
32/183
Atravessando Labirintos
33/183
Atravessando Labirintos
34/183
Atravessando Labirintos
35/183
Atravessando Labirintos
36/183
Atravessando Labirintos
● Ideia
37/183
Atravessando Labirintos
● Ideia– Uma forma de encontrar a saída do labirinto sem
nunca percorrer mais de uma vez o mesmo caminho consiste em realizar uma busca no grafo de modo a nunca repetir arestas, marcando-as.
38/183
Atravessando Labirintos
● Ideia– Uma forma de encontrar a saída do labirinto sem
nunca percorrer mais de uma vez o mesmo caminho consiste em realizar uma busca no grafo de modo a nunca repetir arestas, marcando-as.
– A busca se inicia no vértice que representa a entrada e termina no vértice que representa a saída.
39/183
Atravessando Labirintos
40/183
Atravessando Labirintos
41/183
Atravessando Labirintos
42/183
Busca em Grafos
43/183
Busca em Grafos
44/183
Busca em Grafos
● Dependendo do critério utilizado para a escolha dos vértices e arestas a serem visitados, diferentes tipos de buscas são desenvolvidos a partir da busca genérica.
45/183
Busca em Grafos
● Dependendo do critério utilizado para a escolha dos vértices e arestas a serem visitados, diferentes tipos de buscas são desenvolvidos a partir da busca genérica.
● Basicamente, duas buscas completas em grafos são essenciais:
46/183
Busca em Grafos
● Dependendo do critério utilizado para a escolha dos vértices e arestas a serem visitados, diferentes tipos de buscas são desenvolvidos a partir da busca genérica.
● Basicamente, duas buscas completas em grafos são essenciais:– Busca em profundidade (ou DFS – Depth-First
Search);
47/183
Busca em Grafos
● Dependendo do critério utilizado para a escolha dos vértices e arestas a serem visitados, diferentes tipos de buscas são desenvolvidos a partir da busca genérica.
● Basicamente, duas buscas completas em grafos são essenciais:– Busca em profundidade (ou DFS – Depth-First
Search);– Busca em largura (ou BFS – Breadth-First Search).
48/183
DFS versus BFS
49/183
DFS versus BFS
50/183
DFS versus BFS
51/183
Busca em Profundidade (DFS)
52/183
Busca em Profundidade (DFS)
● Características
53/183
Busca em Profundidade (DFS)
● Características– A busca em profundidade visita todos os vértices
de um grafo, usando como critério os vizinhos do vértice visitado mais recentemente.
54/183
Busca em Profundidade (DFS)
● Características– A busca em profundidade visita todos os vértices
de um grafo, usando como critério os vizinhos do vértice visitado mais recentemente.
– Principal característica:
55/183
Busca em Profundidade (DFS)
● Características– A busca em profundidade visita todos os vértices
de um grafo, usando como critério os vizinhos do vértice visitado mais recentemente.
– Principal característica:● Utiliza uma pilha explícita ou recursividade para guiar
a busca.
56/183
Busca em Profundidade (DFS)
● Exemplo de uso de pilha:
57/183
Busca em Profundidade (DFS)
● Exemplo de uso de pilha:
58/183
Busca em Profundidade (DFS)
● Exemplo de uso de pilha:
59/183
Busca em Profundidade (DFS)
● Exemplo de uso de pilha:
60/183
Busca em Profundidade (DFS)
● Exemplo de uso de pilha:
61/183
Busca em Profundidade (DFS)
● Exemplo de uso de pilha:
62/183
Busca em Profundidade (DFS)
● Exemplo de uso de pilha:
63/183
Busca em Profundidade (DFS)
● Exemplo de uso de pilha:
64/183
Busca em Profundidade (DFS)
● Exemplo de uso de pilha:
65/183
Busca em Profundidade (DFS)
● Exemplo de uso de pilha:
66/183
Busca em Profundidade (DFS)
● Exemplo de uso de pilha:
67/183
Busca em Profundidade (DFS)
● Exemplo de uso de pilha:
68/183
Busca em Profundidade (DFS)
● Exemplo de uso de pilha:
69/183
Busca em Profundidade (DFS)
● Exemplo de uso de pilha:
70/183
Busca em Profundidade (DFS)
● Exemplo de uso de pilha:
71/183
Busca em Profundidade (DFS)
● Exemplo de uso de pilha:
72/183
Busca em Profundidade (DFS)
● Exemplo de uso de pilha:
73/183
Busca em Profundidade (DFS)
● Exemplo de uso de pilha:
74/183
Busca em Profundidade (DFS)
75/183
Busca em Profundidade (DFS)
76/183
Busca em Profundidade (DFS)
● Classificação de arestas
77/183
Busca em Profundidade (DFS)
● Classificação de arestas– Ao explorar um grafo G conexo usando a DFS,
podemos categorizar as arestas:
78/183
Busca em Profundidade (DFS)
● Classificação de arestas– Ao explorar um grafo G conexo usando a DFS,
podemos categorizar as arestas:● Arestas de árvore: satisfazem ao primeiro se do
algoritmo (linha 3), ou seja, levam à visitação de vértices ainda não visitados.
79/183
Busca em Profundidade (DFS)
● Classificação de arestas– Ao explorar um grafo G conexo usando a DFS,
podemos categorizar as arestas:● Arestas de árvore: satisfazem ao primeiro se do
algoritmo (linha 3), ou seja, levam à visitação de vértices ainda não visitados.
● Arestas de retorno: demais arestas. Formam ciclos, pois levam a vértices já visitados.
80/183
Busca em Profundidade (DFS)
● Classificação de arestas– Ao explorar um grafo G conexo usando a DFS,
podemos categorizar as arestas:● Arestas de árvore: satisfazem ao primeiro se do
algoritmo (linha 3), ou seja, levam à visitação de vértices ainda não visitados.
● Arestas de retorno: demais arestas. Formam ciclos, pois levam a vértices já visitados.
– Árvore de profundidade
81/183
Busca em Profundidade (DFS)
● Classificação de arestas– Ao explorar um grafo G conexo usando a DFS,
podemos categorizar as arestas:● Arestas de árvore: satisfazem ao primeiro se do
algoritmo (linha 3), ou seja, levam à visitação de vértices ainda não visitados.
● Arestas de retorno: demais arestas. Formam ciclos, pois levam a vértices já visitados.
– Árvore de profundidade● A subárvore G formada pelas arestas de árvore é
chamada de Árvore de Profundidade G.
82/183
DFS - Exemplo
83/183
DFS - Exemplo
84/183
DFS - Exemplo
85/183
DFS - Exemplo
86/183
DFS - Exemplo
87/183
DFS - Exemplo
88/183
DFS - Exemplo
89/183
DFS - Exemplo
90/183
DFS - Exemplo
91/183
DFS - Exemplo
92/183
DFS
93/183
DFS
● Complexidade
94/183
DFS
● Complexidade– Para cada vértice do grafo, a DFS percorre todos
os seus vizinhos.
95/183
DFS
● Complexidade– Para cada vértice do grafo, a DFS percorre todos
os seus vizinhos.– Cada aresta é visitada duas vezes.
96/183
DFS
● Complexidade– Para cada vértice do grafo, a DFS percorre todos
os seus vizinhos.– Cada aresta é visitada duas vezes.– Se apresentarmos o grafo por uma lista de
adjacências, a DFS tem complexidade O(|V| + |E|).
97/183
DFS – Grafos Direcionados
98/183
DFS – Grafos Direcionados
● A aplicação da DFS em grafos direcionados é essencialmente igual à aplicação em grafos não direcionados.
99/183
DFS – Grafos Direcionados
● A aplicação da DFS em grafos direcionados é essencialmente igual à aplicação em grafos não direcionados.
● No entanto, mesmo o grafo direcionado sendo conexo, a DFS pode precisar ser chamada repetidas vezes enquanto houver vértices não visitados, retornando uma floresta.
100/183
DFS – Grafos Direcionados
● A aplicação da DFS em grafos direcionados é essencialmente igual à aplicação em grafos não direcionados.
● No entanto, mesmo o grafo direcionado sendo conexo, a DFS pode precisar ser chamada repetidas vezes enquanto houver vértices não visitados, retornando uma floresta.
● Este é o mesmo caso quando a DFS é aplicada a um GND desconexo.
101/183
Busca em Profundidade - Reinício
102/183
Busca em Profundidade
103/183
Busca em Profundidade
● Classificação de arestas
104/183
Busca em Profundidade
● Classificação de arestas– Ao explorar um grafo G direcionado usando a DFS,
podemos categorizar as arestas.
105/183
Busca em Profundidade
● Classificação de arestas– Ao explorar um grafo G direcionado usando a DFS,
podemos categorizar as arestas.– Sejam o vértice v a origem da aresta e o vértice w o
destino da mesma:
106/183
Busca em Profundidade
● Classificação de arestas– Ao explorar um grafo G direcionado usando a DFS,
podemos categorizar as arestas.– Sejam o vértice v a origem da aresta e o vértice w o
destino da mesma:● Arcos de avanço
107/183
Busca em Profundidade
● Classificação de arestas– Ao explorar um grafo G direcionado usando a DFS,
podemos categorizar as arestas.– Sejam o vértice v a origem da aresta e o vértice w o
destino da mesma:● Arcos de avanço● Arcos de retorno
108/183
Busca em Profundidade
● Classificação de arestas– Ao explorar um grafo G direcionado usando a DFS,
podemos categorizar as arestas.– Sejam o vértice v a origem da aresta e o vértice w o
destino da mesma:● Arcos de avanço● Arcos de retorno● Arcos de cruzamento
109/183
Busca em Profundidade
110/183
Busca em Profundidade
● Classificação de arestas
111/183
Busca em Profundidade
● Classificação de arestas– Arcos de avanço
112/183
Busca em Profundidade
● Classificação de arestas– Arcos de avanço
● Caso w seja descendente de v na floresta.
113/183
Busca em Profundidade
● Classificação de arestas– Arcos de avanço
● Caso w seja descendente de v na floresta.
– Arcos de retorno
114/183
Busca em Profundidade
● Classificação de arestas– Arcos de avanço
● Caso w seja descendente de v na floresta.
– Arcos de retorno● Caso v seja descendente de w na floresta.
115/183
Busca em Profundidade
● Classificação de arestas– Arcos de avanço
● Caso w seja descendente de v na floresta.
– Arcos de retorno● Caso v seja descendente de w na floresta.● Ou, w é ancestral de v.
116/183
Busca em Profundidade
● Classificação de arestas– Arcos de avanço
● Caso w seja descendente de v na floresta.
– Arcos de retorno● Caso v seja descendente de w na floresta.● Ou, w é ancestral de v.
– Arcos de cruzamento (cruzado)
117/183
Busca em Profundidade
● Classificação de arestas– Arcos de avanço
● Caso w seja descendente de v na floresta.
– Arcos de retorno● Caso v seja descendente de w na floresta.● Ou, w é ancestral de v.
– Arcos de cruzamento (cruzado)● Caso w não seja descendente de v e v não seja
descendente de w.
118/183
Busca em Profundidade
● Classificação de arestas– Arcos de avanço
● Caso w seja descendente de v na floresta.
– Arcos de retorno● Caso v seja descendente de w na floresta.● Ou, w é ancestral de v.
– Arcos de cruzamento (cruzado)● Caso w não seja descendente de v e v não seja
descendente de w.● Ou, w é primo de v.
119/183
Busca em Profundidade
120/183
Busca em Profundidade
● Exemplo
121/183
Busca em Profundidade
● Exemplo
122/183
Busca em Profundidade
● ExemploArcos da floresta são vermelhos.
123/183
Busca em Profundidade
● ExemploArcos da floresta são vermelhos.
Arcos de retorno são verdes.
124/183
Busca em Profundidade
● ExemploArcos da floresta são vermelhos.
Arcos de retorno são verdes.
Arcos de avanço são roxos.
125/183
Busca em Profundidade
● ExemploArcos da floresta são vermelhos.
Arcos de retorno são verdes.
Arcos de avanço são roxos.
Arcos cruzados são azuis.
126/183
DFS - Exemplo
127/183
DFS - Exemplo
128/183
DFS - Exemplo
129/183
DFS - Exemplo
130/183
DFS - Exemplo
131/183
DFS - Exemplo
132/183
DFS - Exemplo
133/183
DFS - Exemplo
134/183
DFS - Exemplo
135/183
DFS - Exemplo
136/183
Exemplo
● https://www.cs.usfca.edu/~galles/visualization/DFS.html
137/183
Busca em Largura
138/183
Busca em Largura
139/183
Busca em Largura
● Características
140/183
Busca em Largura
● Características– A busca em largura visita todos os vértices de um
grafo, usando como critério o vértice visitado menos recentemente e cuja vizinhança ainda não foi explorada.
141/183
Busca em Largura
● Características– A busca em largura visita todos os vértices de um
grafo, usando como critério o vértice visitado menos recentemente e cuja vizinhança ainda não foi explorada.
– Característica principal: utiliza uma fila para guiar a busca.
142/183
Busca em Largura
143/183
Busca em Largura
● Atuação em camadas
144/183
Busca em Largura
● Atuação em camadas– Inicialmente são considerados os vértices com
distância 0 (zero) do vértice inicial.
145/183
Busca em Largura
● Atuação em camadas– Inicialmente são considerados os vértices com
distância 0 (zero) do vértice inicial.– Na iteração 1 são visitados os vértices com
distância 1; prosseguindo, de modo genérico, na iteração d será adicionada uma camada com todos os vértices com distância d do vértice inicial.
146/183
Busca em Largura
● Atuação em camadas– Inicialmente são considerados os vértices com
distância 0 (zero) do vértice inicial.– Na iteração 1 são visitados os vértices com
distância 1; prosseguindo, de modo genérico, na iteração d será adicionada uma camada com todos os vértices com distância d do vértice inicial.
– Cada novo vértice visitado é adicionado no final de uma fila Q.
147/183
Busca em Largura
● Atuação em camadas– Inicialmente são considerados os vértices com
distância 0 (zero) do vértice inicial.– Na iteração 1 são visitados os vértices com
distância 1; prosseguindo, de modo genérico, na iteração d será adicionada uma camada com todos os vértices com distância d do vértice inicial.
– Cada novo vértice visitado é adicionado no final de uma fila Q.
– Cada vértice da fila é removido depois que toda a vizinhança for visitada.
148/183
Busca em Largura
● Atuação em camadas– Inicialmente são considerados os vértices com distância 0
(zero) do vértice inicial.– Na iteração 1 são visitados os vértices com distância 1;
prosseguindo, de modo genérico, na iteração d será adicionada uma camada com todos os vértices com distância d do vértice inicial.
– Cada novo vértice visitado é adicionado no final de uma fila Q.
– Cada vértice da fila é removido depois que toda a vizinhança for visitada.
– Cada vértice da fila é removido depois que toda a vizinhança for visitada.
149/183
Busca em Largura
● Atuação em camadas– Inicialmente são considerados os vértices com distância 0
(zero) do vértice inicial.– Na iteração 1 são visitados os vértices com distância 1;
prosseguindo, de modo genérico, na iteração d será adicionada uma camada com todos os vértices com distância d do vértice inicial.
– Cada novo vértice visitado é adicionado no final de uma fila Q.– Cada vértice da fila é removido depois que toda a vizinhança
for visitada.– Cada vértice da fila é removido depois que toda a vizinhança
for visitada.– A busca termina quando a fila se torna vazia.
150/183
Busca em Largura - BFS
151/183
Busca em Largura - BFS
152/183
Busca em Largura - BFS
153/183
Busca em Largura - BFS
154/183
Busca em Largura - BFS
155/183
Busca em Largura - BFS
156/183
Busca em Largura - BFS
157/183
Busca em Largura - BFS
158/183
Busca em Largura - BFS
159/183
Busca em Largura - BFS
160/183
Busca em Largura - BFS
161/183
Busca em Largura - BFS
162/183
Busca em Largura - BFS
● Complexidade
163/183
Busca em Largura - BFS
● Complexidade– Cada vértice só entra na fila uma vez.
164/183
Busca em Largura - BFS
● Complexidade– Cada vértice só entra na fila uma vez.– Inserir e remover na fila possuem complexidade
constante, realizadas |V| vezes cada.
165/183
Busca em Largura - BFS
● Complexidade– Cada vértice só entra na fila uma vez.– Inserir e remover na fila possuem complexidade
constante, realizadas |V| vezes cada.– A lista de adjacências de cada vértice é examinada
apenas uma vez, e a soma dos comprimentos de todas as listas é Ө(m).
166/183
Busca em Largura - BFS
● Complexidade– Cada vértice só entra na fila uma vez.– Inserir e remover na fila possuem complexidade
constante, realizadas |V| vezes cada.– A lista de adjacências de cada vértice é examinada
apenas uma vez, e a soma dos comprimentos de todas as listas é Ө(m).
– Logo, se representarmos o grafo por uma lista de adjacências, a busca em largura (BFS) tem complexidade O(n+m).
167/183
Exemplo
https://www.cs.usfca.edu/~galles/visualization/BFS.html
168/183
DFS x BFS
169/183
DFS x BFS
● DFS – Busca em Profundidade
170/183
DFS x BFS
● DFS – Busca em Profundidade– Incursão profundas no grafo, voltando somente
quando não existem mais vértices desconhecidos pela frente.
171/183
DFS x BFS
● DFS – Busca em Profundidade– Incursão profundas no grafo, voltando somente
quando não existem mais vértices desconhecidos pela frente.
– Marca o vértice antes de visitar toda sua vizinhança.
172/183
DFS x BFS
● DFS – Busca em Profundidade– Incursão profundas no grafo, voltando somente
quando não existem mais vértices desconhecidos pela frente.
– Marca o vértice antes de visitar toda sua vizinhança.
– Uso de pilha.
173/183
DFS x BFS
● DFS – Busca em Profundidade– Incursão profundas no grafo, voltando somente
quando não existem mais vértices desconhecidos pela frente.
– Marca o vértice antes de visitar toda sua vizinhança.
– Uso de pilha.● BFS – Busca em Largura
174/183
DFS x BFS
● DFS – Busca em Profundidade– Incursão profundas no grafo, voltando somente quando
não existem mais vértices desconhecidos pela frente.– Marca o vértice antes de visitar toda sua vizinhança.– Uso de pilha.
● BFS – Busca em Largura– Busca progride em largura: certifica-se de que vizinhos
próximos sejam visitados primeiramente.
175/183
DFS x BFS
● DFS – Busca em Profundidade– Incursão profundas no grafo, voltando somente quando
não existem mais vértices desconhecidos pela frente.– Marca o vértice antes de visitar toda sua vizinhança.– Uso de pilha.
● BFS – Busca em Largura– Busca progride em largura: certifica-se de que vizinhos
próximos sejam visitados primeiramente.– Marca o vértice depois de visitar toda a sua vizinhança.
176/183
DFS x BFS
● DFS – Busca em Profundidade– Incursão profundas no grafo, voltando somente quando não
existem mais vértices desconhecidos pela frente.– Marca o vértice antes de visitar toda sua vizinhança.– Uso de pilha.
● BFS – Busca em Largura– Busca progride em largura: certifica-se de que vizinhos
próximos sejam visitados primeiramente.– Marca o vértice depois de visitar toda a sua vizinhança.– Uso de fila.
177/183
Aplicações
178/183
Aplicações
● Detectar grafos desconectados.
179/183
Aplicações
● Detectar grafos desconectados.● Detectar se o grafo possui ciclos.
180/183
Aplicações
● Detectar grafos desconectados.● Detectar se o grafo possui ciclos.● Encontrar componentes biconexas.
181/183
Aplicações
● Detectar grafos desconectados.● Detectar se o grafo possui ciclos.● Encontrar componentes biconexas.● Classificar arestas.
182/183
Aplicações
● Detectar grafos desconectados.● Detectar se o grafo possui ciclos.● Encontrar componentes biconexas.● Classificar arestas.● Encontrar componentes fortemente conexas.
183/183
Aplicações
● Detectar grafos desconectados.● Detectar se o grafo possui ciclos.● Encontrar componentes biconexas.● Classificar arestas.● Encontrar componentes fortemente conexas.● Determinar o menor caminho em grafos não
ponderados.