You are on page 1of 10

O uso da teoria dos grafos e de linguagem C na determinação de

caminhos mínimos
Autora: Criseida Toledo de Paula
Professor Orientador: Ms. Gerson Pastre de Oliveira
Faculdade Politécnica de Jundiaí

Resumo

O presente projeto dedica-se ao objetivo existência de um caminho ou ciclo em um grafo,


de levantar e identificar aspectos das estruturas e também do algoritmo de Dijkstra para encontrar
de dados para representação de grafos, e um caminho mínimo em um grafo simples e
determinar a aplicabilidade de algoritmos para conexo. No decorrer da pesquisa foram
resolução de problemas práticos com a utilização identificados alguns problemas reais que,
da linguagem C. A implementação de tais seguindo a metodologia do projeto, puderam ser
algoritmos levou à escolha da linguagem C por tratados corretamente, obedecendo aos
ser esta uma linguagem de programação flexível, objetivos definidos, sendo que, através dos testes
robusta e portável, além de amplamente utilizada. realizados, os recursos utilizados mostraram
Inicialmente foi efetuado um estudo investigativo corresponder às expectativas.
e exploratório através da revisão da literatura
conhecida sobre o assunto e, posteriormente, a Palavras-chave: Grafos, teoria dos
análise de algoritmos que possibilitam a grafos, algoritmos, trilhas/ciclos de Euler,
implementação de soluções práticas para algoritmo do caminho mínimo de Dijkstra,
problemas reais, resolvidos através da utilização estruturas de dados.
dos teoremas de Euler para verificação da

Introdução

A Teoria dos Grafos pode representar um dados, além de algoritmos, e que sua aplicação
ponto comum entre assuntos oriundos das mais vem permitir e facilitar a implementação de
diversas áreas profissionais e acadêmicas. Isto soluções para problemas das mais variadas áreas
porque a mesma pode ser aplicada à do conhecimento, decidi, então, investigar o
representação de quaisquer conjuntos finitos de assunto a fim de conhecer e entender um pouco
elementos, abrangendo situações que vão desde mais a respeito.
mapas de rotas de transporte ou distribuição de Uma das primeiras abordagens ao assunto
produtos, diagramas elétricos, pesquisa que hoje é conhecido como “Teoria dos Grafos”
operacional, arquitetura, geografia, e muitos se deu, provavelmente, pelo matemático suíço
outros. Leonhard Euler, no século XVIII, que desejou
Meu interesse pelo assunto surgiu em sala encontrar uma solução para o problema das
de aula a partir de uma breve explicação do pontes de Konigsberg; (Oliveira, 2003): “Há um
Professor Gerson Pastre de Oliveira, enquanto rio atravessando a cidade, com uma bifurcação
ministrava aula de Estruturas de Dados, e embora em determinado ponto, em torno de uma ilha.
o escopo do curso não contemplasse uma Diversas pontes atravessam o rio (...). A questão
abordagem completa da matéria, a curiosidade é saber se uma pessoa poderia passar por todas
foi aguçada pela minha afinidade com as matérias as regiões da cidade cruzando cada ponte apenas
lógicas, matemáticas e, principalmente, linguagens uma vez”.
de programação. Sabendo, então, que os grafos
podem ser representados por estruturas de

164
Muitos cenários podem ser encontrados no
mundo real, como por exemplo, um mapa de
ruas de um bairro qualquer, que pode ser
perfeitamente representado por um grafo com
as características desejadas. Um algoritmo
eficiente para realizar essa busca é conhecido
como algoritmo de Dijkstra, e será utilizado para
demonstrar a aplicação deste estudo.
Procura-se, assim, estabelecer exemplos
práticos de utilização do algoritmo do caminho
mínimo de Dijkstra para solucionar problemas
reais. Para tanto foi efetuada negociação com a
Prefeitura Municipal de Várzea Paulista, que
gentilmente cedeu o mapa digitalizado da cidade.
O exemplo a ser utilizado supõe a existência de
Segundo Gersting (2001, p. 230) “Grafos
um ponto de táxi em determinada rua da região
ou árvores podem representar um número
escolhida.
surpreendente de situações reais - organogramas,
mapas rodoviários, redes de transporte e
Definições e Revisão Teórica
comunicação, e assim por diante”.

