Penso que a primeira coisa a considerar é o que é uma operação suportada?
"Inserir um valor com uma chave fixa específica" (por exemplo, para chaves obtidas da região inteira, inserindo com a chave = 3) corresponde a uma operação suportada para a pilha mínima?
Não, porque essa operação pode ser implementada trivialmente com operações suportadas mais gerais. Da mesma forma, a inserção de 2 elementos de uma só vez pode ser feita com a insert
operação existente .
Por outro lado, a insert
operação não pode ser definida senão expondo os detalhes da implementação. É praticamente o mesmo para as operações listadas na página da Wikipedia, heapify
exceto, que provavelmente poderiam ser implementadas por uma sequência de insert
.
Em outras palavras, existem operações elementares fornecidas no tipo, que estão fortemente vinculadas aos detalhes da implementação para que elas tenham um bom desempenho, e há outras operações que não cumprem essa regra e, portanto, podem ser implementadas como combinações dos canônicos.
Com essa definição em mente, você acha que a chave de aumento pode ser implementada com outras operações suportadas exclusivamente, sem perda de desempenho? Nesse caso, não é uma operação suportada pela definição acima; caso contrário, você pode estar certo.
Indiscutivelmente, a definição de uma operação suportada que forneço é minha, até onde eu sei. Não é formal e, portanto, sujeito a discussão (embora me pareça bastante claro). No entanto, eu ficaria feliz se alguém pudesse fornecer uma fonte que defina clara e inequivocamente o que é uma operação suportada para tipos de dados ou, pelo menos, defina-a em termos melhores que os meus (essa definição é dada no CLR? Não tenho uma cópia )
Meu segundo ponto será sobre como definimos uma fila de prioridade (que é a razão de ser dos heaps binários). A increase_key
operação é necessária para esse tipo de dados, ou seja, para seu uso adequado?
Como você pode ver, meu ângulo é sobre definições. Na verdade, eu não respondo suas perguntas, apenas alguns indicadores; portanto, as melhorias são bem-vindas.