SlideShare uma empresa Scribd logo
© 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 1
© 2011 Pearson. Todos os direitos reservados.
slide 1
Capítulo 8 –
Algoritmos em
grafos
© 2011 Pearson. Todos os direitos reservados.
slide 1
© 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 2 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 2 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 2 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 2
© 2011 Pearson. Todos os direitos reservados.
slide 2
Conexão entre elementos é um problema comum em
computação. Situações que podem ser representadas
pela teoria dos grafos: a malha de estradas que ligam
cidades; o conjunto de links de um website; os circuitos
da placa-mãe de um computador; os cômodos de uma
casa e as portas que os interligam; e a distribuição entre
disciplinas e professores de uma escola.
© 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 3 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 3 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 3 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 3
© 2011 Pearson. Todos os direitos reservados.
slide 3
Conceitos de grafos
Um grafo G é formado pelo par de conjuntos V e
E, sendo V o conjunto de vértices de G, e E o
conjunto de arestas de G. Uma aresta e ∈ E(G) é
representada por e = (u, v), e sempre interliga
dois vértices quaisquer u e v de V. Dois vértices
ligados por uma aresta são denominados
adjacentes. Notações utilizadas para denotar um
grafo: G = (V, E) ou G = (V(G), E(G)) ou G(V, E).
© 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 4 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 4 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 4 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 4
© 2011 Pearson. Todos os direitos reservados.
slide 4
A representação geométrica dos grafos é feita
marcando pontos no plano para os vértices, e uma
linha ligando dois pontos para a aresta.
Quando os vértices são nomeados por letras, deve ser
feito um mapeamento de cada nome para um número
correspondente i, sendo 1 ≤ i ≤ n, n ∈ N.
Exemplos de grafos
© 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 5 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 5 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 5 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 5
© 2011 Pearson. Todos os direitos reservados.
slide 5
Laços, arestas múltiplas e multigrafo
Quando um grafo tem arestas do tipo e = (u, u), a aresta é
chamada laço. Se há mais de uma aresta entre o mesmo par
de vértices, são arestas paralelas ou arestas múltiplas. Um
grafo com arestas paralelas é denominado multigrafo.
(a) Grafo com laços; (b) Grafo com arestas múltiplas (multigrafo)
© 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 6 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 6 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 6 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 6
© 2011 Pearson. Todos os direitos reservados.
slide 6
Grafo trivial e grafo simples
Um grafo com apenas um vértice é chamado trivial. Se não
possuir laço ou aresta múltipla, é chamado simples.
Grafo completo
Um grafo G é chamado completo quando existe uma aresta
para cada par de vértices distintos de G.
Grafos completos
© 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 7 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 7 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 7 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 7
© 2011 Pearson. Todos os direitos reservados.
slide 7
Grafo regular
Em um grafo G(V, E), o grau de um vértice v ∈ V, denotado por
g(v), é o número de arestas que incidem. Se todos os vértices de
um grafo G têm mesmo grau, é chamado grafo regular de grau r.
Subgrafo
Um grafo G(V, E), H(V’,E’) é um subgrafo de G se V’ ⊆ V e E’ ⊆ E.
(a) Grafo G; (b) e (c) Subgrafos de G
© 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 8 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 8 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 8 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 8
© 2011 Pearson. Todos os direitos reservados.
slide 8
Grafo bipartido
Um grafo G(V,E) é bipartido quando seu conjunto de
vértices V pode ser particionado em dois subconjuntos
V1 e V2, tal que toda aresta de G faz a ligação de um
vértice de V1 a um vértice de V2.
(a) Grafo bipartido; (b) Grafo bipartido completo
© 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 9 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 9 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 9 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 9
© 2011 Pearson. Todos os direitos reservados.
slide 9
Caminho simples, trajeto e ciclos
Uma sequência de vértices v1, v2, ..., vj, tal que (vi ,vi+1) ϵ
E(G), 1 ≤ i ≤ |j−1|, é chamada caminho de v1 a vj. O
número de arestas do caminho é o comprimento. Se
todos os vértices são distintos, é um caminho simples
ou elementar. Se as arestas forem distintas, é um
trajeto. Um ciclo é um caminho v1,v2,…,vj,vj+1, sendo v1 =
vj+1 e k ≥ 3. Um grafo sem ciclos é chamado acíclico.
© 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 10 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 10 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 10 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 10
© 2011 Pearson. Todos os direitos reservados.
slide 10
Grafo conexo e desconexo
Um grafo G é conexo se existe um caminho para cada par
de vértices de G. Caso contrário, é desconexo. O grafo
desconexo tem partes conexas, as componentes. Um grafo
conexo possui uma única componente conexa enquanto
um desconexo possui várias componentes conexas.
(a) Grafo conexo; (b) Grafo desconexo
© 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 11 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 11 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 11 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 11
© 2011 Pearson. Todos os direitos reservados.
slide 11
Grafos isomorfos
Dois grafos G1(V1, E1) e G2(V2, E2), com |V1|=|V2|= n, são
isomorfos entre si quando existe uma função unívoca f: V1
→ V2, tal que (u,v) ∈ E1 sse (f(u), f(v)) ∈ E2, para todo u, v ∈
E1 (Szwarcfiter et al., 1986).
© 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 12 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 12 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 12 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 12
© 2011 Pearson. Todos os direitos reservados.
slide 12
Grafo ponderado
Um grafo ponderado tem peso nas arestas.
Esses pesos podem representar custos ou
distâncias, por exemplo.
© 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 13 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 13 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 13 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 13
© 2011 Pearson. Todos os direitos reservados.
slide 13
Dígrafo
Um grafo direcionado D(V,E), ou dígrafo, possui um
conjunto não vazio de vértices V e um conjunto de
arestas E, tal que para toda aresta (u,v) ∈ E existe uma
única direção de u para v.
© 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 14 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 14 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 14 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 14
© 2011 Pearson. Todos os direitos reservados.
slide 14
Seja D(V,E) um dígrafo e um vértice v ∈ V. O
grau de entrada de v é o número de arestas
que incidem em v. O grau de saída é o número
de arestas que partem de v. Um vértice com
grau de entrada nulo é chamado fonte e um
vértice com grau de saída zero é chamado
sumidouro.
© 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 15 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 15 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 15 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 15
© 2011 Pearson. Todos os direitos reservados.
slide 15
Árvores
Um grafo T(V,E) que não possui ciclos e é conexo é
chamado árvore. Características:
•Seja v ∈ V, se o grau de v for menor ou igual a 1, v é
uma folha. Se for maior que 1, v é um vértice interno.
•Uma árvore T com n vértices possui n −1 arestas.
•Um grafo G é uma árvore somente se existir um único
caminho entre cada par de vértices de G.
•Um conjunto de árvores é chamado floresta.
© 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 16 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 16 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 16 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 16
© 2011 Pearson. Todos os direitos reservados.
slide 16
Árvores com seis vértices
© 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 17 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 17 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 17 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 17
© 2011 Pearson. Todos os direitos reservados.
slide 17
Dado um grafo G(V(G), E(G)), denomina-se subgrafo
gerador o grafo H(V(H), E(H)) que é subgrafo de G, tal
que V(G) = V(H). Se o subgrafo H for uma árvore, então é
chamado árvore geradora.
(a) Grafo G; (b) Subgrafo gerador; (c) Árvore geradora
© 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 18 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 18 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 18 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 18
© 2011 Pearson. Todos os direitos reservados.
slide 18
Representação de grafos
Um grafo G(V,E) com |V|= n pode ser representado
adequadamente por meio de matrizes ou listas.
Matriz de adjacências
Dado um grafo G(V,E), uma matriz de adjacências M é
formada por n linhas e n colunas, sendo n o número de
vértices do grafo. Preenche-se como:
© 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 19 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 19 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 19 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 19
© 2011 Pearson. Todos os direitos reservados.
slide 19
Matriz de adjacências para um grafo não direcionado
A matriz de adjacências é simétrica para grafos não
direcionados.
© 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 20 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 20 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 20 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 20
© 2011 Pearson. Todos os direitos reservados.
slide 20
Matriz de incidências
Segundo Rabuske (1992), dado um grafo G(V,E) de n vértices
e m arestas, a matriz de incidência de G, denotada por Mnxm,
é definida por:
Em grafo orientado, a matriz é definida como:
© 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 21 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 21 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 21 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 21
© 2011 Pearson. Todos os direitos reservados.
slide 21
Lista de adjacências
Consiste em um vetor Adj com n =|V| entradas, uma
para cada vértice do grafo. Cada entrada Adj[v] possui
uma lista encadeada de vértices adjacentes a v em G.
Não existe uma ordem dos vértices nessa lista.
Compõe-se de n listas de 2m elementos, onde m é o
número de arestas. O espaço utilizado é O(n + m).
© 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 22 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 22 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 22 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 22
© 2011 Pearson. Todos os direitos reservados.
slide 22
Algoritmos de busca
Algoritmo de busca em profundidade
Atende ao critério de escolher o vértice mais
recentemente alcançado dentre os vários marcados e
incidentes a uma aresta ainda não explorada.
Análise da busca em profundidade
Procura acessar todos os vértices em um grafo G = (V, E),
onde |V|= n e |E|= m. Para acessar os possíveis vértices,
varre a lista de arestas de cada vértice do grafo e com
isso gasta tempo O(n + m).
© 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 23 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 23 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 23 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 23
© 2011 Pearson. Todos os direitos reservados.
slide 23
Algoritmo de busca em largura
Escolhe o vértice alcançado por último dentre os vários
marcados e incidentes a uma aresta não explorada. Tem
esse nome por descobrir todos os vértices a uma distância
k de s, antes de descobrir os que estão à distância k+1.
© 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 24 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 24 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 24 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 24
© 2011 Pearson. Todos os direitos reservados.
slide 24
Análise da busca de profundidade
Primeiro, o algoritmo inicializa todos os vértices em
tempo O(V). Quando vão sendo descobertos, são
colocados em uma fila. Inserção e remoção na fila
gastam tempo constante, O(1). Todos os vértices são
enfileirados e retirados e o tempo total gasto é O(V).
Todas as listas de todos os vértices são analisadas, em
tempo proporcional a O(E). Portanto, o tempo de
execução da busca em largura é O(V + E).
© 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 25 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 25 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 25 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 25
© 2011 Pearson. Todos os direitos reservados.
slide 25
Algoritmo do caminho mínimo
Determinar o mais curto (com menor peso) em um
dígrafo com pesos nas arestas a partir de um vértice de
origem informado, sendo os pesos das arestas maiores
ou iguais a zero.
Algoritmo de Dijkstra: mantém um conjunto C com
vértices cujo valor do caminho mínimo em relação ao de
origem v já foi determinado. Cada vértice possui uma
distância em relação à origem, armazenada em um vetor
dist, com tamanho n=|V|.
© 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 26 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 26 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 26 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 26
© 2011 Pearson. Todos os direitos reservados.
slide 26
O algoritmo trabalha para escolher um vértice i da
lista de prioridades mínima lista = V − C, tal que a
estimativa de distância de i à origem é mínima. Em
seguida a distância dos vértices vizinhos a i é
recalculada, se for o caso; para isso, as arestas
passam por um processo de relaxamento.
Relaxar uma aresta (i,j) é testar a possibilidade de
melhorar o menor caminho encontrado para j pela
passagem através do vértice i e, com isso, atualizar a
distância mínima que j possui.
© 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 27 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 27 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 27 © 2011 Pearson Prentice Hall. Todos os direitos reservados.
slide 27
© 2011 Pearson. Todos os direitos reservados.
slide 27
Análise do algoritmo de caminho mínimo
O tempo de execução do algoritmo Dijkstra é
determinado pela forma como a lista de prioridades
mínima é implementada. Na lista como heap binário
mínimo cada operação de inserção e remoção custa no
pior caso O(logV), onde V representa o número de
vértices do grafo. O algoritmo é executado enquanto a
lista de prioridade não for vazia.
O custo para construção de um heap binário é O(V),
então o tempo de execução do algoritmo é:
V ⋅ (logV + E + V) = V ⋅ logV + V ⋅ E + V ⋅ V = O(V2).

