logo

Що таке Мінімальне охоплююче дерево (MST)

А мінімальне остовне дерево (MST) визначається як a остовне дерево що має мінімальну вагу серед усіх можливих остовних дерев

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



Грайбах нормальної форми

Мінімальне охоплююче дерево має всі властивості охоплюючого дерева з додатковим обмеженням мати мінімально можливі ваги серед усіх можливих охоплюючих дерев. Подібно до остовного дерева, для графа також може бути багато можливих MST.

Мінімальне охоплююче дерево (MST)

Властивості Spanning Tree:

Остовне дерево тримає наведені нижче принципи :



  • Кількість вершин ( IN ) у графі та остовному дереві однакові.
  • У остовному дереві є фіксована кількість ребер, яка на одиницю менше загальної кількості вершин ( І = V-1 ).
  • Остовного дерева бути не повинно відключений , оскільки має бути лише одне джерело компонента, не більше того.
  • Остовне дерево має бути ациклічний, котрий означає, що в дереві не буде жодного циклу.
  • Загальна вартість (або вага) охоплюючого дерева визначається як сума ваг ребер усіх ребер охоплюючого дерева.
  • Для графа може бути багато можливих остовних дерев.

Мінімальне охоплююче дерево:

А мінімальне остовне дерево (MST) визначається як a остовне дерево що має мінімальну вагу серед усіх можливих остовних дерев.

Мінімальне охоплююче дерево має всі властивості охоплюючого дерева з додатковим обмеженням мати мінімально можливі ваги серед усіх можливих охоплюючих дерев. Подібно до остовного дерева, для графа також може бути багато можливих MST.

конвертувати рядок у char java
  • Давайте подивимося на MST наведеного вище прикладу Графіка,

Мінімальне охоплююче дерево



Алгоритми пошуку мінімального охоплюючого дерева:

Існує кілька алгоритмів для знаходження мінімального охоплюючого дерева з даного графа, деякі з них наведено нижче:

Алгоритм мінімального остовного дерева Крускала:

Це один із популярних алгоритмів для знаходження мінімального остовного дерева зі зв’язного неорієнтованого графа. Це По-перше, він сортує всі ребра графа за їх вагою,

  • Потім запускаються ітерації пошуку остовного дерева.
  • На кожній ітерації алгоритм додає наступне ребро з найнижчою вагою одне за одним, так що вибрані досі ребра не утворюють цикл.
  • Цей алгоритм можна ефективно реалізувати за допомогою структури даних DSU (Disjoint-Set) для відстеження зв’язаних компонентів графа. Це використовується в різноманітних практичних програмах, таких як проектування мережі, кластеризація та аналіз даних.

    Слідкуйте за статтею далі Алгоритм мінімального остовного дерева Крускала для кращого розуміння та реалізації алгоритму.

    Алгоритм мінімального охоплюючого дерева Prim:

    Це теж жадібний алгоритм. Цей алгоритм має такий робочий процес:

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

    Для ефективного вибору ребра мінімальної ваги для кожної ітерації цей алгоритм використовує priority_queue для збереження вершин, відсортованих за їхньою мінімальною вагою ребра на даний момент. Він також одночасно відстежує MST, використовуючи масив або іншу структуру даних, придатну з урахуванням типу даних, які він зберігає.

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

    Слідкуйте за статтею далі Алгоритм мінімального остовного дерева Prim для кращого розуміння та реалізації цього алгоритму.

    Алгоритм мінімального остовного дерева Борувки:

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

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

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

    Слідкуйте за статтею далі Алгоритм мінімального остовного дерева Борувки для кращого розуміння та реалізації цього алгоритму.

    Щоб дізнатися більше про властивості та характеристики Minimum Spanning Tree, натисніть тут.

    Застосування мінімальних охоплюючих дерев:

    • Проектування мережі : Spanning Trees можна використовувати в проектуванні мережі, щоб знайти мінімальну кількість з’єднань, необхідних для з’єднання всіх вузлів. Мінімальні остовні дерева, зокрема, можуть допомогти мінімізувати вартість з’єднань шляхом вибору найдешевших ребер.
    • Обробка зображення : Spanning Trees можна використовувати в обробці зображень для визначення областей подібної інтенсивності або кольору, що може бути корисним для завдань сегментації та класифікації.
    • Біологія : Остовні дерева та мінімальні остовні дерева можна використовувати в біології для побудови філогенетичних дерев для представлення еволюційних зв’язків між видами або генами.
    • Аналіз соціальних мереж : Остовні дерева та мінімальні остовні дерева можна використовувати в аналізі соціальних мереж для виявлення важливих зв’язків і стосунків між окремими особами чи групами.

    Деякі популярні проблеми на співбесіді на MST

    1. Знайдіть мінімальну вартість, щоб підключити всі міста Практика

    Деякі поширені запитання щодо мінімальних сполучних дерев:

    1. Чи може бути декілька мінімальних охоплюючих дерев для даного графа?

    Так, граф може мати кілька мінімальних охоплюючих дерев, якщо є кілька наборів ребер з однаковою мінімальною загальною вагою.

    розділити на рядок java

    2. Чи можна використовувати алгоритм Крускала та алгоритм Прима для орієнтованих графів?

    Ні, алгоритм Крускала та алгоритм Прима розроблені лише для неорієнтованих графів.

    3. Чи може роз’єднаний граф мати мінімальне остовне дерево?

    Ні, роз'єднаний граф не може мати остовного дерева, оскільки він не охоплює всі вершини. Тому він також не може мати мінімального остовного дерева.

    4. Чи можна знайти мінімальне остовне дерево за допомогою алгоритму Дейкстри?

    Ні, алгоритм Дейкстри використовується для пошуку найкоротшого шляху між двома вершинами у зваженому графі. Він не призначений для пошуку мінімального остовного дерева.

    5. Яка часова складність алгоритмів Крускала та Прима?

    І алгоритми Крускала, і алгоритми Прима мають часову складність O(ElogE) , де E – кількість ребер у графі.