Primův algoritmus: Kompletní průvodce

Poslední aktualizace: 6 dubna 2026
  • Prim: algoritmus pro získání minimální kostry (MST) v propojených, neorientovaných, vážených grafech, minimalizující součet vah hran.
  • Operace: Začíná v uzlu a rozšiřuje strom iterativním výběrem hrany s nejnižší vahou, která spojuje zpracované uzly s nezpracovanými, čímž se vyhýbá cyklům.
  • Složitost: O(n²) s maticí sousednosti nebo O(a log n) s haldami; Prim je obvykle lepší na hustých grafech než Kruskal.
  • Aplikace: návrh sítí, elektrické systémy, distribuce vody/plynu, strojové vidění a bioinformatika, optimalizace nákladů a zdrojů.

 

Reprezentace Primova algoritmu

Primův algoritmus je jednou z nejpopulárnějších metod pro řešení problému Minimum Spanning Tree (MST). Tento typ problému se vyskytuje v mnoha oblastech, jako je návrh telekomunikačních sítí , elektrických systémů a distribučních sítí. Pokud máte zájem podrobněji porozumět tomu, jak tento algoritmus funguje, jste na správném místě. Zde si rozebereme vše o Primově algoritmu, od jeho historie až po jeho technickou implementaci a praktické aplikace.

Ačkoli byl algoritmus původně vyvinut v roce 1957 Robertem Primem , jeho význam v průběhu času nesnížil. Je to zásadní algoritmus v analýze grafů, zejména pokud jde o nalezení efektivního řešení pro propojení všech uzlů grafu s co nejnižšími náklady. Jeho snadná implementace ho navíc předurčuje k seznámení se s technikami optimalizace grafů v našem komplexním průvodci pro programátory.

Co je Primův algoritmus?

Kruskalův algoritmus
Související článek:
Kruskalův algoritmus a jeho aplikace v grafech

Primův algoritmus je technika pro nalezení minimální kostry (MST) propojeného, ​​neorientovaného, ​​váženého grafu. MST je strom, který spojuje všechny uzly grafu pomocí nejmenšího možného součtu vah hran . Tento problém je klíčový v oblastech, jako je optimalizace sítí, protože pomáhá minimalizovat zdroje, jako jsou kabely , potrubí nebo dokonce dopravní trasy.

  Binární stromy v Javě Příklady: Kompletní průvodce

Hlavní myšlenkou algoritmu je rozdělit uzly grafu na dvě sady: zpracované a nezpracované . Poté se iterativně vybere nejkratší hrana spojující obě sady, čímž se zajistí, že nevzniknou žádné cykly. Nakonec sada vybraných hran tvoří MST grafu.

Historie a kontext

Robert Prim vyvinul tento algoritmus v roce 1957, ale jeho počátky sahají ještě dále, do roku 1926, kdy Otakar Boruvka pracoval na problému elektrifikace v Československu. Také v roce 1956 představil Joseph Kruskal svou vlastní metodu pro řešení problému minimální kostry. Ačkoli oba algoritmy řeší stejný problém, Primův je obzvláště efektivní pro husté grafy.

Během 60. a 70. let 20. století byl algoritmus studován a vylepšován matematiky v Bell Labs , kteří přispěli k vývoji pokročilých technik pro kombinatorické optimalizační problémy.

Jak funguje algoritmus

Algoritmus začíná výběrem libovolného počátečního uzlu v grafu a přidáním jeho hran do množiny možných spojení. Poté v každém kroku:

  • Výběr je proveden nejkratší okraj který spojuje již zpracovaný uzel s nezpracovaným.
  • Nezpracovaný uzel spojený vybranou hranou je označen jako zpracovaný.
  • Proces pokračuje, dokud nejsou zpracovány všechny uzly.

Konečná sada hran tvoří minimální kostru, která souvisí s jinými metodami, jako je Wilsonův algoritmus.

Složitost a srovnání s Kruskalem

Jedním z nejvíce studovaných aspektů Primova algoritmu je jeho efektivita . V grafu s n uzly a hranami se jeho složitost může lišit v závislosti na implementaci:

  • Použití matice sousedství: O(n²)
  • Použití kopců: O(a log n)
  Vyvážené binární stromy

Pro srovnání, Kruskalův algoritmus má složitost O(a log n) , i když to závisí na použité třídicí technice. Primův algoritmus je obecně efektivnější pro husté grafy, zatímco Kruskalův je vhodnější pro řídké grafy.

Pseudokód algoritmu

Jasný způsob, jak algoritmu porozumět, spočívá v jeho pseudokódu a příkladech matematických algoritmů :

Primární (graf): Spuštění zpracované sady s počátečním uzlem Zatímco existují nezpracované uzly: Najděte nejkratší hranu spojující dvě sady Přidejte hranu do MST Označte uzel jako zpracovaný Vraťte MST

Praktické aplikace

Primův algoritmus má mnoho využití v reálném světě, včetně:

  • Návrh telekomunikační sítě: Určete nejúčinnější způsob připojení k síti serverů nebo základnových stanic.
  • Elektrické systémy: Snížit náklady na elektroinstalaci v elektroinstalacích.
  • Rozvody vody nebo plynu: Optimalizujte infrastrukturu potrubí.

Například společnost kabelové televize může tento algoritmus použít k minimalizaci délky kabelů potřebných k připojení všech zákazníků v obytné oblasti.

Používá se také ve složitějších oblastech, jako je analýza obrazu v počítačovém vidění , skládání proteinů v bioinformatice a přístupy k NP-těžkým problémům , jako je problém obchodního cestujícího.

Díky své všestrannosti a přizpůsobivosti zůstává Primův algoritmus základním nástrojem pro optimalizaci problémů souvisejících s grafy.