Algoritmos Grafos
-
Upload
curso-raizes -
Category
Documents
-
view
233 -
download
0
Transcript of Algoritmos Grafos
-
8/3/2019 Algoritmos Grafos
1/29
AlgoritmosAlgoritmos emem GrafosGrafos
Celso C. RibeiroCaroline T. Rocha
-
8/3/2019 Algoritmos Grafos
2/29
22Algoritmos em GrafosAlgoritmos em Grafos
PARTE 1: CONCEITOS BSICOS
-
8/3/2019 Algoritmos Grafos
3/29
33Algoritmos em GrafosAlgoritmos em Grafos
e3
e2e4
e5
e9e6
e8 e10
e11
e1 e12e7
v1
v2
v3 v4
v5
v6
v7
v8
v9
V = {v1, v2, v3, v4, v5, v6, v7, v8, v9} n = 9E = {e1, e2, e3, e4,..., e9, e10, e11, e12} m = 12
V = {v1, v2, ..., vn} |V| = nE = {e1, e2, ..., em} |E| = m
G = (V, E)
vrtices arestas
Conceitos BsicosConceitos Bsicos
Grafo: Geometricamente, um grafo um conjunto depontos (vrtices ou ns) conectados por linhas (arestas).
-
8/3/2019 Algoritmos Grafos
4/29
44Algoritmos em GrafosAlgoritmos em Grafos
Conceitos BsicosConceitos Bsicos
Cada aresta definida por um par no-ordenado dens, que so suas extremidades:
e = (vi , vj)
e = (u, v) u e v so adjacentes
e incidente a ve incidente a u
e5, e7 , e8 incidentes a v5v
5adjacente a v
4, v
6, v
7
d(v) : grau do n v = nmero de arestas incidentes a v(ns adjacentes)
d(v1) = d(v2) = d(v8) = d(v9) = 2d(v3) = d(v4) = d(v5) = d(v6) = 3d(v7) = 4
d(v) = 0 vrtice isolado
-
8/3/2019 Algoritmos Grafos
5/29
55Algoritmos em GrafosAlgoritmos em Grafos
Conceitos BsicosConceitos Bsicos
Teorema: o nmero de ns de grau mpar em um grafo finito par.
Demonstrao: ||.2)( EvdVi
i !
e5
e4
e2 e3
e1
e = (u, v) um lao se u = varestas paralelas possuem asmesmas extremidades
Multi-grafo: sem laos, mas eventualmente com arestas paralelasGrafo simples (grafo) : sem laos nem arestas paralelos
-
8/3/2019 Algoritmos Grafos
6/29
66Algoritmos em GrafosAlgoritmos em Grafos
Conceitos BsicosConceitos Bsicos
Kn: grafo completo com n nsnmero de arestas: n(n-1)/2
Grafo k-regular: todos os ns tm grau k.
K3 K4 K5
Kn (n-1)-regular
-
8/3/2019 Algoritmos Grafos
7/29
77Algoritmos em GrafosAlgoritmos em Grafos
Conceitos BsicosConceitos Bsicos
Grafo bipartido: o conjunto de ns pode ser particionadoem dois subconjuntos V1 e V2 tais que qualquer arestapossui uma extremidade em V1 e a outra em V2.
Km,n: grafo bipartido completoonde |V1| = m e |V2| = n
bipartido?
bipartido?
SIM
NO
V1
V2
-
8/3/2019 Algoritmos Grafos
8/29
88Algoritmos em GrafosAlgoritmos em Grafos
Conceitos BsicosConceitos Bsicos
um subgrafo de :
Grafo induzido em por :
onde E(X) o subconjunto de E formado por todas asarestas com as duas extremidades em X.
G(X)
G X = {2, 3, 4, 5}
1 2
34
5
6
),( EVG !
),( EVG !EEVV ','
VX
)','(' EVG !
))(,()( XEXXG !
-
8/3/2019 Algoritmos Grafos
9/29
99Algoritmos em GrafosAlgoritmos em Grafos
Conceitos BsicosConceitos Bsicos
Clique: subconjunto de ns que induz um subgrafo completo.
),( EVG !
C1 = {1, 2, 3}1
3
2
4
5
6C2 = {2, 4, 5}
C3 = {4, 6}C4 = {3}
e so complementares:),( EVG !
EjiEji ),(),(EjiEji ),(),(
G
1
3
2
4
1
3
2
4G
-
8/3/2019 Algoritmos Grafos
10/29
010Algoritmos em GrafosAlgoritmos em Grafos
Conceitos BsicosConceitos Bsicos
Caminho de a :Seqncia P de vrtices e arestas alternados, tais que cadaaresta incidente ao n anterior e ao n posterior.
P um ciclo ou circuito.
iv jv
! ji vv
Caminho simples: cada vrtice aparece exatamente uma vez
Comprimento de um caminho: nmero de arestas
Caminhos disjuntos em vrtices/arestas: no tmvrtices/arestas em comum
-
8/3/2019 Algoritmos Grafos
11/29
1111Algoritmos em GrafosAlgoritmos em Grafos
Conceitos BsicosConceitos Bsicos
Vrtices vi e vj so conectados se existe um caminho de vi a vj.
Dois vrtices vi e vj esto na mesma componente conexa seexiste um caminho entre eles.
Um grafo conexo se possui uma nica componente conexa,
ou seja, se existe um caminho entre qualquer par de ns
conexo?
Problema importante: determinar se um grafo conexo ou no.
-
8/3/2019 Algoritmos Grafos
12/29
1212Algoritmos em GrafosAlgoritmos em Grafos
Um grafo gerador de um grafo conexo G=(V,E) um subgrafoconexo G com o mesmo conjunto de ns V.
Conceitos BsicosConceitos Bsicos
v
e
Grafo G Grafo gerador de G
v um ponto de articulao do grafo conexoG se sua remoo desconecta G.
Se uma componente conexa de um grafo no contem ponto dearticulao, ento ela uma componente 2-conexa.
Uma aresta e cuja remoo desconecta umgrafo conexo chamada de ponte.
-
8/3/2019 Algoritmos Grafos
13/29
1313Algoritmos em GrafosAlgoritmos em Grafos
Conceitos BsicosConceitos Bsicos
Digrafo ou grafo orientado: grafo no qual so associadasdirees aos seus arcos.
),( AVG !},...,{ 1 nvvV !
},...,{ 1 maaA !VVjia v! ),( par ordenado
Incio ou origem Fim ou destino
1
2
3
4
56
)(id
)(id
= grau de entrada de i= nmero de predecessores de i
= grau de sada de i= nmero de sucessores de i
i j
j sucessor de i
i predecessor de j
! )1(d
! )4(d
! )4(d
! )6(d
1
3
0
1
-
8/3/2019 Algoritmos Grafos
14/29
1414Algoritmos em GrafosAlgoritmos em Grafos
Conceitos BsicosConceitos Bsicos
Uma cadeia a1, a2, ..., aq de arcos uma seqncia tal quecada arco ai tem uma extremidade comum com o arco ai-1 eoutra com o arco ai+1, 2 i q-1.
32
41
5
a1 a2
a3
a5
a6
a4
a7a2, a5, a6, a4 p cadeia entre os ns 2 e 3
Ciclo: cadeia cujas extremidades coincidem.
Caminho a1, a2,..., aq: extremidade final do arco ai coincidecom a extremidade inicial do arco ai+1.
Circuito: caminho cujas extremidades coincidem.
-
8/3/2019 Algoritmos Grafos
15/29
1515Algoritmos em GrafosAlgoritmos em Grafos
Conceitos BsicosConceitos Bsicos
Dois vrtices vi e vj esto na mesma componente fortementeconexa de um grafo orientado se existe um caminho de vi avj e um caminho de vj a vi.
{1, 2, 3, 4, 5, 6, 8, 9, 10}{7}
{1, 2, 3, 4}
{5, 6, 7}
3
2
4
15
6 7
910
8
32
41
56
7
-
8/3/2019 Algoritmos Grafos
16/29
1616Algoritmos em GrafosAlgoritmos em Grafos
Conceitos BsicosConceitos Bsicos
Grafos planares:Um grafo planar se ele pode ser representado no plano demodo tal que no haja interseo entre suas arestas.
K3 ?
K5 ?
K4 ?
K3,3 ?
PLANAR
NO
PLANAR
NO
-
8/3/2019 Algoritmos Grafos
17/29
1717Algoritmos em GrafosAlgoritmos em Grafos
Conceitos BsicosConceitos Bsicos
rvore: grafo conexo sem circuitos
Floresta: grafo cujas componentes conexas so rvores
Um caminho uma rvore? Sim!
-
8/3/2019 Algoritmos Grafos
18/29
1818Algoritmos em GrafosAlgoritmos em Grafos
Conceitos BsicosConceitos Bsicos
Teorema: Se T uma rvore com n vrtices, ento:
1. Existe um nico caminho entre dois ns quaisquer de T.
2. Sejam i, j dois ns de T tais que a aresta (i, j) no existe.Ento, a insero da aresta (i, j) em T provoca a formao
de exatamente um ciclo.3. T possui n-1 arestas.
-
8/3/2019 Algoritmos Grafos
19/29
1919Algoritmos em GrafosAlgoritmos em Grafos
Conceitos BsicosConceitos Bsicos
Matriz de incidncia n-arco:Uma linha para cada nUma coluna para cada aresta
Formas de representao e matrizes associadas a um grafo
),( AVG !nV !||
mA !||
Ajia ! ),(
-
01010
j
i
a
1 2
34
a1
a2
a3
a4
a5
-
!v
110001011001101 00011
nmA
-
8/3/2019 Algoritmos Grafos
20/29
2020Algoritmos em GrafosAlgoritmos em Grafos
Conceitos BsicosConceitos Bsicos
Uma matriz quadrada unimodular se seu determinante s1.
Uma matriz retangular A totalmente unimodular se e
somente qualquer matriz quadrada regular extrada de A unimodular.
Formas de representao e matrizes associadas a um grafo
-
8/3/2019 Algoritmos Grafos
21/29
2121Algoritmos em GrafosAlgoritmos em Grafos
Conceitos BsicosConceitos Bsicos
Teorema: A matriz de incidncia de um grafo totalmenteunimodular.Uma matriz de incidncia contm exatamente dois elementos no-nulos por coluna (+1, -1).
Demonstrao por induo:1. Todas as matrizes quadradas regulares de dimenso 1 so
unimodulares (det = s1).2. Suponha a hiptese verdadeira at matrizes de ordem n-1 e
considere uma matriz quadrada A de ordem n extrada de A.Se toda coluna de A tem dois elementos no-nulos, entodet(A) = 0 (soma das linhas nulas).Se uma coluna de A no tem elementos no-nulos, entodet(A) = 0.
Formas de representao e matrizes associadas a um grafo
-
8/3/2019 Algoritmos Grafos
22/29
2222Algoritmos em GrafosAlgoritmos em Grafos
Conceitos BsicosConceitos Bsicos
Se existe uma coluna com um nico coeficiente no-nulo, entodet(A) = s det(A), onde A a matriz quadrada de ordem n-1extrada de A pela eliminao da linha i e da coluna j. Como ahiptese verdadeira para n-1, det(A) = s1 ou 0. Logo,
det(A) = s1 ou 0.
-
s1
'
i
A
j
Formas de representao e matrizes associadas a um grafo
-
8/3/2019 Algoritmos Grafos
23/29
2323Algoritmos em GrafosAlgoritmos em Grafos
Conceitos BsicosConceitos Bsicos
Matriz de adjacncia:
Uma linha para cada nUma coluna para cada n
a23
1 2
34
a12
a13
a24
a34
-
!v
0000100011000110
nnA
Grafos sem arcos paralelos:1 2
34
1 2
34
n2 posies
Formas de representao e matrizes associadas a um grafo
aij = 1 p (i , j ) Aaij = 0 p (i , j ) A
-
8/3/2019 Algoritmos Grafos
24/29
2424Algoritmos em GrafosAlgoritmos em Grafos
Conceitos BsicosConceitos Bsicos
Lista de ns:
Cada n aponta para a lista de seus sucessores (ou nsadjacentes)
Formas de representao por listas de adjacncias
1 2
34
n nsm arestas
n +m posies
1
2
3
4
2 3
3 4
4
ns sucessores ns predecessores1
2
3
4
1
1 2
2 3
-
8/3/2019 Algoritmos Grafos
25/29
2525Algoritmos em GrafosAlgoritmos em Grafos
Conceitos BsicosConceitos Bsicos
Formas de representao por listas de adjacncias
1 3 5 71
23 m
n
1 2 3 4
1 3 1 3 2 1
1 2 3 4 5 6 7
Lista de arcos1 2
34
S(.)
2 3 4 3 2 3
1 1 1 2 4 4
T(.)
simples passar de uma forma de representao para outra.
-
8/3/2019 Algoritmos Grafos
26/29
2626Algoritmos em GrafosAlgoritmos em Grafos
Conceitos BsicosConceitos Bsicos
Desenhar o grafo representado pela matriz de adjacnciaabaixo:
-
!
010101001010000100
001000100100100010
A
Quais so as componentes fortemente conexas deste grafo?
Representar sua matriz de incidncia.
{1,2,5,6}, {3,4}
1 2
3
4
5
6
1
2
3
4
5
6
7
8
9
10
11
-
00000111110
00110100000
11100000000
11001001000
00011010001
000000001111
2
3
4
5
6
1 2 3 4 5 6 7 8 9 10 11
-
8/3/2019 Algoritmos Grafos
27/29
2727Algoritmos em GrafosAlgoritmos em Grafos
Conceitos BsicosConceitos Bsicos
Representar o mesmo grafo por sua lista de adjacncias.
Representar o grafo por sua lista de arcos.
1
2
3
4
5
6
2 6
3 6
4
2 4
1 3
3
5
1 1 6 6 2 6 2 5 5 3 4
2 6 1 3 6 5 3 2 4 4 3
1 2 3 4 5 6 7 8 9 10 11
1 2
3
4
5
6
1
2
3
4
5
6
7
8
9
10
11
-
8/3/2019 Algoritmos Grafos
28/29
2828Algoritmos em GrafosAlgoritmos em Grafos
Conceitos BsicosConceitos BsicosAlgoritmo para converter uma representao de um grafo orientadosob forma de matriz de adjacncia em matriz de incidncia.
Ler nmero de ns n, matriz Alinha n 1, coluna n 1, arco n 0Enquanto linha n faa
Enquanto coluna n faa
SeA(linha,coluna)=1entoarco n arco+1, k n 1
Enquanto k n faaB(k,arco) n 0k n k+1
fim_enquantoB(linha,arco)n +1
B(coluna,arco)n -1fim_secoluna n coluna +1
fim_enquantocoluna n 1
linha n linha +1
fim_enquanto
-
8/3/2019 Algoritmos Grafos
29/29
2929Algoritmos em GrafosAlgoritmos em Grafos
Conceitos BsicosConceitos Bsicos
Exerccio: Escrever um algoritmo para converter a representaode um grafo orientado sob forma de matriz de incidnciaem uma representao por listas de adjacncia.