estrutura e representaÇÃo prof. m.sc. fábio francisco da costa fontes março - 2009

Post on 17-Apr-2015

104 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

ESTRUTURA E ESTRUTURA E REPRESENTAÇÃOREPRESENTAÇÃO

Prof. M.Sc. Fábio Francisco da Costa Fontes

Março - 2009

Estrutura e Representação

As possíveis representações de um grafo incluem: DesenhosTabelas de incidênciaEspecificações formaisEtc.

Estrutura é o que caracteriza o próprio grafo e independe da forma como ele é representado

Estrutura e Representação

A representação esquemática de um grafo não é adequada para fornecer a um computador dados sobre uma estrutura de grafo. Os dados relativos a um grafo precisarão sempre de uma representação numérica interna, com a qual o computador possa trabalhar.

Estrutura e Representação

A variedade, em termos de dimensão e de complexidade, dos problemas de grafos, tem levado à definição de diversas formas de representação que procuram, em alguns casos, atender a necessidades algébricas ou combinatórias e, em outros casos, a questões de busca ou armazenamento de carater essencialmente algorítmico.

Estrutura e Representação

Um aspecto importante na estrutura de um grafo é a sua formação a partir de grafos menores, chamados de sub-grafos

As operações de acrescentar um vértice ou uma aresta, e remover um vértice ou aresta, fornecem um mecanismo para transformar qualquer grafo em outro

Estrutura e Representação Em cima destas operações elementares

são construídas outras camadas de algoritmos

Além de desenhos, listas de adjacências e tabelas de incidência, as descrições possíveis de um grafo incluem diversos tipos de matrizes

A matriz de incidência e a matriz de adjacência são duas representações clássicas de grafos

Representação por Matriz

Uma das formas mais simples de representar um grafo no computador é usando matrizes

Representar grafos por matrizes permite usar as ferramentas da álgebra linear para tratar grafos

Representações usuais: matriz de adjacência, matriz de incidência

Matriz de Adjacência

Definição: A matriz de adjacência de um grafo simples G é uma matriz simétrica cujas linhas e colunas são indexadas pelos vértices de G, tal que:

contrário caso0

