Home   |   Structure   |   Research   |   Resources   |   Members   |   Training   |   Activities   |   Contact

EN | PT

BrBRCEEn0101-74382002000100002

BrBRCEEn0101-74382002000100002

National varietyBr
Country of publicationBR
SchoolEx-Tech-Multi Sciences
Great areaEngineering
ISSN0101-7438
Year2002
Issue0001
Article number00002

Javascript seems to be turned off, or there was a communication error. Turn on Javascript for more display options.

Uma heurística interativa para geração de caminhos em grafos com restrição de grau: aplicação ao projeto de sistemas metroviários

1. Introdução 1.1  O transporte metroviário O metrô tem se mostrado, em todo o mundo, como a melhor solução para o transporte de passageiros em grandes cidades, sendo comum a sua presença na maioria delas (Jane's, 1993), não pela existência de corredores de alta demanda, mas também por oferecer um serviço potencialmente atrativo para usuários de outras modalidades, como ônibus e carro, retirando veículos das vias públicas. Nesse sentido, contribui para melhorar o desempenho do tráfego e minimizar suas externalidades, como os congestionamentos, acidentes de trânsito e degradação ambiental. Apenas as externalidades monetariamente quantificáveis e associadas aos congestionamentos derivados do excesso de veículos nas vias ultrapassam a casa de um bilhão de dólares/ano, segundo estudos realizados em diversas metrópoles americanas e européias (ICDT, 1995). Não contar com uma rede adequada deste serviço é condenar a cidade a conviver com sérios problemas no trânsito e com baixo nível de qualidade de vida, desordem e poluição, podendo chegar ao colapso. Esse colapso pode resultar, até, na fuga de empresas de grande porte para outros locais, na redução do fluxo de investimentos para a cidade, na retração do mercado de trabalho e na conseqüente perda da arrecadação de impostos pelo Poder Público (Metrô Rio, 2000). O sistema metroviário se caracteriza, exatamente, por ter uma grande capacidade de transporte, não ser poluente e utilizar energia renovável, sendo, em vista dessas características, indicado em corredores e áreas altamente adensadas e com elevadas demandas de viagens. Apesar da capacidade de um sistema metroviário depender de inúmeros fatores, tipicamente ela supera os 15.000 passageiros/hora/sentido, podendo este valor ultrapassar a casa dos 60.000 (Mello, 1978; TRB, 1995; Campos & Szasz, 1996; D'Agosto, 1999).

Em todo o mundo se contavam, em 1999, 108 sistemas de metrô, dos quais 11 na América do Sul, sendo 6 brasileiros (Belo Horizonte, Brasília, Porto Alegre, Recife, Rio de Janeiro e São Paulo). Neste trabalho se inclui um exemplo de aplicação da heurística aqui apresentada ao desenvolvimento de uma proposta de expansão do sistema metroviário do Rio de Janeiro.

No geral observa-se que o planejamento de redes de transportes, em particular metroviárias, tem como critério de análise potencializar o desenvolvimento do espaço sócio-econômico, atender a grandes contingentes de demanda e minimizar custos de implantação/operação e os impactos ambientais (Arruda, 1980; Ribeiro, 1980). O processo tradicional de modelagem usado é conhecido como "de quatro etapas" denominadas: geração de viagens, distribuição de viagens, escolha modal e alocação do tráfego. A sua aplicação envolve altos custos e uma quantidade extremamente elevada de dados, normalmente não disponíveis em países em desenvolvimento. Os programas computacionais existentes no mercado são habitualmente calibrados para outras realidades e têm uma concepção pouco interativa com os analistas e atores intervenientes.

Algumas pesquisas sobre este tema indicam uma preocupação maior com o desenho de redes alimentadas por ônibus e o emprego de técnicas de programação matemática de fluxo em redes, sistemas de informação geográfica e Inteligência Artificial (algoritmos genéticos), não tendo sido encontrada na literatura consultada abordagem similar à proposta deste artigo (Shih et al., 1998; Choi & Jang, 2000; Shrivastav & Dhingra, 2001; Bruno et al., 2002).

Os instrumentos e critérios adotados neste trabalho permitem uma visão preliminar da estrutura de rede, utilizando-se dados de obtenção mais simples e rápida. O projeto resultante poderá ser em seguida avaliado por técnicas mais elaboradas, etapa essa que, no entanto, não é contemplada aqui.

1.2  Características do problema Resolver um problema através de um modelo de grafo implica, com freqüência, em um esforço para suplantar dificuldades de caráter combinatório associadas às características do problema, especialmente quando se dispõe de um amplo universo de alternativas relacionadas entre si, em meio às quais se busca uma otimização ao menos aproximada.

O problema do projeto da rede metroviária tem outra natureza: essencialmente se trata de um problema de percursos, com uma restrição adicional (no entanto contornável) para o grau máximo dos vértices. Suas principais características são uma ordem em geral módica, envolvendo custos de projeto e de execução extremamente elevados e de execução seqüenciada no tempo. A construção de um sistema metroviário é uma atividade que ocorre ao longo de um período muito extenso, dirigida pelas necessidades da cidade e pelos seus planos de desenvolvimento. Freqüentemente se trabalha, em cada época, em uma linha apenas. O projeto é sujeito a diversos tipos de condicionantes relacionados à estrutura da rede, além dos fatores decisórios que levam à escolha de cada itinerário a ser efetivamente coberto, tais como dados de demanda, que figuram entre os elementos de mais fácil interação com o projetista. Destaca-se, entretanto, o cuidado com que se deve estudar o comportamento da demanda futura, particularmente no caso brasileiro, não pelas significativas taxas de crescimento urbano das principais cidades, como por serem poucos, ou inexistentes em muitos casos, os instrumentos de controle de uso do solo, e conseqüentemente dos fluxos de viagens.

O grafo representativo de uma rede de metrô apresenta, em princípio, a restrição de grau máximo 4, associada à impossibilidade do cruzamento em nível de duas linhas. As opções para esse cruzamento são, habitualmente, a da construção de dois andares, ou então a da união das duas linhas por um corredor utilizado pelos passageiros para a transferência de uma linha para outra. Este último recurso é freqüentemente utilizado, em vista de permitir, na prática, que uma estação receba qualquer número de linhas. Mantém-se a discussão inicial baseada na restrição do grau em vista do menor custo que ela traz, habitualmente, para a construção das estações; no entanto, abre-se a possibilidade de deixá-la de lado na resolução interativa, caso isso se mostre conveniente. De fato, em cada estação é usual que não mais de duas linhas se cruzem, pois cada linha demanda um andar, restringindo o emprego de estações com mais de dois andares em vista do elevado custo. Cada andar, é claro, contribuirá com no máximo duas unidades de grau (correspondentes à chegada e à saída de uma linha), o que tende a limitar a 4 o grau de um vértice no grafo representativo das linhas.

