• Nenhum resultado encontrado

Disciplina de Álgebra I Unidade de Aprendizagem: A Lógica da Matemática, Caminhos, Grafos e Algoritmos

N/A
N/A
Protected

Academic year: 2021

Share "Disciplina de Álgebra I Unidade de Aprendizagem: A Lógica da Matemática, Caminhos, Grafos e Algoritmos"

Copied!
15
0
0

Texto

(1)

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

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

(2)

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 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.

(3)

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

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

(4)

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

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:

(5)

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

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:

(6)

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 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)

(7)

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

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.

(8)

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

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)

(9)

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

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

ij

x

ij Para multigrafos:

A(G)

se

0

A(G)

)

2

x

(

se

2

A(G)

se

1

ij

ij

ij

x

ij

Para grafos dirigidos



A(G)

se

0

A(G)

se

1

ij

ij

x

ij

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

(10)

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

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)

(11)

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 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)

(12)

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 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, ...).

(13)

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

Á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 k h r r

(14)

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

Á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

(15)

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

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

Referências

Documentos relacionados

- Se o estagiário, ou alguém com contacto direto, tiver sintomas sugestivos de infeção respiratória (febre, tosse, expetoração e/ou falta de ar) NÃO DEVE frequentar

A pesquisa se propõe a expor o problema da violência no Brasil, as dificuldades da Polícia Militar brasileira e seu papel na democracia, assim como o risco da atividade policial que

A pesquisa pode ser caracterizada como exploratória e experimental em uma primeira etapa (estudo piloto), na qual foram geradas hipóteses e um conjunto de observáveis, variáveis

Results obtained in this study allow us to infer there are differences in the evaluation of plantar pressure distributions in standing posture between the Baropodometer, SAPO,

De acordo com os resultados observados nesse trabalho é possível concluir que a escolha dos sistemas e equipamentos de climatização a serem utilizados nas mais

Significado das medidas e indicadores mais utilizadas Crescimento e desenvolvimento Peso Altura Circunferência da panturrilha Circunferência da cabeça P/Idade Altura /Idade

• Sem que os critérios e limites de rateio da água disponível sejam detalhados no Plano de Recursos Hídricos da Bacia do rio Paranaíba, não há como se viabilizar o exercício

• Desse modo, a determinação da energia assegurada independe da geração real e está associada às condições no longo prazo que cada usina pode fornecer ao sistema, assumindo