szó jelentését keresi. A DICTIOUS-ban nem csak a
szó összes szótári jelentését megtalálod, hanem megismerheted az etimológiáját, a jellemzőit és azt is, hogyan kell a
szót egyes és többes számban mondani. Minden, amit a
szóról tudni kell, itt található. A
szó meghatározása segít abban, hogy pontosabban és helyesebben fogalmazz, amikor beszélsz vagy írsz. A
és más szavak definíciójának ismerete gazdagítja a szókincsedet, és több és jobb nyelvi forráshoz juttat.
Főnév
minimum spanning tree (tsz. minimum spanning trees)
- (informatika) minimális feszítőfa
A minimális feszítőfa (angolul: Minimum Spanning Tree, röviden MST) egy súlyozott, összefüggő, nem irányított gráf olyan részgráfja, amely:
- Minden csúcsot összeköt (feszítőfa),
- Nem tartalmaz ciklust (azaz fa),
- És az összes él súlyának összege minimális a feszítőfák között.
2. Feszítőfa fogalma
Egy gráf feszítőfája:
- Tartalmazza az összes csúcsot,
- Tartalmaz
élt (ha
a csúcsok száma),
- Nincs benne kör,
- Összefüggő.
3. Mikor használjuk?
A minimális feszítőfa hasznos például:
- Hálózatok építésekor (pl. kábelezés minimális költséggel)
- Úthálózatok, csővezetékek, elektromos hálózatok tervezésekor
- Klaszterezésnél (pl. hierarchikus klaszterezés MST alapján)
- Kép- és adatfeldolgozásnál
Legyen
egy összefüggő, nem irányított gráf, ahol:
a csúcsok halmaza,
az élek halmaza, súlyfüggvénnyel 
Az MST olyan
élhalmaz, hogy:
fa (azaz összefüggő és ciklusmentes),
- Az
érték minimális.
5. Tulajdonságok
- Egy súlyozott gráfnak lehet több különböző MST-je, ha azonos súlyú élek vannak.
- Az MST mindig tartalmaz
élt.
- A gráf összefüggő kell legyen, különben nincs feszítőfa.
6. Algoritmusok MST meghatározására
✅ Kruskal algoritmusa (Greedy)
- Rendezd az éleket növekvő súly szerint.
- Kezdd egy üres feszítőfával.
- Sorban vedd fel az éleket, csak akkor, ha nem alkotnak kört.
- Amikor
éled van → kész.
- Cikluskereséshez disjoint-set (union-find) adatszerkezetet használunk.
- Időbonyolultság:

✅ Prim algoritmusa (Greedy)
- Kezdd egy tetszőleges csúccsal.
- Minden lépésben válaszd a legkisebb súlyú élt, amely összeköt egy meglévő csúcsot egy újjal.
- Addig ismételd, amíg az összes csúcs benne nincs.
- Hatékonyan implementálható prioritási sorral (heap).
- Időbonyolultság:

✅ Borůvka algoritmusa
- Minden komponens kiválasztja a legkisebb súlyú élt, ami kivezet belőle.
- Ezután ezekkel az élekkel összekapcsoljuk a komponenseket.
- Ismételjük, amíg egy komponens marad.
7. Egy példa (Kruskal)
Gráf:
A
/ \
1 3
B-----C
\ /
2
D
Élek:
- AB = 1
- AC = 3
- BC = 1
- BD = 4
- CD = 2
Kruskal lépések:
- Rendezzük: AB(1), BC(1), CD(2), AC(3), BD(4)
- Első: AB → OK
- Második: BC → OK
- Harmadik: CD → OK
- Negyedik: AC → Hurok lenne → kihagyjuk
- Ötödik: BD → már van út → kihagyjuk
MST élek: AB, BC, CD Összsúly: 1 + 1 + 2 = 4
8. Python példa (Kruskal)
class Edge:
def __init__(self, u, v, w):
self.u = u
self.v = v
self.w = w
def find(parent, i):
if parent != i:
parent = find(parent, parent)
return parent
def union(parent, rank, x, y):
if rank < rank:
parent = y
elif rank < rank:
parent = x
else:
parent = x
rank += 1
def kruskal(V, edges):
result =
edges.sort(key=lambda x: x.w)
parent = list(range(V))
rank = *V
for e in edges:
x = find(parent, e.u)
y = find(parent, e.v)
if x != y:
result.append(e)
union(parent, rank, x, y)
return result
# Példa
edges = [
Edge(0,1,1), Edge(0,2,3),
Edge(1,2,1), Edge(1,3,4),
Edge(2,3,2)
]
res = kruskal(4, edges)
print("MST:")
for e in res:
print(f"{e.u}-{e.v} ({e.w})")
9. MST vs más fogalmak
Fogalom
|
Magyarázat
|
MST
|
Legkisebb súlyú feszítőfa
|
DFS/BFS fa
|
Bejárás által generált fa, nem optimális
|
Kritikus út
|
Leghosszabb út DAG-ban
|
Minimális elágazó fa
|
Irányított gráf feszítőfája, más algoritmussal számoljuk
|
10. Összefoglalás
A minimális feszítőfa:
- Egy feszítőfa, amely a legkisebb súlyú a gráfban
- Greedy algoritmusokkal hatékonyan meghatározható
- Valós alkalmazások: kábelezés, hálózatépítés, klaszterezés
- Két legismertebb algoritmus: Kruskal és Prim