introdução à teoria dos grafos - edmilson campos · de são petersburgo, sendo este o primeiro...

26
IFRN Introdução à Teoria dos Grafos Prof. Edmilson Campos

Upload: truonglien

Post on 13-Oct-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

IFRN Introdução à Teoria dos Grafos

Prof. Edmilson Campos

Conteúdo

• Histórico

• Aplicações

• Definições

• Grafo

• Dígrafo

• Ordem, adjacência e grau

• Laço

• Tipos de grafos

• Representação de Grafos

• Matriz de adjacências e de custos

• Lista de arestas e de adjacências

• Matriz de incidências

• Listas de vértices e arestas

Histórico

• Problema das Pontes de Königsberg

• No século 18, na cidade de Königsberg (antiga Prússia), um

conjunto de sete pontes cruzavam o rio Pregel. Elas conectavam

duas ilhas entre si (A e D) e as ilhas com as margens (C e B).

• Os habitantes perguntavam: É possível cruzar as sete pontes

numa caminhada contínua sem passar duas vezes por qualquer

uma delas?

• Em 1736, Euler apresenta a solução deste problema na Academia

de São Petersburgo, sendo este o primeiro trabalho sobre Grafos.

Aplicações

• Ferramenta simples e poderosa para a construção de

modelos e resolução de diversos problemas

• Processos industriais

• Tática e logística

• Sistemas de comunicação

• Redes de computadores

• Engenharia

• Computação

• Jogos

Aplicações

• DESAFIO:

• Ligar água, luz e telefone em cada uma das 3 casas, sem haver

cruzamento de ligações.

• As ligações podem ser em linhas retas ou não, podem cruzar atrás

das casas, mas é importante salientar, as ligações não podem ser

cruzadas.

Definições

• Grafo

• Um grafo G(V, A) é definido pelos conjuntos V e A, onde:

• V é um conjunto não vazio: Vértices, Nodos ou Nós do grafo

• A é um conjunto de pares ordenados a=(v,w) com v e w pertencente a

V: Arestas, Linhas ou Ramos do grafo

• Exemplo

• V = {p | p é uma pessoa}

• A = {(v,w) | v é amiga de w}

• V = {Maria, José, Ana, Luiz}

• A = {(Maria, José), (Maria, Ana), (José, Luiz), (José, Ana)}

Maria José

Ana Luiz

Dígrafo

• Dígrafo

• Grafo orientado

• Exemplo

• V = {p | p é uma pessoa}

• A = {(v,w) | v é pai ou mãe de w}

João

Maria Joana Paulo

Ana

Ordem e Adjacência

• Ordem

• É o número de vértices do grafo

• Ordem(G1) = 4

• Adjacência • Dois vértices - v e w de um grafo - são adjacentes se há uma aresta

a=(v,w) em G

• Ex: José e Luiz em G1

• Duas arestas são adjacentes se incidem sobre o mesmo vértice

• Ex: (Ana, Maria) e (Ana, José) em G1

Maria José

Ana Luiz

G1

Graus • Grau de um vértice

• É o número de arestas incidentes no vértice

• Grau(b)=3

• Grau de saída (outdegree)

• Número de arestas que têm ponta inicial no vértice

• Gs(b) = 1

• Grau de entrada (indegree)

• Número de arestas têm ponta final no vértice

• Ge(b) = 2

G2

a

b c

d e

G3

a

b c

e

Vértice Isolado, Laço, Arestas Paralelas

• Vértice isolado

• É aquele que possui grau igual a zero

• Ex: Vértice e

• Laço

• É uma aresta do tipo a=(v,v)

• Ex: Aresta a=(d,d)

• Arestas paralelas

• Possuem os mesmos vértices terminais: ci=(v,w) e cj=(v,w)

G2

a

b c

d e

G3

a

c

d e

1

2

Multigrafo, Grafos Simples e Completo

• Multigrafo

• É o grafo que possui laços e/ou arestas paralelas

• Grafo simples

• Não possui laços e/ou arestas paralelas

• Grafo completo

• Um grafo é dito completo quando cada par distinto de vértice é

adjacente

• Kn = grafo completo de ordem n, possui m arestas, onde:

a

b c

d

1

2

k1 k2 k3 k4

!

( 2)!2!

nm

n

Grafo Complementar

• Grafo Complementar

• Um grafo G é complementar de G, se possuir a mesma ordem de

G e se todas arestas (vi, vj) pertencentes a G, não pertencerem a

G.

G G

Grafo Bipartido

• Grafo bipartido

• Um grafo é considerado bipartido quando seu conjunto de vértices

V puder ser particionado em dois subconjuntos V1 e V2, tal que

toda aresta de G une um vértice de V1 a outro de V2

