3.1 .Построение минимального остовного дерева (алгоритм Краскала).
Алгоритм предназначен для нахождения минимального остовного дерева, т.е. такого подграфа который бы имел столько же компонент связности, сколько и исходный, но не содержал петель и сумма весов всех его ребер была бы минимальной. Вначале опишем алгоритм (возможно не достаточно строго), а затем обсудим, какой способ задания графа был бы наилучшим в данном случае, а так же покажем, как от тех способов задания, которые мы использовали ранее перейти к способу применимому здесь.
Итак, алгоритм Краскала:
1.Сортируем ребра графа по возрастанию весов. 2. Полагаем, что каждая вершина относится к своей компоненте связности. 3.Проходим ребра в "отсортированном" порядке. Для каждого ребра выполняем: а) если вершины, соединяемые данным ребром лежат в разных компонентах связности, то объединяем эти компоненты в одну, а рассматриваемое ребро добавляем к минимальному основному дереву б) если вершины, соединяемые данным ребром лежат в одной компоненте связности, то исключаем ребро из рассмотрения. 4.Если есть еще нерассмотренные ребра и не все компоненты связности объединены в одну, то переходим к шагу 3, иначе выход.
Предположим, что, как и ранее граф задается матрицей весов W, ясно, что в данном случае работать непосредственно с матрицей весов не удобно, это выявляется уже на этапе упорядочивания ребер по весу, поэтому вначале выделим массив ребер с соответствующими весами. В нашем случае достаточно если ребро будет иметь три свойства: начальная вершина, конечная вершина и вес (вообще работа с графами хорошо реализуется методами ООП, но поскольку мы не используем расширения языков, то будем работать с простыми массивами). Для задания набора ребер используем два массива E: array [1..m, 1..2] of integer - здесь m - количество ребер (m 2-n+1, где n - количество вершин), и массив EW: array [1..m] of real, тогда ребро ei , соединяющее вершины u, v с весом wi будет соответствовать элементам E[i, 1] = u, E[i, 2] = v, EW[i] = w. Таким образом, до начала непосредственно поиска минимального основного дерева нам необходимо пройти матрицу весов W и заполнить массивы E и EW.
Преобразовав представление графа от весовой матрицы к набору ребер (часто граф изначально задается при помощи списка ребер, и тогда предыдущая часть алгоритма становиться не нужна), мы уже можем легко упорядочить ребра по не убыванию весов, я для этого использую в блок-схеме алгоритм пузырька, чтобы не "замазывать" основной алгоритм, но можно легко перейти и к другим способам упорядочивания. Далее в алгоритме вводиться массив V : array [1..n] of integer элементы, которого характеризуют номер компоненты связности соответствующих вершин (две вершины u1, u2 лежат в одной компоненте связности, если и только если V[u1] = V[u2]). Теперь все структуры, используемые в алгоритме, описаны, и его работу легко будет понять из блок-схемы.
В заключении еще только одно замечание. В алгоритме используется переменная q, которая инициализируется значением n-1(на единицу меньше числа вершин) и затем, при объединении двух компонент связности на шаге 3, q уменьшается на единицу, таким образом, когда (если) q на некотором шаге занулиться, то это будет означать, что все вершины лежат в одной компоненте
связности и работа алгоритма завершена. Найденное дерево будет определено с помощью массива WO - матрицы весов.
- Тема 1. Классификация моделей.
- Тема 1. Классификация моделей.
- Основные признаки классификации моделей.
- Область использования.
- Учет в модели временного фактора.
- Способ представления модели.
- Тема 2. Классификация языков компьютерного моделирования.
- Тема 3. Этапы и цели компьютерного математического моделирования.
- Раздел 1. Задачи линейного программирования.
- Тема 1. Математическое программирование. Общий вид задач линейного программирования.
- Формулировка задачи.
- Геометрическая интерпретация задачи линейного программирования.
- Найти минимальное значение линейной функции
- Тема 2. Графический метод решения задач линейного программирования.
- Примеры задач, решаемых графическим методом.
- Обобщение графического метода решения задач линейного программирования.
- Тема 3. Симплекс - метод.
- Каноническая задача лп на максимум.
- Вспомогательная задача лп.
- Алгоритм метода искусственного базиса
- Вспомогательная задача лп.
- Алгоритм метода искусственного базиса.
- Тема 4. Транспортная задача.
- 4.2 Составление опорного плана.
- 4.3 Метод потенциалов.
- Раздел 2. Теория графов.
- Тема 1. Основные понятия теории графов.
- Элементы множества V называются вершинами графа g (или узлами), элементы множества u-его ребрами. Вершины и ребра графа называют также его элементами и вместо VV и u u пишут Vg и ug.
- 1.2 Операции над графами.
- 1.3.Связность графов.
- 1.4 Эйлеровы графы.
- 1.5 Гамильтоновы графы.
- Тема 2. Поиск пути в графе.
- 2.2 Путь минимальной суммарной длины во взвешенном графе с неотрицательными весами (алгоритм Дейкстры).
- 2.3 .Путь минимальной суммарной длины во взвешенном графе с произвольными весами для всех пар вершин (алгоритм Флойда).
- 2.4 Путь с минимальным количеством промежуточных вершин (волновой алгоритм).
- 2.5 Нахождение k путей минимальной суммарной длины во взвешенном графе с неотрицательными весами (алгоритм Йена).
- Тема 3. Задачи о минимальном остове.
- 3.1 Деревья.
- 3.1 Построение минимального остовного дерева (алгоритм Краскала).
- 3.1 Деревья.
- 3.1 .Построение минимального остовного дерева (алгоритм Краскала).
- Раздел 3. Динамическое программирование.
- Тема 1. Метод динамического программирования.
- 1.2 Идеи метода динамического программирования
- 1.3 Выбор состава оборудования для технологической линии.
- Исходные данные для примера
- Тема 2. Задача инвестирования.
- Тема 3. Замена оборудования.
- Тема 4. Задача о загрузке.
- 4.2 Рекуррентные соотношения для процедур прямой и обратной прогонки.
- 4.3 Решение задачи о загрузке.
- Раздел 4. Системы массового обслуживания (смо). (8 часов).
- Тема 1. Основные понятия теории массового обслуживания.
- Тема 2. Простейшие смо и нахождение их параметров.
- Перечень характеристик систем массового обслуживания можно представить следующим образом:
- 2. Одноканальная смо с неограниченной очередью
- 3. Одноканальная смо с неограниченной очередью, простейшим потоком заявок и произвольным распределением времени обслуживания
- 4. Одноканальная смо с произвольным потоком заявок и произвольным распределением времени обслуживания
- Раздел 5. Имитационное моделирование.
- Тема 1. Простейшие задачи, решаемые методом имитационного моделирования.
- Тема 2. Основные понятия теории Марковских процессов.
- Тема 3. Метод Монте – Карло.
- Раздел 6. Прогнозирование.
- Тема 1. Основная идея прогнозирования. Методы прогнозирования
- Тема 2.Теории экспертных оценок.
- Раздел 7. Теория игр.
- Тема 1. Основные понятия теории игр.
- 1. 1 Понятие об играх и стратегиях
- Тема 2. Простейшие методы решения задач теории игр.
- Раздел 8. Элементы теории принятия решений. (2 часа).
- Основные понятия.
- Принятие решений в условиях полной неопределенности
- Принятие решений при проведении эксперимента.
- 2. Принятие решений в условиях полной неопределенности
- 2.1 Максиминный критерий Вальда.
- Критерий равновозможных состояний.
- 3. Принятие решений при проведении эксперимента.
- 3.1. Принятие решений в условиях неопределенности.
- 3.2. Использование смешанной стратегии
- 3.3. Принятие решений в условиях риска