ces11 grafos2.ppt [modo de compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – grafos...
TRANSCRIPT
![Page 1: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/1.jpg)
GRAFOS
1 – Aspectos gerais
2 – Grafos orientados
3 – Problemas clássicos sobre grafos orientados
4 – Grafos não-orientados
5 – Problemas clássicos sobre grafos não-orientados
1
![Page 2: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/2.jpg)
4 – GRAFOS NÃO-ORIENTADOS
4.1 – Definições
� Um grafo não-orientado também é chamado de grafo não-dirigido, ou abreviadamente de grafo
� Num grafo não-orientado, os arcos são linhas ou arestas não-orientadas (deixam de ser setas)
2
![Page 3: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/3.jpg)
� Um arco é definido por um par não-orientado de vértices (v, w):
(v, w) = (w, v)
� Diz-se que o arco (v, w) é incidente sobre v e w
� Caminho em um grafo é uma seqüência de vértices v , v , ... , v , tais que
v w
v1, v2, ... , vn , tais que (v1, v2), (v2, v3), ... , (vn-1,vn) são arcos
� Comprimento de um caminho é o número de arcos desse caminho
3
![Page 4: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/4.jpg)
� O caminho v1, v2, ... , vn conecta v1 a vn
� Ciclo: caminho de um vértice a ele mesmo de comprimento ≥3
− um arco não pode aparecer mais de 1 vez.
� Não são ciclos:
4
Grafo cíclico: tem pelo menos um ciclo
Caso contrário é acíclico
Ciclo aqui é diferente de ciclo para digrafos
![Page 5: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/5.jpg)
4.2 – Estruturas de dados para grafos não-orientados
� Seja um grafo representando o mapa rodoviário de uma região:
S J Campos TaubatéJacarei1
2 3
5
Paraibuna
Caraguatatuba
S L Paraitinga
Ubatuba
Sta Branca45 6
7 8
![Page 6: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/6.jpg)
a) Matriz de adjacências
Nome 1 2 3 4 5 6 7 8
A matriz é simétrica em relação à diagonal principal
6
1 Jacarei V V
2 S J Campos V V V
3 Taubate V V
4 Sta Branca V V
5 Paraibuna V V V
6 S L Paraitinga V V
7 Caraguatatuba V V
8 Ubatuba V V
![Page 7: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/7.jpg)
b) Listas de adjacências
Jacarei1 2 4 ●
7
Jacarei1
S J Campos2
Taubate3
Sta Branca4
Paraibuna5
SL Paraitinga6
Caraguatatuba7
Ubatuba8
2 4 ●
1 3 5 ●
2 6 ●
1 5 ●
2 4 7 ●
3 8 ●
5 8 ●
6 7 ●
![Page 8: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/8.jpg)
4.3 – Componentes conexos e árvores livres
� Um grafo é conexo se todos os seus pares de vértices estiverem conectados (há um caminho entre dois vértices quaisquer desse grafo)
� Apesar de não haver caminho entre todos os pares de vértices, eles tem “conceitualmente” alguma ligação
8
![Page 9: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/9.jpg)
� Seja um grafo G = (V, A); sub-grafo de G é um grafo G’= (V’,A’) onde
− V’ é um subconjunto de V− A’ consiste de arcos (v, w) em A tais que v e w estão em
V’
� Sub-grafo induzido de G é aquele em que A’ consiste de todos os arcos (v, w) em A, tais que, tanto v como w estão em V’em V’
9
![Page 10: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/10.jpg)
10
![Page 11: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/11.jpg)
� Componente conexo de um grafo G é um sub-grafo induzido conexo máximo de G, � isto é, um sub-grafo induzido conexo que não é sub-grafo próprio de
nenhum outro sub-grafo conexo de G.
� Exemplo: grafo com apenas um componente conexo:
� Exemplo: grafo com dois componentes conexos:
11
![Page 12: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/12.jpg)
� Árvore livre: é um grafo acíclico conexo.
− Qualquer vértice de uma árvore livre pode ser sua raiz
� Exemplo: Grafo não conexo cujos componentes conexos são 2 árvores livres:
12
![Page 13: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/13.jpg)
� Propriedades das árvores livres:
1. Toda árvore livre tem pelo menos 1 vértice com somente 1 arco incidente sobre ele.
2. Toda árvore livre com n≥1 vértices tem exatamente n-1 arcos.
3. Acrescentando qualquer arco a uma árvore livre, então um e somente um ciclo é formado.
13
![Page 14: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/14.jpg)
� Família dos grafos: Grafos
Grafos acíclicos
Grafos cíclicos
Árvores Grafos não orientados
Grafos cíclicos orientados
Outros Grafos acíclicos
14
Listas lineares
Outras árvores
Conexos Não conexos
Árvores livres
Conexos cíclicos
acíclicos
![Page 15: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/15.jpg)
GRAFOS
1 – Aspectos gerais
2 – Grafos orientados
3 – Problemas clássicos sobre grafos orientados
4 – Grafos não-orientados
5 – Problemas clássicos sobre grafos não-orientados
15
![Page 16: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/16.jpg)
5 – PROBLEMAS CLÁSSICOS SOBRE
GRAFOS NÃO-ORIENTADOS
5.1 – Árvore de cobertura de custo mínimo
� Seja G = (V, A) um grafo não orientado conexo, com custos associados aos arcos
16
� Árvore de cobertura de G: árvore livre (sub-grafo) de Gcontendo todos os seus vértices
� Custo de uma árvore de cobertura: somatória dos custos associados a todos os arcos da árvore
![Page 17: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/17.jpg)
Exemplo: seja o grafo:
Árvores de cobertura:
17
![Page 18: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/18.jpg)
Aplicação: cidades ligadas por uma rede de comunicação:
A árvore de cobertura de custo mínimo representa uma rede que conecta todas as cidades, por um custo mínimo
18
![Page 19: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/19.jpg)
Problema: achar uma árvore de cobertura de um grafo G = (V, A) que seja de custo mínimo (pode haver mais de uma)
Solução: propriedade fundamental dessa árvore:
� Seja U um subconjunto próprio de V;
� Seja (u, v) um dos arcos de menor custo tal que u ∈∈∈∈ U e v ∈∈∈∈
19
V - U;
� Então há uma árvore de cobertura de custo mínimo de G que inclui o arco (u, v).
![Page 20: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/20.jpg)
Visualização: um conjunto V de vértices
Conjunto U de vértices
35
15
80
Arco pertencente a uma árvore de cobertura de custo mínimo
20
Conjunto V-U de vértices
80
22
mínimo
Pode haver mais de um arco de U a V-U de menor custo
![Page 21: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/21.jpg)
Exemplo: seja o grafo:
1
6
42
5
1
5 5
21
3
3
65
6 4
2
6
![Page 22: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/22.jpg)
1
6
42
Menor custo
1
5 5
U
5
22
3
3
65
6 4
2
6
![Page 23: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/23.jpg)
1
6
42
1
5 5
U
5
23
3
3
65
Menor custo
6 4
2
6
![Page 24: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/24.jpg)
1
6
42
1
5 5
U
5
24
3
3
65
Menor custo
6 4
2
6
![Page 25: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/25.jpg)
1
6
42
1
5 5
U
5
25
3
3
65
Menor custo
6 4
2
6
![Page 26: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/26.jpg)
1
6
42
1
5 5
U
5
26
3
3
65
Menor custo
6 4
2
6
![Page 27: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/27.jpg)
1
42
Árvore de cobertura de custo mínimo
Custo = 1+5+3+4+2 = 15
1
5
27
3
3
65
4
2
![Page 28: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/28.jpg)
Algoritmo de Prim: determina o conjunto de arcos de uma árvore de cobertura de custo mínimo para o grafo G
conjuntoarcos Prim (grafo G) {conjuntovértices U; vertice u, v; conjuntoarcos T;
T = φ; U = {1};while(U ≠ G.V) {
(u, v) = arco de custo mínimo | u ∈ U e v ∈ G.V - U;
28
(u, v) = arco de custo mínimo | u ∈ U e v ∈ G.V - U;T = T ∪ {( u, v )};U = U ∪ {v};
}return T;
}
![Page 29: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/29.jpg)
Algoritmo de Prim
conjuntoarcos Prim (grafo G) {
conjuntovertices U,V; vertice u, v; conjuntoarcos T;
arco aMinimo; T = φ; U = {1};
while(!verticesIguais(U, G.V)) { V = subtrair(G.V,U);
aMinimo= arcoCustoMinimo(U,V)
adicionarArco(aMinimo,&T);
adicionarVertice(v,U);
}
return T;
29
return T;
}
arco arcoCustoMinimo(conjuntovertices U, conjuntovertices V) {
arco aM; int custo=infinito;
Para cada u em U {
Para cada v em V {
Se (CustoArco(u,v) <custo ) {
aM.inicio=u; aM.fim=v; aM.custo=CustoArco(u,v)
}
}
}}
![Page 30: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/30.jpg)
5.2 – Travessia de grafos não orientados
� Visitar todos os nós de um grafo não orientado, de uma maneira sistemática.
a) Método da busca em profundidade
� Usa o mesmo algoritmo da busca em profundidade de
30
digrafos
![Page 31: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/31.jpg)
� Arcos de árvores são os mesmos; alguns arcos de voltacoincidem com eles e são só arcos de árvore
� Arcos para frente coincidem com arcos de volta e são só arcos de volta
� Arcos cruzantes não existem
� Exemplo:
31
� Exemplo:
Um grafoUm seu esquema de visitação
![Page 32: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/32.jpg)
b) Método da busca em largura
� Generalização do caminhamento por ordem de nível em árvores
� Ao invés de caminhar na direção dos filhos, caminha na direção dos irmãos
32
![Page 33: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/33.jpg)
void BuscaLargura (Grafo *G) {
filavertices F; vertice x, y;
Assinalar todos os vértices de G como não visitados;
enquanto (há vértices não visitados) {
F = φφφφ;
Seja v um vértice qualquer, não visitado;
Marcar v como visitado;
EntrarFilaVertices (v, F);
enquanto (Vazia (F) == FALSE) {
x = FrenteFila (F); DeletarFila (F);
33
x = FrenteFila (F); DeletarFila (F);
para (cada vértice y adjacente a x)
se (y não está visitado ) {
Marcar y como visitado;
EntrarFila (y, F);
}
}
}
}
![Page 34: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/34.jpg)
5.3 – Pontos de articulação e componentes bi-conexos
� Ponto de articulação (p-artic): Vértice v de um grafo Gtal que, se for removido de G junto com todos os arcos incidentes sobre ele, um componente conexo de G é particionado em dois ou mais componentes conexos
� Componente bi-conexo: componente conexo de um grafo G, sem p-artic’s
34
sem p-artic’s
![Page 35: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/35.jpg)
35
![Page 36: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/36.jpg)
Exemplo: um grafo com um componente bi-conexo
� Aplicação: em redes de comunicação, um p-artic é um
36
� Aplicação: em redes de comunicação, um p-artic é um elemento da rede que não pode falhar:
− Pares de elementos podem ficar incomunicáveis
� Grafo bi-conexo: rede protegida contra a falha de, no máximo, um elemento
![Page 37: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/37.jpg)
Determinação dos p-artic’s de um grafo
� Um método simples, porém ineficiente:
− Percorrer o grafo em profundidade tantas vezes quanto for o número de seus vértices
37
− Em cada uma desses percursos, começar por um vértice diferente
− A raiz da árvore de uma busca é um p-articse tiver mais de um filho
![Page 38: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/38.jpg)
Exemplo: busca em profundidade começando pelo vértice a do grafo a seguir
� O vértice a é p-artic, pois tem dois filhos na árvore de busca
Um grafoBusca em profundidade
38
Um grafoBusca em profundidade
começando por a
![Page 39: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/39.jpg)
� Como não há arcos cruzantes, com a remoção de a, suas duas sub-árvores ficam sem comunicação
removido
39
![Page 40: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/40.jpg)
Um método mais eficiente:
1. Percorrer o grafo em profundidade, numerando os vértices na ordem em que forem visitados (nvis)
40
� Conclui-se inicialmente que a raiz a é p-artic
![Page 41: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/41.jpg)
2. Visitar os vértices dessa árvore em pós-ordem; para cada vértice v visitado, computar menor[v]
� Definição de menor[v]
menor[v] = min (nvis[v], nvis[w’s])
41
descendente de v
• w’s são todos os vértices que se ligam com v ou com os descendentes próprios de v por arcos de volta
![Page 42: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/42.jpg)
Desenvolvendo a fórmula anterior:
menor[v] = min (nvis[v], nvis[y’s], menor[x’s])
y’s: todos os vértices que se ligam com v por arcos de volta
x’s: todos os filhos de v
42
v
y
x
Arco de volta
Arco de árvoreA seguir, um estudo da
utilidade do conceito de menor de um vértice
![Page 43: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/43.jpg)
Seja a seguinte árvore de busca em profundidade (no de busca ao lado de cada vértice):
Sem arcos de volta, o grafo é uma árvore livre
Com a exceção das folhas e de raízes com um só filho, todos os vértices são p-artic
a1
b2 10 12
x3 11 13
43
todos os vértices são p-articx3 11 13
v4
5 7
6 8 9
![Page 44: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/44.jpg)
Se algum descendente de v (pode ser o próprio v) se ligar a b ou a por arco de volta:
a1
b2 10 12
x3 11 13
Seja x removido
44
x3 11 13
v4
5 7
6 8 9
![Page 45: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/45.jpg)
Se algum descendente de v (pode ser o próprio v) se ligar a b ou a por arco de volta:
a1
b2 10 12
11 13
v e seus descendentes não ficam sem comunicação com o resto do grafo
x não é p-artic
45
11 13
v4
5 7
6 8 9
![Page 46: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/46.jpg)
Se de algum filho de v não se consegue voltar a x, b ou a sem passar por v:
É o caso do nó 7
Seja v removido
a1
b2 10 12
x3 11 13
46
x3 11 13
v4
5 7
6 8 9
![Page 47: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/47.jpg)
Se de algum filho de v não se consegue voltar a x, b ou a sem passar por v:
O nó 7 e seus descendentes ficam sem comunicação com o resto do grafo
v é p-artic
a1
b2 10 12
x3 11 13
47
x3 11 13
5 7
6 8 9
![Page 48: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/48.jpg)
Menor[v]: ponto mais alto da árvore (nvis) que se chega de v, sem voltar por seus ancestrais
Neste esquema, menor[v] = 1
De v se chega a b, x, a
a1
b2 10 12
x3 11 13
48
x3 11 13
v4
w5 z7
6 8 9
menor[v] = = min (nvis[v], nvis[b], menor[w], menor[z])= min (4, 2, 3, 1) = 1
![Page 49: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/49.jpg)
Se menor [algum filho de v] ≥ nvis(v), v é p-artic
Neste esquema, menor[w] = 3menor[z] = 1nvis[v] = 4
v não é p-artic
a1
b2 10 12
x3 11 13
49
v não é p-artic
Seja v removido
x3 11 13
v4
w5 z7
6 8 9
![Page 50: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/50.jpg)
Se menor [algum filho de v] ≥ nvis(v), v é p-artic
w, z e seus descendentes se comunicam com o resto do grafo
a1
b2 10 12
x3 11 13
50
x3 11 13
w5 z7
6 8 9
![Page 51: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/51.jpg)
Se menor [algum filho de v] ≥ nvis(v), v é p-artic
Neste esquema, menor[w] = 3menor[z] = 4nvis[v] = 4
v é p-artic
a1
b2 10 12
x3 11 13
51
v é p-artic
Seja v removido
x3 11 13
v4
w5 z7
6 8 9
![Page 52: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/52.jpg)
Se menor [algum filho de v] ≥ nvis(v), v é p-artic
z e seus descendentes ficam sem comunicação com o resto do grafo
a1
b2 10 12
x3 11 13
52
x3 11 13
w5 z7
6 8 9
![Page 53: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/53.jpg)
Conclusões sobre a detecção de pontos de articulação:
� O vértice raiz é p-artic se e somente se tiver 2 ou mais filhos
� Um vértice v ≠ raiz é p-artic se e somente se ∃∃∃∃x filho de v tal que
menor [x] ≥≥≥≥ nvis [v]
53
menor [x] ≥≥≥≥ nvis [v]
![Page 54: ces11 grafos2.ppt [Modo de Compatibilidade]pauloac/ces11/grafos2_slides.pdf · 2 – Grafos orientados 3 – Problemas clássicos sobre grafos orientados 4 – Grafos não-orientados](https://reader035.vdocuments.net/reader035/viewer/2022071210/602215c31601985eab09d194/html5/thumbnails/54.jpg)
Exemplo: no grafo ilustrativo
menor [e] = min (nvis [e], nvis [b], nvis [a]) = min (4, 2, 1) = 1menor [d] = min (nvis [d], nvis [a], menor [e]) = min (3, 1, 1) = 1
54
menor [b] = min (nvis [b], nvis [e], menor [d]) = min (2, 4, 1) = 1
menor [g] = min (nvis [g], nvis [c]) = min (7, 5) = 5menor [f] = min (nvis [f], menor [g]) = min ( 6, 5 ) = 5menor [c] = min (nvis [c], nvis [g], menor [f] ) = min (5, 7, 5) = 5a : é a raiz e tem 2 filhos: é ponto de articulaçãoc : menor [f] ≥ nvis [c] : é ponto de articulação.