Estrutura de Dados para Tecnologia

38 

Full text

(1)

Estrutura de Dados para

Tecnologia

(2)

Grafos

 Um grafo G=(V,A) consiste em um conjunto V de

vértices e um conjunto A de pares de vértices ou arestas/arcos:

 Os grafos são uma forma de modelar os problemas.

A

B

C

(3)

Grafos

 Formalmente, um grafo G=(V,A) é definido pelo par

de conjuntos V e A, onde:

 V: Conjunto não-vazio dos vértices do grafo.

 A: Conjunto de pares ordenados a=(v,w), v e w  V.

 Seja, por exemplo, o grafo G(V,A) dado por:

 V = {p | p é uma pessoa}

 A = {(x,y) | x é amigo(a) de y} ⇒ relação simétrica

Salete

Pedro

Lúcia

(4)

Grafos

 Quando o grafo é orientado, é denominado

DIGRAFO

 Neste caso, o que liga os vértices não são arestas, e sim

ARCOS

 Seja, por exemplo, o grafo G(V,A) dado por:

 V = {p | p é um(a) professor}

 A = {(x,y) | x foi professor(a) de y}

Ademar

Ana

(5)

Grafos

 ORDEM: A ordem de um grafo G é dada pela

cardinalidade do conjunto de vértices, ou seja, pelo número de vértices do grafo G.

 ADJACÊNCIA: Em um grafo não orientado, dois

vértices v e w são adjacentes se há uma aresta a = (v,w) em G. Esta aresta é dita ser incidente a ambos, v e w.

 No caso de digrafos, a adjacência é dividida em:

 Sucessor: um vértice w é sucessor de v se há um arco de v

para w.

 Antecessor: um vértice v é antecessor de w se há um arco

(6)

Grafos

 GRAU: O grau de um grafo G é dado pelo número de

arestas que lhe são incidentes.

 No caso de digrafos, a noção de grau é dividida em:

 Grau de emissão: corresponde ao número de arcos que

partem de um vértice v.

 Grau de recepção: corresponde ao número de arcos que

chegam a um vértice v.

 FONTE: Um vértice v é uma fonte caso seu grau de

recepção for zero.

 SUMIDOURO: Um vértice v é um sumidouro caso seu

(7)

Grafos

 GRAFO VALORADO: Um grafo G(V,A) é dito ser

valorado quando existe uma ou mais funções

relacionando V e/ou A com um conjunto de números.

 Seja, por exemplo, o grafo G(V,A) dado por:

 V = {c | c é uma cidade com aeroporto}

 A = {(v,w,t) | há linha aérea ligando v a w, onde t é o

tempo esperado de vôo em minutos}

Manaus

Belém

São Paulo

Brasília Fortaleza

(8)

Grafos

 MULTIGRAFO: Um grafo G(V,A) é dito ser um

multigrafo quando existem múltiplas arestas entre pares de vértices de G. Exemplo:

 SUBGRAFO: Um grafo Gs(Vs,As) é dito ser subgrafo

de um grafo G(V,A) quando Vs⊆V e As⊆ A. Exemplo:

A B C

D

(9)

Grafos

 CAMINHO: o caminho entre dois vértices v1 e vn de

um grafo é uma sequência de vértices (v1,v2,...,vn) tal que {(v1,v2),(v2,v3),...,(vn-1,vn)} são arestas do grafo.

 Exemplo: Quais os caminhos entre Manaus e São

Paulo ?

Manaus

Belém

São Paulo

(10)

Grafos

 Exemplo: Quais os caminhos entre Manaus e São

Paulo ?

 (Manaus,São Paulo)

 (Manaus,Belém,Fortaleza,São Paulo)  (Manaus,Brasília,São Paulo)

 (Manaus,Brasília,Fortaleza, São Paulo) Manaus

Belém

São Paulo

(11)

Grafos

 Um CAMINHO SIMPLES é aquele onde não há arestas

repetidas.

 Um CAMINHO ELEMENTAR é aquele em que não há

vértices repetidos.

 CIRCUITO é um caminho simples com uma aresta

incidente nos vértices extremos do caminho, {(v1,v2),(v2,v3),...,(vn,v1)}.

 CICLO é um caminho elementar com uma aresta

incidente nos vértices extremos do caminho, {(v1,v2),(v2,v3),...,(vn,v1)}.

 COMPRIMENTO de um caminho é o número de

(12)

Grafos

 Exemplo:

 Considere o grafo G:

 Caminho simples de 1 para 8:  (1,2,4,6,5,4,3,8)

 Caminho elementar de 1 para 8:

 Ciclo que cubra vértices 3,4,7 e 8:

1 2

6 7 4 5 3 8

1 2

(13)

Grafos

 Exemplo:

 Considere o grafo G:

 Caminho simples de 1 para 8:  (1,2,4,6,5,4,3,8)

 Caminho elementar de 1 para 8:  (1,2,4,5,7,3,8)

 Ciclo que cubra vértices 3,4,7 e 8:

1 2

6 7 4 5 3 8

1 2

4

5

7

3

(14)

Grafos

 Exemplo:

 Considere o grafo G:

 Caminho simples de 1 para 8:  (1,2,4,6,5,4,3,8)

 Caminho elementar de 1 para 8:  (1,2,4,5,7,3,8)

 Ciclo que cubra vértices 3,4,7 e 8:  (4,3,8,7,6,4)

1 2

(15)

Grafos

 Um grafo G é CONEXO se e somente se existe um

caminho entre dois vértices quaisquer do grafo.

1

2 5

4

3

