Coda con priorità
Una coda con priorità memorizza sequenze di coppie (el, pr), con el un elemento e pr la priorità associata a quell’elemento.
La priorità massima dipende dal problema se è il valore minimo o massimo.
(esame, data): priorità massima alla data minore
(compito, compenso): priorità massima al compenso maggiore
Algoritmi
Dijkstra
Le coppie sono formate da (nodo, distanza dalla sorgente) e la priorità massima è il minor valore della distanza.
Prim
Le coppie sono formate da (arco, peso arco) e la priorità massima la ha il nodo con il peso minore.
Huffman
Le coppie sono formate da (insieme di caratteri, somma frequenze di occorrenza) e la priorità massima la ha il nodo con somma di frequenze minima.
Primitive
La massima priorità è associata al minimo valore di priorità.
makePriorityQueue(Q'): restituisce una coda che memorizza le coppie(el, pr)in Q’isEmptyQueue(Q): ritornatruese la coda è vuotaenqueue(Q, el, pr): modifica la coda con inserimento coppiaminqueue(Q): ritorna l’elemento con priorità massima (valore minimo)decreasePriority(Q, el, pr): modifica la coppia(el, pr')in coda aggiornando la priorità dielal nuovo valorepr < pr'dequeue(Q): ritornaelcon la massima priorità e elimina la coppia dalla coda
Ci sono tanti modi per realizzare questo concetto, utilizzando liste ordinate, liste non ordinate e min heap.
