Buscar

AULA 5

Prévia do material em texto

Estácio Teresina
Curso de Ciência da Computação
Algoritmos em Grafos
Aula 5 – Conceitos Básicos de Grafos
Joselito Mendes de Sousa Junior
Conceitos Importantes
 Grafo simétrico é um grau orientado no qual, sempre
que houver um arco (i, j), haverá um arco (j, i).
 Ou seja, equivale a um grafo não-orientado.
2
Conceitos Importantes
 Grafo completo é um grafo, orientado ou não, que possui
ao menos uma ligação entre cada par de vértices.
 Em outras palavras, é um grafo simples (não permite arestas
paralelas nem laços) no qual todos os vértices distintos são
adjacentes.
 Grafos completos recebem nomes especiais de acordo com
a quantidade de vértices que ele contém
 𝐾1
 𝐾2
 𝐾3
 ...
3
Grafo Completo
4
A B
C
Grafo Não-Completo
A B
C
Grafo Completo 𝐾3
D E
Grafo Completo 𝐾2
F
Grafo Completo 𝐾1
5 2
4 3
1
Grafo Completo 𝐾5
Conceitos Importantes
 Um grafo é bipartido quando o seu conjunto de
vértices puder ser particionado em dois subconjuntos
tais que não haja ligações internas a eles, ou seja, entre
dois vértices de um mesmo subconjunto.
 Alguns problemas de grafos podem ser resolvidos de
maneira mais fácil se forem modelados como grafos
bipartidos.
5
Grafo Bipartido
6
A C
B D
E
F
Grafo Bipartido
A
C
E
B
D
F
𝑃1 𝑃2
Grafo Bipartido
 O grafo a seguir é bipartido? Se sim, determine suas
partições.
7
A B C
H I D
G F E
Solução: Teorema das
duas cores (colorir seus
vértices com apenas duas
cores distintas, de modo
que vértices adjacentes
não tenham a mesma
cor).
Grafo Bipartido
8
A B C
H I D
G F E
𝑃1 𝑃2
𝑃1 = {A, C, E, G, I} 𝑃2 = {B, D, F, H}
A
C
E
G
I
B
D
F
H
Grafo Bipartido
 E se fosse esse grafo?
9
A B
E CF
D
 Os vértices E e F são vizinhos
e possuem a mesma cor.
 Os vértices D e E são vizinhos
e possuem a mesma cor.
 Logo, o grafo não é bipartido.
Conceitos Importantes
 Conexidade é a propriedade de um grafo ser, ou não,
conexo. Um grafo é conexo sempre que, dado um
vértice qualquer, é possível alcançar todos os outros
vértices.
 Em grafos não orientados conexos, sempre se pode ir
de um vértice a outro, atravessando arestas. Se, em
alguma situação, uma aresta for indispensável a este
processo, ela é chamada de ponte do grafo. A remoção
de uma ponte, portanto, desconecta o grafo.
10
Conceitos Importantes
11
1 2
4 3
5
x
 A remoção da aresta x, tornaria
o grafo 𝐺1 desconexo.
 Logo, a aresta x é uma ponte do
grafo.
Grafo 𝐺1
Conexidade
 Em grafos conexos, temos 3 tipos de conexidade:
 Fortemente conexo, onde existe sempre um caminho entre
qualquer par de vértices. Grafos fortemente conexos podem
ser chamados de f-conexo.
 Conexo ou semi-fortemente conexo, onde para todo par de
vértice (u, v), existe um caminho de u até v ou existe um
caminho de v até u. Grafos semi-fortemente conexos podem
ser chamados de sf-conexo.
 Fracamente conexo ou simplesmente conexo, onde se não
considerarmos a orientação, existem cadeias (caminhos)
entre todos os pares de vértices. Grafos simplesmente
conexos podem ser chamados de s-conexo.
12
Conceitos Importantes
 Dado um grafo G com 4 componentes f-conexos. Em
um componente f-conexo, podemos “ir” e “vir” de um
vértice a qualquer outro. Se a partir de um vértice u,
pudermos chegar a um vértice v, podemos chegar a
todos os vértices da componente f-conexa à qual v
pertence. Isso sugere a criação de um grafo reduzido.
 Grafo reduzido 𝐺𝑟 = (𝑉𝑟, 𝐸𝑟) é formado por:
 Para cada componente conexo, teremos um vértice de 𝐺𝑟.
 Dois vértices x e y de 𝐺𝑟 serão ligados por um arco se
