sin5013 análise de algoritmos e estruturas de dados - grafos€¦ · grafos – conceitos básicos...
TRANSCRIPT
SIN5013Análise de Algoritmos e Estruturas de
Dados
Grafos
Prof. Luciano Antonio Digiampietri(baseado no material do prof. Norton Trevisan Roman)
Grafos – Conceitos Básicos
O que é um grafo?
Grafos são estruturas matemáticas (ou modelos matemáticos)que permitem codificar relacionamentos entre pares de objetos
Os objetos são os vértices do grafoOs relacionamentos são suas arestas
Grafos – Conceitos Básicos
O que é um grafo?
Grafos são estruturas matemáticas (ou modelos matemáticos)que permitem codificar relacionamentos entre pares de objetos
Os objetos são os vértices do grafoOs relacionamentos são suas arestas
Grafos – Conceitos Básicos
São representados comoum conjunto de nós(vértices) conectados par apar por linhas (arestas)
v1
v2
v3
v4
v5
Grafos – Conceitos Básicos
Podem ser utilizados pararepresentar uma infinidade desituações/problemas
Podem modelar conexões emredes sociaisLabirintosRotas de metrô
Grafos – Conceitos Básicos
Podem ser utilizados pararepresentar uma infinidade desituações/problemasPodem modelar conexões emredes sociais
LabirintosRotas de metrô
©1
©2
©3
©4
©5
Grafos – Conceitos Básicos
Podem ser utilizados pararepresentar uma infinidade desituações/problemasPodem modelar conexões emredes sociaisLabirintos
Rotas de metrô
Grafos – Conceitos Básicos
Podem ser utilizados pararepresentar uma infinidade desituações/problemasPodem modelar conexões emredes sociaisLabirintosRotas de metrô
Grafos – Conceitos Básicos
Alguns grafos são dirigidos (oudirecionados)
As relações representadaspelas arestas têm sentidodefinidoAs arestas só podem serseguidas em uma única direção
v1
v2
v3
v4
v5
Grafos – Conceitos Básicos
Em grafos dirigidos, as arestassão pares ordenados de vértices
Saindo de um em direção aooutroMesmo que ambos sejam omesmo vértice (auto-laços -self-loop)
v1
v2
v3
v4
v5
Grafos – Conceitos Básicos
Outros são não dirigidos (ou nãodirecionados)
As relações representadaspelas arestas não têm sentidodefinidoAs arestas podem ser seguidasem qualquer direção
v1
v2
v3
v4
v5
Grafos – Conceitos Básicos
Podemos pensar num grafo nãodirigido como um grafo dirigidocom arestas de sentido duploAs arestas são pares nãoordenados de vérticesSelf-loops não são permitidos
v1
v2
v3
v4
v5
Grafos – Conceitos Básicos
Podemos pensar num grafo nãodirigido como um grafo dirigidocom arestas de sentido duploAs arestas são pares nãoordenados de vérticesSelf-loops não são permitidos
v1
v2
v3
v4
v5
Grafos – Conceitos Básicos
Se (u, v) é uma aresta no grafo,então dizemos que v é adjacentea u
Alternativamente, que v évizinho de u
(u, v) significa que a aresta sai deu e entra em v
v1
v2
v3
v4
v5
Grafos – Conceitos Básicos
Em grafos não dirigidos, a relaçãode adjacência é simétrica(u, v)⇔ (v , u)
Já em dirigidos, nãonecessariamente há tal simetria
Há (v1, v2), mas não (v2, v1)
v1
v2
v3
v4
v5
Grafos – Conceitos Básicos
Em grafos não dirigidos, a relaçãode adjacência é simétrica(u, v)⇔ (v , u)
Já em dirigidos, nãonecessariamente há tal simetria
Há (v1, v2), mas não (v2, v1)
v1
v2
v3
v4
v5
Grafos – Conceitos Básicos
Em grafos não dirigidos, o graude um vértice é o número dearestas que incidem nele
gr(v1) = gr(v2) = gr(v5) = 2gr(v3) = 3gr(v4) = 1
v1
v2
v3
v4
v5
Grafos – Conceitos Básicos
Em grafos não dirigidos, o graude um vértice é o número dearestas que incidem nele
gr(v1) = gr(v2) = gr(v5) = 2gr(v3) = 3gr(v4) = 1
v1
v2
v3
v4
v5
Grafos – Conceitos Básicos
Já em grafos dirigidos, o grau deum vértice é o número de arestasque saem do vértice mais onúmero de arestas que chegamnele
gr(v1) = gr(v2) = gr(v5) = 2gr(v3) = gr(v4) = 3
v1
v2
v3
v4
v5
Grafos – Conceitos Básicos
Já em grafos dirigidos, o grau deum vértice é o número de arestasque saem do vértice mais onúmero de arestas que chegamnele
gr(v1) = gr(v2) = gr(v5) = 2gr(v3) = gr(v4) = 3
v1
v2
v3
v4
v5
Grafos – Conceitos Básicos
No caso de grafos dirigidos, hádois tipos de graus de vértice:
Grau de saída: número dearestas que saem do vérticeGrau de entrada: número dearestas que chegam no vértice
v1
v2
v3
v4
v5
Grafos – Conceitos Básicos
No caso de grafos dirigidos, hádois tipos de graus de vértice:
Grau de saída: número dearestas que saem do vérticeGrau de entrada: número dearestas que chegam no vértice
v1
v2
v3
v4
v5
Grafos – Conceitos Básicos
Um caminho de um vértice x aum vértice y é uma sequência devértices em que, para cadavértice, do primeiro ao penúltimo,há uma aresta ligando essevértice ao próximo na sequência.
v1
v2
v3
v4
v5
Grafos – Conceitos Básicos
No caso ao lado, alguns caminhossão:
(v1, v2, v3, v5)(v4, v5)(v1, v2, v3)(v4, v4, v5)
v1
v2
v3
v4
v5
Grafos – Conceitos Básicos
No caso ao lado, alguns caminhossão:(v1, v2, v3, v5)(v4, v5)(v1, v2, v3)(v4, v4, v5)
v1
v2
v3
v4
v5
Grafos – Conceitos Básicos
O comprimento de um caminho éo número de arestas nele
compr(v1, v2, v3, v5) = 3compr(v4, v5) = 1compr(v1, v2, v3) = 2compr(v4, v4, v5) = 2
v1
v2
v3
v4
v5
Grafos – Conceitos Básicos
O comprimento de um caminho éo número de arestas nele
compr(v1, v2, v3, v5) = 3compr(v4, v5) = 1compr(v1, v2, v3) = 2compr(v4, v4, v5) = 2
v1
v2
v3
v4
v5
Grafos – Conceitos Básicos
Um ciclo acontece quando, apartir de um determinado vértice,pudermos percorrer algumcaminho que nos leve a essemesmo vértice
Em grafos dirigidos, o caminhodeve conter pelo menos umaaresta
v1
v2
v3
v4
v5
tamanho 3
tamanho 1
Grafos – Conceitos Básicos
Em grafos não dirigidos, um ciclodeve conter pelo menos 3 arestasGrafos em que há ao menos umciclo são chamados de cíclicosGrafos em que não há ciclos sãochamados de acíclicos
v1
v2
v3
v4
v5
tamanho 3
Grafos – Conceitos Básicos
Um grafo não direcionado éconexo (ou conectado) se cadapar de vértices nele estiverconectado por um caminho
O grafo ao lado é conexoAgora é desconexoE continua assim
v1
v2
v3
v4
v5
Grafos – Conceitos Básicos
Um grafo não direcionado éconexo (ou conectado) se cadapar de vértices nele estiverconectado por um caminho
O grafo ao lado é conexo
Agora é desconexoE continua assim
v1
v2
v3
v4
v5
Grafos – Conceitos Básicos
Um grafo não direcionado éconexo (ou conectado) se cadapar de vértices nele estiverconectado por um caminho
O grafo ao lado é conexoAgora é desconexo
E continua assim
v1
v2
v3
v4
v5
Grafos – Conceitos Básicos
Um grafo não direcionado éconexo (ou conectado) se cadapar de vértices nele estiverconectado por um caminho
O grafo ao lado é conexoAgora é desconexoE continua assim
v1
v2
v3
v4
v5
Grafos – Conceitos Básicos
Um grafo dirigido é fortementeconexo se existir um caminhoentre qualquer par de vértices nografo
Contém um caminho direto de upara v e um caminho direto vpara u para cada par devértices (u, v)
v1
v2
v3
v4
v5
Grafos – Conceitos Básicos
Um grafo dirigido é conexo sepossuir um caminho de u para v ,ou um caminho de v para u, paracada par de vértices (u, v)
v1
v2
v3
v4
v5
Grafos – Conceitos Básicos
Um grafo dirigido é fracamenteconexo se a substituição de todasas suas arestas por arestasnão-direcionadas produz umgrafo conexo.
Ex: não há caminho de v4 → v3
nem de v3 → v4
v1
v2
v3
v4
v5
Grafos – Conceitos Básicos
Grafos também podem serponderados
Caso em que possuem pesosassociados às suas arestasEsses pesos podem representarcustos, distâncias etc.
v1
v2
v3
v4
v5
Grafos – Conceitos Básicos
Grafos também podem serponderados
Caso em que possuem pesosassociados às suas arestasEsses pesos podem representarcustos, distâncias etc.
v1
v2
v3
v4
v5
12
-2
4
40
8
Grafos – Conceitos Básicos
Por fim, temos um tipo jáconhecido de grafo...
A árvore
Grafo acíclicoConexoNão-dirigido
Grafos – Conceitos Básicos
Por fim, temos um tipo jáconhecido de grafo...A árvore
Grafo acíclicoConexoNão-dirigido
v1 v2
v3
v4
v5
v6
Grafos – Representação
Como podemos representar um grafo?
Como um mapeamento de cada nó à lista de nós aos quaisele está conectado
Grafos – Representação
Como podemos representar um grafo?Como um mapeamento de cada nó à lista de nós aos quaisele está conectado
Grafos – Representação
Como podemos representar um grafo?Como um mapeamento de cada nó à lista de nós aos quaisele está conectado
v1
v2
v3
v4
v5
Não dirigido
Grafos – Representação
Como podemos representar um grafo?Como um mapeamento de cada nó à lista de nós aos quaisele está conectado
v1
v2
v3
v4
v5
Não dirigido
Nó Conectado av1 v2, v3
v2 v1, v3, v4
v3 v1, v2, v5
v4 v2, v5
v5 v3, v4
Grafos – Representação
Como podemos representar um grafo?Como um mapeamento de cada nó à lista de nós aos quaisele está conectado
v1
v2
v3
v4
v5
Dirigido
Grafos – Representação
Como podemos representar um grafo?Como um mapeamento de cada nó à lista de nós aos quaisele está conectado
v1
v2
v3
v4
v5
Dirigido
Nó Conectado av1 v2
v2 v3
v3 v1, v5
v4 v2, v4
v5 v4
Grafos – Representação
Representação computacional de grafos
Existem duas maneiras usuais de representar grafos:
Matrizes de adjacênciaListas de adjacência
Grafos – Representação
Representação computacional de grafosExistem duas maneiras usuais de representar grafos:
Matrizes de adjacênciaListas de adjacência
Grafos – Matrizes de Adjacências
Uma matriz de adjacências A de um grafo com n vértices éuma matriz n × n de bits, em que:
A[i, j] = 1 se houver uma aresta indo do vértice i para ovértice j no grafo.A[i, j] = 0 se não houver aresta indo de i para j
Grafos – Matrizes de Adjacências
Uma matriz de adjacências A de um grafo com n vértices éuma matriz n × n de bits, em que:
A[i, j] = 1 se houver uma aresta indo do vértice i para ovértice j no grafo.A[i, j] = 0 se não houver aresta indo de i para j
Grafos – Matrizes de Adjacências
v1
v2
v3
v4
v5
v1 v2 v3 v4 v5
v1 0 1 1 0 0v2 1 0 1 1 0v3 1 1 0 0 1v4 0 1 0 0 1v5 0 0 1 1 0
Grafos – Matrizes de Adjacências
E se o grafo for ponderado?
Não usamos bits.
v1 v2 v3 v4 v5
v1 0 2 12 0 0v2 2 0 4 3 0v3 12 4 0 0 40v4 0 3 0 0 8v5 0 0 40 8 0
Grafos – Matrizes de Adjacências
E se o grafo for ponderado?
Não usamos bits.
v1
v2
v3
v4
v5
12
2
4
40
8
3
v1 v2 v3 v4 v5
v1 0 2 12 0 0v2 2 0 4 3 0v3 12 4 0 0 40v4 0 3 0 0 8v5 0 0 40 8 0
Grafos – Matrizes de Adjacências
E se o grafo for ponderado? Não usamos bits.
v1
v2
v3
v4
v5
12
2
4
40
8
3
v1 v2 v3 v4 v5
v1 0 2 12 0 0v2 2 0 4 3 0v3 12 4 0 0 40v4 0 3 0 0 8v5 0 0 40 8 0
Grafos – Matrizes de Adjacências
E se o grafo for ponderado? Não usamos bits.
Cuidado!
Como diferenciar não arestade um valor válido (como0)?Deve-se definir um padrão
v1 v2 v3 v4 v5
v1 0 2 12 0 0v2 2 0 4 3 0v3 12 4 0 0 40v4 0 3 0 0 8v5 0 0 40 8 0
Grafos – Matrizes de Adjacências
E se o grafo for ponderado? Não usamos bits.
Cuidado!Como diferenciar não arestade um valor válido (como0)?
Deve-se definir um padrão
v1 v2 v3 v4 v5
v1 0 2 12 0 0v2 2 0 4 3 0v3 12 4 0 0 40v4 0 3 0 0 8v5 0 0 40 8 0
Grafos – Matrizes de Adjacências
E se o grafo for ponderado? Não usamos bits.
Cuidado!Como diferenciar não arestade um valor válido (como0)?Deve-se definir um padrão
v1 v2 v3 v4 v5
v1 0 2 12 0 0v2 2 0 4 3 0v3 12 4 0 0 40v4 0 3 0 0 8v5 0 0 40 8 0
Grafos – Matrizes de Adjacências
E se o grafo for dirigido?
v1 v2 v3 v4 v5
v1 0 2 0 0 0v2 0 0 4 0 0v3 12 0 0 0 40v4 0 3 0 0 0v5 0 0 0 8 0
Grafos – Matrizes de Adjacências
E se o grafo for dirigido?
v1
v2
v3
v4
v5
12
2
4
40
8
3
v1 v2 v3 v4 v5
v1 0 2 0 0 0v2 0 0 4 0 0v3 12 0 0 0 40v4 0 3 0 0 0v5 0 0 0 8 0
Grafos – Matrizes de Adjacências
E se o grafo for dirigido?
v1
v2
v3
v4
v5
12
2
4
40
8
3
v1 v2 v3 v4 v5
v1 0 2 0 0 0v2 0 0 4 0 0v3 12 0 0 0 40v4 0 3 0 0 0v5 0 0 0 8 0
Grafos – Listas de Adjacências
A segunda maneira de representar um grafo é por meio deuma lista de adjacências
Grafos – Listas de Adjacências
A segunda maneira de representar um grafo é por meio deuma lista de adjacências
v1
v2
v3
v4
v5
Não dirigido
Grafos – Listas de Adjacências
A segunda maneira de representar um grafo é por meio deuma lista de adjacências
v1
v2
v3
v4
v5
Não dirigido
Nó Conectado av1 v2, v3
v2 v1, v3, v4
v3 v1, v2, v5
v4 v2, v5
v5 v3, v4
Grafos – Listas de Adjacências
A segunda maneira de representar um grafo é por meio deuma lista de adjacências
v1
v2
v3
v4
v5
Dirigido
Grafos – Listas de Adjacências
A segunda maneira de representar um grafo é por meio deuma lista de adjacências
v1
v2
v3
v4
v5
Dirigido
Nó Conectado av1 v2
v2 v3
v3 v1, v5
v4 v2, v4
v5 v4
Grafos – Listas de Adjacências
Uma lista de adjacências de um grafo com n vérticesconsiste de um arranjo de n listas ligadas, uma para cadavértice no grafo.
Para cada vértice u, a lista contém todos os vizinhos de uOu seja, todos os vértices vi para os quais existe uma aresta(u, vi)
Grafos – Listas de Adjacências
Uma lista de adjacências de um grafo com n vérticesconsiste de um arranjo de n listas ligadas, uma para cadavértice no grafo.
Para cada vértice u, a lista contém todos os vizinhos de uOu seja, todos os vértices vi para os quais existe uma aresta(u, vi)
Grafos – Listas de Adjacências
v1
v2
v3
v4
v5
v1
v2
v3
v4
v5
v2 v3
v1 v3 v4
v1 v2 v5
v2 v5
v3 v4
Grafos – Listas de Adjacências
E se o grafo for ponderado?
Armazenamos os pesos nas lista.
Grafos – Listas de Adjacências
E se o grafo for ponderado?
Armazenamos os pesos nas lista.
v1
v2
v3
v4
v5
12
2
4
40
8
3
Grafos – Listas de Adjacências
E se o grafo for ponderado? Armazenamos os pesos nas lista.
v1
v2
v3
v4
v5
12
2
4
40
8
3
v1
v2
v3
v4
v5
v2, 2 v3, 12
v1, 2 v3, 4 v4, 3
v1, 12 v2, 4 v5, 40
v2, 3 v5, 8
v3, 40 v4, 8
Grafos – Listas de Adjacências
E se o grafo for dirigido?
Grafos – Listas de Adjacências
E se o grafo for dirigido?
v1
v2
v3
v4
v5
12
2
4
40
8
3
Grafos – Listas de Adjacências
E se o grafo for dirigido?
v1
v2
v3
v4
v5
12
2
4
40
8
3
v1
v2
v3
v4
v5
v2, 2
v3, 4
v1, 12 v5, 40
v2, 3
v4, 8
Grafos – Representação
E quando usamos uma ou outra representação?
Vai depender da densidade do grafo
Se denso (quando possui muitas arestas em relação aonúmero de vértices) ou esparso (com poucas arestas)
Vai depender das operações que queremos executar
Grafos – Representação
E quando usamos uma ou outra representação?Vai depender da densidade do grafo
Se denso (quando possui muitas arestas em relação aonúmero de vértices) ou esparso (com poucas arestas)
Vai depender das operações que queremos executar
SIN5013Análise de Algoritmos e Estruturas de
Dados
Grafos
Prof. Luciano Antonio Digiampietri(baseado no material do prof. Norton Trevisan Roman)