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