• Nenhum resultado encontrado

Grafos e BFS

N/A
N/A
Protected

Academic year: 2022

Share "Grafos e BFS"

Copied!
63
0
0

Texto

(1)

Grafos e BFS

CLRS 22 Elementary Graph Algorithms CLRS 22.1 e 22.2

(2)

Grafos

Grafo: par (V,E)

ondeV é um conjunto (finito) devértices, ondeE é um conjunto dearestas,

ondee uma função que associa a cada aresta ondeum par de vértices (suas pontas).

Convenção:

I n=|V| I m=|E|

Se a cadaarestaé associado um par ordenado devértices, o grafo édirigido, senão énão dirigido.

Quando arestas distintas têm pontas distintas,

é possível identificar as arestas com o seu par de pontas.

Análise de Algoritmos – 1º sem 2022 2 / 63

(3)

Grafos

Grafo: par (V,E)

ondeV é um conjunto (finito) devértices, ondeE é um conjunto dearestas,

ondee uma função que associa a cada aresta ondeum par de vértices (suas pontas).

Convenção:

I n=|V| I m=|E|

Se a cadaarestaé associado um par ordenado devértices, o grafo édirigido, senão énão dirigido.

Quando arestas distintas têm pontas distintas,

é possível identificar as arestas com o seu par de pontas.

(4)

Grafos

Grafo: par (V,E)

ondeV é um conjunto (finito) devértices, ondeE é um conjunto dearestas,

ondee uma função que associa a cada aresta ondeum par de vértices (suas pontas).

Convenção:

I n=|V| I m=|E|

Se a cadaarestaé associado um par ordenado devértices, o grafo édirigido, senão énão dirigido.

Quando arestas distintas têm pontas distintas,

é possível identificar as arestas com o seu par de pontas.

Análise de Algoritmos – 1º sem 2022 4 / 63

(5)

Grandes × Gigantes

Essa terminologia não é padrão.

I Um grafo é só grandese ele pode ser armazenado em memória O(n+m), é estático, ou tem modificações

controladas, e algoritmos polinomiais emn e msão aceitáveis.

I Um grafo é gigantese algoritmos polinomiais em n e m não são aceitáveis. Os principais tipos são:

I Grafosaltamente dinâmicos, em que a presença de um vértice ou aresta é incerta, e cujo tamanho impede até buscas lineares.

Ex: vários grafos associados à Internet, ou ao cérebro. Em geral, requerem algoritmos probabilísticos, sublineares, com erro.

I Grafosdescritos implicitamente, cujo tamanho é pelo menos exponencial na descrição.

Ex: o autômato dos subconjuntos associado a um autômato não determinístico; vários modelos usados em IA. Queremos algoritmos polinomiais na descrição;

alguns raros existem, em geral se usam heurísticas, com erro.

(6)

Grandes × Gigantes

Essa terminologia não é padrão.

I Um grafo é só grandese ele pode ser armazenado em memória O(n+m), é estático, ou tem modificações

controladas, e algoritmos polinomiais emn e msão aceitáveis.

I Um grafo é gigantese algoritmos polinomiais em n e mnão são aceitáveis. Os principais tipos são:

I Grafosaltamente dinâmicos, em que a presença de um vértice ou aresta é incerta, e cujo tamanho impede até buscas lineares.

Ex: vários grafos associados à Internet, ou ao cérebro. Em geral, requerem algoritmos probabilísticos, sublineares, com erro.

I Grafosdescritos implicitamente, cujo tamanho é pelo menos exponencial na descrição.

Ex: o autômato dos subconjuntos associado a um autômato não determinístico; vários modelos usados em IA. Queremos algoritmos polinomiais na descrição;

alguns raros existem, em geral se usam heurísticas, com erro.

Análise de Algoritmos – 1º sem 2022 6 / 63

(7)

Grandes × Gigantes

Essa terminologia não é padrão.

I Um grafo é só grandese ele pode ser armazenado em memória O(n+m), é estático, ou tem modificações

controladas, e algoritmos polinomiais emn e msão aceitáveis.

I Um grafo é gigantese algoritmos polinomiais em n e mnão são aceitáveis. Os principais tipos são:

I Grafosaltamente dinâmicos, em que a presença de um vértice ou aresta é incerta, e cujo tamanho impede até buscas lineares.