Esta restrição torna o problema não polinomial. Por outro lado, um instrumento eficiente no sentido de apresentar propostas para uma malha metroviária não deverá ter elevada complexidade computacional, não fazendo sentido, portanto, a execução de testes de eficiência avaliados pelo tempo de execução. De qualquer forma, uma heurística será necessária em vista das diversas considerações a serem contempladas na análise da geração sucessiva das linhas, o que vem ainda resolver o problema da complexidade. O que importa, de fato, é a capacidade dessa heurística de lidar com as injunções a serem levadas em conta nesse processo. Neste ponto, exatamente, é preciso que o processo se torne interativo, permitindo ao projetista, seja a cada linha gerada ou ao final, introduzir na solução a sua visão do problema.

1.3  A heurística e sua construção O trabalho foi dedicado ao desenvolvimento de uma ferramenta computacional baseada em uma técnica heurística interativa, idealizada com o objetivo de auxiliar o projeto e a crítica de redes metroviárias e dar respaldo aos planejadores do sistema de que o projeto final atende aos interesses sociais e econômicos e também respeita as restrições inerentes ao problema. A heurística foi elaborada, então, para oferecer ao projetista propostas selecionadas em acordo com as questões de estrutura, para que ele as aperfeiçoe pela introdução dos demais elementos de avaliação.

O trabalho, que envolveu fases alternadas de construção e de testes, usou recursos de grafos e procedimentos da geometria computacional, estes últimos na geração de grafos-suporte destinados aos testes que permitiram o aperfeiçoamento da heurística. Evidentemente, esse mesmo processo poderá levar a melhorias e aprimoramentos ulteriores.

Ao se construir um grafo-suporte para testes, partiu-se de um conjunto de vértices gerados aleatoriamente em uma área limitada do plano, para em seguida obter-se um grafo planar triangulado. Neste momento se trabalhou com cascas convexas sucessivas, partindo-se dos vértices mais distantes dois a dois, gerando com eles um ciclo e procedendo iterativamente da mesma forma com os vértices totalmente desconexos ainda existentes. Ao final, pode ocorrer que restem apenas dois vértices ao centro; neste caso, eles seriam simplesmente conectados por uma aresta.

Em seguida cada ciclo mais exterior é ligado ao imediatamente interior por arestas de comprimento mínimo, em número suficiente para que se obtenha uma triangulação local. Se a região central do conjunto contiver apenas um vértice, ele será unido a todos os vértices do ciclo interior (usando k arestas, se k for o número de vértices desse ciclo; , se existirem dois vértices, a triangulação local exigirá k + 2 arestas e neste caso se utiliza ainda um critério de escolha da menor aresta). Os detalhes, bem como um exemplo, estão no Apêndice.

Esta técnica foi julgada preferível à triangulação de Delaunay (ver, por exemplo, Preparata & Shamos, 1985). Esta conhecida técnica de Geometria Computacional é de fácil uso e utiliza um critério de proximidade entre pontos, o que a apontaria como ideal para a aplicação aqui desenvolvida. No entanto, ela não garante uma estrutura de comprimento mínimo, a não ser quando se utilizam distâncias euclidianas: e, exatamente, no problema em estudo, as arestas do grafo-suporte possuem uma valoração em termos de custo que depende não apenas da distância mas ainda de diversas outras questões. Enfim, a técnica utilizada limita a busca de menores arestas às ligações entre os ciclos sucessivos, o que deve favorecer a geração de linhas mais diretas unindo vértices periféricos.

A definição do conjunto de vértices do grafo-suporte (estações que farão parte da rede), em uma aplicação real da heurística, não faz parte do escopo do trabalho. Os vértices devem ser estabelecidos a priori pela existência de uma demanda que justifique a criação de uma estação naquele ponto, ou pelo interesse em se desenvolver determinada área urbana pela oferta de um transporte público de maior capacidade. Para o caso do metrô, um método proposto para escolha de estações é apresentado por Junquilho (1981) e se baseia na maximização do benefício líquido, expresso como a economia de custo de viagem dos passageiros (medida pelo tempo de viagem) e os custos envolvidos na construção e operação do sistema.

2. Descrição da Heurística 2.1  Considerações iniciais A Heurística de Geração de Linhas (HGL) tem como propósito contribuir no processo de elaboração de um projeto de metrô que respeite a restrição de grau inerente ao problema e que permita a cada etapa a interação com a equipe responsável pelo projeto. Partindo de um grafo-suporte G, objetiva-se gerar linhas que minimizem o custo total de construção. Para isso, procuram-se os caminhos de menor custo entre os vértices periféricos.

Um ponto importante neste problema está no fato de que o modelo de grafo não é suficiente, estruturalmente, como uma base de dados representativa do sistema metroviário. É preciso, também, que se tenha informação sobre quais são as linhas consideradas, ou seja, por onde passam as composições.

O grafo final H,obtido pela aplicação da heurística de geração de linhas, será um grafo parcial de Gformado pela união de todas as linhas, respeitando as restrições de custo mínimo de construção e de grau, ou seja, que não tenham vértices com grau superior a 4, ou com grau nulo (que seriam estações não atingíveis pela rede).

A HGL é aplicada através de três etapas, sendo que a primeira executa um programa para gerar caminhos candidatos (ou seja, caminhos que apresentam, em princípio, condições de serem selecionados como linhas) e as duas últimas são etapas que analisam e se necessário modificam estes caminhos através de critérios pré-definidos, para que possam eventualmente ser selecionados. Estas etapas são executadas através da interface com o planejador do sistema, que assim intervém no processo, introduzindo no projeto as especificidades do contexto de aplicação do metrô.

2.2  Primeira etapa da HGL: Geração de caminhos candidatos A primeira etapa consiste na execução de um procedimento que tem como entrada a matriz de valores das arestas do grafo-suporte. O procedimento aplica o algoritmo de Floyd (Floyd, 1962) e busca, na matriz de distâncias que dele resulta, caminhos candidatos a participarem das linhas do sistema metroviário.

O processo de busca de caminhos candidatos é iterativo e consiste em se obter, da matriz de distâncias vigente a cada iteração, a maior distância entre pares de vértices, fazer o retraçamento do percurso correspondente e zerar a distância na matriz. Se houver neste itinerário pelo menos um vértice ainda não utilizado, considera-se este caminho como candidato a participar de uma linha do sistema. O processo iterativo de busca de caminhos candidatos termina quando todos os vértices do grafo pertencerem a pelo menos um caminho. Portanto, o algoritmo executará O(n) iterações polinomiais.

Os procedimentos executados estão indicados a seguir, mas não estão detalhados no texto uma vez que se trata de instrumental padrão da teoria dos grafos. Os detalhes, a nomenclatura e a notação estão em Boaventura Netto (2002).

' Procedimento inicialização: de um arquivo de entrada os dados das matrizes de distância e adjacência do grafo-suporte gerado.

' Procedimentofloyd: executa o algoritmo de Floyd, gerando como saída a matriz de distâncias que contém os valores do menor caminho (mij) entre cada par de vértices (i,j) e a matriz de roteamento final (Farbey et al., 1967; Land & Stairs, 1967).

