SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos...

77
SIN5013 Análise de Algoritmos e Estruturas de Dados Grafos Prof. Luciano Antonio Digiampietri (baseado no material do prof. Norton Trevisan Roman)

Transcript of SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos...

Page 1: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

SIN5013Análise de Algoritmos e Estruturas de

Dados

Grafos

Prof. Luciano Antonio Digiampietri(baseado no material do prof. Norton Trevisan Roman)

Page 2: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 3: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 4: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 5: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

Grafos – Conceitos Básicos

Podem ser utilizados pararepresentar uma infinidade desituações/problemas

Podem modelar conexões emredes sociaisLabirintosRotas de metrô

Page 6: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 7: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

Grafos – Conceitos Básicos

Podem ser utilizados pararepresentar uma infinidade desituações/problemasPodem modelar conexões emredes sociaisLabirintos

Rotas de metrô

Page 8: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

Grafos – Conceitos Básicos

Podem ser utilizados pararepresentar uma infinidade desituações/problemasPodem modelar conexões emredes sociaisLabirintosRotas de metrô

Page 9: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 10: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 11: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 12: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 13: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 14: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 15: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 16: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 17: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 18: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 19: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 20: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 21: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 22: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 23: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 24: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 25: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 26: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 27: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 28: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 29: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 30: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 31: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 32: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 33: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 34: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 35: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 36: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 37: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 38: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 39: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

Grafos – Conceitos Básicos

Por fim, temos um tipo jáconhecido de grafo...

A árvore

Grafo acíclicoConexoNão-dirigido

Page 40: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 41: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

Grafos – Representação

Como podemos representar um grafo?

Como um mapeamento de cada nó à lista de nós aos quaisele está conectado

Page 42: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

Grafos – Representação

Como podemos representar um grafo?Como um mapeamento de cada nó à lista de nós aos quaisele está conectado

Page 43: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 44: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 45: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 46: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 47: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

Grafos – Representação

Representação computacional de grafos

Existem duas maneiras usuais de representar grafos:

Matrizes de adjacênciaListas de adjacência

Page 48: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

Grafos – Representação

Representação computacional de grafosExistem duas maneiras usuais de representar grafos:

Matrizes de adjacênciaListas de adjacência

Page 49: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 50: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 51: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 52: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 53: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 54: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 55: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 56: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 57: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 58: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 59: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 60: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 61: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

Grafos – Listas de Adjacências

A segunda maneira de representar um grafo é por meio deuma lista de adjacências

Page 62: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 63: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 64: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 65: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 66: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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)

Page 67: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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)

Page 68: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 69: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

Grafos – Listas de Adjacências

E se o grafo for ponderado?

Armazenamos os pesos nas lista.

Page 70: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 71: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 72: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

Grafos – Listas de Adjacências

E se o grafo for dirigido?

Page 73: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

Grafos – Listas de Adjacências

E se o grafo for dirigido?

v1

v2

v3

v4

v5

12

2

4

40

8

3

Page 74: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 75: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 76: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

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

Page 77: SIN5013 Análise de Algoritmos e Estruturas de Dados - Grafos€¦ · Grafos – Conceitos Básicos Um ciclo acontece quando, a partir de um determinado vértice, pudermos percorrer

SIN5013Análise de Algoritmos e Estruturas de

Dados

Grafos

Prof. Luciano Antonio Digiampietri(baseado no material do prof. Norton Trevisan Roman)