Ex: vários grafos associados à Internet, ou ao cérebro.

Em geral, requerem algoritmos probabilísticos, sublineares, com erro.

I Grafosdescritos implicitamente, cujo tamanho é pelo menos exponencial na descrição.

Ex: o autômato dos subconjuntos associado a um autômato não determinístico; vários modelos usados em IA. Queremos algoritmos polinomiais na descrição;

alguns raros existem, em geral se usam heurísticas, com erro.

(8)

Grandes × Gigantes

Essa terminologia não é padrão.

I Um grafo é só grandese ele pode ser armazenado em memória O(n+m), é estático, ou tem modificações

controladas, e algoritmos polinomiais emn e msão aceitáveis.

I Um grafo é gigantese algoritmos polinomiais em n e mnão são aceitáveis. Os principais tipos são:

I Grafosaltamente dinâmicos, em que a presença de um vértice ou aresta é incerta, e cujo tamanho impede até buscas lineares.

Ex: vários grafos associados à Internet, ou ao cérebro.

Em geral, requerem algoritmos probabilísticos, sublineares, com erro.

I Grafosdescritos implicitamente, cujo tamanho é pelo menos exponencial na descrição.

Ex: o autômato dos subconjuntos associado a um autômato não determinístico; vários modelos usados em IA.

Queremos algoritmos polinomiais na descrição;

alguns raros existem, em geral se usam heurísticas, com erro.

Análise de Algoritmos – 1º sem 2022 8 / 63

(9)

Grandes × Gigantes

Essa terminologia não é padrão.

I Um grafo é só grandese ele pode ser armazenado em memória O(n+m), é estático, ou tem modificações

controladas, e algoritmos polinomiais emn e msão aceitáveis.

I Um grafo é gigantese algoritmos polinomiais em n e mnão são aceitáveis. Os principais tipos são:

I Grafosaltamente dinâmicos. . . I Grafosdescritos implicitamente. . .

(10)

A classe Grafo

Um grafo tem dois conjuntos...

A classe Conjunto

Análise de Algoritmos – 1º sem 2022 10 / 63

(11)

A classe Grafo

Um grafo tem dois conjuntos...

A classe Conjunto

(12)

A classe Conjunto

Alguns métodos:

Pertence: dado um elemento, ele pertence ao conjunto?

JunteElemento RemovaElemento

Iterador: para todo elemento do conjunto...

E os elementos?

Em princípio, deve ser fácil adicionar propriedades.

Análise de Algoritmos – 1º sem 2022 12 / 63

(13)

A classe Conjunto

Alguns métodos:

Pertence: dado um elemento, ele pertence ao conjunto?

JunteElemento

RemovaElemento

Iterador: para todo elemento do conjunto...

E os elementos?

Em princípio, deve ser fácil adicionar propriedades.

(14)

A classe Conjunto

Alguns métodos:

Pertence: dado um elemento, ele pertence ao conjunto?

JunteElemento RemovaElemento

Iterador: para todo elemento do conjunto...

E os elementos?

Em princípio, deve ser fácil adicionar propriedades.

Análise de Algoritmos – 1º sem 2022 14 / 63

(15)

A classe Conjunto

Alguns métodos:

Pertence: dado um elemento, ele pertence ao conjunto?

JunteElemento RemovaElemento

Iterador: para todo elemento do conjunto...

E os elementos?

Em princípio, deve ser fácil adicionar propriedades.

(16)

A classe Conjunto

Alguns métodos:

Pertence: dado um elemento, ele pertence ao conjunto?

JunteElemento RemovaElemento

Iterador: para todo elemento do conjunto...

E os elementos?

Em princípio, deve ser fácil adicionar propriedades.

Análise de Algoritmos – 1º sem 2022 16 / 63

(17)

A classe Conjunto

Alguns métodos:

Pertence: dado um elemento, ele pertence ao conjunto?

JunteElemento RemovaElemento

Iterador: para todo elemento do conjunto...

E os elementos?

Em princípio, deve ser fácil adicionar propriedades.

(18)

A classe Grafo

Agora sim: dois conjuntos!

Que outros métodos e atributos?

São úteis:

Inserire Remover arestas dadas as pontas. Testar se dois vértices são adjacentes.

Estrela: dado um vértice, conjunto de arestas incidentes a ele.