' Procedimentoretraçamento(i,j) (i,j): faz o retraçamento do caminho mínimo entre o par de vértices (i,j) utilizando a matriz de roteamento final obtida após a aplicação do algoritmo de Floyd.

' Procedimentomaior_distância: busca na matriz de distâncias final obtida pela aplicação do algoritmo de Floyd a posição D[j,k] que possui o maior valor, armazenando as posições do par de vértices (j,k) nas variáveis jmd e kmd, posteriormente zera a posição d [jmd,kmd], para que na próxima execução deste procedimento se encontre a próxima maior distância.

Na descrição a seguir, as variáveis referenciadas têm o seguinte significado: ' nvi: variável inteira que armazena o número de vértices pertencentes aos caminhos candidatos gerados; ' nca: número de caminhos gerados; ' mca[j,k]: matriz que armazena os caminhos candidatos; ' nvca: variável que armazena o número de vértices pertencentes ao caminho gerado a cada iteração; ' vnca: variável que armazena o número de vértices novos no caminho, ou seja, o número de vértices que estão participando pela primeira vez de um caminho.

2.3  Segunda etapa da HGL: Análise e modificação do conjunto de caminhos candidatos para eliminar trechos de caminhos com sobreposição de trechos Não é conveniente, em princípio, que duas linhas tenham trechos (arestas) em comum: isto implicaria na construção de um suporte de dimensão dobrada, seja em subterrâneo (túnel largo), seja externo (elevado, ou à superfície do solo). A segunda etapa da HGL consiste na aplicação de critérios de análise e modificação do conjunto dos caminhos candidatos, para que ele passe a ter o menor número possível de caminhos e de modo que não haja superposição de trechos de linhas.

Os critérios de análise e modificação dos caminhos candidatos são: ' a maior distância entre pares de vértices do grafo-suporte inicial é prioritária para escolha; ' dois caminhos que tiverem exatamente um vértice periférico em comum são considerados como uma única linha; ' se houver mais de dois caminhos candidatos com um mesmo vértice periférico em comum, procura-se fazer a união dos dois caminhos que juntos mapearem maior área radial ou transversal; ' se dois caminhos de tamanho k tiverem (k ' 1) vértices em comum, diferindo apenas por um dos vértices periféricos, estuda-se a viabilidade de uni-los através de um procedimento baseado em desigualdades triangulares, como exemplificado a seguir: Exemplo: Considerando os caminhos candidatos m1 = (x1, x6, x7, x9) e m2= (x1, x6, x7, x5), onde m1 é o caminho de maior comprimento, verifica-se se no grafo- suporte inicial existe a aresta (9,5). Caso exista, faz-se a união dos dois caminhos colocando-se no caminho resultante os (k ' 1) vértices comuns, seguidos dos vértices finais do menor e do maior caminho, resultando o caminho (x1, x6, x7, x5, x9). Se não existir a aresta (9,5), elimina-se o segundo caminho. Este procedimento pode ser usado com quaisquer pares de caminhos que difiram de apenas um vértice. Caso não seja possível a união, elimina-se o menor caminho (Figura_1).

Os critérios de análise e modificação dos caminhos candidatos devem ser aplicados não apenas quando os caminhos de tamanho k diferem pelo vértice periférico mas também quando diferem em apenas uma das k posições.

' Se duas linhas se cruzarem em mais de um vértice, estuda-se a possibilidade de deixar o menor número de cruzamentos possível.

' Os trechos não analisados que tiverem arestas em comum com as de caminhos definidos como linhas devem ter estas arestas retiradas.

Se o trecho restante tiver pelo menos três arestas consecutivas pode ser considerado como um caminho candidato, devendo ser analisado através dos critérios anteriores.

Após aplicação destes critérios de análise e obtenção de um novo conjunto proposto para linhas do sistema, cujos caminhos não têm nenhuma aresta em comum, tem-se um grafo parcial H formado pela união das arestas pertencentes às linhas geradas.

2.4  Terceira etapa da HGL: Verificação dos graus dos vértices do grafo H e aplicação de operações corretivas, estudo de circuitos e eliminação de trechos paralelos Seja H o grafo parcial que resulta da segunda etapa da HGL. A terceira etapa consiste na verificação dos graus dos vértices de H, e resolver os problemas existentes, que podem ser de dois tipos: ' Vértices não contemplados com linhas, ou seja, que tenham grau zero; ' Vértices com grau superior a 4, ou seja, que pertençam a mais de duas linhas.

Nos dois casos, se procurará resolver o problema examinando o conjunto de vizinhos GG(x) do vértice xem análise.

No primeiro caso, algum vértice x não é atendido; procuram-se então as interseções de GG(x) com as linhas construídas em busca de algum vértice y terminal de linha, ou de dois vértices consecutivos de uma linha nesse conjunto; em ambos os casos, pode ser feita a inserção de x.

Se o problema não puder ser resolvido dessa forma, devem ser retiradas do grafo-suporte G as arestas que fazem parte das linhas obtidas até o momento e executado novamente o algoritmo de Floyd, reaplicando o processo à procura de uma linha que passe por x.

Pode ainda ser estudada a possibilidade da integração com outra modalidade de transporte, para satisfazer a demanda existente neste ponto: desta forma, x não seria considerado para construção de uma estação.

O segundo problema é mais complexo: é preciso que não se criem novos vértices de grau superior a 4 em H, ao se fazer trocas em linhas. Além disso, dentre as diversas possibilidades, deve-se escolher a de menor custo de construção. Para resolver esse problema, devem ser analisadas duas possibilidades: ' Se um vértice tiver grau entre 5 e 8 em H, criar um novo vértice representativo de uma instalação próxima, mantendo-se duas linhas passando pelo vértice de origem e desviando a(s) restantes(s) para o novo cruzamento. Deve-se considerar esta opção, se num raio da ordem de 300m (conveniente para trânsito a , conforme observado na prática para transferência de passageiros) houver possibilidade de construção dessa nova instalação.

' Não havendo a possibilidade de criação de um cruzamento próximo à estação com grau superior a quatro, será preciso avaliar as possibilidades de contornar x por um conjunto de trocas de arestas que foi chamado, em geral, operação contorno. Se uma operação contorno envolver um vértice de grau 4 pode-se cair em seguida na Possibilidade 1 e seresolver o problema de acordo com a técnica descrita.

Possibilidade de linhas circulares: observar, para os vértices terminais de cada linha mif, se no grafo-suporte inicial existe a aresta (xi, xf); caso ela exista, sugere-se o estudo da viabilidade da construção desta ligação, que transformaria a linha em circular.

Eliminação de trechos paralelos: pode ocorrer que dois trechos de linha estejam muito próximos no grafo H, uma vez que os vértices possuem posições definidas no plano cartesiano, é importante que se estude a eliminação de um dos trechos.

Ver o exemplo a seguir.

