Minimális feszítőfa (MST) — definíció, tulajdonságok és példák
Minimális feszítőfa (MST) – definíció, tulajdonságok és szemléletes példák. Ismerd meg Kruskal és Prim algoritmusát, súlyoptimalizálást és gyakorlati megoldásokat.
A gráfelmélet egyik alapfogalma a minimális átfutófa (angolul Minimum Spanning Tree, röviden MST). A gráfelméletben a fa olyan összefüggő, körmentes gráf, amely az összes csúcsot úgy köti össze, hogy bármely két csúcs között pontosan egy út van. Ha egy gráf több várost (vagy általános csúcsot) és ezeket utak (élek) kötik össze, akkor kiválaszthatunk néhány élt úgy, hogy minden város elérhető maradjon, és a kiválasztott élek körmentesek legyenek — ez ad egy átfutófát.
Mi az a minimális átfutófa?
Formálisan: egy súlyozott, összefüggő, egyszerű, nem irányított gráf G = (V, E, w) esetén (ahol w az élekhez rendelt reális súly) egy átfutófa T ⊆ E az, amely összeköti az összes |V| csúcsot és körmentes. A minimális átfutófa olyan átfutófa, amelynek az éleihez rendelt súlyok összege minimális az összes lehetséges átfutófára nézve. Tehát T egy MST, ha
w(T) = sum_{e in T} w(e) minimális.
Ha a gráf nem összefüggő, akkor nincs átfutófa; ilyenkor értelmezhető a minimális átfutóerdő (minimum spanning forest), amely az egyes komponensek MST-it tartalmazza.
Alapvető tulajdonságok
- Minden átfutófa pontosan |V| − 1 élt tartalmaz.
- MST létezik, ha és csak ha a gráf összefüggő. Nem összefüggő gráf esetén MST helyett minimális átfutóerdőről beszélünk.
- Ha minden él súlya különböző (nincsenek egyenlő súlyok), akkor az MST egyértelmű (unikus). Ha vannak azonos súlyú élek, több különböző MST is létezhet.
- Két kulcsfontosságú tulajdonság gyakran használatos bizonyításokhoz és algoritmusoknál:
- Vágás-tulajdonság (cut property): bármely vágáshoz (a csúcsok egy U és V\U felosztása) az U-t és V\U-t összekötő élek közül a legkisebb súlyú él biztosan szerepel egy MST-ben (ha egyértelmű a legkisebb él, különben van olyan MST, amely tartalmazza valamelyik legkisebb élét).
- Ciklus-tulajdonság (cycle property): bármely körben a legnagyobb súlyú él nem lehet egyértelműen része minden MST-nek; pontosabban egy körben található legnagyobb súlyú él nem szerepel az MST-k mindegyikében, mert elhagyható és a kör megszűnik.
Algoritmusok az MST megtalálására
A legismertebb algoritmusok, amelyek hatékonyan megtalálják az MST-et:
- Kruskal algoritmusa: az éleket súlyuk szerint növekvő sorrendbe rendezi, majd beveszi az éleket, kivéve ha azok kört hoznának létre (egyesítés-találati szerkezet, union-find használatával). Komplektitás: O(E log E) vagy O(E log V).
- Prim algoritmusa: egy kezdőcsúcsból indulva fokozatosan bővíti a fát mindig a jelenlegi fához legközelebb eső (legkisebb súlyú) bejövő élt választva; min-heap használatával O(E + V log V) vagy O(E log V) idővel megvalósítható.
- Borůvka algoritmusa: párhuzamosan, minden komponenshez kiválasztja a legkisebb csatlakozó élt, ezután egyesíti a komponenseket; jól párhuzamosítható és egyes MST-implementációkban gyors előfeldolgozásként használatos.
Gyakorlati implementációkban Kruskal és Prim a legelterjedtebbek. Az algoritmusok kiválasztása a gráf sűrűségétől és a rendelkezésre álló adatszerkezetektől függ.
Példa (egyszerű)
Képzeljünk el 4 várost A, B, C, D és súlyozott éleket:
- A–B: 1
- A–C: 3
- B–C: 2
- B–D: 4
- C–D: 5
Gyakorlati alkalmazások
- Hálózattervezés: olcsó összeköttetések kiválasztása (telekommunikáció, elektromos hálózatok).
- Klaszterezés a gépi tanulásban (pl. single-linkage hierarchikus klaszterezés MST-alapú módszerekkel).
- Útvonaltervezésnél és térinformatikában egyszerűsítésekre, gerinchálózatok tervezésére.
- Költséghatékonysági problémák, ahol összeköttetést kell biztosítani minimális beruházással.
Megjegyzések és továbbfejlődés
- Az MST-k ellenőrzésére léteznek gyors bizonyítási módszerek: a cut- és cycle-tulajdonságokkal könnyen vizsgálható, hogy egy adott fa minimális-e.
- Speciális esetek: ha valamilyen élt hozzáadunk vagy eltávolítunk, dinamkus MST-szerkezetek ára és frissítése fontos téma (dinamikus gráfok kezelése).
- Széles irodalom és optimalizációs technikák kapcsolódnak az MST-hez — gyakran kombinálják további korlátozásokkal vagy költségfüggvényekkel (pl. kapacitások, irányított élek, több célfüggvény).
Összefoglalva: a minimális átfutófa egy alapvető és széles körben használt fogalom a gráfelmélet-ben, amely arra szolgál, hogy összekössük a gráf csúcsait minimális összköltséggel. A gyakorlati megoldáshoz jól ismert algoritmusok (Kruskal, Prim, Borůvka) állnak rendelkezésre, és az MST-nek több fontos matematikai tulajdonsága van, amelyek segítik a hatékony számítást és az eredmények ellenőrzését.