I Para grafo dirigido, os arcos saindo do vértice. I Para grafo ou digrafosimples,

pode ser o conjunto devizinhosdo vértice.

Esquema típico depercursode um grafo: para todo vértice v

para toda aresta na estrela de v

Análise de Algoritmos – 1º sem 2022 18 / 63

(19)

A classe Grafo

Agora sim: dois conjuntos!

Que outros métodos e atributos?

São úteis:

Inserire Remover arestas dadas as pontas.

Testar se dois vértices são adjacentes.

Estrela: dado um vértice, conjunto de arestas incidentes a ele.

I Para grafo dirigido, os arcos saindo do vértice. I Para grafo ou digrafosimples,

pode ser o conjunto devizinhosdo vértice.

Esquema típico depercursode um grafo: para todo vértice v

para toda aresta na estrela de v

(20)

A classe Grafo

Agora sim: dois conjuntos!

Que outros métodos e atributos?

São úteis:

Inserire Remover arestas dadas as pontas.

Testar se dois vértices são adjacentes.

Estrela: dado um vértice, conjunto de arestas incidentes a ele.

I Para grafo dirigido, os arcos saindo do vértice. I Para grafo ou digrafosimples,

pode ser o conjunto devizinhosdo vértice.

Esquema típico depercursode um grafo: para todo vértice v

para toda aresta na estrela de v

Análise de Algoritmos – 1º sem 2022 20 / 63

(21)

A classe Grafo

Agora sim: dois conjuntos!

Que outros métodos e atributos?

São úteis:

Inserire Remover arestas dadas as pontas.

Testar se dois vértices são adjacentes.

Estrela: dado um vértice, conjunto de arestas incidentes a ele.

I Para grafo dirigido, os arcos saindo do vértice. I Para grafo ou digrafosimples,

pode ser o conjunto devizinhosdo vértice. Esquema típico depercursode um grafo:

para todo vértice v

para toda aresta na estrela de v

(22)

A classe Grafo

Agora sim: dois conjuntos!

Que outros métodos e atributos?

São úteis:

Inserire Remover arestas dadas as pontas.

Testar se dois vértices são adjacentes.

Estrela: dado um vértice, conjunto de arestas incidentes a ele.

I Para grafo dirigido, os arcos saindo do vértice.

I Para grafo ou digrafosimples,

pode ser o conjunto devizinhosdo vértice. Esquema típico depercursode um grafo:

para todo vértice v

para toda aresta na estrela de v

Análise de Algoritmos – 1º sem 2022 22 / 63

(23)

A classe Grafo

Agora sim: dois conjuntos!

Que outros métodos e atributos?

São úteis:

Inserire Remover arestas dadas as pontas.

Testar se dois vértices são adjacentes.

Estrela: dado um vértice, conjunto de arestas incidentes a ele.

I Para grafo dirigido, os arcos saindo do vértice.

I Para grafo ou digrafosimples,

pode ser o conjunto devizinhosdo vértice.

Esquema típico depercursode um grafo: para todo vértice v

para toda aresta na estrela de v

(24)

A classe Grafo

Agora sim: dois conjuntos!

Que outros métodos e atributos?

São úteis:

Inserire Remover arestas dadas as pontas.

Testar se dois vértices são adjacentes.

Estrela: dado um vértice, conjunto de arestas incidentes a ele.

I Para grafo dirigido, os arcos saindo do vértice.

I Para grafo ou digrafosimples,

pode ser o conjunto devizinhosdo vértice.

Esquema típico depercursode um grafo: para todo vértice v

para toda aresta na estrela de v

Análise de Algoritmos – 1º sem 2022 24 / 63

(25)

A classe Grafo

Agora sim: dois conjuntos!

Que outros métodos e atributos?

São úteis:

Inserire Remover arestas dadas as pontas.

Testar se dois vértices são adjacentes.

Estrela: dado um vértice, conjunto de arestas incidentes a ele.

I Para grafo dirigido, os arcos saindo do vértice.

I Para grafo ou digrafosimples,

pode ser o conjunto devizinhosdo vértice.

Esquema típico depercursode um grafo:

(26)

Atributos de vértices e arestas

Suponhamos que se queira dar umacora cada vértice.

Objetos:

Atributo v.cor (acesso direto, não vamos exagerar na POO)

