- •Лабораторная работа № 1
- •1.1. Основные операции над многомерными матрицами
- •1.1.5. Кронекеровское произведение многомерных матриц
- •1.1.6. Обращение многомерной матрицы
- •Порядок выполнения работы
- •Содержание отчета
- •2. Основные определения теории графов
- •2.1.1. Задание графа множествами вершин и линий
- •2.1.2. Задание графа с помощью отображения
- •2.1.3. Задание графа с помощью обратного отображения
- •2.1.4. Матричное представление графа
- •2.2. Достижимость и обратная достижимость вершин графа
- •2.2.1. Матрица достижимостей и матрица обратных достижимостей
- •2.2.2. Определение матриц достижимостей и обратных достижимостей с помощью прямых и обратных отображений
- •2.2.3. Определение матриц ограниченных достижимостей
- •2.2.4. Определение матриц достижимостей и обратных
- •Лабораторная работа № 2
- •Порядок выполнения работы
- •Содержание отчета
- •3.2. Алгоритм построения всех остовных деревьев графа на основе полного перебора последовательностей ребер или дуг
- •3.3. Определение кратчайшего остова неориентированного графа на основе упорядочения ребер графа (алгоритм Краскала)
- •3.4. Построение кратчайшего остовного дерева с помощью алгоритма Прима в табличной форме
- •Порядок выполнения работы
- •Содержание отчета
- •4.2. Пример расчета попадания точки в заданную область
- •4.3. Алгоритм преобразования области в плоскостных координатах
- •4.4. Порядок выполнения работы
- •5.2. Пример решения задачи о максимальном потоке
- •Порядок выполнения работы
- •Содержание отчета
- •Порядок выполнения работы
- •8.2.2. Нахождение приближенного решения
- •8.2.3. Oпределение оптимального решения
- •Порядок выполнения работы
- •Содержание отчета
- •Библиографический список
- •Вопросы для итоговой аттестации по лабораторному практикуму
- •Содержание
- •390005. Рязань, ул. Гагарина, 59/1.
Порядок выполнения работы
В режиме обучения проследить отображаемый на экране дисплея поэтапный процесс решения задачи о максимальном потоке. При выборе режима обучения предлагается сгенерировать матрицу или ввести её вручную (рис. 5.2) .
Рис. 5.2. Выбор режима
2. По отображаемой на экране дисплея матрице пропускных способностей графа определить максимальный поток между истоком и стоком в диалоговом режиме под контролем ПЭВМ. Столбец, соответствующий истоку, считается помеченным своим номером. Максимально допустимое число ошибок не должно превышать 2.
Содержание отчета
1. Краткое описание алгоритма.
2. Матрица пропускных способностей.
3. Графическое представление графа с отмеченными на нем путями передачи потока.
4. Выводы. Рекомендации по формированию пояснений на обучающем стенде в соответствии с результатами программного контроля.
Лабораторная работа № 6
Задача о назначениях
Цель работы
Теоретическое и практическое изучение алгоритма венгерского метода решения задачи о назначениях.
Теоретическая часть
6.1. Матричная формулировка задачи
Задача о назначениях может быть сформулирована следующим образом: необходимо наилучшим образом назначить Nработников{ C1, C2,, CN }наNработ{B1, B2,, BN }. Наилучшим назначением считается такое, которое обеспечивает максимальную выработку суммарной продукции ( или минимальные затраты). Необходимая информация для решения задачи о назначениях содержится в квадратной матрице производительностейА={aij}, гдеaij – производительностьi-го работника (машины) при выполненииj-й работы. В случае минимизации затрат коэффициентaij означает затраты при выполненииi-м работником (машиной)j-й работы. Должно выполняться дополнительное условие: на каждую работу назначается только один работник и все работы должны быть выполнены.
6.2. Венгерский метод решения задачи о назначениях в матричной форме
Метод был предложен венгерским математиком Эгервари. Прежде чем перейти к рассмотрению венгерского метода, условимся элементы матрицы, образующие некоторое множество, называть независимыми, если никакие два элемента этого множества не лежат на одной и той же линии (строке, столбце). Так, например, элементы вида ajj (j=1,N)независимы. Задача фактически сводится к определениюNнезависимых элементов матрицы{aij}так, чтобы сумма этих элементов была максимальной. В процессе решения задачи приходится выделять отдельные линии матрицы (строки или столбцы). Выделенные линии отмечаются знаком +. Элементы, находящиеся в выделенных строках или столбцах, называются выделенными, а остальные - невыделенными. Алгоритм состоит из подготовительного этапа и ряда последовательно выполняемых итераций.
Подготовительный этап. При решении задач на максимум в каждом столбце матрицы выбирается максимальный элемент, из которого вычитаются все элементы этого столбца. Затем в каждой строке матрицы выбирается минимальный элемент, который вычитается из всех элементов этой строки. В результате этого в каждой строке и каждом столбце матрицы будет не менее одного нуля. В первом столбце матрицы выбирается произвольный нуль и отмечается звездочкой (*). Затем рассматриваются нули второго столбца, и если среди них есть такие, которые находятся не в одной строке с нулем первого столбца, и уже отмеченные звездочкой, то один из них отмечается звездочкой. Аналогично рассматриваются нули всех других столбцов. Отмеченные звездочкой нули являются независимыми, так как в каждой строке и каждом столбце может быть не более одного нуля со звездочкой.
Итак, подготовительный этап заканчивается выделением звездочками независимых нулей.
Итерационный процесс. Целью итерации является увеличение числа независимых нулей. Когда число независимых нулей станет равнымN, задача решена. Оптимальный выбор определяется местом независимых нулей. Перед началом итерации выделяются знаком + столбцы матрицы, содержащие нули со звездочкой. Итерация включает в себя три этапа, взаимосвязь между которыми представлена на рис. 6.1.
Этап 1. Над найденным невыделенным нулем ставится штрих('), соответствующая строка отмечается справа знаком(+), а знак выделения столбца, содержащего нуль со звездочкой, снимается.
Этап 2. Производится построение цепочки элементов. Цепочка начинается от нуля со штрихом и по столбцу проходит к нулю со звездочкой, затем к нулю со штрихом в той же строке и т.д. Начало и конец цепочки - нули со штрихом. После этого звездочки над нулями, входящие в цепочку, зачеркиваются, а над нулями со штрихом ставятся звездочки. Зачеркиваются также все знаки выделения в матрице (кроме звездочек). На этом заканчивается построение цепочки. Так как концы цепочки - нули со штрихами, то в результате итерации число нулей со звездочкой увеличивается на 1.
Этап 3. Среди элементов, находящихся в невыделенных линиях, выбирается минимальный, который прибавляется к элементам выделенных столбцов и вычитается из элементов невыделенных строк. В результате этих операций появляются невыделенные нули.
Рис. 6.1. Блок-схема алгоритма