Algoritmos e estrutura de dados para problemas de deslocamento no plano

Documentos relacionados
Problemas de deslocamento no plano em geometria computacional

Indução Matemática. Profa. Sheila Morais de Almeida. junho DAINF-UTFPR-PG

Teorema da Galeria de Arte e Triangularização de Polígonos e Pontos no Plano

Triangulação de Delauney

Arranjos. Claudio Esperança Paulo Roma LCG/UFRJ. All rights reserved.

Teorema da galeria de arte e triangularização de polígonos

Relações de Recorrência

Implementação de algoritmos para consultas de segmentos em janelas

CIC 111 Análise e Projeto de Algoritmos II

CÁLCULO I. Lista Semanal 01 - Gabarito

Geometria Computacional

Geometria Computacional - Notas de aulas. André Guedes

Teoria dos Grafos. Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo. Departamento de Matemática Aplicada

Teoria dos Grafos. Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo. Capítulo 16: Grafos Planares. Departamento de Matemática Aplicada

Introdução à Teoria dos Grafos

Teoria dos Grafos. Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo. Departamento de Matemática Aplicada

Projeto de Escalonamento Alocação de médicos

Pontos extremos, vértices e soluções básicas viáveis

ENQ Gabarito MESTRADO PROFISSIONAL EM MATEMÁTICA EM REDE NACIONAL. (a) Sejam a, b, n Z com n > 0. Mostre que a + b a 2n b 2n.

CÁLCULO I. Denir o trabalho realizado por uma força variável. Denir pressão e força exercidas por um uido.

CÁLCULO I. 1 Concavidade. Objetivos da Aula. Aula n o 16: Máximos e Mínimos - 2 a Parte

As Pontes de Königsberg

Teoria dos Grafos. Cobertura, Coloração de Arestas, Emparelhamento

O grau de saída d + (v) de um vértice v é o número de arcos que tem

CÁLCULO I. 1 Funções. Objetivos da Aula. Aula n o 01: Funções. Denir função e conhecer os seus elementos; Reconhecer o gráco de uma função;

Teoria dos Grafos. Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo. Departamento de Matemática Aplicada

OBI2012 Caderno de soluções

Problema do Caminho Mais Curto. Problema do Caminho Mais Curto

Geometria Computacional: Fecho convexo

A resposta para este problema envolve a partição do conjunto de arestas de tal forma que arestas adjacentes não pertençam a um mesmo conjunto.

(versão preliminar) exceto possivelmente para x = a. Dizemos que o limite de f(x) quando x tende para x = a é um numero L, e escrevemos

NÃO EXISTE POLÍGONO UNIESTÁVEL Eduardo Colli (IMEUSP)

apenas os caminhos que passam só por vértices em C, exceto, talvez, o próprio v A Figura 1 a seguir ilustra o significado do conjunto C edovalordist.

Prova Didática Grafos: Árvores Geradoras e Caminhos Mínimos, Análise de Complexidade

CÁLCULO I. Efetuar transformações no gráco de uma função. Aplicando esse teste às seguintes funções, notamos que

4.1 Preliminares. No exemplo acima: Dom(R 1 ) = e Im(R 1 ) = Dom(R 2 ) = e Im(R 2 ) = Dom(R 3 ) = e Im(R 3 ) = Diagrama de Venn

Geometria Analítica I

CAMINHOS, CIRCUITOS, CAMINHOS MÍNIMOS E CONEXIDADE

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 11: Introdução aos Grafos

CÁLCULO I. Aula n o 02: Funções. Determinar o domínio, imagem e o gráco de uma função; Reconhecer funções pares, ímpares, crescentes e decrescentes;

Análise de Algoritmos

OBSTRUÇÕES DE COGRAFOS-(K, L)

5COP096 TeoriadaComputação

GRAFOS BUSCAS E MENOR CAMINHO. Prof. André Backes

Material Teórico - Módulo de Geometria Espacial 2 - Volumes e Áreas de Prismas e Pirâmides. Terceiro Ano - Médio

A Projeção e seu Potencial

EQUAÇÕES RELACIONAIS FUZZY E COMO RESOLVÊ-LAS

Teoria dos Grafos AULA 1

Gabriel Coutinho DCC035 - Pesquisa Operacional Lista 6

CÁLCULO I Aula 01: Funções.

