A ordem parcial, em contraste com a ordem total, é suficiente para construir um monte?

C ++ std :: priority_queue só precisa de um pedido parcial. Mas se a sua implementação é umheap binário, como isso funciona? Por exemplo: suponha que tenhamos um conjunto parcialmente ordenado( {a, b, c, x}, {c < b, b < a, c < a} ), x não tem nada a ver coma, b, c. Então, um heap máximo é:

layer 1:    x
layer 2:  b   x
layer 3: x x a c

Depois de uma operação pop, de uma forma comumente vista em livros de texto, ou seja, substituir a raiz comc e diminua o tamanho em 1. Então precisamos empilhar a árvore abaixo, na raiz:

layer 1:    c
layer 2:  b   x
layer 3: x x a

Vamos trocarc eb Comoc < bnão vamos? E o que? Ainda não temos uma pilha válida desdeb < a. Masb não pode ver"a.

questionAnswers(1)

yourAnswerToTheQuestion