• Nenhum resultado encontrado

Componentes fortemente conexas

N/A
N/A
Protected

Academic year: 2022

Share "Componentes fortemente conexas"

Copied!
21
0
0

Texto

(1)

Análise de Algoritmos

Parte destes slides são adaptações de slides

do Prof. Paulo Feofiloff e do Prof. José Coelho de Pina.

(2)

Componentes fortemente conexas

CLRS Cap 22.5

(3)

Componentes fortemente conexas

Seja G um digrafo e u e v vértices de G.

(4)

Componentes fortemente conexas

Seja G um digrafo e u e v vértices de G.

Escrevemos u → v se existe caminho de u para v em G.

(5)

Componentes fortemente conexas

Seja G um digrafo e u e v vértices de G.

Escrevemos u → v se existe caminho de u para v em G. Seja C um conjunto maximal de vértices de G tal que u → v e v → u quaisquer que sejam u e v em C.

(6)

Componentes fortemente conexas

Seja G um digrafo e u e v vértices de G.

Escrevemos u → v se existe caminho de u para v em G. Seja C um conjunto maximal de vértices de G tal que u → v e v → u quaisquer que sejam u e v em C.

C é uma componente fortemente conexa de G.

(7)

Componentes fortemente conexas

Seja G um digrafo e u e v vértices de G.

Escrevemos u → v se existe caminho de u para v em G. Seja C um conjunto maximal de vértices de G tal que u → v e v → u quaisquer que sejam u e v em C.

C é uma componente fortemente conexa de G.

Diferentes componentes fortemente conexas são disjuntas, ou seja, as componentes determinam uma partição de VG.

(8)

Componentes fortemente conexas

Seja G um digrafo e u e v vértices de G.

Escrevemos u → v se existe caminho de u para v em G. Seja C um conjunto maximal de vértices de G tal que u → v e v → u quaisquer que sejam u e v em C.

C é uma componente fortemente conexa de G.

Diferentes componentes fortemente conexas são disjuntas, ou seja, as componentes determinam uma partição de VG. Problema: Dado digrafo G, encontrar todas as

componentes fortemente conexas de G.

(9)

Algoritmo de Kosaraju-Shamir

Seja G = (V, E) um digrafo.

Seja Gr o digrafo reverso de G (todos os arcos invertidos).

(10)

Algoritmo de Kosaraju-Shamir

Seja G = (V, E) um digrafo.

Seja Gr o digrafo reverso de G (todos os arcos invertidos).

Kosaraju-Shamir

(G)

Execute uma DFS em G calculando f[u] para cada u.

(11)

Algoritmo de Kosaraju-Shamir

Seja G = (V, E) um digrafo.

Seja Gr o digrafo reverso de G (todos os arcos invertidos).

Kosaraju-Shamir

(G)

Execute uma DFS em G calculando f[u] para cada u. Construa Gr.

(12)

Algoritmo de Kosaraju-Shamir

Seja G = (V, E) um digrafo.

Seja Gr o digrafo reverso de G (todos os arcos invertidos).

Kosaraju-Shamir

(G)

Execute uma DFS em G calculando f[u] para cada u. Construa Gr.

Execute uma DFS em Gr considerando os vértices de Gr em ordem decrescente do valor de f calculado acima.

(13)

Algoritmo de Kosaraju-Shamir

Seja G = (V, E) um digrafo.

Seja Gr o digrafo reverso de G (todos os arcos invertidos).

Kosaraju-Shamir

(G)

Execute uma DFS em G calculando f[u] para cada u. Construa Gr.

Execute uma DFS em Gr considerando os vértices de Gr em ordem decrescente do valor de f calculado acima.

Devolva as componentes da floresta DF construída

(14)

Algoritmo de Kosaraju-Shamir

Seja G = (V, E) um digrafo.

Seja Gr o digrafo reverso de G (todos os arcos invertidos).

Kosaraju-Shamir

(G)

Execute uma DFS em G calculando f[u] para cada u. Construa Gr.

Execute uma DFS em Gr considerando os vértices de Gr em ordem decrescente do valor de f calculado acima.

Devolva as componentes da floresta DF construída para Gr.

Consumo de tempo: linear no tamanho de G.

(15)

Análise

Lema: Sejam C e C componentes fortemente conexas distintas de um digrafo G e vértices u, v ∈ C e u, v ∈ C. Se existe um caminho de u a u em G, então não existe caminho em G de v a v.

