A minimalno vpeto drevo (MST) je opredeljen kot a vpeto drevo ki ima najmanjšo težo med vsemi možnimi vpetimi drevesi
A vpeto drevo je definiran kot drevesni podgraf povezanega, neusmerjenega grafa, ki vključuje vsa oglišča grafa. Ali, z laičnimi besedami, je podmnožica robov grafa, ki tvori drevo ( acikličen ), kjer je vsako vozlišče grafa del drevesa.
kaj je modulo v c++
Najmanjše vpeto drevo ima vse lastnosti vpetega drevesa z dodano omejitvijo najmanjše možne uteži med vsemi možnimi vpetimi drevesi. Tako kot vpeto drevo je lahko tudi za graf veliko možnih MST.

Lastnosti vpetega drevesa:
Vpeto drevo drži spodaj omenjena načela :
- Število oglišč ( IN ) v grafu in vpeto drevo je enako.
- V vpetem drevesu je določeno število robov, ki je enako enemu manjše od skupnega števila vozlišč ( IN = V-1 ).
- Vpetega drevesa ne bi smelo biti odklopljen , saj mora biti samo en vir komponente, ne več kot to.
- Vpeto drevo bi moralo biti aciklično, ki pomeni, da v drevesu ne bi bilo nobenega cikla.
- Skupna cena (ali teža) vpetega drevesa je opredeljena kot vsota uteži robov vseh robov vpetega drevesa.
- Za graf je lahko veliko možnih vpetih dreves.
Najmanjše vpeto drevo:
A minimalno vpeto drevo (MST) je opredeljen kot a vpeto drevo ki ima najmanjšo težo med vsemi možnimi vpetimi drevesi.
Najmanjše vpeto drevo ima vse lastnosti vpetega drevesa z dodano omejitvijo najmanjše možne uteži med vsemi možnimi vpetimi drevesi. Tako kot vpeto drevo je lahko tudi za graf veliko možnih MST.
- Poglejmo MST zgornjega vzorčnega grafa,

