Sunteți pe pagina 1din 11

Universidade Federal da Bahia

Instituto de Matemática
Departamento de Ciência da Computação

NOTAS DE AULA
Texto 1

MAT156 - Introdução à Teoria dos Grafos


Profa. Fabíola Gonçalves Pereira Greve
Estas notas de aula foram gentilmente elaboradas pelo aluno Jorge Leite Jr. no semestre 2003.1, a
partir das aulas expositivas ministradas pela profa Fabíola Greve.

1.0 Histórico

1736 - Problema das Pontes de Konisbergs (Euler)


Origem da teoria dos grafos

1850 - Problema das Quatro Cores (De Morgan)


Qual o número mínimo de cores para se colorir um mapa.

1859 - Problema do Ciclo Hamiltoniano (Hamilton)


É possível realizar um caminho no grafo, de tal forma a percorrer todos os
vértices uma única vez e voltar ao ponto de partida ?

1940 - Utilização em Pesquisa Operacional


Impulsionada pelas pesquisas militares

1960 - Uso em Informática


Informática proporciona avanço em Teoria dos grafos, através da resolução
de problemas computacionalmente.
Teoria dos Grafos é aplicada para resolver diversos problemas em
Informática (redes, compiladores, banco de dados, engenharia de software, etc.)

2.0 Definição

Abstração matemática que modela situações aonde podemos identificar objetos


chamados vértices e relacionamento chamados arestas.

Grafo: Um grafo G (V,E) é um conjunto V de vértices e uma família E de pares


não ordenados de elementos de V.
Exemplo.:
V = { u,v,x,w}
E = { (u,v),(u,x),(v,x),(x,w)}
Temos que u e x são extremos da aresta (u,x)

A aresta (u,x) incide em u e x, ou seja liga ou une u a x.

|V| = n (número de vértices do conjunto)


E = { (u,v),(v,u),(x,u),(u,x),(v,x),(x,w),(w,w), (w,w)}
|E| = m ((número de arestas do conjunto)

Dois vértices são adjacentes se existe uma aresta


que os une.
Duas arestas são adjacentes se incidem num mesmo
vértice.

Grafo simples: G(V,E) é simples se E é um conjunto de pares não-ordenados de


elementos distintos de vértices.

Dígrafo ou Grafo Orientado: D(V,A) é um conjunto finito não-vazio de V e A uma


família de pares ordenados de elementos de vértices.
A é dito conjunto de arcos ou de arestas.

Ex.: (u,v) = arco de u para v

Grafo orientado simples é um dígrafo sem laços e sem arestas múltiplas.

Subgrafo : Subgrafo de G é um grafo H em que todos os vértices V(H) pertencem


a V(G) e todas as suas arestas E(H) pertencem a E(G). H ⊆ G ( H é subgrafo de
G). Quando H ⊂ G dizemos que H é subgrafo próprio.

Grau de vértice: é o número arestas de g(v) que incidem no vértice.


g(w)=1, g(x) =2, g(v) = 4

Obs: a incidência de um loop vale 2. Um vértice isolado tem


G(a)=0 (zero)

Gin(V) é a quantidade de arestas que “entram” no vértice V.


Gout (V) é a quantidade de arestas que “saem” do vértice V.

∑i=1,n g(vi) = 2 * |E| ou seja é sempre par. O somatório dos graus dos vértices de
um grafo é sempre par.

Lema do aperto de mãos (Handshaking Lema). Se todos se dão as mãos, o


número total de mãos apertadas é par.”

Modelagem em grafos:
- Vértices = pessoas
- Aperto de mãos = arestas
- Grau = mãos

Corolário: a quantidade de vértices de grau impar é par.


|Vg impar| = par

3.0 Tipos de Grafos

1) Grafo Nulo, Nn , onde |E| = ∅

2) Grafo Completo Kn , Todos os vértices se relacionam entre si


 E (Kn) = (n (n-1)) / 2

3) Grafo regular (K- Regular)


todos os vértices têm o mesmo grau g (v) = k