Embora a idéia de grafo seja bastante


No que diz respeito aos assuntos
simples, um número surpreendente de relacionados à área de computação, o grafo é
situações envolve relações entre uma estrutura de dados que representa um
dados que podem ser representadas conjunto de elementos (pontos) chamados nós
por um grafo. (...) Uma representação ou vértices, os quais são unidos (ou conectados)
de qualquer rede de rotas de por outros elementos (linhas) chamados arestas
transporte (um mapa de estradas, por ou arcos. Os nós do conjunto podem representar
exemplo), rede de comunicação os pontos de cruzamento entre ruas, estradas,
(como em uma rede de estações de metrô, pontos telefônicos ou de
computadores), ou rotas de computadores em uma rede, e as arestas
distribuição de produtos ou serviços,
correspondem às ruas ou estradas propriamente
como dutos de gás ou água, é um
grafo. A estrutura química de uma
ditas, trilhos, cabeamento de rede, e assim por
molécula também pode ser diante. Para facilitar o entendimento, vejamos as
representada por um grafo. (...) figuras seguintes:
Redes neurais, ferramentas utilizadas
em Inteligência Artificial para tarefas
como o reconhecimento de padrões,
são representadas por grafos
direcionados com peso. (op.cit., p.
232 e 233)

Objetivos

Este projeto dedica-se ao objetivo de


estudar aspectos da Teoria dos Grafos
relacionados com a procura do caminho mais
curto entre dois pontos, utilizando-se, para isso,
exemplos de situações práticas do cotidiano.

165
arco conecta dois nós”.
Alguns grafos podem apresentar mais de
uma aresta conectando o mesmo par de vértices,
e estas então são chamadas arestas paralelas.
De modo semelhante, um determinado nó pode
ser ao mesmo tempo o ponto inicial e final de
uma aresta, e neste caso ela é chamada de laço.
O grau de um vértice corresponde ao
número de arestas que partem de um
determinado nó. Dessa forma, o nó R da figura
5 tem grau 3, enquanto o nó T tem grau 4.
Um grafo simples é aquele que não
apresenta arestas paralelas e nem laços. Ainda
se tratando de arestas, aqueles nós que ela
conecta são chamados de vértices adjacentes,
ou seja, os nós nos quais a aresta tem seus pontos
inicial e final.
Alguns grafos podem apresentar alguns
Ambas as situações acima passam a ser conjuntos de nós (ou um único nó) que não tem
representadas utilizando-se pontos e linhas em conexão com os demais. Um exemplo:
uma diagrama, “... os pontos são chamados
vértices, as linhas são chamadas arestas, e todo
o diagrama é chamado grafo. Note que a
interseção das linhas PS e QT não é um vértice,
já que ela não corresponde a um cruzamento da
estrada ou um encontro de dois fios elétricos”
(Wilson, 1996, p.2). A figura 4 mostra o grafo
que representa essas situações.

De maneira inversa, um grafo conexo é


aquele em que não há vértices (ou grupos de
vértices) isolados, ou seja, “para um vértice
qualquer do grafo, sempre existe um
caminhamento para qualquer outro vértice do
mesmo grafo”. (Oliveira, 2003).

Sendo assim, “um grafo simples G


consiste de um conjunto finito não vazio de
elementos chamados vértices (ou nós), e um
conjunto finito de pares de elementos distintos e
não-ordenados, chamados arestas. Em um grafo
simples há no máximo uma aresta unindo um par
de vértices”. (op.cit., p.8) Quando se pode partir de um determinado
Conforme definição de Gersting (2001, p. nó e percorrer um caminho até outro nó qualquer,
231) “Um grafo é um conjunto de nós (vértices) através da sucessão de nós e arestas existentes,
e um conjunto de arcos (arestas) tais que cada então o grafo é chamado de conexo. O grafo da