André Vignatti DINF- UFPR

Geometria Computacional

Otimização em Grafos

Paulo Guilherme Inça. 7 de dezembro de 2016

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

Professor: Anselmo Montenegro Conteúdo (aula 11): - Diagramas de Voronoi. Instituto de Computação - UFF

Introdução à Teoria dos Grafos. Isomorfismo

CÁLCULO I. Aula n o 02: Funções. Denir função e conhecer os seus elementos; Listar as principais funções e seus grácos.

CÁLCULO I. Apresentar e aplicar a Regra de L'Hospital.

2 Conceitos básicos de topologia

Nós em Grafos. Novos Talentos em Matemática. Joel Moreira. 5 de Setembro de Joel Moreira Nós em Grafos 5 de Setembro de 2008 () 1 / 16

Divisão e Conquista. Norton T. Roman. Apostila baseada nos trabalhos de Cid de Souza, Cândida da Silva e Delano M. Beder

A resposta para este problema envolve a partição do conjunto de arestas de tal forma que arestas adjacentes não pertençam a um mesmo conjunto.

MC102 Aula 26. Instituto de Computação Unicamp. 17 de Novembro de 2016

5. Invólucros Convexos no Plano

Teorema da Galeria de Arte. Geometria Computacional p.1/15

Análise e Projeto de Algoritmos

XX OLIMPÍADA REGIONAL DE MATEMÁTICA DE SANTA CATARINA Treinamento 7 Nível 3

1 SEMELHANÇA EM TRIÂNGULOS RETÂNGULOS DICA DO MINGUADO. Matemática 2 Pedro Paulo. Semelhança entre e :

Geometria Computacional

Teoria dos Grafos. Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo. Departamento de Matemática Aplicada

Curvas Planas em Coordenadas Polares

Sequencias e Series. Exemplo 1: Seja tal que. Veja que os dez primeiros termos estão dados por: ,,,,...,, ou seja que temos a

CÁLCULO I. 1 Área entre Curvas. Objetivos da Aula. Aula n o 28: Área entre Curvas, Comprimento de Arco e Trabalho. Calcular área entre curvas;

Cálculo Numérico. Santos Alberto Enriquez-Remigio FAMAT-UFU 2015

Matriz Hessiana e Aplicações

Álgebra Linear. Alan Anderson

Poliedros AULA Introdução Denições

Material Teórico - Módulo Cônicas. Elipses. Terceiro Ano do Ensino Médio

Estudo e implementação de um algoritmo eficaz de detecção de retas

Espaço Dual, Transposta e Adjunta (nota da álgebra linear 2)

5. Invólucros Convexos no Plano (cont )

Grafo planar: Definição

Seminário de Robótica Bruno de Abreu Silva

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.

Professor: Anselmo Montenegro Conteúdo (aula 7): - Noções de estruturas de dados topológicas. Instituto de Computação - UFF

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

Técnicas de Inteligência Artificial

Mercados de Emparelhamento

Programação Dinâmica I SCC0210 Algoritmos Avançados (2/2011) Lucas Schmidt Cavalcante

Lideranças em jogos equilibrados: Teoria x Intuição

Caminhos mínimos de única origem

João esqueceu-se do seu código, mas lembra-se que é divisível por 9. Quantos códigos existem nessas condições?

Teoria dos Grafos. Professor: Guilherme Oliveira Mota.

Grafos: caminhos (matriz adjacência)

Programação Estruturada

Grafos. Notas. Notas. Notas. Notas. Caminhos mais curtos de única origem. Subestrutura ótima. Propriedades de caminhos mais curtos

Teoria dos Grafos. Fluxo Máximo em Redes

Algoritmos de aproximação - Problema do caixeiro viajante

Noções da Teoria dos Grafos. André Arbex Hallack

Transcrição:

Algoritmos e estrutura de dados para problemas de deslocamento no plano Natan Costa Lima 1 e Carlos Eduardo Ferreira(Orientador) 2 1 Universidade de São Paulo (USP), Brasil natan.lima@usp.br 2 Universidade de São Paulo (USP), Brasil cef@ime.usp.br se pensarmos em um mapa ou uma planta do local, isto não se parece mais tão restritivo. Consideraremos também que o ambiente seja estático, ou seja, não levamos em conta pessoas ou outros objetos se movendo pelo cenário. 1. Introdução O problema em estudo neste projeto de iniciação cientíca é o problema de deslocamento no plano bidimensional, onde queremos determinar um caminho no plano em que um certo robô deve se locomover sem colidir com obstáculos. Este problema de deslocamento não é aplicável somente à robótica. Podemos pensar também em um programa usado no GPS -sistema de posicionamento global-,por exemplo, para determinar o trajeto de um carro. Chamemos nosso ambiente, onde estão os obstáculos (em forma de polígono), de R. Considere dois pontos s e t, para os quais queremos traçar um caminho com início em s e término em t. Queremos responder as seguintes questões: 2. O robô pontual Primeiro, consideremos o nosso robô como sendo um ponto e ainda que ele possa andar em todas as direções livremente. Uma forma de acharmos um caminho livre de obstáculos foi proposta por Kedem e alguns outros [4][5]. A idéia consiste em dividir a área livre em trapézios para depois calcularmos um caminho válido. Ao invés de calcularmos um caminho livre entre dois pontos, construiremos um estrutura de dados chamada de mapa trapezoidal. Esta estrutura nos ajudará a calcular um caminho livre de obstáculos. Essa abordagem funciona quando o ambiente de obstáculos não muda e necessitamos calcular vários caminhos diferentes. 1. Existe um caminho de s a t, livre de obstáculos em R? 2. Encontre um caminho de s a t em R, livre de obstáculos. 3. Encontre o caminho de menor distância de s a t. É fácil perceber que uma resposta para questão (3) satisfaz à (2), assim como uma resposta para (2) resolve a (1). Logo, a questão de decisão é a mais fácil das três Quanto a questão (3), sua denição não é tão clara. Se considerarmos um robô como sendo um ponto e ainda que ele possa se mover para todos os lados livremente, então bastaria pegarmos o caminho com a menor distância euclidiana. Suponha agora que seja um carro que precisaria acelerar e desacelerar para fazer curvas, ou ainda pensemos em um robô que demore muito para virar. Nestes casos, a menor distância euclidiana pode não ser a melhor escolha. Aqui iremos aplicar algumas restrições. Talvez a mais drástica à primeira vista, seja considerarmos o ambiente como um plano em duas dimensões, mas Figura 1. Um exemplo de mapa trapezoidal.(fonte: Wikipedia, http://upload.wikimedia.org/wikipedia/ en/4/43/trapezoidal_decomposition.png) 293

2.1 Mapa trapezoidal Aqui, considere um conjunto S de retas que não se cruzam entre si e seja R uma caixa onde todas as retas em S estão encapsuladas. Então, o mapa trapezoidal T (S) é obtido traçando duas linhas verticais de todos os pontos extremos, uma para cima e outra para baixo, parando em outra reta de S ou quando tocarmos uma das arestas de R. veja Figura 1. 2.2 Grafo de caminhos livres Com o mapa trapezoidal em mãos, temos que representar agora a região livre de obstáculos. Para isto, basta retirarmos do nosso mapa os trapézios que se encontram dentro dos polígonos. Vejamos como isso nos ajuda a calcular o caminho livre de obstáculos entre dois pontos, digamos s e t, em P. Se os dois pontos estão contidos no mesmo trapézioi, então é fácil: temos que os trapézios estão em regiões livres, logo, basta traçarmos um linha reta entre os dois. Agora, caso eles estejam em trapézios diferentes, não basta traçarmos uma linha reta, pois algumas vezes precisamos fazer curvas para entrar em determinados trapézios. Para nos ajudar, construiremos o que vamos chamar aqui de grafo de caminhos livres. Neste grafo os centros dos trapézios e o centro de cada linha vertical serão os vértices e haverá arcos ligando os centros dos trapézios aos centros das linhas verticais que são adjacentes a estes trapézios. Note que estes arcos estão na região onde o robô pode andar, pois tanto os trapézios como as linhas verticais estão na região livre do mapa. Figura 2. Um exemplo de grafo de caminhos livres.(fonte: Computacional Geometry Algorithms and Applications,[1]) Com o grafo montado basta adicionarmos uma aresta de s ao vértice que se encontra no meio do trapézio onde s está contido, e adicionamos também uma aresta de t ao vértice do seu trapézio, depois disto usamos busca em largura, busca em profundidade ou até mesmo o algoritmo de dijkstra para acharmos um caminho possível de s a t. 2.3 Caminhos mínimos Vamos considerar agora o problema de encontrarmos o caminho de menor distância euclideana. A imagem a seguir ilustra a diferença entre o método anterior e o melhor caminho: Figura 3. O caminho mínimo não está no grafo.(fonte: Computacional Geometry Algorithms and Applications,[1]) Dito isto podemos enunciar o seguinte lema. Lema 1 Qualquer caminho mínimo entre dois pontos s e t entre os polígonos em P é um caminho poligonal onde seus vértices são vértices dos polígonos em P. Prova. Suponha por absurdo que o caminho C não seja poligonal e seja mínimo. Como os obstáculos são poligonais, isto signica que existe um vértice p em C que está contido no espaço livre, ou seja, existe um ɛ tal que o disco D com centro em p e raio ɛ está totalmente contido em um espaço livre, logo, pegamos os dois pontos onde o caminho se cruza com D e conectamos eles com uma linha reta ao invés de passarmos por p. Isto é um atalho digamos assim, logo, encontramos um caminho de comprimento menor que C, pois qualquer caminho de comprimento mínimo tem que ser mínimo localmente também. Desta forma podemos concluir que o caminho tem que ser poligonal e excluímos a possibilidade de haver pontos contidos no espaço livre. De maneira similar conseguimos excluir os vértices encontrados nas arestas dos polígonos pois podemos usar um argumento semelhante, agora ao invés de ter um disco, temos a metade de um, e podemos usar o 294

mesmo argumento para diminuir o caminho. Logo só nos resta os vértices dos polígonos para p. Podemos denir agora o que chamaremos de Gvis(P ) o grafo de visibilidade de P onde seus vértices são os vértices dos polígonos em P {s, t} = P onde s e t são os pontos para os quais queremos a menor distância. Por denição os arcos em Gvis(P ) são entre vértices -que agora incluem s e t- onde há um caminho em linha reta entre eles, e que não colida com obstáculos. Sabemos assim que o menor caminho entre s e t consiste de arcos neste grafo, logo, podemos usar o seguinte algoritmo para achar o menor caminho: algoritmoshort EST P AT H(P, s, t) entrada. Um conjunto P de polígonos e dois pontos s e t localizados em algum espaço livre. saida. O menor caminho sem colisão entre s e t. G(vis) V ISIBILIT Y GRAP H(P {s, t}) ij G(vis), custo(i, j) a distância euclideana do segmento ij. Use o Algoritmo de Dijkstra para calcular o caminho mais curto entre s e t. encontrado [6]: O(n log(n) + E) onde E é o número de arestas no grafo de visibilidade. Claro que E = O(n 2 ) mas como na gura 4, podemos ver que pode ser bem menor do que n 2. 3. Somas de Minkowski Anteriormente consideramos nosso robô como sendo apenas um ponto,porém, não é mais difícil quando o robô é um polígono. Vamos assumir que nosso robô R seja convexo. Denotaremos por R(x, y) o ponto de referência do robô, para podermos localizá-lo no plano. Nosso problema agora é que se encostarmos com R(x, y) nas bordas dos obstáculos, o robô acabará por colidir com estes. Logo nosso espaço de colisões mudou, deniremos de CP o espaço onde o Robô R não colide com os obstáculos de P. CP := {(x, y) : R(x, y) P φ Figura 5. CP, R, P (Fonte: Computacional Geometry Algorithms and Applications,[1]) Figura 4. Grafo de visibilidade.(fonte: Programa desenvolvido durante a iniciação) 2.4 Construindo o grafo de visibilidade Um algoritmo O(n 3 ) é imediato, basta para cada reta ij com i, j P testar se ij cruza com alguma aresta de polígonos em P. Esse problema foi extensivamente estudado até que um algoritmo ótimo foi Podemos denir assim nossas transformações como: A soma de dois conjuntos S 1 R 2 e S 2 R 2 denotado por S 1 S 2 é denido por S 1 S 2 := p + q : p S 1, q S 2, onde p + q denota o vetor soma dos vetores p e q, isto é, se p = (p x, p y ) e q = (q x, q y ) então temos: p + q := (p x + q x, p y + q y ). Para expressar CP com essas somas, deniremos uma última notação: Para um ponto p = (p x, p y ) denimos p := ( p x, p y ), e para um conjunto S nós denimos S := p : p S Assim podemos enunciar o seguinte teorema: Teorema Seja R um robô planar, que pode se locomover em todas as direções, e seja P um obstáculo. então CP de P é P ( R(0, 0)). prova Temos que provar que R(x, y) intersecta P se e somente se nós temos que (x, y) P ( R(0, 0)). Primeiro suponha que R(x, y) intersecta P e seja 295

q = (q x, q y ) um ponto de intersecção. Segue de q R(x, y) que q(q x x, q y y) R(0, 0) ou equivalentemente ( q x + x, q y + y) R(0, 0). Como temos que q P então (x, y) P ( R(0, 0)). volta. Seja (x, y) P ( R(0, 0)), então existem pontos (r x, r y ) R(0, 0) e (p x, p y ) P tal que (x, y) = (p x r x, p y r y ), ou em outras palavras, tal que p x = r x + x e p y = r y + y, o que implica que R(x, y) intersecta P. Logo essas somas -geralmente chamadas de Minkowski sums- representam o espaço livre para um robô planar, que pode se mover em qualquer direção. (a) 3.1 Alguns resultados Dessas somas derivam várias propriedades, não vou prová-las aqui, mas dentre elas, segue algumas interessantes: Seja P e R polígonos com n e m vértices respectivamente, a complexidade das somas de Minkowski para P R é dada por: (b) O(n + m) se os dois polígonos são convexos. O(nm) se um deles é convexo e outro não. O(n 2 m 2 ) se nenhum deles é convexo. 4. Implementações Por enquanto foi implementado a construção do grafo de visibilidade e o algoritmo de Dijkstra. Note que ao invés de exibir apenas o menor caminho entre os dois pontos, o programa exibe a árvore de caminhos mínimos a partir de s. A construção do grafo foi implementada usando o algoritmo ingênuo. Futuramente será implementada a versão do algoritmo que pode ser encontrada em Computacional Geometry [1], cuja complexidade é O(n 2 log(n)). 5. Imagens Figura 6. Polígonos/Obstáculos.(Fonte: Programa desenvolvido durante a iniciação) (c) Figura 7. Telas do programa mostrando os obstáculos, o grafo e a árvore de custo mínimo. (Fonte: programa desenvolvido durante a iniciação) 6. Conclusão O objetivo desta iniciação cientíca é estudar e implementar o grafo de visibilidade de uma maneira eciente, Futuramente o mapa trapezoidal. Além da implementação convencional focaremos em um software para ns didáticos, que mostre como os algoritmos estão funcionando. O grafo de visibilidade é uma estrutura que foi estudada profundamente até a descoberta do algoritmo ótimo, o problema é que para conseguir a complexidade O(n log(n) + E) o algoritmo e as estruturas se tornam muito complexos. O lema nos permite construir o grafo de visibilidade, onde os vértices desse grafo são os vértices dos polígonos e os arcos são caminhos em linha reta entre estes vértices. 296

[6] S. K. Ghosh and D. M. Mount, An output-sensitive algorithm for computing visibility graphs., SIAM J. Comput 20 (1991), 888910. (a) (b) (c) Figura 8. Telas do programa mostrando os obstáculos, o grafo e a árvore de custo mínimo. (Fonte: programa desenvolvido durante a iniciação) Referências [1] M. de Berg, M. van Kreveld, M. Overmars, and O. Schwarzkopf, Computacional Geometry: Algorithms and applications (second edition), Springer, New York, 2005. [2] Joseph O'Rourke, Computacional Geometry in C (second edition), Cambridge University Press, United Kingdom, 1998. [3] K. Mulmuley, Computacional Geometry:an Introduction through Ramdomized Algorithms., Prentice Hall, Chigago, 1998. [4] K. Kedem, R. Livne, J.Pach, and M.Sharir, On the union of Jordan regions and collision-free translation motion amdst polygonal obstacles, Discrete Comput. Geom. 1 (1986), 5971. [5] K. Kedem and M.Sharir, An ecient algorithm for planning collision-free translation motion of convex polygon object in 2-dimensional space amidst polygonal obstacles., Proceedings of the 1st Annual Symp. Comp. Geom. (1985), 7580. 297