Captulo VII Algoritmos para Grafos 7 1 Caminhos
- Slides: 40
Capítulo VII – Algoritmos para Grafos 7. 1 – Caminhos de menores custos 7. 2 – Busca em profundidade para digrafos 7. 3 – Teste de aciclicidade 7. 4 – Ordenação topológica 7. 5 – Caminhos críticos em digrafos acíclicos 7. 6 – Componentes fortemente conexos 7. 7 – Árvores de cobertura de custo mínimo 7. 8 – Travessia de grafos não-orientados 7. 9 – Pontos de articulação e componentes biconexos
7. 7 – Árvores de Cobertura de Custo Mínimo 7. 7. 1 – Definições e descrição do problema Seja G = {V, A} um grafo não-orientado conexo, com custos associados arcos Árvore de cobertura de G: árvore livre (sub-grafo) de G contendo todos os seus vértices Custo de uma árvore de cobertura: somatória dos custos associados a todos os arcos da árvore
Exemplo: seja o grafo: Duas de suas árvores de cobertura:
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
Problema: achar uma árvore de cobertura de um grafo G = {V, A} que seja de custo mínimo (pode haver mais de uma)
7. 7. 2 – Uma solução: algoritmo de Prim O algoritmo de Prim usa a propriedade fundamental dessa árvore: Seja U um subconjunto próprio de V Seja (u, v) um dos arcos de menor custo tal que u Ue v V-U Então há uma árvore de cobertura de custo mínimo de G que inclui o arco (u, v)
Visualização: um conjunto V de vértices Conjunto U de vértices 35 15 80 22 Conjunto VU de vértices Todos os arcos que ligam vértices de U com vértices de V-U Arco pertencente a uma árvore de cobertura de custo mínimo Pode haver mais de um arco de U a V-U de menor custo
Exemplo: seja o grafo: 1 6 5 1 2 5 4 5 3 2 3 4 6 5 6 6
U 1 6 Menor custo 5 1 2 5 4 5 3 2 3 4 6 5 6 6
U 1 6 5 1 2 5 4 5 3 2 3 4 6 5 6 Menor custo 6
U 1 6 5 1 2 5 4 5 3 2 3 4 6 5 6 Menor custo 6
U 1 6 5 1 2 5 4 5 3 Menor custo 2 3 4 6 5 6 6
U 1 6 5 1 2 5 4 5 3 Menor custo 2 3 4 6 5 6 6
Árvore de cobertura de custo mínimo 1 Custo = 1+5+3+4+2 = 15 1 2 4 5 3 2 3 4 5 6
Algoritmo de Prim: determina o conjunto de arcos de uma árvore de cobertura de custo mínimo para o grafo G = {V, A} conjuntoarcos Prim (grafo G) { conjuntovértices U; vertice u, v; conjuntoarcos T; T = ; U = {1}; enquanto (U G. V) { (u, v) = arco de custo mínimo | u U e v G. V U; T = T {( u, v )}; U = U {v}; } retornar T;
Capítulo VII – Algoritmos para Grafos 7. 1 – Caminhos de menores custos 7. 2 – Busca em profundidade para digrafos 7. 3 – Teste de aciclicidade 7. 4 – Ordenação topológica 7. 5 – Caminhos críticos em digrafos acíclicos 7. 6 – Componentes fortemente conexos 7. 7 – Árvores de cobertura de custo mínimo 7. 8 – Travessia de grafos não-orientados 7. 9 – Pontos de articulação e componentes biconexos
7. 8 – Travessia de Grafos Não-Orientados Visitar todos os nós de um grafo não-orientado, de uma maneira sistemática 7. 8. 1 – Método da busca em profundidade Usa o mesmo algoritmo da busca em profundidade para digrafos
Exemplo: Arcos de árvores são os mesmos; alguns arcos de volta coincidem 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 Um grafo Um esquema de visitação
7. 8. 2 – Método da busca em largura Generalização do caminhamento por ordem de nível em árvores Em vez de caminhar na direção dos filhos, caminha na direção dos irmãos
void Busca. Largura (Grafo *G) { filavertices F; vertice x, y; Assinalar todos os vértices de G como não visitados; enquanto (houver vértices não visitados) { F = ; Seja v um vértice qualquer, não visitado; Marcar v como visitado; Entrar. Fila. Vertices (v, F); enquanto (Vazia (F) == FALSE) { x = Frente. Fila (F); Deletar. Fila (F); para (cada vértice y adjacente a x) se (y não está visitado ) { Marcar y como visitado; Entrar. Fila (y, F); } }
Capítulo VII – Algoritmos para Grafos 7. 1 – Caminhos de menores custos 7. 2 – Busca em profundidade para digrafos 7. 3 – Teste de aciclicidade 7. 4 – Ordenação topológica 7. 5 – Caminhos críticos em digrafos acíclicos 7. 6 – Componentes fortemente conexos 7. 7 – Árvores de cobertura de custo mínimo 7. 8 – Travessia de grafos não-orientados 7. 9 – Pontos de articulação e componentes biconexos
7. 9 – Pontos de Articulação e Componentes Bi-conexos 7. 9. 1 – Conceitos Ponto de articulação (p-artic): Vértice v de um grafo G tal 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
Exemplo: seja o seguinte grafo: Verificando se a é p-artic a b d c e f Sim, a é partic g
Exemplo: seja o seguinte grafo: Verificando se c é p-artic a b d c e f Sim, c é partic g
Exemplo: seja o seguinte grafo: Não há outro partic neste grafo a b d c e f g
Exemplo: um grafo bi-conexo: 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, c no máximo, um elemento a b d e f g
7. 9. 2 – 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 - Em cada uma desses percursos, começar por um vértice diferente - A raiz da árvore de uma busca é um p-artic se tiver mais de um filho
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 grafo Busca em profundidade começando por a
Em grafos não-orientados, não há arcos cruzantes Com a remoção da raiz a, suas duas sub-árvores ficam sem comunicação removendo
Um método mais eficiente: 1. Percorrer o grafo em profundidade, numerando os vértices na ordem em que forem visitados (nbp) Conclui-se inicialmente que a raiz a é p-artic
2. Visitar os vértices dessa árvore em pós-ordem; para cada vértice v visitado, computar menor[v] Fórmula do menor[v]: menor[v] = min (nbp[v], nbp[w’s]) 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 descenden te de v
Desenvolvendo a fórmula anterior: menor[v] = min (nbp[v], nbp[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 y Arco de volta v A seguir, um estudo da utilidade do conceito de menor de um vértice Arco de árvore x
Seja a seguinte árvore de busca em profundidade (no de busca ao lado de cada vértice): 1 2 b 10 12 3 x 11 13 4 v 5 6 a Sem arcos de volta, o grafo é uma árvore livre 7 8 9 Com a exceção das folhas e de raízes com um só filho, todos os vértices são partic’s
Se algum descendente de v (pode ser o próprio v) se ligar a b ou a por arco de volta: 1 Seja x removido 2 b 10 12 3 x 11 13 4 v 5 6 a v e seus descendentes não ficam sem comunicação com o resto do grafo 7 8 9 x, por causa de v e seus descendentes, não é p-
Se, de algum filho de v, não se consegue voltar a x, b ou a sem passar por v: 1 É o caso do nó 7 2 b 10 12 3 x 11 13 4 v 5 6 a O nó 7 e seus descendentes ficam sem comunicação com o resto do grafo 7 8 Seja v removido 9 v é p-artic
Menor[v]: ponto mais alto da árvore (nbp) que se chega de v, sem voltar por seus ancestrais 1 b 2 x 3 5 6 10 4 v w 7 8 11 a 12 13 Neste esquema, menor[v] = 1 De v se chega a b, x, a Pela fórmula dada: z menor[v] = = min (nbp[v], nbp[b], menor[w], menor[z]) = min (4, 2, 3, 1) = 1 9
Se menor [algum filho de v] ≥ nbp(v), v é p-artic 1 a 2 b 10 12 3 x 11 13 Neste esquema, menor[w] = 3 menor[z] = 1 nbp[v] = 4 v não é p-artic v 4 5 6 w 7 8 z 9 Seja v removido w, z e seus descendentes se comunicam com o resto do grafo
Se menor [algum filho de v] ≥ nbp(v), v é p-artic 1 a 2 b 10 12 3 x 11 13 Neste esquema, menor[w] = 3 menor[z] = 4 nbp[v] = 4 v é p-artic v 4 5 6 w 7 8 z 9 Seja v removido z e seus descendentes ficam sem comunicação com o resto do grafo
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] nbp [v]
Exemplo: no grafo ilustrativo menor [e] = min (nbp [e], nbp [b], nbp [a]) = min (4, 2, 1) = 1 menor [d] = min (nbp [d], nbp [a], menor [e]) = min (3, 1, 1) = 1 menor [b] = min (nbp [b], nbp [e], menor [d]) = min (2, 4, 1) =1 menor [g] = min (nbp [g], nbp [c]) = min (7, 5) = 5 menor [f] = min (nbp [f], menor [g]) = min ( 6, 5 ) = 5 menor [c] = min (nbp [c], nbp [g], menor [f] ) = min (5, 7, 5) = 5 a : é a raiz e tem 2 filhos: é ponto de articulação
- Https://slidetodoc.com/captulo-2-o-sudeste-e-o-sul-do/
- Conceito de judaismo
- Realizar un algoritmo para cruzar la calle
- Algoritmo estructura repetitiva ejemplos
- Eis que ponho diante de ti dois caminhos
- Limite e continuidade
- As duas portas e os dois caminhos
- Os caminhos até a independência do brasil
- Ufba considere o diagrama abaixo para a seguinte reação
- Intercalação balanceada de vários caminhos
- Grafo simples
- Circuito grafos
- Algoritmo de fleury
- Teoria de grafos aplicaciones
- Tipos de árboles grafos
- Grafos
- Grafos f a c
- Grafo euler
- Grafos conclusion
- Busca em largura grafos
- Que es un digrafo
- Componentes conexas
- Grafos
- Busqueda en anchura
- Grafo
- Grafo
- Tubalcan
- Grafos
- Grafos
- Grafos
- Banco de dados orientado a grafos
- Grafo euleriano
- Metodo de la baraja
- Escalonamento time sharing
- Exemplos de algoritmos
- Complexidade de algoritmos
- Complexidade de algoritmos
- Notação big-o
- Operaciones elementales algoritmos
- Algoritmos conceptos basicos
- Andrade, mairum c. algoritmos