adjacentes são e se1],[

vuvuAG

u

v

w x

0100

1011

0101

0110

x

w

v

u

A

xwvu

G

no caso de grafo

não valorado

Matriz de Adjacência

Definição: A matriz de adjacência de um dígrafo simples D é uma matriz cujas linhas e colunas são indexadas pelos vértices de D, tal que:

contrário caso0

e de aresta uma existe se1],[

vuvuAD

u

v

w x

0000

1001

0101

0010

x

w

v

u

A

xwvu

D

Matriz de Incidência

Definição: a matriz de incidência de um grafo G é uma matriz m x n cujas linhas e colunas são indexadas por alguma ordenação dos vértices e arestas de G.

em loop um é se2

vem incidente é e se1

vem incidente é não e se0

],[

ve

evIG

u

v

w x

01111000

11000000

00111100

10000122

x

w

v

u

I

hgfedcba

Gd

fe

c

g

hba

Listas de Incidência

A matriz de adjacência e a matriz de incidência são compostas, em sua maior parte, por zeros

É possível construir uma representação mais eficiente, no que diz respeito ao uso de memória

Definição: Uma lista de incidência é uma tabela que lista, para cada vértice v, todos as arestas incidentes em v.

Listas de Incidência

Uma desvantagem dessa representação é a necessidade de rotular todas as arestas do grafo

Uma vantagem é a possibilidade de representar grafos gerais:

u

v

w x

df

e

c

g

hba

gfedx

hgw

fedcv

hcbau

I EV

:

:

:

:

:

Listas de Adjacência

Para grafos simples as listas de adjacências são uma representação mais eficiente que as matrizes de adjacência:

u

v

w x

wvx

vxuw

xwuv

wvu

I EV

:

:

:

:

:

Exercícios

Para o grafo abaixo, determine: As matrizes de adjacência e de

incidênciaAs listas de adjacência e incidência

u

v

w x

df

e

c

g

hba

1-Construa a matriz de adjacência A deste grafo

2-Construa a matriz de incidência B deste grafo

Exercícios

B C

A D

3-Calcule o produto A². O que significam os números na diagonal? Explique porque isto acontece.

4-Calcule o produto B.Bt

O que significa os números na diagonal? O que significa os números fora da diagonal?5-Calcule o produto Bt.B O que significa os números na diagonal? O que significa os números fora da diagonal?

Exercícios

Matriz de Custo

Um grafo valorado pode ser representado por uma matriz de custo w = {wij}, onde

custo da aresta, se (vi, vj) pertence a Awij = ∞ caso (vi, vj) não pertence a A (ou seja,

caso não exista aresta)

Matriz de Custo

a2 2 a3

15

8

a1 a 4

1 2 3 4

1 ∞ 1 ∞ ∞

2 1 ∞ 2 5

3 ∞ 2 ∞ 8

4 ∞ 5 8 ∞

Isomorfismo de Grafos Decidir quando dois desenhos de grafos

representam o mesmo grafo é uma tarefa difícil

Uma tarefa relacionada é a de decidir quando duas especificações diferentes de grafos são estruturalmente equivalentes

Desenvolver um algoritmo para tomar estas decisões é um problema não resolvido

Isomorfismo de Grafos

Nos grafos acima temos a tentação de dizer que eles são iguais. Mas verificamos que eles não são iguais pois os nós 1 e 2 são adjacentes no primeiro e não são no segundo grafo.Embora os grafos não sejam iguais, apresentam as mesmas propriedades estruturais: mesmo número de nós, mesmo número de arcos, mesmo conjunto de graus de nós, ambos os grafos são árvores com três nós.

321 231

Equivalência estrutural

A forma e o comprimento de uma aresta e a sua posição no espaço não fazem parte da especificação de um grafo

Cada grafo tem infinitas representações espaciais

2 3

0 1

6 7

4 5

2 3

0

1

67

4

5

Dois desenhos diferentes do mesmo grafo

Equivalência estrutural

Como reconhecemos que os grafos abaixo são o mesmo grafo?Os vértices e arestas tem rótulos iguaisAmbos têm 8 vértices e 12 arestasCada par de vértices adjacentes em um

grafo é adjacente no outro grafo

2 3

0 1

6 7

4 5

2 3

0

1

67

4

5

Equivalência estrutural

O conceito de isomorfismo vem formalizar exatamente a idéia de grafos que, apesar de não serem iguais, apresentam as mesmas propriedades estruturais.

Equivalência estrutural

Se os grafos não tiverem rótulos ou os rótulos forem diferentes a tarefa fica mais difícil

3

5

21

6

7

4

8

u

w t

s

x

y v

z

Equivalência estrutural

A especificação de um grafo G pode ser transformada na especificação de um grafo H pela seguinte função bijetora f nos rótulos dos vértices

3

5

21

6

7

4

8

u

w t

s

x

y v

z

1 → s 5 → w2 → t 6 → x3 → u 7 → y4 → v 8 → z

Formalizando Equivalência

Definição: Seja G e H dois grafos simples. Uma bijeção de vértices f: VG →VH preserva adjacência se para cada par de vértices adjacentes u e v no grafo G, os vértices f(u) e f(v) são adjacentes no grafo H.

Definição: f preserva não-adjacência se f(u) e f(v) forem não-adjacentes sempre que u e v forem não-adjacentes

Formalizando Equivalência Definição: Uma bijeção de vértices

f: VG →VH entre os conjuntos de vértices de dois grafos simples G e H preserva estrutura se ela preserva adjacência e não-adjacência.

Para cada par de vértices em G:u e v são adjacentes em G então f(u) e

f(v) são adjacentes em Hu e v não são adjacentes em G então f(u)

e f(v) não são adjacentes em H

Formalizando Equivalência

Definição: Dois grafos simples G e H são isomorfos, denotado por G H, se existe uma preservação de estrutura f: VG →VH

Essa função f entre os conjuntos de vértices de G e H é chamada de um isomorfismo entre G e H.

Notação: freqüentemente escreve-sef: G →H para denotar f: VG →VH

Isomorfismo de Grafos

A figura abaixo define um isomorfismo entre os dois grafos simples mostrados. Verifique que a função preserva a estrutura.

2 3

0 1

6 7

4 5

c

e

ba

f

g

d

h

a=f(0)

d=f(3)

f=f(5)

g=f(6)

b=f(1)

c=f(2)

e=f(4)

h=f(7)

Isomorfismo de Grafos

Fica mais fácil analisar a preservação da estrutura alterando-se os rótulos do segundo grafo

2 3

0 1

6 7

4 5

2

4

10

5

6

3

7

Isomorfismo de Grafos

No exemplo abaixo, a função j → j+4 é bijetora e preserva adjacência, mas não é um isomorfismo. Por que?

1 2

0 3

5 6

4 7

Isomorfismo de Grafos

No exemplo abaixo, a função j → j mod 2 preserva adjacência e não-adjacência, mas não é um isomorfismo. Por que?

2

1 0

1 0

Tipo Isomórfico

A relação “isomórfico a” é uma relação simétrica, transitiva e reflexiva, sendo assim um relação de equivalência.

Definição: Cada classe de equivalência é chamada um tipo isomórfico.

Os grafos abaixo representam os 4 tipos isomórficos de um grafo simples de 3 vértices

Isomorfismo de Dígrafos

Definição: Dois dígrafos são isomórficos se existe um isomorfismo f entre seus grafos equivalentes que preserve a direção de cada aresta.

Isto é, a aresta e é direcionada de u para v se e somente se f(e) é direcionada de f(u) para f(v).

Dígrafos não-isomórficos

Isomorfismo por força bruta

A definição de isomorfismo implica que dois grafos são isomorfos se for possível ordenar seus vértices de forma que suas matrizes de adjacência sejam iguais

u

x w

va b

c

d

AG = <u v w x>

AH = <a d c b>

G H

Isomorfismo por força bruta

Algoritmo: Teste força bruta para o isomorfismo de grafos

função isomorfos(G,H) se |VG| ≠ |VH| então retorne 0 se as seqüências de graus não são iguais então retorne 0 Fixe uma ordenação para o grafo G Escreva a matriz de adjacência AG com esta ordenação para cada ordenação de vértices de H faça Escreva AH

se AH=AG então retorne 1 retorne 0

O problema do Isomorfismo

Seria muito útil ter um algoritmo rápido para verificar se dois grafos quaisquer dados são isomorfos

Dado uma bijeção de vértices, pode-se verificar se os grafos são isomorfos visitando todos os pares de vértices

No entanto existem n! bijeções possíveis para verificar

O algoritmo força bruta não funciona

O problema do Isomorfismo

O problema do isomorfismo é construir um algoritmo para decidir o isomorfismo de grafos, ou de provar que este algoritmo não existe.

Aplicação: Disputa de patentes e espionagem industrial na indústria de chips e circuitos eletrônicos. Provar que um circuito é um mero rearranjo de outro circuito.

Exercícios

Ache os tipos isomórficos dos grafos simples abaixo:Uma árvore de 4 vérticesUm grafo conectado de 4 vérticesUma árvore de 5 vérticesUm grafo de 5 vértices com exatamente

3 arestasUm grafo de 6 vértices com exatamente

4 arestas

Exercícios

Ache os tipos isomórficos dos dígrafos simples abaixo:Um dígrafo simples com 4 vértices e 4

arcosUm dígrafo fortemente conectado de 3

vérticesUm dígrafo simples de 3 vértices sem

ciclos direcionados

Exercícios

Ache uma bijeção de vértices que defina um isomorfismo entre os grafos abaixo:

u v

x w r zs t

Exercícios

Ache uma bijeção de vértices que defina um isomorfismo entre os grafos abaixo:

u v

x w

s z

r t

Exercícios

Ache uma bijeção de vértices que defina um isomorfismo entre os grafos abaixo:

u v

x w

s z

r t

y q

Sub-grafos

Propriedades de grafos são comumente determinadas pela existência ou não de certos tipos de sub-grafos:Um grafo é bipartido se e somente se ele

não contém um sub-grafo que é um ciclo com número ímpar de vértices

Sub-grafosUm grafo pode ser desenhado no plano

sem cruzamento de arestas se e somente se o grafo não contém um sub-grafo completo K5, nem um sub-grafo bipartido K3,3

K5 K3,3

Grafo Planar

Grafos planares: Diz-se que um grafo é planar se for possível dispor seus vértices num plano de forma que não haja cruzamento de arestas.

Grafo Planar

Pode-se então fazer uma associação entre um grafo planar e um mapa, onde cada região do mapa corresponde a um vértice e as fronteiras entre as regiões correspondem às arestas.

Grafo Planar

Uma aplicação que utiliza o conceito de grafos planares é a disposição de circuitos impressos numa placa.Um circuito eletrônico pode ser considerado um grafo onde as junções são vértices e as arestas são os fios ligando as junções. Se o grafo correspondente ao circuito é planar, todos os fios podem ser gravados na própria placa. Se o grafo não é planar por causa de apenas uma aresta, esta é um fio normal que deve passar por cima da placa. Isto equivale a colocar esta aresta acima do plano contendo o restante do grafo:

Grafo Planar

Sub-grafos

Definição: um sub-grafo de um grafo G é um grafo H cujos vértices e arestas estão todos em G. Se H é sub-grafo de G, também pode-se dizer que G é um super-grafo de H.

Definição: um sub-dígrafo de um dígrafo G é um dígrafo H cujos vértices e arcos estão todos em G.

Sub-grafos

Exemplos de uso do termo sub-grafo:Um grafo com n vértices G é

hamiltoniano se e somente se ele contém um sub-grafo isomórfico ao n-ciclo Cn.

O grafo G abaixo tem entre seus sub-grafos um grafo B2 (Bouquet), um D3

(Dipole ou Bipolar) e um K3

G B2 D3K3

Sub-grafo Gerador

Um sub-grafo H é dito ser gerador de um grafo G se VH = VG

v

x

z

u

w

G

v

x

u

H1

v

x

z

u

w

H2

Árvore Árvore é uma estrutura de dados que possui

uma relação hierárquica entre seus elementos;

• Árvore é um conjunto finito de um ou mais nós, onde um deles é denominado raiz e os demais, recursivamente, formam uma nova árvore (ou sub-árvore).

Quando num determinado nível a sub-árvore tem um único nó (sem descendentes) ele é chamado de folha. A árvore da Figura 2.16 tem as seguintes folhas : D, E, G, H e I.

Árvore

A árvore da Figura 2.16 tem as seguintes folhas : D, E, G, H e I.

Árvore Geradora

Uma árvore geradora de um grafo é um sub-grafo gerador que é uma árvore.

Árvore Geradora Existem várias propriedades

importantes de grafos com árvores geradoras:Um grafo é conectado se e somente se

ele contém uma árvore geradoraTodo sub-grafo acíclico de um grafo

conectado G é contido em pelo menos uma árvore geradora de G

Mais propriedades serão vistas no estudo de árvores

Cliques

Definição: um subconjunto S de VG é chamado uma clique se todo par de vértices em S é ligado por pelo menos uma aresta, e nenhum super-conjunto de S tem essa propriedade.

v

y

u

x z

Cliques:

{u,v,y}{u,x,y}{y,z}

Cliques

Clique ou grafo completo é um grafo, ou subgrafo, em que seus vértices são interligados ou adjacentes dois a dois; de forma que o caminho mais curto entre quaisquer dois vértices “v” e “w” é a aresta (v,w).

Conjunto Independente

Definição: Um sub-conjunto S de VG é um conjunto independente (independent set) se nenhum par de vértices de S é unido por uma aresta.

v

y

u

x z

Conjunto independente:

{x,v,z}{u,z}

Exercício

1 – Encontre nos grafos abaixo todas as cliques.

u

r

x y

v w

z

u

x y

v w

z

r

Exercício

2 - Destaque nos grafos abaixo os conjuntos independentes.

1

2

3

4

5

67

1

2

3

4

5

6

7

Aplicação de Sub-grafos

Portar um algoritmo distribuído de uma arquitetura paralela para outra. Um algoritmo paralelo distribui as várias tarefas entre diferentes processadores.

Suponha que um algoritmo foi projetado para trabalhar em uma arquitetura de 8x8 máquinas, ele pode ser portado para qualquer arquitetura que contenha um sub-grafo 8x8.

Operações com grafos

A ciência da computação costuma tratar os grafos como variáveis.

A configuração resultante da operação de adicionar ou remover um vértice ou aresta é considerada um novo valor de G.

Estas operações primárias são partes do tipo de dado grafo.

Apagando Vértices ou Arestas

Definição: se v é um vértice de um grafo G, então o sub-grafo resultante G-v é o sub-grafo induzido pelo conjunto de vértices VG-{v}.

w

u

v

w

u

VH = VG-v = VG – {v}

EH = EG-v = {e EG | v endpts(e)}

G H

Apagando Vértices ou Arestas

Definição: se e é uma aresta de um grafo G, então o sub-grafo resultante G-e é o sub-grafo induzido pelo conjunto de arestas EG-{e}.

v

u

w

VH = VG-e = VG

EH = EG-e = EG - {e}

v

u

w

G H

Acrescentando vértices e arestas

Definição: adicionar uma aresta entre dois vértices u e w de um grafo G significa criar um super-grafo, G U {e}, com conjunto de vértices VG e conjunto de arestas EG U {e}.

v

u

w

v

u

we

G H

Acrescentando vértices e arestas

Definição: adicionar um vértice v a um grafo G significa criar um super-grafo, G U {v}, com conjunto de vértices VG U {v} e conjunto de arestas EG.

v

G H

top related