Академический Документы
Профессиональный Документы
Культура Документы
2005
Grafo bipartido?
v1
v2
v4
v3
Grafo roda
O grafo obtido a partir de Cn-1 atravs da
ligao de cada vrtice a um novo vrtice v
um grafo roda em n vrtices, Wn
C5
W6
Grafos n-cbicos
Os grafos n-cbicos, denotados por Qn, so
grafos cujos vrtices representam as 2n
cadeias de bits de tamanho n.
Dois vrtices so adjacentes se e somente se
as cadeias de bits que eles representam
diferem em exatamente uma posio de bit.
Revisando
Tipo Arestas Mltiplas?
Laos?
------------------------------------------------------------------Simples
no dir. No No
Multigrafo no dir. Sim No
Pseudografo
no dir, Sim Sim
Direcionado dir. No Sim
Multigrafo dir.
dir. Sim Sim
Proposio
grauent(vi) = grausai(vi) = | A |
Representao de grafos
Embora seja conveniente a
representao de grafos atravs de
diagramas de pontos ligados por
linhas, tal representao
inadequada se desejamos armazenar
grandes grafos em um computador
Lista de adjacncia
Uma maneira simples de armazenar grafos, listando
os vrtices adjacentes a cada vrtice do grafo
u
u: v,y
v: u,y,w
w: v,x,y
x: w,y
y: u,v,w,x
Inic.
u:
v:
w:
x:
y:
Terminais
u,v
v
y,w
Matriz de adjacncia
Se G um grafo com vrtices {1,2,3,...,n}, sua matriz de
adjacncia a matriz n X n cujo elemento ij o nmero de
arestas ligando o vrtice i ao vrtice j
Matriz de adjacncia
Se G um grafo direcionado com vrtices {1,2,3,...,n}, sua matriz de adjacncia a matriz n X n cujo
elemento ij o 1 se existe uma arestas onde vi o vrtice inicial e vj o vrtice final.
J estudamos esse tipo de matriz na representao de relaes.
Se G um multigrafo direcionado com vrtices {1,2,3,...,n}, sua matriz de adjacncia a matriz n X n
cujo elemento ij o nmero de arestas onde vi o vrtice inicial e vj o vrtice final.
A matriz de adjacncia para grafos com direo no necessariamente simtrica.
Matriz de incidncia
Se G um grafo com vrtices {1,2,3,...,n} e arestas {1,2,3,...,m}, sua matriz de
incidncia a matriz n X m cujo elemento ij igual a
1 se a aresta ej incidente ao vrtice vi, ou
0, caso contrrio
Conectividade
Caminho em um grafo no orientado
Um caminho de tamanho n de u para v, onde n um
inteiro positivo, em um grafo no orientado uma
seqncia de arestas e1,...,en do grafo de forma que f(e1)
= {x0,x1}, f(e2) = {x1,x2}...f(en)={xn-1,xn}, onde x0=u e xn=v.
G1
Se o grafo simples,
denotamos o caminho
por sua seqncia de
vrtices: x0, x1 ,...xn
Conectividade
Caminho em um multigrafo direcionado
Um caminho de tamanho n de u para v, onde n um
inteiro positivo, em um multigrafo direcionado uma
seqncia de arestas e1,...,en do grafo de forma que
f(e1) =(x0,x1), f(e2) = (x1,x2)...f(en)=(xn-1,xn), onde x0=u e
xn=v.
Quando no existem
arestas mltiplas, o
caminho pode se
denotado por um
seqncia de vrtices:
(x2, x5, x4, x1)
Conectividade
Circuito ou ciclo
Um caminho um circuito se ele comea e
termina no mesmo vrtice.
G1
Circuito: x1,x2,x5,x4,x1
Exemplos de ciclos
1
2
3
Ciclo de tamanho 3
1241
2
3
Ciclo de tamanho 3
1231
A seqncia de vrtices
(x1, x2, x5, x4, x1)
um exemplo de ciclo
Conectividade
Definio para grafos no orientados
Um grafo no orientado chamado de conexo
(ou conectado) se existe um caminho entre
cada par de vrtices distintos do grafo.
G1
Em uma rede de
computadores, quaisquer
dois computadores podem
se comunicar se e
somente se o grafo da
rede conexo.
Grafo desconexo
O grafo mostrado a seguir no conexo pois, por
exemplo, no existe um caminho entre x3 e x5.
Componente conexa
Um grafo G(V,A) desconexo formado por pelo menos dois
subgrafos conexos, disjuntos em relao aos vrtices
Cada um destes subgrafos conexos dito ser uma componente
conexa de G.
X2 um vrtice de corte
Ponte
Uma aresta dita ser uma ponte se sua
remoo produz um grafo com mais
componentes conexos.
Cada um destes
subgrafos
fortemente conexo.
No entanto, o grafo
todo apenas
fracamente conexo.
Circuito Euleriano
Um circuito euleriano em um grafo G um
circuito simples que contem cada aresta de G.
Prova:
Ida: Seja G um grafo euleriano. Por cada ocorrncia de
vrtice do circuito euleriano, existe uma aresta que chega
nesse vrtice e outra que sai desse vrtice. Como toda
aresta faz parte do circuito, isto , nenhuma aresta fica
fora do ciclo, necessariamente o nmero de arestas por
cada vrtice par.
Algoritmo de Hierholzer
Algoritmo para a construo de um ciclo euleriano
sugerido a partir da prova do teorema de Euler
Comece em qualquer vrtice u e percorra aleatoriamente
as arestas ainda no visitadas a cada vrtice visitado at
fechar um ciclo
Se sobrarem arestas no visitadas, recomece a partir de
um vrtice do ciclo j formado
Se no existem mais arestas no visitadas, construa o
ciclo euleriano a partir dos ciclos formados, unindo-os a
partir de um vrtice comum
Algoritmo de Hierholzer
Algoritmo para a construo de um ciclo euleriano
sugerido a partir da prova do teorema de Euler
As pontes de Knigsberg
As pontes de Knigsberg
Algoritmo de Fleury
Algoritmo para a construo de um ciclo euleriano
em um grafo euleriano
Algoritmo de Fleury
Algoritmo para a construo de um ciclo euleriano
em um grafo euleriano
Caminho e circuito
hamiltoniano
Apenas caminho
hamiltoniano
Mais exemplos
Circuito e caminho
caminho
no
hamiltoniano
Grafo hamiltoniano
No existe uma caracterizao para identificar grafos hamiltonianos como
existe para os eulerianos
A busca de tal caracterizao um dos maiores problemas ainda no
solucionados da teoria dos grafos
Grafo hamiltoniano
Muito pouco conhecido dos grafos hamiltonianos
A maioria dos teoremas existentes so da forma: Se G possui
arestas suficientes, ento G hamiltoniano
Alguns Problemas
Como explorar um grafo
Como obter um processo sistemtico para caminhar pelos vrtices e arestas de um grafo?
Como caminhar no grafo de modo a visitar todos os vrtices e arestas evitando repeties desnecessrias de visitas a um mesmo vrtice ou
aresta?
Que recursos adicionais so necessrios?
Algoritmo Geral
Busca Geral G(V,E)
1. Escolher e marcar um vrtice inicial;
2. Enquanto existir algum vrtice v marcado e incidente a
uma aresta (v,w), no explorada, efetuar:
a) escolher o vrtice v;
b) explorar a aresta (v,w). Se w no marcado ento
marcar w.
3
s
1 4 2
3
2
5
x
7
y
5
5
11
3
s
5
5
11
Outra possibilidade:
u
3
s
5
5
11
O algoritmo de Dijkstra
O algoritmo de Dijkstra aqui descrito identifica o menor caminho entre dois vrtices de um grafo no orientado.
Se desejamos calcular o menor caminho de a para z em um grafo conexo simples com pesos, primeiro encontramos um
menor caminho entre a e um primeiro vrtice, depois entre a e um segundo vrtice, esse procedimento repetido at que
seja encontrado um menor caminho entre a e z.
O algoritmo de Dijkstra
Um conjunto S de vrtices construdo inserindo-se um vrtice a cada iterao.
A cada iterao tambm adotado um procedimento para rotular vrtices: um vrtice w rotulado com o tamanho do menor caminho de a at
ele, e que contem somente vrtices do conjunto S.
O vrtice a ser inserido em S aquele com o menor rtulo.
O algoritmo de Dijkstra
O algoritmo comea rotulando a com 0 e os demais vrtices com . Usamos a notao L0(a)=0 e L0(v)= . (na iterao 0).
A notao Sk usada para denotar o conjunto S aps a iterao k. Comeamos com S 0=. O conjunto Sk formado a partir de Sk-1 adicionado-se
um vrtice u que no est em Sk-1 e possui o menor rtulo.
Aps a incluso de u em Sk, atualizamos os rtulos de todos os vrtices que no esto nesse conjunto da seguinte maneira: Lk(v) o tamanho do
menor caminho de a at v que contem apenas os vrtices de Sk.
.
O algoritmo de Dijkstra
Seja v um vrtice que no est em S k. Para atualizar o rtulo de v, observe que L k(v) o tamanho do menor caminho de a para v e que contm apenas os vrtices
que esto em Sk..
Esse caminho ou o menor caminho que contem apenas os elementos de S k-1 (sem a incluso de u) ou
o menor caminho de a at u no passo k-1 com adio da aresta (u,v).
O algoritmo de Dijkstra
procedimento Dijkstra
Para i := 1 at n:
L(v)= .
L(a) = 0
S=
Enquanto z S
u := Elemento que S e L(u) mnimo
S := S {u}
Para cada vrtice v S :
Se L(u) + peso(u,v) < L(v) ento
L(v) = L(u) + peso(u,v)
(observe que L(v) = min(L(v),L(u)+ peso[u,v])
Retornar L(z)
6
8
D
3
10