Vértices numerados: Vetor paralelo: cor[v]

Daqui para a frente, usaremos a notação de atributos.

Análise de Algoritmos – 1º sem 2022 26 / 63

(27)

Atributos de vértices e arestas

Suponhamos que se queira dar umacora cada vértice.

Objetos:

Atributo v.cor (acesso direto, não vamos exagerar na POO) Vértices numerados:

Vetor paralelo: cor[v]

Daqui para a frente, usaremos a notação de atributos.

(28)

Atributos de vértices e arestas

Suponhamos que se queira dar umacora cada vértice.

Objetos:

Atributo v.cor (acesso direto, não vamos exagerar na POO) Vértices numerados:

Vetor paralelo: cor[v]

Daqui para a frente, usaremos a notação de atributos.

Análise de Algoritmos – 1º sem 2022 28 / 63

(29)

Atributos de vértices e arestas

Suponhamos que se queira dar umacora cada vértice.

Objetos:

Atributo v.cor (acesso direto, não vamos exagerar na POO) Vértices numerados:

Vetor paralelo: cor[v]

Daqui para a frente, usaremos a notação de atributos.

(30)

Representação de grafos

GrafoG= (V,E).

Listas de adjacências:

n listas, uma para cada vértice v deG:

v.adj: lista dos vértices que sãoadjacentes av

v.adj: (ou seja, vérticesu tais que (u,v) ou {u,v} ∈E) SeG é dirigido, então mentradas, senão 2mentradas. Otamanhoda representação é Ê(n+m).

Matriz de adjacências:

Matriz bináriaAde dimensãon×n onde

A[u][v] = 1 se e somente se (u,v) ou {u,v} ∈E. Otamanhoda representação é Ê(n2).

Análise de Algoritmos – 1º sem 2022 30 / 63

(31)

Representação de grafos

GrafoG= (V,E).

Listas de adjacências:

n listas, uma para cada vértice v deG:

v.adj: lista dos vértices que sãoadjacentes av

v.adj: (ou seja, vérticesu tais que (u,v) ou {u,v} ∈E)

SeG é dirigido, então mentradas, senão 2mentradas. Otamanhoda representação é Ê(n+m).

Matriz de adjacências:

Matriz bináriaAde dimensãon×n onde

A[u][v] = 1 se e somente se (u,v) ou {u,v} ∈E. Otamanhoda representação é Ê(n2).

(32)

Representação de grafos

GrafoG= (V,E).

Listas de adjacências:

n listas, uma para cada vértice v deG:

v.adj: lista dos vértices que sãoadjacentes av

v.adj: (ou seja, vérticesu tais que (u,v) ou {u,v} ∈E) SeG é dirigido, então mentradas, senão 2mentradas.

Otamanhoda representação é Ê(n+m).

Matriz de adjacências:

Matriz bináriaAde dimensãon×n onde

A[u][v] = 1 se e somente se (u,v) ou {u,v} ∈E. Otamanhoda representação é Ê(n2).

Análise de Algoritmos – 1º sem 2022 32 / 63

(33)

Representação de grafos

GrafoG= (V,E).

Listas de adjacências:

n listas, uma para cada vértice v deG:

v.adj: lista dos vértices que sãoadjacentes av

v.adj: (ou seja, vérticesu tais que (u,v) ou {u,v} ∈E) SeG é dirigido, então mentradas, senão 2mentradas.

Otamanhoda representação é Ê(n+m).

Matriz de adjacências:

Matriz bináriaAde dimensãon×n onde

A[u][v] = 1 se e somente se (u,v) ou {u,v} ∈E. Otamanhoda representação é Ê(n2).

(34)

Representação de grafos

GrafoG= (V,E).

Listas de adjacências:

n listas, uma para cada vértice v deG:

v.adj: lista dos vértices que sãoadjacentes av

v.adj: (ou seja, vérticesu tais que (u,v) ou {u,v} ∈E) SeG é dirigido, então mentradas, senão 2mentradas.

Otamanhoda representação é Ê(n+m).

Matriz de adjacências:

Matriz bináriaAde dimensãon×n onde

A[u][v] = 1 se e somente se (u,v) ou {u,v} ∈E. Otamanhoda representação é Ê(n2).

Análise de Algoritmos – 1º sem 2022 34 / 63

(35)

