Envelope superior dinâmico de linhas no plano


8

Existem algoritmos fáceis para calcular o envelope superior de um arranjo de linhas no plano. Veja, por exemplo, a seção 2.3 na pesquisa Sequências de Davenport-Schinzel e suas aplicações geométricas .

Existem algoritmos / estruturas de dados conhecidos para a versão dinâmica do mesmo problema? Ou seja, queremos manter o envelope superior de um conjunto de linhas no plano sob as seguintes operações:

  • insert ): adiciona a linha ao conjunto(
  • delete : remove a linha do conjunto()
  • query : retorna a linha com a coordenada x no envelope superior. Em outras palavras, retorne a linha do conjunto que primeiro é atingida por um raio vertical descendente a partir do ponto ( x , ) .(x)x(x,)

6
Para linhas, a dualidade linha-ponto deve traduzir isso em um problema sobre cascos convexos dinâmicos, que é bem estudado.
alguém

2
@ alguém obrigado pelo seu comentário útil! Seguir essa linha de raciocínio rapidamente levou-me à seguinte referência, que discute montes paramétricos, que parecem ser as estruturas de dados que estou procurando. madalgo.au.dk/~gerth/papers/focs02.pdf
Joe

3
Consulte também citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.18.9174 e suas referências.
21412 Joe

1
@ Joe: Eu não tenho certeza sobre a etiqueta, mas acho que você deve responder e aceitá-la, para ajudar os futuros leitores desta pergunta.
Max

Respostas:


5

"alguém" está certo. O artigo de Timothy Chan, "Operações planas dinâmicas do casco convexo em tempo amortizado quase logarítmico" parece resolver o problema com inserções / exclusões que levam tempo amortizado e consultas com tempo O ( log n ) . Ele resolve o seu problema, que é dual ao problema convexo do casco.O(registro1+ϵn) O(registron)


1
Opa, deixa pra lá. Parece que você encontrou um resultado mais recente que acho que supera isso.
James King

3

A estrutura de dados que eu estava procurando é chamada de pilha paramétrica . Ou seja, um monte em que cada tecla é uma função linear (uma linha) em vez de uma chave fixa. A query(x)operação descrita acima corresponde a uma find-min(x)operação em um heap paramétrico. Existe uma estrutura de dados relacionada, chamada heap cinético , que é um heap paramétrico em que o parâmetro, time, apenas progride para a frente. Em outras palavras, uma vez que temos uma find-min( ) consulta, podemos perguntar ( t 2t1find-mint2 ) apenas se .t2t1

Conforme observado por "alguém", o problema paramétrico do heap pode ser reduzido a um casco plano dinâmico convexo via dualidade de linha de ponto.

A maioria dos artigos que resolvem esse problema usa uma estrutura de dados semi-dinâmica "somente exclusões" e, em seguida, usa uma técnica de dinamização de Bentley e Saxe para transformar sua estrutura de dados e também suportar inserções. ( JL Bentley e JB Saxe, problemas de busca decomposable I:. Transformação Static-to-dinâmica ) Ver também J notas de aula do FFEϵ para uma visão geral de como este tipo de obras de transformação.

O resultado clássico nessa área é devido a Overmars e van Leeuwen, Manutenção de configurações no avião , que atingem tempo de consulta O ( log n ) e O (O(registron) (pior caso) tempo de actualização. Se quisermos implementar uma solução para esse problema, esta é a versão a seguir.O(registro2n)

No entanto, houve subsequentemente várias melhorias teóricas no resultado clássico. No FOCS 99, o artigo de Chan

deu uma estrutura de dados com tempo amortizado ϵ n)para atualizações.O(registro1+ϵn)

Posteriormente, os seguintes autores (independentemente) aprimoram os limites de tempo para para exclusões e O ( log n log logO(registronregistroregistron)O(registronregistroregistroregistron)

O(registron) tempo amortizado de . Seus resultados são bastante complicados, e eu só consegui encontrar a versão completa do artigo em forma de rascunho ; no entanto, o resultado também é detalhado no Ph.D. de Jacob. Dissertação .

Recentemente, Chan deu outros resultados relacionados a consultas planas dinâmicas do casco planas, incluindo "Uma estrutura de dados totalmente dinâmica para manter um conjunto de n pontos no plano para que possamos encontrar as bordas do casco convexo que cruzam uma linha de consulta".

Θ(registron/registroregistron)O(registronregistroregistron)O(registro2n) .


3
Oh. Não. Todos esses resultados são muito complicados. O artigo original de Overmars / Van Leuven (consulte en.wikipedia.org/wiki/Dynamic_convex_hull ) ainda é uma jóia e pode ser facilmente implementado. É log ^ 2 para algumas operações. Mas é o pior caso.
Sariel Har-Peled

1
Eu pensei que a tese de Riko Jacob tinha uma versão completa da prova? Mas eu concordo com Sariel que você deve furar a Overmars / Van Leuven
Suresh Venkat

@SureshVenkat Por que devo me ater à Overmars / Van Leuven?
31412 Joe

Eu acho que depende do que você precisa para o algoritmo.
Suresh Venkat

Em um word-ram, podemos obter um tempo de consulta ainda mais rápido: people.csail.mit.edu/mip/papers/dynhull/paper.pdf
Joe
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.