1

2 5

4

3

Conexo Não Conexo:

(16)

Grafos

 Como denominamos um grafo CONEXO e SEM

CICLOS ?

1

2

5 4

3

(17)

Grafos

 Caminho de Euler:

 Caminho simples que contém todas as arestas do grafo (e,

consequentemente, todos os seus vértices).

 Circuito de Euler:

 Circuito que contém todas as arestas do grafo.

 Grafo Euleriano:

 É um grafo que contém um circuito de Euler.

 Um grafo conexo admite um circuito de Euler se e

somente se todos os seus vértices têm grau par.

 Um grafo conexo admite um caminho de Euler se e

(18)

Grafos

 Será que o grafo a seguir é Euleriano ?

 Se sim, indique um circuito Euleriano.

1 2

5 4

3

6 7

8 9

(19)

Grafos

 Sir Wiliam Hamilton

 Problema proposto em 1859.

 Puzzle: viagem à volta do mundo.  20 cidades

 Entrar um caminho que permitisse sair de e chegar a uma

cidade, passando pelas outras uma única vez.

 Caminho Hamiltoniano

 Caminho elementar que contém todos os vértices de um

grafo.

 Ciclo Hamiltoniano

 Ciclo que contém todos os vértices de um grafo.

(20)

Grafos

 Será que o grafo a seguir é Hamiltoniano ?

 Se sim, indique um ciclo Hamiltoniano.

1

2

(1,2,4,3,1)

(21)

Grafos

 Será que o grafo a seguir é Hamiltoniano ?

 Se sim, indique um ciclo Hamiltoniano.

1

2

(1,2,6,5,3,4,1) 3

4

5

(22)

Grafos

 Será que o grafo a seguir é Hamiltoniano ?

 Se sim, indique um ciclo Hamiltoniano.

1

2

3

4 6

5

7

(23)

Grafos

 Aplicação: problema do caixeiro viajante.

 Suponha que um viajante deseje conhecer um

conjunto de n cidades, passando por cada cidade

uma única vez.

 Sabendo-se a distância entre as cidades, o problema

é: qual o caminho que percorra todas as cidades uma única vez, com a menor distância possível ?

(24)

Grafos

 Podemos utilizar um grafo valorado para representar

as cidades, suas conexões e as distâncias (em km) entre as mesmas:

Manaus

Belém

São Paulo

Brasília Fortaleza

1296

1939

2693

874

1137

1689

(25)

Grafos

Formas de Representação:

 Matriz de Adjacência

1

5 4

2

3

1 2 3 4 5

(26)

Grafos

Formas de Representação:

 Matriz de Adjacência

1 2 3 4 5

1 0 1 0 0 1

2 0 0 1 1 0

3 0 0 1 1 0

4 0 0 0 0 1

1

5 4

2

(27)

Grafos

Formas de Representação:

 Matriz de Adjacência

1 2 3 4 5

1 0 5 0 0 2

2 5 0 2 3 6

3 0 2 0 2 0

4 0 3 2 0 4

5 2 6 0 4 0

1

5 4

2

3 5

2 6

4

3

2

(28)

Grafos

Formas de Representação:

 Matriz de Incidência

a1 a2 a3 a4 a5 a6 a7

1 1 0 0 0 0 0 1

2 1 1 0 0 1 1 0

3 0 1 1 0 0 0 0

4 0 0 1 1 0 1 0

1

5 4

2

3 a1

a7 a5

a4

a6

a2

(29)

Grafos

Formas de Representação:

 Matriz de Incidência

a1 a2 a3 a4 a5 a6 a7 a8 a9

1 -1 0 0 0 0 0 0 -1 1

2 1 -1 0 0 0 1 -1 0 0

3 0 1 1 -1 0 0 0 0 0

4 0 0 0 1 -1 0 1 0 0

5 0 0 0 0 1 -1 0 1 -1

1

5 4

2

(30)

Grafos

Formas de Representação:

 Lista de Adjacência

1

5 4

2

3

1 2 5

2 1 5 3 4 3 2 4

(31)

Grafos

Formas de Representação:

 Lista de Adjacência

1 2 5 2 3 4 3 3 4 4 5

5 1 2

1

5 4

2

(32)

Qual a melhor estrutura ?

Testar se aresta está no grafo.

Determinar o grau de um vértice.

Menos memória em grafos pequenos.

Menos memória em grafos grandes.

Inserção ou remoção de aresta.

Atravessar o grafo.

Melhor na maioria dos problemas.

Matriz de Adjacência

Listas de Adjacências

Matriz de Adjacência Listas de Adjacências

Matriz de Adjacência

Listas de Adjacências

(33)

Busca em Largura

 A árvore define um caminho mais curto da raiz até

1

2 5 6

3 4

3

4

5 2

1

(34)

Busca em Profundidade

3

4

5 2

1

6

1

2

5

6

3

(35)

Atravessando Grafos

Eficiência

um mesmo local não deve

ser visitado repetidamente.

Corretude

o percurso deve ser feito

(36)

Atravessando Grafos

Os vértices devem ser marcados

quando visitados pela primeira vez.

Cada vértice deve ter um dos estados:

Não-visitado

Visitado

(37)

Atravessando Grafos

Mantém-se uma estrutura de dados

com todos os vértices já visitados mas

ainda não completamente explorados.

As arestas não-orientadas são

(38)

Atravessando Grafos

Estruturas de dados para armazenar os

vértices descobertos mas ainda não

completamente explorados:

Fila

busca em largura

Figure

Updating...

References

Updating...

Download now (38 pages)