Sunteți pe pagina 1din 76

Grafos

CEFET/RN
Problemas Algortmicos

Categorias de Problemas Algortmicos

Problema de Deciso

Problema de Localizao

Problema de Otimizao
Problemas Algortmicos

Categorias de Problemas Algortmicos

Problema de Deciso

Consiste em responder Sim ou No determinada


pergunta

Ex.: No grafo abaixo existe uma clique >= 3?


Problemas Algortmicos

Categorias de Problemas Algortmicos

Problema de Localizao

Consiste em encontrar, caso exista, determinada


estrutura satisfazendo requisitos especificados por
uma questo

Ex.: encontrar uma clique >= 3?


Problemas Algortmicos

Categorias de Problemas Algortmicos

Problema de Otimizao

Consiste em encontrar determinada estrutura


satisfazendo um critrio de otimizao pr-definido

Ex.: encontrar uma clique de tamanho mximo no


grafo abaixo
Conexidade e Distncia

Aplicaes:

Telefonia

Trfego

Redes de comunicao
Conexidade e Distncia

Grafo Conexo

Um grafo G(V,A) dito ser conexo ou


simplesmente conexo ou S-Conexo. Se h
pelo menos uma seqncia de arestas
ligando cada par de vrtices do grafo G.
v1
v2 v3
v1
v2
v3
v4
v5
v6
v7
Conexo No-Conexo
Componente
Conexa
Conexidade e Distncia

Grafo Conexo

Um grafo no conexo consiste de dois ou


mais subgrafos conexos (componentes)
Conexidade e Distncia

Algoritmo para Conexidade

Reduzir cada componente do grafo a um nico


vrtice. Processo de reduo sequncial onde todos
os vrtices adjacentes a um dado vrtice so
fundidos com ele
v1
v4
v2
v3
v1
V3 +v4
v2
V1+v2+v3 +v4
Conexidade e Distncia

Algoritmo para Conexidade

OBS.: qualquer grafo simples com n vrtices e mais


que (n-1)(n-2)/2 arestas conexo
v1
v2
v3
N=3
Num_arestas > (3-1)(3-2)/2=1
Conexidade e Distncia

Algoritmo para Conexidade de Goodman


P0 [inicializao]
H=Vg; // todos os vrtices
c=0;
P1[gere a prxima componente conexa]
Enquanto (H!=vazio){
selecione um vrtice v0 pertencente a H
Enquanto (v0 for adjacente a algum vrtice v pertencente a H){
H=grafo resultante da fuso de v com v0;
}
remova v0, isto , faa H=H-v0;
c=c+1;
}
P2[Testa o tipo de conexidade]
Se(c>1)
G no conexo
senao
G conexo
Conexidade e Distncia

Antecessor de um vrtice

todo Vj que seja extremidade inicial de uma aresta


