Strategia
- Si seleziona un nodo
; - Si esegue
volte la seguente operazione: - si seleziona l’albero
contenente , - si seleziona un arco di costo minimo incidente su
e lo si colora di .
- si seleziona l’albero
Implementazione
Inizializzazione
Terminologia:
Campo ‘key’ del vertice, rappresenta il peso minimo di un arco qualsiasi che collega v a un vertice nell’albero finale MST. Per convenzione, se l’arco non esiste. Padre o predecessore del vertice v nell’albero finale nodo di inizio, start, o la radice dell’albero MST finale.
Costruzione
Questo ciclo
- I vertici già inseriti nell’MST finale sono quelli che appartengono a
. - Per ogni vertice
, se , allora la key del vertice v è minore di infinito ( ), ed è il peso di un arco leggero tra: che collega a qualche vertice che si trova già nell’MST
Esempio Esercizio:
Per eseguire l’esercizio in maniera “formale”, cioè seguendo strettamente lo pseudocodice, conviene mantenere una tabella a lato del grafo, del tipo:
Vertice | Visitato? | Costo | Percorso |
---|---|---|---|
a | FALSE | -1 | |
b | FALSE | -1 | |
c | FALSE | -1 | |
… | … | … | … |
Esempio di una tabella di inizio. |
Il seguente esercizio è parecchio lungo:
Nota, l’esercizio è leggermente modificato rispetto alla prova d’esame. In particolare, ho cambiato i pesi degli archi
Esempio svolgimento esercizio D'ESAME con Prim (svg)
Consiglio di aprire in un’altra scheda
Complessità
- Inizializzazione:
- Costruzione:
Extract-Min, Decrease_Key.
\ | Heap Binario | Heap Binomiale | Heap di Fibonacci |
---|---|---|---|
Inizializzazione | |||
\ |
Notiamo come l’Heap di Fibonacci non è mai peggiore di altri Heap.
Questo perché ci troviamo nel caso
Confronto tra E logV ←> E + V logV
Quindi
Abbiamo che:
Per
Inoltre
Pertanto
Inoltre:
Dimostrazione: