análise de algoritmos - conceitos de grafos

26
Grafos Conceitos B ´ asicos – p. 1/12

Upload: delacyr-ferreira

Post on 20-Jul-2015

89 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Análise de Algoritmos - Conceitos de Grafos

Grafos

Conceitos Basicos

– p. 1/12

Page 2: Análise de Algoritmos - Conceitos de Grafos

Grafos

Um grafo G consiste de um conjunto finito deelementos chamado vertices (denotado por V (G)) eum conjunto de pares não ordenado de vérticeschamado arestas (denotado por E(G)).

– p. 2/12

Page 3: Análise de Algoritmos - Conceitos de Grafos

Grafos

Um grafo G consiste de um conjunto finito deelementos chamado vertices (denotado por V (G)) eum conjunto de pares não ordenado de vérticeschamado arestas (denotado por E(G)).

Se e é uma aresta e u e v são seus vértices,dizemos que e liga u a v, e denotamos por e = (u, v)

ou e = uv. Os vértices u e v são os extremos de e.

– p. 2/12

Page 4: Análise de Algoritmos - Conceitos de Grafos

Grafos - conceitos básicos

os extremos de uma aresta são incidentes àaresta, e vice-versa.

– p. 3/12

Page 5: Análise de Algoritmos - Conceitos de Grafos

Grafos - conceitos básicos

os extremos de uma aresta são incidentes àaresta, e vice-versa.

dois vértices incidentes a uma mesma arestasão adjacentes. O mesmo nome é dado a duasarestas incidentes a um mesmo vértice.

– p. 3/12

Page 6: Análise de Algoritmos - Conceitos de Grafos

Grafos - conceitos básicos

os extremos de uma aresta são incidentes àaresta, e vice-versa.

dois vértices incidentes a uma mesma arestasão adjacentes. O mesmo nome é dado a duasarestas incidentes a um mesmo vértice.

laco: aresta com extremos no mesmo vértice.

– p. 3/12

Page 7: Análise de Algoritmos - Conceitos de Grafos

Grafos - conceitos básicos

os extremos de uma aresta são incidentes àaresta, e vice-versa.

dois vértices incidentes a uma mesma arestasão adjacentes. O mesmo nome é dado a duasarestas incidentes a um mesmo vértice.

laco: aresta com extremos no mesmo vértice.

arestas paralelas: ligam os mesmos pares devértices.

– p. 3/12

Page 8: Análise de Algoritmos - Conceitos de Grafos

Grafos - conceitos básicos

grafo simples: não possui laço nem arestaparalela.

– p. 4/12

Page 9: Análise de Algoritmos - Conceitos de Grafos

Grafos - conceitos básicos

grafo simples: não possui laço nem arestaparalela.

ordem de um grafo: número de vértices que elepossui.

– p. 4/12

Page 10: Análise de Algoritmos - Conceitos de Grafos

Grafos - conceitos básicos

grafo simples: não possui laço nem arestaparalela.

ordem de um grafo: número de vértices que elepossui.

v(G) e a(G): denotam, respectivamente, onúmero de vértices e arestas de um grafo G.Quando o grafo estiver subentendido usaremosapenas v e a.

– p. 4/12

Page 11: Análise de Algoritmos - Conceitos de Grafos

Grafos - conceitos básicos

um grafo é vazio, se não possui vértices.

– p. 5/12

Page 12: Análise de Algoritmos - Conceitos de Grafos

Grafos - conceitos básicos

um grafo é vazio, se não possui vértices.

um grafo é completo se cada par de vérticesdistintos é ligado por uma aresta. Um grafocompleto com n vértices é denotado por Kn.

– p. 5/12

Page 13: Análise de Algoritmos - Conceitos de Grafos

Grafos - conceitos básicos

um grafo é vazio, se não possui vértices.

um grafo é completo se cada par de vérticesdistintos é ligado por uma aresta. Um grafocompleto com n vértices é denotado por Kn.

um grafo é conexo se possui uma únicacomponente.

– p. 5/12