Principais diferenças

I Percorrer uma estrela:

I Listas: O(tamanho da estrela) — percurso completoO(m) I Matriz: O(n) — percurso completoO(n2)

I Testar adjacência:

I Listas: O(tamanho da estrela) I Matriz: O(1)

Esparsidade

G é k-esparso se m/nk. I Neste caso, mknn2

I e com a representação com listas, o percurso completo é mais eficiente que com matriz de adjacência (com n grande).

(36)

Principais diferenças

I Percorrer uma estrela:

I Listas: O(tamanho da estrela) — percurso completoO(m)

I Matriz: O(n) — percurso completoO(n2) I Testar adjacência:

I Listas: O(tamanho da estrela) I Matriz: O(1)

Esparsidade

G é k-esparso se m/nk. I Neste caso, mknn2

I e com a representação com listas, o percurso completo é mais eficiente que com matriz de adjacência (com n grande).

Análise de Algoritmos – 1º sem 2022 36 / 63

(37)

Principais diferenças

I Percorrer uma estrela:

I Listas: O(tamanho da estrela) — percurso completoO(m) I Matriz: O(n) — percurso completoO(n2)

I Testar adjacência:

I Listas: O(tamanho da estrela) I Matriz: O(1)

Esparsidade

G é k-esparso se m/nk. I Neste caso, mknn2

I e com a representação com listas, o percurso completo é mais eficiente que com matriz de adjacência (com n grande).

(38)

Principais diferenças

I Percorrer uma estrela:

I Listas: O(tamanho da estrela) — percurso completoO(m) I Matriz: O(n) — percurso completoO(n2)

I Testar adjacência:

I Listas: O(tamanho da estrela) I Matriz: O(1)

Esparsidade

G é k-esparso se m/nk. I Neste caso, mknn2

I e com a representação com listas, o percurso completo é mais eficiente que com matriz de adjacência (com n grande).

Análise de Algoritmos – 1º sem 2022 38 / 63

(39)

Principais diferenças

I Percorrer uma estrela:

I Listas: O(tamanho da estrela) — percurso completoO(m) I Matriz: O(n) — percurso completoO(n2)

I Testar adjacência:

I Listas: O(tamanho da estrela)

I Matriz: O(1)

Esparsidade

G é k-esparso se m/nk. I Neste caso, mknn2

I e com a representação com listas, o percurso completo é mais eficiente que com matriz de adjacência (com n grande).

(40)

Principais diferenças

I Percorrer uma estrela:

I Listas: O(tamanho da estrela) — percurso completoO(m) I Matriz: O(n) — percurso completoO(n2)

I Testar adjacência:

I Listas: O(tamanho da estrela) I Matriz: O(1)

Esparsidade

G é k-esparso se m/nk. I Neste caso, mknn2

I e com a representação com listas, o percurso completo é mais eficiente que com matriz de adjacência (com n grande).

Análise de Algoritmos – 1º sem 2022 40 / 63

(41)

Principais diferenças

I Percorrer uma estrela:

I Listas: O(tamanho da estrela) — percurso completoO(m) I Matriz: O(n) — percurso completoO(n2)

I Testar adjacência:

I Listas: O(tamanho da estrela) I Matriz: O(1)

Esparsidade

G é k-esparso se m/nk. I Neste caso, mknn2

I e com a representação com listas, o percurso completo é mais eficiente que com matriz de adjacência (com n grande).

(42)

Principais diferenças

I Percorrer uma estrela:

I Listas: O(tamanho da estrela) — percurso completoO(m) I Matriz: O(n) — percurso completoO(n2)

I Testar adjacência:

I Listas: O(tamanho da estrela) I Matriz: O(1)

Esparsidade

G é k-esparso sem/nk.

I Neste caso, mknn2

I e com a representação com listas, o percurso completo é mais eficiente que com matriz de adjacência (com n grande).

Análise de Algoritmos – 1º sem 2022 42 / 63

(43)

Principais diferenças

I Percorrer uma estrela:

I Listas: O(tamanho da estrela) — percurso completoO(m) I Matriz: O(n) — percurso completoO(n2)

I Testar adjacência:

I Listas: O(tamanho da estrela) I Matriz: O(1)

Esparsidade

G é k-esparso sem/nk.

I Neste caso, mknn2