166
figura 6 também é conexo. Estruturas que são iguais exceto por
De acordo com Wilson (1996, p.2), outra uma mudança de nomes são ditas
forma de representar o grafo da figura 4 é isomorfas. Para mostrar que duas
remover o cruzamento das linhas PS e QT, estruturas são isomorfas, precisamos
obter uma mudança de nomes (uma
desenhando a linha PS por fora do retângulo
bijeção entre os elementos das duas
PQST. O grafo resultante ainda nos diz quais
estruturas) e depois mostrar que as
nós a aresta PS conecta. propriedades importantes das
Um grafo que pode ser redesenhado sem estruturas são “preservadas”
cruzamentos é chamado de grafo planar. (mantidas) sob essa mudança de
nomes. No caso de grafos, os
elementos são os nós e os arcos. A
“propriedade importante” em um
grafo é quais arcos conectam que nós.
(op. cit., p. 236)

Metodologia

De acordo com Oliveira (2004; 2003), a


existência de um caminhamento em um
determinado grafo pode ser verificada através
De acordo com Oliveira (2003) “Por
da aplicação dos Ciclos ou Trilhas de Euler, e
definição, chamamos de grafo planar a todo
para isso é necessário verificar o grau de todos
grafo que pode ser representado (desenhado em
os vértices pertencentes ao grafo. Um
um plano) de maneira que a interseção das
caminhamento é uma “maneira de ir de um para
arestas ocorra apenas nos vértices. Um grafo
outro vértice”, e consiste em se percorrer uma
pode ser definido como planar se pode ser
sequência de arestas, uma após outra.
desenhado dessa maneira, independente de sua
Quando se pode partir de um nó qualquer,
apresentação atual”.
percorrer todas as arestas do grafo uma única
Apesar de se apresentarem de forma
vez e retornar ao nó inicial, então existe um Ciclo
“aparentemente” diferente, os grafos das figuras
de Euler no grafo, sendo que a condição para
4 e 7 são o mesmo grafo, assim como também
que isso seja possível é que todos os nós do
o da figura 8 e, nesse caso, eles são chamados
grafo tenham grau par. Contudo, se existirem
de grafos isomorfos.
exatamente dois nós de grau impar, é possível
percorrer um caminho pelas arestas do grafo,
desde que os nós inicial e final desse percurso
sejam exatamente os nós ímpares, ou seja, o
caminho deve iniciar exatamente em um dos dois
nós impares e terminar no outro. De acordo com
Gersting (2001, p. 298),

Existe um caminho de Euler em um


grafo conexo se, e somente se, não
existem nós ímpares ou existem
exatamente dois nós ímpares. No caso
em que não existem nós ímpares, o
Segundo Gersting (2001) “Dois grafos caminho pode começar em qualquer
podem parecer muito diferentes em sua nó e terminar aí; no caso de dois nós
representação visual, mas ainda assim serem o ímpares, o caminho precisa começar
mesmo grafo...”. em um deles e terminar no outro.

167
Existem grafos em que as arestas possuem é atribuído como peso às arestas. Um dos
um sentido obrigatório, como se fossem ruas de algoritmos para se encontrar o caminho mínimo
mão única. Nesse caso o grafo é chamado de em um grafo foi desenvolvido por Dijkstra. De
direcionado, ou digrafo. acordo com Oliveira (2003),
Algumas estruturas de dados podem ser
utilizadas para representação de grafos como, Se G é um grafo simples e conexo -
por exemplo, uma matriz de adjacência, onde o com pesos positivos - pode-se afirmar
número de linhas e de colunas corresponde ao que existe pelo menos um caminho
entre dois vértices quaisquer. O mais
número de vértices do grafo. De acordo com
freqüente é que existam vários
Gersting (2001, p.230), “Para representar um
caminhos e então surge o problema
grafo ou uma árvore na memória do computador, que consiste em determinar quais são
os dados precisam ser arrumados de forma que os caminhos de peso mínimo (pode
se preserve toda a informação contida na haver apenas um, também). O peso
representação visual”. pode ser encarado como distância
Para cada aresta do grafo é acrescentado entre dois pontos, daí chamar-se tal
o valor ‘1’ na linha/coluna correspondente. Dessa problema de” problema do caminho
forma, numerando-se os vértices (apenas por mínimo “. Sua solução pode trazer
uma questão de ordenação), substituindo-se as múltiplas vantagens em redes de
letras u, v, w e z por números de 1 a 4, computadores, por exemplo, no envio
de informações entre os pontos de
respectivamente, o grafo conexo e não
maneira mais eficiente quanto
direcionado da figura 6 teria a seguinte matriz de
possível. A área de logística também
adjacência: pode perceber benefícios associados
à solução de semelhante questão.