2.5  Exemplo de aplicação da HGL Para exemplificar a aplicação da heurística, gerou-se um grafo-suporte planar triangulado com 15 vértices (Figura_2).

Após a aplicação da heurística, foi feita uma análise das linhas que poderiam ser transformadas em circulares, como uma sugestão de realização futura caso haja na região demanda que justifique tal investimento.

A execução do procedimento caminhos_candidatos, tendo como entrada a matriz de valores das arestas do grafo da Figura_2, gerou como saída os seguintes dados: ' matriz de caminhos candidatos a participarem das linhas do sistema (MCA); ' vetor com os tamanhos de cada caminho candidato (TCA); e ' matriz de vértices periféricos (MVP) de cada caminho candidato.

O procedimento gerou 7 caminhos, correspondentes aos elementos não nulos em cada linha da matriz MCA.

Na segunda etapa da heurística, foram aplicados os critérios de análise e modificação dos caminhos candidatos da seguinte forma: ' O primeiro caminho recebeu uma linha do sistema, unindo os vértices periféricos 2 e 14; ' O quarto caminho tem, em comum com o primeiro, apenas um vértice (periférico); então se fez a união desses dois caminhos, obtendo-se {14, 13, 8, 3, 2, 7, 10, 11}, que passou a ser a primeira linha do sistema; ' Eliminaram-se as arestas dos outros caminhos candidatos coincidentes com as da primeira linha adotada: isto levou à retirada da aresta (7,10) do sexto caminho. Como ele passou a ter menos de três arestas consecutivas, deixou de configurar como caminho candidato. O conjunto vigente de caminhos candidatos passou a ser: ' {7, 4, 3, 15}    ' {1, 3, 4, 7},     ' {5, 9, 13, 10}    ' {6, 3, 4, 7}; ' Adotou-se o caminho {7, 4, 3, 15} como a segunda linha do sistema; ' Eliminou-se a aresta (3, 4) do segundo e quarto caminhos candidatos, por coincidir com uma aresta da segunda linha adotada.

Como esses caminhos passaram a ter menos de três arestas consecutivas, eles deixam de pertencer ao conjunto de caminhos candidatos, que passou a ter apenas o caminho {5, 9, 13, 10}; ' Adotou-se então, o caminho {5, 9, 13, 10} como a terceira linha do sistema; ' Como o conjunto de caminhos candidatos deixou de existir, passa-se a fazer a verificação dos vértices do grafo H obtido através das linhas adotadas que foram: m1 = {14, 13, 8, 3, 2, 7, 10, 11},    m2 = {7, 4, 3, 15}   e   m3 = {5, 9, 13, 10}.

O grafo parcial H formado pelas linhas do metrô após a execução das duas primeiras etapas, pode ser visualizado através da Figura_3.

As linhas 1 e 3 têm dois cruzamentos (nos vértices 13 e 10), mas é possível eliminar-se o segundo cruzamento, que o vértice 10 é terminal da linha 3.

Então se retira a aresta (13,10) e a terceira linha passa a ser {5, 9, 13}.

A verificação de graus indica que não vértices com grau superior a 4, mas que três vértices com grau nulo (vértices 1, 6 e 12). Os conjuntos de vizinhos desses vértices são: G G(1) = {2, 3, 15}; G G(6) = {3, 8, 12, 15}; G G(12) = {6, 8, 13, 14, 15}.

Observa-se que: ' o vértice 1 pode ser ligado ao vértice terminal da linha 2 através da aresta (1,15); ' o vértice 12 pode ser ligado ao vértice terminal da linha 3 através da aresta (12,13); ' o vértice 6 não possui vértices terminais na sua vizinhança, mas sim as extremidades de (8,3) (aresta da linha 1): então ele pode ser incluído na linha 1, através da substituição da aresta (8,3) pelas arestas (8,6) e (6,3).

Enfim, as arestas (4,7) e (2,7) são muito próximas: como 7 pertence à linha 1, (4,7) pode ser eliminada e a linha 2 fica com apenas 4 vértices.

As linhas passaram a ser: ' Linha 1: {14, 13, 8, 6, 3, 2, 7, 10, 11}; ' Linha 2: {1, 15, 3, 4}; ' Linha 3: {12, 13, 9, 5}.

A Figura_4 mostra as novas linhas: pode-se observar que todos os vértices pertencem a pelo menos uma linha e não existem vértices com grau superior a 4.

A análise da possibilidade de linhas circulares mostra que: ' A linha 1 pode ser transformada facilmente em uma linha circular, pois seus vértices periféricos, 14 e 11, são extremidades de uma aresta no grafo-suporte inicial; ' A linha 2 não oferece possibilidade de transformação em circular, pois os vértices periféricos estão muito distantes e para ligá-los seria necessário usar arestas que pertencem a outra linha; ' A linha 3 possui seus vértices periféricos na vizinhança do vértice 8 e pode então ser transformada em circular por passagem através dele.

O resultado dessas modificações pode ser observado na Figura_5, que completa o exemplo.

3.  Uma Aplicação: Proposta de Sistema Metroviário para a Região Metropolitana do Rio de Janeiro 3.1  Considerações iniciais Neste item é apresentado um exemplo de aplicação da heurística de geração de linhas discutida no trabalho, através de uma simulação do planejamento de um sistema metroviário para a região metropolitana do Rio de Janeiro. A intenção deste exercício é mostrar a exeqüibilidade do procedimento proposto e fornecer um guia que possa ser útil para futuras aplicações.

Apesar de se ter um compromisso com a realidade, a precisão e confiança no resultado alcançado no planejamento de uma rede de metrô estão vinculadas à qualidade e à suficiência dos dados utilizados: ora, justamente as estatísticas existentes são com freqüência deficientes, em particular no setor de transportes, o que se reproduz no sistema metro-ferroviário da região metropolitana do Rio de Janeiro e empresas envolvidas. Nem todos os dados necessários estão disponíveis, tais como possíveis estações que fariam parte da rede, custos de construção das estações e de cada um dos possíveis trechos, matriz de demandas entre pares de estações e custo de operação dos trechos de linhas.

Por outro lado, a obtenção destes dados é por si um grande projeto e, como tal, depende de decisões que transcendem a capacidade e o contexto de atuação associados ao presente trabalho.

Na construção do grafo-suporte utilizado, tomou-se como base um estudo da Companhia do Metropolitano do Rio de Janeiro (Metrô Rio, 2000), que traça um plano de expansão para o metrô do Rio até o ano 2020.