a) Kn é regular

4) O Grafo circuito é um grafo simples 2-regular, Cn

5) Grafo Bipartite ou Bipatido: um grafo G(V,E) é bipartite quando o seu


conjunto de vértices V puder ser particionado em dois subconjuntos V1e V2, tal
que toda aresta de G une um vértice de V1 a outro vértice de V2..

G é bipartite se G é bicolorível, ou seja, podemos colorir os vértices de G com


2 cores, de tal forma que vértices adjacentes tenham cores distintas.

Todo G Bipartite é bicolorível e vice versa

Grafo Bipartite Completo = G (V1, V2) simples é completo se todo vértice de V1


se relaciona com V2 .
Os grafos k2,3 e k3,3 são bipartite completos

Se  V1 = r e  V2 = s, então E (G (V1 , V2)) = r . s

Grafo Estrela

Isomorfismo de grafos
Dois grafos G1 e G2 são isomorfos se existe uma correspondência um a um
entre os vértices de G1 e os vértices de G2 com a propriedade de que o número
de arestas unindo qualquer arestas em G1 é igual ao número de arestas unindo
qualquer arestas em G2

Definição: Dados dois grafos G1 (V1 , E1) e G2 (V2 , E2) . G1 ≅ G2 (G1 é isomorfo
a G2) se V1= V2= n e existe uma função unívoca f : V1→ V2 , tal que se
(v , w) ∈ E1 ⇒ ( f (v) , f (w) ) ∈ E2 para todo v, w ∈ V1 .

Nem todo 2 grafos tal que  V1 =  V2 = n são isomorfos . O Problema do

Como realizar uma associação entre vértices de V1 e V2 de tal maneira a


identificar o isomorfismo?
Em outras palavras, faça um algarítmo que demonstre o isomorfismo entre dois
grafos.
⇒ Algoritmo direto analisaria as n! possibilidades de equivalência .
• Complexibilidade de algarítmos sem problemas n0 por caso 0 (n!)
• Não se sabe se existe algarítmo polinominal que resolva esse problema ,
ou seja , não se sabe se isomorfismo ∈ P ou ∈ NP completo .

Teorema da Amizade: Mostre que em toda cidade com pelo menos 2


habitantes , residem 2 pessoas com mesmo nº de amigos habitantes da cidade.

Vértices = pessoas
Arestas = relação de amizade

∀ G (V,E) simples , onde  V ≥ 2 , existe 2 vértices x e y ∈ V (G) , tal que g (x) =


g (y)

Prova:
g (v) = {0,1,..., n -1}
g (v) = 0 e g (w) = n – 1 IMPOSSÍVEL (pois um não se relaciona com ninguém)
g (v) = n – 1 e g (w) = 0 IMPOSSÍVEL (pois um não se relaciona com ninguém)

prova: Suponha que para todo vértice de V , g (x) ≠ g (y)

g (v) ⇒ {0,...., n – 1}

Tem-se V= n vértices g (v1) = 0, g (v2) = 1;...; g (vn) = n – 1

n – 1 graus para serem atribuídos a n vértices. Logo temos uma contradição

prova direta: Existem n vértices . Suponha que exista x, g (x) = 0 , Nesse caso
somente a graus {0 , 1 ,..., n – 2} podem ser atribuídos ∀ w , w ∈ v , como existem
n – 1 vértices para n – 2 graus diferentes , existe um y , tal que , g (x) = g (y) .
Esse raciocínio vale para g (x) = n – 1 ou genericamente g (x) = k

OPERAÇÃO SOBRE GRAFOS

• União e soma de grafos

Formas de se combinar grafos para se obter um grafo maior


Considere 2 grafos G1 (V1 , E1) e G2 (V2 , E2) tal que V1 ≠ V2
G1 U G2 ⇒ ( (V1 U V2) , (E1 U E2) )
A soma (G1 + G2) é a união de G1 a G2 somado a ligação de cada vértice de G1
a cada vértice de G2

⇒ União e soma de grafos são operações comutativas e associativas .