que termina em Vi. Sua notao
) (
i
v

v1
v2
v3
v4
Antecessores de v3=
{v1,v2,v4}
Conexidade e Distncia

Sucessor de um vrtice

todo Vj que seja extremidade final de uma aresta


que termina em Vi. Sua notao
) (
i
v
+

v1
v2
v3
v4
Sucessores de v1=
{v2,v3,v4}
Conexidade e Distncia

Fechos Transitivos Diretos

Um fecho transitivo direto de um vrtice Vi o


conjunto de todos os vrtices que podem ser
atingidos a partir de Vi, em um nmero qualquer de
etapas. Sua notao
) (
^
i
v
+

)) ( ( ) (
...
)) ( ( ) (
) ( ) (
) ( } { ) (
) 1 (
2
1
^ ^
i
n
i
n
i i
i i
n
k
i
k
i i
v v
v v
v v
v v v
+ + +
+ + +
+ +

+ +



1
]
1


Conexidade e Distncia

Fechos Transitivos Diretos


} , , , { ) (
} , , { ) (
2 3 1 5 5
^
3 2 1 1
^
v v v v v
v v v v


+
+
v1
v5
v2
v3
v4
Conexidade e Distncia

Fechos Transitivos Inverso

Um fecho transitivo inverso de um vrtice Vi o


conjunto de todos os vrtices que podem atingir Vi, em
um nmero qualquer de etapas. Sua notao
)) ( ( ) (
...
)) ( ( ) (
) ( ) (
) ( } { ) (
) 1 (
2
1
^
i
n
i
n
i i
i i
n
k
i
k
i i
v v
v v
v v
v v v






1
]
1


Conexidade e Distncia

Fechos Transitivos Inverso


} { ) (
} , { ) (
5 5
^
1 5 1
^
v v
v v v

v1
v5
v2
v3
v4
Conexidade e Distncia

Grafo Fortemente Conexo

No caso de grafos orientados, um grafo dito ser


fortemente conexo (F_Conexo) se todo par de
vrtices ou seja, se cada par de vrtices participa
de um circuito. Isto significa que cada vrtice pode
ser alcanvel partindo-se de qualquer outro
vrtice de grafo.
v1
v4
v6
v2
v5
v3
v1
v4
v3
v6 v5
v2
Conexidade e Distncia

Componente Fortemente Conexa

Um grafo G(V,A) que no fortemente conexo


formado por pelo menos dois subgrafos
F_Conexos (fortemente conexo). Cada um desses
grafos dito ser uma componente fortemente
conexa de G.
v1
v4
v6
v2
v5
v3
v7
Conexidade e Distncia
Mtodo para achar as componentes F-Conexas de um Grafo
H = V;
Enquanto(H!=vazio){
Ache a componente conexa em relao a Vi
}
v3
) (
) ( ) ( ) (
^ ^
i
i i i
v y H H
v v v y


+

v1
v2
v4
Conexidade e Distncia
Mtodo para achar as componentes F-Conexas de um Grafo usando a
matriz R e Q
Matriz
Para se encontrar as componentes fortemente conexas faz-se
[ ]
ij
R

'


contrrio caso
v vrtice no partindo atingido ser pode v vrtice o se
i j
ij
, 0
, 1
t
R Q
Q R
Conexidade e Distncia
Ex.:
1
1
1
1
]
1

1 1 0 0
1 1 0 0
1 1 1 1
1 1 1 1
R
v3
v1
v2
v4
1
1
1
1
]
1

1 1 1 1
1 1 1 1
0 0 1 1
0 0 1 1
Q
1
1
1
1
]
1


1 1 0 0
1 1 0 0
0 0 1 1
0 0 1 1
Q R
Conexidade e Distncia

Grafo Reduzido

Cada vrtice corresponde a uma componente