(16)

Análise

Lema: Sejam C e C componentes fortemente conexas distintas de um digrafo G e vértices u, v ∈ C e u, v ∈ C. Se existe um caminho de u a u em G, então não existe caminho em G de v a v.

d e f como calculados na primeira DFS do algoritmo.

Para um conjunto U de vértices,

seja d(U) := min{d(u) : u ∈ U} e f(U) := max{f(u) : u ∈ U}. d(u): instante em que o primeiro vértice de U foi descoberto f(u): instante em que o último vértice de U terminou

(17)

Análise

Lema: Sejam C e C componentes fortemente conexas distintas de um digrafo G e vértices u, v ∈ C e u, v ∈ C. Se existe um caminho de u a u em G, então não existe caminho em G de v a v.

d e f como calculados na primeira DFS do algoritmo.

Para um conjunto U de vértices,

seja d(U) := min{d(u) : u ∈ U} e f(U) := max{f(u) : u ∈ U}. d(u): instante em que o primeiro vértice de U foi descoberto f(u): instante em que o último vértice de U terminou

(18)

Análise

d e f como calculados na primeira DFS do algoritmo.

Para um conjunto U de vértices,

seja d(U) := min{d(u) : u ∈ U} e f(U) := max{f(u) : u ∈ U}. Lema: Sejam C e C componentes fortemente conexas

distintas de um digrafo G. Se existe um arco (u, v) em Gr, então f(C) < f(C).

(19)

Análise

d e f como calculados na primeira DFS do algoritmo.

Para um conjunto U de vértices,

seja d(U) := min{d(u) : u ∈ U} e f(U) := max{f(u) : u ∈ U}. Lema: Sejam C e C componentes fortemente conexas

distintas de um digrafo G. Se existe um arco (u, v) em Gr, então f(C) < f(C).

Isso implica que a ordenação por f decrescente na segunda DFS percorre as componentes fortemente conexas

(20)

Análise

d e f como calculados na primeira DFS do algoritmo.

Para um conjunto U de vértices,

seja d(U) := min{d(u) : u ∈ U} e f(U) := max{f(u) : u ∈ U}. Lema: Sejam C e C componentes fortemente conexas

distintas de um digrafo G. Se existe um arco (u, v) em Gr, então f(C) < f(C).

Isso implica que a ordenação por f decrescente na segunda DFS percorre as componentes fortemente conexas

Teorema:

Kosaraju-Shamir

(G) calcula corretamente as componentes fortemente conexas de G.

(21)

Análise

d e f como calculados na primeira DFS do algoritmo.

Para um conjunto U de vértices,

seja d(U) := min{d(u) : u ∈ U} e f(U) := max{f(u) : u ∈ U}. Lema: Sejam C e C componentes fortemente conexas

distintas de um digrafo G. Se existe um arco (u, v) em Gr, então f(C) < f(C).

Isso implica que a ordenação por f decrescente na segunda DFS percorre as componentes fortemente conexas

Referências

Documentos relacionados

A cada chamada de DFS-Visit no laço principal, os vértices lá processados fazem parte da componente cuja raíz é o argumento da chamada.. Extensão do algoritmo para capturar

A cada chamada de DFS-Visit no laço principal, os vértices lá processados fazem parte da componente cuja raiz é o argumento da chamada.. Se o grafo é

Custo logarítmico: Toda instrução consome tempo logarítmico em relação ao valor dos operandos e cada registrador requer um número logarítmico de unidades de memória no

Avaliou-se o efeito fungitóxico in vitro de óleos essenciais de copaíba (Copaifera sp.) E eucalipto (Eucalyptus sp.) sobre o crescimento micelial de Alternaria

A farinha de amêndoa de juá foi obtida através de secagem convectiva, utilizando a temperatura de 70 °C e velocidade do ar de 1,5 m/s, após a secagem, as

De acordo com Morais (2012), “não prevendo a lei qualquer procedimento especial dirigido á fixação do quantitativo da matéria coletável dos contribuintes

O presente trabalho trata da Descrição da Prática de Ensino Supervisionada (PES), contendo experiência de ensino/aprendizagem nos 1º Ciclo de Ensino Básico e 2º

Jose Bene Dias de Medeiros... 31 de marco do