UN albero di copertura minimo (MST) è definito come a albero di copertura che ha il peso minimo tra tutti i possibili spanning tree
UN albero di copertura è definito come un sottografo ad albero di un grafo connesso e non orientato che include tutti i vertici del grafo. O, per dirla con le parole di Layman, è un sottoinsieme degli spigoli del grafico che forma un albero ( aciclico ) dove ogni nodo del grafico è una parte dell'albero.
svuotamento cache npm
Lo spanning tree minimo ha tutte le proprietà di uno spanning tree con il vincolo aggiuntivo di avere i pesi minimi possibili tra tutti i possibili spanning tree. Come un albero di copertura, anche per un grafico possono esserci molti possibili MST.

Proprietà di uno Spanning Tree:
L'albero di copertura contiene il principi sotto indicati :
- Il numero di vertici ( IN ) nel grafico e lo spanning tree è lo stesso.
- C'è un numero fisso di archi nello spanning tree che è uguale a uno in meno rispetto al numero totale di vertici ( E = V-1 ).
- Lo spanning tree non dovrebbe esserlo disconnesso , poiché dovrebbe esserci una sola fonte di componente, non di più.
- Lo spanning tree dovrebbe esserlo aciclico, Quale significa che non ci sarebbe alcun ciclo nell'albero.
- Il costo totale (o peso) dello spanning tree è definito come la somma dei pesi di tutti gli spigoli dello spanning tree.
- Possono esserci molti possibili spanning tree per un grafo.
Albero di copertura minimo:
UN albero di copertura minimo (MST) è definito come a albero di copertura che ha il peso minimo tra tutti i possibili spanning tree.
Lo spanning tree minimo ha tutte le proprietà di uno spanning tree con il vincolo aggiuntivo di avere i pesi minimi possibili tra tutti i possibili spanning tree. Come un albero di copertura, anche per un grafico possono esserci molti possibili MST.
scanner.nex java
- Diamo un'occhiata all'MST del grafico di esempio sopra,