fortemente conexa do grafo. Sua notao
) , (
* * *
A V G
v2
v1
v3
v1
v2
v4
Conexidade e Distncia
Vrtice de Corte
Um vrtice dito ser um vrtice de corte se sua remoo(juntamente com
as arestas a ele conectadas) provoca uma reduo na conexidade do grafo
A conectividade do grafo 1( pois removendo 5 desconectamos o
grafo)
4
3
8
7
1
2
5
6
Ex.: {3,4}
{5} -> vrtice de corte de
cardinalidade mnima
Conexidade e Distncia
Arestas de Corte
Uma aresta dita ser uma aresta de corte se sua remoo provoca uma
reduo na conexidade do grafo
A conectividade de arestas do grafo 2( pois removendo (3,5) e
(4,5) desconectamos o grafo)
4
3
8
7
1
2
5
6
Ex.: {(1,3),(2,3),(4,5)}
{(3,5,(4,5)} -> arestas de
corte de cardinalidade mnima
Conexidade e Distncia

Base

Uma base de um grafo G(V,A) um subconjunto


, tal que:
Dois vrtices quaisquer de B no so ligados por nenhum
caminho
Todo vrtice no pertencente a B pode ser atingido por um
caminho partindo de B
1
2
V B
3
5
6
7
4
8
B
A
1
2
3
4
5
6
7
B
A
Conexidade e Distncia

Anti-Base

Uma anti-base de um grafo G(V,A) um subconjunto


, tal que:
Dois vrtices quaisquer de A no so ligados por nenhum
caminho
Todo vrtice no pertencente a A pode atingir A por um
caminho
1
2
V B
3
5
6
7
4
8
B
A
1
2
3
4
5
6
7
B
A
Conexidade e Distncia

Raiz

Se a base de um grafo G(V,A) um conjunto unitrio


ento esta base a raiz de G
1
2
4
5
3
B
A
Conexidade e Distncia

Anti-Raiz

Se a anti-base de um grafo G(V,A) um conjunto


unitrio ento esta anti-base a anti-raiz de G
1
2
4
5
3
B
A
Conexidade e Distncia

Distncia

Dado dois vrtices v e w pertencentes ao grafo


G(V,E), denomina-se distncia entre v e w o
comprimento do menor caminho entre esses dois
vrtices. Se no houver caminho, a distncia infinita

Notao d(v,w)

Propriedades:

d(w,v)>=0 ou d(w,v)=0 p/ w=v

d(w,v)=d(v,w) apenas p/ grafos no direcionados

d(z,v) + d(v,w) >= d(z,w)


Conexidade e Distncia

Distncia
d(1,8)? d(1,4)? d(1,3)?
3 1 2 4
7 5 6 8
Caminhos

uma seqncia de arestas onde o


vrtice final de uma aresta o vrtice
inicial da prxima
v4 v2 v3
v5 v1
c1
c2 c3
c4
c5
c6
{c1,c2,c4,c5,c6} {c2,c3,c4,c5}
{v1,v2,v3,v4,v5} {v2,v3,v1,v5,v4}
Caminhos

Um caminho de k vrtices tem (k-1)


arestas, v1v2,v2v3,...,vk-1,vk e o
comprimento do caminho (k-1)

Caminho aberto(simples ou elementar): Todo


os vrtices so distintos. Ex.:{c2,c3,c4}

Caminho fechado ou ciclo: aquele em que o


vrtice inicial igual ao final, ou seja:
v1,v2,...,vk,vk+1, onde vk+1=v1. Ex
{c1,c2,c3,c4,c5} no um caminho aberto
Caminhos

Grafos Eulerianos (grafos de Euler)

So grafos onde possvel achar um caminho


fechado (ciclo), passando em cada aresta uma nica
vez

Quais so os grafos de Euler?


v4
v2 v3
v1
v2 v3
v1
v4
Caminhos

Grafos Eulerianos (grafos de Euler)

Teorema: um grafo conexo G um grafo de Euler se


e somente se todos os seus vrtices so grau par.
v4
v2 v3
v1
v2 v3
v1
v4
Caminhos

Caminhos Eulerianos

So caminhos que passam por cada aresta um vez,


passando por todas

Teorema: baseado no grau dos vrtices do


grafo:existe um caminho Euleriano em um grafo se:
No ocorrer vrtices de grau mpar (inicia e termina no
mesmo vrtice)
v2 v3
v1
v2
v3
v1
v4
v5
Caminhos

Caminhos Eulerianos

Teorema: baseado no grau dos vrtices do


grafo:existe um caminho Euleriano em um grafo se:
Existem 2 vrtices de grau mpar (inicia em um vrtice mpar
e termina em outro vrtice mpar)
v4
v1 v2
v3
Grafo semi-euleriano
Caminhos

Algoritmo para verificar a existncia de um caminho euleriano


grau=0; soma=0; matadj[][]; N=numero de linhas da matriz; f=0;//linha atual;
Enquanto(soma<=2)e(f<=N) {
grau=0;
para(g=0;g<N;g++){
grau+=matadj[f][g];
}
se grau mod 2 == 1 // mpar
soma++
f++;
}
Se (soma>2) NO EXISTE CAMINHO
Senao EXISTE CAMINHO
v5
v1 v2
v4
v3
0 1 0 1 0 5
1 0 1 1 0 4
0 1 0 0 1 3
1 1 0 0 1 2
0 1 0 1 0 1
5 4 3 2 1 grau
Caminhos

Mtodo de Fleury para traar um ciclo euleriano


Inicie em qualquer vrtice v e atravesse as arestas de uma maneira
arbitrria, seguindo as seguintes regras
R1) apague a aresta que foi visitada e se algum vrtice ficar isolado,
apague-o tambm.
R2) em cada estgio, nunca atravesse uma aresta, se naquele
momento a sua remoo divide o grafo em duas ou mais componentes
no triviais (excluindo os vrtices isolados).
c a b
f d e
g
Caminhos

