Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoAgnese Maggi Modificato 10 anni fa
1
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Boruvka Algoritmi e Strutture Dati
2
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 2 Algoritmo di Prim
3
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 3 Strategia Mantiene un unico albero blu T, che allinizio consiste di un vertice arbitrario Applica per n-1 volte il seguente passo: scegli un arco di peso minimo incidente su T (ovvero con un estremo in V(T) e laltro estremo in V\V(T)) e coloralo blu (applica ripetutamente la regola del taglio, da cui ne consegue la correttezza!). Poiché ogni passo costa O(m) (infatti devo guardare tutti gli archi che attraversano il taglio (V(T),V\V(T)) corrente), ne consegue che un approccio brutale costa O(nm)
4
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 4 Un approccio più efficiente Per v T, definiamo arco azzurro associato a v un arco (u,v) tale che u T, ed (u,v) ha peso minimo tra tutti gli archi che connettono v ad un vertice in T Lalgoritmo mantiene in una coda con priorità i nodi non ancora aggiunti alla soluzione, aventi ciascuno per chiave il peso del rispettivo arco azzurro associato (+ nel caso in cui esso non esista); da tale coda è quindi estratto il minimo ad ogni passo Una volta estratto il minimo, il nodo associato viene aggiunto alla soluzione, e si procede quindi alleventuale aggiornamento delle chiavi nella coda di priorità
5
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 5 Pseudocodice and v S
6
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 6 Esempio (1/2)
7
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 7 Esempio (2/2)
8
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 8 Tempo di esecuzione Avremo n insert, n deleteMin e al più m decreaseKey O(n+n log n+m log n)= O(m log n) utilizzando heap binari o binomiali (come Kruskal) O(n+n log n+m)=O(m+n log n) utilizzando heap di Fibonacci (meglio di Kruskal se m=ω(n))
9
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 9 Approfondimento Quanto costa lalgoritmo di Prim implementando la coda di priorità con strutture dati elementari (ovvero array e liste)?
10
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 10 Algoritmo di Boruvka °
11
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 11 Strategia Mantiene una foresta di alberi blu, allinizio coincidente con linsieme dei nodi del grafo. Lalgoritmo procede per fasi successive; in ogni fase, vengono uniti tra di loro in modo opportuno gli alberi della foresta, e le fasi terminano quando la foresta si riduce ad un albero (il MAR!) In dettaglio, in ogni fase, si eseguono le seguenti operazioni: 1.Per ogni albero nella foresta, scegli un arco di peso minimo incidente su di esso e coloralo blu (applica la regola del taglio); 2.Elimina da ogni futura computazione gli archi interni ai nuovi alberi generati (cosiddetta contrazione degli alberi in macrovertici), e passa alla fase successiva. Nota: Per non rischiare di introdurre cicli, bisogna assumere che i costi degli archi siano tutti distinti
12
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 12 Analisi In ogni fase, vengono guardati tutti gli archi incidenti ad un macrovertice, per selezionare quello di peso minimo, e quindi in totale vengono guardati O(m) archi La contrazione per ottenere i macrovertici e la relativa eliminazione degli archi interni può essere fatta in O(m) (basta tenere opportunamente traccia degli archi selezionati in quella fase) Ogni fase costa O(m) Il numero di fasi è O(log n): infatti ogni macrovertice creato alla fine della fase k1 contiene almeno 2 k nodi (si dimostra banalmente per induzione) Lalgoritmo di Boruvka costa O(m log n), come Kruskal con le euristiche di bilanciamento o Prim con heap binari/binomiali, ma senza usare strutture dati sofisticate!
13
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 13 Esempio
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.