Anjolina grisi de oliveira obs muitos slides foram cedidos por adolfo almeida duran ufba 2007
Download
1 / 47

Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2007 - PowerPoint PPT Presentation


  • 271 Views
  • Uploaded on

Grafos. Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2007. Conectividade. Caminho em um grafo não orientado

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Anjolina Grisi de Oliveira obs: muitos slides foram cedidos por Adolfo Almeida Duran (UFBA) 2007' - kaya


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Anjolina grisi de oliveira obs muitos slides foram cedidos por adolfo almeida duran ufba 2007 l.jpg

Grafos

Anjolina Grisi de Oliveira

obs: muitos slides foram cedidos por

Adolfo Almeida Duran (UFBA)

2007


Conectividade l.jpg
Conectividade

Caminho em um grafo não orientado

  • Um caminho de tamanho n de u para v, onde n é um inteiro positivo, em um grafo não orientado é uma seqüência de arestas e1,...,en do grafo de forma que f(e1) = {x0,x1}, f(e2) = {x1,x2}...f(en)={xn-1,xn}, onde x0=u e xn=v.

G1

Se o grafo é simples, denotamos o caminho por sua seqüência de vértices: x0, x1 ,...xn

Matemática Discreta/Grafos CIn-UFPE


Conectividade3 l.jpg
Conectividade

  • Caminho em um multigrafo direcionado

    • Um caminho de tamanho n de u para v, onde n é um inteiro positivo, em um multigrafo direcionado é uma seqüência de arestas e1,...,en do grafo de forma que f(e1) =(x0,x1), f(e2) = (x1,x2)...f(en)=(xn-1,xn), onde x0=u e xn=v.

Quando não existem arestas múltiplas, o caminho pode se denotado por um seqüência de vértices: (x2, x5, x4, x1)

Matemática Discreta/Grafos CIn-UFPE


Conectividade4 l.jpg
Conectividade

Circuito ou ciclo

  • Um caminho é um circuito se ele começa e termina no mesmo vértice.

G1

Circuito: x1,x2,x5,x4,x1

Matemática Discreta/Grafos CIn-UFPE


Slide5 l.jpg

Exemplos de ciclos

1

1

2

2

3

4

3

4

Ciclo de tamanho 3

1  2  4  1

Ciclo de tamanho 3

1  2  3  1

Matemática Discreta/Grafos CIn-UFPE


Slide6 l.jpg

A seqüência de vértices (x1, x2, x5, x4, x1)

é um exemplo de ciclo

Matemática Discreta/Grafos CIn-UFPE


Slide7 l.jpg

Caminho (ou circuito) simples

Um caminho ou circuito é chamado de simples se ele não contem a mesma aresta mais de uma vez.

Matemática Discreta/Grafos CIn-UFPE


Conectividade8 l.jpg
Conectividade

Definição para grafos não orientados

  • Um grafo não orientado é chamado de conexo (ou conectado) se existe um caminho entre cada par de vértices distintos do grafo.

G1

Em uma rede de computadores, quaisquer dois computadores podem se comunicar se e somente se o grafo da rede é conexo.

Matemática Discreta/Grafos CIn-UFPE


Slide9 l.jpg

  • Grafo desconexo

    • O grafo mostrado a seguir não é conexo pois, por exemplo, não existe um caminho entre x3 e x5.

Matemática Discreta/Grafos CIn-UFPE


Slide10 l.jpg

  • Componente conexa

    • Um grafo G(V,A) desconexo é formado por pelo menos dois subgrafos conexos, disjuntos em relação aos vértices

    • Cada um destes subgrafos conexos é dito ser uma componente conexa de G.

Matemática Discreta/Grafos CIn-UFPE


Slide11 l.jpg

Vértice de corte (ou pontos de articulação)

Um vértice é dito ser um vértice de corte se sua remoção (juntamente com as arestas a ele conectadas) produz um grafo com mais componentes conexos. (se o grafo original é conexo, ele se torna desconexo).

X2 é um vértice de corte

Matemática Discreta/Grafos CIn-UFPE


Slide12 l.jpg

Ponte

Uma aresta é dita ser uma ponte se sua remoção produz um grafo com mais componentes conexos.

(X1,X4) é uma ponte

Matemática Discreta/Grafos CIn-UFPE


Slide13 l.jpg

  • Grafo fortemente conexo

    • No caso de grafos orientados (digrafos), um grafo é dito ser fortemente conexo se existe um caminho de a para b e de b para a, para cada par a,b de vértices do grafo.

    • ou seja, se cada par de vértices participa de um circuito.

    • Isto significa que cada vértice pode ser alcançável partindo-se de qualquer outro vértice do grafo.

Matemática Discreta/Grafos CIn-UFPE


Slide14 l.jpg

  • Grafo fracamente conexo

    Um grafo direcionado G(V,A) é chamado de fracamente conexo se existe um caminho entre cada par de vértices no grafo não orientado subjacente.

Cada um destes subgrafos é fortemente conexo. No entanto, o grafo todo é apenas fracamente conexo.

Matemática Discreta/Grafos CIn-UFPE


Circuito euleriano l.jpg
Circuito Euleriano

Um circuito euleriano em um grafo G é um circuito simples que contem cada aresta de G.

Matemática Discreta/Grafos CIn-UFPE


Slide16 l.jpg

Teorema (Euler 1736)

Um multigrafo conectado G possui um circuito euleriano se e somente se o grau de cada vértice de G é par.

Prova:

Ida: Seja G um grafo euleriano. Por cada ocorrência de vértice do circuito euleriano, existe uma aresta que chega nesse vértice e outra que sai desse vértice. Como toda aresta faz parte do circuito, isto é, nenhuma aresta fica fora do ciclo, necessariamente o número de arestas por cada vértice é par.

Matemática Discreta/Grafos CIn-UFPE


Slide17 l.jpg

Volta: Suponhamos que todos os vértices possuem grau par. Seja vi um vértice do grafo. Tentemos, a partir de vi, construir um caminho que não passa duas vezes pela mesma aresta, e até que não seja possível continuar. Como todos os vértices possuem um grau par, sempre será possível entrar e sair de um vértice. A única exceção é o vértice vi onde o caminho vai terminar. Se esse caminho, que chamaremos C1, contém todas as arestas de G, temos um ciclo euleriano. Senão, retiramos de G todas as arestas que fazem parte de C1. No grafo resultante G', todos os vértices também possuem grau par e necessariamente um deles faz parte de C1, senão o grafo não seria conexo.

Matemática Discreta/Grafos CIn-UFPE


Slide18 l.jpg

Volta (cont.): Recomeçamos o mesmo processo com o grafo G', partindo de um vértice comum com C1, obtendo assim um novo circuito C2. A figura abaixo mostra que dois circuitos que têm um vértice em comum podem formar um circuito único: chegando no vértice comum em um dos dois circuitos, continuamos o percurso no outro circuito. Continuando esse processo, necessariamente obteremos um circuito único que contém todas as arestas de G.

Matemática Discreta/Grafos CIn-UFPE


Slide19 l.jpg

  • Algoritmo de Hierholzer

    • Algoritmo para a construção de um ciclo euleriano sugerido a partir da prova do teorema de Euler

Comece em qualquer vértice u e percorra aleatoriamente as arestas ainda não visitadas a cada vértice visitado até fechar um ciclo

Se sobrarem arestas não visitadas, recomece a partir de um vértice do ciclo já formado

Se não existem mais arestas não visitadas, construa o ciclo euleriano a partir dos ciclos formados, unindo-os a partir de um vértice comum

Matemática Discreta/Grafos CIn-UFPE


Slide20 l.jpg

  • Algoritmo de Hierholzer

    • Algoritmo para a construção de um ciclo euleriano sugerido a partir da prova do teorema de Euler

Matemática Discreta/Grafos CIn-UFPE


Slide21 l.jpg

  • É possível sair de uma das ilhas, passar uma única vez por cada uma das pontes e retornar ao ponto de origem ?

Matemática Discreta/Grafos CIn-UFPE


Slide22 l.jpg

  • Como nem todos os vértices têm grau par, o grafo não é euleriano. Logo, é impossível atravessar todas as pontes uma só vez e voltar ao lugar de partida

Matemática Discreta/Grafos CIn-UFPE


Slide23 l.jpg

Comece em qualquer vértice u e percorra as arestas de forma aleatória, seguindo sempre as seguintes regras:

I – apague as arestas depois de passar por elas

II – se aparecer algum vértice isolado, apague-o também

III – passe por uma ponte somente se não houver outra alternativa

Matemática Discreta/Grafos CIn-UFPE


Slide24 l.jpg

Matemática Discreta/Grafos CIn-UFPE


Caminhos circuitos hamiltonianos l.jpg
Caminhos, circuitos Hamiltonianos

Um caminho (ou circuito) em um grafo G(V,E) é dito ser hamiltoniano se ele passa exatamente uma vez em cada um dos vértices de G

Caminho e circuito hamiltoniano

Apenas caminho hamiltoniano

Matemática Discreta/Grafos CIn-UFPE


Slide26 l.jpg

Mais exemplos

Circuito e caminho

caminho

não hamiltoniano

Matemática Discreta/Grafos CIn-UFPE


Slide27 l.jpg

Grafo hamiltoniano

Não existe uma caracterização para identificar grafos hamiltonianos como existe para os eulerianos

