tÉcnicas de busca heurÍstica no desenvolvimento de um sistemade mapas viÁrios e busca de rotas
DESCRIPTION
Este trabalho apresenta um protótipo onde foi implementada a busca heurística, maisespecificamente o algoritmo A*, como forma de solução ao problema de rotas otimizadas num espaçode vias urbanas. Ele é composto por uma ferramenta web de navegação de mapas e por scripts querodam em um servidor que fazem a busca heurística. Também é feita uma breve revisão bibliográficade engenharia de tráfego e mapas viários, que são bases para o desenvolvimento prático do trabalho.Por fim também é demonstrado que as técnicas de Inteligência Artificial, especificamente o A* comalgumas alterações, podem ser usados para auxilio da engenharia de tráfego e que alguns dosproblemas dessa área podem ser resolvidos ou mesmo amenizados através dessa ferramenta.TRANSCRIPT
CENTRO UNIVERSITARIO DE BARRA MANSAPRÓ-REITORIA ACADÊMICA
NUCLEO PEDAGÓGICO
TÉCNICAS DE BUSCA HEURÍSTICA NO DESENVOLVIMENTO DE UM SISTEMA DE MAPAS VIÁRIOS E BUSCA DE ROTAS
Afonso França de OliveiraBernardo Silva Pinto
Barra Mansa2006
CENTRO UNIVERSITARIO DE BARRA MANSAPRÓ-REITORIA ACADÊMICA
NUCLEO PEDAGÓGICO
TÉCNICAS DE BUSCA HEURÍSTICA NO DESENVOLVIMENTO DE UM SISTEMA DE MAPAS VIÁRIOS E BUSCA DE ROTAS
Afonso França de OliveiraBernardo Silva Pinto
Barra Mansa2006
Monografia apresentada ao Curso de Ciência da Computação do Centro Universitário de Barra Mansa, como requisito parcial para a obtenção do título de Bacharel em Ciências da Computação, sob orientação do professor
TÉCNICAS DE BUSCA HEURÍSTICA NO DESENVOLVIMENTO DE UM SISTEMA DE MAPAS VIÁRIOS E BUSCA DE ROTAS
Afonso França de OliveiraBernardo Silva Pinto
___________________________________Wiliam Hiroshi Hisatugu
___________________________________José Nilton Cantarino Gil
___________________________________Marcelo Arantes de Oliveira
Barra Mansa2006
Monografia apresentada ao Curso de Ciências da Computação do Centro Universitário de Barra Mansa, submetida à aprovação da Banca Examinadora composta pelos seguintes membros:
A todos nossos colegas de turma que sempre nos apoiaram ao longo do curso
Agradecemos aos nossos pais e amigos que acreditaram em nós e nos apoiaram todos nossos problemas e de todas as formas possíveis. Gostaríamos de agradecer também ao professor, orientador e amigo professor Wiliam Hiroshi Hisatugu, que nos orientou e ensinou a melhorar o trabalho. Mesmo estando ocupado, dedicando seu tempo livre para ler, estudar e discutir todos os possíveis detalhes de nosso projeto.
"O bater de asas de uma simples
borboleta poderia influenciar o curso
natural das coisas, e assim, talvez
provocar um tufão do outro lado do
mundo”.
Edward Lorenz
Resumo
Este trabalho apresenta um protótipo onde foi implementada a busca heurística, mais especificamente o algoritmo A*, como forma de solução ao problema de rotas otimizadas num espaço de vias urbanas. Ele é composto por uma ferramenta web de navegação de mapas e por scripts que rodam em um servidor que fazem a busca heurística. Também é feita uma breve revisão bibliográfica de engenharia de tráfego e mapas viários, que são bases para o desenvolvimento prático do trabalho. Por fim também é demonstrado que as técnicas de Inteligência Artificial, especificamente o A* com algumas alterações, podem ser usados para auxilio da engenharia de tráfego e que alguns dos problemas dessa área podem ser resolvidos ou mesmo amenizados através dessa ferramenta.
Abstract
This work presents an archetype where the heuristical search was implemented, more specifically the A* algorithm, as form of solution to the problem of routes optimized in a space of urban ways. It is composed by a tool web of navigation of maps and for scripts that they run in a server that makes the heuristical search. Also was made one brief bibliographical revision of traffic engineering and road maps, which are bases for the practical development of the work. Finally also he is demonstrated that the techniques of Artificial Intelligence, specifically the A* with some alterations, can be used for assist of the traffic engineering and that some of the problems of this area can be decided or exactly brightened up through this tool.
Lista de Ilustrações
Figura 2.1: Tabela de Impactos na segurança...........................................................................20Figura 3.1: Mapa Mundi Antigo..................................................................................................21Figura 3.2: Tela do Software Google Earth................................................................................23Figura 4.1: Elementos de um problema de busca......................................................................26Figura 4.2: Busca em Largura: Os números representam a ordem de expansão enquanto o duplo círculo representa o estado final no espaço de estados............................................................29Figura 4.3: Busca em Profundidade: Os números representam a ordem de expansão enquanto o duplo círculo representa o estado final no espaço de estados...................................................30Figura 4.4: Busca Gulosa: Os números representam a ordem de expansão enquanto o duplo círculo representa o estado final no espaço de estados........................................................................32Figura 4.5: Função Heurística da Busca A*................................................................................34Figura 4.6: Busca A*: Os números representam a ordem de expansão enquanto o duplo círculo representa o estado final no espaço de estados........................................................................34Figura 4.7: Versão Simplificada do Algoritmo A*........................................................................35Figura 5.1: Exemplo de grafos em um sistema viário simples....................................................37Figura 5.2: Cálculo de W(n)........................................................................................................39Figura 5.3: Cálculo da heurística F(n)........................................................................................39Figura 5.4: Tabela de tipos de vias e seus respectivos pesos nominais....................................40Figura 6.1: Módulos do Sistema.................................................................................................43Figura 6.2: Diagrama de Entidade Relacionamento...................................................................45Figura 6.3: Fórmula de cálculo da escala...................................................................................46Figura 6.4: Tabelas de níveis de aproximação x tamanho do mapa..........................................46Figura 6.5: Tabelas de níveis de aproximação x segmentos do mapa.......................................47Figura 6.6: Representação gráfica do mapa inicial: dados fictícios............................................50Figura 6.7: Representação gráfica da cidade de Barra Mansa no menor nível de zoom...........50
Lista de Abreviaturas e Siglas
3D Três Dimensõesa.C. Antes de CristoAIA* Aprofundamento Iterativo A*Art. ArtigoBRPM Busca Recursiva Pelo MelhorCEP Código de endereçamento postalCONTRAN Conselho Nacional de TrânsitoCSS Cascading Style SheetsDENATRAN Departamento Nacional de TrânsitoDER Diagrama de Entidade RelacionamentoDER Departamento de Estrada de RodagemDETRAN Departamento Estadual de TrânsitoDOM Document Object Model FIFO First In First OutFILO First In Last OutGPS Global Positioning SystemHTML HyperText Markup LanguagePHP PHP: Hypertext PreprocessorPDA Personal Digital AssistantPNG Portable Graphics NetworkRAM Random Access MemoryW3C World Wide Web Consortium
Sumário
1. Introdução.............................................................................................................................. 131.1 Delimitação do Tema.......................................................................................................131.2 Problema.......................................................................................................................... 131.3 Enunciado das Hipóteses................................................................................................141.4 Objetivos.......................................................................................................................... 141.5 Justificativa....................................................................................................................... 14
2. Rotas Urbanas....................................................................................................................... 152.1 Conceitos e Princípios Básicos:.......................................................................................15
2.1.1 Código Brasileiro de Trânsito....................................................................................152.2 Competências Institucionais.............................................................................................16
2.2.1 Política Nacional de Transito....................................................................................172.2.2 Programa Nacional de Trânsito................................................................................17
2.3 Engenharia de Gestão de Tráfego...................................................................................172.3.1 Elementos do sistema de Trafego.................................................................................182.4 Conflitos Viários...............................................................................................................192.5 Segurança Viária..............................................................................................................20
3. Mapas Viários......................................................................................................................... 213.1 Histórico........................................................................................................................... 213.2 Tratamento de Imagens...................................................................................................233.3 Vetorização...................................................................................................................... 23
3.3.1 Tipos de Vetorização................................................................................................233.4 Rasterização.................................................................................................................... 24
3.4.1 Arquivo Raster..........................................................................................................243.4.2 Representação matricial...........................................................................................24
4. Inteligência Artificial................................................................................................................254.1 Resolução de Problemas através de Algoritmos de Busca..............................................254.2 Estratégias de Busca não-informada:..............................................................................28
4.2.1 Busca em Largura.....................................................................................................284.2.2 Busca em Profundidade............................................................................................29
4.3 Estratégias de Busca Informada:.....................................................................................314.3.1 Busca Gulosa...........................................................................................................324.3.3 Busca A*................................................................................................................... 33
5. Aplicação de busca heurística para auxílio ao problema de rotas..........................................375.1 Definindo o sentido da via urbana....................................................................................375.2 Fatores externos que influenciam na busca de rotas viárias............................................38
5.2.1 Tipos da via..............................................................................................................395.2.2 Outros Fatores..........................................................................................................40
5.3 Problemas de Redução de Velocidade do Algoritmo.......................................................406. Proposta................................................................................................................................. 42
6.1 Obtenção dos Dados.......................................................................................................426.1.1 Obtenção das coordenadas do mapa.......................................................................436.1.2 Associação dos Nós com os nomes das vias...........................................................446.1.3 Obtenção dos dados de funcionalidade e sentido das vias......................................44
6.2 Módulo de Busca de Rotas..............................................................................................446.3. Módulo Renderizador de Mapas.....................................................................................45
6.3.1 Adaptação do mapa às escalas de zoom.................................................................456.3.2 Geração das Imagens através da biblioteca GD.......................................................466.3.3 Segmentação do Mapa.............................................................................................476.3.4 Renderização da Rota..............................................................................................48
6.4. Módulo de Busca de Vias................................................................................................486.4.1 Localizar vias pelo nome..........................................................................................486.4.2 Localizar ruas pelo CEP...........................................................................................48
6.5. Módulo da Aplicação Web...............................................................................................486.5.1 Navegador do Mapa.................................................................................................486.5.2 Níveis de Aproximação.............................................................................................496.5.3 Escala do Mapa........................................................................................................496.5.4 Busca de Rota..........................................................................................................496.6. Validação do Protótipo................................................................................................496.6.1 Problema de velocidade de execução do algoritmo..................................................50
6.6.2 Problemas de nós reabertos.....................................................................................51Conclusão.................................................................................................................................. 52Bibliografia.................................................................................................................................. 53Glossário.................................................................................................................................... 54
1. Introdução
O ser humano sempre procurou se localizar e representar o mundo real
através de mapas. Com as descobertas tecnológicas, as mídias de representação
desses mapas mudaram e hoje em dia, com um aparelho de GPS é possível se
localizar em qualquer parte do mundo.
Diariamente, muitas pessoas se locomovem para lugares que nunca
estiveram antes. E mesmo com os avanços tecnológicos e a sinalização nas vias,
muitas delas se perdem e demoram um bom tempo para encontrar o local
procurado.
Algumas pessoas por já terem conhecimento, no entanto seguem um
caminho rotineiro simplesmente por costume e se esquecem que rotas alternativas
podem ser mais curtas, ou mesmo, mais rápidas mesmo que sejam mais longas.
Entretanto uma avaliação humana de uma rota pode ser errônea, uma vez que são
muitos os fatores, que fazem uma determinada rota mais rápida que outra.
Muitos desses fatores se modificam num espaço de tempo muito curto, como
por exemplo, o tráfego de uma via que numa manhã pode estar livre e em instantes
formar-se um congestionamento na hora do almoço.
Esse trabalho pretende estudar esses fatores e propor um sistema web que
crie rotas otimizadas através de busca heurística. Esse tipo de busca é
constantemente utilizado para encontrar menor caminho em jogos de videogame,
então faremos uso desta técnica em engenharia de tráfego.
É proposto também a implementação de um sistema de mapas, para que o
usuário tenha um acesso visual à malha viária e possa tirar suas conclusões, além
do encontrado pela busca.
1.1 Delimitação do Tema
Técnicas de busca heurística no desenvolvimento de um sistema de mapas
rodoviários e busca de rotas
1.2 Problema
Pessoas gastam mais tempo que o necessário na locomoção entre as vias de
um sistema de transito.
1.3 Enunciado das Hipóteses
Os problemas no trânsito, como engarrafamentos e acidentes seriam
reduzidos com a implementação desse sistema?
Rotas otimizadas levariam as pessoas ao seu destino de maneira mais
rápida?
1.4 Objetivos
Geral: Estudar os problemas de transito e propor uma ferramenta para auxiliar
na engenharia de tráfego, utilizando técnicas de Inteligência Artificial e Computação
Gráfica.
Específicos:
Expor o problema de engenharia de tráfego;
Criar uma ferramenta Web de Mapas e Busca de Rota;
Mostrar a aplicação de Inteligência Artificial em engenharia de tráfego;
1.5 Justificativa
Este projeto se respalda na quantidade de combustível gasta
desnecessariamente, nos congestionamentos e acidentes existentes em grandes
cidades e aos atrasos dos serviços de emergência, como polícia, bombeiros e
ambulâncias.
2. Rotas Urbanas
Neste Capítulo será descrito o domínio de aplicação do problema abordado
neste trabalho, detalhando todos os conceitos e princípios básicos referentes ao
tráfego em vias urbanas. Para tanto é feito um levantamento de toda uma
terminologia da área de engenharia de tráfego, desde suas definições básicas, tipo
das vias para que assim os assuntos que serão discutidos posteriormente possam
estar embasados nesses conceitos.
2.1 Conceitos e Princípios Básicos
Os problemas nos sistemas de circulação de transportes, como acidentes e
congestionamentos, vêm afetando a qualidade de vida dos cidadãos e degradando o
ambiente nos últimos tempos. A causa desses problemas são fatores sociais,
políticos e econômicos, bem como a falta de incentivo ao transporte público e
preservação do meio ambiente.
A cultura do automóvel trás consigo várias conseqüências, como a
necessidade de implantação de novas vias, o encarecimento dos serviços públicos
como água, esgoto e eletricidade e o aumento de tráfego em vias locais.
Como paliativo para esses problemas, os governos implantam sistemas
eletrônicos de gestão de tráfego, mas essa medida não pode ser considerada uma
solução, visto que não age na origem do problema.
2.1.1 Código Brasileiro de Trânsito
O novo código entrou em vigor em 1998 trazendo várias inovações
importantes, como a velocidade máxima permitida nas vias. Ele estabelece que o
tráfego nas vias expressas não deva ultrapassar a 80 Km/h. Já nas vias arteriais o
tráfego deve ser de 60 Km/h, seguido de 40 Km/h para as vias coletoras e 20 Km/h
para as vias locais.
Esse código reconhece que os graves problemas encontrados no transito
devem ser combatidos com vigor, para melhorar a qualidade de vida e a economia
do país.
As políticas de transporte são geralmente individualizadas por município,
cabendo ao prefeito gerenciar as atividades de pavimentação, sinalização e
transporte público.
2.2 Competências Institucionais
A responsabilidade institucional sobre as questões de trânsito e transporte no
Brasil está dividida entre os três níveis de governo (DENATRAN 2003):
Federal: Responsável por aeroportos, portos, ferrovias e rodovias federais e
pelo transporte interestadual, rodoviário e ferroviário.
Estadual: Responsável por rodovias e ferrovias estaduais e de sistema de
ônibus intermunicipal e pelo transporte metropolitano.
Municipal: Responsável pelo trânsito e transporte público dentro dos seus
limites geográficos.
A união tem o poder legislativo, e cabe ao governo a sua regulamentação
através do DETRAN, do DER, da Polícia Militar e dos órgãos municipais.
O Conselho Nacional de Trânsito (CONTRAN) é um órgão normativo
composto por seis ministérios: Ciência e Tecnologia, Educação, Exército, Meio
Ambiente, Transportes e Saúde. Cabe a esse órgão, regulamentar as normas do
Código de Trânsito Brasileiro.
Cabe ao Departamento Nacional de Trânsito (DENATRAN), órgão
subordinado ao Ministério da Justiça, fazer cumprir a legislação.
Cabe ao Departamento Estadual de Trânsito (DETRAN) o registro e controle
dos veículos.
2.2.1 Política Nacional de Transito
Tendo em vista o contexto já apresentado, tornam-se necessárias à
formulação e implementação de ações que visem à melhoria das condições de
tráfego no Brasil. Isso deve acontecer de forma que os três níveis de governo
estejam coordenados juntamente com a sociedade, caracterizando a vontade
pública de mudança das condições não favoráveis do trânsito, de forma a alcançar
algumas diretrizes:
Objetivos Estratégicos: Preservar a vida, preservar a saúde, melhorar a
qualidade do ambiente urbano, aumentar a eficiência na circulação dos cidadãos.
Público Alvo: Sociedade, Profissionais da Área e entidades ligadas ao trânsito
e transporte.
Problemas a enfrentar: Crescimento desordenado das cidades, degradação
da qualidade de vida urbana.
Princípios a Adotar: Discussão transparente e ampla de soluções;
Planejamento e atribuições do transito cabem ao poder público; Acesso aos meios
de transporte distribuídos democraticamente.
Grandes desafios do trânsito: Redução de Acidentes, respeito à democracia,
às leis e cidadania, integração do sistema nacional de transito, implantação da
política do programa nacional de trânsito, municipalização do transito, reduzir a
poluição atmosférica, melhorar a qualidade de vida nas cidades.
2.2.2 Programa Nacional de Trânsito
Procura estabelecer metas para medir os progressos. Dentre elas estão a
segurança na circulação, qualidade na circulação e qualidade gerencial.
2.3 Engenharia de Gestão de Tráfego
Engenharia de tráfego é uma atividade técnica, no sentido de utilizar
procedimentos racionais de base matemático-físico e política, no sentido de dirigir a
aplicação destas técnicas segundo os interesses (conflitantes) dos vários usuários
que realizam a circulação nas cidades. Classicamente os sistemas viários são
baseados em três pilares: Engenharia, Fiscalização e Educação.
2.3.1 Elementos do sistema de Trafego
O código de transito Brasileiro, no Art. 1°, § 1°, assim define “transito”:
“Considera se transito a utilização de vias por pessoas, veículos e animais, isolados ou em grupos, conduzidos ou não, para fins de circulação, paradas, estacionamento e operações de carga e descarga.”
O Art. 2° complementa o conceito ao definir que:
“São vias terrestres urbanas e rurais as ruas, as avenidas, os logradouros, os caminhos, as passagens e as rodovias, que terão seu uso regulamentado pelo órgão ou entidade com circuncisão sobre elas de acordo com as peculiaridades locais e circunstancias especiais”.
Tradicionalmente, a literatura relativa à engenharia de trafego define três
elementos componentes dos sistemas: usuários, vias e veículos.
a) Usuários: Ocupantes de qualquer tipo de veículo, guiando-os ou não e os
pedestres principalmente. Uma abordagem mais ampla possibilitaria acrescentar
também as pessoas que de alguma forma são afetadas pela operação do trafego.
b) Veículos: são automóveis, ônibus, caminhões, Motocicletas, triciclos,
bicicletas, carroças, bondes e etc.
c) Via: é o espaço destinado à circulação, O conjunto estruturado de vias que
servem a uma determinada região é conhecido como sistema viário e tem como
funções básicas assegurar a mobilidade e acessibilidade dos usuários.
O sistema viário urbano é formado basicamente por dois grupos: os nós e as
ligações. As ligações são trechos ou segmentos que interligam os nós (ou
interseções passagens de nível etc.) cujas características físicas não são
necessariamente homogêneas ao longo de sua extensão.
Neste contexto as viagens (deslocamentos) se baseiam em um ponto de
origem e um ponto de destino tornando mais apropriadas à escolha de vias com um
nível mínimo de serviço de modo a possibilitar um deslocamento rápido, seguro e
eficiente. Sistemas viários podem ser classificados em:
Quanto ao ambiente: Urbano e rural;
Quanto à esfera administrativa: Federal, estadual e municipal;
Quanto à operacionalidade: Relacionado à intensidade da fluência de veículos
na via;
Quanto à funcionalidade: Vias expressas, arteriais, coletoras, locais.
a) Vias expressas: Possibilitam Ligações com rapidez entre localidades
distantes de uma região, normalmente com grande volume de tráfego. Velocidade
de operação de 80 km/h.
b) Vias arteriais: São as ligações entre as vias expressas e as vias coletoras
ou então distribuem o trafego da via expressa pela região. Velocidade máxima 60
km/h.
c) Vias Coletoras: Realiza a ligação entre as vias arteriais penetrando nas
áreas residenciais. Velocidade Máxima 40 Km/h.
d) Vias Locais: São vias de áreas residenciais em condomínios dentro de
empresas etc. Velocidade máxima 20 Km/h.
2.4 Conflitos Viários
Os conflitos urbanos são classificados em:
a) Físicos: dois corpos não podem ocupar o mesmo lugar no espaço;
b) Sociais: pedestres x motoristas, transporte público x automóvel, etc;
c) Derivados: Degradação do ambiente e qualidade de vida como
conseqüência da locomoção.
Natureza das colisões: Uma situação de conflito pode ser proveniente de
vários motivos como numero de “ligações” na via, a mão da via, a quantidade de
trafego de veículos e a quantidade de trafego de pedestres na conexão. Um ponto a
ser considerado também seriam os “pólos geradores de trafego” como shoppings e
colégios
2.5 Segurança Viária
Existem várias medidas a serem tomadas para que a segurança na
locomoção seja aumentada.
Situação / Fator
Pré-Impacto Impacto Pós-Impacto
Humano
TreinamentoConhecimentoHabilidadeMotivações e Atitudes
Dispositivos de Proteção (Capacete, Cinto de segurança e Air-bag).
Serviços de Primeiros Socorros
Veículo
Projeto de Sistema de ControleProjeto dos Sistemas de ConfortoProjeto do Sistema de InformaçãoLeis e Policiamento
Sistema de Proteção ao OcupanteProjeto de Sistema de Controle
Meio-ambiente
GeometriaPoliciamentoSistema de ControleClima e LuminosidadeCondições da SuperfícieApelo Informativo
Geometria e Dispositivos de absorção de energia
Geometria para facilitar o acesso de emergênciaLimpeza dos Estilhaços e partes dos veículos acidentadosEsquemas de tráfego e reabertura da via.
Figura 2.1: Tabela de Impactos na segurança
3. Mapas Viários
3.1 Histórico
Buisseret (1992) diz que os mapas mais antigos encontrados datam cerca de
6.200 a.C. estando pintados numa parede.
Com o passar do tempo os mapas eram traçados em diferentes materiais
como a cerâmica, o papel, o bronze, as cascas de coco, a pedra, a pele dos
animais, etc. O mapa mais antigo do mundo foi elaborado num pedaço de cerâmica
produzido pelos babilônios entre os Séculos XXV e XXIII A.C.
Com a invenção do papel, eles passaram a ser desenhados em folhas. Um
dos grandes passos na evolução dos mapas é dado na época dos Descobrimentos,
quando as áreas representadas eram bem maiores que anteriormente e havia a
necessidade de obter bons níveis precisão posicional para conseguir navegar com
relativa segurança.
Figura 3.1: Mapa Mundi Antigo
A cartografia sofreu uma verdadeira revolução com a aplicação dos Sistemas
de Informação Geográfica e do Sistema de Posicionamento Global a partir do final
do século XX. E esta revolução opera-se não apenas em nível da produção, mas
também da circulação, manipulação e utilização de informação espacial.
Os objetos que são representados num mapa dependem do tipo de uso para
o qual este é elaborado. Por exemplo, um mapa viário dará importância à rede viária
ao representar os vários tipos de vias, os cruzamentos e as distâncias entre cidades.
Um mapa geológico caracterizará do ponto de vista da geologia o solo numa dada
região. Um mapa político mostrará as fronteiras ou outras divisões administrativas.
Um mapa para navegação marítima dará prioridade à localização de faróis, portos e
relevo submarino.
Outro elemento fundamental dos mapas modernos é a presença de uma
escala, que permite determinar as dimensões reais dos objetos cartográficos e medir
distâncias (a escala é um quociente entre a medida no mapa e a medida real
correspondente). Quanto maior é a escala, maior o detalhe.
Atualmente todos os mapas do mundo já estão ao alcance do usuário através
da Internet. Sistemas como Google Maps, Google Earth, MSN Local e Yahoo Maps
dentre outros já disponibilizam imagens de todas as partes do mundo. Ferramentas
como o GPS (Global Positioning System) permite que se saibam as coordenadas
exatas de onde se estiver em qualquer lugar do mundo via satélite.
O Google Earth é como um navegador que você pode visualizar todo o
planeta. As imagens são capturadas por meio de satélites, com uma qualidade
excelente. O Google Earth é integrado com uma ferramenta de busca. Basta digitar
o nome de uma cidade para que ele a localize.
Figura 3.2: Tela do Software Google Earth
3.2 Tratamento de Imagens
Neste caso, o sistema vai gerar mapas viários em formato digital para a
representação da rota obtida pela busca heurística. Esses mapas serão gerados
através da digitalização de mapas impressos e convertidos para o formato vetorial
(vetorização), para que assim seja possível fazer cálculos com suas coordenadas e
representá-lo em várias escalas diferentes para o usuário através da rasterização
dos vetores.
3.3 Vetorização
Conforme Azevedo e Conci (2003), vetorização é a transformação de uma
imagem baseada em pixels em uma imagem baseada em vetores. Existem vários
softwares capazes de fazer essa transformação, tanto de forma automática quanto
de forma manual, como o Freehand ou Illustrator da Adobe, por exemplo.
Arquivos vetoriais são constituídos por vetores. Vetores são entidades
definidas matematicamente como uma série de pontos unidos por linhas. Cada vetor
é uma entidade independente com propriedades como cor, forma, contorno,
tamanho e posição na tela, incluídas na sua definição. Visto que cada vetor é uma
entidade independente, é possível mover e alterar suas propriedades repetidas
vezes e manter a sua nitidez e resolução original, sem afetar os demais
componentes do desenho o que faz esse formato muito utilizado para sistemas 3D
como, por exemplo, o Auto Cad que trabalha com arquivos vetorizados.
3.3.1 Tipos de Vetorização
Existem duas técnicas de vetorização, a vetorização automática e a
vetorização manual. No caso da vetorização automática o ganho de tempo é grande,
porém nem sempre se obtém o resultado esperado, pois a vetorização automática
também procede com qualquer outro elemento em uma imagem, ou seja, ruídos,
podendo criar vértices inexistentes, outra desvantagem é a quantidade de nós que é
muito maior do que em uma vetorização manual. Na vetorização manual o tempo
gasto é muito maior, porém a quantidade de nós e conexões são muito menores.
3.4 Rasterização
Conforme Fonseca, Quintanilha e Iwai (2002), rasterização é o processo de
transformação, via software, de uma imagem vetorial em uma nova imagem
matricial. Refere-se à operação onde dados codificados na representação vetorial
são transformados numa representação baseada numa malha regular, geralmente
quadrada e conhecida como bitmap.
3.4.1 Arquivo Raster
Arquivos raster são formados de pontos individuais que são denominados de
pixels. Pixels são dispostos e coloridos de maneiras diferentes para formar um
padrão. Se for utilizado alto nível de zoom sobre uma imagem rasterizada será
possível ver os quadrados individuais que formam a totalidade da imagem.
A rasterização tem dois passos básicos que são:
O processo de determinar em quais pixels de uma tela o objeto é projetado,
determina para cada pixel (em ordem de varredura) quais superfícies dos objetos
serão projetadas nesse pixel.
Totalização (cor do pixel)
Arquivos rasterizados são comumente encontrados quando se escaneia uma
imagem normalmente ela vem em formado de raster.
3.4.2 Representação matricial
As referências espaciais são dadas pelas posições de células, em geral
quadradas, sobre as quais incidem os pontos, linhas e áreas. A essas células
corresponderão os pixels da imagem matricial.
4. Inteligência Artificial
Segundo Harmon e King (1988), a Inteligência Artificial é uma subdivisão da
área de ciência da computação criada pelos pesquisadores na busca tanto do
processamento simbólico como das soluções de problemas formulados pelo homem.
Neste sentido, os pesquisadores de Inteligência Artificial preocupam-se em
desenvolver sistemas de computador que produzam resultados que normalmente se
associam à inteligência humana.
O problema de rotas viárias se enquadra nesse contexto, pois é um problema
formulado pelo homem. Conforme será visto posteriormente, é possível então aplicar
técnicas de Inteligência Artificial para resolver esse problema dentro de um espaço
de estados bem definidos.
Mas os benefícios da Inteligência Artificial se aplicam às diversas outras áreas
como auxílio de tomada de decisão, logística, sistema de apoio a especialistas,
robótica, psicologia e neurobiologia, jogos e etc. Da mesma forma, muitas outras
disciplinas podem interagir com a Inteligência Artificial como matemática, filosofia,
sociologia, lingüística, psicologia, genética, dentre outras.
Será tratado com mais ênfase nesse trabalho da resolução de problemas por
meio de busca. Na próxima seção, serão estudados alguns dos métodos de busca
que podem ser aplicados no roteamento de veículos e na busca de rotas urbanas
em geral.
4.1 Resolução de Problemas através de Algoritmos de Busca
Conforme o site Wikipedia (2006), Um algoritmo de busca, em termos gerais,
é um algoritmo que toma um problema como entrada e retorna a solução para o
problema, geralmente após resolver um número possível de soluções. A maioria dos
algoritmos estudados por cientistas da computação que resolvem problemas são
algoritmos de busca. O conjunto de todas as soluções possíveis para um problema é
chamado de espaço de busca.
De acordo com Russel e Norvig (1995), o problema de busca pode ser
definido formalmente por quatro componentes:
Estado Inicial: É o estado em que o agente começa;
Função Sucessor: É uma descrição das ações possíveis que estão
disponíveis para o agente. Juntos o estado inicial e a função sucessora definem
implicitamente o espaço de estados do programa – o conjunto de todos os estados
acessíveis a partir do estado inicial, formando um grafo que os nós são estados e os
arcos entre os nós são ações. Um caminho no espaço de estados é uma seqüência
de estados conectados por uma seqüência de ações.
Teste de Objetivos: É uma função que determina se um dado estado é um
estado objetivo. Às vezes existe um conjunto explicito de estados objetivos possíveis
e o teste simplesmente verifica se o estado dado é um deles, outras vezes o objetivo
é especificado por uma propriedade abstrata e não por um conjunto de estados
explicitamente enumerado.
Custo de Caminho: É uma função que atribui um custo numérico a cada
caminho que reflete no desempenho do agente. O custo de passo é o valor
diretamente atribuído para ir de um estado ao outro vizinho.
A figura 4.1 exemplifica os quatro componentes citados acima:
?
Função Sucessor
Estado Inicial
Teste de Objetivo
3 Custo de caminho
2
Figura 4.1: Elementos de um problema de busca
De posse desses quatro componentes é possível então formular o problema
de rotas, conforme será feito no capítulo cinco. Mas para definir o espaço de estados
possíveis, precisa-se levar em consideração que nem todos os aspectos do mundo
real podem ser representados numa busca. Russel (1995) define esse conceito
como abstração:
...uma viagem real cruzando o país, onde o estado do mundo inclui muitos itens: os companheiros de viagem, o que toca no rádio, a paisagem vista da janela, a existência ou não de policiais nas proximidades, a distância até a próxima parada para descanso, as condições da estrada, o tempo e assim por diante. Todas essas considerações são omitidas de nossas descrições de estados, porque são irrelevantes para o problema encontrar uma rota...
Após formular o problema é preciso resolvê-los. Nas seções seguintes, serão
vistas estratégias de busca informadas e não-informadas. Que tentam fazer a
resolução e suas vantagens e desvantagens. Mas antes que se possam avaliar
esses algoritmos, dois conceitos importantes precisam ser abordados, que é o de
busca ótima e busca completa:
Busca Ótima: Quando a busca encontra uma solução que, de acordo com as
definições do problema, seja a que tenha o menor custo. Assim nenhuma outra
solução terá um custo menor que o de uma solução ótima. A otimalidade de uma
busca é representada por uma * (estrela).
Busca Completa: Esse conceito é usado quando o algoritmo fornece uma
garantia de que uma solução vai ser encontrada se ela existir.
A busca de rotas viárias tem que ser tanto ótima quanto completa, de forma a
obter sempre o caminho mais curto se ele existir e é o que será analisado na
escolha do método de busca para a implementação proposta.
Formalmente, podem-se dividir as estratégias de busca conhecidas em dois
grupos. As estratégias do tipo não informadas e as do tipo informadas.
4.2 Estratégias de Busca não-informada:
São buscas que não utilizam nenhuma informação adicional sobre os
estados, além daquelas do próprio problema. Esse tipo de busca, também
conhecido como busca cega, percorre exaustivamente o espaço de estados até
encontrar uma solução ou até que todos os estados tenham sido visitados. As
buscas cegas em geral são simplórias, algumas são completas e poucas são ótimas.
Será visto nas seções seguintes os dois métodos mais conhecidos de busca cega:
4.2.1 Busca em Largura
Conforme Wikipedia (2006) uma busca em largura é um método de busca
não-informada que expande e examina sistematicamente todos os nós do espaço de
busca, em busca de uma solução. Em outras palavras, pode-se dizer que seu
algoritmo realiza uma busca exaustiva em todo espaço, sem considerar o seu alvo
de busca, até que ele o encontre. Ele não utiliza uma heurística.
De acordo com Russel e Norvig (1995) do ponto de vista do algoritmo, todos
os nós filhos obtidos pela expansão de um nó são adicionados a uma fila (FIFO). Em
implementações típicas, nós que ainda não foram examinados por seus vizinhos são
colocados num container (como por exemplo, uma fila ou lista ligada) que é
chamado de “aberto”. Uma vez examinados, são colocados num container
“fechado”.
Em uma busca em largura a partir de um vértice, espera-se que todos os
vizinhos do vértice sejam visitados antes de continuar a busca mais profundamente.
1
2 3
4 5 6Figura 4.2: Busca em Largura: Os números representam a ordem de expansão enquanto o duplo círculo representa o estado final no espaço de estados
A busca em largura é completa apenas se a árvore pesquisada tem um
número finito de ramos. O algoritmo irá encontrar o alvo da busca caso ele exista, ou
seja, ele alcança todos os nós de uma árvore por mais que isso possa ocasionar em
um exponencial tempo de execução.
A busca em largura é ótima se o custo dos passos for idêntico – o algoritmo
encontrará a solução mais “rasa” de uma árvore de busca, não necessariamente a
melhor. No caso em que os passos possuem custos diferentes, a solução mais
“rasa” não é necessariamente a melhor.
A busca em largura tem complexidade linear espacial do tamanho (arestas
somadas a vértices) da árvore ou grafo pesquisado, já que ela precisa armazenar
todos os nós expandidos na memória.
Como foi visto, a busca em largura só é ótima se o custo dos passos for
idêntico (busca de custo uniforme), mas num espaço de vias, dificilmente isso
aconteceria (exceções para quarteirões em que suas vias têm extensão uniforme).
De posse dessa premissa, levando ainda em consideração que o tempo e memória
gastos nesse tipo de busca são muito grandes, não é possível utilizar esse método
para resolução do problema de rotas.
4.2.2 Busca em Profundidade
Nessa estratégia de busca um dos nós do nível mais profundo da árvore de
busca sempre é expandido. Somente quando a busca atinge um nó cujos filhos
possuem estados que já foram expandidos outrora é que a busca expandirá algum
dos nós pertencentes aos níveis acima deste. Uma forma de garantir esta ordem de
expansão é adicionar os nós filhos que serão expandidos em uma pilha (FILO), onde
o primeiro nó removido será o primeiro filho gerado de onde a busca continua
aprofundando-se até não mais ser possível ou retirar da pilha um nó cujo estado
seja correspondente ao estado objetivo.
1
2 5
3 4 6
Figura 4.3: Busca em Profundidade: Os números representam a ordem de expansão enquanto o duplo círculo representa o estado final no espaço de estados
Diferente da estratégia de busca em largura, a busca em profundidade utiliza
menor quantidade de memória para armazenar os nós expandidos do que a busca
anterior uma vez que armazena somente um único caminho do nó raiz até um nó
folha mantendo os demais nós não expandidos enquanto aprofunda pelo caminho.
Se cada nó expandido gera b nós e a árvore de busca possui profundidade máxima
m então a busca em profundidade requer que estejam armazenados bm nós na
memória fornecendo uma complexidade de espaço da ordem de O (bm).
A complexidade de tempo é da ordem de O (bm) criando um grande contraste
com a complexidade de tempo de O (bd) dado pela busca em largura.
Para problemas que possuem muitas soluções a busca em profundidade
tende a encontrar uma solução mais rápido que a busca em largura devido à
possibilidade de procurar uma solução explorando apenas uma pequena parte do
espaço de estados. Porém, como sempre aprofunda em um determinado ramo da
árvore de busca, pode ocorrer de existir uma melhor solução nos ramos que
possuem menor profundidade na árvore de busca e que dificilmente serão
explorados, fazendo com que as soluções encontradas pela busca em profundidade
não sejam na maioria das vezes soluções ótimas. Outro problema consiste na
possibilidade do método de busca fazer uma escolha não muito boa de forma que a
busca continue sempre aprofundando sem retornar para os ramos de menor
profundidade mesmo que uma solução exista em outra região do espaço de estados
levando a uma busca infinita.
A busca em profundidade mantém na memória o caminho que está sendo
expandido no momento, e os nós irmãos dos nós no caminho (para possibilitar o
backtracking). Necessita-se armazenar apenas bm nós para um espaço de estados
com fator de expansão b e profundidade m, onde m pode ser maior que d.
As características anteriormente citadas fazem com que a busca em
profundidade seja um método mais econômico em termos de requerimento de tempo
e memória, porém não se trata de uma estratégia ótima ou completa podendo
encontrar soluções de custo elevado ou simplesmente não encontrar solução,
mesmo se existir alguma. Então não é viável utilizá-la na resolução do problema de
rotas, pois mesmo com um custo inferior de memória e com o espaço finito de
estados viários, dificilmente essa estratégia encontraria uma solução ótima para o
problema.
4.3 Estratégias de Busca Informada:
Como foi visto anteriormente os métodos de busca não-informados encontram
a solução do problema sem levar em consideração nenhum conhecimento
específico do problema. Agora será visto algumas estratégias de buscas heurísticas.
Esse tipo de estratégia é, na maioria dos casos, mais eficiente que as buscas
não-informadas, pois, conforme Russel e Norvig (1995), estratégias de busca
heurística utilizam os conhecimentos específicos do problema, além da definição do
próprio problema – Pode encontrar soluções de forma mais eficiente que uma
estratégia sem informação.
Conforme Polya (1945), heurística é conhecimento sobre o domínio que ajuda
a guiar a busca e a raciocinar sobre ele.
Assim a heurística vai guiando a busca, de forma que os estados que estejam
mais próximos à solução sejam explorados antes dos demais, reduzindo então o
tempo de busca por não expandir inicialmente nós com custos heurísticos grandes.
De acordo com Luger (2002) os solucionadores de problemas de IA
empregam heurísticas basicamente em duas situações:
Quando um problema pode não ter uma solução exata por causa de
ambigüidades inerentes na formulação do problema ou pela disponibilidade dos
dados como, por exemplo, o diagnostico médico. Determinado conjunto de sintomas
pode ter várias causas possíveis; os médicos usam heurísticas para escolher o
diagnostico mais provável ou para formar um plano de tratamento. (...)
Quando um problema pode ter uma solução exata, mas o custo
computacional de encontrá-la pode ser proibitivo. E muitos problemas (como o jogo
de xadrez), o crescimento do espaço de estados é explosivo, com o número de
estados possíveis aumentando exponencialmente ou fatorialmente, com a
profundidade da busca. Nestes casos, técnicas de busca por força bruta, exaustivas
como a busca em largura ou profundidade podem não conseguir encontrar a solução
dentro de um tempo pratico.
Vão ser utilizadas então, estratégias de busca heurísticas para resolver o
problema de encontrar a rota mais curta e a mais rápida, uma vez que estratégias de
busca não informada não encontrariam uma solução ótima dentro do tempo prático.
4.3.1 Busca Gulosa
De acordo com Russel e Norvig (1995), a busca gulosa pela melhor escolha
tenta expandir o nó mais próximo à meta, na suposição de que isso provavelmente
levará a uma solução rápida. Desse modo, ela avalia o nós usando apenas a função
heurística f(n) = h(n). Tenta expandir o nó mais próximo do nó final com base na
estimativa feita pela função heurística h.
Geralmente, a função heurística h é determinada pela distância em linha reta
do nó atual até o nó destino. Mas em alguns casos ela pode ser reavaliada.
1
2
4
h=5h=3
h=33h=0
Figura 4.4: Busca Gulosa: Os números representam a ordem de expansão enquanto o duplo círculo representa o estado final no espaço de estados
De acordo com Freitas (2001) a estratégia de busca gulosa possui os
mesmos defeitos de uma busca em profundidade padrão. Ela não é ótima, pois leva
em consideração apenas a informação da estimativa de um nó e não o custo ou
profundidade que este possui, e também não é completa, pois pode aprofundar-se
em um caminho e nunca retornar para tentar outras possibilidades. A complexidade
de tempo do pior caso para a busca gulosa é da ordem de O (bm) onde m é a
profundidade máxima do espaço de busca. Sua complexidade de espaço também é
da ordem de O (bm), pois retêm todos os nós expandidos na memória. O termo
“gulosa” significa que o método procura reduzir o custo imediato para alcançar o
objetivo na expansão de cada nó, porém sem se preocupar com o custo total do
caminho.
Dessa forma, a busca gulosa nunca recua para reconsiderar escolhas
prévias.
Segundo Freitas ainda diz que este tipo de abordagem gulosa torna o
desempenho do algoritmo, no que se refere ao tempo de processamento, muito
rápido, uma vez que a inserção de condições é feita de forma incremental, ou seja,
uma condição por vez. Entretanto, esta vantagem torna-se uma desvantagem, pois a
adição incremental de uma condição caracteriza uma busca local. A cada passo, a
melhor condição separada é adicionada à regra. Porém em algumas situações o
algoritmo pode julgar segundo uma função de avaliação, que uma condição em
separado é irrelevante. Todavia, em conjunto com outras condições esta mesma
condição poderia se tornar relevante. Esta falta de interação entre os atributos, neste
tipo de abordagem, pode fazer com que um algoritmo deixe de encontrar uma
solução correspondente a um ótimo global.
Levando em consideração todas as particularidades da busca gulosa, pode-
se programá-la com um mecanismo de identificação de estados repetidos e obter
assim uma busca completa e que em alguns casos encontraria uma solução ótima.
Porém é preciso de um algoritmo que traga a melhor solução em 100% dos casos,
desvalidando assim a possibilidade de implementação da busca gulosa.
4.3.3 Busca A*
De acordo com Borges (2003), A* (A estrela) é um algoritmo de busca
baseado na estratégia primeiro melhor (best first) que faz uso de uma função
heurística para avaliação dos estados. Devido a esta última característica, diz-se
que A* é uma busca informada. Quando a função heurística é admissível, A* é
ótimo, completo e eficiente, ou seja, sempre encontra o caminho mais curto em
tempo finito e nenhum outro algoritmo ótimo visita menos estados que A*. São essas
excelentes características que tornam A* muito popular e ferramenta indispensável
em problemas que envolvem buscas.
O funcionamento do A* se dá passo a passo, e Borges (2003) ainda descreve
que ele expande os estados do problema, de maneira ordenada, semelhante a uma
busca de custo uniforme, até que as condições de parada se estabeleçam.
Diferentemente, A* ordena os estados através da seguinte função heurística:
F(n) = G(n) + H(n)
Figura 4.5: Função Heurística da Busca A*
G(n) é o custo real entre o nó inicial e o nó n e H(n) é o valor da função
heurística, que retorna o valor estimado entre n e o nó destino. Em outras palavras,
F contém o "custo total passando por n" em termos da soma "custo do início até n" +
"custo de n até o destino".
1
2
4
h=5g=3f=8
h=3g=4f=7
3
h=3g=9f=12
h=0g=8f=8
Figura 4.6: Busca A*: Os números representam a ordem de expansão enquanto o duplo círculo representa o estado final no espaço de estados
Abaixo segue uma versão simplificada do algoritmo A*:
1. Coloca os vizinhos do nó origem na fila de Abertos 2. Calcula a função heurística de cada nó aberto3. Se houverem nós na fila de AbertosFecha o nó aberto com o menor custoSenãoRetorna erroFimSe4. Se o nó fechado for o nó destinoRetorna a soluçãoSenãoColoca os vizinhos do último nó fechado na fila de AbertosVai para (3)FimSe
Figura 4.7: Versão Simplificada do Algoritmo A*
Conforme já foi visto, o A* é uma estratégia de busca ótima se a sua
heurística for admissível. Russel (1995) diz que heurística admissível é uma função
de avaliação que nunca superestima o custo real do problema para alcançar o
objetivo.
Na prática as duas funções que formam a heurística do A* são então
admissíveis porque a função H é uma função que equivale à distância em linha reta
do ponto atual ao ponto objetivo. E Russel (1995) diz que o caminho mais curto
entre dois pontos quaisquer é uma linha reta. Desta forma a heurística H nunca vai
superestimar o custo real do problema para alcançar o objetivo.
A função G também é considerada uma heurística admissível uma vez que
fornece o custo de caminho mais baixo desde o nó inicial até o próximo nó a ser
expandido.
Porém, Russel e Norvig ainda dizem que o fato da busca A* ser considerada
completa, ótima e otimamente eficiente entre todos esses algoritmos é bastante
interessante. Infelizmente, isso não significa que A* seja a resposta para todas as
nossas necessidades de busca. Na verdade, para a maioria dos problemas, o
número de nós dentro do espaço de busca do contorno de meta ainda é exponencial
em relação ao comprimento da solução.
Ainda mais, o tempo de computação não é a principal desvantagem de
A*. Pelo fato de manter todos os nós gerados em memória, ele esgota a memória
bem antes de esgotar o tempo. Por essa razão, A* não é pratico para muitos
problemas de grande escala com o espaço de estado muito grande.
Especificamente para o nosso problema de rotas, o A* atende até certo ponto, pois
quando uma área maior for abordada, seria preciso programar uma variável do A*
que consuma menos memória e outras técnicas para reduzir o tempo de busca. Isso
será abordado com mais ênfase no capítulo cinco.
No entanto teoricamente, o A* atende os requisitos de otimalidade e
completeza descritos no início do capítulo, tornando-se, dentre todos os algoritmos
vistos a melhor opção para implementação.
5. Aplicação de busca heurística para auxílio ao problema de rotas
Araújo e Lima (2005) dizem que o controle de trânsito em vias urbanas é hoje
um dos principais problemas das grandes cidades, dado ao crescimento não
planejado das mesmas, no número de vias, semáforos e de veículos.
Conjuntamente aos engarrafamentos, o problema do controle de trânsito traz muitas
outras conseqüências, como elevados tempos de espera, aumentos nas taxas de
emissão de poluentes e índices de acidentes, bem como altos custos sociais e
econômicos.
Esses problemas são causados devido à falta de orientação das pessoas e a
falta de sinalização nas vias. De acordo com Rangel (2006), uma das uma das
medidas para reduzir estes índices é manter as indicações das vias em condições
adequadas de visibilidade:
“A falta de sinalização compromete a fluidez e a segurança de motoristas, motociclistas e pedestres, mas é importante que se respeitem as condições necessárias para a correta aplicação do material e zele por sua qualidade, utilizando o dinheiro público com responsabilidade”.
É possível então aplicar técnicas de Inteligência Artificial para resolver parte
desses problemas como forma de sinalização on-line. Especificamente será usado o
método de busca heurística A* para encontrar rotas otimizadas em um conjunto de
vias, juntamente com sistema de mapas para representar graficamente esse
conjunto.
Esse conjunto de vias será representado na forma de grafo, na qual as
conexões entre as vias serão os chamados vértices, ou nós e as vias
especificamente serão as linhas ou vértices da estrutura de grafos.
vérticesnós
Figura 5.1: Exemplo de grafos em um sistema viário simples
5.1 Definindo o sentido da via urbana
Um fator importante a ser considerado na obtenção da rota em vias urbanas é
o sentido da via. De acordo com o transporte utilizado, algumas ruas não são
acessíveis, outras podem, no entanto ser acessíveis apenas em um sentido,
enquanto outras podem ser acessíveis em ambos os sentidos. Essas últimas são as
vias conhecidas como vias de mão dupla.
Dessa forma, para representar essa estrutura é necessário utilizar-se de
grafos do tipo direcionado, em que as arestas podem ter direções.
O Site Wikipedia (2006) diz que dependendo da aplicação, a arestas podem
ou não ter direção, (...). Se as arestas têm uma direção associada (indicada por uma
seta na representação gráfica) tem-se um grafo direcionado, ou dígrafo. Dessa
forma, os vértices do grafo das vias poderão ser passáveis em apenas um sentido
ou em dois sentidos, de acordo com a situação real da via.
5.2 Fatores externos que influenciam na busca de rotas viárias
O algoritmo A* controla somente uma variável do sistema de tráfego: A
distância. Logo, para uma implementação real de um roteamento de vias é
necessário considerar outros aspectos importantes que farão parte de estimação da
heurística, como a condição da via, sentido, sinalização, tráfego, etc.
É o caso proposto por Lester (2004), programador de jogos:
“O terreno só pode ser de dois tipos: passável ou não passável. Mas, e se você tem terreno que é passável, porém a um custo de movimento mais alto? Pântanos, colinas, degraus em um calabouço, etc. Estes são exemplos de terreno que são passáveis, mas a um custo mais alto do que
chão plano, aberto, sem obstáculos. Semelhantemente, uma estrada poderia ter um custo de movimento mais baixo do que o terreno circunvizinho.”
Os jogos utilizam frequentemente os algoritmos de busca de caminho em seu
contexto. Lester propõe que seja atribuído um custo de transição de estados no
grafo, e que este custo seja somado à heurística G(n) de forma a se obter uma
penalidade por vias mais custosas. Por exemplo, uma via local e obter uma
vantagem em vias menos custosas, como por exemplo, uma via de acesso rápido ou
uma rodovia.
Stout (1997) diz que os campos da teoria dos grafos e da Inteligência Artificial
convencional têm diversos algoritmos que podem ser usados para pontuar
obstáculos difíceis e regiões de peso maiores. Na literatura, muitos destes
algoritmos são tratados durante a mudança entre estados, ou quando se atravessa
um nós de um grafo.
Dessa forma, será calculado então um peso para ser somado à heurística
G(n) durante a transição de estados do grafo. Esse peso será referenciado como w
e seu cálculo se dará da seguinte forma:
W(n) = distância (n’, n) * peso_nominal (n’, n)
Figura 5.2: Cálculo de W(n)
O peso nominal de uma transição de estados é estipulado de acordo com a
característica da via, conforme veremos na próxima seção. Esse peso é multiplicado
pela distância entre o nó atual (n’) e o próximo nó (n). Assim obtém-se W(n) que
será usado para cálculo da função heurística F(n):
F(n) =[G(n) + W(n)] + H(n)
Figura 5.3: Cálculo da heurística F(n)
Essa nova definição de F(n), que se difere da original vista no capítulo 4
continua sendo admissível, pois H(n) não superestima o custo real da busca e G(n),
apesar de ser incrementado por W(n) também não superestima, pois o valor de W(n)
é acrescentado também no custo real da busca. Desta forma, ela será usada para o
cálculo da rota mais rápida e a heurística F(n) original será usada para o cálculo da
rota mais curta.
5.2.1 Tipos da via
O tipo da via influencia diretamente na velocidade de locomoção dos veículos,
influenciando também na obtenção da rota mais rápida. Adotando a via arterial como
padrão de velocidade média, define-se o fator w(n) igual a 1 (peso nominal nulo).
Assim, a atribuição dos outros tipos de vias existentes de acordo com as
velocidades estabelecidas pelo Código Brasileiro de Trânsito, ocorre
proporcionalmente da seguinte forma:
Tipo de via Velocidade permitida Peso nominalRodovias 110 Km/h 0,54
Expressa 80 Km/h 0,66
Arteriais 60 Km/h 1
Coletoras 40 Km/h 1,5
Locais 20 Km/h 3
Figura 5.4: Tabela de tipos de vias e seus respectivos pesos nominais
5.2.2 Outros Fatores
O nível de abstração definido pelo presente trabalho permite considerar
apenas um fator externo: o tipo da via. No entanto muitos outros fatores podem ser
considerados em trabalhos futuros como pavimentação da via, sinalização da via e
estatísticas de tráfego. Eles simplesmente poderiam ser utilizados para o cálculo de
W(n) na heurística F(n).
5.3 Problemas de Redução de Velocidade do Algoritmo
Quando o espaço de busca se torna muito grande o algoritmo A* tende
a ocupar muita memória com a lista de abertos e aumentar exponencialmente o
tempo de processamento.
Nestes casos, outras soluções podem ser utilizadas. Existe uma gama de
algoritmos de busca que são igualmente ótimos e completos como o A* e ocupam
menos memória e menos processamento que ele. Como o AIA*, que aplica o
conceito de aprofundamento iterativo ao A*, e o BPRM que busca recursivamente
pelo melhor.
Porém Lester (2004) propõe algumas medidas externas podem ser tomadas
para limitar o espaço de busca antes de fornecê-lo para o algoritmo, aumentando
assim a sua velocidade. Algumas delas serão vistas abaixo:
Pré-identificação de becos sem saída: Em um ambiente de vias urbanas
podem-se considerar os nós que não conduzem em lugar algum como becos sem
saída. Só parando para considerar nós em uma área de beco sem saída se o local
do começo ou destino acontecerem de estar na área de beco sem saída particular
em questão.
Rotas predefinidas: Para caminhos longos podem-se utilizar caminhos pré-
calculados, como por exemplo, a conexão entre duas cidades ou dois estados.
Pré-identificação de áreas inacessíveis: Pode se pré-processar o mapa para
descobrir áreas inacessíveis do resto do mapa. É o caso de ilhas ou áreas
acessíveis apenas por meios de transportes irrelevantes na coleção de estados. Isso
evita que o A* gaste processamento explorando todos os nós do mapa para
encontrar um caminho.
6. Proposta
Dentre as várias técnicas de busca por uma possível solução, foi
implementada neste protótipo a busca A*, devido a sua busca ser ótima e completa.
Este protótipo foi desenvolvido de forma a fornecer ao usuário dois tipos de
rotas:
Rota ótima curta: Essa busca utiliza o A* em sua forma original e retorna a
rota com a menor extensão, mas utiliza-se de dados de direcionamento da via, para
evitar que vias sejam tomadas em contramão.
Rota ótima rápida: Essa busca utiliza o A* juntamente com o fator w obtido
das vias. E retorna a rota em que teoricamente se alcançaria o destino de forma
mais rápida.
Foi escolhida a interface web devido à portabilidade dessa plataforma. Assim
um usuário com um navegador no padrão W3C e acesso a Internet pode navegar no
mapa e obter uma rota em qualquer lugar, ou seja, num desktop com qualquer
sistema operacional, num notebook, num PDA ou celular com acesso a Internet.
Uma característica importante é que a aplicação não precisar ser instalada no
dispositivo.
Por se tratar de um sistema web, foi escolhida a linguagem de marcação
HTML e linguagem de scripts Javascript para implementação da Interface e a
linguagem PHP para rodar do lado do servidor web, juntamente com o Banco de
Dados MySQL para armazenar as informações das vias.
O Protótipo desenvolvido é composto por quatro módulos principais, mais dois
dispositivos de armazenamento de dados, conforme a figura 6.1:
6.1 Obtenção dos Dados
O município de Barra Mansa foi selecionado para o estudo de caso deste
trabalho, sendo inicialmente foi feito a validação num mapa criado com dados
fictícios.
Aplicação W eb
interface com o usuário
M otor AJ AX
Servidor W eb
Repositóriode I magens
Banco de dadosdo mapa
Busca de vias Busca de rotas Renderizador
chamadasJ avascript dados htm l
nome da via
via
vias origeme destino rota
mapa/ rotaimagens
Figura 6.1: Módulos do Sistema
6.1.1 Obtenção das coordenadas do mapa
Para obter os dados vetoriais do mapa, foi obtido o mapa da cidade impresso
no tamanho A2 (420 x 594 mm) e o mesmo foi seccionado de forma que se
obtiveram quatro partes equivalentes ao tamanho A4 (210 x 297 mm).
A digitalização foi efetuada individualmente nesses pedaços através de um
scanner de mesa com a resolução de 100dpi (100 pixels por polegada). Assim o
resultado foram quatro imagens de 826 x 1169 pixels, que através de um editor de
imagens foram agrupadas, gerando uma só imagem de 1152 x 2338 pixels.
Em seguida, foi feita a vetorização manual dessa imagem, pois após várias
tentativas de uma vetorização automática, foi percebido que deste modo a imagem
conteria muito detalhes, aumentando a quantidade de nós cerca de 15.000.
Como o objetivo é minimizar a quantidade de nós com o intuito de aumentar a
velocidade de execução do algoritmo, a vetorização automática não foi considerada
viável. Na vetorização manual, que se faz traçando manualmente cada linha da
imagem até que toda a malha esteja completa, foi obtido um resultado satisfatório,
cerca de 5000 nós. Esses nós foram exportados, juntamente com os seus vértices
para um formato conhecido pelo banco de dados MySQL e em seguida importado
para o banco. Como resultado dessa importação obteve duas tabelas: Nó e Vértice
(figura 6.2).
6.1.2 Associação dos Nós com os nomes das vias
Através do banco de dados dos correios, contendo os dados das ruas de
Barra Mansa com cerca de 1400 nomes de ruas juntamente com os dados de CEP e
bairro, foram geradas duas tabelas: Via e Bairro (figura 6.2).
Entretanto, devido ao curto período disponível para este projeto, a associação
desses nomes junto aos seus vértices não pode ser feita por completa. Dessa forma,
o presente trabalho se restringiu em associar apenas as vias do centro da cidade
para o estudo de caso. A associação foi feita de forma manual Inserindo o
identificador de cada via em seus respectivos vértices.
6.1.3 Obtenção dos dados de funcionalidade e sentido das vias
Para os dados do tipo funcional e o sentido das vias também foi imposto o
centro da cidade como limite. Esses dados das vias foram colhidos numa pesquisa
de campo e inseridos na tabela Via.
6.2 Módulo de Busca de Rotas
O núcleo da implementação desse módulo é a função pegarRota() que recebe
como parâmetro o identificador do estado inicial, o identificador do estado final e um
parâmetro booleano que recebe falso se a busca vai ser pela rota mais curta (A*
original) ou recebe verdadeiro se a busca vai ser pela rota mais rápida (A* com a
heurística modificada).
Nesta função foi implementado o algoritmo A* descrito no Capítulo 4. Depois
de encontrar a rota ele retorna um vetor com o identificador de todos os pontos que
a rota incorpora.
Figura 6.2: Diagrama de Entidade Relacionamento
6.3. Módulo Renderizador de Mapas
O Mapa das vias foi pré-renderizado, uma vez que este é um processo que
consome muito tempo de processamento. A biblioteca GD do PHP que é capaz de
gerar imagens através de linhas de comando foi utilizada para isso.
6.3.1 Adaptação do mapa às escalas de zoom
Antes de iniciar o processo de rasterização, foi necessário adaptar a unidade
de medida do banco de dados de nós à unidade de medida do mundo real, de forma
que o mapa fosse representado com uma régua de escala equivalente de acordo
com o nível de aproximação.
Assim, foi utilizada uma régua existente no mapa real para adaptar as escala
existente no banco de dados. Foi detectado que a área da cidade media
aproximadamente 14000 x 10000 metros. Ajustando-o para 1/1 (um metro por pixel),
obteve-se uma imagem de 14000 x 10000 pixels e foi detectado que essa medida
deveria ser a escala do maior nível de zoom do mapa, uma vez que uma
aproximação maior que essa seria desnecessária para o propósito. Porém, a área
de abrangência foi mudada para 16384 x 16384 metros por essa medida ser uma
potência de dois e assim facilitar os demais cálculos existentes na renderização. O
espaço sobressalente de aproximadamente 2.000 metros na largura do mapa e
6.000 metros na altura foi deixado como sobra sem comprometer o mapa.
Testes identificaram que seis níveis de aproximação precisariam ser gerados
com a função de equivalência abaixo, pois no maior nível de aproximação obtém-se
uma imagem de 16384 x 16384 pixels. Esta medida é suficiente para exibir todos os
detalhes relevantes e no menor nível de aproximação obtém-se uma imagem de 512
x 512 pixels que faria o mapa inteiro visível na tela da maioria dos usuários:
x’ = x ● Sx y’ = y ● Sy
Sx = Sy = 1 / (2 zoom - 1)
Figura 6.3: Fórmula de cálculo da escala
Onde: x’ e y’ são o tamanho da imagem com aproximação
x e y são o tamanho da imagem sem a aproximação
Sx e Sy são os fatores de escala.
De posse da fórmula acima, o tamanho das imagens nos seis níveis de
aproximação puderam ser calculados de acordo com a tabela abaixo:
Nível de Aproximação Tamanho do Mapa (pixels) Quantidade de metros / pixel1 16834 x 16834 12 8192 x 8192 23 4096 x 4096 44 2048 x 2048 85 1024 x 1024 166 512 x 512 32
Figura 6.4: Tabelas de níveis de aproximação x tamanho do mapa
6.3.2 Geração das Imagens através da biblioteca GD
Para a geração das imagens foi utilizada a função imageline(). Ela tem a
função de desenhar um vetor qualquer em numa determinada área da imagem e
recebe os seguintes parâmetros: a) imagem onde vai ser desenhado o vetor, b) a
coordenada X do primeiro nó do vetor, c) a coordenada Y do primeiro nó do vetor, d)
a coordenada X do segundo nó do vetor, e) a coordenada Y do segundo nó do vetor,
f) a cor do vetor.
Essa função foi chamada dentro de uma iteração que percorreu toda a tabela
de vetores, de forma que, ao fim dessa iteração todas as vias haviam sido
renderizadas e salvas em um arquivo de imagem para cada nível de zoom.
O tipo de imagem escolhido foi o PNG uma vez que todos os navegadores
implementados seguindo o padrão W3C oferecem suporte a esse tipo de imagem.
Nesses estão incluídos os navegadores Internet Explorer, da Microsoft e o Firefox da
Mozilla.
6.3.3 Segmentação do Mapa
O tamanho da imagem do mapa se tornou um grande problema para a
usabilidade do sistema, uma vez que no maior nível de aproximação (100%) ele
tinha 3,2 megabytes. É totalmente inviável para um usuário de Internet discada
aguardar o tempo para carregar um arquivo e mesmo usuários de Internet rápida
não é esperado que aguardem o tempo de carga para obter a imagem do mapa.
Assim foi resolvido segmentá-lo em várias imagens menores de 256 por 256 pixels.
Essas imagens seriam carregadas dinamicamente, de acordo com que o usuário
navegasse no mapa.
O resultado dessa segmentação foi pequenas imagens com a média de 2
kilobytes no seu tamanho de arquivo. Assim, numa tela de 1024 x 768 pixel,
resolução utilizada por 53% dos usuários de Internet de acordo com estatísticas
colhidas pelo [W3Schools 2006], seriam carregadas 12 imagens por vez, totalizando
24 kilobytes. Numa conexão de Internet discada, isso seria carregado em 6
segundos, o que é considerável para uma aplicação Web.
Abaixo segue uma tabela com o resultado obtido com essa segmentação:
Nível de Zoom
Quantidade de Segmentos de Imagem (Linha x Coluna)
Total de Segmentos
1 64 x 64 40962 32 x 32 10243 16 x 16 2564 8 x 8 645 4 x 4 166 2 x 2 4
Figura 6.5: Tabelas de níveis de aproximação x segmentos do mapa
6.3.4 Renderização da Rota
Conforme o visto na seção 6.2, o retorno da função pegarRota() é um vetor
com o identificador de cada ponto da rota. Para renderizar a rota, percorre-se esse
vetor gerando um vértice através da função imageline() para cada um dos valores. É
importante ressaltar que os padrões de escala usados para gerar o mapa também
precisam ser usados para gerar a rota para que a mesma se encaixe perfeitamente
no mapa. Em seguida esse fluxo de bytes de imagem é enviado ao usuário que fez a
requisição da rota
6.4. Módulo de Busca de Vias
6.4.1 Localizar vias pelo nome
De acordo com o já mencionado, a função pegarRota() recebe dois de seus
parâmetros dos identificadores da via de origem e de destino, respectivamente.
Porém seria desagradável se o usuário precisasse saber o identificador da via que
ele deseja encontrar a rota. Então, tornou-se necessário fazer uma interface de
busca em ele digite a via de origem e destino e o sistema fizesse a localização
desses vértices através dos nomes das vias. De posse do identificador desses
vértices, a busca de Rota pode ser feita normalmente.
Com a ajuda da função LIKE do MySQL, a busca de vias pode ser feita sem
que caracteres de acentuação fossem considerados, facilitando a localização e
tornando a busca mais genérica.
6.4.2 Localizar ruas pelo CEP
A Busca pelo CEP ocorre de forma semelhante à busca de vias por nome, no
entanto a localização do vértice é feita através do número de CEP da via.
6.5. Módulo da Aplicação Web
6.5.1 Navegador do Mapa
A navegação do mapa foi implementada através da linguagem
Javascript assistida por folhas de estilos CSS. Conforme o usuário clica e arrasta
com o mouse sobre o mapa, os segmentos de imagem (descrito na seção 6.3.3) vão
sendo carregados e exibidos de forma assíncrona à navegação do usuário. Isso
permite que ele continue navegando mesmo que as imagens ainda não estejam
completamente carregadas.
6.5.2 Níveis de Aproximação
O usuário pode desejar em certo momento obter mais ou menos detalhes de
uma determinada parte do mapa. Ele dispõe de dois botões de navegação para isso.
O botão “mais zoom” aproxima o mapa duplicando o seu tamanho e o botão “menos
zoom” distancia o mapa tornando-o a metade do seu tamanho anterior. No total o
mapa dispõe de seis níveis de zoom de acordo com as figuras 6.4 e 6.5.
A implementação é feita da seguinte maneira:
Quando o usuário clicar no botão mais zoom ou menos zoom:
Obtém-se a quantidade de imagens no nível de zoom determinado;
Através da posição atual do mapa escolhem-se as imagens que serão carregadas
para aquele nível de zoom, de forma que toda a tela esteja preenchida.
Cria as imagens através do comando document.createElement() do DOM Javascript.
6.5.3 Escala do Mapa
Para que o usuário tenha noção de espaço no mapa, tornou-se necessário
implementar um visualizador de escala. Assim, juntamente com o carregamento das
imagens para um determinado nível de zoom, uma imagem com a escala (figura 6.4)
também é carregada.
6.5.4 Busca de Rota
Para buscar uma rota, o usuário toma os seguintes procedimentos:
Insere o nome da vias de origem e destino; Escolhe se a busca vai ser pela rota mais curta ou pela rota mais rápida; Clica no botão encontrar rota;
Assim que esse botão é clicado uma requisição é feita ao servidor web
pedindo a rota de acordo com os dados inseridos pelo usuário. Após o
processamento do servidor, uma imagem com a rota é retornada e posicionada
segundo suas coordenadas no mapa. Em seguida o zoom é reajustado de forma
que toda a imagem da rota seja exibida na tela.
6.6. Validação do Protótipo
O processo de validação do sistema foi realizado em duas fases distintas. O
primeiro, de verificação dos erros semânticos de programação e o comportamento
do algoritmo de busca. O processamento foi realizado com dados simulados de uma
pequena cidade fictícia de tal forma a atender a maioria das configurações de
malhas de vias existentes:
Figura 6.6: Representação gráfica do mapa inicial: dados fictícios
A segunda fase de validação, dessa vez com dados reais, a região da cidade
de Barra Mansa foi utilizada para testar o protótipo da busca de caminho mais curto
e a região central da mesma para testar a busca de caminho mais rápido.
Figura 6.7: Representação gráfica da cidade de Barra Mansa no menor nível de zoom
6.6.1 Problema de velocidade de execução do algoritmo
Os testes da função pegarRota() foram executados num computador com a
seguinte configuração: 500Mhz, 256 megabytes de memória RAM. Foi usado um
grafo de 500 nós, obtendo sempre resultados corretos e rápidos, com tempos de
resposta menores que 0,5 segundos. Porém quando o grafo real foi inserido no
contexto, foi obtido um aumento significativo do tempo. Agora para rotas de
profundidades mais rasas, eram gastos 7 segundos e para rotas mais longas mais
de 5 minutos.
Foi detectado então que o tempo de requisição ao banco de dados era
culpado pela maior parte desse tempo gasto. Por isto, foi substituída a utilização do
banco de dados por um grande vetor com todos os nós e vértices no próprio
contexto da linguagem PHP.
Essa medida trouxe um ganho de tempo mais que significativo, pois a função
passou a devolver rotas, por maiores que elas fossem, em menos de 3 segundos.
Assim foi constatado que o algoritmo A* num espaço de até 5000 nós é uma ótima
opção, mas provavelmente se esse espaço aumentar, será necessário utilizar uma
variante do A* que gaste menos tempo ou então utilizar um método de busca sub-
ótimo para realizar a busca.
6.6.2 Problemas de nós reabertos
Durante os testes aconteceu um problema em que a busca se desviava da
rota mais curta em certo ponto e depois retornava novamente. Deste modo a rota
retornada não era a de menor custo. Após fazer uma análise no algoritmo e testar
algumas entradas, foi verificado que esse problema acontecia devido à reabertura
de nós que já estavam abertos.
Quando um nó N é aberto, ele é inserido na fila de abertos e fica lá até que
seja fechado. O problema acontece quando um outro nó qualquer abre esse mesmo
nó e o seu custo heurístico é maior que o que já estava guardado anteriormente.
Assim esse nó é sobrescrito e seu custo se torna maior que o já armazenado.
A Solução para isso só sobrescrever esse nó se o seu novo custo heurístico
for menor que o gravado anteriormente.
Após a implementação dessa condição, o algoritmo foi ótimo em 100% dos
casos avaliados.
Conclusão
Com os resultados obtidos pelo presente trabalho, é possível acreditar que os
algoritmos de busca heurística podem completar a área de engenharia de tráfego e
trazer muitos benefícios para a população e para aplicações de apoio à logística de
locomoção. Entre estas aplicações pode-se considerar: Controle da posição de
veículos (muito interessante em caso de segurança de frotas rodoviárias,
atendimento médico emergencial).
Com uma implementação em escala de produção dos conceitos abordados e
com a inserção de outras variáveis no cálculo de custo de transição de estados, em
especial o volume do tráfego. Seria possível reduzir consideravelmente o tempo de
locomoção dos automóveis, assim como os problemas de trânsito. Por outro lado,
com o protótipo construído já se pode observar que de forma individual, sem levar
em consideração os outros fatores externos, é possível obter uma rota considerada
mais rápida dentre as outras.
Acredita-se que para posteriores aperfeiçoamentos nesse sistema e também
para trabalhos futuros, possam-se explorar essas outras variáveis do sistema de
tráfego urbano, principalmente o volume e estatísticas de tráfego. Podendo se
utilizar de técnicas de mineração de dados, que influenciaria na constante mudança
no custo de transição de estados do sistema viário.
Outras técnicas de Inteligência Artificial poderiam também ser usadas, como
Redes Neurais para determinar uma rota textual ou métodos de busca sub-ótimos,
como algoritmos genéticos, por exemplo, para atender um grande espaço de
estados.
Bibliografia
AZEVEDO Eduardo.; CONCI, Aura. Computação Gráfica – Teoria e Prática, Campus, 2003
BORGES, Daniel.; BLUM, Gabriel. Sistema de Navegação em Grafos Gerados em Ambientes Virtuais 3D; Instituto de Matemática da Universidade Federal do Rio de Janeiro, 2003.
BUISSERET David., Ministers and Maps: The Emergence of Cartography as a Tool of Government in Early Modern Europe, University of Chicago, 1992
FONSECA, Edvaldo.; QUINTANILHA, José.; IWAI, Olga. Cartografia, 2002. Disponível em: <http://www.ptr.poli.usp.br/ptr/Cursos/SensoriamentoRemoto/Cartografia/home.htm>
HARMON P.; KING; D. Artificial Intelligence in Business, Paperback, 1985.
LESTER, Patrick. A* Pathfinding for Beginners. GameDev.net. Disponível em:<http://www.gamedev.net/reference/articles/article2003.asp>. Acesso em 18 de março de 2006.
LIMA, Cleiton.; ARAÚJO, Aloísio. Otimização de Trânsito – Uma Abordagem Utilizando Algoritmos Genéticos, UNIVERSIDADE FEDERAL DE PERNAMBUCO, 2005.
LUGER, George F. Inteligência Artificial: estruturas e estratégias para a solução de problemas complexos. - 4.ed. - Porto Alegre: Bookmann, 2004.
POLYA, George. How to Solve it, Princeton University Press, 1945. RANGEL, Áurea. Segurança - Sinalização pode salvar vidas: Revista Eletrônica O Carreteiro, 2006, Disponível em: < http://www.revistaocarreteiro.com.br/modules/revista.php?recid=262&edid=25 > Acesso em 16 de Agosto de 2006.
RUSSEL, Stuart J.; NORVIG, Peter. Artificial Intelligence: A Modern Approach, Hardcover, 1995.
STOUT, Brian. Smart Moves: Intelligent Path finding. Gamasutra, 1997. Disponível em:< http://www.gamasutra.com/features/19970801/pathfinding.htm>. Acesso em 24 de julho de 2006.
WENZEL, Flávio. Informatiquês – Dicionário de Termos de Informática: Tecnologias na Educação. 2003. Disponível em <http://www.flaviowenzel.hpg.ig.com.br/informatiques/h.html> Acesso em: 16 de Agosto de 2006.
SILVA, D. M.; FREITAS, V. M.; FERNANDES JR. G. M.; UCHÔA, J. Q.; SCHNEIDER, B. O. Implementação de uma Biblioteca para Busca Informada e Não-Informada em Espaço de Estados, Universidade Federal de Lavras. 2005 Disponível em <http://www.dcc.ufla.br/infocomp/artigos/v3.1/art09.pdf> Acesso em 20 de Maio de 2006.
W3Schools. Browser Statistics 2006. Disponível em <http://www.w3schools.com/browsers/browsers_stats.asp> Acesso em 05 de Setembro de 2006.
WIKIPEDIA. Algoritmo de Busca, 2006, Disponível em <http://pt.wikipedia.org/wiki/Algoritmo_de_busca> Acesso em 14 de Fevereiro de 2006.
WIKIPEDIA. Busca em Largura, 2006, Disponível em <http://pt.wikipedia.org/wiki/Busca em Largura> Acesso em 17 de Fevereiro de 2006.
Glossário3D Tridimensional. Qualquer figura que tenha altura, largura e profundidade.
Uma ilustração normalmente é bidimensional, porque lhe falta a profundidade que é a terceira dimensão.
a.C. A abreviatura a.C. serve para marcar os anos anteriores ao ano um do calendário que é utilizado no Ocidente
Adobe Freehand
Programa de ilustração profissional para computadores. Produz imagens baseadas em objetos
Adobe Ilustrator
Programa de ilustração profissional para computadores. Produz imagens baseadas em objetos
Auto Cad Software do tipo CAD, criado e comercializado pela Autodesk, Inc. em 1982. É utilizado para desenho técnico em duas dimensões e, limitadamente, para modelagem de objetos em três dimensões. Utilizado em arquitetura, engenharia mecânica e em alguns outros ramos da indústria.
bitmap É um padrão de representação de imagens formado por uma grade geralmente retangular de pontos de cor, ou pixels (do Inglês, picture element) em um monitor de computador, papel ou outro dispositivo, ou mesmo em meios não visuais, como por exemplo, na memória RAM de um computador ou em disco magnético, sob a forma de arquivos.
CEP Código postal ou Código de Endereçamento Postal (CEP) é um código desenvolvido pelas administrações postais e criado no sentido de facilitar o encaminhamento e a entrega das correspondências.
CONTRAN Órgão normativo e consultivo máximo, responsável pela regulamentação do Código e pela permanente das Leis de Transito.
CSS São estilos para páginas web e envolvem um conceito inovador: possibilitam a mudança da aparência simultânea de todas as páginas relacionadas com o mesmo estilo.
DENATRAN Órgão executivo que integra a estrutura do Ministério da Justiça, com autonomia administrativa e técnica, com jurisdição sobre todo o território nacional.
DER Modelo de descreve a atuação de um sistema com alto nível de abstração, isto é, é planejado tudo que um sistema deseja ter e fazer, todas as suas dependências entre área de funcionamento de uma empresa.
DER Órgão responsável pelas rodovias estaduaisDesktop Tela do computador que funciona como uma mesa, sobre ela você pode
colocar as ferramentas que mais usa.DETRAN Órgão executivo que, entre outras atribuições, administra a documentação
dos veículos e condutores, emite, suspende ou cassa a CNH.DOM Especificação desenvolvida pelo W3C que permite criar e modificar páginas
HTML e documentos XML como objetos de programas completos com todos os recursos e características próprias de um objeto, cada um tendo um conjunto de propriedades e métodos.
Download O processo de se transferir uma cópia de um arquivo em um computador remoto para outro computador através da rede; o arquivo recebido é gravado em disco no computador local.
FIFO Estrutura de dados do tipo fila, onde o primeiro elemento que entra é o primeiro que sai.
FILO Estrutura de dados do tipo pilha, onde o primeiro elemento que entra é o último que sai.
GD, biblioteca
Biblioteca feita por Thomas Boutell e outros para manipular imagens dinamicamente. É programado em linguagem ANSI C, mas tem interface para muitas outras linguagens de programação, permitindo criar imagens nos formatos GIF's, JPEG's, PNG's e WBMP's.
Google Earth
O Google Earth é um programa que permite a visualização de imagens reais capturadas por satélite de praticamente qualquer lugar do mundo.
Google Maps
É um serviço de mapas on-line gratuito provido pelo Google. Ele oferece um mapa arrastável do mundo inteiro e um planejador de rotas para os Estados Unidos, Canadá, Reino Unido e Irlanda (somente centro das cidades). Atualmente ele está em teste beta.
GPS O Sistema de Posicionamento Global é um sistema de posicionamento por
satélite, por vezes incorretamente designado de sistema de navegação, utilizado para determinação da posição na superfície da Terra ou em órbita. É constituído por uma constelação de 24 satélites.
Grafo Em matemática e ciência da computação, grafo é o objeto básico de estudo da teoria dos grafos. Tipicamente, um grafo é representado como um conjunto de pontos (vértices) ligados por retas (as arestas). Dependendo da aplicação, as arestas podem ser direcionadas, e são representadas por "setas".
HTML A sigla HTML deriva da expressão Hyper Text Markup Language. Trata-se de uma linguagem de marcação utilizada para produzir páginas na Internet. Esses códigos podem ser interpretados pelos navegadores para exibir as páginas da World Wide Web.
Internet Rede de redes em escala mundial de milhões de computadores. Ao contrário do que se pensa comumente, Internet não é sinônimo de World Wide Web. Esta é parte daquela, sendo a World Wide Web, que utiliza hipermídia em sua formação básica, um dos muitos serviços oferecidos na Internet. A Web é um sistema de informação muito mais recente que emprega a Internet como meio de transmissão.
Javascript Linguagem de criação de scripts ligeiramente relacionada à Java, desenvolvida pela Netscape. Não é totalmente orientada a objetos e não precisa ser compilada. Permite a construção de recursos avançados em páginas Web em conjunto com a linguagem HTML
Kilobytes Corresponde a 1024 bytes ou 2 elevado à potência 10. A palavra quilo vem do grego khilioi, que significa mil.
Megabytes Corresponde a 1048576 bytes, ou 2 elevado a potencia 20. O termo mega teve origem no grego megas, grande.
Mozilla Firefox
Navegador livre e multi-plataforma desenvolvido pela Mozilla Foundation com ajuda de centenas de colaboradores.
MSN Local Serviço de mapas on-line provido pela MicrosoftMySQL Sistema de gerenciamento de banco de dados relacionais baseado em
comandos SQL (Structured Query Language - Linguagem Estruturada para Pesquisas) que vem ganhando grande popularidade, sendo atualmente um dos bancos de dados mais populares, com mais de 4 milhões de instalações.
Notebook Computador portátil, leve, que pode ser levado a qualquer lugar.PDA Computador de dimensões reduzidas, dotado de grande capacidade
computacional, cumprindo as funções de agenda e sistema informático de escritório elementar, com possibilidade de interconexão com um computador pessoal e uma rede informática sem fios - Wi-fi - para acesso a correio eletrônico e Internet.
PHP Linguagem de programação de computadores interpretada, livre e muito utilizada para gerar conteúdo dinâmico na Web.
Pixel Menor elemento em um dispositivo de exibição, ao qual é possível atribuir-se uma cor. De uma forma mais simples, um pixel é o menor ponto que forma uma imagem digital, sendo que o conjunto de milhares de pixels formam a imagem inteira.
PNG Formato de dados utilizado para imagens, que surgiu em 1996 como substituto para o formato GIF, devido ao fato de este último usar algoritmos patenteados.
RAM É a memória disponível para uso das aplicações e processamentos. Seu conteúdo volátil é perdido sempre que o computador é desligado. A quantidade de RAM, cujo limite é determinado pelo sistema operacional, é um dos componentes que contribuem para a capacidade de processamento de um computador.
Scanner Equipamento eletrônico responsável por digitalizar imagens, fotos e textos para o computador.
Script São mini programas, baseados numa determinada linguagem, que executam determinadas operações.
SQL Linguagem de pesquisa declarativa para banco de dados relacional (bases de dados relacionais). Muitas das características originais do SQL foram inspiradas em cálculo de tuplas.
W3C Órgão criado em 1994 para levar a Web para o seu potencial máximo,
através do desenvolvimento de protocolos comuns e fóruns abertos que promovem sua evolução e asseguram a sua interoperabilidade. O W3C desenvolve tecnologias, denominadas Web Standards (ou Padrões Web) para a criação e a interpretação dos conteúdos para Web.
Yahoo Maps Serviço de mapas on-line provido pelo Yahoo