Najmanjše vpeto drevo
Algoritmi za iskanje minimalnega vpetega drevesa:
Obstaja več algoritmov za iskanje najmanjšega vpetega drevesa iz danega grafa, nekateri od njih so navedeni spodaj:
Kruskalov algoritem minimalnega vpetega drevesa:
To je eden od priljubljenih algoritmov za iskanje najmanjšega vpetega drevesa iz povezanega, neusmerjenega grafa. To je a Najprej razvrsti vse robove grafa glede na njihovo težo,
Ta algoritem je mogoče učinkovito implementirati z uporabo podatkovne strukture DSU ( Disjoint-Set ), da sledite povezanim komponentam grafa. To se uporablja v različnih praktičnih aplikacijah, kot so načrtovanje omrežja, združevanje v gruče in analiza podatkov.
Sledite članku naprej Kruskalov algoritem minimalnega vpetega drevesa za boljše razumevanje in implementacijo algoritma.
Primov algoritem minimalnega vpetega drevesa:
To je tudi požrešen algoritem. Ta algoritem ima naslednji potek dela:
poimenovanje java konvencij
- Začne se z izbiro poljubne vozlišča in nato dodajanjem v MST.
- Nato vedno znova preverja najmanjšo težo roba, ki povezuje eno točko MST z drugo točko, ki še ni v MST.
- Ta postopek se nadaljuje, dokler niso vse točke vključene v MST.
Za učinkovito izbiro roba najmanjše teže za vsako ponovitev ta algoritem uporablja priority_queue za shranjevanje vozlišč, razvrščenih glede na njihovo trenutno najmanjšo težo roba. Istočasno tudi spremlja MST z uporabo matrike ali druge podatkovne strukture, primerne glede na vrsto podatkov, ki jih shranjuje.
Ta algoritem je mogoče uporabiti v različnih scenarijih, kot je segmentacija slike na podlagi barve, teksture ali drugih funkcij. Za usmerjanje, na primer pri iskanju najkrajše poti med dvema točkama, ki naj ji sledi dostavni tovornjak.
Sledite članku naprej Primov algoritem minimalnega vpetega drevesa za boljše razumevanje in izvajanje tega algoritma.
Boruvkov algoritem minimalnega vpetega drevesa:
To je tudi algoritem za prečkanje grafa, ki se uporablja za iskanje najmanjšega vpetega drevesa povezanega, neusmerjenega grafa. To je eden najstarejših algoritmov. Algoritem deluje tako, da iterativno gradi minimalno vpeto drevo, pri čemer se začne z vsako točko v grafu kot lastnim drevesom. V vsaki ponovitvi algoritem najde najcenejši rob, ki povezuje drevo z drugim drevesom, in ta rob doda minimalnemu vpetemu drevesu. To je skoraj podobno Primovemu algoritmu za iskanje najmanjšega vpetega drevesa. Algoritem ima naslednji potek dela:
- Inicializirajte gozd dreves, pri čemer je vsako vozlišče v grafu svoje drevo.
- Za vsako drevo v gozdu:
- Poiščite najcenejši rob, ki ga povezuje z drugim drevesom. Te robove dodajte minimalnemu vpetemu drevesu.
- Posodobite gozd z združitvijo dreves, povezanih z dodanimi robovi.
- Ponavljajte zgornje korake, dokler gozd ne vsebuje samo enega drevesa, ki je najmanjše vpeto drevo.
Algoritem je mogoče implementirati z uporabo podatkovne strukture, kot je prednostna čakalna vrsta, za učinkovito iskanje najcenejšega roba med drevesi. Boruvkov algoritem je preprost in enostaven za implementacijo algoritem za iskanje minimalnih vpetih dreves, vendar morda ni tako učinkovit kot drugi algoritmi za velike grafe z veliko robovi.
Sledite članku naprej Boruvkov algoritem minimalnega vpetega drevesa za boljše razumevanje in izvajanje tega algoritma.
Če želite izvedeti več o lastnostih in značilnostih minimalnega vpetega drevesa, kliknite tukaj
Uporaba minimalnih vpetih dreves:
- Oblikovanje omrežja : Vpeta drevesa se lahko uporabljajo pri načrtovanju omrežja, da se poišče minimalno število povezav, potrebnih za povezavo vseh vozlišč. Zlasti minimalna vpeta drevesa lahko pomagajo zmanjšati stroške povezav z izbiro najcenejših robov.
- Obdelava slik : Vpeta drevesa je mogoče uporabiti pri obdelavi slik za identifikacijo območij podobne intenzivnosti ali barve, kar je lahko uporabno za naloge segmentacije in klasifikacije.
- Biologija : Vpeta drevesa in minimalna vpeta drevesa se lahko uporabljajo v biologiji za izdelavo filogenetskih dreves za predstavitev evolucijskih odnosov med vrstami ali geni.
- Analiza socialnih omrežij : Vpeta drevesa in minimalna vpeta drevesa se lahko uporabljajo v analizi socialnih omrežij za prepoznavanje pomembnih povezav in odnosov med posamezniki ali skupinami.
Nekaj priljubljenih problemov intervjujev na MST
| 1. | Poiščite najnižjo ceno za povezovanje vseh mest | Vadite |
Nekaj pogostih vprašanj o minimalnih vpetih drevesih:
1. Ali lahko za dani graf obstaja več dreves z minimalnim razponom?
Da, graf ima lahko več minimalnih vpetih dreves, če obstaja več nizov robov z enako najmanjšo skupno težo.
2. Ali lahko Kruskalov algoritem in Primov algoritem uporabimo za usmerjene grafe?
Ne, Kruskalov algoritem in Primov algoritem sta zasnovana samo za neusmerjene grafe.
3. Ali ima lahko nepovezani graf minimalno vpeto drevo?
Ne, nepovezani graf ne more imeti vpetega drevesa, ker ne obsega vseh vozlišč. Zato tudi ne more imeti minimalnega vpetega drevesa.
4. Ali je mogoče najti minimalno vpeto drevo z uporabo Dijkstrinega algoritma?
Ne, Dijkstrajev algoritem se uporablja za iskanje najkrajše poti med dvema točkama v uteženem grafu. Ni zasnovan za iskanje minimalnega vpetega drevesa.
5. Kakšna je časovna kompleksnost Kruskalovih in Primovih algoritmov?
Tako Kruskalov kot Primov algoritem imata časovno zapletenost O(ElogE) , kjer je E število robov v grafu.