Ciclos e Caminhos Hamiltonianos

Um ciclo hamiltoniano em um grafo conexo G


definido com um caminho simples fechado em que
cada vrtice de G visitado uma nica vez (com
exceo do n inicial == final)

Um ciclo hamiltoniano em um grafo de n vrtices tem


n arestas
v4 v2 v3
v5 v1
c1
c2 c3
c4
c5
c6
-
No um grafo de euler
-
Possui ciclo
hamiltoniano?
Caminhos

Condies para existncia de um caminho


Euleriano em um grafo

Grafo de euler ou semi-euler

Condies para existncia de um caminho


Hamiltoniano em um grafo

No tem soluo
Problema do Carteiro Chins
A primeira referncia ao problema foi em 1962 em uma
revista chinesa, tendo a designao ficada associada ao
problema
Pode ser formulado como o problema de encontrar um ciclo
Euleriano de menor custo
Exemplo: Considere um bairro de uma cidade em que um
carteiro responsvel por distribuir correspondncias. Neste
modelo as arestas ponderadas representaram as ruas e suas
respectivas distncias e os vrtices os cruzamentos. Para que
a correspondncia seja entregue, necessrio que todas as
ruas sejam percorridas pelo menos uma vez e que ao final o
carteiro volte a estao do correio. O problema consiste em
determinar o menor caminho possvel para que o carteiro faa
seu trabalho.
Problemas similares: recolhimento do lixo, inspeo de linhas
de transmisso, inspeo de linhas telefnicas, etc.
Problema do Carteiro Chins

Encontrar o menor caminho(sendo de euler)

Problema do carteiro chins: incio ao fim passando


em todas as arestas uma vez (menor caminho)
caminho de euler
Determinar o custo do menor caminho
Soluo 1: se o grafo for euleriano, aplicar algoritmo de
Fleury
Soluo 2: se o grafo no for de euler aplicar o algoritmo de
carteiro chins (Christofides)
Algoritmo do carteiro chins
P1: determinar os vrtices de grau mpar
P2: construa a matriz de distancia D, com os vrtices de grau
mpar (Dijkstra)
P3: determinar o par de vrtices c/ menor caminho atravs da
matriz D
P4: construa um caminho artificial de vi para vj com custo
encontrado em P3
P5: elimine de D as colunas e linhas correspondentes vi e vj
P6: se houver linhas e colunas em D, volte para P3
P7: ache o caminho de euler (fleury)
P8: o custo ser igual soma dos custos de todas as arestas
acrescida dos custos das arestas encontradas em P3
Algoritmo do carteiro chins
v4
v1
v2
v3
5 2
1
3
1
1
3
4
2
2
7
v6
v
2
v
4
v
7
v
3
2
v5
v
1 5
3
v
8
2
2
Problema do Menor Caminho

Algoritmo Dijkstra

Edsger Dijkstra, ganhador do prmio Turing em 1972

A idia principal o uso de um mtodo guloso para o


problema do caminho mnimo com origem nica.

Funciona em grafo dirigido ou no dirigido com


arestas de peso no negativo, em tempo
computacional O([m+n]log n) onde m o nmero de
arestas e n o nmero de vrtices
Problema do Menor Caminho

Algoritmo Dijkstra -determinar:

Seja G(V,A) e uma funo L(V,W) pertencente aos


reais e um vrtice fixo V0 de V (fonte)

Problema: determinar v0,v1,...,vk, tal que


seja mnimo

+
1
0
1
) , (
k
i
i i
v v l

'

) , (
0
) , (
) , (
j i
j i
j i
j i
v v aresta exitir se custo
v v
v v aresta existir no se
v v L
Problema do Menor Caminho Entre
Dois Vrtices

Algoritmo Dijkstra -determinar:


S={v0}; D[v0]=0;
para cada v pertencente a V-{v0}
D[v]=L(v0,V);
enquanto (s <> V){
escolha o vrtice w pertence V-S tal que D[w] seja mnimo
e congele o antecessor
coloque w em S, isto , faa S=S U {w}
para cada v pertencente V-S faca{
D[v]=min(D[v],d[w]+L(w,v))
se(d[w]+L(w,v)<D[v])
D[v].antecessor=w;
}
}
Problema do Menor Caminho Entre
Dois Vrtices

Ex Dijkstra
v5 v2 v1
v4 v3
50
10 100
60
20
30
10
1
1
1
1
1
1
]
1

0
60 0 20
10 0
50 0
100 30 10 0
Iterao S W d(w) d[2] d[3] d[4] d[5]
Problema do Menor Caminho Entre
Dois Vrtices

Ex Dijkstra
v5 v2 v1
v4 v3
50
10 100
60
20
30
10
1
1
1
1
1
1
]
1

0
60 0 20
10 0
50 0
100 30 10 0
Iterao S W d(w) d[2] d[3] d[4] d[5]
Problema do Menor Caminho Entre
Dois Vrtices

Ex Dijkstra
1
1
1
1
1
1
]
1

0
60 0 20
10 0
50 0
100 30 10 0
v5 v2 v1
v4 v3
50
10 100
60
20
30
10
Iterao S W d(w) d[2] d[3] d[4] d[5]
Inicio
1
2
3
4
v1 - - 10(v1) 30(v1) 100(v1)

-
30,10+
30(v1)
100,10+
100(v1)

,10+50
60(v2)
V1,v2
v2
10


V1,v2,v4
v4
30
-
-
60,30+20

50(v4).limp
100,30+60
90(v4)
V1,v2,v4,v3
v3
50 -
- -
90,50+10
60(v3)
V1,v2,v4,v3,v5
v5
60 -
- -
-
Problema do Menor Caminho Entre
Dois Vrtices

Exerccio Dijkstra
1
3
4
2
2
7
v6
v
2
v
4
v
7
v
3
2
v5
v
1 5
3
v
8
2
2
Problema do Caixeiro Viajante
Consiste em determinar o menor caminho, passando por todos os
vrtices uma nica vez e retornando ao vrtice de origem

Mtodos:
Tentativa e erro - A soluo mais direta (simples em implementao)
consiste em tentar todas as permutaes possveis, de modo a verificar
por fora bruta qual o caminho de menor custo. Dado que a quantidade
de permutaes o nmero de cidades, tal soluo logo torna-se
impraticvel, no sendo utilizada.
Suponha um computador capaz de fazer 1 bilho de adies por
segundo. No caso de 20 cidades, o computador precisa apenas de 19
adies para dizer qual o comprimento de uma rota e ento ser capaz
de calcular 1bilho / 19 = 53 milhes de rotas por segundo. Para
acharmos o tempo de execuo total das diversas possibilidades teremos
que realizar a seguinte conta:
Tempo = 19!/53 milhes = 2.3 x 10 seg
Ou seja, 73 anos!!
Problema do Caixeiro Viajante

Consiste em determinar o menor caminho,


passando por todos os vrtices uma nica vez e
retornando ao vrtice de origem

Mtodos:

Heursticos no so a melhor soluo, porm


conseguem achar uma boa soluo em um tempo
vivel
Problema do Caixeiro Viajante

Consiste em determinar o menor caminho,


passando por todos os vrtices uma nica vez e
retornando ao vrtice de origem

Algoritmo de Roberts e Flores

Partindo de um vrtice inicial, determinar um caminho,


se o mesmo existir, que leva at o prprio vrtice, e
ento, atravs do backtracking continuado, tenta
determinar os demais
Problema do Caixeiro Viajante

Backtracking

Ordem de visita aos nodos da rvore


a
b c d
e f
g h i