Page 14: Análise de Algoritmos - Conceitos de Grafos

Grafos - conceitos básicos

um grafo é bipartido se o seu conjunto devértices pode ser particionado em doissubconjuntos X e Y , tais que cada arestapossui um extremo em X e outro em Y ; apartição (X,Y ) é chamada de biparticao dografo. Um grafo é bipartido completo se ele ébipartido com bipartição (X,Y ) e todo vérticede X é ligado a todo vértice de Y . Se |X| = m

e |Y | = n, tal grafo é denotado por Km,n.

– p. 6/12

Page 15: Análise de Algoritmos - Conceitos de Grafos

Algoritmos em Grafos

– p. 7/12

Page 16: Análise de Algoritmos - Conceitos de Grafos

Algoritmos em Grafos

Como representar computacionalmente um grafo?

– p. 8/12

Page 17: Análise de Algoritmos - Conceitos de Grafos

Algoritmos em Grafos

Como representar computacionalmente um grafo?

e1

e2e3

e4

e5 e6 e7

v1 v2

v3v4

– p. 8/12

Page 18: Análise de Algoritmos - Conceitos de Grafos

Algoritmos em Grafos

Como representar computacionalmente um grafo?

e1

e2e3

e4

e5 e6 e7

v1 v2

v3v4

e1 e2 e3 e4 e5 e6 e7

v1 1 1 0 0 1 0 1

v2 1 1 1 0 0 0 0

v3 0 0 1 1 0 0 1

v4 0 0 0 1 1 2 0

Matriz de incidência

– p. 8/12

Page 19: Análise de Algoritmos - Conceitos de Grafos

Algoritmos em Grafos

Como representar computacionalmente um grafo?

– p. 9/12

Page 20: Análise de Algoritmos - Conceitos de Grafos

Algoritmos em Grafos

Como representar computacionalmente um grafo?

e1

e2e3

e4

e5 e6 e7

v1 v2

v3v4

– p. 9/12

Page 21: Análise de Algoritmos - Conceitos de Grafos

Algoritmos em Grafos

Como representar computacionalmente um grafo?

e1

e2e3

e4

e5 e6 e7

v1 v2

v3v4

v1 v2 v3 v4

v1 0 2 1 1

v2 2 0 1 0

v3 1 1 0 1

v4 1 0 1 1

Matriz de adjacência

– p. 9/12

Page 22: Análise de Algoritmos - Conceitos de Grafos

Algoritmos de busca em Grafos

Muitas problemas algorítmicos consiste naexploração de um grafo. Logo, é importante obterum processo sistemático de como caminhar pelasarestas e vértices de um grafo.

Vamos descrever dois algoritmos de busca emgrafos:

busca em largura

busca em profundidade

– p. 10/12

Page 23: Análise de Algoritmos - Conceitos de Grafos

Busca em largura

O algoritmo de busca em largura para um grafo G

pode ser descrito da seguinte forma:

– p. 11/12

Page 24: Análise de Algoritmos - Conceitos de Grafos

Busca em largura

O algoritmo de busca em largura para um grafo G

pode ser descrito da seguinte forma:

põe na fila um vértice qualquer u de G emarque-o como alcançado

enquanto fila != " façav # elemento da frente da fila (retire v da fila)para toda aresta (v, w), tal que w ainda nãofoi alcançado, marque w como alcançado epõe w na fila

– p. 11/12

Page 25: Análise de Algoritmos - Conceitos de Grafos

Busca em profundidade

O algoritmo de busca em profundidade para umgrafo G pode ser descrito da seguinte forma:

– p. 12/12

Page 26: Análise de Algoritmos - Conceitos de Grafos

Busca em profundidade

O algoritmo de busca em profundidade para umgrafo G pode ser descrito da seguinte forma:

empilhe um vértice qualquer u de G e marque-ocomo alcançado

enquanto pilha != " façav # elemento do topo-da-pilhase existe aresta (v, w), tal que w ainda nãofoi alcançado, então marque w comoalcançado e empilhe w; senão desempilha v

– p. 12/12