Mais conteúdo relacionado

PDF
Teoria dos Grafos - História e COnceitos Iniciais
PDF
Aula 2 - Terminologia de Grafos (Parte II de Grafos).pdf
PDF
Análise de Algoritmos - Conceitos de Grafos
PDF
Introdução a Teoria dos Grafos
PDF
Aula Grafos
PPTX
Cap1-pp-01-14-coGrafos 1mpleta.pptgrafos x
PDF
Teoria dos Grafos
PPTX
Grafos
Teoria dos Grafos - História e COnceitos Iniciais
Aula 2 - Terminologia de Grafos (Parte II de Grafos).pdf
Análise de Algoritmos - Conceitos de Grafos
Introdução a Teoria dos Grafos
Aula Grafos
Cap1-pp-01-14-coGrafos 1mpleta.pptgrafos x
Teoria dos Grafos
Grafos

Semelhante a Capítulo 8 - Algoritmos em grafos com Pseudocódigos e em Java (20)

PDF
Introdução à Teoria dos Grafos
PDF
Teoria dos grafos
PPTX
Grafos .pptx
PDF
Introdução aos grafos: Principais conceitos
PPTX
Grafos_1.pptx
PPT
PDF
Cap1-pp-15-29-completa.pdfgraofs 222222222
PDF
Grafos1
PPTX
PowerPoint Introdução_aos_grafos 11º Ano.pptx
PPTX
Teoria de Grafos.ppt.pptx para estudar MACS
PDF
Pesquisa operacional teoria dos grafos
PPTX
Grafosv2
PPTX
MACS - grafos, trajetos e circuitos eulerianos; circuitos eulerianos...
PPTX
Seminário sobre Grafos por Samyra Lara
PPT
Grafos e Árvores
PDF
Grafos-Conceitos- P
PPTX
Grafos
PDF
Cap1-pp-30-45-completa.pgrafos 333333333333df
PDF
ARS - Análise de Redes Sociais - VIII ERI MG
KEY
Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...
Introdução à Teoria dos Grafos
Teoria dos grafos
Grafos .pptx
Introdução aos grafos: Principais conceitos
Grafos_1.pptx
Cap1-pp-15-29-completa.pdfgraofs 222222222
Grafos1
PowerPoint Introdução_aos_grafos 11º Ano.pptx
Teoria de Grafos.ppt.pptx para estudar MACS
Pesquisa operacional teoria dos grafos
Grafosv2
MACS - grafos, trajetos e circuitos eulerianos; circuitos eulerianos...
Seminário sobre Grafos por Samyra Lara
Grafos e Árvores
Grafos-Conceitos- P
Grafos
Cap1-pp-30-45-completa.pgrafos 333333333333df
ARS - Análise de Redes Sociais - VIII ERI MG
Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...
Anúncio