G1 U G2 = G2 U G1
(G1 U G2) U G3 = (G2 U G3)

Grafo Conexo não pode ser expresso como a união de dois outros grafos de
outra forma , ele é dito desconexo.

Um grafo desconexo pode ser expresso como a união de um nº finito de


grafos conexos , cada um deles sendo designado componente de G .
Complemento de um grafo simples

Seja G um grafo simples com conjunto de vértices V. O complemento de G, G'


é o grafo simples que possui V como conjunto de vértices , sendo que 2
vértices são adjacentes em , G' se e somente se não são adjacentes em G .

Operações num Grafo

1) Remoção de aresta

Se ''e'' é uma aresta de um grafo G , denota-se G - e , o grafo obtido de G pela


remoção da aresta ''e''.
Mas genericamente , se F é um conjunto de arestas em G , denota-se G - F ao
grafo obtido pela remoção de F.

2) Remoção de vértice

Se v é um vértice de G , denota-se por G – v , o grafo obtido pela remoção de v


de G , conjuntamente com as arestas incidentes a v . Mas genericamente , G –
S , onde S é conjunto de vértices , denota a remoção definida .
3) Contração de arestas

Se ''e'' é uma aresta de um grafo G , denota-se G \ e , o grafo obtido de G pela


remoção da aresta ''e'' = (x,y) , e pela junção dos seus extremos x e y , de tal
maneira que o vértice resultante seja incidente as arestas originalmente
incidentes a x e y .

Representação de um grafo no computador

Matriz de Adjacências
Seja G=(V,E) um grafo com n vértices. A matriz de adjacência para G é um array

bidimensional nxn, que denotaremos por A, onde A(i,j)=1 se a aresta está


presente em G. A matriz de adjacência para grafos não dirigidos é sempre
simétrica.

O grau de um vértice Vi em um grafo não dirigido, representado por matriz de


adjacência, pode ser obtido pela soma de sua linha (ou coluna) correspondente.
Para um dígrafo, a soma dos elementos na linha i representa o grau de saída do
vértice Vi enquanto a soma dos elementos na coluna j representam o grau de
entrada de Vi.

O problema com matriz de adjacência na representação de grafos é que questões


como: ''quantas arestas existem no grafo?'', ''o grafo é conexo?'', serão
respondidas em tempo O(n2). Se o grafo possui poucas arestas, este tempo pode
ser melhorado utilizando-se listas de adjacências, como veremos a seguir.

Listas de Adjacências

Nesta representação, as n linhas da matriz de adjacência são representadas como


n listas encadeadas. Existe uma lista para cada vértice em G. Os nós na lista i
representam os vértices que são adjacentes ao vértice i.
Cada nó na lista possui pelo menos dois campos: VÉRTICE, que armazena o
indice do vértice que é adjacente i e NEXT, que é um ponteiro para o próximo nó
adjacente. As cabeças das listas podem ser armazenas em um array de ponteiros
para facilitar o acesso aos vértices. É conveniente armazenarmos em cada
entrada do array de cabeças de listas um campo FLAG que será utilizado
posteriormente para indicar se um dado vértice possui alguma propriedade, por
exemplo, em buscas, este FLAG pode indicar se um dado vértice já foi visitado ou
não.

No caso de um grafo não dirigido com n vértices e e arestas, a representação


acima requer um array de tamanho n para as cabeças e 2e nós nas listas. O grau
de qualquer vértice i em um grafo não dirigido pode ser determinado pelo número
de nós na lista do vértice i. O número total de arestas no grafo pode ser
determinado em tempo O(n+e).
No caso de dígrafos, o número total de nós nas listas é e. O grau de saída de um
nó i é o número de nós na lista do vértice i. O grau de entrada de um vértice i pode
ser calculado em tempo O(n+e) (como este cálculo pode ser feito?).
Existem variações dessas representações para se mostrar as arestas que ligam
determinados vertices. São chamada Matriz de Incidência e Lista de Arestas
Incidentes.

S-ar putea să vă placă și