¿Es el orden parcial, en contraste con el orden total, suficiente para construir un montón?
C ++ std :: priority_queue solo necesita un orden parcial. Pero si su implementación es unamontón binario, ¿Cómo funciona? Por ejemplo: supongamos que tenemos un conjunto parcialmente ordenado( {a, b, c, x}, {c < b, b < a, c < a} )
, x
no tiene nada que ver cona
, b
, c
. Entonces un máximo de pila es:
layer 1: x
layer 2: b x
layer 3: x x a c
Después de una operación emergente, de una manera común en los libros de texto, es decir, reemplazar la raíz conc
y reduzca el tamaño en 1. Luego necesitamos heapificar el árbol de abajo, en la raíz:
layer 1: c
layer 2: b x
layer 3: x x a
Vamos a cambiarc
yb
comoc < b
nosotros no? ¿Y qué? Todavía no tenemos un montón válido desdeb < a
. Perob
no pueden ver"a
.