I e com a representação com listas, o percurso completo é mais eficiente que com matriz de adjacência (com n grande).

(44)

Principais diferenças

I Percorrer uma estrela:

I Listas: O(tamanho da estrela) — percurso completoO(m) I Matriz: O(n) — percurso completoO(n2)

I Testar adjacência:

I Listas: O(tamanho da estrela) I Matriz: O(1)

Esparsidade

G é k-esparso sem/nk.

I Neste caso, mknn2

I e com a representação com listas, o percurso completo é mais eficiente que com matriz de adjacência (com n grande).

Análise de Algoritmos – 1º sem 2022 44 / 63

(45)

Busca em largura

É umamoldurade algoritmos que vão fazendo seu serviço enquanto percorrem o grafo.

Inicialização

BFS(G,s)

1 para cada uG.V\ {s}faça 2 u.cor←branco

3 u.d← ∞

4 u.π←nil

5 Q← ∅ fila dos vértices descobertos 6 s.cor←cinzento

7 s.d←0 8 s.π←nil 9 Q.INSIRA(s)

(46)

Busca em largura

É umamoldurade algoritmos que vão fazendo seu serviço enquanto percorrem o grafo.

Inicialização

BFS(G,s)

1 para cada uG.V\ {s}faça 2 u.cor←branco

3 u.d← ∞

4 u.π←nil

5 Q← ∅ fila dos vértices descobertos 6 s.cor←cinzento

7 s.d ←0 8 s.π←nil 9 Q.INSIRA(s)

Análise de Algoritmos – 1º sem 2022 46 / 63

(47)

Busca em largura

BFS(G,s)

1 para cadauG.V\ {s}faça

2 u.cor←branco u.d← ∞ u.π←nil 3 Q← ∅ fila dos vértices descobertos 4 s.cor←cinzento s.d ←0 s.π←nil 5 Q.INSIRA(s)

6 enquanto Q,∅ faça 7 uQ.REMOVA()

8 para cadavu.Estrela faça 9 se v.cor=branco

10 então v.cor←cinzento

11 v.du.d+ 1

12 v.πu

13 Q.INSIRA(v)

14 u.cor←preto

(48)

Busca em largura

BFS(G,s)

1 para cadauG.V\ {s}faça

2 u.cor←branco u.d← ∞ u.π←nil 3 Q← ∅ fila dos vértices descobertos 4 s.cor←cinzento s.d ←0 s.π←nil 5 Q.INSIRA(s)

6 enquanto Q,∅ faça 7 uQ.REMOVA()

8 para cadavu.Estrela faça 9 se v.cor=branco

10 então v.cor←cinzento

11 v.du.d+ 1

12 v.πu

13 Q.INSIRA(v)

14 u.cor←preto

Análise de Algoritmos – 1º sem 2022 48 / 63

(49)

Descrição

Vértice branco: ainda não descoberto

Vértice cinzento: descoberto mas não processado Vértice cinzento: (são os vértices emQ)

Vértice preto: processado

BFS devolve emπ uma árvore BFenraizada em s. u.π: predecessor ou pai deu na árvore BF

u.d: distância de s au em G

BFS descobre todos os vértices à distânciak antes de descobrir qualquer um à distânciak+ 1

(50)

Descrição

Vértice branco: ainda não descoberto

Vértice cinzento: descoberto mas não processado Vértice cinzento: (são os vértices emQ)

Vértice preto: processado

BFS devolve emπ uma árvore BFenraizada em s.

u.π: predecessor ou pai deu na árvore BF

u.d: distância de s au em G

BFS descobre todos os vértices à distânciak antes de descobrir qualquer um à distânciak+ 1

Análise de Algoritmos – 1º sem 2022 50 / 63

(51)

Descrição

Vértice branco: ainda não descoberto

Vértice cinzento: descoberto mas não processado Vértice cinzento: (são os vértices emQ)

Vértice preto: processado

BFS devolve emπ uma árvore BFenraizada em s.

u.π: predecessor ou pai deu na árvore BF u.d: distância de s au em G

(52)

Consumo de tempo

Cada vértice é descoberto uma única vez, pois é branco e, ao ser descoberto, passa a ser cinzento, e depois preto.

A estrela de cada vértice descoberto é

percorrida uma única vez, quando o vértice sai deQ.