Egy sík gráf minimális feszítőfája. Minden él a súlyával van jelölve, amely itt nagyjából arányos a hosszával.
A minimálisan átfutó fa megtalálása
Egy első próbálkozás
Nagyon egyszerű lehet olyan algoritmust készíteni, amely felfedezi a minimális átfutófát:
MST(G,W) függvény: T = {} amíg T nem képez átfutófát: keressük meg a minimális súlyozott élt E-ben, amely biztonságos T számára T = T union {(u,v)} return TEbben az esetben a "biztonságos" azt jelenti, hogy az él bevonása nem képez ciklust a gráfban. A ciklus azt jelenti, hogy egy csúcsból indulunk, több más csúcsba utazunk, és a kiindulási ponton érünk vissza anélkül, hogy ugyanazt az élt kétszer használnánk.
Történelem
Otakar Borůvka cseh tudós 1926-ban fejlesztette ki az első ismert algoritmust a minimális átfutófa megtalálására. Azt a problémát akarta megoldani, hogy Morvaország hatékony villamosenergia-lefedettségét megtalálja. Ma ez az algoritmus Borůvka algoritmusa néven ismert. Két másik algoritmus ma már általánosan használatos. Az egyiket Vojtěch Jarník fejlesztette ki 1930-ban, és Robert Clay Prim 1957-ben ültette át a gyakorlatba. Edsger Wybe Dijkstra 1959-ben fedezte fel újra, és Prim algoritmusának nevezte el. A másik algoritmust Kruskal algoritmusának nevezik, és Joseph Kruskal 1956-ban pulzálta. Mindhárom algoritmus mohó, és polinomiális időben fut.
Az eddigi leggyorsabb minimum-spanning tree algoritmust Bernard Chazelle fejlesztette ki. Az algoritmus a soft heapon, egy közelítő prioritási soron alapul. Futási ideje O(m α(m,n)), ahol m az élek száma, n a csúcsok száma, α pedig az Ackermann-függvény klasszikus funkcionális inverze. Az α függvény rendkívül lassan növekszik, így minden gyakorlati szempontból 4-nél nem nagyobb konstansnak tekinthető; így Chazelle algoritmusa nagyon közel lineáris időt vesz igénybe.
Mi a lehető leggyorsabb algoritmus erre a problémára? Ez a számítástechnika egyik legrégebbi nyitott kérdése. Egyértelműen van egy lineáris alsó korlát, hiszen legalább az összes súlyt meg kell vizsgálnunk. Ha az élek súlyai egész számok, amelyeknek bithossza korlátos, akkor ismertek lineáris futási idejű determinisztikus algoritmusok. Általános súlyok esetén léteznek olyan randomizált algoritmusok, amelyek várható futási ideje lineáris.
A problémát elosztott módon is meg lehet közelíteni. Ha minden egyes csomópontot számítógépnek tekintünk, és egyetlen csomópont sem ismer semmit a saját összekötő kapcsolatain kívül, akkor is kiszámítható az elosztott minimális átfutófa.
Kérdések és válaszok
K: Mi az a minimális átfutófa a gráfelméletben?
V: A minimálisan áthidaló fa a gráfelméletben olyan fa, amely minimalizálja az élekhez kapcsolt összes súlyt.
K: Mi a fa a gráfelméletben?
V: A fa a gráfelméletben az összes csúcsot úgy köti össze, hogy a fa bármelyik csúcsából csak egy út vezet a fa bármelyik másik csúcsához.
K: Mi a célja az utak kiválasztásának egy városokat ábrázoló gráfelméleti forgatókönyvben?
V: Az utak kiválasztásának célja egy városokat ábrázoló gráfelméleti forgatókönyvben az, hogy minden város elérhető legyen minden más városból, de az egyik városból a másikba való eljutás legfeljebb egy lehetséges útvonalon történjen.
K: Lehet egy gráfnak egynél több átlós fája?
V: Igen, egy gráfnak egynél több átfutófája is lehet.
K: Mi a különbség a minimális átfutófa és más gráfelméleti fák között?
V: A minimálisan átfutó fa minimalizálja az élekhez tartozó összes súlyt, míg más fák nem rendelkeznek ezzel a tulajdonsággal.
K: Mik az élek a gráfelméletben?
V: Az élek a gráfelméletben két csúcs közötti kapcsolatok.
K: Létezhet-e egynél több minimális átfutófa egy gráfban, különböző súlyozott élekkel?
V: Igen, attól függően, hogy a gráf hogyan néz ki, egynél több minimális átfutófa is lehet.
Keres