Мінімальне (зважене) реберне покриття

Ця сторінка призначена для студентів, що вивчають курс дискретної математики та (або) теорії графів. Безпосередньо з неї ви можете виконати своє ІДЗ, навіть якщо у вас немає на комп’ютері MATLAB. Якщо ж у вас є MATLAB, перейдіть на цю сторінку: там у вас є можливість втрутитися у сценарій (програму) обчислень. А на цій сторінці задача про мінімальне зважене реберне покриття розв’язується шляхом зведення до задачі бінарного лінійного програмування.

Нехай G(VE) − граф, де V − множина вершин, а E − множина ребер. Мінімальним (зваженим) реберним покриттям називається мінімальна за потужністю або загальною вагою підмножина ребер E1E, які є інцидентними до всіх вершин графа. Введемо позначення:

Тоді задача про мінімальне зважене реберне покриття може бути сформульована як задача бінарного лінійного програмування:

Мінімізується загальна вага ребер, включених у мінімальне зважене реберне покриття (1). При цьому кожній вершині повинно бути інцидентним хоча б одне таке ребро (2), а кожне ребро може або включатися у мінімальне зважене реберне покриття, або ні (3). Докладніше див. тут, стор. 34.

Для правильної роботи з цією сторінкою ваш браузер повинен підтримувати сценарії Java Script. Увімкніть їх.

Введіть вхідні дані в області введення нижче. У першій області треба (точніше, можна) ввести координати вершин для малювання графа. Вони задаються у вигляді матриці n×2: у першому стовпці − x координати, у другому − y-і. Числа можна задавати цілі, з десятичною точкою або в експоненційній формі. Числа розділяйте пробілами. Загальна кількість рядків у цій області введення визначає розмір графа n − кількість вершин. Ці вхідні дані (координати вершин) не є обов’язковими: якщо їх не задати, то граф буде малюватися у вигляді правильного n-кутника, а кількість вершин буде визначатися максимальним номером вершини у наступній області введення.

В наступній області введення ліва частина є обов’язковою для заповнення. В ній визначається структура графа. Кожне ребро у графі поєднує дві вершини. Номери цих вершин задаються у вигляді матриці m×2 у лівій частині другої області введення. Яку вершину вважати першою, а яку другою − не має значення. У цих стовпцях повинні бути натуральні числа від 1 до n включно. Числа розділяйте пробілами. У правій частині цієї області введення задаються ваги ребер − дійсні числа. Якщо цей стовпчик не заданий, то всі ваги вважаються одинаковими (одиничними), і в цьому випадку розв’язується задача про звичайне (незважене) реберне покриття. Загальна кількість чисел у кожному з цих стовпців визначає потужність графа m − кількість ребер.

Координати вершин
x   (пробіл)   y

Ребра та їхні ваги
v1  (пробіл)  v2 Вага