ede estructura de datos espaciales

125
Estruturas de Dados Espaciais Processamento Geométrico Bancos de Dados Espaciais Sistemas de Informações Geográficos (GIS) Claudio Esperança

Upload: israel-gutierrez

Post on 17-Nov-2015

229 views

Category:

Documents


2 download

DESCRIPTION

ede estructura de datos

TRANSCRIPT

  • Estruturas de DadosEspaciais

    Processamento Geomtrico

    Bancos de Dados Espaciais

    Sistemas de InformaesGeogrficos (GIS)

    Claudio Esperana

  • Objetivos do Curso

    O Estruturas de dados para armazenamento, busca eordenao de dados espaciais

    O Algoritmos geomtricos fundamentais

    O Arquitetura de bancos de dados espaciais

    O Integrao com bancos de dados convencionais

    O Processamento de consultas (queries) envolvendodados espaciais e no-espaciais

  • Dados Espaciais x Dados Escalares

    O Multidimensionais x Unidimensionais

    O Noo de Forma x pontos ou tuplas

    O Ordenao parcial x Ordenao total

    O Relaes geomtricas x Relaes sobre grandeza

    O Frequentemente, os dois tipos so combinados em:

    Sistemas de Informao Geogrficos

    CAD

    Computao Grfica

  • Espao de dados

    O Qualquer tipo de dado supe um espao onde eleest imerso

    O Modelagem de dados requer que se escolha umespao apropriado

    O Frequentemente, mais de uma opo possvel

    O Exemplo: Cidade

    Espao de cadeias de caracteres

    Cdigo numrico (ex. CEP)

    Ponto do planisfrio (Latitude e Longitude)

    Conjunto de pontos (ex. delimitado por umpolgono)

    O Cada espao mais conveniente para um ou outrotipo de processamento

  • Dimenso

    O Qual a dimenso do espao de cidades?

    Como cadeia de caracteres: 1 (existe ummapeamento 1 para 1 entre o conjunto decadeias e o conjunto dos numeros inteiros)

    Como ponto no planisfrio: 2

    Como conjunto de pontos delimitado por umpolgono: 2

    O Qual a dimenso do dado cidade?

    Como cadeia de caracteres: 0

    Como ponto no planisfrio: 0

    Como conjunto de pontos delimitado por umpolgono: 2

  • Dimenso (cont.)

    O Dados escalares (no espaciais) so modeladoscomo pontos em um espao unidimensional

    O Dados espaciais so modelados como pontos ouconjuntos de pontos em espao multidimensional

    O Entre os dois: Conjuntos de pontos em espaounidimensional (ex., intervalos, sries temporais)

  • Relaes entre dado e espao

    O Localizao

    Existe uma cidade chamada So Paulo ?

    Existe uma cidade em 39o2930 S, 65

    o5020

    W ?

    O Vizinhana

    Qual a cidade com nome subsequente a SoPaulo?

    Qual a cidade mais prxima de So Paulo?

    O Noo de mtrica

    O Extenso (Dados Espaciais)

    Qual o permetro de So Paulo?

    Qual a rea de So Paulo?

  • Uso de ordenao

    O Dados escalares

    possvel estabelecer uma ordem total

    Ordenao facilita operaes de localizao evizinhana

    O Dados espaciais

    impossvel estabelecer uma ordem total semromper com relaes de vizinhana

    A imposio de uma ordem total conhecidacomo linearizao do espao.Exemplo: ordenarum conjunto de pontos lexicograficamente

    Ordenao parcial, no entanto, pode facilitardiversas operaes

    O Estruturas de dados espelham ordenao

  • Estruturas de dados para dados escalares

    O Visam essencialmente facilitar operaes delocalizao e de vizinhana

    O Exemplos:

    Tabelas organizadas por clculo de endereo(Hash Tables)

    O Usadas em localizao de dados

    Caso mdio: O(1)

    Pior caso: O(n)

    O Podem ser baseadas em memria ou disco

    rvores binrias balanceadas

    O Localizao de dados: O(log n)

    O Vizinhana: O(log n)

    O Primariamente baseadas em memriaprincipal

  • Estruturas de dados para dados escalares (cont.)

    O rvores B e suas variantes

    Localizao de dados: O(log n)

    Vizinhana: O(log n)

    Otimizadas para utilizao em memriasecundria (disco)

    Asseguram alta taxa de utilizao(garantidamente > 50%)

  • Idia geral de estruturas de dados espaciais

    O Precisam suportar grande nmero de operaes

    O No existe estrutura de dados espacial quegarantidamente seja eficiente para atender todos ostipos de operarao

    O Aplicaes em bancos de dados espaciais / GIS:

    Utiliza-se estruturas de dados gerais que tmeficiencia razovel no caso mdio. Ex.: PMR-quadtrees, Grid files, R-trees e suas variantes

    O Aplicaes em CAD, Computao grfica:

    Frequentemente estruturas de dados gerais dobons resultados

    Em casos especificos, estruturas de dadosespecializadas podem ser indicadas.: Ex.:Diagramas de Voronoi

  • Representao de dados geomtricos 2D

    O Valores escalares

    Inteiros de preciso fixa

    O representao exata

    O problema de discretizao (quantizao)

    Inteiros de preciso varivel

    O utilizam alocao dinmica de memria

    O manipulao atravs de biblioteca (lento)

    Ponto flutuante (simples / dupla preciso)

    O representao inexata de nmeros reais

    O sujeitos a problemas de preciso

    Nmeros racionais (frao)

    O Fraes (espao = 2 inteiros de precisofixa/varivel)

    O Manipulao atravs de biblioteca

    O Problema de unicidade (infinidade defraes c/ mesmo valor)

  • Representao de dados geomtricos 2D (cont.)

    O Pontos e vetores

    2 valores escalares

    No confundir os dois

    O Ponto denota posio

    O Vetor denota deslocamento

    O Usar programao geomtrica

    P1

    P2

    V

    P1 + V = P2

    P2 - P1 = V

    P1 + 2V = P3

    P3

    V

  • Representao de dados geomtricos 2D (cont.)

    O Retas

    Representao implcita

    O a x + b y + c = 0

    O 3 valores escalares

    O possvel substituir 1 valor por um flag,mas complica a representao

    Representao paramtrica

    O (x,y) = P + t V

    O t o parmetro que permite caminharsobre a reta

    O 4 valores escalares

    O possvel substituir V por um ngulo, mascomplica a representao

    Converso entre representaes

    O Exerccio

  • Representao de dados geomtricos 2D (cont.)

    O Segmentos de reta

    Dois pontos (extremidades)

    Representao paramtrica

    O Assumir intervalo t = [0,1]

    O Retngulos alinhados com os eixos coordenados

    Usados extensivamente em estruturas de dadosespaciais

    O Parties do espao

    O Caixas Limitantes (bounding boxes)

    Pontos extremos (min_x, min_y) (max_x,max_y)

    O max_x >= min_x e max_y >= min_y

    Ponto mnimo e vetor extenso (min_x,min_y)(tam_x,tam_y)

    O tam_x e tam_y >= 0

  • Representao de dados geomtricos 2D (cont.)

    O Polgonos

    Usados para aproximar regies

    Podem ser simples ou complexos

    O Simples: topologicamente homeomorfos aum disco

    O Complexos: Podem possuir auto-interseese buracos

    Simples

    Auto-interseo

    Buraco

  • Representao de dados geomtricos 2D (cont.)

    O Polgonos (cont)

    Lista de vrtices (pontos)

    O Muitos algoritmos requerem uma circulaopredeterminada (sentido horrio ou anti-horrio)

    O Importante garantir (implicita ouexplicitamente) que primeiro vrtice =ltimo vrtice

    v1=v7

    v2v3

    v4 v5

    v6(sentido horrio)

  • Representao de dados geomtricos 2D (cont.)

    O Polgonos (cont.)

    Polgonos complexos podem ser representadospor listas de vrtices inserindo-se novos vrticese/ou arestas

    v1=v7

    v2=v5

    v3 v4

    v6

    v1=v11

    v2=v8

    v3=v7

    v10

    v4

    v5

    v6

    v9

  • Representao de dados geomtricos 2D (cont.)

    O Polgonos (cont.)

    Triangulao

    O Conjunto de tringulos que se interceptamapenas segundo arestas e cuja unio idntica ao polgono

    O Poligono c/ N vrtices = N-2 tringulos

    O Facilita uma srie de algoritmos

    O Polgono pode ser triangulado em O(N)

    v1=v9

    v2

    v7

    v3=v10

    v4

    v6

    v5

    v8

  • Operaes com dados geomtricos

    O Sejam A e B dois dados geomtricos (ex.: ponto,segmento de reta, polgono, etc)

    O Predicados (A B boolean) intercepta(A,B): se A e B tm ao menos um

    ponto em comum

    contm(A,B): se A contm B

    adjacente(A,B): se a fronteira de A e a fronteirade B tm algum ponto em comum, mas ointerior de A e B no se interceptam (A e B tmque ser conjuntos compactos de dimenso >= 2)

    prximo(A,B,d): se a distncia entre A e B maior que d

    ( , )A B d

    A B A B A B

    A B

    A B

  • Operaes com dados geomtricos (cont.)

    O distncia(A,B) ou (,) depende de uma mtrica (a,b)

    Uma mtrica uma funo que mapeia pares depontos em nmeros positivos com aspropriedades:

    O (a,b) =0 se e somente se a=bO (a,b) = (b,a)O (a,c) (a,b)+ (b,c)

    mtricas mais empregadas:

    O Euclideana:

    O Valor absoluto (ou Manhattan)

    O Valor mximo (ou Tabuleiro de Xadrez)

    ( , ),

    ( , )minA Ba A b B

    a b=

    Ma b x x y ya b a b ( , ) max ,| | | |=

    Ea b x x y ya b a b ( , ) ( ) ( )= +

    2 2

    Aa b x x y ya b a b ( , ) | | | |= +

  • Operaes envolvendo dados geomtricos

    O distncia(A,B) (cont.)

    lugar geomtrico de todos os pontos mesmadistncia de um dado ponto p caracterstica damtrica

    p

    Manhattan

    Euclideana

    Tabuleirode Xadrez

  • Operaes com dados geomtricos (cont.)

    O Propriedades integrais

    Permetro (comprimento da borda)

    rea

    Volume (3D)

    Centro de massa (Centride)

    O Operaes morfolgicas

    Dilatao

    Contrao

    O Operaes booleanas

    Unio

    Interseo

    Diferena

  • Caixas Limitantes

    O Caixas limitantes (bounding boxes) servem comoestimativas do lugar geomtrico de dados espaciais

    O Certas operaes podem ser aceleradas atravs detestes preliminares com caixas limitantes

    O O tipo mais comum de caixa limitante o retngulocom lados alinhados com os eixos coordenados -(MBR - Minimum Bounding Rectangle)

    O Dado um conjunto A, MBR(A) um retngulodefinido por seus dois vrtices extremos, min emax, tal que, para todo eixo coordenado x

    minx= mina(ax)

    maxx= maxa(ax)

    A

    MBR(A)

  • Propriedades de caixas limitantes

    O Interseo

    A B MBR(A) MBR(B) MBR(A) MBR(B)= A B = A MBR(B)= A B = A B MBR(A) MBR(B) A B A MBR(B)

    O Distncia

    (,) (MBR(A), MBR(B)) (,)

    min aF(MBR(A)), bF(MBR(B)) { max(a,b) },

    onde F(MBR(A)) e F(MBR(B)) so faces dascaixas limitantes de A e de B e max (S,T) adistncia mxima entre os conjuntos S e T:

    max (S,T) = max sS,tT { (s,t) }(propriedade ligada ao fato que toda face deuma caixa limitante contm ao menos um pontodo conjunto limitado)

  • Implementando predicados de interseo

    O Regras gerais

    Usar testes preliminares contra caixas limitantesse esses testes forem mais simples do que ostestes de interseo propriamente ditos (ex.testes entre polgonos)

    Procurar discernir entre interseo com ointerior e interseo com a fronteira (predicadotoca(A,B))

    Usar classificao de ponto contra semi-espaospara diagnstico precoce de no-interseo

    Usar aritmtica inteira sempre que possvel

    Usar estruturas de dados complicadas apenascomo ltimo recurso

  • Testes de interseo com Pontos

    O Ponto

    P Q Px = Qx Py = QyO Reta

    Seja L dado por a . x + b . y + c = 0

    P L a . Px + b . Py + c = 0O Segmento de Reta

    Testar P contra a reta de suporte

    Seja S dado parametricamente por Q + tV,onde 0 t 1

    Calcular tx ou ty , correspondentes interseodo segmento com as retas x = Px ou y = Py

    tx ou ty ? Escolher baseado no maior entre Vx eVy

    O Retngulo alinhado c/ eixos

    Seja R dado por seus pontos mnimo e mximo

    P R Px minx Px maxx Py miny Py maxy

    Para teste contra o interior de R, substituir por > e por

  • Testes de interseo com Pontos (cont.)

    O Polgono convexo

    Seja G dado por uma lista de vrticesg1, g2, gN enumerados segundo umacirculao horria da fronteira de G

    Seja a linha de suporte da aresta gi-gi+1 dada por ai . x + bi . y + ci = 0, de tal forma que paratodos os pontos Q do interior do polgono ai . Qx + bi . Qy + ci > 0

    P R i=1N, ai . Px + bi . Py + ci 0

  • Testes de interseo com Pontos (cont.)

    O Polgono qualquer

    Teste da soma de ngulos

    O A soma dos angulos formados entre P edois vrtices consecutivos gi e gi+1 de Gdeve ser de 360

    1 2

    345

    6

    ngulos tomados no mesmo sentido (sentido contrrio)da circulao do polgono so positivos (negativos)

  • Testes de interseo com Pontos (cont.)

    O Polgono qualquer (cont.)

    Teste de paridade

    O Reta que atravessa o polgono entra/saium nmero par de vezes

    O Semi-reta ancorada em P sai vez mais doque entra

  • Testes de interseo com Segmentos de reta

    O Seja S um segmento de reta

    O Interseo com outro segmento de reta T

    Computar o ponto de interseo P entre as retasde suporte de S e T

    O forma implcita ax+by+c=0 normalizada detal forma que o primeiro coeficiente naonulo seja igual a 1

    O Se as retas tm a e b idntico, so paralelas(S e T no se interceptam)

    O Se as retas tm a, b e c idnticos, socoincidentes (S e T se interceptam se esomente se MBR(S) e MBT(T) seinterceptam)

    Testar interseo de P com S e T

  • Testes de interseo com Segmentos de reta

    O Retngulo R alinhado com eixos coordenados

    Sejam A e B os dois pontos extremos de S

    Classificar A e B para determinar em qual das 9regies relativas a R eles se encontram:

    1 32

    4 50

    6 7 8

    1 2 3 4 5 6 7 80012345678

    AB

    SR=

    SR

  • Testes de interseo com Segmentos de reta(cont)

    Se a classificao das extremidades de S comrelao a R for insuficiente para determinar se Sintercepta R, testar a interseo de S com cadaface de R

    O Polgono

    Testar S com cada aresta do polgono G

    Se S no intercepta a fronteira de G, ento Sintercepta G se e somente se algum ponto de Sest dentro de G

    O Teste de interseo de uma dasextremidades de S contra G

  • Testes de interseo com Retngulos

    O Teste de R contra outro retngulo Q

    R intercepta Q se e somente se as projees deR e Q em ambos os eixos coordenados seinterceptam

    O max {minRx, minQx } min {maxRx, maxQx }O max {minRy, minQy } min {maxRy, maxQy }

    O Teste de R contra polgono G

    Testar todas as arestas de G contra R

    Se a fronteira de G no intercepta R, ento hduas hipteses

    O R est contido em G

    O R no intercepta G

    Testar um ponto de R contra G

  • Teste de interseo entre dois polgonos

    O Algoritmo ingnuo tem pssimo desempenho,pois envolve testar cada aresta de um polgono (G)contra todas as arestas do outro polgono (H)

    O (|G| . |H|)

    O Representaes alternativas para polgonos podemfacilitar a tarefa

    Exemplo: Triangulaes

    Exemplo: BSP-trees

    O Algoritmos mais eficientes so conhecidos naliteratura de Geometria Computacional

    Exemplo: Algoritmo de varredura

  • Mtodos de decomposio do espao

    O Visam lidar com a complexidade de distribuiesespaciais dividindo o espao em subregies. Cadasubregio menos complexa que o todo

    O Contraposio com mtodos de decomposio ouagrupamento de objetos com base na proximidadeentre esses objetos

    O Classificao quanto a hierarquia

    Metodos hierrquicos (Quadtrees, k-d-trees)

    Mtodos no hierrquicos (grades regulares,Grid File, EXCELL)

    O Classificao quanto ao posicionamento dassubdivises

    Regular (diviso do espao em partes iguais):bintrees, quadtrees de regio,

    No regular ou adaptativos (diviso nonecessariamente resulta em subdivisesidnticas): k-d trees, quadtrees de pontos, BSP-trees

    O Classificao quanto a forma das subdivises

    Quadrilteros alinhados com os eixos(quadtrees, bintrees, k-d trees)

    Polgonos convexos quaisquer (BSP-trees)

  • Quadtrees de regio

    O Utilizado inicialmente para imagens binrias (pretoe branco)

    O Assume uma imagem quadrada de lado igual a umapotncia de 2 (2n 2n)

    O Cada diviso de um quadrado 2i 2i resulta em 4quadrados 2i-1 2i-1

    O Critrio de subdiviso: dividir enquanto subregiocontiver pixels brancos e pretos; no subdividir sesubregio for uniformemente preta ou branca

    O Ns folha so rotulados brancos e pretos; nsinternos so chamados de cinza

  • Quadtrees de Regio (cont.)

    NW NE SW SE

  • Propriedades da Quadtree de Regio

    O Espao de armazenamento:

    Se numa rvore completa h K ns-folha, hum total deK + K/4 + K/16 + = floor (4 K / 3)

    O resultado vale para qualquer rvore com Kns folha

    Pior caso (mximo nmero de ns-folha):Imagem tipo tabuleiro de xadrez (todos osquadrantes tm que ser divididos at o nvel depixel)

  • Propriedades da Quadtree de Regio (cont.)

    O Espao de armazenamento (cont):

    Overhead dos ns internos pode ser aliviadousando representaes sem ponteiros

    O Usar uma lista onde ns so enumerados emordem de visita (ex. pos-ordemNW,NE,SW,SE)

    O Usar uma lista de cdigos posicionais dasfolhas pretas

    Cada n representado por umasequncia de dgitos em base 4acompanhados por um indicador donvel do n na rvore.

    Espao depende da posio dos pixels pretosdentro do sistema de referncia da quadtree

    O Transladando uma mesma imagem pode-seobter mais ou menos blocos

    Espao linearmente proporcional resoluo(n) e ao permetro da imagem (p) #Blocos 24 . n - 19 + 24 . p

  • Propriedades da Quadtree de Regio

    O Complexidade de algoritmos

    Localizao de ponto (Cor de um pixel):O(log n)

    Converso de imagem matricial: O (n)

    Vizinhana: O(log n)

  • Converso de Raster em Quadtree de Regio

    O Algoritmo ingnuo

    Criar uma quadtree trivial (imagem com todosos pixels brancos)

    Rotina PintaPixel:

    O Dada a posio (x,y) de um pixel daimagem e sua cor (c), modificar a quadtreepara refletir a mudana

    Chamar a rotina PintaPixel para todos ospixels da imagem

    Independente da ordem em que os pixels sopintados

    Complexidade

    O Para imagem n n: O(n2 log n)O Subrvores podem ser criadas para ser logo

    depois deletadas

    O Desejvel: O(n2)

  • Converso de Raster em Quadtree de Regio(cont.)

    O Rotina PintaPixel (detalhes)

    Descer na rvore at localizar o n-folhacorrespondente ao pixel

    Se o n-folha tem cor igual ao pixel, no faanada

    Caso o n-folha seja de tamanho 1x1 (pixel),troque sua cor

    Caso o n-folha corresponda a mais de 1 pixel,subdivida-o at o nvel de pixel, localize o n-folha correspondente ao pixel a ser pintado etroque sua cor.

    Subir do n-folha raiz juntando (merging)sempre que necessrio, isto , se os trs irmosdo n folha tm agora a mesma cor c

  • Converso de Raster em Quadtree de Regio(cont.)

    O Assumir que toda a imagem cabe na memriaprincipal

    O Algoritmo timo pode criar um n da quadtreeapenas se este for necessrio

    O caso de quatro ns-folha irmos com amesma cor pode ser eliminado se os pixels daimagem forem consultados

    O Rotina ConstriN

    Recebe como parmetro o conjunto de pixelscorrespondente regio do n

    Se uma regio 1x1, retornar a cor do pixel

    Se uma regio contendo mais de um pixel,chamar ConstriN recursivamente para as 4subregies

    O Se todas as 4 subregies so da mesma corc (no cinza) retornar c

    O Seno

    Construir os ns-folha (filhos)

    Construir o n cinza (pai)

    Retornar cinza

  • Converso de Raster em Quadtree de Regio(cont.)

    O Detalhes de implementao

    Se a imagem no um quadrado cujo lado uma potncia de 2,

    O Assumir a menor potncia de 2 que contma imagem

    O Ao acessar um pixel fora da imagem,assumir cor branca

    Ao criar uma representao quadtree componteiros em memria

    O no necessrio criar tantos ns brancos epretos quantos sejam o nmero de pixels daimagem, bastam um n branco e um npreto

    O O valor de retorno de ConstroiN umponteiro

    O ConstriN s constroi ns cinza

    O Complexidade

    ConstroiNo chamado apenas uma vez por n

    O(n2)

  • Representao sem ponteiros de quadtrees

    O Somente os ns folha so representados

    O Cada n-folha representado por um nmero embase 4 (P) e um indicador de altura na rvore (h).

    Indicam o caminho desde a raiz at a folha

    P= , onde apenas os hprimeiros dgitos (da esquerda para a direita)so significativos

    O Se a imagem binria (branco e preto), ns brancosno precisam ser representados

    O Representao apropriada para armazenamento emdisco

    Usar uma estrutura para acesso sequencialindexado (e.g., B-tree)

    Ordem das chaves definida por P

    No h necessidade de testar h

    O Um n preto no pode ser pai de outro

    Ordem corresponde curva Z que passa portodos os ns pretos da quadtree

  • Quadtree de pontos

    O Propriedades gerais

    Extenso multidimensional da rvore de buscabinria

    Pontos so armazenados em ns internos

    Depende da ordem de insero dos pontos

    Para N pontos inseridos segundo umadistribuio randmica uniforme, a alturaesperada da rvore O(log N)

    Estrutura prpria para armazenamento emmemria

    O Insero de pontos

    Algoritmo ingnuo: Semelhante inseroem rvores binrias

    Problema de balanceamento: Assegurar alturalogaritmica

    Se os pontos so conhecidos de antemo,orden-los segundo x ou y e escolher asmedianas como razes das subrvores

  • Quadtrees de pontos (cont.)

    O Insero de pontos (cont.)

    Verso dinmica de insero balanceada

    O rebalancear a rvore sempre que umcritrio de balanceamento falhar

    O utiliza a idia do balanceamento estticoapenas na subrvore que infringiu o critrio

    O Deleo de pontos

    Idia do algoritmo anlogo em rvores binriasno pode ser usada: nem sempre existem ns-folha que podem substituir o n sendo deletado

    Soluo ingnua: reinserir todos os pontos dasubrvore cuja raiz o n deletado

    Soluo melhorada: descobrir um bom n-folha candidato e reinserir apenas os ns quetornariam a quadtree invlida

    ponto deletado

    pontosubstituto

    pontos nessa regiosero reinseridos

  • Quadtrees de pontos (cont.)

    O Deleo de pontos (cont.)

    A escolha do ponto substituto

    O 4 candidatos naturais (1 em cada quadrante)

    O Para achar o candidato do quadrante NW deP, caminhar sempre para SE do filho NWde P

    O Para escolher Q, o melhor dos 4 candidatos:

    Critrio 1: escolhendo Q nenhum dosoutros 3 candidatos precisariam serreinseridos

    Critrio 2: Q minimiza a reasombreada (mtrica Manhattan entre Pe Q). Neste caso, no mximo 1 outrocandidato estaria na rea sombreada

    Problema de deleo pode ser aliviado com ouso de uma pseudo-quadtree

    O Pontos so armazenados nas folhas

    O Ns internos so pontos que no fazemparte da massa de dados

  • Quadtrees de Pontos (cont.)

    O Busca

    Estrutura apropriada para consultasenvolvendo proximidade

    Exemplo: todos os pontos que intersectam umretngulo R

    O As subrvores c/ raiz em filhos de P aserem pesquisadas dependem da posio deP com relao a R:

    NW NE

    SESW

    NW eNE

    NE eSE

    NW eSW

    SW e SE

    todas

    Exerccio: Como realizar a busca do ponto maisprximo de um dado ponto de consulta Q?

  • K-D trees

    O Propriedades gerais

    K refere-se dimenso do espao de pontos

    Cada ponto inserido corta o espao em duassubregies segundo um hiperplanoperpendicular ao i simo eixo coordenado(discriminante)

    O eixo discriminante varia alternadamente medida que se desce na rvore (x, y, x, y, etc)

    Cada n s necessita de k valores para as ascoordenadas do ponto e mais dois ponteirospara as subrvores. No necessrio armazenaro discriminante

    Tem caractersticas semelhantes quadtree depontos

    O Apenas uma comparao necessria paracada n da rvore

    O Desvantajoso em arquiteturas paralelas(pode-se testar K valores simultaneamente)

  • K-D trees (cont.)

    O Insero de pontos

    Algoritmo ingnuo anlogo ao das rvores debusca binria e ao das quadtrees de pontos

    Problema de balanceamento tambmsolucionado de forma anloga

    K-D tree adaptativa anloga pseudo-quadtree de pontos (massa de dados esttica)

    O Pontos so guardados nas folhas

    O Ns internos correspondem a hiperplanosque divide os pontos em subconjuntos decardinalidade aproximadamente igual

    O Ns internos ocupam espao invariante emrelao a K

    O Relaxa-se a alternncia de discriminantesem favor de uma melhor distribuioespacial entre os pontos

    ex.: escolhe-se o hiperplanoperpendicular ao eixo de maiordimenso do MBR de todos os pontos

  • K-D trees (cont.)

    O Deleo de pontos

    Semelhante deleo em rvores binrias

    Se o discriminante do n P a ser deletado x,devemos substituir P pelo n Q direita de Ptal que Qx mnimo e, finalmente, deletar P

    Porque no o n Q esquerda de P com valormximo Qx ? Pode haver mais de um, e aconveno que ns esquerda de P tmvalores estritamente menores que Px

    Se a subrvore direita de P vazia, escolhe-seo n Q esquerda de P com Qx mnimo, troca-se P por Q com a subrvore esquerda de Pagora posicionada direita de Q e deleta-se Qde sua antiga posio recursivamente

    P

    Q

    Q

  • K-D trees (cont.)

    O Deleo de pontos (cont.)

    Cuidado na busca de um ponto substituto: elepode estar somente em um dos ramos de umasubrvore se o discriminante desta for x, maspode estar em qualquer ramo se o discriminantefor y

    Complexidade de buscar um substituto:O(N1-1/K)

    O Busca

    Algoritmos semelhantes quadtree de pontos

    Range search tem complexidade O(K . N1-1/K)(no bvio)

    O Anlise no leva em conta o custo dereportar cada ponto, mas apenas o custo dedescer nas subrvores que no estointeiramente contidas na regio sendobuscada

  • Range Trees

    O Visam solucionar em tempo timo o problema debusca de pontos incluidos num intervalo N-dimensional (Um retngulo em 2-D)

    O Uma Range Tree em 1-D simplesmente umarvore binria balanceada com os pontosarmazenados nas folhas e encadeados entre siformando uma lista

    5 25 35

    50

    60 80 85 90

    25

    50

    80 90

    8535

    60

  • Range Trees (cont.)

    O Uma Range Tree em 2D uma Range tree deRange trees. Cada n interno da RT para (x) contmuma subrvore que uma RT para (y)

    A B C

    50

    E F G H

    25

    D

    80 90

    8535

    60

    5,45 25,35 35,40 50,10 60,75 80,65 85,15 90,5

    B A D C F E H G

    D B C A H G F E

    H D G B C A F E

  • Range Trees (cont)

    O Algoritmo p/ busca de um intervalo [Lx , Rx][Ly , Ry]

    Buscar Na RT (x)

    O LXP: o menor n c/ x LxO RXP: o maior n c/ x Rx

    Se LXP e/ou RXP esto no intervalo, reportar

    Encontrar Q, o ancestral comum mais prximo

    PATH_LXP o conjunto de ns internos desdeQ (exclusive) at LXP

    Analogamente para PATH_RXP

    Para todo n P em PATH_LXP tal queLEFT(P) tambm est em PATH_LXP

    O Buscar na RT(y) de RIGHT(P) os ns cujosy esto no intervalo [Ly , Ry] e reportar

    Para todo n P em PATH_RXP tal queRIGHT(P) tambm est em PATH_RXP

    O Buscar na RT(y) de LEFT(P) os ns cujos yesto no intervalo [Ly , Ry] e reportar

  • Range Tree (cont.)

    O Subrvores RT(y) pesquisadas para um dadointervalo [Lx,Rx],[Ly,Ry]

    Q

    Lx Rx

  • Priority Search Tree

    O Semelhante rvore de busca normal em 1D,exceto que cada n interno tambm armazena umponteiro p/ n folha c/ valor mximo de y entre seusdescendentes, desde que esse valor no tenhaaparecido em um de seus ascendentes

    O Prpria para buscas em intervalos [Lx , Rx][Ly , )

    A B C

    50

    E F G H

    25

    D

    80 90

    8535

    60

    5,45 25,35 35,40 50,10 60,75 80,65 85,15 90,5

    (35) (40)

    (45)

    ( ) (15)

    (75)

    (65)

    E

    A

    B C - G

    F

  • Priority Search Tree

    O Algoritmo de busca p/ intervalo semi-infinito [Lx , Rx][Ly , ) Descer na rvore buscando Q, ancestral comum

    mais prximo de LXP e RXP

    O Seja P o n folha associado com o n sendoexaminado (T)

    O Terminar se Py< Ly pois no hdescendentes de T com y > Ly

    O Terminar se P nulo, pois subrvore j foitoda examinada e/ou reportada

    O Caso contrrio, reporte P se Px contido nointervalo [Lx , Rx]

    Uma vez encontrado Q, determinerecursivamente onde continuar a busca

    O RIGHT(T) se T e RIGHT(T) no caminho direita de Q at LXP

    O LEFT(T) se T e LEFT(T) no caminho esquerda de Q at RXP

    O Seno, em ambos RIGHT(T) e LEFT(T)

    O (log2 N + F) tempo para buscar N itens e Frespostas

  • Quadtree de Regio e mtodos afim

    O Dividem o espao em regies previamentepreestabelecidas e no estabelecidas por pontospreviamente inseridos la Point Quadtree

    O Variantes:

    MX-Quadtree:

    O Diviso tipo quadtree de regio

    O Assume domnio discreto (coordenadasinteiras entre 0 e 2n) e pontos distintos

    O Pontos so sempre armazenados em ns-folha de nvel mais baixo possvel

    O No h ns brancos, apenas cinzas e nsfolha contendo pontos

    O Insero pode requerer at n subdivises

    O Collapsing acontece apenas emquadrantes de onde foi deletado o ltimoponto

    O Boa para matrizes esparsas

    O Ruim quando o domnio est muitopopulado por pontos (um grid melhor)

  • Quadtrees de regio e mtodos afim (cont.)

    O Exemplo: Algoritmo para achar a transposta de umaMX-quadtree:

    Transpose (MX)

    O If MX n folha, retornar

    O Trocar ponteiro NE com ponteiro SW

    O Transpose (filho NW)

    O Transpose (filho NE)

    O Transpose (filho SW)

    O Transpose (filho SE)

  • Quadtree de Regio e mtodos afim (cont.)

    O Variantes (cont.)

    PR-quadtree

    O Idntica Region quadtree exceto que noh ns brancos e ns pretos correspondem apontos

    O Subdiviso ocorre sempre que mais de umponto aparece num mesmo quadrante

    PR-bintree (tambm chamada PR-k-d-tree)

    O Semelhante a PR-quadtree, mas divisoocorre de forma binria alternando entre oseixos

    BD-tree (ou BANG file)

    O PR-quadtree onde ns cinza com apenas umfilho so comprimidos

    O Semelhantemente, uma BD-k-d tree usacompresso em uma PR-bintree (PR-k-d-tree)

  • Quadtree de Regio e mtodos afim (cont.)

    O Exemplo: PR-bintree (PR-k-d-tree)

  • Quadtree de regio e mtodos afim (cont.)

    O BD-bintree (BD-k-d-tree)

  • Quadtree de regio e mtodos afim (cont.)

    O Usando compresso de caminho, as regies nonecessariamente correspondem a hiperretngulos

    DenChi

    Oma

    Tor

    Buf

    MobAtl

    Mia

    000

    001101

    100

    No001101

  • Mtodos de repositrios (buckets)

    O Estruturas com ponteiros so (geralmente)ineficientes para armazenamento em disco

    ponteiros podem atravessar a fronteira entre umbloco de disco e outro

    O Uma tcnica geral usar repositrios (buckets) paraarmazenar os pontos (ou outros tipos de dadosespaciais)

    Um repositrio corresponde a um conjunto depontos espacialmente prximos e que cabemnum bloco de disco

    Exemplo mais simples: grid regular

    Problemas fundamentais:

    O Como organizar a informao a respeito daregio do espao correspondente a cadabucket

    O O que fazer quando um bucket transborda(overflow)

    O Como evitar buckets com poucos pontos(underflow)

  • Mtodos hierrquicos com repositrios

    O Correspondem aos mtodos hierrquicos vistosanteriormente, porm ocm o critrio de subdivisorelaxado para que cada subregio contenha cpontos, no mximo (ao invs de apenas 1)

    O Tm o efeito de diminuir a ligao entre a altura darvore e a distncia entre pontos individuais

    Altura dependente da distncia entre conjuntosde pontos

    Efeito ainda mais pronunciado com BD-trees

    til para aplicaes onde deseja-se focalizargrupos depontos prximos (clusters)

    O bucket adaptive k-d tree(DynamicallyQuantized Space -DQS)

    O Dynamically Quantized Pyramid

    O Mais utilizados em GIS e BD espaciais

    R-tree e suas variantes

    PMR quadtree (linear)

  • Mtodos no hierrquicos de repositrios

    O Identidade do bucket pode ser determinada por

    Uma funo de hash

    O Bucket B corresponde aos pontos P tais queH(P) = B

    O medida que o nmerode pontos cresce, oespao de endereamento tem que seraumentado

    Reinsero de pontos

    O Ex.: linear hashing, spiral hashing

    Regio correspondente a uma clula de umagrade

    O grid file

    O EXCELL

    O Problemas de overflow so geralmente tratadosatravs de buckets auxiliares encadeados ao bucketprincipal (apontado pelo diretrio ou funo dehash)

  • Linear Hashing

    O Esquema de hashing onde o espao deendereamento cresce um bucket (endereo) porvez

    O Utiliza duas funes de hash para m buckets

    1

    0

    m-2n

    2n -12n

    m-1

    hn(K)

    hn+1(K)

    hn+1(K)hn+1(K) = K mod 2n+1

    hn(K) = K mod 2n

    2n

  • Linear Hashing (cont.)

    O Quando m uma potncia de 2, todos os bucketsso endereados por hn

    O Ao se usar linear hashing para armazenar pontos, preciso utilizar um esquema de linearizao doespao (bit interleaving, por exemplo), isto ,K = f(x,y)

    O A criao de um novo bucket ocorre quando a taxade utilizao ultrapassa um limite pr estabelecido

    O Taxa de utilizao = nmero de pontos / nmero deentradas vazias (tanto em buckets primrios quantoem buckets de overflow)

    O Ao se criar um novo endereo (m), os pontosresidentes no primeiro endereo correspondente ahn so reinseridos e buckets de overflow que setornem desnecessrios so desalocados

    O Se buckets de overflow so desalocados, a taxa deutilizao pode crescer novamente e provocar acriao de um novo endereo

  • Linear Hashing (cont.)

    O Ao se criar um novo endereo, todos os endereosantigos, exceto um, continuam sendo acessadospelas mesmas funes de hash

    O Nota: no h relao entre os buckets que contmos pontos que sero reinseridos e aqueles que estomais cheios

    O Aps o espao de endereos ser dobrado, todos ospontos nos buckets anteriormente existentes terosido reinseridos

    O Em se tratando de pontos, as funes de hashoriginais so ineficientes em manter pontosprximos em buckets prximos

    Soluo, antes de aplicar a funo de hash,inverter a ordem dos bits, de maneira que osmais significativos sero afetados pelo operadormod

    O Qual funo de hash deve-se aplicar primeiro?

    Resposta: hn+1 Se um dado K satisfaz as condies para as

    duas, hn+1 deve ser usada sob pena de K nomais ser encontrado quando houver entre 2n+1 e2n+2 endereos

  • Linear Hashing (cont.)

    O Exemplo usando a massa de dados padro comlinearizao usando bit-interleaving

    Denver (0,3) 10

    Omaha (2,2) 12

    Chicago (2,3) 14

    Mobile (4,0) 16

    Miami (7,0) 21

    Atlanta (6,1) 22

    Buffalo (6,5) 54

    Toronto (4,6) 56

    O Exemplo de clculo:

    0 1 0 0

    0 1 1 0

    0 1 1 00 1 0 0

    4

    6

    38H = 56

  • Linear Hashing (cont)

    O Assumir 1 pontos por bucket, utilizao mxima 66%

    0%

    0

    chi

    50%

    0

    chi

    mob

    100%

    0

    chi

    50%

    0

    mob

    1

    chi

    75%

    0

    mob

    1

    tor

    chi

    50%

    0

    mob

    1

    tor

    2

    chi

    67%

    0

    mob

    1

    tor

    2

    buf

    chi

    50%

    0

    mob

    1

    tor

    2

    buf

    3

    chi

    50%

    0

    mob

    1

    tor

    2

    buf

    3

    den

    chi

    50%

    0

    mob

    1

    tor

    2

    buf

    3

    denoma

    chi

    58%

    0

    mob

    1

    tor

    2

    buf

    3

    denoma

    atl

  • Linear Hashing (cont.)

    chi

    67%

    0

    mob

    1

    tor

    2

    buf

    3

    denoma

    atl

    mia chi

    67%

    0

    mob

    1

    tor

    2

    buf

    3

    den

    oma

    atl

    mia

    4

    chi

    57%

    0

    mob

    1

    tor

    2

    buf

    3

    den

    oma

    atl

    mia

    4 5

  • Grid File

    O Mtodo de repositrio

    O Espao dividido numa grade cujos hiperplanosdivisores no precisam ser estar em posiesregulares

    O Cada clula da grade corresponde a um nicobucket

    O Cada bucket pode corresponder a mais de umaclula, porm a regio definida por todas elasprecisa ser convexa (hiper-retngulo)

    O Estrutura de acesso composta de dois elementos

    Um diretrio (array) que mapeia clulas embuckets (armazenado em disco)

    Escalas lineares (uma para cada dimenso),onde as cotas dos hiperplanos de partio soarmazenados (mantido em memria)

    O Buckets armazenam tipicamente de dezenas amilhares de pontos (um bloco)

    O Principal virtude

    Acesso a cada ponto usando apenas 2 acessos adisco

  • Grid file (cont.)

    x1 x2

    y2

    y1

    D

    A C F

    E

    BB

    ED

    Diretrio

    D B B

    D E E

    A C F

    x3x0

    y0

    y3

    y2y1y0 y3

    Escalas Lineares

  • Grid File (cont.)

    O Algoritmo de insero

    Localizar, usando o diretrio e as escalas, aclula onde o ponto deve ser inserido

    Se o bucket apontado pela clula ainda temespao, inserir ponto e terminar.

    Se o bucket com overflow atravessa algumafronteira das escalas lineares, ele compartilhado por mais de uma clula.

    O Criar um novo bucket

    O Repartir os pontos entre os dois buckets

    O Tentar a insero novamente

    Se o bucket com overflow apontado porsomente uma clula

    O Criar um novo hiperplano de subdiviso emum dos eixos coordenados

    O Atualizar a escala correspondente

    O Partir todas as clulas atravessadas pelohiperplano e atualizar o diretrio

    O Tentar a insero novamente

  • Grid file (cont.)

    O Exemplo

  • Grid File (cont.)

    O Implementao eficiente do diretrio fundamental

    O Inicialmente, comum operaes de inserorequererem o refinamento da grade (hiperplanos)

    O Mais tarde, o mais comum haver bucketscompartilhados com varias clulas

    O Analogamente, operaes de deleo podemrequerer que buckets sejam desalocados sendo ocontedo repartido com buckets vizinhos

    O Deleo tambm pode requerer que hiperplanossejam removidos

    A

    B

    A

    C

    C

    D

    D

    G

    F

    EDC

  • EXCELL

    O Semelhante ao Grid File

    O Partio do espao entretanto, regular, la bintree

    O No precisa de escalas e acesso ao diretrio maisfcil

    Pode ser usado clculo de endereo

    O Operao de splitting pode requerer que o diretrioseja dobrado

    O EXCELL tambm tem semelhana com linearhashing

    Diretrio ao invs de funo de hash

    Linear Hash requer mais buckets pois no hgarantia que o bucket que d overflow o que partido e redistribuido

    EXCELL no tem buckets de overflow

  • R-tree

    O rvore balanceada nos moldes da B+-tree

    O Cada n (bloco de disco) contm uma coleo depares retngulo/apontador

    O Ns internos:

    apontador para subrvore

    retngulo o MBR de todos os objetos nasubrvore

    O Ns-folha

    apontador para dado espacial

    retngulo o MBR do objeto espacial

    O Se M a capacidade de um n (nmero mximo deentradas), estabelece-se um limite mnimom

  • R-trees (cont.)

    AB

    CD

    E

    F G

    H

    I

    J

    A B C F I J D E G H

    1

    2

    3

    4

    5

    6

    7

    1 2

    3 4 5 6 7

  • R-trees (cont.)

    O Busca (dado que intercepta um ponto P)

    Descer todas as subrvores cujo retngulocontm P

    O Insero de um dado E

    Escolher o n folha L onde E ser inserido

    O Seja N o n raiz

    O [1] Se N folha, retornar N

    O Escolher o filho F de N que resulte nomenor crescimento do retngulo de F

    Se h empate, escolher o filho commenor rea

    O N F; goto [1] Se L tem espao suficiente, instale E em L;

    seno, divida o n L em dois ns folha L e LLcontendo todos as entradas de L e mais E

    Subir na rvore a partir de L ajustando osretngulos dos ns-pai

    Se um segundo n LL foi criado, inserir umaentrada contendo o MBR de LL e um ponteiropara LL no n pai de L usando a mesma tcnicausada para inserir E no n folha

  • R-trees (cont.)

    O Deleo de uma entrada E

    Procurar o n folha L contendo E a partir da raiz

    O Nota: mais de uma subrvore pode ser visitadapara cada n

    Remover E de L

    Propagar as mudanas subindo na rvore

    O Defina P, um conjunto de ns com underflow

    O Inicialize N LO [1] Se N a raiz da rvore, termine este passo

    O Inicialize P pai(N)O Remova a entrada de N de P

    O Se N tem menos de m entradas, inclua N em P;seno, ajuste o MBR de N em P

    O N P; goto [1] Reinserir todos as entradas de todos os ns em P

    O Nota: Tomar cuidado em reinserir entradas emsuas alturas originais na rvore

    Se a raiz tiver agora apenas uma entrada, delete-ae mova o filho nico para a raiz

  • R-trees (cont.)

    O Deleo pode tambm ser feita semelhana doprocesso anlogo em B-trees

    N com underflow redistribuido em n irmos

    O Usar o irmo que ter menor acrscimo emsua rea

    Reinsero mais simples e tem a vantagem derearrumar a rvore

    Ambas as alternativas podem requerer que nstenham que ser divididos

    O Algoritmo para diviso de ns

    Requerido para insero e deleo

    M+1 entradas so repartidas em duas colees(dois ns) tais que

    O ambos tenham entre m e M entradas

    O a diviso satisfaa um critrio heursticoque minimize a complexidade de novasoperaes de busca

    critrio de Guttman: MBRs das duascolees devem ser os menorespossveis (rea mnima)

  • R-trees (cont.)O Diviso de Ns (cont.)

    Algoritmo exaustivo

    O tempo exponencial em M

    O imprtico

    Algoritmo quadrtico

    O Escolher como sementes o par de entradas(i,j) cujo MBR conjunto desperdia maisrea com relao aos MBRs individuais

    desperdcio = area (MBR (Ri,Rj))-areaarea (MBR (Ri))-area(MBR(Rj))

    custo = O(M2)

    O [1] Escolher entre as entradas restantes aque exibe maior preferncia por um dosdois grupos

    di = acrescimo de area requerido parainserir entrada no grupo i.

    escolher a entrada para a qual |di-dj| maximo

    O Repetir [1] ate que todas as entradasestejam distribuidas ou ate que um grupoesteja to vazio que requeira todas asentradas restantes

  • R-trees (cont.)

    O Diviso de Ns (cont.)

    Algoritmo Linear

    O Semelhante ao algoritmo quadratico

    O Escolha das sementes: escolher o par amaior separacao normalizada em qualquerdos eixos

    Ex.: separacao em x.

    Assumir xmax(j) < xmin(i)

    sep = (xmax(j)-xmin(i)) / (xmax(i)-xmin(j))

    O Escolha da proxima entrada a serdistribuida em um dos grupos

    Escolher qualquer uma

    Inserir no grupo que ter menorincremento de area

  • R*-trees

    O Beckmann et al identificam 4 parmetros de otimizaopara o problema de distribuio de retngulos nos ns

    A rea de cada retngulo deve ser mnima

    O reduz a rea de desperdicio entre o MBR do ne o conjunto de retngulos includos no n

    A rea de interseo entre retngulos em cada nvelda rvore deve ser mnima

    O reduz a probabilidade de ter que descer emdiversas subrvores durante buscas

    O permetro (margem) de cada retngulo deve sermnimo

    O faz com que os MBRs sejam aprox. quadrados

    O quadrados so mais facilmente agrupados queretngulos

    A taxa de utilizao deve ser mxima

    O ns cheios levam ao acesso de menos ns

    O critrio importante em range queries comintervalos grandes

  • R*-trees (cont.)

    O Problemas da R-tree de Guttman

    O critrio de rea (1) o nico contemplado, oque leva diminuio das res de interseo(2), mas no a retngulos approx. quadrados (3)ou a boas taxas de utilizao (4)

    O algoritmo de escolha de sementes privilegiasementes pequenas

    O Leva a retngulos no quadrados

    O Uma vez que um dos grupos tem um MBRgrande, provavel que este seja escolhidonovamente para entradas subsequentes, poiso incremento de rea fica relativamentepequeno

    Se durante a diviso, um grupo escolhidoraramente, a uma certa altura todas as entradasrestantes so atribuidas a ele sem levar emconta qualquer criterio geomtrico

    problemas podem resultar em grupos comexcessiva rea de interseo ou distribuidosdesigualmente (baixa taxa de utilizao)

  • R*-trees (cont.)O Algoritmo modificado para escolher a subrvore onde

    inserir uma dada entrada

    Se o n sendo considerado aponta para ns-folha

    O Escolher a folha que resultar em menorincremento da rea total de interseo no npai

    O Se empatar escolher a folha que resultar emmenor incremento de rea

    O Se empatar escolher a folha com menor rea

    Nos outros casos, agir como na R-tree

    Algoritmo quadrtico, porm custo pode serreduzido se nem todos os retangulos foremconsiderados

    O ordenar os entradas por incremento de rea

    O aplicar o algoritmo apenas s primeiras pentradas (tipicamente 32)

    Experimentos indicam melhor performance pararange queries com retngulos pequenosem massasde dados com pequenos retngulos ou pontos

    Obs.: Clculo da rea de overlap

    overlap( area(E E Eki k i k

    k i) ).. ,

    = =

    1

  • R*-tree(cont.)

    O Algoritmo modificado de diviso de ns

    Para cada eixo

    O ordenar retngulos uma vez pelo valor mnimo eoutra pelo valor mximo

    O para cada ordenacao, computar M-2m+2distribuies. Distribuio k

    Grupo 1: as primeiras (m-1)+k entradas

    Grupo 2: as entradas restantes

    O para cada ordenao computar:permetro(MBR(Gr.1))+permetro(MBR(Gr.2))

    O somar os valores de permetro obtidos paratodas as distribuies

    Escolher o eixo que resultar no menor valor total depermetro e neste eixo computar para cadadistribuio:area(MBR(Gr.1) MBR(Gr.2))

    Escolher a distribuio que resultar em menor reade interseo. Se empatar, escolher a que resulte emarea(MBR(Gr.1))+area(MBR(Gr.2))

  • Colees de Retngulos

    O Colees de retngulos so massas de dadostipicamente usadas no desenho de mscaras VLSI

    Processamento desses dados requeremoperaes tais como verificao de proximidadeentre dois caminhos ou de conectividadeeltrica entre dois retngulos

    Retngulos se caracterizam por ser finos ecompridos

    O Tambm usadas para aproximar a distribuioespacial de outros dados, isto , cada retngulo oMBR de um dado espacial. Operaes tpicas

    detectar pares de candidatos que podemsatisfazer um determinado predicado num joinespacial

    detectar adjacncia entre dados. Por exemplo,se um mapa poligonal especificado por umacoleo de segmentos de reta, deseja-sedeterminar a conectividade entre essessegmentos

    range search: busca de todos os dados queintersectam um retngulo

  • Mtodos de Varredura

    O Em ingls: plane sweep

    O A idia geral dividir um problema n-dimensionalem diversos problemas (n-1)-dimensionais

    O Tal diviso conseguida deslocando-se umhiperplano (de dimenso n-1) no espao n-dimensional e detectando-se quais retngulosinterceptam o plano (retngulos ativos)

    O A varredura normalmente precedida por um sortdos valores mnimos e mximos de cada retngulona direo do eixo de varredura. Cada um dessesvalores corresponder a um evento de insero oudeleo do retngulo no hiperplano de varredura

    O O plano de varredura representado por umaestrutura de dados que seja adequada para ainsero e deleo de retngulos. Se os retngulosoriginais residem em espao bidimensional, aestrutura deve ser prpria para representarintervalos em uma dimenso. Exemplos:

    rvores de segmentos (segment trees)

    rvores de intervalos (interval trees)

  • rvores de Segmentos Unitrios

    O A rvore de segmentos corresponde a umasofisticao da rvore de segmentos unitrios que,por sua vez nada mais do que uma variao daquadtree de regio em uma dimenso:

    Ns pretos (folhas) so trechos do segmento

    Ns pretos no ltimo nvel da rvore (maisbaixo) correspondem a pixels em uma dimenso

    Ex: Segmento 3-11

    0 3 10 1611

  • rvores de Segmentos

    O A rvore de segmentos unitrios s funciona paraum segmento por vez e requer uma discretizao doespao. A rvore de segmentos elimina essasrestries

    O Dados N segmentos, ordena-se as coordenadas desuas extremidades (at 2.N valores): yo ,y1 ym

    O Cada n terminal i da rvore corresponde aointervalo [yi , yi+1 )

    O Se um n est contido num intervalo A, mas seu paino, ento ele rotulado com A

    O Todos os rtulos de um dado n so armazenadosnuma lista duplamente encadeada

    O Insero feita de forma anloga da rvore desegmentos unitrios, exceto que o rtulo tem queser inserido na lista encadeada

    O Deleo requer uma estrutura auxiliar ligando cadasegmento S a cada n da rvore rotulado com S

    Um array de listas de ponteiros

  • rvores de Segmentos

    O Espao:O (N log N)

    O Tempo para inserir um segmento: O (log N)

    O Tempo para deletar um segmento: O (log N)

    A: [6:36)B: [34:38)C: [21:36)D: [23:27)E: [3:8)F: [15:19)G: [11:14)

  • rvores de Segmentos (cont.)

    O Procedimento para achar todos as intersees entreos retngulos

    Ao adicionar a borda mnima S = [l,r) de umretngulo R na estrutura verificar

    O [1] Todos os segmentos que comeam antesde l e terminam depois de l

    O [2] Todos os segmentos que comeam entrel e r

    Problema [1] pode ser solucionado com rvorede segmentos em O(logN+F)

    O Fazer uma busca do menor segmentopossvel que comea em l, anotando osrtulos dos segmentos encontrados nocaminho da raiz at a folha

    Problema [2] solucionado com rvore desegmentos em O(N)

    O necessario visitar todos os ns folha entrel e r

  • rvore de Segmentos (cont.)

    Problema [2] pode ser resolvido em O (log N)usando uma range tree (espao O(N))

    O Procura-se todos os pontos de incio desegmento entre l e r

    O O problema de deteco de todos as interseesentre todos os retngulos pode ser resolvido emtempo O(N.logN+F) e espao O (N) usando-se umarvore de intervalos ou uma priority search tree

  • rvore de intervalos

    O Diferentemente da rvore de segmentos, cadaintervalo marcado apenas uma vez na rvore

    Segmento S=[l,r) marcado apenas no ninterno que seu ancestral comum maisprximo

    O N interno contm discriminante que um valorentre a maior folha descendente esquerda e amenor folha descendente direita

    L1 R1

    a b

    a+b/2

    L2 R2

    L1R1 R1R2

  • rvore de Intervalos (cont.)

    O Estrutura secundria:

    Cada n interno V aponta para os pontos mnimos (Li)/ mximos (Ri) de cada segmento I para o qual V oancestral mais prximo encadeados em ordemcrescente/decrescente

    O Estrutura terciria:

    Cada n interno aponta para o n ativo mais prximoda subrvore esquerda/direita

    Um n ativo aquele que possui estrutura secundriaou seus dois filhos tenham descendentes ativos

  • rvore de Intervalos (cont.)

    O Algoritmo de insero de segmento [L,R):

    Buscar V, o n ancestral comum mais prximodas duas extremidades do segmento e inseri-lasna sua estrutura secundria

    O Algoritmo para reportar intersees

    1) Comear na raiz e buscar V

    2) Comear em V e localizar L na subrvore esq.

    3) Comear em V e localizar R na subrvore dir.

  • Curvas

    O Importncia

    Caracterizam fronteiras de dadosbidimensionais (ex.: regies)

    Dados unidimensionais (ex.: rede de rios,estradas, ferrovias, etc)

    O Representao

    exata (algbrica)

    O Forma implcita (curva em 2D)

    f (x,y) =0

    O Forma implcita (curva em 3D)

    f (x,y,z)=0

    g (x,y,z)=0

    O Forma paramtrica (curva em nD)

    xi=fi (t)

    aproximada

    O linhas poligonais

    O splines (conjunto de curvas mais simplesemendadas)

  • Estruturas de dados para curvas

    O Usadas em representaes de linhas poligonais emapas poligonais

    Um mapa poligonal uma diviso de umespao bidimensional em regies atravs delinhas poligonais

    O Estruturas hierrquicas visam diminuir acomplexidade de certas operaes:

    determinar se duas curvas se interceptam

    determinar se duas curvas se tocam

    realizar a costura de curvas (mapaspoligonais)

    O Apanhado de mtodos:

    Estruturas especficas para curvas (strip-trees,arc-trees, bspr trees)

    Estruturas baseadas em quadtrees de regio(edge quadtree, line quadtree, PM- e PMR-quadtrees)

    Estruturas oriundas da GeometriaComputacional (K-structure, Layered DAG)

  • Strip Trees

    O Curva aproximada por uma rvore binria ondecada n corresponde a um retngulo limitante (noalinhado com os eixos) de um trecho da curva

    O As folhas correspondem a aproximaessuficientemente prximas (retngulos finos osuficiente)

    O Retngulos so orientado segundo o segmento dereta que une o ponto inicial e final da curva outrecho de curva

    O Curva dividida em trechos nos pontos em que acurva toca o retngulo envolvente

    Folhasda rvore

  • Strip trees (cont.)

    O Quando existemais de um ponto de diviso,escolhe-se o mais afastado das extremidades dacurva

    O Observar que o retngulo limitante no necessariamente o de menor rea

    O Construo bottom-up alternativa:

    iniciar com strips correspondentes aossegmentos de reta

    tomar strips dois a dois e formar strips maioresat ter-se um nico strip

    O Problemas podem aparecer quando a curva

    [1] no toca dois lados opostos do retngulo

    fechada

    no conexa

    O Soluo

    relaxar o requerimento [1]

    iniciar com dois ou mais retngulos

    usar um flag para indicar se a strip regular ouno

  • Strip trees (cont.)

    O Se uma strip tree regular, pode-se detectar pontosde interseo entre duas curvas em tempologaritmico usando as propriedades dos retnguloslimitantes

    interseo impossvel interseo certa

    interseo possvel interseo possvel

  • Arc Trees

    O Semelhante strip-trees, mas curva aproximadapor cordas de arcos

    O Usa uma parametrizao de linha da curva

    O Se l o comprimento total da curva, a primeirasubdiviso feita no ponto que divide a curva emdois trechos de comprimento l/2

    O Se a subdiviso for at o nvel k cada trechoaproximado tem comprimento l/2k

    O Determinao do comprimento da curva pode sercomplicado

    Solues analticas (podem resultar emintegrais elpticas)

    Solues numricas

    C0C1

    C1

    C2

    C2

    C2C2

  • Arc Trees (cont.)

    O A parametrizao por corda de arco permite que seestime o lugar geomtrico do arco por uma elipse,j que sabemos de antemo o comprimento dotrecho de curva

    O Se a curva na verdade uma linha poligonal, maissimples fazer a subdiviso em vrtices da linha,porm cada n ter que incorporar o valor docomprimento do trecho de curva associado

  • BSPR trees

    O Binary Searchable Polygonal Representation

    O Ns so retngulos alinhados com os eixos

    O Ns-folhas contm trechos monotnicos em x e yda curva

    O Representao construida bottom-up

    levantar trechos monotnicos da curva eencapsul-los em retngulos

    juntar retngulos adjacentes em retngulosmaiores

  • Line Quadtrees

    O Na verdade, apenas uma quadtree de regioestendida para lidar com um nmero arbitrrio decores (regies)

    O Assume-se fronteiras alinhadas com os eixoscoordenados, isto , cada regio um polgonoortogonal

    O Subdiviso processa-se sempre que um quadrantecontm pixels de mais de uma regio

    O Ns-folha contm, alm do indentificador da regio qual pertence, um flag para cada aresta doquadrante, que ligado sempre que tal arestacorresponde a uma fronteira entre duas regies

    O Na line quadtree original, ns internos no precisamconter os flags correspondentes s fronteiras, masisso ajuda se formos reconstruir a fronteira de umaregio

    O A reconstruo da fronteira de uma regio precisautilizar tcnicas de procura de vizinhos (neighborfinding)

  • Line quadtrees (cont.)

    O Mapa Poligonal

    O Line quadtree correspondente

  • Busca de vizinhos em quadtrees

    O Os vizinhos de um n P de uma quadtree nonecessriamente so vizinhos na rvore

    O Dada uma direo I que corresponde a um lado deP (I.e. N,S,E,W), pode haver mais de um vizinho Ide P. Neste caso, esses vizinhos so menores que P

    O Dada uma direo I que corresponde a um vrticede P (I.e. NW,NE,SW,SE), h no mximo umvizinho I de P (pode no haver vizinho se P est nafronteira da quadtree)

    O Se o vizinho na direo I de P maior que P, ento,o vizinho na direo oposta a I menor ou igual a P

    O Se nos restringirmos a vizinhos maiores ou iguais aP, (possivelmente ns cinza), ento se P no est nafronteira da quadtree, P tem no mnimo 5 e nomximo 8 vizinhos

    Situaes impossveis de vizinhana

  • Busca de vizinhos em quadtrees (cont.)O Algoritmo de busca de vizinhos em quadtrees

    semelhante ao de busca de vizinhos em rvoresbinrias

    O Considere uma rvore binria onde valores estoarmazenados apenas nos ns folha. Para determinar ovizinho na direo I de P:

    Determina-se Q, o n ancestral comum entre o ne seu vizinho (subir na rvore)

    O Iniciar com Q = P

    O Fazer Q = pai(Q) at que Q no seja o filho Ide seu pai

    Descer na rvore a partir de Q tomando a direooposta quela usada na subida na rvore, isto , Ie depois sempre a direo oposta a I

    Q

    P

    Vizinho direita de P

  • Busca de vizinhos em quadtrees (cont.)

    O A adaptao para quadtrees do algoritmo de buscade vizinhos em rvores binrias divide-se em doiscasos: segundo arestas ou segundo vrtices

    O Busca de vizinhos segundo arestas:

    Na subida da rvore, o critrio para parada seo pai de Q no tem nenhum vizinho na direo Iem comum com Q. Por exemplo, se estamosprocurando um vizinho na direo N de Q, epai(Q) um filho NW ou NE de seu pai, entocontinuamoa a subir, I.e. fazemos Q=pai(Q),caso contrrio, pai(Q) o ancestral comum

    Na descida da rvore, a direo a ser tomada aquela correspondente a refletir a direo desubida segundo a direo I, isto , se I= N e asubida se deu pelo elo NW, ento devemosdescer pelo elo SW (e vice-versa)

  • Busca de vizinhos em quadtrees

    O exemplo:

  • Busca de vizinhos em quadtrees (cont.)

    O exemplo: para encontrar o vizinho de tamanho igualou maior a Este do n 10, segue-se o caminho

    10

    NE

    D

    C

    SE

    A

    SW SE

    E

    NW

    13

  • Busca de vizinhos em quadtrees (cont.)

    O Para a busca de vizinhos em diagonal (segundovrtices) preciso distinguir os seguintes casosdurante a subida e descida na rvore. Seja J o eloentre P e Q:

    1) Se J=I, ento subimos na rvore Q para pai(Q)e, ao descer, usamos a direo diagonalmenteoposta. Ex.: se J=I= NW, descemos pelo elo SE

    2) Se J I , e I e J so adjacentes segundo umaaresta (isto , J no diagonalmente oposto a I),usamos o algoritmo de vizinhana segundoaresta para encontrar o vizinho A de Q segundoa aresta comum entre I e J. Ex.: Se I= NW eJ=SW, temos que localizar o vizinho W de Q.Uma vez localizado A, a descida se faz usando-se o elo de A diagonalmente oposto a I

    3) Se J I a direo diagonalmente oposta a I,ento Q o ancestral comum mais prximo, ecomeamos a descer na rvore pelo elo de Qdiagonalmente oposto a I

  • Busca de vizinhos em quadtrees (cont.)

    O exemplo: vizinho NW do n 15

    15

    S W

    F

    E

    N W

    A

    SE SW

    C

    NE

    13

    SE

    10

    Busca do vizinho de E segundo aresta W

  • PM quadtrees

    O Visam representar mapas poligonais de forma exata

    O Edge quadtrees so inadequadas pois requeremfronteiras alinhadas com os eixos coordenados

    O MX quadtrees sao inadequadas pois no podemrepresentar vrtices de forma exata e requerem queregies prximas de vrtices sejam muitosubdivididas

    O Samet apresenta 3 variantes:PM1 , PM2 e PM3-quadtrees. A diferena entre elas residefundamentalmente na definio de quais arestas sepode armazenar num mesmo n-folha

    O Cada n corresponde a uma subregio quadrada domapa

    O Ns-folhas correspondem a um conjunto q-edges,isto , pedaos de arestas que passam pelosquadrantes correspondentes. Uma q-edge normalmente representada por um ponteiro parauma estrutura de dados que representa a arestainteira, isto , coordenadas das duas extremidades eidentificadores para as regies esquerda e direita

  • PM1 -quadtrees

    O Corresponde a uma subdiviso obedecendo osseguintes critrios

    1. Cada n-folha pode conter no mximo um vrtice

    2. Se um n-folha contm um vrtice, ele no podeconter nenhuma q-edge (pedao de aresta) que noseja incidente nesse vrtice

    3. Se um n-folha no contm vrtices, ele s podeconter uma q-edge

    4. A regio de um n-folha mxima

    O Observe que os quadrados correspondentes aos ns deuma PM-quadtree tm seus quatro lados fechados.Se um vrtice se encontra numa fronteira de um n eletambm inserido no(s) n(s) vizinho(s)

    O Um n-folha que contm uma coleo de q-edges usauma estrutura de dados do tipo lista encadeada. Umarvore balanceada seria prefervel, mas na prtica,dificilmente encontramos mais de 5 arestas incidentesnum mesmo vrtice.

  • PM1 -quadtrees (cont.)

    O Insero feita percorrendo a rvore da raiz para asfolhas (pre-ordem) usando uma rotina recursiva

    Se o segmento no intercepta o quadrado,correspondente ao n, terminar

    Se o segmento intercepta o quadradocorrespondente a um n interno, chamar arotina recursivamente para inserir o segmentonos 4 filhos

    Se o segmento intercepta o quadradocorrespondente a um n-folha:

    O Se o n est vazio, inserir na listacorrespondente

    O Se o n contm uma ou mais arestas, testarse a aresta sendo inserida as demais em umvrtice comum dentro do quadrado

    Caso positivo, inserir na lista

    Caso negativo, subdividir o quadrante echamar a rotina recursivamente

  • PM2 -quadtrees

    O Na anlise da PM1-quadtree notamos que a alturada rvore dependente no s da distncia relativaentre os vrtices, mas tambm da sua posio emrelao s linhas de diviso da quadtree

    O Para remediar esta situao, modifica-se o critrio 3

    3. Se um n folha no contm vrtices, ento eles pode conter arestas que sejam incidentesnum mesmo vrtice comum exterior regio doquadrante correspondente

    A

    A medida que A se apro-xima da fronteira direita,a subdiviso precisa serrefinada ainda mais. Numa PM2-quadtree,esta subdiviso no necessria

  • PM3 -quadtrees

    O O critrio de subdiviso da PM2-quadtree pode serrelaxado ainda mais retirando-se a restrio 2

    O A subdiviso ento fica idntica a de uma PR-quadtree, isto , apenas os vrtices so considerados

    O Como resultado, cada n pode agora conter umnmero arbitrrio de arestas

    O Para facilitar operaes do tipo busca de vizinhos,as arestas so organizadas em 7 grupos: um paraarestas que se encontram num vrtice e 6 para cadacombinao entre pares de lados do quadrante, isto, NW, NS, NE, EW, SW e SE

  • PMR-quadtrees

    O Adaptao de PM-quadtrees para uso em disco(buckets)

    O No h diferena entre vrtices e arestas. Asubdiviso se d visando obter buckets contendoum nmero de objetos prximo de um limite timo(ex.: tamanho de um bloco de disco)

    O Quando um bucket excede sua capacidade, osobjetos nele contidos so reinseridos nos quatrosubquadrantes, mas apenas uma vez

    O Se a subdiviso no for capaz de reduzir apopulao de um bucket para menos que o limite,os dados excedentes so colocados em buckets deoverflow

    O Uma nova subdiviso ser tentada se um novo dadofor inserido naquele n

    O A regra de subdiviso visa obter uma subdivisoprobabilisticamente tima

    O A PMR-quadtree pode ser usada para representarquaisquer objetos, no apenas mapas poligonais