A busca de tal caracterização é um dos maiores problemas ainda não solucionados da teoria dos grafos

Matemática Discreta/Grafos CIn-UFPE


Slide28 l.jpg

Grafo hamiltoniano

Muito pouco é conhecido dos grafos hamiltonianos

A maioria dos teoremas existentes são da forma: “Se G possui arestas suficientes, então G é hamiltoniano”

Matemática Discreta/Grafos CIn-UFPE


Slide29 l.jpg

Circuito hamiltoniano em grafos completos

Todo grafo completo, que contém mais de 2 vértices contem um circuito hamiltoniano

Seja v1,v2,...,vn os vértices de G. Como existe uma aresta entre qualquer par de vértices, é possivel, a partir de v1 percorrer essa sequência até vn e voltar para v1

Matemática Discreta/Grafos CIn-UFPE


Slide30 l.jpg

Teorema (Dirac 1952)

Uma condição suficiente, mas não necessária, para que um grafo conexo simples G com n (>2) vértices tenha um circuito hamiltoniano é que o grau de todo vértice de g seja  n/2

O grafo abaixo, possui um circuito hamiltoniano mas não respeita a condição do teorema de Dirac

Matemática Discreta/Grafos CIn-UFPE


Slide31 l.jpg

Teorema (Ore 1960)

Uma condição suficiente, mas não necessária, para que um grafo simples G com n (>2) vértices tenha um circuito hamiltoniano é que a soma dos graus de cada par de vértices não adjacentes seja no mínimo n.

Permite identificar mais grafos com circuitos hamiltonianos que o anterior, mas demora muito para efetuar os cálculos. Uma busca por tentativa e erro pode ser mais eficiente em alguns casos

Matemática Discreta/Grafos CIn-UFPE


Slide32 l.jpg

O adjetivo "hamiltoniano" deve-se ao matemático irlandês Sir William Rowan Hamilton (1805-1865).

Diz-se que ele inventou um jogo que envolve um dodecaedro (sólido regular com 20 vértices, 30 arestas e 12 faces).

Hamilton rotulou cada vértice do dodecaedro com o nome de uma cidade conhecida.

O objetivo do jogo era que o jogador viajasse "ao redor do mundo" ao determinar uma viagem circular que incluísse todas as cidades exatamente uma vez, com a restrição de que só fosse possível viajar de uma cidade a outra se existisse uma aresta entre os vértices correspondentes.

Matemática Discreta/Grafos CIn-UFPE


Slide33 l.jpg

A figura abaixo mostra um grafo que representa este problema, ou seja os vértices e arestas de um dodecaedro.

Matemática Discreta/Grafos CIn-UFPE


Alguns problemas l.jpg
Alguns Problemas problema, ou seja os vértices e arestas de um dodecaedro.

Como explorar um grafo

Como obter um processo sistemático para caminhar pelos vértices e arestas de um grafo?

Como caminhar no grafo de modo a visitar todos os vértices e arestas evitando repetições desnecessárias de visitas a um mesmo vértice ou aresta?

Que recursos adicionais são necessários?

Matemática Discreta/Grafos CIn-UFPE


Slide35 l.jpg

Como explorar um grafo problema, ou seja os vértices e arestas de um dodecaedro.

Necessidade de ‘’marcar’’ quando um vértice e uma aresta já foram visitados ou não

Algoritmo Geral

Busca Geral G(V,E)1. Escolher e marcar um vértice inicial;2. Enquanto existir algum vértice v marcado e incidente a uma aresta (v,w), não explorada, efetuar:    a) escolher o vértice v;    b) explorar a aresta (v,w). Se w não é marcado então marcar w.

Matemática Discreta/Grafos CIn-UFPE


Slide36 l.jpg

O problema do problema, ou seja os vértices e arestas de um dodecaedro. Caminho mais curto

Um motorista deseja encontrar o caminho, mais curto possível, entre duas cidades do Brasil

Caso ele receba um mapa das estradas de rodagem do Brasil, no qual a distância entre cada par adjacente de cidades está exposta, como poderíamos determinar uma rota mais curta entre as cidades desejadas?

Uma maneira possível é enumerar todas as rotas possíveis que levam de uma cidade à outra, e então selecionar a menor.

Matemática Discreta/Grafos CIn-UFPE


Slide37 l.jpg

O problema do menor caminho consiste em determinar um menor caminho entre um vértice de origem s  V e todos os vértices v de V.

¨

Matemática Discreta/Grafos CIn-UFPE


Slide38 l.jpg

u caminho entre um vértice de origem s

v

6

3

s

4

2

1

2

7

3

5

6

x

y

O problema do Caminho mais curto

Uma maneira mais eficiente:

