Алгоритм Прима: повний посібник

Останнє оновлення: 6 квітня 2026
Автор: TecnoDigital
  • Prim: алгоритм для отримання мінімального охоплюючого дерева (MST) у зв'язних, неорієнтованих, зважених графах, мінімізуючи суму ваг ребер.
  • Операція: Починається з вузла та розширює дерево шляхом ітеративного вибору ребра з найменшою вагою, яке з'єднує оброблені вузли з необробленими, уникаючи циклів.
  • Складність: O(n²) з матрицею суміжності або O(a log n) з купами; Prim зазвичай кращий для щільних графів, ніж Kruskal.
  • Застосування: проектування мереж, електричні системи, розподіл води/газу, машинний зір та біоінформатика, оптимізація витрат та ресурсів.

 

Подання алгоритму Прима

Алгоритм Прима є одним із найпопулярніших методів розв'язання задачі мінімального охоплюючого дерева (MST). Цей тип задачі виникає в багатьох галузях, таких як проектування телекомунікаційних мереж , електричних систем та розподільчих мереж. Якщо ви зацікавлені в глибокому розумінні того, як працює цей алгоритм, ви потрапили в потрібне місце. Тут ми розглянемо все про алгоритм Прима, від його історії до технічної реалізації та практичного застосування.

Хоча цей алгоритм був спочатку розроблений у 1957 році Робертом Прімом , його актуальність не зменшилася з часом. Це важливий алгоритм в аналізі графів, особливо коли йдеться про пошук ефективного рішення для з'єднання всіх вузлів графа з найнижчими можливими витратами. Крім того, простота його реалізації робить його ідеальним для вивчення методів оптимізації графів у нашому вичерпному посібнику для програмістів.

Що таке алгоритм Прима?

Алгоритм Крускала
Пов'язана стаття:
Алгоритм Крускала та його застосування в графах

Алгоритм Прима — це метод знаходження мінімального охоплюючого дерева (MST) зв'язного, неорієнтованого, зваженого графа. MST — це дерево, яке з'єднує всі вузли графа, використовуючи найменшу можливу суму ваг ребер . Ця проблема є критично важливою в таких галузях, як оптимізація мережі, оскільки допомагає мінімізувати такі ресурси, як кабелі , труби або навіть транспортні маршрути.

  Що таке тест Тюрінга? 5 ключів до розуміння цього тесту ШІ

Основна ідея алгоритму полягає в тому, щоб розділити вузли графа на два набори: оброблені та необроблені . Потім ітеративно вибирається найкоротше ребро, що з'єднує обидва набори, гарантуючи, що не утворюються цикли. Зрештою, набір вибраних ребер утворює MST графа.

Історія та контекст

Роберт Прім розробив цей алгоритм у 1957 році, але його походження сягає ще давнішого часу, а саме 1926 року, коли Отакар Борувка працював над проблемою електрифікації в Чехословаччині. Також у 1956 році Йозеф Крускал представив власний метод розв'язання задачі мінімального охоплюючого дерева. Хоча обидва алгоритми вирішують одну й ту саму проблему, алгоритм Пріма особливо ефективний для щільних графів.

Протягом 1960-х і 1970-х років алгоритм вивчали та вдосконалювали математики з Bell Labs , які зробили свій внесок у розробку передових методів для задач комбінаторної оптимізації.

Алгоритм роботи

Алгоритм починається з вибору будь-якого початкового вузла в графі та додавання його ребер до множини можливих з'єднань. Потім, на кожному кроці:

  • Вибір зроблено найкоротший край що з'єднує вже оброблений вузол з необробленим.
  • Необроблений вузол, з’єднаний вибраним ребром, позначається як оброблений.
  • Процес триває, доки не будуть оброблені всі вузли.

Остаточний набір ребер утворює мінімальне охоплююче дерево, пов'язане з іншими методами, такими як алгоритм Вільсона.

Складність і порівняння з Kruskal

Одним з найбільш вивчених аспектів алгоритму Прима є його ефективність . У графі з n вузлами та a ребрами його складність може змінюватися залежно від реалізації:

  • Використання матриці суміжності: O (n²)
  • Використання курганів: O(log n)
  Алгоритм Луна: що це таке, як він працює та застосування

Для порівняння, алгоритм Крускала має складність O(a log n) , хоча це залежить від використаного методу сортування. Алгоритм Прима, як правило, ефективніший для щільних графів, тоді як алгоритм Крускала кращий для розріджених графів.

Псевдокод алгоритму

Зрозуміти алгоритм можна за допомогою його псевдокоду та прикладів математичних алгоритмів :

Prim (граф): Почніть оброблений набір із початкового вузла. Поки є необроблені вузли: Знайдіть найкоротше ребро, що з’єднує два набори. Додайте ребро до MST. Позначте вузол як оброблений. Поверніть MST.

Практичні застосування

Алгоритм Прима має кілька застосувань у реальному світі, зокрема:

  • Проектування телекомунікаційних мереж: Визначте найефективніший спосіб підключення до мережі серверів або базових станцій.
  • Електричні системи: Зменшити вартість проводки в електроустановках.
  • Розведення води чи газу: Оптимізація інфраструктури трубопроводу.

Наприклад, компанія кабельного телебачення може використовувати цей алгоритм, щоб мінімізувати довжину кабелів, необхідних для підключення всіх клієнтів у житловому районі.

Його також використовували в більш складних галузях, таких як аналіз зображень у комп'ютерному зорі , згортання білків у біоінформатиці та підходи до NP-важких задач , таких як задача комівояжера.

Завдяки своїй універсальності та адаптивності , алгоритм Прима залишається фундаментальним інструментом в оптимізації задач, пов'язаних з графами.