Deste plano foi desconsiderada a linha 3 (Rio ' Niterói), dada a ausência de sua interação com as demais linhas fora de um ponto único de conexão. Com relação à linha 4, foi considerada a versão do projeto que liga a Barra ao Centro indo até a estação Carioca, visto que a alternativa de final da linha no morro de São João deixa sem estação alguma bairros de elevada densidade de população, tais como Laranjeiras. Considerou-se, além das estações contempladas neste plano, algumas outras situadas em pontos associados a áreas adensadas (como Meier, Deodoro, Campo dos Afonsos, Cidade de Deus, Madureira etc.), ou a pólos atrativos para moradia, ou para investimentos (como Barra da Tijuca e Recreio dos Bandeirantes). Esta concepção ofereceu alternativas mais adequadas para a modelagem e o planejamento de linhas, contribuindo para melhorar o seu papel estruturador do espaço sócio-econômico e integrador das diferentes modalidades de transportes.

A HGL necessita, desde a modelagem do grafo-suporte até a aplicação de sua última etapa, ser desenvolvida por planejadores de sistemas metroviários com conhecimento das características geográficas, dados de demanda e de custos de construção e operação do futuro metrô, de modo a garantir uma aderência satisfatória à realidade, com um bom nível de otimização. Em vista disso, os resultados aqui apresentados podem envolver configurações bastante diferentes das que seriam obtidas numa situação real de projeto que contasse com mais recursos e um melhor sistema de informações.

3.2  Construção do grafo-suporte Na construção do grafo-suporte foram consideradas as linhas 1 e 2, em operação, e as demais linhas do plano de expansão do metrô para os próximos 20 anos, à exceção da linha 3 conforme citado (Metrô Rio, 2000), num total de 42 estações, além dos locais atrativos referenciados não contemplados nesse plano, num total de 9 estações (representadas por círculo em tom mais claro na Figura_6).

A escolha destes pontos contou com a colaboração do Engenheiro de Transportes Luiz Antonio Werneck de Carvalho (da Companhia do Metropolitano do Rio de Janeiro). Por outro lado, muitas arestas de um possível grafo triangulado não foram incluídas, por considerações diversas (obstáculos naturais e regiões julgadas impróprias para construção de trechos).

Os vértices rotulados de 1 a 33 são estações que no grafo-suporte têm grau 1 ou maior que 2. Os vértices rotulados de 34 a 51 são de grau 2; eles correspondem a uma ou mais estações e deverão ser atendidos por alguma linha que conecte um par de vértices de grau maior que 2. O número de arestas do grafo, construído dessa forma, (Figura_6) é de 67. Os valores indicados correspondem a centímetros sobre o mapa utilizado.

Na Figura_6 não foram contempladas todas as estações do plano original: onde nele existiam vértices consecutivos de grau 2, em certos casos foram somados os valores das arestas consecutivas e os vértices entre elas desconsiderados: por exemplo Freguesia-Galeão, com 6 km, teria uma estação no Centro da Ilha, o que significa que estes 6 km seriam a soma dos trechos (Freguesia, Ilha) e (Ilha, Galeão).

Existem trechos pertencentes às linhas 1 e 2 que estão em operação; nestes casos, as arestas correspondentes do grafo-suporte têm seu tamanho real.

Trechos novos tiveram seus valores aproximados, tendo sido consideradas distâncias euclidianas medidas entre pares de vértices, a menos de trechos com obstáculos evidentes, como mar e aeroporto. As medidas das arestas novas foram obtidas através de um mapa (SMU/PMRJ, 2000), com escala de 1:50.000.

Procurou-se não sobrepor o grafo-suporte à rede ferroviária existente, de modo a viabilizar um estudo futuro de integração entre os vários modais de transporte.

3.3  Aplicação da heurística de geração de linhas Na aplicação da HGL, após a geração de caminhos candidatos, foi obtida a seguinte saída de dados: ' Uma matriz com 14 caminhos candidatos a participarem das linhas do sistema metroviário a ser proposto (MCA[j,k], j = 1, , 14, k = 1, , 18); ' Um vetor com os tamanhos destes 14 caminhos candidatos (TCA[j], j = 1, , 14) cuja unidade dos dados é o km, seguindo a escala do mapa utilizado de 1:50.000; ' Uma matriz (MVP[j,k], j = 1, , 14, k = 1,2) com os vértices periféricos dos 14 caminhos candidatos.

Cada linha da matriz MCA representa um caminho candidato, cada posição do vetor TCA[j] o seu tamanho (aqui em km) e cada linha da matriz MVP contém os vértices periféricos dos respectivos caminhos candidatos. No que se segue, as estações são representadas por suas siglas.

Na segunda etapa da heurística, foram aplicados os critérios de análise e modificação dos caminhos candidatos além de tentar respeitar a infra-estrutura do metrô existente.

A Tabela_1 mostra o resultado da análise dos caminhos candidatos no que tange as interseções de seus conjuntos de arestas, observada a prioridade da ordem numérica.

O conjunto de linhas que formam o grafo parcial H é, portanto, o seguinte: ' Linha 1:(LEB, GOS, BTF, CRC, LAR, SCL, JBT, GAV, JAO, ALV, ITA, REC); ' Linha 2:<formula/> (FRE, GAL, FUD, PEN, BRP, IRJ, VAC, LMC, MAD, TAQ, AUT, ITA); ' Linha 3:<formula/> (CRC, CTR, ESA, SCR, MRC, TRG, MDA, INH, TOC, LMC); ' Linha 4:<formula/> (MDA, MEI, SPN, URU); ' Linha 5:<formula/> (FUD, VIP, CAJ, ROD, SEV, PRM, CAS, CRC); ' Linha 6:<formula/>(TOC, VIC, IRJ, CNT, PVN, NIL).

O grafo H (obtido após a aplicação das duas primeiras etapas da HGL) pode ser visualizado na Figura_7.

Antes da aplicação da terceira fase da HGL, foi incluída uma sétima linha, de modo a contemplar um circuito previsto no plano de expansão do metrô. Esta modificação envolve a criação do vértice CVR (Estação da Cruz Vermelha) com as arestas (ESA, CVR) e (CVR, CRC) em H.

No modelo inicial não foram incluídas as arestas (URU, GAV) e (GAV, LEB), visto que o algoritmo de Floyd não contempla circuitos positivos; ao serem elas consideradas, pôde ser traçada a linha circular: m2 = (GAV, URU, SPN, AFP, ESA, CTR, CRC, BTF, GOS, LEB, GAV). A criação da sétima linha foi priorizada pelo fato de uma linha circular ser sempre desejável em uma região adensada e desenvolvida, com grande concentração de atividades comerciais, industriais e de prestação de serviços, além de possibilitar maior flexibilidade operacional caso algum trecho apresente problema de circulação. Com a criação da sétima linha, os trechos das outras linhas que passaram a coincidir com ela foram eliminados, a saber, o trecho (LEB, GOS, BTF, CRC) da linha 1, o trecho (CRC, CTR, ESA) da linha 3 e o trecho (URU, SPN) da linha 4. O vértice AFP que tinha grau zero passou a ter grau 2.

Com objetivo de proporcionar uma ligação direta da Baixada Fluminense ao Centro, inclui-se um trecho de 3 Km entre Estácio (ESA) e Carioca (CRC), através da estação Cruz Vermelha (CVE) a ser localizada na praça com o mesmo nome. A linha 3 passou a ter o vértice CRC como vértice terminal, o que soluciona o problema da sobrecarga imposta pelos passageiros da atual linha 2 que se vêem obrigados a realizar o transbordo na estação Estácio, que não foi projetada como terminal, na qual atualmente existe um grande fluxo de passageiros.

Com a inclusão da linha circular e do vértice CVE, o conjunto de linhas que formam o grafo parcial H passou a ter a seguinte configuração: ' Linha 1: <formula/>(CRC, LAR, SCL, JBT, GAV, JAO, ALV, ITA, REC); 'Linha 2:  <formula/> (FRE, GAL, FUD, PEN, BRP, IRJ, VAC, LMC, MAD, TAQ, AUT, ITA); ' Linha 3: <formula/>(CRC, CVE, ESA, SCR, MRC, TRG, MDA, INH, TOC, LMC); ' Linha 4: <formula/>(MDA, MEI, SPN ' Linha 5:  <formula/> (FUD, VIP, CAJ, ROD, SEV, PRM, CAS, CRC); ' Linha 6: <formula/>(TOC, VIC, IRJ, CNT, PVN, NIL); e 'Linha 7:<formula/> (GAV, URU, SPN, AFP, ESA, CTR, CRC, BTF, GOS, LEB, GAV).

Esta nova configuração do grafo parcial H pode ser visualizada através da Figura_8.

Na terceira fase da HGL, a análise de restrição de grau mostra que CRC (Carioca) possui grau 5. É necessário, portanto, que se preveja uma extensão da estação CRC por passagem lateral (sob o Largo da Carioca) de modo a que ela possa receber a Linha 1.

Existem seis vértices com grau zero (não atendidos): SAD (Santos Dumont), CDD (Cidade de Deus), CDA (Campo dos Afonso), DEO (Deodoro), SJM (São João de Meriti) e CAX (Caxias). As vizinhanças correspondentes são as seguintes: G(SAD) = {CAS} G(DEO) = {CAD, NIL, PVN} G(CDD) = {ITA, AUT, TAQ} G(SJM) = {NIL, CAX, PVN} G(CDA) = {TAQ, MAD, DEO} G(CAX) = {SJM, BRP, PVN} Foram realizadas as seguintes modificações no conjunto de linhas, com o objetivo de conectar esses vértices ao grafo: ' O trecho (CRC, CAS) passa a pertencer à Linha 1, que dessa forma passa a ter uma extremidade em CAS; ' A Linha 5 recebe então (CAS, SAD) o que conecta SAD.

As seguintes conexões foram feitas usando-se desigualdades triangulares: ' AUT e TAQ (próximas a CDD): substitui-se (TAQ, AUT) por (TAQ, CDD) e (CDD, AUT), conectando-se CDD; ' NIL e PVN (próximas a SJM): substitui-se (NIL, PVN) por (NIL, SJM) e (SJM, PVN), conectando-se SJM; ' SJM e PVN (próximas a CAX): substitui-se (SJM, PVN) por (CAX, SJM) e (CAX, PVN) permitindo conectar CAX.

NIL, que é terminal da linha 6, é próximo de DEO: a linha 6 pode ser prolongada através de (NIL, DEO) com o objetivo de conectar DEO. Portanto DEO passa a ser terminal da linha 6, que pode ser prolongada até CDA que é então conectado.

Para que se obtivesse na configuração final do grafo parcial H o máximo possível de corredores de deslocamentos radiais e diametrais, foi transferido o trecho da linha 2: (FRE, GAL, FUD) para a linha 5, de tal modo que a linha 5 passasse a ligar, ao final, a rodoviária e os dois aeroportos.

O conjunto das linhas que compõem o grafo parcial H passou a ser: 'Linha 1: <formula/>(CAS, CRC, LAR, SCL, JBT, GAV, JAO, ALV, ITA, REC); 'Linha 2: <formula/> (FUD, PEN, BRP, IRJ, VAC, LMC, MAD, TAQ, AUT, ITA); 'Linha 3: <formula/>(CRC, CVE, ESA, SCR, MRC, TRG, MDA, INH, TOC, LMC); 'Linha 4:<formula/>(MDA, MEI, SPN); 'Linha 5: <formula/> (FRE, GAL, FUD, VIP, CAJ, ROD, SEV, PRM, CAS, CRC); 'Linha 6:<formula/>(TOC, VIC, IRJ, CNT, PVN, CAX, SJM, NIL, DEO, CDA); e 'Linha 7: <formula/>(GAV, URU, SPN, AFP, ESA, CTR, CRC, BTF, GOS, LEB, GAV).

A proposta final, resultante da aplicação da HGL e incluídas as modificações adicionais, pode ser visualizada na Figura_9.

3.4  Observações a respeito das linhas obtidas A cidade do Rio de Janeiro, por sua característica de crescimento radial a partir do Centro, em função de sua topografia, ressente-se até hoje de ligações transversais que permitam uma ocupação mais descentralizada. A linha 2 proposta vem ao encontro deste objetivo, criando um eixo entre o terminal Itaúna na Barra e a Ilha do Fundão, passando pela Penha. O corredor que hoje existe é rodoviário e tem intenso tráfego, que busca a saída da Barra em direção à Zona Norte, o forte pólo comercial e de serviços de Madureira e as saídas rumo à Baixada Fluminense ou à Avenida Brasil. A garganta que separa os maciços da Tijuca e da Pedra Branca torna praticamente único esse eixo, por conseguinte conduzindo-o inevitavelmente à saturação. É importante a chegada desta linha à Ilha do Fundão por se tratar de um pólo intelectual, científico e importante centro hospitalar.

A linha 5 estabelece um eixo que liga a Ilha do Governador ao aeroporto Santos Dumont passando pelo aeroporto Internacional Tom Jobim (Galeão), Ilha do Fundão, Rodoviária Novo Rio e por toda a área portuária do Rio de Janeiro. Ela é claramente importante por atender aos mais importantes terminais de transporte e sanar sérios problemas de deslocamento da cidade.

A linha 7, sendo circular, permite que os deslocamentos sejam feitos nos dois sentidos com maior flexibilidade operacional, fornecendo ao usuário a possibilidade de escolha da melhor alternativa, além de proporcionar grandes melhorias operacionais com a eliminação da manobra dos trens terminais e redução do intervalo, ampliando a oferta da linha. Com o fechamento deste anel e a construção da estação Uruguai na Tijuca este bairro estará plenamente atendido pelo metrô, bem como os bairros de Grajaú e Andaraí por integração com ônibus.

A evolução urbana mais marcante no município do Rio de Janeiro, nas últimas 3 décadas, ocorreu em direção à Baixada de Jacarepaguá, Barra da Tijuca e Recreio dos Bandeirantes, em decorrência da saturação da Zona Sul. A linha 1, ao ligar o Recreio ao Centro, possibilitará expansão e total absorção do crescimento urbano observado na Barra e no Recreio. Tal ligação, hoje unicamente por via rodoviária, saturada, se faz basicamente em 2 eixos: norte ' sul e leste ' oeste (Avenidas das Américas e Auto Estrada Lagoa ' Barra e Ayrton Senna), impondo aos moradores da Barra e Recreio pesado ônus em engarrafamentos diários. Para a Zona Norte esta ligação foi recentemente amenizada com a implantação da Linha Amarela.

A linha 3, com seu traçado radial tendo como estações terminais a do Largo do Otaviano e a Carioca, proporciona a ligação direta da Baixada Fluminense ao Centro da cidade, evitando o transbordo na estação Estácio, que não foi projetada como terminal, possibilitando a absorção da demanda desta região.

A linha 4, embora seja composta de apenas três estações, se apresenta como uma sugestão interessante para integrar o Meier ao sistema metroviário, dado o cruzamento com as linhas 7 e 3, proporcionando a esta região a possibilidade de maior desenvolvimento econômico. Constitui-se ainda em uma interessante abertura para futuras ampliações da rede.

A linha 6 expande o sistema metroviário para a zona Norte do Município do Rio e faz a integração com os municípios de São João de Meriti e Caxias, que são muito adensados e onde grande parte da população trabalha na região urbana e suburbana do Rio de Janeiro. Essa linha proporcionará maior desenvolvimento sócio-econômico desta região.

Vale ressaltar que, pelo sistema aqui proposto, a atual linha 1 seria expandida e transformada em uma linha circular (linha 7) e a atual linha 2 seria expandida e dividida em duas, a saber, as linhas 3 e 6.

Pode-se observar que o traçado do sistema proposto não coincide com o da atual rede ferroviária do Rio de Janeiro, o que permite um estudo da viabilidade de integração modal, possibilitando uma maior mobilidade por transporte de massa na cidade, criando uma rede metro ' ferroviária.

4. Conclusões O trabalho teve como objetivo a apresentação de uma heurística de geração de linhas para desenvolvimento e crítica de sistemas metroviários, envolvendo etapas automatizadas e interativas de análise para minimizar o tamanho das linhas entre vértices periféricos, atender às restrições de grau dos vértices e solucionar diversas questões de conexão e de estrutura das linhas, configurando-se como um apoio importante no processo de tomada de decisões.

Ao desenvolver a heurística, além de se utilizarem conceitos da teoria dos grafos, foram aplicados procedimentos da geometria plana computacional, que tiveram uma grande importância para a geração de grafos-suporte para testes de comportamento da heurística.

Ao contrário da habitual temática que envolve a construção de heurísticas, este trabalho não utiliza exemplos gerados em computador como meio de testes de performance; o exemplo aqui incluído foi usado para mostrar como os recursos desenvolvidos foram utilizados para detectar dificuldades práticas que possam ser encontradas em situações de projeto.

O trabalho apresentou uma aplicação da HGL, que mostrou a exeqüibilidade do procedimento proposto e forneceu uma seqüência de passos que poderá ser útil em futuras utilizações. Como os parâmetros nos quais a heurística se apóia são de fácil alteração, de acordo com as especificidades do problema, a ferramenta é de grande aplicabilidade, ainda mais em um país como o Brasil, tão carente por implantações e expansões de sistemas metroviários.

Um plano urbanístico para uma cidade, principalmente quando se trata de uma grande metrópole, é de suma importância. A heurística permite que o mesmo seja utilizado através da incorporação de uma valoração dos vértices, capaz de exprimir a importância de cada um deles, permitindo, também, uma hierarquização para a construção das linhas e da tecnologia a ser utilizada, de acordo com o planejamento do espaço sócio-econômico da cidade.

Pode-se visualizar o uso desta ferramenta no processo de tomada de decisão em outros contextos de planejamento ou expansão, não de um sistema metroviário, como também de outras modalidades de transportes em vias exclusivas ou não, por exemplo, ônibus em vias segregadas (como o que existe em Curitiba), sistema ferroviário, assim como meio auxiliar em projetos integrados de transportes, respeitando-se as especificidades de cada um no contexto de sua atuação.

Apêndice: Geração de grafos-suporte A.1 ' Considerações iniciais Grafo-suporte , neste trabalho, é o grafo G = (X,U), onde os nvértices de X = {1,2, ,n} correspondem a estações metroviárias e as marestas U= {u1,u2, , um},a trechos possíveis de linha entre duas estações.

Os dados necessários envolvem apenas o número de estações e suas coordenadas cartesianas. Tendo-se em vista que a informação posicional não é contemplada pelas estruturas gerais de grafo (a menos das questões de planaridade) foram utilizadas na programação técnicas de geometria computacional destinadas, exatamente, a permitir a geração de um conjunto de arestas correspondente a um grafo planar triangulado.

O grafo é valorado pelos custos de construção dos trechos de linha (arestas) e se dispõe ainda de uma matriz de demandas entre pares de vértices. Como se trata de um modelo para teste, trabalhou-se com faixas conhecidas de demanda e de custo. A demanda entre cada par de vértices xi e xj foi considerada fixa e expressa pela matriz simétrica P = [pij] i,j=1,2, , n, onde pij é a demanda horária de passageiros do vértice xi ao vértice xj. Os valores da demanda pertencem ao intervalo (30.000, 80.000). O custo unitário de construção dos trechos de linha em dólar/dia/km), depende do tipo de escavação ou da técnica utilizada.

A opção pela geração de grafos planares triangulados evita que duas arestas quaisquer se cruzem a não ser em um vértice (o que, ao se passar ao problema, significa aumento de custo na construção). Além disso todo ciclo de comprimento maior que 3 tem uma aresta unindo dois vértices não consecutivos, o que tende a ligar cada vértice aos vértices mais próximos, havendo portanto uma etapa de pré-otimização ligada a essa construção. A técnica aqui utilizada partilha esta propriedade com a triangulação de Delaunay, mas aqui a pré-otimização tem um caráter seletivo, que é o da geração de linhas diametrais de comprimento o menor possível.

A entrada para um problema da geometria computacional é tipicamente a descrição de um conjunto de objetos geométricos, cada um como um conjunto de pontos, um conjunto de segmentos de reta, ou os vértices de um polígono. A saída é sempre uma resposta para a questão levantada sobre os objetos (por exemplo, se algum par de segmentos se intercepta) ou talvez um novo objeto geométrico, como o polígono convexo envoltório (PEC) de um conjunto de pontos. Aqui, naturalmente, se trabalhou em duas dimensões. Cada objeto de entrada é representado como um conjunto de pontos {pi}, onde cada pi = (xi,yi) e xi, yi Î R.

O programa que gera os grafos suporte é composto das etapas de geração dos vértices e de geração das arestas. A saída consiste nos arquivos de adjacência, de demanda e de custos de cada um dos k grafos gerados.

A.2 ' Geração dos vértices Na etapa de geração dos vértices delimita-se uma área do plano cartesiano para a geração dos n pontos. Esta área pode ser a do todo ou parte de uma cidade ou, no caso de um exemplo fictício, delimitada a priori. Aqui se trabalha com coordenadas x e y de valores entre 0 e 20 unidades (unidade: quilômetro), tendo-se portanto uma área de 400 km2 onde a nuvem de pontos será gerada. Esta área foi adotada para teste por corresponder a um porte suficiente para atender a uma parte importante do território urbano e suburbano das grandes metrópoles.

Este espaço foi dividido em 100 quadrículas de dimensões 2 x 2, numeradas da esquerda para a direita e de baixo para cima, definindo-se um vetor de controle de conteúdo cujas componentes têm valor 1 ou 0 para indicar a presença ou ausência de ponto. A quadriculação do plano serve para controlar adequadamente a geração de pontos e também para permitir a especificação eventual de regiões nas quais, por inexistência de demanda ou por questões de relevo, não se consideraria a construção de uma estação. Em cada quadrícula é gerado no máximo um ponto, o que evita a geração de pontos muito próximos. Os limites dos eixos e das quadrículas podem ser ajustados de acordo com as especificidades.

A.3 ' Geração das arestas Nesta etapa são aplicados alguns conceitos da geometria plana, como a determinação do PEC (polígono envoltório convexo) de uma nuvem de npontos e as propriedades do cruzamento de segmentos de retas. O PEC de um conjunto Q de k pontos é o menor polígono convexo P onde cada ponto de Q está na borda de P ou no seu interior, aqui denotado por CH(Q). Uma visualização prática do PEC considera um prego afixado a uma tábua em cada ponto de Q. O PEC é então o formato de um pedaço de borracha que circunda todos os pregos (Cormen et al., 1991).

Foi implementado um procedimento para o cálculo de um conjunto CH(Qi) (i = 1, , r) que, para i = 1, corresponde ao PEC de todo o conjunto Q, levando à geração das arestas externas do grafo-suporte. Uma vez determinado um CH(Qi) são retirados os ki pontos a ele pertencentes. O procedimento é repetido enquanto restarem 3 ou mais pontos. Desta forma cada novo polígono convexo obtido estará dentro do anterior e, no centro, ocorrerá uma das três situações: (a) existe um último polígono convexo: se todos os n pontos pertencerem aos polígonos convexos gerados; (b) existem apenas dois pontos: faz-se a ligação deles através de uma aresta; (c) existe apenas um ponto: posteriormente ele será ligado a todos os pontos do último PEC, formando uma estrela central no grafo-suporte.

A etapa seguinte corresponde à criação de ligações entre os vértices destes polígonos, sempre ligando os vértices do polígono mais externo ao que se segue, até que se atinja a configuração central acima descrita.

No primeiro caso, se o polígono central possuir k vértices, traçaremos as (k ' 3) menores diagonais deste polígono que não se cruzarem.

Para este cálculo foram feitas algumas modificações no algoritmo conhecido como Graham's scan. O algoritmo usa a técnica chamada "rotational sweep" (varredura rotacional), processando os vértices na ordem dos ângulos polares com um vértice de referência, no caso o vértice vigente de menor valor da coordenada y (e de menor coordenada x, em caso de empate) (apud Carmo, 2000).

Foi usado ainda um procedimento destinado a verificar se um segmento de reta (p0 p1) está a direita ou a esquerda de outro (p0 p2). Cada ponto é representado por suas coordenadas (x,y). Calcula-se o produto cruzado: (p1 ' p0) (p2 ' p0) = (x1 ' x0) (y2 ' y0) ' (x2 ' x0) (y1 ' y0) Se o resultado for positivo, então (p0 p1) está a direita a partir de (p0 p2) (sentido horário); se negativo, está a esquerda (sentido anti-horário) e, se for nulo, os pontos p0, p1 e p2 são colineares.

O passo seguinte consiste em determinar se duas arestas se cruzam. Trata-se de um método de duas fases, onde a primeira é uma rápida rejeição: os segmentos de reta não se interceptam se suas caixas de contorno (menores retângulo de lados paralelos aos eixos, que contém os segmentos em questão) não tiverem interseção.

A caixa de contorno do segmento (p1 p2) é então (r1 r2) com o ponto à esquerda mais baixo r1 = (xmin,ymin) e o ponto à direita mais alto r2 = (xmax,ymax), onde xmin = min(x1,x2), ymin = min(y1,y2), xmax = max(x1,x2), ymax = max (y1,y2). Dois retângulos (r1,r2) e (r3,r4), onde r3 = (x'min,y'min) e r4 =  (x'max,y'max) (neste caso, com o primeiro à esquerda e acima) se interceptam se e somente se a condição: (xmax ³ x'min) Ù (x'max ³ xmin) Ù (ymax³y'min) Ù (y'max ³ ymin) é verdadeira. O primeiro par de comparações acima determina se os retângulos se interceptam em x e o segundo se eles se interceptam em y.

Em seguida o produto cruzado é usado para achar a posição relativa de dois segmentos (p1 p2) e (p3 p4): (a) se eles se cruzam, então os sinais do produto cruzado (p3 ' p1) x (p2 ' p1) e (p4 ' p1) x (p2 x p1) diferem; (b) se eles não se cruzam, então os sinais dos produtos cruzados são os mesmos; (c) se apenas um dos dois produtos for nulo, um dos pontos de um segmento está sobre o outro segmento; (d) se os dois produtos forem nulos, os dois segmentos são colineares.

Os detalhes do algoritmo e de sua execução estão em Carmo (2000) e dizem respeito ao apresentado em 2.5. A Figura_A.1 mostra os dois PECs obtidos, após a delimitação dos quais restam 2 pontos, que geram uma aresta. Os vértices estão rotulados apenas pelos seus índices.

A.4 ' Procedimento para ligação entre as camadas de PEC(s) Após a obtenção das camadas de PEC(s) faz-se, iterativamente, a ligação dos vértices mais próximos de duas camadas consecutivas de PECs, obtendo como resultado um grafo planar triangulado. Limitamo-nos aqui a apresentar os principais procedimentos usados: ' Procedimento_contar_camadas: conta o número de camadas de polígonos convexos obtidos da nuvem de n pontos; ' Procedimento_contar_vértices[i]: conta o número de vértices da camada i e da próxima camada; ' Procedimento_ligar_vértices:  liga os vértices da camada externa (i) aos vértices mais próximos da camada interna (i + 1), sempre testando se a nova ligação não intercepta alguma outra ligação realizada até o momento; ' Procedimento_traçar_diagonais:  traça as k ' 3 menores diagonais que não se interceptam de um polígono convexo com k vértices; ' Procedimento_verificar_quadriláteros:  verifica todas as existências de quadriláteros entre duas camadas consecutivas de PEC (s), se a diagonal traçada não for a menor efetua-se a troca pela menor; ' Procedimento_gerar_matriz_de_distâncias:  calcula e grava em um arquivo de saída a matriz de distâncias do grafo-suporte final.

Aplicando o procedimento de ligação das camadas de PEC(s) ao grafo da Figura A.1 obtém-se o grafo mostrado naFigura_2.


Download text