Disciplina de Álgebra I Unidade de Aprendizagem: A...
Transcript of Disciplina de Álgebra I Unidade de Aprendizagem: A...
Recredenciamento Portaria MEC 347, de 05.04.2012 - D.O.U. 10.04.2012.
C o m p l e x o d e E n s i n o S u p e r i o r d e C a c h o e i r i n h a
Rua Silvério Manoel da Silva, 160 - CEP 94930000 - Cachoeirinha – RS - Tel/Fax. (51) 34418650 – www.cesuca.com.br – [email protected]
Disciplina de Álgebra I
Unidade de Aprendizagem: A Lógica da
Matemática, Caminhos, Grafos e Algoritmos
GRAFOS
Conceito
Muitas situações do dia-a-dia podem ser convenientemente
descritas através de diagramas que consistem de um conjunto de
pontos, juntamente com linhas que ligam alguns pares desses
pontos. Por exemplo, os pontos podem representar pessoas e as
linhas ligam pares de amigos; os pontos podem representar centros
de comunicação e as linhas ligações entre esses centros. A
abstração matemática de situações desse tipo dá lugar ao conceito
de grafo.
Vamos começar com um exemplo
Manoel, um carteiro, incumbido de trabalhar em uma região
desconhecida (figura 1), quer descobrir qual é o percurso para a
entrega da correspondência diária em que, saindo do posto dos
Correios, passe por todas as ruas sem nunca cruzar por um trecho
de rua (entre duas esquinas consecutivas) pelo qual já tenha
passado (não passe duas vezes pela mesma rua) e quando for
entregar na última rua, já esteja voltando ao posto inicial. Para tal
região, isto é possível?
Figura 1
Representemos o Posto dos Correios, onde está Manoel, por
A, as (outras) sete esquinas respectivamente pelas letras de B até
H, bem como os trechos de ruas entre duas esquinas consecutivas
por linhas, como na figura 2.
Figura 2
Feito isso, dizemos que partimos de uma situação-problema
concreta e a representamos por um grafo, neste caso com vértices
A, B, C, D, E, F, G e H, e arestas AB, AF, BC, BD, BF, CD, FD,
FE, DE, FG, FH e GH. Trata-se assim de um caminho para a
resolução da situação-problema proposta com base numa
modelagem em grafos para ela, ou seja, um grafo-modelo. Este
grafo-modelo, por exemplo, não possui aresta AH, pois A e H não
são vértices que representam esquinas consecutivas (limites de um
mesmo trecho de rua). Completando, AFBDFG é um percurso
por arestas desse grafo e o grau (número de arestas que chegam
num vértice) do vértice A é 2, bem como o de F é 6, e em tal grafo
nenhum dos oito vértices tem grau ímpar. Acrescentemos mais uns
poucos conceitos: vértices adjacentes são quaisquer dois vértices
ligados por alguma aresta; grafo conexo é todo aquele no qual
existe um percurso conectando qualquer par de vértices que se
escolha, caminho é percurso sem repetição de vértices; ciclo é
caminho fechado (isto é, onde o vértice final coincide com o
inicial); árvore é qualquer grafo conexo sem ciclos. Que o leitor
note que as ligações na figura 2, feitas com segmentos, poderiam
ser linhas quaisquer (curvas), mesmo sendo os trechos de ruas
dados retilíneos, pois o que importa é representarmos fielmente
(seja qual for a forma gráfica) que pares de vértices devem
relacionar-se, no caso, quais representam duas esquinas
consecutivas.
Veremos outro exemplo
Numa escola algumas turmas resolveram realizar um torneio
de vôlei. Participam do torneio as turmas 6A, 6B, 7A, 7B, 8A e
8B. Alguns jogos foram realizados até agora:
6A jogou com 7A, 7B, 8B
6B jogou com 7A, 8A, 8B
7A jogou com 6A, 6B
7B jogou com 6A, 8A, 8B
8A jogou com 6B, 7B, 8B
8B jogou com 6A, 6B, 7B, 8A
Também podemos representar essa situação por meio de um
grafo, onde as turmas serão representadas por pontos e os jogos
serão representados por linhas. Não é difícil constatar por meio do
grafo, que nem todos os times jogaram todas as partidas
necessárias, mesmo que a relação já tenha nos informado.
Podemos representar essa situação por uma lista, dizendo quem se
relaciona com quem ou por um desenho, isto é, uma representação
gráfica. Qual é a forma correta? As duas são corretas.
.
F
E
G
H
A
B
D C
Recredenciamento Portaria MEC 347, de 05.04.2012 - D.O.U. 10.04.2012.
C o m p l e x o d e E n s i n o S u p e r i o r d e C a c h o e i r i n h a
Rua Silvério Manoel da Silva, 160 - CEP 94930000 - Cachoeirinha – RS - Tel/Fax. (51) 34418650 – www.cesuca.com.br – [email protected]
Para que um grafo fique bem definido temos de ter dois
conjuntos:
- o conjunto V, dos vértices, que no nosso exemplo é o
conjunto das turmas;
- o conjunto A, das arestas, que no nosso exemplo são os jogos
realizados.
Em outras palavras, o que nos interessa num grafo é: quem são
os vértices e que pares de vértices estão ligados e quais não estão
(isto é, quem são as arestas).
Quando existe uma aresta ligando dois vértices dizemos que
os vértices são adjacentes e que a aresta é incidente aos vértices.
No nosso exemplo podemos representar o grafo de forma sucinta
como:
V = {6A; 6B; 7A; 7B; 8A; 8B}
A = {(6A; 7A); (6A; 7B); (6A; 8B); (6B; 7A); (6B; 8A); (6B;
8B); (7B; 8A); (7B; 8B); (8A; 8B)}
Observe que não precisamos colocar (8A; 7B) no conjunto de
arestas, pois já tínhamos colocado (7B; 8A).
O número de vértices será simbolizado por │V│ ou pela letra
n, e o número de arestas será simbolizado por │A│ ou pela letra
m. No nosso exemplo n = 6 e m = 9.
Grau de um Vértice
No nosso exemplo vimos que cada turma jogou um número
diferente de jogos:
6A jogou 3 jogos
6B jogou 3 jogos
7A jogou 2 jogos
7B jogou 3 jogos
8A jogou 3 jogos
8B jogou 4 jogos
Por isso, no nosso desenho, o vértice 6A tem 3 arestas ligadas
a ele, o vértice A7 tem 2 arestas ligadas a ele e assim por diante.
Dizemos que estas arestas são incidentes ao vértice. O número de
vezes que as arestas incidem sobre o vértice V é chamado grau do
vértice V, simbolizado por d(v). No nosso exemplo, d(6A) = 3;
d(7A) = 2.
Exercícios
1) Usando o grafo do campeonato:
(a) Dê o grau de cada um dos vértices
(b) Qual a soma de todos os graus?
(c) Qual o número de arestas?
(d) O que você observou? Será coincidência?
2) Faça o mesmo exercício anterior (itens a, b e c) usando os grafos
abaixo:
Agora vamos conhecer, de maneira formal, um pouco mais
sobre os grafos!
Definição
No exercício anterior você deve ter observado que a soma dos
graus de um grafo é sempre o dobro do número de arestas (e isso
não deve ser coincidência...). Isso pode ser escrito em linguagem
matemática. Para isso, denotaremos um grafo pela letra G e
representaremos por V(G) e A(G) respectivamente, os conjuntos
de vértices e das arestas de G.
Teorema
Para todo grafo G:
Isto é, a soma dos graus dos vértices de um grafo é sempre o
dobro do número de arestas.
Recredenciamento Portaria MEC 347, de 05.04.2012 - D.O.U. 10.04.2012.
C o m p l e x o d e E n s i n o S u p e r i o r d e C a c h o e i r i n h a
Rua Silvério Manoel da Silva, 160 - CEP 94930000 - Cachoeirinha – RS - Tel/Fax. (51) 34418650 – www.cesuca.com.br – [email protected]
Alguns Problemas com as Definições
Algumas perguntas acerca das definições podem nos deixar
atrapalhados. Vamos examinar algumas.
- Uma aresta pode ligar um vértice a ele mesmo? Pode. É o que
chamamos de laço (veja na figura abaixo). Por exemplo, vamos
construir o grafo em que V = {2; 3; 4; 5; 6} e dois vértices serão
ligados quando tiverem um divisor comum (diferente de 1).
Pela definição do grafo vemos que o 5 não está ligado a
nenhum outro vértice mas tem um laço (como aliás todos os outros
vértices deste grafo). Para haver coerência com os resultados da
seção anterior, temos que contar o laço duas vezes (uma para cada
extremidade) quando calcularmos o grau do vértice. No nosso
exemplo: d(2) = 4; d(3) = 3; d(4) = 4; d(5) = 2; d(6) = 5, e o
teorema continua valendo.
- Dois vértices podem estar ligados por mais de uma aresta?
Podem. Neste caso usamos o nome especial de multigrafo,
conforme a figura abaixo, por exemplo:
Grafos sem laços ou arestas múltiplas são chamados de grafos
simples.
A figura abaixo mostra um grafo ou dois grafos?
Isto depene da situação ou contexto, pois pode representar
tanto dois grafos distintos como um grafo desconexo. Cada parte
conexa do grafo (no nosso exemplo, o quadrado e o triângulo) é
chamada de componente conexa do grafo. Dizemos que um grafo
é conexo se qualquer par de pontos é ligado por ao menos um
caminho.
Vizinhança e outras particularidades dos grafos
O conjunto de vértices adjacentes a v é chamado vizinhança aberta de
v, denotado por N(v). A vizinhança fechada de v é denotada e definida
por N[v] = N(v) ∪ {v}, isto é, inclui a vizinhança e o próprio vértice.
Podemos estender esta definição para conjuntos de vértices (N(S) e N[S]).
Por exemplo, no grafo do campeonato da aula anterior temos N(7B) =
{6A; 8A; 8B} e N[7B] = {6A; 7B; 8A; 8B}.
Um vértice de grau 0 é dito isolado; um vértice de grau 1 é dito
pendente. A sequência de graus de um grafo é a sequência não crescente
formada pelos graus dos vértices dos grafos. Por exemplo, a sequência de
graus do grafo do campeonato é (4; 3; 3; 3; 3; 2). O menor grau de um
vértice em G é o grau mínimo, denotado 𝛿(G), e o maior é o grau máximo,
denotado Δ(G). No caso do campeonato temos Δ(G) = 4 e 𝛿 (G) = 2.
G’ é dito um subgrafo de G se V(G’) ⊆ V(G) e A(G’) ⊆ A(G). Na
figura a seguir, o grafo G’ é um subgrafo de G.
Grafo completo
Imagine o grafo do campeonato quando todos os jogos tiverem sido
jogados. Ele ficaria com o aspecto da figura abaixo:
Isto é o que chamamos um grafo completo. Um grafo completo é
definido como um grafo onde todo par de vértices é ligado por uma aresta.
Um grafo completo com n vértices é denotado por Kn (o nosso exemplo
é K6).
Exercícios I
1) Quantas arestas têm K7? e K12? e Kn?
Recredenciamento Portaria MEC 347, de 05.04.2012 - D.O.U. 10.04.2012.
C o m p l e x o d e E n s i n o S u p e r i o r d e C a c h o e i r i n h a
Rua Silvério Manoel da Silva, 160 - CEP 94930000 - Cachoeirinha – RS - Tel/Fax. (51) 34418650 – www.cesuca.com.br – [email protected]
2) Quantos vértices um grafo simples precisa ter para poder ter 210
arestas?
Grafo complementar
Imagine agora que temos o grafo do campeonato e queremos fazer o
grafo dos jogos que faltam. Faríamos um grafo com o mesmo conjunto
de vértices, mas com as arestas que faltam no grafo original. Veja a figura.
Chamamos este grafo de grafo complementar do grafo G, denotado
por 𝐺. É fácil perceber que V(G) = V(𝐺) e que A(G) ∪ A(𝐺) inclui todas
as arestas de G.
Grafo nulo ou vazio
Um grafo G é nulo ou vazio quando o conjunto de arestas A(G) é
vazio. Por exemplo, antes de começar o campeonato nenhum jogo havia
sido jogado. Nosso grafo ficaria como na figura:
Grafo regular
Um grafo é regular (de grau k, ou ainda k-regular) quando todos os
seus vértices têm o mesmo grau (k). A figura abaixo mostra um grafo 3-
regular, isto é, todos os vértices tem grau 3.
Ciclo
Um ciclo é um grafo conexo regular de grau 2. A notação é Cn, veja
os exemplos abaixo:
Caminho
Um caminho é um ciclo do qual retiramos uma aresta. O comprimento
do caminho é dado pelo número de arestas. Assim, o caminho Pn é obtido
retirando uma aresta do ciclo Cn+1.
Árvores
Uma árvore é um grafo conexo sem ciclos como subgrafos. Note que
o fato de não ter ciclos faz com que a árvore seja a maneira “mais
econômica” de conectar os vértices.
Grafo bipartido
Um grafo bipartido G é um grafo cujo conjunto de vértices admite
uma partição em dois subconjuntos não vazios, V1 e V2, de tal modo que
toda a aresta de G é incidente num elemento de V1 e noutro de V2. Se todo
o vértice de V1 estiver ligado por uma (e uma só) aresta a cada vértice de
V2, G diz-se um grafo bipartido completo. Neste caso, se │V1│= m e
│V2│= n, G denota-se por Km,n. Se │V1│ = 1, G diz-se uma estrela.
Acabamos por “separar” dois grupos de vértices que não se ligam
entre si. Apresentemos alguns exemplos de grafos bipartidos:
Recredenciamento Portaria MEC 347, de 05.04.2012 - D.O.U. 10.04.2012.
C o m p l e x o d e E n s i n o S u p e r i o r d e C a c h o e i r i n h a
Rua Silvério Manoel da Silva, 160 - CEP 94930000 - Cachoeirinha – RS - Tel/Fax. (51) 34418650 – www.cesuca.com.br – [email protected]
Representação por Matrizes
Uma das formas mais comuns de informar uma estrutura de grafo para
um computador é através de matrizes. Uma matriz nada mais é do que
uma tabela com linhas e colunas. Um exemplo bastante conhecido é a
tabuada:
Se quisermos saber o valor de 3 x 5 procuramos o valor na linha do 3
e na coluna do 5, isto é 15. Mas as matrizes têm outras utilidades. No caso
dos grafos elas podem ser usadas na representação de várias formas. Eis
algumas delas, exemplificadas com as representações do grafo a seguir:
Exercícios II
1) Desenhe uma representação do grafo cuja matriz de adjacência é:
2) Considere o grafo:
Responda as seguintes perguntas:
a) O grafo é simples?
b) O grafo é completo?
c) O grafo é conexo?
d) É possível encontra dois caminhos do nó (vértice) 3 para o nó 6?
e) É possível encontrar um ciclo, ou seja, sair de um ponto em voltar ao
mesmo ponto (não sendo necessário passar por todas as arestas)?
f) É possível encontrar uma aresta cuja remoção transforma o grafo em
um grafo acíclico?
3) Esboce um grafo simples com 3 vértices, cada um com grau 2.
Grafo direcionado (dirigido)
Muitas vezes, na modelação de certos problemas convém considerar
um sentido para as arestas. Por exemplo, na modelação de mapas de
estradas com sentido único:
Um grafo dirigido (ou, abreviadamente, digrafo) D consiste num
conjunto finito não vazio V(D) de elementos chamados vértices, e num
conjunto finito A(D) de arestas orientadas (eventualmente múltiplas),
chamadas arestas. Por exemplo:
Recredenciamento Portaria MEC 347, de 05.04.2012 - D.O.U. 10.04.2012.
C o m p l e x o d e E n s i n o S u p e r i o r d e C a c h o e i r i n h a
Rua Silvério Manoel da Silva, 160 - CEP 94930000 - Cachoeirinha – RS - Tel/Fax. (51) 34418650 – www.cesuca.com.br – [email protected]
Um digrafo diz-se simples se não contiver laços e os seus arcos forem
todos distintos.
Exercícios III
1) Observe o grafo direcionado abaixo:
Responda as seguintes perguntas:
a) Quais são os vértices acessíveis a partir do vértice 3?
b) Qual o caminho mais curto do nó 3 para o nó 6?
c) Qual o caminho de comprimento 8 (que passa por oito arestas) do nó 1
para o nó 6?
2) Observe o grafo direcionado abaixo:
Responda as seguintes perguntas:
a) Existe um caminho de comprime 5 do nó 1 para o nó 4?
b) É possível acessar o nó 1 de algum outro nó?
c) Quais são os ciclos deste grafo?
3) Escreva a matriz de adjacências dos grafos abaixo:
4) Quantas arestas tem um grafo com vértices de graus 5, 2, 2, 2, 2, 1?
Desenhe um possível grafo.
a)
b)
c)
Recredenciamento Portaria MEC 347, de 05.04.2012 - D.O.U. 10.04.2012.
C o m p l e x o d e E n s i n o S u p e r i o r d e C a c h o e i r i n h a
Rua Silvério Manoel da Silva, 160 - CEP 94930000 - Cachoeirinha – RS - Tel/Fax. (51) 34418650 – www.cesuca.com.br – [email protected]
5) Determine se cada um dos grafos é bipartido.
a)
b)
PROBLEMAS DE CAMINHOS
Recordemos o problema das pontes de Königsberg da aula anterior
onde se perguntava se era a possível atravessar cada uma das 7 pontes
exatamente uma vez e voltar ao ponto de partida. Isto é equivalente a
perguntar se no grafo abaixo existe um caminho fechado, sem repetição
de arestas, contendo todas as arestas, ou seja, um ciclo (caminho fechado,
onde o vértice final coincide com o inicial).
Para compreender um grafo euleriano, temos de retomar alguns
aspectos referentes aos grafos de um modo geral. Como já sabemos, um
caminho, num grafo, consiste numa sequência de arestas do grafo,
construída de tal modo que, duas arestas consecutivas da seqüência tem
ao menos um vértice em comum e, nessa seqüência, não aparecem arestas
repetidas (no caso, para que caminho seja “econômico”). Tendo-se um
caminho em um grafo, cada aresta desse caminho fica “orientada”,
passando a ter um vértice inicial e um vértice final, de modo que, se a e b
são duas arestas consecutivos do caminho, o vértice final de a é o vértice
inicial de b. Além disso, o caminho terá um vértice inicial – o seu ponto
de partida –, e um vértice final – o seu ponto de chegada. Quando o vértice
inicial e o vértice final de um caminho coincidem, dizemos que o caminho
é fechado.
Historicamente, os caminhos eulerianos estão associados à gênese da
teoria de grafos, essencialmente à custa das pontes de Königsberg (atual
Kalingrado, no enclave russo entre a Polónia e a Lituânia). A questão era
saber se seria possível passar exatamente uma vez em cada ponte,
voltando ao ponto de partida. Em 1736, Leonhard Euler mostrou que tal
“passeio” não é possível. De suas conclusões, temos as seguintes
características e propriedades:
• Um caminho euleriano percorre cada aresta uma vez, sem a
necessidade de voltar ao ponto de partida.
• Um ciclo euleriano é um caminho em um grafo que visita cada
aresta exatamente uma vez, iniciando e terminando no mesmo vértice.
• Um grafo euleriano é aquele que contém um ciclo euleriano.
• Um grafo não-dirigido é euleriano se não tiver nenhum vértice de
grau ímpar;
• Um grafo dirigido é euleriano se todos os vértices tiverem grau de
entrada igual ao seu grau de saída.
• Um grafo semi-euleriano (que permite um caminho euleriano)
possui exatamente dois vértices de grau ímpar, um é o ponto de
partida e outro é o ponto de chegada.
Ou seja:
Teorema 1: Se um grafo admite um caminho euleriano, começando e
terminando num mesmo vértice, então todo vértice desse grafo tem ordem
par.
Demonstração: Considere um vértice qualquer do grafo, digamos A, e
suponhamos que ele é um vértice intermediário (nem final, nem inicial)
do passeio. Então, cada vez que chegamos em A, através de uma aresta
do caminho, partimos de A logo em seguida, e assim, contadas as
chegadas e partidas, teremos um número par de arestas apoiando-se em
A (figura abaixo). Suponhamos agora que B é o vértice inicial e final do
caminho. Então, calculando a ordem de B, contamos 1 na partida, mais 1
na chegada, e somamos 2 cada vez que passamos por B (podemos, ao
longo do caminho, passar diversas vezes por B). Logo, B é também um
vértice par.
Teorema 2: Se um grafo admite um caminho euleriano, começando num
vértice e terminando em outro, então os vértices final e inicial do passeio
são ímpares, e todos os demais vértices do grafo tem ordem par.
Demonstração: Se um vértice não é o fim nem o início do caminho então,
toda vez que chegamos a ele no caminho, partimos em seguida, e assim
haverá um número par de arestas nele se apoiando. Se C é o vértice inicial
do passeio, então, ao calcular sua ordem, contamos 1 quando partimos de
C, e somamos 2 cada vez que passamos por C. Assim, C é um vértice
ímpar. Da mesma forma, para o vértice D, final do caminho, somamos 2
cada vez que passamos por ele e mais 1 na chegada, sendo D, portanto,
também um vértice ímpar.
Em vista dos dois teoremas acima, agora fica fácil saber quais dos
grafos já vistos em nossas aulas admitem caminho euleriano. Igualmente
fácil é determinar se o problema das pontes de Königsberg tem ou não
solução. Verificaremos agora que, reciprocamente, todo grafo, com todas
as arestas pares, ou apenas duas ímpares, admite um caminho euleriano.
Teorema 3: Se um grafo tem seus vértices todos pares, então ele admite
um caminho euleriano. Além disso, esse caminho pode começar (e
terminar) em qualquer vértice previamente escolhido. A primeira aresta
do caminho pode ser qualquer aresta partindo desse vértice.
Recredenciamento Portaria MEC 347, de 05.04.2012 - D.O.U. 10.04.2012.
C o m p l e x o d e E n s i n o S u p e r i o r d e C a c h o e i r i n h a
Rua Silvério Manoel da Silva, 160 - CEP 94930000 - Cachoeirinha – RS - Tel/Fax. (51) 34418650 – www.cesuca.com.br – [email protected]
Teorema 4: Se um grafo tem dois vértices ímpares e os demais todos
pares, então ele admite um caminho euleriano. Esse caminho deve
começar em um dos vértices ímpares e terminar no outro.
Exercícios
1) Quais destas figuras podemos fazer, com um único traço, sem tirar o
lápis do papel, passando o lápis só uma vez em cada traço?
2) Tente construir um caminho (ou ciclo) eulerianos no grafo abaixo,
verificando se o mesmo satisfaz as hipóteses de um dos teoremas 3 e 4 (leve em conta que o encontro de duas ou mais arestas é um vértice).
3) Agora, tente construir caminhos eulerianos nos grafos abaixo,
verificando, da mesma forma, em cada caso, se o grafo satisfaz as
hipóteses de um dos teoremas 3 e 4.
O Problema do Menor Caminho
O algoritmo que soluciona este problema (e até hoje não se encontrou
forma melhor) foi criado por Edsger Wybe Dijkstra, em 1952. Dijkstra
nasceu em 1930, na cidade de Roterdan (Holanda), e morreu em 2002.
Foi um cientista de computação e recebeu o Turing Award de 1972 por
suas contribuições fundamentais na área de linguagens de programação.
Notem um fato interessante: geralmente o que estudamos em matemática
foi criado há muito tempo. Mas, como veremos no problema a seguir, a
matemática continua a oferecer soluções e com o desenvolvimento da
Informática a ideia de uma solução para um problema tem se modificado.
Em vez de procurarmos um número, uma resposta (o que em muitos casos
é necessário), procuramos um algoritmo, isto é, uma série de
procedimentos que os levem à solução. A vantagem é que, se o problema
for muito extenso, poderemos programar um computador para realizar
este algoritmo.
E o problema a seguir é um excelente exemplo disso. E observe que
trabalharemos com grafos valorados, isto é, estaremos atribuindo valores
às arestas. Estes valores podem ser distâncias, tempo gasto no trajeto,
custo com a ligação etc. Usaremos as expressões custo ou distância para
nos referirmos a estes valores. Estes valores geralmente são estimados por
engenheiros, economistas e consideraremos nos próximos exemplos que
eles são dados. Este algoritmo trabalha apenas com grafos valorados com
valores positivos e nossa tarefa é minimizar o custo ou a distância.
(a) (b) (c) (d)
a)
a)
Recredenciamento Portaria MEC 347, de 05.04.2012 - D.O.U. 10.04.2012.
C o m p l e x o d e E n s i n o S u p e r i o r d e C a c h o e i r i n h a
Rua Silvério Manoel da Silva, 160 - CEP 94930000 - Cachoeirinha – RS - Tel/Fax. (51) 34418650 – www.cesuca.com.br – [email protected]
Qual o Menor Caminho até a Escola?
Tente criar uma estratégia (ou melhor, um algoritmo) para
checar seguramente o menor caminho!
Monte uma matriz de distância, colocando, para os vértices que
se conectam, o valor equivalente, e para os vértices que não se
conectam, use o símbolo do infinito ( ).
Pesquise por: Algoritmo de Dijkstra.
Exercícios de fixação
1) Preencha o quadro:
Tipo Arestas (sem
direção ou dirigidas)
Arestas
Múltiplas (sim ou não)
Laços (sim ou
não)
Grafos simples
Multigrafo
Pseudografo Sem direção sim sim
Grafo dirigido simples
Grafo dirigido
2) Dê a matriz adjacência, usando:
para grafos simples:
A(G) se 0
A(G) se 1
ij
ijxij
Para multigrafos:
A(G) se 0
A(G) )2x( se 2
A(G) se 1
ij
ij
ij
xij
Para grafos dirigidos
A(G) se 0
A(G) se 1
ij
ijxij
c) Monte o grafo da matriz transposta da questão b).
3) Esboce os grafos com as seguintes características:
a) Com 4 vértices e ciclos de comprimento 1, 2, 3 e 4.
b) Não completo com 4 vértices, cada um com grau 4.
4) Para os grafos abaixo:
a) preencha a tabela:
Vértice Grau
A
B
C
D
E
F
G
Nº de vértices com grau par
Nº de vértices com grau ímpar
Soma dos graus
b) qual é o número de arestas?
c) É um grafo euleriano? Se afirmativo, dê o ciclo, caso contrário,
verifique se o grafo possui caminho euleriano.
a)
a
b
c
d
b)
a
b
c
d)
A
B C
D
F E
G
Recredenciamento Portaria MEC 347, de 05.04.2012 - D.O.U. 10.04.2012.
C o m p l e x o d e E n s i n o S u p e r i o r d e C a c h o e i r i n h a
Rua Silvério Manoel da Silva, 160 - CEP 94930000 - Cachoeirinha – RS - Tel/Fax. (51) 34418650 – www.cesuca.com.br – [email protected]
Grafos e Ciclos Hamiltonianos
Um problema aparentemente similar ao dos grafos eulerianos é o de
procurar em G um caminho fechado que passe por todos os vértices uma
e só uma vez. Um caminho assim teria de ser necessariamente um ciclo;
chamamos um tal ciclo de ciclo hamiltoniano. O nome é em homenagem
a Sir Willian R. Hamilton, matemático irlandês que estudou e divulgou o
problema, embora a primeira formulação tenha sido feita por Kirkman em
1885. As primeiras denotações de grafo hamiltoniano e de grafo semi-
hamiltoniano seguem as mesmas diretrizes dos grafos eulerianos. Um
grafo e seu ciclo hamiltoniano aparecem na figura (a); um grafo semi-
hamiltoniano aparece na figura (b).
Então, como vimos na figura (a), Um grafo G é chamado
Hamiltoniano quando possui um ciclo que inclui todos os vértices de G,
ou seja, neste ciclo cada vértice aparece uma única vez, com exceção do
vértice de partida. Como vimos no exemplo (b), se o grafo não contiver
um ciclo hamiltoniano, mas contiver um caminho entre dois vértices de
forma que cada vértice do grafo seja visitado uma única vez, então este
grafo é chamado semi-hamiltoniano.
Exercícios I
1) Os grafos (c) e (d) abaixo são, cada um, separadamente, hamiltoniano?
Semi-hamiltoniano? É euleriano ou semi-euleriano?
(c): ___________________________________________________
(d): ___________________________________________________
2) O grafo abaixo é hamiltoniano? Se sim, encontre o ciclo hamiltoniano.
O Problema do Caixeiro Viajante
Embora semelhante ao problema do cálculo do circuito euleriano, o
ciclo hamiltoniano é muito mais complexo, pois não são conhecidas todas
as condições necessárias e suficientes para que um grafo genérico
contenha um ciclo hamiltoniano nem tampouco métodos eficientes para
construir tal ciclo.
Este problema está intimamente relacionado ao problema do caixeiro
viajante, o qual consiste em encontrar um caminho que passe por todas
as cidades uma única vez e retorne ao ponto de partida, escolhendo para
isso um caminho de custo mínimo. Este caminho consiste em um ciclo
hamiltoniano de custo mínimo, onde a soma dos custos das arestas
pertencentes ao ciclo é mínima. O problema do caixeiro viajante é um
dos problemas mais estudados no campo da pesquisa operacional, mas até
hoje não foi encontrado um algoritmo computacionalmente eficiente para
resolvê-lo. Sua formulação é simples: dado um grafo completo valorado
G, desejamos determinar o valor do menor ciclo hamiltoniano de G.
Tomemos o exemplo dado pela seguinte matriz valorada de adjacência:
Como o grafo em questão é K7, uma solução óbvia seria examinar
todas as permutações entre os vértices, cada uma correspondendo a um
ciclo hamiltoniano. Com 7 vértices, teremos 7! = 5760 permutações; na
verdade são 6! = 820, pois são permutações circulares. Seja como for, é
uma tarefa até modesta para um computador. Mas o problema do caixeiro
viajante frequentemente trata de grafos com mais de 60 vértices. Isso nos
daria 60!, o que nos tomaria milênios, mesmo usando todos os
computadores do mundo!
Nossa atitude será então de procurar um algoritmo que use uma ideia
razoável, mesmo que não assegure a melhor solução, a solução ótima.
Uma possível solução é através do algoritmo guloso, que parte do ponto
A e procura sempre a menor distância ao ponto da vez. No nosso caso, o
ciclo produzido seria a-g-c-f-d-e-b-a, com valor 2470. A contra-
indicação para o algoritmo guloso é que no final terminamos por aceitar
arestas de valores muito altos.
Na figura abaixo, por exemplo, temos um grafo completo, valorado
nas arestas, e desejamos encontrar o ciclo hamiltoniano com menor valor
total (problema do caixeiro viajante). Para isto, use o algoritmo guloso e
(a)
(b)
(c) (d)
Recredenciamento Portaria MEC 347, de 05.04.2012 - D.O.U. 10.04.2012.
C o m p l e x o d e E n s i n o S u p e r i o r d e C a c h o e i r i n h a
Rua Silvério Manoel da Silva, 160 - CEP 94930000 - Cachoeirinha – RS - Tel/Fax. (51) 34418650 – www.cesuca.com.br – [email protected]
constate que o valor obtido nem sempre (ou quase nunca) é o melhor valor
(que pode ser encontrado por exame exaustivo).
Subconjuntos Especiais de um Grafo
Conjuntos Independentes
Suponhamos que um grafo represente a incompatibilidade de horários
entre professores que devem dar prova final; os vértices x e y estarão
ligados se representarem professores que têm alunos em comum para
ministrar a prova. Qual o maior número de professores que podem dar
prova ao mesmo tempo? A resposta é dada pelo subconjunto
independente máximo de vértices do grafo.
O subconjunto assinalado com quadrados negros no grafo dado a
seguir mostra um conjunto com estas características. O número de
independência (G) é a cardinalidade do subconjunto independente
máximo de vértices do grafo. No nosso exemplo,
𝛼(G) = 4.
Aplicações do conceito de conjunto independente surgem quando,
por exemplo, desejamos evitar duplicação de esforços. Suponhamos que
num parque, representado pelo grafo da figura (e), eu quisesse instalar
barracas para venda de sorvete. A operadora das barracas faz as seguintes
restrições:
Uma barraca deve ser localizada em uma esquina (vértice).
Esquinas próximas (vértices adjacentes) só admitem uma barraca.
Estamos procurando então um conjunto independente. Para instalar o
máximo de barracas procuramos um conjunto independente máximo. Já
vimos que esta pode ser uma tarefa complexa. Na figura abaixo a
configuração da esquerda (f) mostra um conjunto independente maximal,
isto é, não podemos acrescentar mais barracas de sorvete. Mas a
configuração da direita (g) também é independente e contém quase o
dobro de barracas.
(e)
(f) (g)
Coloração
Suponha, no exemplo anterior, o dos professores, que quiséssemos
saber qual o menor número de horários necessários para ministrar as
provas. Para isto, devemos resolver o problema de particionar o conjunto
de vértices do grafo em subconjuntos independentes; cada conjunto
corresponder a um horário de prova. Uma forma de resolver o problema
é atribuir cores aos vértices de forma que vértices adjacentes tenham
necessariamente cores diferentes. O menor número de cores que se pode
utilizar será, portanto a solução do problema.
Observação: não precisamos efetivamente colorir os vértices, basta
atribuir um número ou um símbolo aos vértices.
O estudo de coloração de grafos nasceu quando Francis Guthrie
percebeu que era possível colorir o mapa da Inglaterra usando apenas 4
cores. A pergunta que surgiu foi se 4 cores eram suficientes para colorir
qualquer decomposição do plano em regiões. Em 1976, usando grafos,
Haken e Appel mostram que a resposta era afirmativa.
Uma coloração de interesse é aquela em que se utiliza um número
mínimo de cores. Um grafo G, que exige k cores para pintar seus vértices,
e não menos, é chamado um grafo k-cromático, ou k-colorável, e o
número k é chamado número cromático de G. Na figura abaixo (i), o
número mínimo de cores é 3, portanto o grafo é 3-cromático.
Do ponto de vista matemático, o subconjunto de vértices com uma
mesma cor é considerado uma partição de vértices, e no caso do exemplo
(h): {a}, {b, d} e {c}.
Temos então, por definição:
(i)
a
c
d
a
b
c
b b
(h)
Recredenciamento Portaria MEC 347, de 05.04.2012 - D.O.U. 10.04.2012.
C o m p l e x o d e E n s i n o S u p e r i o r d e C a c h o e i r i n h a
Rua Silvério Manoel da Silva, 160 - CEP 94930000 - Cachoeirinha – RS - Tel/Fax. (51) 34418650 – www.cesuca.com.br – [email protected]
Uma coloração própria dos vértices de um grafo é uma coloração
de vértices tal que aos vértices (pontos finais) de cada aresta são atribuídas
cores diferentes.
Um grafo é dito ser
k-cromático ou k-colorável se ele tem uma coloração própria de vértices
que usa k cores.
O número cromático de um grafo G, denotado crom(G), é o menor
número de cores diferentes necessárias para obter uma coloração própria
de G.
Teorema das Quatro Cores
A história do problema das quatro cores começou em 1852, quando
Francis Guthrie, aluno de Augustus de Morgan, tentava colorir o mapa
da Inglaterra com cores diferentes de maneiras que não houvesse regiões
vizinhas com a mesma cor. Observou que apenas quatro cores seriam
suficientes, e apresentou o problema a De Morgan. Surgindo então o
Problema das Quatro Cores. Este Teorema foi provado inicialmente em
1976, por Kenneth Appel e Wolfgang Haken na Universidade de Illinois,
com o auxílio de um computador.
O Teorema das Quatro Cores afirma que: Qualquer grafo planar
pode ser colorido com apenas quatro cores.
(i) Um grafo é dito planar se pode ser representado no plano sem que
suas linhas se cruzem.
(ii) Um grafo é planar se seu esquema puder ser traçado em um plano de
forma que duas arestas quaisquer se toquem, no máximo, em alguma
extremidade.
Aplicações de Coloração
As aplicações de coloração aparecem quando precisamos repartir o
conjunto de vértices em conjuntos de vértices independentes disjuntos.
Voltando ao problema do parque, suponha que quiséssemos instalar
barracas de sorvete, pipocas, cachorro-quente, algodão doce, etc. Um
algoritmo interessante pode nos ajudar a colorir um grafo.
Algoritmo de Welch-Powell
O Algoritmo de Welch-Powell, é um algoritmo para a coloração de
um grafo G, que consiste em:
Passo 1 - Ordene os vértices de G em ordem decrescente de grau.
Passo 2 - Atribua a primeira cor, C1, ao primeiro vértice e, então,
sequencialmente, atribua C1 a cada vértice que não é adjacente a algum
vértice que o antecedeu e ao qual foi atribuída a cor C1.
Passo 3 - Repita o Passo 2 com a segunda cor C2 e os vértices
subsequentes não coloridos.
Passo 4 - Repita o Passo 3 com a terceira cor C3, depois com a quarta
cor C4, e assim por diante, até que todos os vértices estejam coloridos.
Vamos ver um exemplo abaixo:
1º passo: vértice 5 (grau 4) – vértices 1,2,3 e 4 (grau 3)
2º passo: cor azul no vértice 5 (como o restante dos vértices são todos
adjacentes, passamos para próximo passo).
3º passo: cor amarela no vértice 1 e depois no vértice 3, que não é
adjacente ao vértice 1.
4º passo: cor vermelha no vértice 2 e depois cor vermelha no vértice
4, eu não é adjacente ao vértice 2.
Assim o grafo é 3-cromático.
Exercícios II
1) Dê a coloração dos grafos por meio do algoritmo de Welch-Powell e
determine o número cromático (use cores na sequência: azul, amarelo,
vermelho, verde, preto e branco. Também é possível atribuir letras às
cores: a = azul, b = amarelo, c = vermelho, ...).
Recredenciamento Portaria MEC 347, de 05.04.2012 - D.O.U. 10.04.2012.
C o m p l e x o d e E n s i n o S u p e r i o r d e C a c h o e i r i n h a
Rua Silvério Manoel da Silva, 160 - CEP 94930000 - Cachoeirinha – RS - Tel/Fax. (51) 34418650 – www.cesuca.com.br – [email protected]
Árvores
Defini-se por árvore na matemática discreta um grafo simples,
conexo e sem ciclos. Em nosso dia-a-dia nos deparamos com muitos
exemplos de árvores: Árvore genealógica; Organograma de uma
empresa; Tabela de um torneio esportivo, entre outros. Formalmente,
pode-se dizer que, Seja T um grafo com n vértices, As seguintes
afirmações são equivalentes:
i. T é uma árvore.
ii. T não contém ciclos e tem n – 1 arestas.
iii. T é conexo e tem n – 1 arestas.
iv. Todo par de vértices de T é ligado por um único caminho.
v. T não contém ciclos, mas a adição de uma aresta produz um
único ciclo.
São exemplos de árvores com 1, 2, 3, 4, 5 e 6 vértices:
Árvore com raiz ou enraizada
Teorema: Um grafo simples G é uma árvore se e só se quaisquer dois
vértices de G estão ligados por um único caminho sem repetição de
vértices.
Fixando um vértice qualquer r de
uma árvore é possível, usando o
teorema anterior, dar uma direção a
todas as arestas do seguinte modo:
como existe um único caminho de r
para cada um dos restantes vértices do
grafo, direcionamos cada aresta usando
esses caminhos. Por exemplo, na árvore
ao lado:
Fixando o vértice r indicado,
obtemos, por exemplo, o grafo ao lado.
Este grafo dirigido diz-se uma árvore
com raiz r. Outra escolha de raiz pode
produzir outra árvore enraizada.
Definição: uma árvore T = (V,E) é
denominado com raiz ou enraizada
quando algum vértice r é escolhido
como raiz. Esse vértice r é a raiz da
árvore. Usualmente representamos
graficamente a raiz no topo. Podemos
transformar uma árvore sem raiz numa árvore enraizada simplesmente
escolhendo um vértice como raiz.
A terminologia para as árvores inspira-se na botânica e na genealogia.
Por exemplo, seja a árvore enraizada abaixo, com raiz c temos:
Raiz = c
Ancestrais de j={e,c}
Descendentes de j={i,k}
Pai de j=e
Filhos de j={i,k}
Nível de j = 2
Altura da árvore =3
Folhas = {b,a,i,k,f,h,d}
A raiz de uma árvore não possui pai, e todo vértice v diferente de r,
possui um único pai. Uma folha é um vértice que não possui filhos.
Vértices que possuem filhos são chamados de vértices internos. O nível
da raiz é zero, de seus filhos é 1. O nível de um vértice é igual ao nível de
seu pai mais um. Para dois vértices irmãos v e w, nível(v) = nível(w). A
altura de uma árvore é o valor máximo de nível(r) para todo vértice v de
T.
Excentricidade
Denomina-se excentricidade de um vértice v ∈ V, ao valor da
distância máxima entre v e w, para todo w ∈ V. O centro de G é o
subconjunto dos vértices de excentricidade mínima. A Figura abaixo
apresenta um exemplo em que o centro é o subconjunto {c, d, e}.
VÉRTICE EXCENTRICIDADE
a 3
b 3
c 2
d 2
e 2
f 3
g 3
a b
c g
e
d f
c
l a
e d
j f g
b i h k
r
r
Recredenciamento Portaria MEC 347, de 05.04.2012 - D.O.U. 10.04.2012.
C o m p l e x o d e E n s i n o S u p e r i o r d e C a c h o e i r i n h a
Rua Silvério Manoel da Silva, 160 - CEP 94930000 - Cachoeirinha – RS - Tel/Fax. (51) 34418650 – www.cesuca.com.br – [email protected]
Árvore geradora
Árvore geradora é uma árvore T, subgrafo de G, que contém todos os
vértices de G, como no exemplo abaixo:
Exercícios
1) Quantas arestas tem uma árvore com 8 vértices?
2) Qual é a raiz da árvore (a) e qual é a excentricidade de cada vértice da
árvore (b)?
3) Construa a matriz de adjacência da árvore (b) do exercício anterior.
4) Para a árvore abaixo, sendo a a raiz, determine:
a) Os ancestrais de f.
b) Descendentes de c.
c) Filhos de c.
d) Pai de e.
e) Filhos de b.
f) nível de h.
g) Altura da árvore.
h) Folhas.
5) Dê duas árvores geradoras para cada grafo abaixo:
Exercícios de revisão
1) Quais são as diferenças entre grafos simples e multigrafos?
2) Construa um exemplo de grafo simples dirigido e um não dirigido.
3) Construa um exemplo de multigrafo dirigido e um não dirigido.
4) Construa os grafos não-dirigidos a partir dos conjuntos de vértices e
arestas dados a seguir:
a) V = {1, 2, 3, 4, 5} e A = {(1, 2), (1, 4), (1, 5), (2, 3), (3, 4), (4, 4)};
b) V = {1, 2, 3, 4, 5, 6} e A = {(1, 2), (1, 4), (1, 4), (2, 3), (2, 5), (3, 5)};
c) V = {1, 2, 3, 4, 5} e A = {(1, 2), (1, 4), (2, 3), (2, 4), (2, 5), (3, 4), (3,
5)};
d) V = {1, 2, 3, 4} e A = {(1, 2), (2, 3), (2, 4), (3, 4)};
e) V = {1, 2, 3, 4, 5, 6, 7, 8} e A = {(1, 2), (2, 2), (2, 3), (3, 4), (3, 5), (6,
7), (6, 8), (7, 8)}.
5) Dados os grafos da questão anterior, classifique-os como simples ou
multigrafos.
6) Construa um grafo G = (V,E), onde V = {1,2,3,4,5,6} e E = {(1,3),
(1,4), (1,5), (2,3),(2,4),(2,5),(3,5),(4,5)} e represente-o através de sua
matrizes de adjacência.
7) Dado o grafo ao lado, quais afirmações estão
corretas?
( ) Os vértices v e w são adjacentes;
( ) Os vértices v e x são adjacentes;
( ) A aresta 2 é incidente ao vértice u;
( ) A aresta 5 é incidente ao vértice x.
c
c
e
b
f
d
c
c
e
b
f
d
a a
(a) (b)
f d h
b
k
c
a
e g
i j
Recredenciamento Portaria MEC 347, de 05.04.2012 - D.O.U. 10.04.2012.
C o m p l e x o d e E n s i n o S u p e r i o r d e C a c h o e i r i n h a
Rua Silvério Manoel da Silva, 160 - CEP 94930000 - Cachoeirinha – RS - Tel/Fax. (51) 34418650 – www.cesuca.com.br – [email protected]
8) Para o grafo G (V,E) apresentado a seguir encontre os menores
caminhos entre o vértice A e os demais vértices de G:
9) Considere o grafo abaixo:
Construa uma árvore obtida com o algoritmo de DIJKSTRA que
represente um caminho mínimo do vértice v1 ao vértice v8.
5
1
5 2
2
C
A
E
D
B
3
8
5