
- •Содержание
- •Введение
- •1.1.4 Матрица весов двудольного графа:
- •1.1.5 Описание графа k1,2 матрицей смежности (вершина-верниша):
- •1.1.6 Степени вершин двудольного графа
- •1.5.2 Задача о назначениях с максимизацией потерь
- •2. Постановка задачи на программирование
- •2.2.2. Организация объекта
- •2.3. Интерфейс программы
1.5.2 Задача о назначениях с максимизацией потерь
Для максимизации потерь преобразуем весовую матрицу: находим максимальный вес, не равный бесконечности, и вычитаем из этого числа каждый коэффициент:
,
максимум равен 8,
.
Осуществляем горизонтальное привидение:
,
сумма коэффициентов привидения равна
10, больше приводить нечего, потому строим
двудольный граф из нулевых ребер,
рис.1.10:
Рисунок 1.9 – Граф из нулевых ребер, получившихся после приведения,
решение задачи
Решение задача о максимизации сложилось из ребер весами 8+2+5+7=22. Проверяем. В четырех строках мы ожидали по 8 у.е. прибыли (из этого максимального числа мы вычитали коэффициенты), после приведения не досчитались 10. Ответ 8*4 – 10 =32 у.е. – решение правильное.
2. Постановка задачи на программирование
Задача 1
Определить, является ли граф Эйлеровым?
Исходные данные:
Граф вводится в графическом диалоге, или путем заполнения матрицы смежности, или чтением матрицы смежности из файла.
Алгоритм:
Определяем степени вершин, если они все четные – у графа есть Эйлеров цикл, если нечетных степеней только 2 – Эйлеров путь.
Вывод:
Сообщение о результат расчетов выводится на экран и/или в текстовый файл.
Примечание:
Один из загружаемых файлов – граф из задания.
Задача 2
Определить, количества деревьев графа с помощью матрицы Трента.
Исходные данные:
Граф вводится в графическом диалоге, или путем заполнения матрицы смежности, или чтением матрицы смежности из файла.
Алгоритм:
Заполняем матрицу Трента: по диагонали степени вершин, в ячейках – количество связей с отрицательным знаком. Считаем один из главных миноров.
Вывод:
Сообщение о результат расчетов выводится на экран и/или в текстовый файл.
Примечание:
Один из загружаемых файлов – граф из задания.
2.2 Описание разработанного объекта
2.2.1 Иерархия наследования
Для работы с графами мною создан собственный класс tgraf, который имеет следующую структуру:
type
tgraf=class
private
fn:integer;
fa:array of array of integer;
fb:array of array of integer;
fc:array of array of integer;
a1:array of array of integer;
a2:array of array of integer;
b1:array of array of integer;
b2:array of array of integer;
fi:integer;
fj:integer;
fk:integer;
procedure seti(const value:integer);
procedure setj(const value:integer);
procedure setk(const value:integer);
procedure setn(const value:integer);
public
property i:integer read fi write seti;
property j:integer read fj write setj;
property k:integer read fk write setk;
function cikl:boolean;
function ejler:boolean;
function fmin:integer;
procedure setab;
procedure setc;
procedure obnul;
procedure setvalue1;
procedure setvalue3;
procedure setvalue2(const value:integer);
property n:integer read fn write setn;
function Getvalue1(ind1,ind2:integer):integer;
function Getvalue2(ind1,ind2:integer):integer;
function Getvalue3(ind1,ind2:integer):integer;
end;
Разработанный класс не имеет в скобках указания на наследование, а значит, наследует по умолчанию от TObject, рис.2.1.
Рисунок 2.1 – Иерархия наследования моего класса.