V1

V2

21 VV 21 VVV

Grafo Rotulado

• Grafo rotulado

• Grafo em que cada vértice está associado a um rótulo

SP (Pão Paulo)

CE (Fortaleza) PA (Belém)

RN (Natal)

Grafo Valorado

• 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

SP

CE PA

RN 1850

1500

900

1900 2100

Subgrafo

• Subgrafo

• Um grafo Gs(Vs, As) é dito ser subgrafo de G(V,A) se Vs está

contido em V e se As está contido em A

Representação de Grafos

• Graficamente, a forma mais intuitiva de representar um

grafo é usando do círculos e linhas.

• O grafo pode ser representado de diversas maneiras:

• Matriz de adjacências

• Matriz de custos

• Lista de arestas

• Lista de adjacências

• Matriz de incidências

• Listas de vértices e arestas

• Dado um grafo G(V, E):

• A matriz de adjacência A=[aij] é uma matriz n x n tal que:

Matriz de adjacências

v1

v2

v3

v4

contrário caso ,0

se ,1 E),v(va jiij

v1 v2 v3 v4

v1 0 1 1 0

v2 1 0 0 1

v3 1 0 0 1

v4 0 1 1 0

Matriz de adjacências

v1

v4

v2

v3

• Representação de laços:

• Diagonal principal = 1

• Representação de arestas paralelas:

• Utilizar o número de arestas, ao invés de um

• No grafo não direcionado, a matriz é sempre simétrica

(50% espaço)

v1 v2 v3 v4

v1 1 1 0 1

v2 0 0 0 0

v3 1 1 0 0

v4 0 0 2 0

Matriz de custos

• Dado um grafo simples valorado G(V, E):

• Pode ser representado por uma matriz de custos W=[wij],

de ordem n x n, onde:

v1 v2

v3

30

40 50

v1 v2 v3

v1 0 30 50

v2 30 0 40

v3 50 40 0

contrário caso , ou 0

E)v,(v se aresta, da custo jiijw

Lista de arestas

• É uma forma eficiente de para representar grafos

esparsos utilizando-se duas listas de vértices, onde a

primeira contém os inícios das arestas, e a segunda, os

respectivos términos.

• Dois vetores g(início) e h(término)

• g={v1,v2,v2,v3,v3,v4}

• h={v2,v3,v5,v4,v5,v5}

• Dificuldade de representação de grafos valorados

v1

v2

v4

v5

v3

Lista de adjacências

v2

v1

v4

v3 5

30

15

20

10

4

3

2

1 2/10 3/5

4/20 null

2/15

null

3/30

null

null

• Na lista de adjacências, para cada vértice é armazenada

uma lista com todos os seus sucessores

• Um vértice y, em um grafo, é chamado sucessor de x, se

existe uma aresta de x para y

• A implementação pode utilizar uma lista de vértices (vetor

de tamanho n), onde cada elemento referencia uma lista

de adjacentes

v1 v2 v3

v2 v4

v3 -

v4 v2 v3

Matriz de incidências

• Dado um grafo G(V, E), com n vértices e m arestas:

• A matriz de incidência B=[bij] é uma matriz n x m tal que:

contrário caso 0,

e de terminal vértice ofor v se 1, jiijb

v2

v1

v4

v3

c1

c2

c3

c4

c1 c2 c3 c4

v1 1 1 0 0

v2 1 0 0 1

v3 0 1 1 0

v4 0 0 1 1

Matriz de incidências

v2

v1

v4

v3

c1

c2

c3

c4

contrário caso 0,

e de final vértice ofor v se 1,

e de inicial vértice ofor v se 1,

ji

ji

ijb

• Se o grafo G(V, E) for direcionado:

• A matriz de incidência B=[bij] é uma matriz n x m tal que:

c1 c2 c3 c4

v1 -1 1 0 0

v2 1 0 0 -1

v3 0 -1 -1 0

v4 0 0 1 1

Listas de vértices e arestas

vi vj

e1 v1 v2

e2 v1 v3

e3 v3 v4

e4 v2 v4 v2

v1

v4

v3

e1

e2

e3

e4

• É possivelmente a representação de um grafo G(V, E)

mais simples

• Mantém uma lista com todos os vértices do grafo: V

• Mantém uma lista com todas as arestas do grafo: E

v1

v2

v3

v4

Referencias

• Introdução à Teoria dos Grafos

• Márcia Aguiar Rabuske – Editora da UFSC

• Estrutura de Dados e Algoritmos em Java

• Goodrich e Tamassia – Bookman

• Materiais Didáticos

• Prof. André L. Maitelli – UFRN

• Prof. Robinson L. S. Alves – IFRN

• Prof. Gilbert Azevedo - IFRN