Міністрерство освіти і науки України
Тернопільський національний технічний університет
імені Івана Пулюя
Кафедра математичних
методів в інженерії
ЗВІТ
до лабораторної роботи №7
з курсу «Сучасні методи розв’язку дискретного програмування»
Розбиття множини вершин на класи еквівалентності. Алгоритм упорядкування
Виконав:
ст. гр.
Перевірила:
Крива Н.Р.
Тернопіль 201_
Тема:
Розбиття множини вершин на класи еквівалентності. Алгоритм упорядкування.
Мета:
Розбити граф на сильно зв’язані компоненти.
Текст програми:
%Лабораторна робота №7
%
%Варіант
clear all %очистити память
V=[1 2; 1 1; 2 2; 2 1; 3 2; 3 1; 4 2; 4 1];
E=[1 2 1; 1 3 2; 1 4 3; 2 4 4; 4 3 5; 3 5 6; 3 6 7; 4 6 8; 5 6 9; 6 8 10; 5 7 11; 5 8 12; 7 8 13];
grPlot(V,E,'d'); % малюємо граф
set(get(gcf,'CurrentAxes'),...
'FontName','Times New Roman Cyr','FontSize',12) % встановили шрифт
title('\bfВихідний оргграф')
[Dec,Ord]=grDecOrd(E);
disp('Сильно звязані компоненти:')
disp('N вершини')
for k1=1:size(Dec,2),
fprintf('%2.0f ',k1)
fprintf('%d ',find(Dec(:,k1)))
fprintf('\n')
end
fprintf('Часткове впорядкування компонентів:\n')
fprintf('%3.0f',1:size(Ord,2))
fprintf('\n')
for k1=1:size(Ord,1),
fprintf('%2.0f',k1)
fprintf('%1.0f',Ord(k1,:))
fprintf('\n')
end
V1=V;
for k1=1:size(Dec,2),
V1(find(Dec(:,k1)),3)=k1;%вага=номер компонента
end
grPlot(V1,E,'d','%d','');
set(get(gcf,'CurrentAxes'),...
'FontName','Times New Roman Cyr','FontSize',10) % встановили шрифт
title('\bfСильно звязані компоненти')
Рисунок 1 – Вихідний граф
Рисунок 2 – Сильно зв’язані компоненти
Висновок:
На даній лабораторній роботі я використав функцію grDecOrd для розбиття графа на сильно зв’язані компоненти.