Albero di copertura minimo
Algoritmi per trovare l'albero di copertura minimo:
Esistono diversi algoritmi per trovare l'albero di copertura minimo da un dato grafo, alcuni di essi sono elencati di seguito:
Algoritmo dell’albero di copertura minimo di Kruskal:
Questo è uno degli algoritmi più diffusi per trovare l'albero di copertura minimo da un grafo connesso e non orientato. Questo è un Innanzitutto, ordina tutti i bordi del grafico in base al loro peso,
Questo algoritmo può essere implementato in modo efficiente utilizzando una struttura dati DSU (Disjoint-Set) per tenere traccia delle componenti connesse del grafico. Viene utilizzato in una varietà di applicazioni pratiche come la progettazione di reti, il clustering e l'analisi dei dati.
Segui l'articolo su Algoritmo dell’albero di copertura minimo di Kruskal per una migliore comprensione e implementazione dell’algoritmo.
Algoritmo dell’albero di copertura minimo di Prim:
Anche questo è un algoritmo avido. Questo algoritmo ha il seguente flusso di lavoro:
- Inizia selezionando un vertice arbitrario e quindi aggiungendolo al MST.
- Quindi, controlla ripetutamente il peso minimo del bordo che collega un vertice di MST a un altro vertice che non è ancora nel MST.
- Questo processo continua finché tutti i vertici non sono inclusi nell'MST.
Per selezionare in modo efficiente il bordo di peso minimo per ciascuna iterazione, questo algoritmo utilizza priorità_queue per memorizzare i vertici ordinati attualmente in base al peso minimo del bordo. Inoltre tiene traccia simultaneamente dell'MST utilizzando un array o un'altra struttura dati adatta considerando il tipo di dati che sta memorizzando.
Questo algoritmo può essere utilizzato in vari scenari come la segmentazione delle immagini in base al colore, alla trama o ad altre caratteristiche. Per il routing, come trovare il percorso più breve tra due punti che un camion per le consegne deve seguire.
Segui l'articolo su Algoritmo dell’albero di copertura minimo di Prim per una migliore comprensione e implementazione di questo algoritmo.
Algoritmo dell’albero di copertura minimo di Boruvka:
Questo è anche un algoritmo di attraversamento del grafo utilizzato per trovare l'albero di copertura minimo di un grafo connesso e non orientato. Questo è uno degli algoritmi più antichi. L'algoritmo funziona costruendo in modo iterativo l'albero di copertura minimo, iniziando con ciascun vertice del grafico come proprio albero. In ogni iterazione, l'algoritmo trova l'arco più economico che collega un albero a un altro albero e aggiunge quell'arco all'albero di copertura minimo. Questo è quasi simile all’algoritmo di Prim per trovare l’albero di copertura minimo. L'algoritmo ha il seguente flusso di lavoro:
Madhuri ha detto
- Inizializza una foresta di alberi, con ciascun vertice del grafico come proprio albero.
- Per ogni albero della foresta:
- Trova il bordo più economico che lo collega a un altro albero. Aggiungi questi archi allo spanning tree minimo.
- Aggiorna la foresta unendo gli alberi collegati dai bordi aggiunti.
- Ripetere i passaggi precedenti finché la foresta non contiene un solo albero, ovvero lo spanning tree minimo.
L'algoritmo può essere implementato utilizzando una struttura dati come una coda di priorità per trovare in modo efficiente il bordo più economico tra gli alberi. L’algoritmo di Boruvka è un algoritmo semplice e facile da implementare per trovare alberi di copertura minimi, ma potrebbe non essere efficiente come altri algoritmi per grafi di grandi dimensioni con molti spigoli.
Segui l'articolo su Algoritmo dell’albero di copertura minimo di Boruvka per una migliore comprensione e implementazione di questo algoritmo.
Per saperne di più sulle proprietà e caratteristiche del Minimum Spanning Tree, fare clic su Qui.
Applicazioni degli alberi di copertura minimi:
- Progettazione della rete : Gli spanning tree possono essere utilizzati nella progettazione della rete per trovare il numero minimo di connessioni richieste per connettere tutti i nodi. Gli alberi di copertura minimi, in particolare, possono aiutare a minimizzare il costo delle connessioni selezionando gli archi più economici.
- Elaborazione delle immagini : Gli spanning tree possono essere utilizzati nell'elaborazione delle immagini per identificare regioni di intensità o colore simile, che possono essere utili per attività di segmentazione e classificazione.
- Biologia : Gli alberi di copertura e gli alberi di copertura minima possono essere utilizzati in biologia per costruire alberi filogenetici per rappresentare le relazioni evolutive tra specie o geni.
- Analisi delle reti sociali : Gli spanning tree e gli spanning tree minimi possono essere utilizzati nell'analisi dei social network per identificare connessioni e relazioni importanti tra individui o gruppi.
Alcuni problemi di intervista popolari su MST
| 1. | Trova il costo minimo per connettere tutte le città | Pratica |
Alcune domande frequenti sugli alberi di copertura minimi:
1. Possono esserci più alberi di copertura minima per un dato grafo?
Sì, un grafico può avere più alberi di copertura minimi se sono presenti più insiemi di archi con lo stesso peso totale minimo.
test di regressione nei test del software
2. È possibile utilizzare l’algoritmo di Kruskal e l’algoritmo di Prim per i grafi orientati?
No, l’algoritmo di Kruskal e l’algoritmo di Prim sono progettati solo per grafi non orientati.
3. Può un grafo disconnesso avere uno spanning tree minimo?
No, un grafo disconnesso non può avere uno spanning tree perché non si estende su tutti i vertici. Pertanto, non può nemmeno avere uno spanning tree minimo.
4. È possibile trovare un albero di copertura minimo utilizzando l’algoritmo di Dijkstra?
No, l’algoritmo di Dijkstra viene utilizzato per trovare il percorso più breve tra due vertici in un grafico pesato. Non è progettato per trovare un albero ricoprente minimo.
5. Qual è la complessità temporale degli algoritmi di Kruskal e Prim?
Sia gli algoritmi di Kruskal che quelli di Prim hanno una complessità temporale di O(ElogE) , dove E è il numero di archi nel grafico.