A fim de ilustrar a aplicação deste estudo


foi utilizada uma situação específica: deseja-se
encontrar a menor distância possível entre dois
pontos quaisquer em um grafo que represente
uma situação tangível da vida real, como por
exemplo, um ponto de táxi que poderia estar
localizado em determinada rua de uma cidade, e
tem como destino levar passageiros até outro
ponto qualquer dentro do mesmo bairro.
Para isso, foi tomado um conjunto de ruas
de um bairro da cidade de Várzea Paulista,
baseado na facilidade de visualização deste
Grafos não direcionados possuem matriz conjunto através de sua representação como
de adjacência simétrica, contudo, se o mesmo grafo.
grafo fosse direcionado, a sua matriz de Foi escolhida a metodologia de estudo de
adjacência poderia apresentar-se de forma caso porque ela permite mostrar, de forma clara
completamente diferente, em razão do sentido e objetiva, a que este estudo se dedica, ou seja,
de orientação de cada aresta. pela análise de um cenário da vida real torna-se
Há muitas situações em que o simples perceber o impacto que este domínio
comprimento da aresta é fator totalmente do conhecimento possui para solucionar as
relevante e necessário, como, por exemplo, para situações a que se propõe.
se estabelecer o custo do menor caminho para De posse do mapa, procurou-se traçar um
se partir de um determinado nó e chegar a outro, grafo simples, conexo e não direcionado sobre
também determinado. Nesses casos esse valor as ruas de determinada região da cidade (parte

168
da Vila Popular), conforme figura 10.

Para estabelecer quantas arestas partem R. Portella e Brasília; dessa forma, o nó 3 se


de cada vértice, foi considerado o seguinte: a conecta com os nós 1, 2 e 4, e o nó 1 se conecta
partir de um vértice localizado em determinada com os nós 3, 4 e 36. A tabela 1 mostra que
rua, é possível acessar quais outras ruas? Por vértices podem ser acessados a partir dos pontos
exemplo, a partir da rua dos Alecrins é possível traçados no grafo.
acessar diretamente as ruas das Avencas, José

169
Selecionados os pontos para compor os Para apurar as distâncias, percorremos
vértices do grafo, o próximo passo foi levantar uma linha imaginária através do centro do leito
todas as distâncias referentes a cada par de das ruas, dobrando as esquinas necessárias,
vértices conectados por arestas. Para este como mostra a figura 11. Por exemplo, para
trabalho foram consideradas apenas as distâncias descobrir a distância real entre os dois pontos
lineares entre os pontos, sem considerar algumas das ruas Amambaí e Ibirá, iniciamos a medida a
variáveis complicadoras, como obstáculos ou partir do ponto “a” localizado sobre o vértice
relevo das ruas, por tratar-se de estudo 37, e seguimos em linha reta até o ponto “b”
experimental baseado apenas nas distancias. localizado na esquina das ruas Ibirá com
Contudo essas variáveis seriam de grande Amambaí, perfazendo 135 metros; em seguida,
importância em determinadas situações, como dobramos a esquina e seguimos a nossa linha
logística, por exemplo, onde o relevo influencia pela rua Amambaí, percorrendo mais 136 metros
diretamente o consumo de combustível. até chegar ao ponto “c” que se encontra sobre o

170
vértice 38, totalizando assim 271 metros. Feito
isto, as distâncias apuradas foram atribuídas ao
grafo como peso da aresta em questão. E assim,
sucessivamente com as demais arestas do grafo.

Para a realização dos testes, foi utilizado


o programa em Linguagem C implementado pelo
Prof. Gerson Pastre de Oliveira, para encontrar
o caminho mínimo, baseado no algoritmo de
Dijkstra. Inserimos no programa todas as arestas
do grafo e respectivos pesos, conforme tabela
2.

Resultados

Para verificar a eficiência e comprovar a


aplicabilidade de tal algoritmo ao nosso
problema, foi solicitado a alguns alunos do curso
de Sistemas de Informação da Faculdade
Politécnica de Jundiaí que efetuassem testes,
simulando vários destinos a partir de
determinados pontos iniciais, escolhidos
aleatoriamente.
No teste de campo realizado neste
trabalho, foram efetuadas simulações com o
grafo traçado para a pesquisa, que sempre
indicaram o caminho mais curto (de menor custo)
- o que surpreendeu alguns dos alunos, os quais
se mostraram interessados pelo fato de o estudo
trazer soluções para problemas aparentemente
difíceis.

171
Conclusão

Com a finalidade de atingir o objetivo


definido para este projeto foi efetuado o estudo,
inicialmente sobre a matéria relativa à Teoria dos
Grafos, e posteriormente sobre os programas
implementados pelo Prof. Gerson Pastre de
Oliveira para o algoritmo de Dijkstra, o algoritmo
para encontrar um caminho de custo mínimo em
um grafo simples e conexo.
Para definir exemplos de situações
práticas do cotidiano, onde tal algoritmo pode
ser aplicado foi escolhida a metodologia de
estudo de caso, que mostrou que os testes e
recursos utilizados obtiveram sucesso,
comprovando assim que a busca sempre resultou
no caminho que fornece a menor distância entre
quaisquer dois pontos selecionados.
É importante ressaltar que este trabalho
não possui a pretensão de esgotar as
possibilidades de estudo deste tema tão vasto e
rico em possibilidades de aplicação mas, ao
contrário, procura abrir um espaço para estudos
mais profundos das aplicações da Teoria dos
Grafos em situações práticas do cotidiano, além
da possibilidade de disseminar e compartilhar o
fruto deste aprendizado com os meus colegas
de Curso. Além disso, o conhecimento e
experiência adquiridos serão valiosos para
aprimorar não só a minha vida acadêmica, mas
também, no futuro, a profissional.
Dessa forma, as obras pesquisadas
mostraram ser excelentes fontes de pesquisa. As
possibilidades de aplicação do assunto objeto
deste estudo estão crescendo exponencialmente
no mundo contemporâneo, pois o poder de
Após uma breve introdução aos alunos, representação das mais variadas situações
sobre o tema e significado da Teoria dos Grafos, através de grafos pode abranger um grande
alguns estudantes quiseram também criar novos volume de informação, especialmente
grafos, além daquele que é objeto da pesquisa, considerando-se o novo paradigma da nossa
sempre respeitando as condições do programa sociedade - a Sociedade da Informação.
utilizado - grafo simples, conexo e não
direcionado - e testar os caminhos desses novos Referências Bibliográficas
grafos. Essa experiência também obteve
sucesso, comprovando que o programa CERVO, Amado L. e BERVIAN, Pedro A. Metodologia
Científica. São Paulo: Prentice Hall, 2002.
realmente fornece como resultado das buscas a GERSTING, Judith L. Fundamentos matemáticos para
indicação do menor caminho entre quaisquer a ciência da computação. Rio de Janeiro: LTC, 2001.
dois vértices selecionados. OLIVEIRA, Gerson P. Construção coletiva do

172
conhecimento através de uma experiência de incentivo
à autonomia dos estudantes no aprendizado de
matemática discreta. Anais do VII Encontro Paulista
de Educação Matemática, 2004.
__________. Matemática Discreta: notas de aula.
Jundiaí, 2003. (mimeo).
WILSON, Robin J. Introduction do Graph Theory. 4.
ed. Prentice Hall. 1996.

173

You might also like