Logo, com listas de adjacência, o consumo de tempo éO(n+m), pois a inicialização custaÊ(n) e

a soma do tamanho das listas de adjacências percorridas éO(m).

O consumo de tempo de uma BFS é linear no tamanho do grafo.

Análise de Algoritmos – 1º sem 2022 52 / 63

(53)

Consumo de tempo

Cada vértice é descoberto uma única vez, pois é branco e, ao ser descoberto, passa a ser cinzento, e depois preto.

A estrela de cada vértice descoberto é

percorrida uma única vez, quando o vértice sai deQ.

Logo, com listas de adjacência, o consumo de tempo éO(n+m), pois a inicialização custaÊ(n) e

a soma do tamanho das listas de adjacências percorridas éO(m).

O consumo de tempo de uma BFS é linear no tamanho do grafo.

(54)

Consumo de tempo

Cada vértice é descoberto uma única vez, pois é branco e, ao ser descoberto, passa a ser cinzento, e depois preto.

A estrela de cada vértice descoberto é

percorrida uma única vez, quando o vértice sai deQ.

Logo, com listas de adjacência, o consumo de tempo éO(n+m), pois a inicialização custaÊ(n) e

a soma do tamanho das listas de adjacências percorridas éO(m).

O consumo de tempo de uma BFS é linear no tamanho do grafo.

Análise de Algoritmos – 1º sem 2022 54 / 63

(55)

Consumo de tempo

Cada vértice é descoberto uma única vez, pois é branco e, ao ser descoberto, passa a ser cinzento, e depois preto.

A estrela de cada vértice descoberto é

percorrida uma única vez, quando o vértice sai deQ.

Logo, com listas de adjacência, o consumo de tempo éO(n+m), pois a inicialização custaÊ(n) e

a soma do tamanho das listas de adjacências percorridas éO(m).

O consumo de tempo de uma BFS é

(56)

Correção do algoritmo

Vamos verificar queu.d é a distância de s au e que a árvore BF contém um caminho mínimo des au.

Sejaδ(s,u) a distância de s au em G.

Lema: δ(s,v)δ(s,u) + 1 para toda arestauv. Lema: v.dδ(s,v) para todo vértice ao final da BFS. Lema: Se Q contém os vértices v1,v2, . . . ,vr nesta ordem,

Lema: então vr.dv1.d+ 1 e vi.dvi+1.d parai= 1, . . . ,r−1.

Análise de Algoritmos – 1º sem 2022 56 / 63

(57)

Correção do algoritmo

Vamos verificar queu.d é a distância de s au e que a árvore BF contém um caminho mínimo des au.

Sejaδ(s,u) a distância de s au em G.

Lema: δ(s,v)δ(s,u) + 1 para toda arestauv. Lema: v.dδ(s,v) para todo vértice ao final da BFS. Lema: Se Q contém os vértices v1,v2, . . . ,vr nesta ordem,

Lema: então vr.dv1.d+ 1 e vi.dvi+1.d parai= 1, . . . ,r−1.

(58)

Correção do algoritmo

Vamos verificar queu.d é a distância de s au e que a árvore BF contém um caminho mínimo des au.

Sejaδ(s,u) a distância de s au em G.

Lema: δ(s,v)δ(s,u) + 1 para toda aresta uv.

Lema: v.dδ(s,v) para todo vértice ao final da BFS. Lema: Se Q contém os vértices v1,v2, . . . ,vr nesta ordem,

Lema: então vr.dv1.d+ 1 e vi.dvi+1.d parai= 1, . . . ,r−1.

Análise de Algoritmos – 1º sem 2022 58 / 63

(59)

Correção do algoritmo

Vamos verificar queu.d é a distância de s au e que a árvore BF contém um caminho mínimo des au.

Sejaδ(s,u) a distância de s au em G.

Lema: δ(s,v)δ(s,u) + 1 para toda aresta uv.

Lema: v.dδ(s,v) para todo vértice ao final da BFS.

Lema: Se Q contém os vértices v1,v2, . . . ,vr nesta ordem,

Lema: então vr.dv1.d+ 1 e vi.dvi+1.d parai= 1, . . . ,r−1.

(60)

Correção do algoritmo

Vamos verificar queu.d é a distância de s au e que a árvore BF contém um caminho mínimo des au.

Sejaδ(s,u) a distância de s au em G.