1
2
3 4
5 6 7
8 9

a, b, e, (b), f, g, (f), h, (f), i, (f), (b), (a), c, (a), d
onde o caminho em backtracking representado entre parnteses
Problema do Caixeiro Viajante
P1: Escolha um vrtice inicial (xi)
P2: faa S={xi}
P3: adicione a S o primeiro vrtice vivel (xj no
pertencente a S)
P4: repita o passo P3 enquanto houver vrtices viveis
destino do ltimo vrtice vivel (no pertencente S)
encontrado na lista de adjacncias
P5: Se S contm os n vrtices de G, ento a seqncia
encontrada em S um caminho hamiltoniano, digamos
{xi,xj,...,xr}. Se existe uma aresta (xr,xi), ento
existe um ciclo hamiltoniano. Em caso contrrio, no
existe ciclo e deve-se fazer um backtracking, isto , o
ltimo removido de S e adicionado o primeiro vrtice
vivel que destino de xr-1 na lista de adjacncia
P6: o processo termina quando S contm somente o vrtice xi
e no existe vrtice vivel que possa ser adicionado a S.
Caso contrrio voltar para o passo P3
Problema do Caixeiro Viajante
EX.:
v3
v1 v2
v4 v6
v5
S x
j

v1 v2 v3 v4 v5 v6
v2
v3
v5
v1
v4
v3
v6
v3
v4
v1
v2
v3
S={...}
Busca ou Caminhamento em
Grafos

Caminhamento:Processo sistemtico de caminhamento


pelos vrtices e arestas de um grafo

Algoritmo bsico: se G um grafo conexo em que todos os


seus vrtices esto desmarcados. Marque um vrtice
arbitrariamente inicialmente. Selecione, agora, algum
vrtice V que j esteja marcado s seja incidente a alguma
aresta (v,w) ainda no explorada. A aresta (v,w) torna-se
explorada e o vrtice w marcado. O processo termina
quando todas as arestas de G tiverem sido exploradas
Busca ou Caminhamento em
Grafos

Algoritmo busca geral

Escolher e marcar vrtice inicial

Enquanto existir algum vrtice V marcado e


incidente a uma aresta(v,w) no explorada faa:

Escolher o vrtice v e explorar a aresta (v,w)

Se w no marcado ento marcar w


v3
x1 x2
v4 v6
v5
Busca ou Caminhamento em
Grafos

Busca em Profundidade DFS(Depth First


Search)

Uma busca dita em profundidade quando o critrio


de escolha de vrtice marcado ( a partir do qual ser
realizada a prxima explorao de aresta) obedecer a:

Dentre todos os vrtices marcados e incidentes a alguma


aresta ainda no explorada, escolher aquele mais
recentemente alcanado na busca
Busca ou Caminhamento em
Grafos

Algoritmo DFS
Para cada vrtice v pertencente a V faa
v.marcar=0;//no visitado
d(v)=0; t=0;
Para cada vrtice v pertencente a V faa
se(v.marcar==0)
DFS-VISITA(v);
DFS-VISITA(v){
v.marcar=-1;// visitado
d(v)=++t;
Para cada vrtice w pertencente a ADJ[v] faa
se (w.marcar==0)
DFS-VISITA(w);
v.marcar=1; // marcado
s(v)=++t;
}
Busca ou Caminhamento em
Grafos

Exemplo DFS
v1 v2
v3 v4
v5
v6
d(v)
s(v)
Busca ou Caminhamento em
Grafos

Busca em Largura BFS(Breadth First Search)

Uma busca dita em largura quando o critrio de


escolha de vrtice marcado ( a partir do qual ser
realizada a prxima explorao de aresta) obedecer a:

Dentre todos os vrtices marcados e incidentes a alguma


aresta ainda no explorada, escolher aquele menos
recentemente alcanado na busca
Busca ou Caminhamento em
Grafos