Percorra o grafo, partindo do vértice de origem s, associando a cada vértice um número l(v) indicando a menor distância entre s e v.

Isso significa que quando chegamos ao vértice v, na figura abaixo, l(v) será min ( l(u)+6 , l(x)+4 )

Matemática Discreta/Grafos CIn-UFPE


Slide39 l.jpg

u caminho entre um vértice de origem s

v

6

3

9

3

s

4

0

2

1

2

7

3

5

11

5

6

x

y

Grafos com pesos:

- Cada aresta possui um número associado (peso)

- O tamanho do caminho é a soma dos pesos das arestas do caminho

Matemática Discreta/Grafos CIn-UFPE


Slide40 l.jpg

Como obter um caminho mínimo partindo de s para y? caminho entre um vértice de origem s

u

v

6

3

9

3

s

4

0

2

1

2

7

3

5

11

5

6

x

y

Matemática Discreta/Grafos CIn-UFPE


Slide41 l.jpg

Outra possibilidade: caminho entre um vértice de origem s

u

v

6

3

9

3

s

4

0

2

1

2

7

3

5

11

5

6

x

y

Matemática Discreta/Grafos CIn-UFPE


Slide42 l.jpg

O algoritmo de Dijkstra caminho entre um vértice de origem s

O algoritmo de Dijkstra aqui descrito identifica o menor caminho entre dois vértices de um grafo não orientado.

Se desejamos calcular o menor caminho de a para z em um grafo conexo simples com pesos, primeiro encontramos um menor caminho entre a e um primeiro vértice, depois entre a e um segundo vértice, esse procedimento é repetido até que seja encontrado um menor caminho entre a e z.

Matemática Discreta/Grafos CIn-UFPE


Slide43 l.jpg

O algoritmo de Dijkstra caminho entre um vértice de origem s

Um conjunto S de vértices é construído inserindo-se um vértice a cada iteração.

A cada iteração também é adotado um procedimento para rotular vértices: um vértice w é rotulado com o tamanho do menor caminho de a até ele, e que contem somente vértices do conjunto S.

O vértice a ser inserido em S é aquele com o menor rótulo.

Matemática Discreta/Grafos CIn-UFPE


Slide44 l.jpg

O algoritmo de Dijkstra caminho entre um vértice de origem s

O algoritmo começa rotulando a com 0 e os demais vértices com . Usamos a notação L0(a)=0 e L0(v)= . (na iteração 0).

A notação Sk é usada para denotar o conjunto S após a iteração k. Começamos com S0=. O conjunto Sk é formado a partir de Sk-1 adicionado-se um vértice u que não está em Sk-1 e possui o menor rótulo.

Após a inclusão de u em Sk, atualizamos os rótulos de todos os vértices que não estão nesse conjunto da seguinte maneira: Lk(v) é o tamanho do menor caminho de a até v que contem apenas os vértices de Sk.

.

Matemática Discreta/Grafos CIn-UFPE


Slide45 l.jpg

O algoritmo de Dijkstra caminho entre um vértice de origem s

Seja v um vértice que não está em Sk. Para atualizar o rótulo de v, observe que Lk(v) é o tamanho do menor caminho de a para v e que contém apenas os vértices que estão em Sk..

Esse caminho ou é o menor caminho que contem apenas os elementos de Sk-1 (sem a inclusão de u) ou é

o menor caminho de a até u no passo k-1 com adição da aresta (u,v).

Lk(v) =   min(Lk-1(v),Lk-1(u)+ peso(u,v))

Matemática Discreta/Grafos CIn-UFPE


Slide46 l.jpg

O algoritmo de Dijkstra caminho entre um vértice de origem s

procedimentoDijkstra

Parai := 1 atén:

L(v)= .

L(a) = 0

S=

Enquanto z Su :=   Elemento que S e L(u) é mínimo S :=   S  {u}Para cada vértice v  S :Se L(u) + peso(u,v) < L(v) então

L(v) = L(u) + peso(u,v)

(observe que L(v) =   min(L(v),L(u)+ peso[u,v])Retornar L(z)

Matemática Discreta/Grafos CIn-UFPE


Slide47 l.jpg

Exemplo caminho entre um vértice de origem s : Menor caminho de A até D

0: L(A)=0 e todos os outro é ; S=;

1: S={A}; L(B)=4; L(F)=2;

2: S={A,F}; L(B)=3; L(C)=10; L(E)=12;

3: S={A,F,B};L(C)=8;

4: S={A,F,B,C}; L(D)=14; L(E)=10;

5: S={A,F,B,C,E}; L(D)=13;

6: S={A,F,B,C,E,D}

B

C

5

4

6

A

8

2

D

1

2

3

10

F

E

Matemática Discreta/Grafos CIn-UFPE


ad