Lema: δ(s,v)δ(s,u) + 1 para toda aresta uv.

Lema: v.dδ(s,v) para todo vértice ao final da BFS.

Lema: Se Q contém os vérticesv1,v2, . . . ,vr nesta ordem,

Lema: entãovr.dv1.d+ 1 e vi.dvi+1.d parai= 1, . . . ,r−1.

Análise de Algoritmos – 1º sem 2022 60 / 63

(61)

Correção

Sejaδ(s,u) a distância de s au em G.

Lema: δ(s,v)δ(s,u) + 1 para toda aresta uv.

Lema: v.dδ(s,v) para todo vértice ao final da BFS.

Lema: Se Q contém os vérticesv1,v2, . . . ,vr nesta ordem,

Lema: entãovr.dv1.d+ 1 e vi.dvi+1.d parai= 1, . . . ,r−1.

Corolário: Se vi entra na fila antes de vj,

Corolario: entãovi.dvj.d quando vj entra na fila. Teorema: Ao final da BFS, v.d =δ(s,v) para todo vV . Teorema: Ademais, para todo v alcançável de s com v,s, Teorema: um caminho mais curto de s a v consiste em um

Teorema: caminho mais curto de s aπ[v]seguido da arestaπ[v].v .

(62)

Correção

Sejaδ(s,u) a distância de s au em G.

Lema: δ(s,v)δ(s,u) + 1 para toda aresta uv.

Lema: v.dδ(s,v) para todo vértice ao final da BFS.

Lema: Se Q contém os vérticesv1,v2, . . . ,vr nesta ordem,

Lema: entãovr.dv1.d+ 1 e vi.dvi+1.d parai= 1, . . . ,r−1.

Corolário: Se vi entra na fila antes de vj,

Corolario: entãovi.dvj.d quando vj entra na fila.

Teorema: Ao final da BFS, v.d =δ(s,v) para todo vV . Teorema: Ademais, para todo v alcançável de s com v,s, Teorema: um caminho mais curto de s a v consiste em um

Teorema: caminho mais curto de s aπ[v]seguido da arestaπ[v].v .

Análise de Algoritmos – 1º sem 2022 62 / 63

(63)

Correção

Sejaδ(s,u) a distância de s au em G.

Lema: δ(s,v)δ(s,u) + 1 para toda aresta uv.

Lema: v.dδ(s,v) para todo vértice ao final da BFS.

Lema: Se Q contém os vérticesv1,v2, . . . ,vr nesta ordem,

Lema: entãovr.dv1.d+ 1 e vi.dvi+1.d parai= 1, . . . ,r−1.

Corolário: Se vi entra na fila antes de vj,

Corolario: entãovi.dvj.d quando vj entra na fila.

Teorema: Ao final da BFS, v.d =δ(s,v) para todo vV . Teorema: Ademais, para todo v alcançável de s com v s,

Referências

Documentos relacionados

Já no final do século os jornais voltam-se mais para a questão literária, sendo assim eles a maioria dos disponíveis no acervo da Biblioteca Pública do Pará.. Mesmo

1 – Para efeitos da titularidade dos direitos e benefício dos apoios previstos na presente lei, as associações juvenis são reconhecidas pelo IPDJ, IP, mediante inscrição

Significado das medidas e indicadores mais utilizadas Crescimento e desenvolvimento Peso Altura Circunferência da panturrilha Circunferência da cabeça P/Idade Altura /Idade

• Sem que os critérios e limites de rateio da água disponível sejam detalhados no Plano de Recursos Hídricos da Bacia do rio Paranaíba, não há como se viabilizar o exercício

a) Subsistema para o Desenvolvimento do Turismo, adiante designado por SIDET; b) Subsistema para o Desenvolvimento Local, adiante designado por SIDEL; c) Subsistema de

Prever, no modelo de gestão do contrato, a segregação do recebimento dos serviços de forma que: I - o recebimento provisório será realizado pelo fiscal técnico, fiscal

Figure 4.10 shows an overview of BioGraph and how it is organized; it contains: de- scriptions of phenotypes; Uberon entities, terms of gene ontology; diseases; and

Conforme observa Certo (1993 apud ALDAY, 2000), a administragao estrategica se define como um processo interativo e contfnuo com vistas a manter uma organizagao como um