Algoritmo BFS
Para cada vrtice v pertencente a V {S} faa
v.marcar=0;//no visitado
v.marcar=-1;// visitado
d(s)=0;
Q={}
Q.enqueue(S);
Enquanto(Q<>vazio){
v=Q.dequeue();
Para cada vrtice w adjacente a ADJ[v] faa
se(w.marcar==0){
d(w)=d(v)+1;
w.marcar=-1;
Q.enqueue(w);
}
v.marcar=1; // marcado
}
Busca ou Caminhamento em
Grafos

Exemplo BFS
v2 v1
v4 v3
v5
v6
Q={} v0=
Grafos Planares
Um grafo dito ser planar se existir alguma representao
geomtrica de G que possa ser desenhada em um plano, de tal modo
que no haja cruzamento de arestas
v4 v3
v2
v1
Grafos Planares
Face: a face de um grafo planar limitada por arestas do grafo e que
no contenha arestas nem vrtices no seu interior
a
b
c
a1 a2
a3
f1
f2
Grafos Planares

Fronteira: a fronteira de uma face o conjunto de arestas que a limita

Ex.: a1 a2 a3 -> fronteiras de f1 e f2


a
b
c
a1 a2
a3
f1
f2
Grafos Planares
Primeiro teorema de Euler para o nmero de faces em um grafo
planar

Um grafo planar e conexo, com n vrtices


e m arestas, possui m-n+2=f faces
6 4 +2 =4 faces
Grafos Planares
Teorema 2
Todo grafo planar no orientado possui um vrtice x com grau <=5
Colorao de Grafos
Surge quando desejamos colorir os vrtices de um grafo de n
vrtices, de tal modo que nunca dois vrtices adjacentes tenham a
mesma cor e que se utilize um nmero de cores mnimo
O ato de pintar os vrtices de um grafo de tal modo que nunca dois
vrtices adjacentes tenham cores iguais chamado de colorao do
grafo
Amarelo Branco
Azul Verde
Amarelo Branco
Azul Amarelo
Colorao com nmero mnimo
de cores 3-cromtico
Colorao de Grafos
Nmero Cromtico
Um grafo G que exige k-cores para pintar seus vrtices, e no menos,
chamado de grupo k-cromtico e o nmero k chamado de nmero
cromtico de G
Amarelo Vermelho
Azul
Amarelo
Colorao com nmero mnimo
de cores 3-cromtico
Colorao de Grafos
Observaes Derivadas da definio
Um grafo constitudo de somente vrtices isolados 1-cromtico
Um grafo com uma ou mais arestas (sem lao) pelo menos 2-cromtico
Um grafo completo de n vrtices n-cromtico
Um grafo consistindo de um ciclo com n>2 vrtices 2-cromtico, se n for par e 3-
cromtico se n for mpar
Qualquer grafo planar pode ser colorido com no mximo quatro cores
Toda rvore com 2 ou mais vrtice 2-cromtico
Se GRMAX o grau mximo de um vrtice em um grafo G, ento o nmero
cromtico de G menor ou igual a GRMAX+1
3-cromtico 2-cromtico
N crom 4 <= 3+1
Colorao de Grafos
Algoritmo para Colorao dos Vrtices de um Grafo
Entrada: grafo matriz de adjacncia)
Sada: Tk, k=1,2,..., onde Tk contm os vrtices coloridos com a cor k
P1: sejam v1,v2,...,vk os vrtices do grafo G(V,A);
Coloque os vrtices numa lista de tal modo que Gr(vi)>=gr(vj) para todo
e qualquer vi, vj pertencente a V (ordem crescente de graus)
P2: i=1;
P3: enquanto(v<>vazio){
coloque o 1 elemento na lista em Ti(vi)
retire Vj da lista
enquanto(existir na lista algum vrtice vk no adjac.a qualquer vrtice de Ti){
coloque Vk em Ti;
retire Vk da lista ;
}
i++
}
P4: o nmero cromtico dado por i-1 e os vrtice de mesma cor esto em Ti
Colorao de Grafos
Algoritmo para Colorao dos Vrtices de um Grafo
v4
v3
v2
v1
v5
v6
v7
v8
Ti={} i=1
V={v1,v2,v3,v4,v5,v7,v8,v6}