Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kurs_Зад_о_назн.doc
Скачиваний:
3
Добавлен:
11.07.2019
Размер:
434.18 Кб
Скачать

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 – Иерархия наследования моего класса.