houver um caminho indo de qualquer vértice da
componente f-conexa que contém x a qualquer vértice da
componente f-conexa que contem y.
13
Grafo Reduzido
14
F-conexo F-conexo
F-conexo F-conexo
1 2
34
1 2
34
Grafo G Grafo 𝐺𝑟
Conceitos Importantes
 O grafo reduzido tem a mesma conexidade do grafo
original (dizemos que a redução do grafo preserva a sua
conexidade).
 Se G for não conexo, 𝐺𝑟será não conexo.
 Se G for conexo, 𝐺𝑟 será um ponto (um ponto é f-conexo).
 A conexidade em grafos orientados é uma propriedade
muito importante em certos contextos. No trânsito, por
exemplo, é claro que o grafo que modela a rede de ruas
terá de ser f-conexo ou, então, haverá alguma rua onde
um carro não poderá entrar, ou, se entrar, não poderá
mais sair.
15
Propriedades
 Todo grafo f-conexo atende às definições de grafo sf-
conexo e s-conexo, ou seja:
 Em um grafo f-conexo sempre existe um caminho de um
vértice a outro (sf-conexidade).
 Poderemos andar de qualquer vértice a qualquer outro, sem
respeitar o sentido dos arcos, como os pedestres andam
pelas ruas de mão única, por exemplo (s-conexidade)
 Um grafo sf-conexo atende às definições de um grafo
s-conexo.
16
Componente F-Conexo
 A determinação das componentes f-conexas de um
grafo orientado é uma etapa muito importante no
estudo de muitos modelos de grafo, pois ela permite a
simplificação do modelo (imagine grafos com 50.000
vértices).
 Considerando um grafo orientado G. Se tomarmos um
vértice x e determinarmos o seu fecho transitivo direto
𝑹+(x), teremos encontrado todos os vértices atingíveis
a partir de x, ou seja, todos os vértices para os quais
existe um caminho a partir de x.
17
Componente F-Conexo
 Se, então, acharmos o fecho transitivo inverso 𝑹−(x),
teremos encontrado todos os vértices a partir dos quais
x é atingível, ou seja, todos os vértices a partir dos
quais existe um caminho para x.
 Assim como x pertence aos dois fechos, podem haver
outros vértices nessa situação. Basta olhar para a
interseção.
18
Componente F-Conexo
 Os vértices dessa interseção formam uma componente
f-conexa do grafo.
19
Vértices 
de 𝑅+(x) 
Vértices 
de 𝑅−(x) 
x
𝑅+(x) ∩ 𝑅−(x): contém os componentes 
f-conexos que contém x
Componente F-Conexo
 Utilizamos o Algoritmo de Malgrange para construir
os dois fechos transitivos de um vértice, fazer a
interseção deles e retirar do grafo os vértices dessa
interseção, até que todos os vértices sejam separados
de suas componentes.
20
Algoritmo de Malgrange
21
Algoritmo de Malgrange
22
 Utilizando o vértice 1 para achar seu fecho transitivo
direto (ou descendentes)
Algoritmo de Malgrange
23
 Utilizando o vértice 1 para achar seu fecho transitivo
inverso (ou ascendentes)
Algoritmo de Malgrange
 Assim, temos 𝑅+ 1 ∩ 𝑅− 1 = 1,4,5 ∩ 1,2,3,6 = 1
 Depois, fazemos isso com os vértices 2, 3, 4, 5 e 6. Assim,
encontramos os seguintes componentes f-conexos:
 {1}
 {2, 3, 6}
 {4, 5}
24
Algoritmo de Malgrange
 Ajustando nosso grafo, temos:
 Assim, o nosso grafo reduzido é:
25
6
3
2 1
4
5
{2, 3, 6}
{4, 5}
{1}
{2, 3, 6}
{4, 5}
{1}
Algoritmo de Malgrange
 Observações:
1. No algoritmo, as palavras em negrito (como enquanto) são
comandos a serem executados.
2. Pode-se notar que o algoritmo modifica o conteúdo do conjunto de
vértices, que diminui a cada iteração: por isso é conveniente
trabalhar com a cópia Y de V.
3. A variável I, como comentado, é um indexador das componentes f-
conexas.
4. O algoritmo pode ser aplicado a grafos não orientados, bastando,
neste caso, executar a varredura uma só vez e dispensando-se a
fase de interseção. O resultado será o particionamento do grafo em
suas componentes conexas.
5. Se um grafo orientado for f-conexo, o algoritmo descobrirá isso em
uma só iteração (pois existirá uma única componente). O mesmo
ocorrerá com um grafo não orientado conexo.
26

Continue navegando