Пошук мінімального кістяка графа (Visual Basic)
27

Масив Dis(N, N) служить для зберігання значень матриці суміжності або ваг ребер, масив Tree(N, N) – для зберігання структури оптимального дерева, а масив Vlink(N) – для зберігання номерів вершин, які послідовно додаються до оптимального дерева.

Спочатку згідно даного алгоритму оптимальному дереву належить вершина з номером 1, що фіксується оператором: Vlink(i)= 1. Далі до цієї вершини послідовно додаються інші, причому на кожному кроці циклу з передумовою While додається рівно одна вершина з мінімальним ребром, що сполучає та вже належать оптимальному дереву вершини з однією з вершин, що не належать йому.

Після завершення цього циклу масив Tree(N, N) міститиме ребра, які входять в мінімальне покриваюче дерево графа. Для їх отримання на виході функції служить останній подвійний цикл, на кожному кроці якого до строкової змінної s додається позначення відповідного ребра оптимального дерева. Як результат дана функція повертає у вибраний осередок рядок тексту, що містить список ребер, утворюючих мінімальне покриваюче дерево початкового графа, і оптимальне значення відповідної цільової функції.

Програма зображення мінімального покриваючого дерева графа. Для зображення структури мінімального покриваючого дерева графа слід доповнити матрицю ваг ребер початкового графа значеннями координат вершин. Для запису тексту програми зображення структури мінімального покриваючого дерева графа в Module2 введемо наступний текст програми, оформленої у вигляді окремої підпрограми з ім'ям MinTreePainter без вхідних параметрів (Додаток Б).

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