Prim algoritmusa: teljes útmutató

Utolsó frissítés: 6 április 2026
  • Prim: algoritmus a minimális feszítőfa (MST) meghatározására összefüggő, irányítatlan, súlyozott gráfokban, minimalizálva az élsúlyok összegét.
  • Működés: Egy csomópontból indul, és iteratívan kiválasztja a feldolgozott csomópontokat a feldolgozatlanokkal összekötő legkisebb súlyú élt, elkerülve a ciklusokat.
  • Komplexitás: O(n²) szomszédsági mátrixszal vagy O(a log n) heap-ekkel; A Prim általában jobb sűrű gráfokon, mint a Kruskal.
  • Alkalmazások: hálózattervezés, elektromos rendszerek, víz-/gázelosztás, gépi látás és bioinformatika, költségek és erőforrások optimalizálása.

 

Prim algoritmusának ábrázolása

Prim algoritmusa az egyik legnépszerűbb módszer a minimális feszítőfa (MST) probléma megoldására. Ez a fajta probléma számos területen felmerül, például a telekommunikációs hálózatok , az elektromos rendszerek és az elosztóhálózatok tervezésében . Ha érdekel, hogy mélyrehatóan megértsd, hogyan működik ez az algoritmus, jó helyen jársz. Itt mindent lebontunk a Prim algoritmusáról, a történetétől a technikai megvalósításán át a gyakorlati alkalmazásokig.

Bár az algoritmust eredetileg Robert Prim fejlesztette ki 1957-ben , jelentősége az idők során mit sem csökkent. Alapvető algoritmus a gráfelemzésben, különösen akkor, ha egy gráf összes csomópontjának a lehető legalacsonyabb költséggel történő hatékony összekapcsolására van szükség. Továbbá, a könnyű megvalósítása ideálissá teszi a gráfoptimalizálási technikák elsajátításához a programozóknak szóló átfogó útmutatónkban.

Mi a Prim algoritmusa?

Kruskal algoritmus
Kapcsolódó cikk:
Kruskal algoritmusa és alkalmazása gráfokban

A Prim algoritmusa egy olyan technika, amely egy összefüggő, irányítatlan, súlyozott gráf minimális feszítőfáját (MST) keresi . Az MST egy olyan fa, amely a gráf összes csomópontját az élsúlyok lehető legkisebb összegét használva köti össze . Ez a probléma kulcsfontosságú olyan területeken, mint a hálózatoptimalizálás, mivel segít minimalizálni az olyan erőforrásokat, mint a kábelezés , a csövek vagy akár a szállítási útvonalak.

  Algoritmikus gondolkodás: 10 kulcs a számítási logika elsajátításához

Az algoritmus fő gondolata, hogy egy gráf csomópontjait két halmazra osztja: feldolgozott és feldolgozatlan . Ezután iteratívan kiválasztja a két halmazt összekötő legrövidebb élt, ügyelve arra, hogy ne alakuljanak ki ciklusok. Végül a kiválasztott élek halmaza alkotja a gráf MST-jét.

Történelem és kontextus

Robert Prim fejlesztette ki ezt az algoritmust 1957-ben, de eredete még régebbre, 1926-ra nyúlik vissza, amikor Otakar Boruvka egy villamosítási problémán dolgozott Csehszlovákiában. Szintén 1956-ban Joseph Kruskal bemutatta saját módszerét a minimális feszítőfa probléma megoldására. Bár mindkét algoritmus ugyanazt a problémát oldja meg, Prim algoritmusa különösen hatékony sűrű gráfok esetén.

Az 1960-as és 1970-es években az algoritmust a Bell Labs matematikusai tanulmányozták és fejlesztették , akik hozzájárultak a kombinatorikus optimalizálási problémák fejlett technikáinak fejlesztéséhez.

Algoritmus működése

Az algoritmus azzal kezdődik, hogy kiválaszt egy tetszőleges kezdeti csomópontot a gráfban, és hozzáadja az éleit a lehetséges kapcsolatok halmazához. Ezután minden lépésben:

  • A választás megtörtént legrövidebb éle amely összeköt egy már feldolgozott csomópontot egy feldolgozatlannal.
  • A kiválasztott él által összekapcsolt feldolgozatlan csomópont feldolgozottként van megjelölve.
  • A folyamat az összes csomópont feldolgozásáig folytatódik.

Az élek végső halmaza alkotja a minimális feszítőfát, amely más módszerekhez, például Wilson algoritmusához kapcsolódik.

Komplexitás és összehasonlítás Kruskal

Prim algoritmusának egyik legtöbbet tanulmányozott aspektusa a hatékonysága . Egy n csomóponttal és egy éllel rendelkező gráfban a komplexitása a megvalósítástól függően változhat:

  • Szomszédsági mátrix használata: O(n²)
  • A halmok használata: O(a log n)
  Bináris fák JavaScriptben: teljes útmutató

Összehasonlításképpen, Kruskal algoritmusának komplexitása O(a log n) , bár ez az alkalmazott rendezési technikától függ. Prim algoritmusa általában hatékonyabb sűrű gráfok esetén, míg Kruskal algoritmusa ritka gráfok esetén előnyösebb.

Algoritmus pszeudokód

Az algoritmus megértéséhez a pszeudokódja és a matematikai algoritmusok példái segítenek :

Prim (gráf): A feldolgozott halmaz indítása egy kezdeti csomóponttal Amíg vannak feldolgozatlan csomópontok: Keresse meg a két halmazt összekötő legrövidebb élt. Adja hozzá az élt az MST-hez. Jelölje meg a csomópontot feldolgozottként Az MST visszaadása

Praktikus alkalmazások

Prim algoritmusának számos valós felhasználási módja van, többek között:

  • Távközlési hálózat tervezés: Határozza meg a szerverek vagy bázisállomások hálózatának leghatékonyabb csatlakoztatásának módját.
  • Elektromos rendszerek: Csökkentse a vezetékezés költségeit az elektromos berendezésekben.
  • Víz- vagy gázelosztás: A csővezeték infrastruktúrájának optimalizálása.

Például egy kábeltelevíziós társaság ezt az algoritmust használhatja arra, hogy minimalizálja a kábelek hosszát, amelyek az összes ügyfél csatlakoztatásához szükségesek egy lakónegyedben.

Összetettebb területeken is használták, például a képelemzésben a számítógépes látásban , a fehérjehajtogatásban a bioinformatikában és az NP-nehéz problémák , például az utazó ügynök problémájának megközelítéseiben .

Sokoldalúságának és alkalmazkodóképességének köszönhetően Prim algoritmusa továbbra is alapvető eszköz a gráfokkal kapcsolatos problémák optimalizálásában.