Eu sempre pensei que pilhas e filas de prioridade foram sinônimos - uma estrutura de dados abstrata que suporta os insert
, findMin
e deleteMin
operações.
Alguma literatura parece concordar comigo - Estruturas de Dados Puramente Funcionais de Chris Okasaki (capítulo 3), por exemplo.
Por outro lado, a página de heap da Wikipedia a define como uma estrutura de dados baseada em árvore e afirma que os heaps são uma implementação concreta de filas prioritárias.
Estou tendo uma grande dificuldade em conciliar isso com o fato de que posso pensar em mais de uma implementação de heap - pilhas esquerdistas, pilhas binomiais, pilhas espalhadas ...
O simples fato de um heap poder ser implementado com diferentes estruturas de dados não significa, por definição, que é uma estrutura de dados abstrata? E se for esse o caso, existe uma diferença real nas filas de prioridades?