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 , ∞ ) .
Respostas:
"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 ( log1 + ϵn ) O ( logn )
fonte
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. At1 t2 ) apenas se .t2≥ t1
query(x)
operação descrita acima corresponde a umafind-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 umafind-min
( ) consulta, podemos perguntar ( t 2find-min
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 ( logn ) (pior caso) tempo de actualização. Se quisermos implementar uma solução para esse problema, esta é a versão a seguir.O( log2n )
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 (log1 +ϵn )
Posteriormente, os seguintes autores (independentemente) aprimoram os limites de tempo para para exclusões e O ( log n log logO( logn logregistron ) O (lognlogregistroregistron )
Kaplan, Tarjan e Tsioutsiouliklis montes cinéticos mais rápidos e seu uso na programação de transmissão na SODA 2001
Todas as citações acima suportamO (logn )
find-min
consultas emRecentemente, 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".
fonte