introdução à teoria dos grafos - edmilson campos · •introdução à teoria dos grafos •...
TRANSCRIPT
![Page 1: Introdução à Teoria dos Grafos - Edmilson Campos · •Introdução à Teoria dos Grafos • Márcia Aguiar Rabuske – Editora da UFSC •Estrutura de Dados e Algoritmos em Java](https://reader034.vdocuments.pub/reader034/viewer/2022050918/5bc20e4809d3f2ae4c8b84e2/html5/thumbnails/1.jpg)
IFRN Conexidade e Distância
Prof. Edmilson Campos
![Page 2: Introdução à Teoria dos Grafos - Edmilson Campos · •Introdução à Teoria dos Grafos • Márcia Aguiar Rabuske – Editora da UFSC •Estrutura de Dados e Algoritmos em Java](https://reader034.vdocuments.pub/reader034/viewer/2022050918/5bc20e4809d3f2ae4c8b84e2/html5/thumbnails/2.jpg)
Conteúdo
• Grafo Conexo
• Componente Conexa e Algoritmos
• Grafo F-Conexo
• Componente F-Conexa
• Antecessor, Sucessor, Fecho Transitivo
• Algoritmo
• Grafo Reduzido
• Conceitos
• Vértice e Aresta de Corte
• Base, Anti-Base, Raiz, Anti-Raiz
• Distância
![Page 3: Introdução à Teoria dos Grafos - Edmilson Campos · •Introdução à Teoria dos Grafos • Márcia Aguiar Rabuske – Editora da UFSC •Estrutura de Dados e Algoritmos em Java](https://reader034.vdocuments.pub/reader034/viewer/2022050918/5bc20e4809d3f2ae4c8b84e2/html5/thumbnails/3.jpg)
Grafo Conexo
• Um grafo G(V,A) é dito ser conexo, simplesmente conexo
ou S-Conexo, se há pelo menos uma sequência de
arestas ligando cada par de vértices do grafo
• Um grafo não conexo consiste de dois ou mais sub-
grafos conexos (componentes conexas)
v1
v2 v3
v1
v2
v3
v4
v5
v6
v7
Conexo Não-Conexo
![Page 4: Introdução à Teoria dos Grafos - Edmilson Campos · •Introdução à Teoria dos Grafos • Márcia Aguiar Rabuske – Editora da UFSC •Estrutura de Dados e Algoritmos em Java](https://reader034.vdocuments.pub/reader034/viewer/2022050918/5bc20e4809d3f2ae4c8b84e2/html5/thumbnails/4.jpg)
Algoritmo: Conexidade
• Reduzir cada componente do grafo a um único vértice.
• Processo de redução seqüencial onde todos os vértices
adjacentes a um dado vértice são fundidos com ele
v1
v3
v2
v4
v1
v3+v4
v2
v1 v2+v3+v4 v1+v2+v3+v4
![Page 5: Introdução à Teoria dos Grafos - Edmilson Campos · •Introdução à Teoria dos Grafos • Márcia Aguiar Rabuske – Editora da UFSC •Estrutura de Dados e Algoritmos em Java](https://reader034.vdocuments.pub/reader034/viewer/2022050918/5bc20e4809d3f2ae4c8b84e2/html5/thumbnails/5.jpg)
Algoritmo: Conexidade
• Algoritmo (Goodman)
• P0:[inicialização]
• H = G; c = 0;
• P1:[Gere a próxima componente conexa]
• Enquanto (H )
• Selecione um vértice v pertencente a H
• Enquanto (v for adjacente a algum vértice u H)
• H = grafo resultante da fusão de u com v;
• Remova v, isto é, faça H = H - v;
• c = c + 1;
• P2:[Teste de conexidade]
• Se (c>1) G é não conexo
• senão G é conexo
![Page 6: Introdução à Teoria dos Grafos - Edmilson Campos · •Introdução à Teoria dos Grafos • Márcia Aguiar Rabuske – Editora da UFSC •Estrutura de Dados e Algoritmos em Java](https://reader034.vdocuments.pub/reader034/viewer/2022050918/5bc20e4809d3f2ae4c8b84e2/html5/thumbnails/6.jpg)
Grafo F-Conexo
• Em dígrafos, o grafo G(V,A) é dito ser fortemente conexo
ou F_Conexo, se todo par de vértices participa de um
circuito (caminho fechado entre os vértices)
• Isto significa que cada vértice pode ser alcançável
partindo-se de qualquer outro vértice de grafo.
v1
v4 v6
v2
v5
v3 v1
v4
v3
v6 v5
v2
![Page 7: Introdução à Teoria dos Grafos - Edmilson Campos · •Introdução à Teoria dos Grafos • Márcia Aguiar Rabuske – Editora da UFSC •Estrutura de Dados e Algoritmos em Java](https://reader034.vdocuments.pub/reader034/viewer/2022050918/5bc20e4809d3f2ae4c8b84e2/html5/thumbnails/7.jpg)
Componente Fortemente Conexa
• Um grafo G(V,A) que não é fortemente conexo é formado
por pelo menos dois sub-grafos fortemente conexo
• Cada um desses grafos é dito ser uma componente
fortemente conexa de G
v1
v4 v6
v2
v5
v3
v7
![Page 8: Introdução à Teoria dos Grafos - Edmilson Campos · •Introdução à Teoria dos Grafos • Márcia Aguiar Rabuske – Editora da UFSC •Estrutura de Dados e Algoritmos em Java](https://reader034.vdocuments.pub/reader034/viewer/2022050918/5bc20e4809d3f2ae4c8b84e2/html5/thumbnails/8.jpg)
Antecessor e Sucessor
• Antecessor de um vértice
• É todo vj que seja extremidade inicial de uma aresta que termina
em vi
• Ex: Antecessores de v3 = {v1, v2, v4}
• Sucessor de um vértice
• É todo vj que seja extremidade final de uma aresta que inicia em vi
• Ex: Sucessores de v1 = {v2, v3, v4}
v1
v2
v3
v4
![Page 9: Introdução à Teoria dos Grafos - Edmilson Campos · •Introdução à Teoria dos Grafos • Márcia Aguiar Rabuske – Editora da UFSC •Estrutura de Dados e Algoritmos em Java](https://reader034.vdocuments.pub/reader034/viewer/2022050918/5bc20e4809d3f2ae4c8b84e2/html5/thumbnails/9.jpg)
Fecho Transitivo Direto
• Fecho Transitivo Direto (FTD)
• O FTD de um vértice v é o conjunto de todos os vértices que
podem ser atingidos por algum caminho iniciando em v
• Ex: FTD(v5) = {v1, v2, v3, v4, v5, v6}
• Note que o próprio vértice faz parte do FTD já que ele é alcançável
partindo-se dele mesmo
v1
v4 v6
v2
v5
v3
v7
![Page 10: Introdução à Teoria dos Grafos - Edmilson Campos · •Introdução à Teoria dos Grafos • Márcia Aguiar Rabuske – Editora da UFSC •Estrutura de Dados e Algoritmos em Java](https://reader034.vdocuments.pub/reader034/viewer/2022050918/5bc20e4809d3f2ae4c8b84e2/html5/thumbnails/10.jpg)
Fecho Transitivo Inverso
• Fecho Transitivo Inverso (FTI)
• O FTI de um vértice v é o conjunto de todos os vértices a partir dos
quais se pode atingir v por algum caminho
• Ex: FTI(v5) = {v1, v2, v4, v5, v7}
• Note que o próprio vértice faz parte do FTI já que dele se pode alcançar
ele mesmo
v1
v4 v6
v2
v5
v3
v7
![Page 11: Introdução à Teoria dos Grafos - Edmilson Campos · •Introdução à Teoria dos Grafos • Márcia Aguiar Rabuske – Editora da UFSC •Estrutura de Dados e Algoritmos em Java](https://reader034.vdocuments.pub/reader034/viewer/2022050918/5bc20e4809d3f2ae4c8b84e2/html5/thumbnails/11.jpg)
Algoritmo: Componentes F-Conexas
• Algoritmo
• P0: Obter a matriz R = [rij], definida como:
• P1: Obter a matriz Q = RT
• P2: Obter o produto R Q, realizado elemento a elemento de
cada matriz
contrário caso 0,
v departir a atingidoser pode v vértice o se 1,r ijij
![Page 12: Introdução à Teoria dos Grafos - Edmilson Campos · •Introdução à Teoria dos Grafos • Márcia Aguiar Rabuske – Editora da UFSC •Estrutura de Dados e Algoritmos em Java](https://reader034.vdocuments.pub/reader034/viewer/2022050918/5bc20e4809d3f2ae4c8b84e2/html5/thumbnails/12.jpg)
Algoritmo: Componentes F-Conexas
• Exemplo v3 v1
v2 v4
1100
1100
1111
1111
R
1111
1111
0011
0011
Q
1100
1100
0011
0011
QR
![Page 13: Introdução à Teoria dos Grafos - Edmilson Campos · •Introdução à Teoria dos Grafos • Márcia Aguiar Rabuske – Editora da UFSC •Estrutura de Dados e Algoritmos em Java](https://reader034.vdocuments.pub/reader034/viewer/2022050918/5bc20e4809d3f2ae4c8b84e2/html5/thumbnails/13.jpg)
Grafo Reduzido
• Grafo Reduzido G*=(V*, A*)
• Grafo onde cada vértice corresponde a uma componente
fortemente conexa do grafo original
• x1* = {v1, v2}
• x2* = {v3, v4}
x2* x1*
v3 v1
v2 v4
![Page 14: Introdução à Teoria dos Grafos - Edmilson Campos · •Introdução à Teoria dos Grafos • Márcia Aguiar Rabuske – Editora da UFSC •Estrutura de Dados e Algoritmos em Java](https://reader034.vdocuments.pub/reader034/viewer/2022050918/5bc20e4809d3f2ae4c8b84e2/html5/thumbnails/14.jpg)
Vértice de Corte
• Um vértice é dito ser um vértice de corte se sua remoção
(juntamente com as arestas a ele conectadas) provoca
uma redução na conexidade do grafo
• A conectividade do grafo é 1, pois removendo v5
desconectamos o grafo
• Ex: {v3, v4}, {v5}
4 3
8 7
1
2
5
6
1
4 3
8 7
2
6
![Page 15: Introdução à Teoria dos Grafos - Edmilson Campos · •Introdução à Teoria dos Grafos • Márcia Aguiar Rabuske – Editora da UFSC •Estrutura de Dados e Algoritmos em Java](https://reader034.vdocuments.pub/reader034/viewer/2022050918/5bc20e4809d3f2ae4c8b84e2/html5/thumbnails/15.jpg)
Aresta de Corte
• Uma aresta é dita ser uma aresta de corte se sua
remoção provoca uma redução na conexidade do grafo
• A conectividade de arestas do grafo é 2, pois removendo
(v3,v5) e (v4,v5) desconectamos o grafo
• Ex: {(v1,v3),(v2,v3),(v4,v5)}
• Ex: {(v3,v5),(v4,v5)}
4 3
8 7
1
2
5
6
4 3
8 7
1
2
5
6
![Page 16: Introdução à Teoria dos Grafos - Edmilson Campos · •Introdução à Teoria dos Grafos • Márcia Aguiar Rabuske – Editora da UFSC •Estrutura de Dados e Algoritmos em Java](https://reader034.vdocuments.pub/reader034/viewer/2022050918/5bc20e4809d3f2ae4c8b84e2/html5/thumbnails/16.jpg)
Base
• Uma base de um grafo G(V,A) é um subconjunto B V,
tal que:
• Dois vértices quaisquer de B não são ligados por nenhum caminho
• Todo vértice não pertencente a B pode ser atingido por um
caminho partindo de B
1
2
3
5
6
7 4
8 B
A
![Page 17: Introdução à Teoria dos Grafos - Edmilson Campos · •Introdução à Teoria dos Grafos • Márcia Aguiar Rabuske – Editora da UFSC •Estrutura de Dados e Algoritmos em Java](https://reader034.vdocuments.pub/reader034/viewer/2022050918/5bc20e4809d3f2ae4c8b84e2/html5/thumbnails/17.jpg)
Anti-Base
• Uma anti-base de um grafo G(V,A) é um subconjunto A
V, tal que:
• Dois vértices quaisquer de A não são ligados por nenhum caminho
• Todo vértice não pertencente a A pode atingir A por um caminho
1
2
3
5
6
7 4
8 B
A
![Page 18: Introdução à Teoria dos Grafos - Edmilson Campos · •Introdução à Teoria dos Grafos • Márcia Aguiar Rabuske – Editora da UFSC •Estrutura de Dados e Algoritmos em Java](https://reader034.vdocuments.pub/reader034/viewer/2022050918/5bc20e4809d3f2ae4c8b84e2/html5/thumbnails/18.jpg)
Raiz e Anti-Raiz
• Raiz
• Se a base de um grafo G(V,A) é um conjunto unitário
• Anti-Raiz
• Se a anti-base de um grafo G(V,A) é um conjunto unitário
1
2
4
5 3
B A
![Page 19: Introdução à Teoria dos Grafos - Edmilson Campos · •Introdução à Teoria dos Grafos • Márcia Aguiar Rabuske – Editora da UFSC •Estrutura de Dados e Algoritmos em Java](https://reader034.vdocuments.pub/reader034/viewer/2022050918/5bc20e4809d3f2ae4c8b84e2/html5/thumbnails/19.jpg)
Distância
• Distância d(v,w)
• É o comprimento do menor caminho entre dois vértices v e w
pertencentes ao grafo G(V,A)
• Se não houver caminho, a distância é infinita
• Propriedades
• d(u,v) 0, com d(u,v)=0, se e somente se, u = v
• d(u,v) = d(v,u) para grafos não orientados
• d(u,v) + d(v,w) d(u,w)
![Page 20: Introdução à Teoria dos Grafos - Edmilson Campos · •Introdução à Teoria dos Grafos • Márcia Aguiar Rabuske – Editora da UFSC •Estrutura de Dados e Algoritmos em Java](https://reader034.vdocuments.pub/reader034/viewer/2022050918/5bc20e4809d3f2ae4c8b84e2/html5/thumbnails/20.jpg)
Exercício
• Obter as distâncias
• d(1,8), d(1,4), d(1,3)
3 1 2 4
7 5 6 8
![Page 21: Introdução à Teoria dos Grafos - Edmilson Campos · •Introdução à Teoria dos Grafos • Márcia Aguiar Rabuske – Editora da UFSC •Estrutura de Dados e Algoritmos em Java](https://reader034.vdocuments.pub/reader034/viewer/2022050918/5bc20e4809d3f2ae4c8b84e2/html5/thumbnails/21.jpg)
Referências
• 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