Mais de profjotamarcosduarte (8)

PPTX
AULA - 01 - POO e Estrutura de Dados.pptx
PPTX
Redes de Computadroes Camada de aplicação
PPT
Redes de computadores e a Internet Kurose
PPTX
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
PPTX
Capítulo 7 - Estruturas de dados do tipo árvore
PPTX
Capítulo 5 - Estrutura de dados do tipo lista de prioridades
PPTX
Capítulo 3 - Estruturas de dados do tipo listas
PPTX
Capítulo 6 - Estrutura de dados do tipo tabela hashing
AULA - 01 - POO e Estrutura de Dados.pptx
Redes de Computadroes Camada de aplicação
Redes de computadores e a Internet Kurose
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
Capítulo 7 - Estruturas de dados do tipo árvore
Capítulo 5 - Estrutura de dados do tipo lista de prioridades
Capítulo 3 - Estruturas de dados do tipo listas
Capítulo 6 - Estrutura de dados do tipo tabela hashing
Anúncio

Capítulo 8 - Algoritmos em grafos com Pseudocódigos e em Java

  • 1. © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 1 © 2011 Pearson. Todos os direitos reservados. slide 1 Capítulo 8 – Algoritmos em grafos © 2011 Pearson. Todos os direitos reservados. slide 1
  • 2. © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 2 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 2 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 2 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 2 © 2011 Pearson. Todos os direitos reservados. slide 2 Conexão entre elementos é um problema comum em computação. Situações que podem ser representadas pela teoria dos grafos: a malha de estradas que ligam cidades; o conjunto de links de um website; os circuitos da placa-mãe de um computador; os cômodos de uma casa e as portas que os interligam; e a distribuição entre disciplinas e professores de uma escola.
  • 3. © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 3 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 3 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 3 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 3 © 2011 Pearson. Todos os direitos reservados. slide 3 Conceitos de grafos Um grafo G é formado pelo par de conjuntos V e E, sendo V o conjunto de vértices de G, e E o conjunto de arestas de G. Uma aresta e ∈ E(G) é representada por e = (u, v), e sempre interliga dois vértices quaisquer u e v de V. Dois vértices ligados por uma aresta são denominados adjacentes. Notações utilizadas para denotar um grafo: G = (V, E) ou G = (V(G), E(G)) ou G(V, E).
  • 4. © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 4 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 4 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 4 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 4 © 2011 Pearson. Todos os direitos reservados. slide 4 A representação geométrica dos grafos é feita marcando pontos no plano para os vértices, e uma linha ligando dois pontos para a aresta. Quando os vértices são nomeados por letras, deve ser feito um mapeamento de cada nome para um número correspondente i, sendo 1 ≤ i ≤ n, n ∈ N. Exemplos de grafos
  • 5. © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 5 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 5 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 5 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 5 © 2011 Pearson. Todos os direitos reservados. slide 5 Laços, arestas múltiplas e multigrafo Quando um grafo tem arestas do tipo e = (u, u), a aresta é chamada laço. Se há mais de uma aresta entre o mesmo par de vértices, são arestas paralelas ou arestas múltiplas. Um grafo com arestas paralelas é denominado multigrafo. (a) Grafo com laços; (b) Grafo com arestas múltiplas (multigrafo)
  • 6. © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 6 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 6 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 6 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 6 © 2011 Pearson. Todos os direitos reservados. slide 6 Grafo trivial e grafo simples Um grafo com apenas um vértice é chamado trivial. Se não possuir laço ou aresta múltipla, é chamado simples. Grafo completo Um grafo G é chamado completo quando existe uma aresta para cada par de vértices distintos de G. Grafos completos
  • 7. © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 7 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 7 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 7 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 7 © 2011 Pearson. Todos os direitos reservados. slide 7 Grafo regular Em um grafo G(V, E), o grau de um vértice v ∈ V, denotado por g(v), é o número de arestas que incidem. Se todos os vértices de um grafo G têm mesmo grau, é chamado grafo regular de grau r. Subgrafo Um grafo G(V, E), H(V’,E’) é um subgrafo de G se V’ ⊆ V e E’ ⊆ E. (a) Grafo G; (b) e (c) Subgrafos de G
  • 8. © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 8 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 8 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 8 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 8 © 2011 Pearson. Todos os direitos reservados. slide 8 Grafo bipartido Um grafo G(V,E) é bipartido quando seu conjunto de vértices V pode ser particionado em dois subconjuntos V1 e V2, tal que toda aresta de G faz a ligação de um vértice de V1 a um vértice de V2. (a) Grafo bipartido; (b) Grafo bipartido completo
  • 9. © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 9 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 9 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 9 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 9 © 2011 Pearson. Todos os direitos reservados. slide 9 Caminho simples, trajeto e ciclos Uma sequência de vértices v1, v2, ..., vj, tal que (vi ,vi+1) ϵ E(G), 1 ≤ i ≤ |j−1|, é chamada caminho de v1 a vj. O número de arestas do caminho é o comprimento. Se todos os vértices são distintos, é um caminho simples ou elementar. Se as arestas forem distintas, é um trajeto. Um ciclo é um caminho v1,v2,…,vj,vj+1, sendo v1 = vj+1 e k ≥ 3. Um grafo sem ciclos é chamado acíclico.
  • 10. © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 10 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 10 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 10 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 10 © 2011 Pearson. Todos os direitos reservados. slide 10 Grafo conexo e desconexo Um grafo G é conexo se existe um caminho para cada par de vértices de G. Caso contrário, é desconexo. O grafo desconexo tem partes conexas, as componentes. Um grafo conexo possui uma única componente conexa enquanto um desconexo possui várias componentes conexas. (a) Grafo conexo; (b) Grafo desconexo
  • 11. © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 11 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 11 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 11 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 11 © 2011 Pearson. Todos os direitos reservados. slide 11 Grafos isomorfos Dois grafos G1(V1, E1) e G2(V2, E2), com |V1|=|V2|= n, são isomorfos entre si quando existe uma função unívoca f: V1 → V2, tal que (u,v) ∈ E1 sse (f(u), f(v)) ∈ E2, para todo u, v ∈ E1 (Szwarcfiter et al., 1986).
  • 12. © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 12 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 12 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 12 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 12 © 2011 Pearson. Todos os direitos reservados. slide 12 Grafo ponderado Um grafo ponderado tem peso nas arestas. Esses pesos podem representar custos ou distâncias, por exemplo.
  • 13. © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 13 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 13 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 13 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 13 © 2011 Pearson. Todos os direitos reservados. slide 13 Dígrafo Um grafo direcionado D(V,E), ou dígrafo, possui um conjunto não vazio de vértices V e um conjunto de arestas E, tal que para toda aresta (u,v) ∈ E existe uma única direção de u para v.
  • 14. © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 14 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 14 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 14 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 14 © 2011 Pearson. Todos os direitos reservados. slide 14 Seja D(V,E) um dígrafo e um vértice v ∈ V. O grau de entrada de v é o número de arestas que incidem em v. O grau de saída é o número de arestas que partem de v. Um vértice com grau de entrada nulo é chamado fonte e um vértice com grau de saída zero é chamado sumidouro.
  • 15. © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 15 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 15 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 15 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 15 © 2011 Pearson. Todos os direitos reservados. slide 15 Árvores Um grafo T(V,E) que não possui ciclos e é conexo é chamado árvore. Características: •Seja v ∈ V, se o grau de v for menor ou igual a 1, v é uma folha. Se for maior que 1, v é um vértice interno. •Uma árvore T com n vértices possui n −1 arestas. •Um grafo G é uma árvore somente se existir um único caminho entre cada par de vértices de G. •Um conjunto de árvores é chamado floresta.
  • 16. © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 16 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 16 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 16 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 16 © 2011 Pearson. Todos os direitos reservados. slide 16 Árvores com seis vértices
  • 17. © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 17 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 17 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 17 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 17 © 2011 Pearson. Todos os direitos reservados. slide 17 Dado um grafo G(V(G), E(G)), denomina-se subgrafo gerador o grafo H(V(H), E(H)) que é subgrafo de G, tal que V(G) = V(H). Se o subgrafo H for uma árvore, então é chamado árvore geradora. (a) Grafo G; (b) Subgrafo gerador; (c) Árvore geradora
  • 18. © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 18 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 18 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 18 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 18 © 2011 Pearson. Todos os direitos reservados. slide 18 Representação de grafos Um grafo G(V,E) com |V|= n pode ser representado adequadamente por meio de matrizes ou listas. Matriz de adjacências Dado um grafo G(V,E), uma matriz de adjacências M é formada por n linhas e n colunas, sendo n o número de vértices do grafo. Preenche-se como:
  • 19. © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 19 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 19 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 19 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 19 © 2011 Pearson. Todos os direitos reservados. slide 19 Matriz de adjacências para um grafo não direcionado A matriz de adjacências é simétrica para grafos não direcionados.
  • 20. © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 20 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 20 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 20 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 20 © 2011 Pearson. Todos os direitos reservados. slide 20 Matriz de incidências Segundo Rabuske (1992), dado um grafo G(V,E) de n vértices e m arestas, a matriz de incidência de G, denotada por Mnxm, é definida por: Em grafo orientado, a matriz é definida como:
  • 21. © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 21 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 21 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 21 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 21 © 2011 Pearson. Todos os direitos reservados. slide 21 Lista de adjacências Consiste em um vetor Adj com n =|V| entradas, uma para cada vértice do grafo. Cada entrada Adj[v] possui uma lista encadeada de vértices adjacentes a v em G. Não existe uma ordem dos vértices nessa lista. Compõe-se de n listas de 2m elementos, onde m é o número de arestas. O espaço utilizado é O(n + m).
  • 22. © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 22 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 22 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 22 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 22 © 2011 Pearson. Todos os direitos reservados. slide 22 Algoritmos de busca Algoritmo de busca em profundidade Atende ao critério de escolher o vértice mais recentemente alcançado dentre os vários marcados e incidentes a uma aresta ainda não explorada. Análise da busca em profundidade Procura acessar todos os vértices em um grafo G = (V, E), onde |V|= n e |E|= m. Para acessar os possíveis vértices, varre a lista de arestas de cada vértice do grafo e com isso gasta tempo O(n + m).
  • 23. © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 23 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 23 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 23 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 23 © 2011 Pearson. Todos os direitos reservados. slide 23 Algoritmo de busca em largura Escolhe o vértice alcançado por último dentre os vários marcados e incidentes a uma aresta não explorada. Tem esse nome por descobrir todos os vértices a uma distância k de s, antes de descobrir os que estão à distância k+1.
  • 24. © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 24 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 24 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 24 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 24 © 2011 Pearson. Todos os direitos reservados. slide 24 Análise da busca de profundidade Primeiro, o algoritmo inicializa todos os vértices em tempo O(V). Quando vão sendo descobertos, são colocados em uma fila. Inserção e remoção na fila gastam tempo constante, O(1). Todos os vértices são enfileirados e retirados e o tempo total gasto é O(V). Todas as listas de todos os vértices são analisadas, em tempo proporcional a O(E). Portanto, o tempo de execução da busca em largura é O(V + E).
  • 25. © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 25 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 25 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 25 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 25 © 2011 Pearson. Todos os direitos reservados. slide 25 Algoritmo do caminho mínimo Determinar o mais curto (com menor peso) em um dígrafo com pesos nas arestas a partir de um vértice de origem informado, sendo os pesos das arestas maiores ou iguais a zero. Algoritmo de Dijkstra: mantém um conjunto C com vértices cujo valor do caminho mínimo em relação ao de origem v já foi determinado. Cada vértice possui uma distância em relação à origem, armazenada em um vetor dist, com tamanho n=|V|.
  • 26. © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 26 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 26 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 26 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 26 © 2011 Pearson. Todos os direitos reservados. slide 26 O algoritmo trabalha para escolher um vértice i da lista de prioridades mínima lista = V − C, tal que a estimativa de distância de i à origem é mínima. Em seguida a distância dos vértices vizinhos a i é recalculada, se for o caso; para isso, as arestas passam por um processo de relaxamento. Relaxar uma aresta (i,j) é testar a possibilidade de melhorar o menor caminho encontrado para j pela passagem através do vértice i e, com isso, atualizar a distância mínima que j possui.
  • 27. © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 27 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 27 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 27 © 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 27 © 2011 Pearson. Todos os direitos reservados. slide 27 Análise do algoritmo de caminho mínimo O tempo de execução do algoritmo Dijkstra é determinado pela forma como a lista de prioridades mínima é implementada. Na lista como heap binário mínimo cada operação de inserção e remoção custa no pior caso O(logV), onde V representa o número de vértices do grafo. O algoritmo é executado enquanto a lista de prioridade não for vazia. O custo para construção de um heap binário é O(V), então o tempo de execução do algoritmo é: V ⋅ (logV + E + V) = V ⋅ logV + V ⋅ E + V ⋅ V = O(V2).